From 63b0bb5c5877df56d41bfd68e3341bab9470214e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 14 Jan 2025 10:31:17 +0000 Subject: [PATCH] Deploy 9579fa05467dc588eb4b655c072ed5b6696799c3 (Tue Jan 14 10:31:17 UTC 2025) --- 963.bundle.js | 2 +- 963.bundle.js.map | 2 +- artifacts.zip | Bin 1208092 -> 1208276 bytes main.bundle.js | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/963.bundle.js b/963.bundle.js index 34b6fffc..a651a93f 100644 --- a/963.bundle.js +++ b/963.bundle.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkopencast_studio=self.webpackChunkopencast_studio||[]).push([[963],{963:function(e,t,r){r.r(t),r.d(t,{App:function(){return hn}});var n,i,o=r(2104),s=r(3645),a=r(1699),l=r(6540),d=r(2644),c=r(2389);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"step-current_svg__feather step-current_svg__feather-circle",viewBox:"0 0 24 24"},e),n||(n=l.createElement("circle",{cx:12,cy:12,r:10})),i||(i=l.createElement("circle",{cx:12,cy:12,r:3,fill:"currentColor"})));function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",className:"step-done_svg__feather step-done_svg__feather-circle",viewBox:"0 0 24 24"},e),p||(p=l.createElement("path",{d:"M12 1A11 11 0 0 0 1 12a11 11 0 0 0 11 11 11 11 0 0 0 11-11A11 11 0 0 0 12 1m5 7a1 1 0 0 1 .707.293 1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414 1 1 0 0 1 1.414 0L10 14.586l6.293-6.293A1 1 0 0 1 17 8"}))),v=r(2268),f=r(3015);const b=(e,t,r)=>{const n=e&&{max:e},i=("number"==typeof t?.height?t.height:t.height?.ideal)??r;return{height:{...n,...i&&(e?{ideal:Math.min(i,e)}:{ideal:i})}}};async function x(e,t){try{const r=await navigator.mediaDevices.getUserMedia({audio:!t||{deviceId:t},video:!1});r.getTracks().forEach((t=>{t.onended=()=>{e({type:"AUDIO_UNEXPECTED_END"})}})),e({type:"SHARE_AUDIO",stream:r})}catch(t){console.error("Error: "+t),e({type:"BLOCK_AUDIO"})}}async function w(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=t.display?.maxFps?{frameRate:{max:t.display.maxFps}}:{},i=b(t.display?.maxHeight,r),o={video:{cursor:"always",...n,...r,...i},audio:!0};try{const t=await navigator.mediaDevices.getDisplayMedia(o);t.getTracks().forEach((t=>{t.onended=()=>{e({type:"DISPLAY_UNEXPECTED_END"})}})),e({type:"SHARE_DISPLAY",stream:t})}catch(t){console.error("Error: "+t),e({type:"BLOCK_DISPLAY"})}}async function y(e,t,r){const n=t.camera?.maxFps?{frameRate:{max:t.camera.maxFps}}:{},i=b(t.camera?.maxHeight,r,1080),o={video:{facingMode:"user",...r,...n,...i},audio:!1};try{const t=await navigator.mediaDevices.getUserMedia(o);t.getTracks().forEach((t=>{t.onended=()=>{e({type:"USER_UNEXPECTED_END"})}})),e({type:"SHARE_USER",stream:t})}catch(t){console.error("Error: "+t),e({type:"BLOCK_USER"})}}function Y(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_AUDIO"})}function k(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_DISPLAY"})}function S(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_USER"})}var C=r(5178),D=r(376),A=r.n(D),R=r(2017),E=r.n(R),H=r(3747);const F=l.createContext(null),T=()=>(0,v.se)(F,"useVideoBoxResize"),L=e=>{let{gap:t=0,minWidth:r=180,minHeight:n=140,children:i}=e;const{ref:s,width:d=1,height:c=1}=A()(),[,u]=(0,l.useState)(0),p=(0,l.useRef)(i.map((()=>null))),h=e=>{e.forEach(((e,t)=>{e&&(p.current[t]=e)}))};let m=i.map((e=>e.dimensions()));h(m);const g=()=>{const e=i.map((e=>e.dimensions()));E()(e,m)||(m=e,h(m),u((e=>e+1)))},v=e=>null==e?16/9:e[0]/e[1];switch(i.length){case 1:{const e=i[0],t=v(p.current[0]);let o,l;return d>c*t?(l=c,o=c*t):(o=d,l=d/t),(0,H.Y)(F.Provider,{value:g,children:(0,H.Y)("div",{ref:s,css:(0,a.AH)({flex:"1 0 0",minHeight:n,display:"flex"},"",""),children:(0,H.Y)("div",{css:(0,a.AH)({...!e.autoSize&&{height:l,width:o},minWidth:`${r}px`,margin:"auto"},"",""),children:e.body})})})}case 2:{const e=p.current.map((e=>v(e))),{rowWidths:o,rowHeights:l}=(()=>{const r=d-t,n=e[0]+e[1];if(r>c*n)return{rowHeights:Array(2).fill(c),rowWidths:e.map((e=>c*e))};{const t=r/n;return{rowHeights:i.map((()=>t)),rowWidths:e.map((e=>t*e))}}})(),{colWidths:u,colHeights:h}=(()=>{const r=c-t,n=1/(1/e[0]+1/e[1]);if(d>r*n){const t=r*n;return{colHeights:i.map(((r,n)=>t/e[n])),colWidths:Array(2).fill(t)}}return{colHeights:i.map(((t,r)=>d/e[r])),colWidths:Array(2).fill(d)}})();let m,f,b;return o[0]*l[0]+o[1]*l[1]>u[0]*h[0]+u[1]*h[1]?(b="row",m=o,f=l):(b="column",m=u,f=h),(0,H.Y)(F.Provider,{value:g,children:(0,H.FD)("div",{ref:s,css:(0,a.AH)({flex:"1 0 0",display:"flex",gap:t,flexDirection:b,justifyContent:"space-between",minHeight:n},"",""),children:[(0,H.Y)("div",{css:(0,a.AH)({...!i[0].autoSize&&{height:f[0],width:m[0]},minWidth:`${r}px`,margin:"auto"},"",""),children:i[0].body}),(0,H.Y)("div",{css:(0,a.AH)({...!i[1].autoSize&&{height:f[1],width:m[1]},minWidth:`${r}px`,margin:"auto"},"",""),children:i[1].body})]})})}default:return(0,o.jr)("Internal error: too few or too many video streams")}};var O={name:"1eeok3z",styles:"display:block;font-size:17px;margin-bottom:8px"},B={name:"b1vrpl",styles:"font-size:15px;max-width:100ch"},z={name:"1t84eec",styles:"font-size:15px;max-width:100ch;margin-top:8px"};const U=e=>{let{title:t,body:r,extraBody:n,...i}=e;return(0,H.FD)("div",{"aria-live":"polite",css:(0,a.AH)({padding:"16px 22px",margin:12,borderRadius:8,backgroundColor:v.lm.danger1,color:v.lm.danger5},"",""),...i,children:[t&&(0,H.Y)("strong",{css:O,children:t}),(0,H.Y)("div",{css:B,children:r}),n&&(0,H.Y)("div",{css:z,children:n})]})};var I=r(6606);const P=l.forwardRef(((e,t)=>(0,H.Y)("select",{ref:t,...e,css:(0,a.AH)({position:"relative",borderRadius:6,padding:"6px 12px",paddingRight:32,backgroundColor:"transparent",border:`1px solid ${v.lm.neutral25}`,appearance:"none",background:`url("data:image/svg+xml;utf8,") no-repeat`,backgroundSize:12,backgroundPosition:"calc(100% - 12px) center",option:{backgroundColor:v.lm.neutral05,color:v.lm.neutral90},...(0,v.Y$)({offset:-1})},"",""),children:e.children}))),$=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{..."deviceId"in e&&{deviceId:{[t?"exact":"ideal"]:e.deviceId}},..."aspectRatio"in e&&{aspectRatio:{ideal:e.aspectRatio?j(e.aspectRatio):void 0}},..."quality"in e&&{height:{ideal:e.quality?W(e.quality):void 0}}}},M=["4:3","16:9"],j=e=>({"4:3":4/3,"16:9":16/9}[e]??void 0),W=e=>{if(/^[0-9]+p$/.test(e))return parseInt(e)},_="ocStudioLastVideoDevice",q="ocStudioCameraAspectRatio",N="ocStudioCameraQuality",K="ocStudioDisplayQuality",V=()=>({deviceId:window.localStorage.getItem(_)??void 0,aspectRatio:window.localStorage.getItem(q)||"auto",quality:window.localStorage.getItem(N)||"auto"}),G=()=>({quality:window.localStorage.getItem(K)||"auto"});var X={name:"1v2iei1",styles:"position:absolute;right:8px;bottom:8px"},Q={name:"13h0jku",styles:"max-width:min(670px, 100vw - 16px)"};const Z=e=>{let{isDesktop:t,stream:r}=e;const n=(0,f.wA)(),i=(0,I.t0)(),s=(0,l.useRef)(null),{t:u}=(0,c.Bd)(),p="light"===(0,o.Ut)().scheme,{isHighContrast:h}=(0,o.Ut)(),m=t?G():V(),g=e=>{const o={...m,...e},s=$(o,!0),a=(e,t)=>{null!=t&&window.localStorage.setItem(e,t)};t?(a(K,o.quality),k(r,n),w(n,i,s)):(a(_,o.deviceId),a(q,o.aspectRatio),a(N,o.quality),S(r,n),y(n,i,s))};(0,l.useEffect)((()=>{const e=ae(r);!t&&e&&window.localStorage.setItem(_,e)}));const[b,x]=(0,l.useState)(!1),Y=u("steps.video.video-settings-"+(b?"close":"open"));return(0,H.FD)(H.FK,{children:[(0,H.Y)("div",{css:(0,a.AH)({display:b?"initial":"none",position:"absolute",top:12,left:0,right:0,textAlign:"center"},"",""),children:(0,H.Y)("span",{css:(0,a.AH)({color:p?v.lm.neutral70:v.lm.neutral90,backgroundColor:v.lm.neutral05,borderRadius:"10px",padding:"4px 8px",boxShadow:h?"none":"0 0 12px rgba(0, 0, 0, 30%)"},"",""),children:J(r)})}),(0,H.FD)(o.K1,{ref:s,placement:"top-end",ariaRole:"dialog",open:b,onClose:()=>x(!1),borderRadius:8,viewPortMargin:8,css:X,children:[(0,H.Y)(o.vh,{children:(0,H.Y)(o.kR,{placement:"bottom",tooltip:Y,children:(0,H.Y)(o.b1,{onClick:()=>x((e=>!e)),"aria-label":Y,css:(0,a.AH)({...we,fontSize:26,"> svg":{transition:"transform 0.2s"},"&:hover > svg, &:focus > svg":{transform:b?"none":"rotate(45deg)"}},"",""),children:b?(0,H.Y)(d.yGN,{}):(0,H.Y)(d.VSk,{})})})}),(0,H.FD)(o.DE,{css:Q,borderWidth:p?0:1,shadowBlur:16,padding:18,children:[(0,H.FD)("div",{css:(0,a.AH)({display:"grid",width:"100%",gridTemplateColumns:"auto 1fr",gridGap:"14px 32px",paddingLeft:4,[(0,o.pi)(450)]:{columnGap:8},[(0,o.pi)(360)]:{gridTemplateColumns:"1fr",rowGap:0},fontSize:14,"@media (min-width: 420px) and (min-height: 440px)":{fontSize:16}},"",""),children:[!t&&(0,H.Y)(oe,{updatePrefs:g,prefs:m,isExpanded:b}),(0,H.Y)(ne,{isDesktop:t,updatePrefs:g,prefs:m,stream:r,settings:i,isExpanded:b})]}),(0,H.Y)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral15,marginTop:8,padding:"8px 12px",fontSize:12,lineHeight:1.25,borderRadius:6,"@media (min-width: 420px) and (min-height: 440px)":{fontSize:14}},"",""),children:(0,H.FD)(c.x6,{i18nKey:"steps.video.preferences-note",children:[(0,H.Y)("strong",{children:"Note:"})," Explanation."]})})]})]})]})},J=e=>{const t=e?.getVideoTracks()?.[0]?.getSettings(),r=t&&t.width&&t.height?`${t.width}×${t.height}`:"",n=t&&t.frameRate?`${t.frameRate} fps`:"";return t?[r,n].join(", "):"..."},ee=e=>{let{children:t}=e;return(0,H.Y)("div",{css:(0,a.AH)({display:"flex",flexDirection:"column",justifyContent:"center",[(0,o.pi)(360)]:{marginTop:4}},"",""),children:t})};var te={name:"1uqn15b",styles:"display:flex;flex-wrap:wrap;gap:6px"};const re=e=>{let{children:t}=e;return(0,H.Y)("div",{css:te,children:t})},ne=e=>{let{isDesktop:t,updatePrefs:r,prefs:n,settings:i}=e;const{t:o}=(0,c.Bd)(),s=e=>r({quality:e}),a=(e=>{const t=[360,480,720,1080,1440,2160].filter((t=>!e||t<=e));return!e||0!==t.length&&t[t.length-1]===e||t.push(e),t.map((e=>`${e}p`))})(t?i.display?.maxHeight:i.camera?.maxHeight),l=t?"desktop":"user";return(0,H.FD)(H.FK,{children:[(0,H.Y)(ee,{children:o("steps.video.quality")}),(0,H.FD)(re,{children:[(0,H.Y)(se,{id:`quality-auto-${l}`,value:"auto",name:`quality-${l}`,label:o("steps.video.quality-auto"),onChange:s,checked:a.every((e=>n.quality!==e))}),a.map((e=>(0,H.Y)(se,{id:`quality-${e}-${l}`,value:e,name:`quality-${l}`,onChange:s,checked:n.quality===e},`${e}-${l}`)))]})]})};var ie={name:"1d3w5wq",styles:"width:100%"};const oe=e=>{let{updatePrefs:t,prefs:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.pv)(),o=ae(i.userStream),s=(0,v.r_)(i.mediaDevices,"videoinput"),a=e=>t({aspectRatio:e});return(0,H.FD)(H.FK,{children:[(0,H.Y)(ee,{children:(0,H.Y)("label",{htmlFor:"sources-video-device",children:n("steps.video.device")})}),(0,H.Y)(re,{children:(0,H.Y)(P,{id:"sources-video-device",value:o,onChange:e=>{return r=e.target.value,t({deviceId:r});var r},css:ie,children:s.map((e=>(0,H.Y)("option",{value:e.deviceId,children:e.label},e.deviceId)))})}),(0,H.Y)(ee,{children:n("steps.video.aspect-ratio")}),(0,H.FD)(re,{children:[(0,H.Y)(se,{id:"ar-auto",value:"auto",name:"aspectRatio",label:n("steps.video.aspect-ratio-auto"),onChange:a,checked:M.every((e=>r.aspectRatio!==e))}),M.map((e=>(0,H.Y)(se,{id:`ar-${e}`,value:e,name:"aspectRatio",onChange:a,checked:r.aspectRatio===e},e)))]})]})},se=e=>{let{id:t,value:r,checked:n,name:i,onChange:s,label:l}=e;const{isHighContrast:d}=(0,o.Ut)();return(0,H.FD)("div",{children:[(0,H.Y)("input",{type:"radio",onChange:e=>s(e.target.value),id:t,value:r,checked:n,name:i,css:(0,a.AH)({display:"none","&+label":{display:"block",border:`1px solid ${v.lm.neutral25}`,lineHeight:1.2,padding:"4px 10px",borderRadius:6,fontWeight:500,cursor:"pointer",":hover":{backgroundColor:v.lm.neutral10,borderColor:v.lm.neutral40,...d&&{outline:`2px solid ${v.lm.accent4}`,borderColor:"transparent"}}},"&:checked+label":{backgroundColor:v.lm.accent6,borderColor:v.lm.accent6,color:v.lm.neutral05,cursor:"default"}},"","")}),(0,H.Y)("label",{tabIndex:0,onKeyDown:e=>("Enter"===e.key||" "===e.key)&&s(r),htmlFor:t,children:l??r})]})},ae=e=>e?.getVideoTracks()?.[0]?.getSettings()?.deviceId,le=e=>{let{inputs:t}=e;const r=(0,o.YW)(t.length,{1:()=>[{body:(0,H.Y)(ce,{input:t[0]}),dimensions:()=>(0,v.VM)(t[0].stream),autoSize:de(t[0])}],2:()=>[{body:(0,H.Y)(ce,{input:t[0]}),dimensions:()=>(0,v.VM)(t[0].stream),autoSize:de(t[0])},{body:(0,H.Y)(ce,{input:t[1]}),dimensions:()=>(0,v.VM)(t[1].stream),autoSize:de(t[1])}]},o.HB);return(0,H.Y)(L,{gap:20,children:r})},de=e=>!1===e.allowed||!!e.unexpectedEnd,ce=e=>{let{input:t}=e;const{isHighContrast:r}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({height:"100%",backgroundColor:v.lm.neutral05,borderRadius:12,position:"relative",...!de(t)&&{boxShadow:r?"none":"0 6px 16px rgba(0, 0, 0, 0.2)"},...r&&{outline:`1px solid ${v.lm.neutral90}`}},"",""),children:[(0,H.Y)(fe,{input:t}),t.stream&&(0,H.FD)(H.FK,{children:[t.isDesktop&&(0,H.Y)(xe,{stream:t.stream}),(0,H.Y)(Z,{isDesktop:t.isDesktop,stream:t.stream})]})]})};var ue={name:"ti75j2",styles:"margin:0"},pe={name:"ti75j2",styles:"margin:0"},he={name:"10jtkcq",styles:"display:flex;flex-direction:column;width:100%;height:100%"},me={name:"r3950p",styles:"flex:1;display:flex;justify-content:center;align-items:center"},ge={name:"bjn8wh",styles:"position:relative"},ve={name:"480t9l",styles:"min-height:0;display:block;width:100%;height:100%;border-radius:12px"};const fe=e=>{let{input:t}=e;const{t:r}=(0,c.Bd)(),{allowed:n,stream:i,unexpectedEnd:s}=t,d=T(),u=(0,l.useRef)(null);if((0,l.useEffect)((()=>{const e=u.current;return e&&(e.srcObject||(e.srcObject=i),e.addEventListener("resize",d)),()=>{e&&e.removeEventListener("resize",d)}}),[i,d]),!i){let e;return e=!1===n||s?(0,H.FD)("div",{children:[!1===n&&(0,H.Y)(U,{css:ue,title:r(`steps.video.${t.isDesktop?"display":"user"}-not-allowed-title`),body:r(`steps.video.${t.isDesktop?"display":"user"}-not-allowed-text`)}),s&&(0,H.Y)(U,{css:pe,body:r("error-lost-video-stream")})]}):(0,H.Y)(o.y$,{size:75,css:(0,a.AH)({color:v.lm.neutral60},"","")}),(0,H.Y)("div",{css:he,children:(0,H.Y)("div",{css:me,children:e})})}return(0,H.Y)("div",{css:ge,children:(0,H.Y)("video",{ref:u,autoPlay:!0,muted:!0,playsInline:!0,css:ve})})};var be={name:"kmthlo",styles:"position:absolute;top:8px;right:8px"};const xe=e=>{let{stream:t}=e;const r=t.getAudioTracks().length;return(0,H.Y)("div",{css:be,children:(0,H.Y)(o.kR,{placement:"top",tooltip:(0,H.FD)(c.x6,{i18nKey:"steps.video."+(r?"display-audio-shared":"display-audio-not-shared"),children:[(0,H.Y)("strong",{children:"Note:"})," Explanation."]}),children:(0,H.FD)("div",{css:(0,a.AH)({...we,fontSize:15},"",""),children:[(0,H.Y)(C.MO8,{})," ",r?(0,H.Y)(C.exc,{}):(0,H.Y)(C.sRF,{})]})})})},we={border:"none",display:"inline-block",backgroundColor:"rgba(0, 0, 0, 0.3)",color:"white",padding:8,backdropFilter:"invert(0.3) blur(4px)",lineHeight:0,borderRadius:10,cursor:"pointer","&:hover, &:focus-visible":{backgroundColor:"rgba(0, 0, 0, 0.5)"},"&:focus-visible":{outline:"5px dashed white",outlineOffset:-2.5}};var ye=r(6933);const Ye=()=>navigator.userAgent.includes("Mac"),ke={general:{showAvailableShortcuts:"Alt; s",showOverview:"?",closeOverlay:"Escape",tab:"Tab",prev:Ye()?"Shift+Mod+left":"Mod+left",next:Ye()?"Shift+Mod+right":"Mod+right"},videoSetup:{selectScreen:"1",selectBoth:"2",selectUser:"3"},audioSetup:{withAudio:"1",withoutAudio:"2"},recording:{startPauseResume:"k; Space"},review:{playPause:"k; Space",forwards5secs:"l; right",backwards5secs:"j; left",forwardsFrame:".",backwardsFrame:",",cutLeft:"n",cutRight:"m",removeCutLeft:"Shift+n",removeCutRight:"Shift+m"},finish:{startNewRecording:"Shift+n",download:"d"}},Se={general:{showAvailableShortcuts:"shortcuts.general.show-available-shortcuts",showOverview:"shortcuts.general.show-overview",closeOverlay:"shortcuts.general.close-overlay",tab:"shortcuts.general.tab-elements",prev:"shortcuts.general.back-button",next:"shortcuts.general.next-button"},videoSetup:{selectScreen:"shortcuts.select-video.select-display",selectBoth:"shortcuts.select-video.select-both",selectUser:"shortcuts.select-video.select-camera"},audioSetup:{withAudio:"shortcuts.select-audio.select-microphone",withoutAudio:"shortcuts.select-audio.select-no-audio"},recording:{startPauseResume:"shortcuts.record.start-pause-resume-recording"},review:{playPause:"shortcuts.review.play-pause",forwards5secs:"shortcuts.review.skip-five",backwards5secs:"shortcuts.review.back-five",forwardsFrame:"shortcuts.review.frame-forward",backwardsFrame:"shortcuts.review.frame-back",cutLeft:"shortcuts.review.cut-left",cutRight:"shortcuts.review.cut-right",removeCutLeft:"shortcuts.review.delete-left",removeCutRight:"shortcuts.review.delete-right"},finish:{startNewRecording:"shortcuts.finish.new-recording",download:"steps.finish.save-locally.label"}},Ce={Escape:"escape",Space:"space",Shift:"shift",Alt:Ye()?"option":"alt",Mod:Ye()?"command":"control"},De=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return(0,ye.vC)(e,t,{splitKey:";",...r},n)},Ae=()=>{const[e,t]=(0,l.useState)(!1),r=e=>{ke.general.showAvailableShortcuts.split(";").some((t=>t.trim().toLowerCase()==e.key.toLowerCase()))&&t(!0)},n=()=>t(!1);return(0,l.useEffect)((()=>(document.addEventListener("keydown",r),document.addEventListener("keyup",n),document.addEventListener("mousedown",n),window.addEventListener("blur",n),()=>{document.removeEventListener("keydown",r),document.removeEventListener("keyup",n),document.removeEventListener("mousedown",n),window.removeEventListener("blur",n)}))),e},Re=e=>{let{shortcut:t,large:r=!1}=e;const{t:n}=(0,c.Bd)();return(0,H.Y)("div",{css:(0,a.AH)({display:"flex",alignItems:"center",gap:4,color:v.lm.neutral70},"",""),children:t.split("+").map(((e,t)=>{let i=e;e in Ce&&(i=n(`shortcuts.keys.${Ce[e]}`));const s=(0,o.YW)(e,{left:()=>(0,H.Y)(d.kRp,{title:i}),right:()=>(0,H.Y)(d.dyV,{title:i}),Mod:()=>Ye()?(0,H.Y)(d.JSe,{title:i}):(0,H.Y)(H.FK,{children:i}),Alt:()=>Ye()?(0,H.Y)(C.z_U,{title:i}):(0,H.Y)(H.FK,{children:i}),Shift:()=>(0,H.Y)(C.Uqt,{size:20,title:i})},(()=>(0,H.Y)(H.FK,{children:i})));return(0,H.FD)(l.Fragment,{children:[0!==t&&"+",(0,H.Y)(Ee,{large:r,monofont:"l"===e,children:s})]},t)}))})},Ee=e=>{let{large:t,monofont:r,children:n}=e;const i="light"===(0,o.Ut)().scheme,{scheme:s,isHighContrast:l}=(0,o.Ut)(),d=(0,o.YW)(s,{light:()=>v.lm.neutral05,dark:()=>v.lm.neutral15,"light-high-contrast":()=>v.lm.neutral05,"dark-high-contrast":()=>v.lm.neutral15});return(0,H.Y)("div",{css:(0,a.AH)({border:`1px solid ${v.lm.neutral50}`,borderRadius:4,padding:"2px 6px",display:"flex",alignItems:"center",justifyContent:"center",height:t?36:30,minWidth:t?36:30,fontSize:16,boxShadow:l?"none":"0 0 6px var(--shadow-color)",backgroundColor:t?d:v.lm.neutral10,color:l||i||!t?v.lm.neutral80:v.lm.neutral90,cursor:"default",...r&&{fontFamily:"monospace"}},"",""),children:n})},He=e=>{let{close:t}=e;const{t:r}=(0,c.Bd)();return(0,H.Y)(dn,{maxWidth:1e3,close:t,title:r("shortcuts.label"),children:Object.entries(ke).map((e=>{let[t,r]=e;return(0,H.Y)(Ue,{groupId:t,group:r},t)}))})},Fe={general:"shortcuts.general.title",videoSetup:"steps.video.label",audioSetup:"steps.audio.label",recording:"steps.record.label",review:"steps.review.label",finish:"steps.finish.label"};var Te={name:"1b7dsph",styles:"margin:32px 0;:first-of-type{margin-top:16px;}"},Le={name:"35wqm0",styles:"font-size:18px;margin-bottom:8px"},Oe={name:"1hmse4r",styles:"display:flex;flex-wrap:wrap;gap:12px"},Be={name:"26bywx",styles:"overflow-wrap:anywhere"},ze={name:"197tvr9",styles:"display:flex;gap:8px;align-items:center"};const Ue=e=>{let{groupId:t,group:r}=e;const{t:n}=(0,c.Bd)();return(0,H.FD)("section",{css:Te,children:[(0,H.Y)("h2",{css:Le,children:n(Fe[t])}),(0,H.Y)("div",{css:Oe,children:Object.entries(r).map(((e,r)=>{let[i,s]=e;return(0,H.FD)("div",{css:(0,a.AH)({width:"calc(33.33% - 24px / 3)",[(0,o.pi)(1080)]:{width:"calc(50% - 12px / 2)"},[(0,o.pi)(720)]:{width:"100%"},backgroundColor:v.lm.neutral10,borderRadius:4,padding:"10px 16px",display:"inline-flex",flexDirection:"column",alignItems:"start",gap:8},"",""),children:[(0,H.Y)("div",{css:Be,children:n(Se[t][i])}),(0,H.Y)("div",{css:ze,children:s.split(";").map(((e,t)=>(0,H.FD)(l.Fragment,{children:[t>0&&n("shortcuts.sequence-seperator"),(0,H.Y)(Re,{shortcut:e.trim(),large:!0})]},t)))})]},r)}))})]})};var Ie={name:"0",styles:""},Pe={name:"iqv73y",styles:"border-radius:8px;margin:0;padding-left:0;overflow:hidden;list-style:none"};const $e=e=>{let{kind:t,label:r,icon:n,disabled:i,danger:s,onClick:u,popoverEntries:p}=e;const{t:h}=(0,c.Bd)(),m=Ae(),g="dark"===(0,o.Ut)().scheme,{isHighContrast:f}=(0,o.Ut)(),b=(0,o.YW)(t,{prev:()=>ke.general.prev,next:()=>ke.general.next}),[x,w]=(0,l.useState)(!1),y=p?()=>w((e=>!e)):()=>u?.();De(b,y,{enabled:!i},[y,b,i]);const Y=(0,H.FD)(o.b1,{disabled:i,onClick:y,css:(0,a.AH)({position:"relative",display:"flex",gap:8,alignItems:"center",lineHeight:1,...(0,v.Y$)({offset:-1}),...s&&{"--color-focus":v.lm.danger4},borderRadius:8,border:`1px solid ${s?v.lm.danger4:v.lm.neutral50}`,color:s?v.lm.danger4:v.lm.neutral80,backgroundColor:s?v.lm.danger0:v.lm.neutral05,padding:"12px 24px",...(0,o.YW)(t,{next:()=>({paddingRight:16}),prev:()=>({paddingLeft:16})}),'&[data-floating-state="open"] svg':{transform:"rotate(-90deg)"},svg:{transition:"transform 0.15s",flexShrink:0},"&[disabled]":{color:v.lm.neutral60,borderColor:v.lm.neutral15,backgroundColor:v.lm.neutral15},"&:not([disabled]):hover, &:not([disabled]):focus-visible":{borderColor:s?v.lm.danger5:v.lm.neutral70,color:s?v.lm.danger5:v.lm.neutral90,boxShadow:f?"none":"0 0 8px var(--shadow-color)",...s&&{backgroundColor:v.lm.danger1},...f&&{outline:`2px solid ${s?v.lm.danger5:v.lm.accent4}`,borderColor:"transparent"}}},"",""),children:["prev"===t&&(n??(0,H.Y)(d.irw,{})),r??h(`steps.${"next"===t?"next":"back"}-button-label`),"next"===t&&(n??(0,H.Y)(d.fOo,{css:Ie})),m&&!i&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",top:-24,left:-6,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:b})})]});return p?(0,H.FD)(o.K1,{placement:"top-end",open:x,onClose:()=>w(!1),ariaRole:"menu",arrowSize:8,viewPortMargin:12,borderRadius:8,distance:6,children:[(0,H.Y)(o.vh,{children:Y}),(0,H.Y)(o.DE,{backgroundColor:g?v.lm.neutral15:v.lm.neutral05,borderWidth:g?1:0,padding:0,shadowBlur:8,children:(0,H.Y)("ul",{css:Pe,children:p?.map(((e,t)=>{const r={display:"flex",gap:16,alignItems:"center",width:"100%",minWidth:160,padding:12,color:v.lm.neutral80,cursor:"pointer",textDecoration:"none",...(0,v.Y$)({inset:!0}),"& > svg":{maxHeight:23,fontSize:23,color:v.lm.neutral60,width:24,strokeWidth:2,"& > path":{strokeWidth:"inherit"}},":hover, :focus":{backgroundColor:v.lm.neutral10,color:"inherit"}};return(0,H.Y)("li",{css:(0,a.AH)({":first-of-type > *":{borderRadius:"8px 8px 0 0"},":last-of-type> *":{borderRadius:"0 0 8px 8px"},":not(:first-of-type)":{borderTop:`1px solid ${v.lm.neutral30}`}},"",""),children:"href"in e?(0,H.FD)("a",{role:"button",href:e.href,css:r,onKeyDown:t=>{" "===t.key&&(t.preventDefault(),window.location.href=e.href)},children:[e.icon,e.label]}):(0,H.FD)(o.b1,{onClick:e.onClick,css:r,children:[e.icon,e.label]})},t)}))})})]}):Y};var Me={name:"1rx5t2m",styles:"flex:1;min-width:var(--min-page-width);display:flex;flex-direction:column;gap:12px;padding:12px;@media (min-width: 500px) and (min-height: 500px){gap:16px;padding:24px;}"},je={name:"xd9hir",styles:"flex:1;display:flex;flex-direction:column;justify-content:center;position:relative"},We={name:"1tn9h3w",styles:"display:flex;justify-content:end;align-items:end;gap:8px;min-height:42px"};const _e=e=>{let{title:t,note:r,nextButton:n,prevButton:i,children:o}=e;return(0,H.FD)("div",{css:Me,children:[(0,H.FD)("div",{children:[(0,H.Y)("h1",{"aria-live":"polite",css:(0,a.AH)({textAlign:"center",fontSize:32,fontWeight:700,color:v.lm.neutral70,"@media screen and (max-width: 600px), screen and (max-height: 400px)":{fontSize:26}},"",""),children:t}),r&&(0,H.Y)("div",{css:(0,a.AH)({fontSize:14,color:v.lm.neutral60,textAlign:"center",lineHeight:1.3,maxWidth:"100ch",margin:"0 auto"},"",""),children:r})]}),(0,H.Y)("div",{css:je,children:o}),(0,H.FD)("div",{css:We,children:[i&&(0,H.Y)($e,{kind:"prev",...i}),n&&(0,H.Y)($e,{kind:"next",...n})]})]})};var qe={name:"1b63svt",styles:"font-size:18px;font-weight:700"},Ne={name:"1m1e1pd",styles:"height:1lh;font-size:14px;margin-top:4px"},Ke={name:"1v2iei1",styles:"position:absolute;right:8px;bottom:8px"};const Ve=e=>{let{icon:t,label:r,onClick:n,shortcut:i,disabledText:s,ariaLabel:l}=e;const{isHighContrast:d}=(0,o.Ut)();return(0,H.FD)(o.b1,{onClick:n,disabled:!!s,"aria-label":l,css:(0,a.AH)({position:"relative",display:"inline-flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",maxHeight:250,maxWidth:420,padding:12,flex:"1",backgroundColor:v.lm.neutral05,color:v.lm.accent7,borderRadius:8,border:`1px solid ${v.lm.neutral20}`,"&[disabled]":{backgroundColor:v.lm.neutral10,color:v.lm.neutral50,borderColor:v.lm.neutral15},"&:not([disabled]):hover, &:not([disabled]):focus-visible":{color:v.lm.accent8,borderColor:v.lm.neutral30,boxShadow:"0 0 16px var(--shadow-color)",...d&&{outline:`2px solid ${v.lm.accent4}`,borderColor:"transparent",boxShadow:"none"}},...(0,v.Y$)({offset:-1})},"",""),children:[(0,H.Y)("div",{css:(0,a.AH)({borderRadius:"50%",display:"flex",justifyContent:"center",alignItems:"center",fontSize:40,width:80,height:80,backgroundColor:v.lm.neutral10,marginBottom:8},"",""),children:t}),(0,H.Y)("div",{css:qe,children:r}),(0,H.Y)("div",{css:Ne,children:s}),i&&(0,H.Y)("div",{css:Ke,children:(0,H.Y)(Re,{shortcut:i})})]})},Ge=e=>{let{setActiveSource:t,userConstraints:r,displayConstraints:n}=e;const{t:i}=(0,c.Bd)(),s=(0,I.t0)(),l=(0,f.wA)(),u=(0,f.pv)(),{displaySupported:p,userSupported:h}=u,m=async()=>{t("user"),await y(l,s,r),await(0,v.GG)(l)},g=async()=>{t("display"),await w(l,s,n)},b=async()=>{t("both"),(0,v.q4)()?(await w(l,s,n),await y(l,s,r),await(0,v.GG)(l)):(await y(l,s,r),await Promise.all([(0,v.GG)(l),w(l,s,n)]))};De(ke.videoSetup.selectScreen,g),De(ke.videoSetup.selectBoth,b),De(ke.videoSetup.selectUser,m);const x=Ae();return p||h?(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:24,padding:8,justifyContent:"center",alignItems:"center",flex:"1",[(0,o.pi)(v.LO.medium)]:{flexDirection:"column"}},"",""),children:[(p||!(0,v.kh)())&&(0,H.Y)(Ve,{label:i("sources-scenario-display"),ariaLabel:i("steps.video.share-display"),icon:(0,H.Y)(d.ufi,{}),onClick:g,disabledText:!p&&i("steps.video.display-not-supported"),shortcut:x?ke.videoSetup.selectScreen:void 0}),(p||!(0,v.kh)())&&h&&(0,H.Y)(Ve,{label:i("sources-scenario-display-and-user"),ariaLabel:i("steps.video.share-display-and-user"),icon:(0,H.FD)("div",{css:(0,a.AH)({lineHeight:0,fontSize:"0.8em",svg:{strokeWidth:2.5}},"",""),children:[(0,H.Y)(d.ufi,{}),(0,H.Y)(d.JXP,{})]}),onClick:b,disabledText:p?!u.hasWebcam&&i("steps.video.no-cam-detected"):i("steps.video.display-not-supported"),shortcut:x?ke.videoSetup.selectBoth:void 0}),h&&(0,H.Y)(Ve,{label:i("sources-scenario-user"),ariaLabel:i("steps.video.share-user"),icon:(0,H.Y)(d.JXP,{}),onClick:m,disabledText:!u.hasWebcam&&i("steps.video.no-cam-detected"),shortcut:x?ke.videoSetup.selectUser:void 0})]}):(0,H.Y)(U,{body:i("steps.video.none-available")})},Xe=e=>{let{goToNextStep:t}=e;const{t:r}=(0,c.Bd)(),n=(0,f.wA)(),i=(0,f.pv)(),{displayStream:s,userStream:a,videoChoice:l}=i,d=!!s||!!a,u=e=>n({type:"CHOOSE_VIDEO",choice:e}),p={isDesktop:!1,stream:a,allowed:i.userAllowed,unexpectedEnd:i.userUnexpectedEnd},h={isDesktop:!0,stream:s,allowed:i.displayAllowed,unexpectedEnd:i.displayUnexpectedEnd},m={prevButton:{onClick:()=>{u("none"),S(a,n),k(s,n)},disabled:!1,label:r("steps.video.reselect-source")},nextButton:{onClick:()=>t(),disabled:"both"===l?!s||!a:!d}},g=!1===i.userAllowed||i.userUnexpectedEnd||!1===i.displayAllowed||i.displayUnexpectedEnd;return(0,o.YW)(l,{none:()=>(0,H.FD)(_e,{title:r("steps.video.question"),children:[(0,H.Y)(Qe,{}),(0,H.Y)(Ge,{displayConstraints:$(G()),userConstraints:$(V()),setActiveSource:u})]}),user:()=>{const e=a||g;return(0,H.Y)(_e,{title:r("steps.video.user-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[p]})})},display:()=>{const e=s||g;return(0,H.Y)(_e,{title:r("steps.video.display-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[h]})})},both:()=>{const e=a&&s||g;return(0,H.Y)(_e,{title:r("steps.video.display-and-user-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[h,p]})})}})},Qe=()=>{const{t:e}=(0,c.Bd)(),t=[];if("https:"!==window.location.protocol&&"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname&&t.push((0,H.Y)(U,{body:e("warning-https")})),!(0,v.oC)()){let r=e("warning-recorder-not-supported");(0,v.q4)()&&(r+=" "+e("warning-recorder-safari-hint")),t.push((0,H.Y)(U,{body:r}))}return t.length>0?(0,H.Y)("div",{children:t}):null},Ze=e=>{let{selectNoAudio:t,selectMicrophone:r}=e;const{t:n}=(0,c.Bd)(),i=Ae();return De(ke.audioSetup.withAudio,r),De(ke.audioSetup.withoutAudio,t),(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:24,padding:8,justifyContent:"center",alignItems:"center",flex:"1",[(0,o.pi)(v.LO.medium)]:{flexDirection:"column"}},"",""),children:[(0,H.Y)(Ve,{icon:(0,H.Y)(d.Rrl,{}),label:n("steps.audio.microphone"),onClick:r,shortcut:i?ke.audioSetup.withAudio:void 0}),(0,H.Y)(Ve,{icon:(0,H.Y)(d.Qnk,{}),label:n("steps.audio.without-audio"),onClick:t,shortcut:i?ke.audioSetup.withoutAudio:void 0})]})};var Je=r(9432),et=r.n(Je),tt={name:"nqgbks",styles:"display:flex;width:80%;min-width:240px;align-items:center"},rt={name:"102h2op",styles:"flex:1 1;min-width:50px"};const nt=()=>{const{t:e}=(0,c.Bd)(),{isHighContrast:t}=(0,o.Ut)(),r=(0,f.wA)(),n=(0,f.pv)(),{audioStream:i,audioAllowed:s,audioUnexpectedEnd:d}=n,u=i?.getAudioTracks()?.[0]?.getSettings()?.deviceId,p=(0,v.r_)(n.mediaDevices,"audioinput");(0,l.useEffect)((()=>{u&&window.localStorage.setItem(st,u)}));const h=(0,l.useId)();let m=(0,H.Y)(H.FK,{});return m=i?(0,H.FD)(H.FK,{children:[(0,H.Y)(ot,{stream:i}),(0,H.FD)("div",{css:tt,children:[(0,H.Y)("label",{htmlFor:h,css:(0,a.AH)({marginRight:16,display:"flex",flexDirection:"column",alignItems:"center",fontWeight:700,color:v.lm.neutral70},"",""),children:e("steps.audio.device")}),(0,H.Y)(P,{id:h,value:u,onChange:e=>(async e=>{i&&Y(i,r),await x(r,{exact:e})})(e.target.value),css:rt,children:p.map(((e,t)=>(0,H.Y)("option",{value:e.deviceId,children:e.label??"unlabeled microphone"},t)))})]})]}):!1===s?(0,H.Y)(U,{title:e("steps.audio.not-allowed-title"),body:e("steps.audio.not-allowed-text")}):!0===d?(0,H.Y)(U,{body:e("error-lost-audio-stream")}):(0,H.Y)(o.y$,{size:75}),(0,H.Y)("div",{css:(0,a.AH)({maxWidth:850,backgroundColor:v.lm.neutral05,borderRadius:16,boxShadow:t?"none":"0 4px 16px var(--shadow-color)",width:"100%",margin:"0 auto",padding:24,display:"flex",flexDirection:"column",alignItems:"center",maxHeight:"400px",gap:16},"",""),children:m})};var it={name:"1xnwbsu",styles:"width:100%;height:min(200px, 20vh);flex:1 0 70px"};const ot=e=>{let{stream:t}=e;const r="dark"===(0,o.Ut)().scheme,n=(0,l.useRef)(null);return(0,l.useEffect)((()=>{const e=n.current;if(e){const n=e.getContext("2d");if(null==n)throw new Error("Could not get 2D context for canvas");n.lineWidth=2,n.strokeStyle=r?"#f1c40f":"#044a81";const i=(new window.AudioContext).createMediaStreamSource(t),o=new(et())(i,{fftSize:1024});return o.animate(n),()=>o.stop()}return()=>{}}),[t,r]),(0,H.Y)("canvas",{ref:n,width:"800px",height:"200px",css:it})},st="ocStudioLastAudioDevice",at=e=>{let{goToNextStep:t,goToPrevStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),{audioStream:s,audioChoice:a}=(0,f.pv)();return(0,o.YW)(a,{none:()=>(0,H.Y)(_e,{title:n("steps.audio.question"),prevButton:{onClick:r},nextButton:{disabled:!0},children:(0,H.Y)(Ze,{selectNoAudio:t,selectMicrophone:async()=>{i({type:"CHOOSE_AUDIO",choice:"microphone"});const e=window.localStorage.getItem(st);await x(i,e?{ideal:e}:void 0),await(0,v.GG)(i)}})}),microphone:()=>(0,H.Y)(_e,{title:n("steps.audio.microphone-selected"),prevButton:{label:n("steps.audio.reselect-audio"),onClick:()=>{s&&Y(s,i),i({type:"CHOOSE_AUDIO",choice:"none"})}},nextButton:{disabled:!s,onClick:t},children:(0,H.Y)(nt,{})})})};var lt=r(4631),dt={name:"158icaa",styles:"margin-left:4px"};const ct=e=>{let{recordingState:t,startRecording:r,pauseRecording:n,resumeRecording:i}=e;const{t:s}=(0,c.Bd)(),l="light"===(0,o.Ut)().scheme,{isHighContrast:u}=(0,o.Ut)(),p=l?v.lm.neutral05:v.lm.neutral90,h=Ae();De(ke.recording.startPauseResume,(()=>{(0,o.YW)(t,{inactive:()=>r(),paused:()=>i(),recording:()=>n()})}),{ignoreEventWhen:e=>"Space"===e.code&&e.target instanceof HTMLButtonElement},[t]);const m=(0,o.YW)(t,{inactive:()=>s("steps.record.record-button-title"),paused:()=>s("steps.record.resume-button-title"),recording:()=>s("steps.record.pause-button-title")});return(0,H.FD)("div",{css:(0,a.AH)({margin:"0 auto",width:180,height:85,display:"flex",gap:32,alignItems:"center",justifyContent:"center",backgroundColor:l?v.lm.neutral70:v.lm.neutral05,border:`1px solid ${l?v.lm.neutral50:v.lm.neutral25}`,boxShadow:u?"none":"0 4px 16px rgba(0, 0, 0, 0.2)",borderRadius:12,color:p,...u&&{backgroundColor:v.lm.neutral05,border:`2px solid ${v.lm.neutral25}`}},"",""),children:[(0,H.Y)(o.kR,{tooltip:m,children:(0,H.FD)("button",{onClick:(0,o.YW)(t,{inactive:()=>r,paused:()=>i,recording:()=>n}),"aria-label":m,"aria-live":"polite",css:(0,a.AH)({position:"relative",width:50,height:50,display:"flex",justifyContent:"center",alignItems:"center",fontSize:28,padding:0,boxShadow:u?"none":"0 4px 4px rgba(0, 0, 0, 0.12)",cursor:"pointer",color:u||l?"white":"#D6D6D6",borderRadius:"50%",backgroundColor:l?"#E42D43":"#b8012d",border:`${u?"2px":"1px"} solid ${p}`,":hover, :focus-visible":{backgroundColor:l?"#c40a31":"#8f0121"},":focus-visible":{outline:`4px solid ${p}`}},"",""),children:[(0,o.YW)(t,{inactive:()=>null,paused:()=>(0,H.Y)(d.aze,{css:dt}),recording:()=>(0,H.Y)(d.GHw,{})}),h&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",right:-4,bottom:-4},"",""),children:(0,H.Y)(Re,{shortcut:ke.recording.startPauseResume.split(";")[0]})})]})}),(0,H.Y)(ut,{isRecording:"recording"===t})]})},ut=e=>{let{isRecording:t}=e;const[r,n]=(0,l.useState)("00:00"),i=(0,l.useRef)(0);return(0,l.useEffect)((()=>{let e=new Date;const r=setInterval((()=>{const r=new Date;if(t){i.current+=r.valueOf()-e.valueOf();const t=i.current;let o=[Math.floor(t/36e5),Math.floor(t/6e4)%60,Math.floor(t/1e3)%60];0===o[0]&&(o=o.slice(1)),n(o.map((e=>(e<10?"0":"")+e)).join(":"))}e=r}),100);return()=>clearInterval(r)}),[t]),(0,H.Y)("div",{children:r})};var pt=r(3537),ht=r.n(pt);class mt{#e;#t=[];#r;onStop;constructor(e,t,r){let n;"isTypeSupported"in MediaRecorder?(n=(t?.mimes||[]).find((e=>MediaRecorder.isTypeSupported(e))),n?console.debug("using first supported MIME type from settings: ",n):t?.mimes&&console.debug("None of the MIME types specified in settings are supported by this `MediaRecorder`")):t?.mimes&&console.debug("MIME types were specified, but `MediaRecorder.isTypeSupported` is not supported by your browser"),this.#n(),this.#r=(0,v.VM)(e),this.onStop=r;const i=t?.videoBitrate;this.#e=new MediaRecorder(e,{mimeType:n,videoBitsPerSecond:i}),this.#e.ondataavailable=this.#i,this.#e.onstop=this.#o}#n=()=>{this.#t=[]};#i=e=>{e.data.size>0?this.#t.push(e.data):console.log("Recording data has size 0!",e)};#o=async e=>{const t=this.#t[0]?.type||this.#e.mimeType,r=await ht()(new Blob(this.#t,{type:t})),n=URL.createObjectURL(r);this.#n(),this.onStop?.({url:n,media:r,mimeType:t,dimensions:this.#r})};start(){this.#e.start()}pause(){this.#e.pause()}resume(){this.#e.resume()}stop(){this.#e.stop()}}const gt=(e,t)=>r=>{let{media:n,url:i,mimeType:o,dimensions:s}=r;e({type:"ADD_RECORDING",recording:{deviceType:t,media:n,url:i,mimeType:o,dimensions:s}})},vt=(e,t)=>e.reduce(((e,t)=>t?.getAudioTracks().length?new MediaStream([...e.getVideoTracks(),...(e.getAudioTracks().length?(()=>{const r=new AudioContext,n=r.createMediaStreamSource(e),i=r.createMediaStreamSource(t),o=r.createMediaStreamDestination();return n.connect(o),i.connect(o),o.stream})():t).getAudioTracks()]):e),t);var ft={name:"1co8040",styles:"position:absolute;bottom:32px;width:100%"};const bt=e=>{let{goToNextStep:t,goToPrevStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),o=(0,lt.Z1)(),a=(0,f.wA)(),d=(0,I.t0)(),u=(0,f.pv)(),{displayStream:p,userStream:h,displayUnexpectedEnd:m,userUnexpectedEnd:g,audioUnexpectedEnd:b}=u,[x,w]=(0,l.useState)("inactive"),y=(0,l.useRef)(),C=(0,l.useRef)(),D=(p||h)&&!g&&!m&&!b,A=e=>{y.current?.stop(),C.current?.stop(),a({type:e?"STOP_RECORDING_PREMATURELY":"STOP_RECORDING"}),o.refreshConnection(),function(e,t){let{audioStream:r,displayStream:n,userStream:i}=e;Y(r,t),k(n,t),S(i,t)}(u,i),t()};(0,l.useEffect)((()=>{!(g||m||b)||"recording"!==x&&"paused"!==x||A(!0)}));const R="paused"===x,E=[];return(p||m)&&E.push({body:(0,H.Y)(yt,{stream:p,paused:R}),dimensions:()=>(0,v.VM)(p),autoSize:!p}),(h||g)&&E.push({body:(0,H.Y)(yt,{stream:h,paused:R}),dimensions:()=>(0,v.VM)(h),autoSize:!h}),(0,s.S)((e=>{"inactive"!==x&&e.preventDefault()})),(0,H.FD)(_e,{title:n("steps.record.label"),prevButton:{onClick:r,disabled:"inactive"!==x},nextButton:{onClick:()=>A(!1),disabled:"paused"!==x,label:n("steps.record.stop-button-title")},children:[b&&(0,H.Y)(U,{body:n("error-lost-audio-stream")}),(0,H.Y)(L,{gap:20,children:E}),(0,H.Y)("div",{css:ft,children:D&&(0,H.Y)(ct,{startRecording:()=>{if(a({type:"CLEAR_RECORDINGS"}),p){const e=gt(a,"desktop"),t=vt([u.audioStream],p);y.current=new mt(t,d.recording,e),y.current.start()}if(h){const e=gt(a,"video"),t=vt([u.audioStream,p],h);C.current=new mt(t,d.recording,e),C.current.start()}w("recording"),a({type:"START_RECORDING"})},pauseRecording:()=>{w("paused"),y.current?.pause(),C.current?.pause()},resumeRecording:()=>{w("recording"),y.current?.resume(),C.current?.resume()},recordingState:x})})]})};var xt={name:"ti75j2",styles:"margin:0"},wt={name:"1ujvmfg",styles:"outline:none;width:100%;height:100%;background:transparent"};const yt=e=>{let{stream:t,paused:r}=e;const{t:n}=(0,c.Bd)(),i=T(),s=(0,l.useRef)(null),{isHighContrast:d}=(0,o.Ut)();return(0,l.useEffect)((()=>{const e=s.current;if(e&&t)return e.srcObject||(e.srcObject=t),e.addEventListener("resize",i),r?e.pause():e.play(),()=>e.removeEventListener("resize",i)})),t?(0,H.FD)("div",{css:(0,a.AH)({position:"relative",boxShadow:d?"none":"0 2px 12px rgba(0, 0, 0, 0.35)",overflow:"hidden",height:"100%"},"",""),children:[r&&(0,H.Y)(St,{}),(0,H.Y)("video",{ref:s,autoPlay:!0,muted:!0,playsInline:!0,tabIndex:-1,css:wt})]}):(0,H.Y)(U,{css:xt,body:n("error-lost-video-stream")})};var Yt={name:"1b4lm15",styles:"position:absolute;width:100%;height:100%;background-color:rgba(50, 50, 50, 0.7)"},kt={name:"4t4ja4",styles:"font-size:26px"};const St=()=>{const{t:e}=(0,c.Bd)();return(0,H.Y)("div",{css:Yt,children:(0,H.FD)("div",{css:(0,a.AH)({display:"flex",alignItems:"center",justifyContent:"center",color:"white",gap:8,fontSize:20,marginTop:32,textShadow:"0 0 12px rgba(0, 0, 0, 0.6)",animation:`2s ease-in-out infinite none ${(0,a.i7)({"0%":{opacity:1},"50%":{opacity:.7},"100%":{opacity:1}})}`},"",""),children:[(0,H.Y)(d.IQZ,{css:kt}),e("steps.record.is-paused")]})})};var Ct;function Dt(){return Dt=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",Dt({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 100 90",width:"1em",height:"1em"},e),Ct||(Ct=l.createElement("g",{fill:"currentColor"},l.createElement("path",{d:"M49.7.002c-2.91.059-5.75 1.49-7.44 4.08a8.84 8.84 0 0 0-1.42 5.29c-.08.122-.986 1.51-1.13 1.72-.13-.2-.997-1.54-1.08-1.66a8.84 8.84 0 0 0-1.4-5.29c-1.68-2.59-4.51-4.04-7.42-4.11a9.03 9.03 0 0 0-5.09 1.41c-4.18 2.66-5.4 8.27-2.72 12.4 2.56 3.96 7.83 5.24 11.9 3.02l.992 1.53c-2.84 4.35-4.9 7.5-6.74 10.3-3.09 4.73-1.94 8.93 2.01 11.5l9.47-14.5 9.45 14.6c3.96-2.55 5.13-6.75 2.06-11.5-1.84-2.84-3.9-6.03-6.74-10.4l1.04-1.59c4.1 2.23 9.37.974 12-2.97 2.03-3.1 1.85-7.03-.114-9.93a8.9 8.9 0 0 0-2.55-2.49 8.94 8.94 0 0 0-5.08-1.43zm.09 5.96a3.04 3.04 0 0 1 1.7.499c.357.23.65.514.872.835.668.962.712 2.24.018 3.31-.926 1.42-2.74 1.8-4.17.882-1.43-.92-1.82-2.73-.89-4.14.58-.886 1.51-1.37 2.47-1.38zm-20.1.023c.963.017 1.89.504 2.46 1.39.92 1.42.525 3.22-.906 4.14s-3.25.521-4.17-.9c-.92-1.42-.525-3.22.906-4.14a3.07 3.07 0 0 1 1.71-.492zm10 24.1a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m0 10.9a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m-1.5 8.8a2.43 2.42 0 0 0-2.43 2.42v35.4a2.43 2.42 0 0 0 2.43 2.42h8.94v-4.83h-6.51v-30.6h6.1v-4.83zm6.51 8.86v22.5h55.2v-4.83h-3.22a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71h3.22v-4.83zm6.59 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71m22.7 0h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.77-1.71 1.72-1.71"}),l.createElement("path",{d:"M0 58.6v4.83h2.44c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H0v4.83h31.8v-22.5zm10.8 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H10.8a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.768-1.71 1.72-1.71",opacity:.2}))));function Et(){return Et=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",Et({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24"},e),At||(At=l.createElement("path",{d:"M14 21h-4V3h4"})));const Ft=e=>{let{previewController:t,currentTime:r}=e;const{i18n:n}=(0,c.Bd)(),i=t.current?.duration,{isHighContrast:s}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral05,borderRadius:8,padding:16,boxShadow:s?"none":"0 4px 4px var(--shadow-color)",display:"flex",flexDirection:"column",gap:12},"",""),children:[(0,H.Y)(Pt,{previewController:t,currentTime:r}),(0,H.FD)("div",{css:(0,a.AH)({textAlign:"center",color:v.lm.neutral70},"",""),children:[Tt(r,i,n.language),"/",Tt(i,i,n.language)]}),(0,H.Y)(Ot,{previewController:t,currentTime:r})]})},Tt=(e,t,r)=>{if(void 0===e)return"--:--";const n=e%60,i=Math.floor(e/60)%60,o=Math.floor(e/3600),s=n.toLocaleString(r,{minimumFractionDigits:1,maximumFractionDigits:1}),a=`${i<=9?"0":""}${i}:${n<=9?"0":""}${s}`;return t&&t>=3600?`${o}:${a}`:a};var Lt={name:"1r962iv",styles:"padding:4px"};const Ot=e=>{let{previewController:t,currentTime:r}=e;const n=t.current?.duration||1/0,i=(0,I.t0)(),s=(0,f.wA)(),{start:d,end:c}=(0,f.pv)(),u=(0,l.useRef)(null),{isHighContrast:p}=(0,o.Ut)(),h={position:"absolute",backgroundColor:v.lm.danger1,height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)",boxSizing:"content-box",background:`repeating-linear-gradient(45deg,${v.lm.danger2}, ${v.lm.danger2} 4px,${v.lm.danger1} 4px, ${v.lm.danger1} 8px)`};return(0,H.Y)("div",{css:Lt,children:(0,H.FD)("div",{ref:u,css:(0,a.AH)({"--scrubber-border-radius":"3px","--scrubber-height":"6px","@media not (any-pointer: fine)":{"--scrubber-border-radius":"6px","--scrubber-height":"12px"},position:"relative",backgroundColor:v.lm.accent4,width:"100%",height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)"},"",""),children:[(0,H.Y)("div",{onClick:e=>(e=>{const r=e.currentTarget.getBoundingClientRect();let i=(e.clientX-r.x)/r.width;i<0?i=0:i>1&&(i=1),t.current&&(t.current.currentTime=i*n)})(e),css:(0,a.AH)({position:"absolute",width:"100%",cursor:"pointer",zIndex:5,top:-6,bottom:-6},"",""),children:(0,H.Y)(zt,{scrubberRef:u,previewController:t,initialTime:r,onDrag:e=>(0,o.d6)(t.current).currentTime=e,children:(0,H.Y)("div",{css:(0,a.AH)({width:16,height:16,"@media not (any-pointer: fine)":{width:24,height:24},borderRadius:"50%",backgroundColor:v.lm.neutral05,border:`1px solid ${v.lm.neutral40}`},"","")})})}),null!=d&&d>0&&(0,H.Y)("div",{css:(0,a.AH)({left:0,borderRight:"2px solid black",width:d/n*100+"%",...h},"","")}),null!=c&&cMath.min(e,c??n),onDrag:e=>s({type:"UPDATE_START",time:e}),children:(0,H.Y)(Bt,{side:"left",isHighContrast:p})}),(0,H.Y)(zt,{scrubberRef:u,previewController:t,initialTime:c??n,clamp:e=>Math.max(e,d??0),onDrag:e=>s({type:"UPDATE_END",time:e}),children:(0,H.Y)(Bt,{side:"right",isHighContrast:p})})]}),(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",left:0,width:r/n*100+"%",backdropFilter:"brightness(0.75)",height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)"},"","")})]})})},Bt=e=>{let{side:t,isHighContrast:r}=e;return(0,H.Y)("div",{css:(0,a.AH)({width:14,height:20,"@media not (any-pointer: fine)":{height:24},backgroundColor:v.lm.neutral05,color:v.lm.neutral70,border:`1px solid ${v.lm.neutral40}`,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:r?"none":"0 1px 2px var(--shadow-color)"},"",""),children:(0,H.Y)(Ht,{css:(0,a.AH)({transform:"scale(1.2) "+("right"==t?"scaleX(-1)":"")},"","")})})},zt=e=>{let{previewController:t,scrubberRef:r,initialTime:n,onDrag:i,clamp:s=(e=>e),children:d}=e;const c=t.current?.duration||1/0,u=n/c,p=(0,l.useRef)(u),h=(0,l.useRef)(),m=(0,l.useRef)(null),g=(0,l.useRef)(!1);return(0,l.useEffect)((()=>{const e=()=>{g.current&&(g.current=!1,i?.(p.current*c),(0,o.d6)(m.current).style.left="")},t=e=>{r(e.pageX)},r=e=>{if(g.current){const t=(0,o.d6)(h.current),r=Math.min(1,Math.max(0,(e-t.left)/t.width));p.current=s(c*r)/c,i?.(p.current*c),(0,o.d6)(m.current).style.left=100*p.current+"%"}},n=e=>{e.touches.length>0&&r(e.touches[0].pageX)};return document.addEventListener("mouseup",e),document.addEventListener("touchend",e),document.addEventListener("mousemove",t),document.addEventListener("touchmove",n),()=>{document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e),document.removeEventListener("mousemove",t),document.removeEventListener("touchmove",n)}})),(0,H.Y)("div",{ref:m,onMouseDown:()=>{g.current=!0,h.current=(0,o.d6)(r.current).getBoundingClientRect()},onTouchStart:()=>{console.log("TOUCH START"),g.current=!0,h.current=(0,o.d6)(r.current).getBoundingClientRect()},css:(0,a.AH)({position:"absolute",zIndex:10,left:100*u+"%",cursor:"grab",userSelect:"none",top:"50%",transform:"translateY(-50%) translateX(-50%)",padding:"8px 4px"},"",""),children:d})};var Ut={name:"r8hnng",styles:"display:flex;gap:16px;justify-content:center;align-items:flex-end"},It={name:"1i7v2bx",styles:"margin-left:3px"};const Pt=e=>{let{currentTime:t,previewController:r}=e;const{start:n,end:i}=(0,f.pv)(),s=(0,f.wA)(),l=(0,I.t0)(),{t:u}=(0,c.Bd)(),p=()=>{const e=r.current;e&&(e.isPlaying?e.pause():e.isReadyToPlay&&e.play())};De(ke.review.playPause,p,{ignoreEventWhen:e=>"Space"===e.code&&e.target instanceof HTMLButtonElement});const h=Ae(),{isHighContrast:m}=(0,o.Ut)(),g=r.current?.isPlaying,b=u("steps.review."+(g?"pause":"play"));return(0,H.FD)("div",{css:Ut,children:[l.review?.disableCutting||(0,H.Y)($t,{marker:"start",value:n,control:i,invariant:(e,t)=>ee.preventDefault(),children:[h&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:ke.review.playPause.split(";")[0]})}),g?(0,H.Y)(d.GHw,{}):(0,H.Y)(d.aze,{css:It})]})}),l.review?.disableCutting||(0,H.Y)($t,{marker:"end",value:i,control:n,invariant:(e,t)=>t{let{marker:t,value:r,control:n,invariant:i,currentTime:s,previewController:l,recordingDispatch:d}=e;const{t:u,i18n:p}=(0,c.Bd)(),{isHighContrast:h}=(0,o.Ut)(),m=s<=Gt||l.current&&s>=l.current.duration||null!=n&&!i(s,n),g=()=>{if(!l.current)return;let e=l.current.currentTime;null==n||i(e,n)||(e=n),d({type:"start"===t?"UPDATE_START":"UPDATE_END",time:e})},f=ke.review["start"===t?"cutLeft":"cutRight"];De(f,g,{enabled:!m}),De(ke.review["start"===t?"removeCutLeft":"removeCutRight"],(()=>d({type:"start"===t?"UPDATE_START":"UPDATE_END",time:null})));const b=Ae(),x=(0,H.Y)("div",{css:(0,a.AH)({minWidth:68,textAlign:"start"==t?"right":"left"},"",""),children:null!==r&&(0,H.Y)(o.kR,{tooltip:u("steps.review.jump-to-cut-point"),children:(0,H.Y)(o.b1,{css:(0,a.AH)({padding:"4px 0",color:v.lm.accent6},"",""),onClick:e=>{e.preventDefault(),l.current&&(l.current.currentTime=r)},onMouseDown:e=>e.preventDefault(),children:Tt(r,r,p.language)})})}),w=(0,H.Y)(o.kR,{tooltip:u(`steps.review.set-${t}`),children:(0,H.FD)(o.b1,{disabled:m,"aria-label":u(`steps.review.set-${t}`),onClick:g,onMouseDown:e=>e.preventDefault(),css:(0,a.AH)({lineHeight:0,padding:"4px 8px",paddingTop:4,borderRadius:4,...(0,v.Y$)(),"&:disabled":{opacity:.3},"&:not(:disabled):hover":{backgroundColor:v.lm.neutral10,color:h?v.lm.accent4:"inherit"}},"",""),children:[(0,H.Y)(Rt,{css:(0,a.AH)({height:36,width:36,transform:"end"===t?"scaleX(-1)":""},"","")}),b&&!m&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:f})})]})});return"start"===t?(0,H.FD)(H.FK,{children:[x,w]}):(0,H.FD)(H.FK,{children:[w,x]})};var Mt;function jt(){return jt=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",jt({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 100 65",width:"1em",height:"1em"},e),Mt||(Mt=l.createElement("path",{fill:"currentColor",d:"M24.6 0c-.447 0-.894.171-1.24.511l-3.07 3.05a1.73 1.73 0 0 0 0 2.46l58.8 58.5c.685.681 1.79.681 2.47 0l3.07-3.05a1.73 1.73 0 0 0 0-2.46l-6.68-6.64h22v-7.32h-15.6c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h15.6v-7.32h-56.4L25.75.551A1.75 1.75 0 0 0 24.51.04zM0 18.2v7.32h3.7c1.44 0 2.6 1.15 2.6 2.59v14.3C6.3 43.84 5.14 45 3.7 45H0v7.32h55.8l-15.4-15.3v5.36c0 1.43-1.16 2.59-2.6 2.59H16c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h12.8l-7.36-7.32zm51 7.32h21c1.44 0 2.6 1.15 2.6 2.59v14.3c0 1.43-1.16 2.59-2.6 2.59h-1.4z"}))),_t={name:"zxsb69",styles:"position:relative;width:100%;height:100%"},qt={name:"1j80pbv",styles:"position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(0, 0, 0, 0.65);color:white;display:flex;flex-direction:column;align-items:center;justify-content:start;padding-top:16px;pointer-events:none"},Nt={name:"6yeg13",styles:"font-size:3em"},Kt={name:"te1fbj",styles:"margin:8px 0"};const Vt=(0,l.forwardRef)(((e,t)=>{let{onTimeUpdate:r,onReady:n,onPausePlay:i}=e;const{recordings:s,start:d,end:u}=(0,f.pv)(),{t:p}=(0,c.Bd)(),{isHighContrast:h}=(0,o.Ut)(),m=[(0,l.useRef)(null),(0,l.useRef)(null)],g=m.slice(0,s.length),v=2===s.length?"desktop"===s[0].deviceType?0:1:null,b=(0,l.useRef)(),x=(0,l.useRef)(null),w=e=>{g.some((e=>e.current?.seeking))?x.current=e:g.forEach((t=>{t.current&&(t.current.currentTime=Math.max(0,Math.min(e,t.current.duration)))}))};(0,l.useImperativeHandle)(t,(()=>({get currentTime(){return(0,o.d6)(m[b.current??0].current?.currentTime)},set currentTime(e){w(e)},get duration(){return(0,o.d6)(m[b.current??0].current?.duration)},get isPlaying(){const e=m[b.current??0].current;return null!=e&&e.currentTime>0&&!e.paused&&!e.ended},get isReadyToPlay(){return g.every((e=>(e.current?.readyState??0)>=2))},play(){g.forEach((e=>e.current?.play())),i(!1)},pause(){g.forEach((e=>e.current?.pause())),i(!0)}})));const y=[(0,l.useRef)(),(0,l.useRef)()],[Y,k]=(0,l.useState)(!1),S=e=>null!==d&&eu,C=m[b.current??0].current?.currentTime||0,D=S(C),[,A]=(0,l.useState)(D);(0,l.useEffect)((()=>{Y&&n()}),[n,Y]),(0,l.useEffect)((()=>{if(Y&&null!=v){(0,o.d6)(m[v].current).volume=0;const e=(0,o.d6)(m[0].current),t=(0,o.d6)(m[1].current);let r,n=0;const i=()=>{if(n%60==0&&Math.abs(e.currentTime-t.currentTime)>.15&&null!=b.current){const e=m[b.current].current,t=m[0===b.current?1:0].current;(0,o.d6)(t).currentTime=(0,o.d6)(e).currentTime}n++,r=window.requestAnimationFrame(i)};return r=window.requestAnimationFrame(i),()=>window.cancelAnimationFrame(r)}}));const R=e=>w((0,o.d6)(m[b.current??0].current?.currentTime)+e);De(ke.review.forwards5secs,(()=>R(5))),De(ke.review.backwards5secs,(()=>R(-5))),De(ke.review.forwardsFrame,(()=>R(1/30))),De(ke.review.backwardsFrame,(()=>R(-1/30)));const E=s.map(((e,t)=>({dimensions:()=>e.dimensions,body:(0,H.FD)("div",{css:_t,children:[D&&(0,H.FD)("div",{css:qt,children:[(0,H.Y)(Wt,{css:Nt}),(0,H.Y)("p",{css:Kt,children:p("steps.review.part-will-be-removed")})]}),(0,H.Y)("video",{ref:m[t],src:e.url,onLoadedData:e=>{e.currentTarget.currentTime=Number.MAX_VALUE,y[t].current="started"},onSeeked:()=>{if(Y){const e=m[0==t?1:0].current?.seeking,r=x.current;e||null==r||(g.forEach((e=>{e.current&&(e.current.currentTime=r)})),x.current=null)}},onTimeUpdate:e=>{Y?(A(S(e.currentTarget.currentTime)),r(e)):(0,o.YW)((0,o.d6)(y[t].current),{started:()=>{e.currentTarget.currentTime=Gt,y[t].current="done"},done:()=>{y.filter((e=>"done"===e.current)).length===s.length&&k(!0)}})},autoPlay:/iPad|iPhone|iPod/.test(navigator.userAgent),playsInline:!0,preload:"auto",tabIndex:-1,css:(0,a.AH)({width:"100%",height:"100%",outline:"none",boxShadow:h?"none":"0 4px 16px var(--shadow-color)",borderRadius:16},"","")},t)]})})));return(0,H.Y)(L,{gap:20,children:E})})),Gt=.001;var Xt={name:"sw5ovr",styles:"flex:1;display:flex;align-items:center;justify-content:center;font-size:42px"};const Qt=e=>{let{goToFirstStep:t,goToNextStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),{recordings:s,prematureRecordingEnd:u,videoChoice:p}=(0,f.pv)(),h=s.some((e=>0===e.media.size)),m=(0,l.useRef)(null),[g,v]=(0,l.useState)(0),[b,x]=(0,l.useState)(!1),[w,y]=(0,l.useState)(!0),Y=(0,o.YW)(p,{both:()=>2,display:()=>1,user:()=>1,none:()=>0});return(0,H.FD)(_e,{title:n("steps.review.label"),note:n("steps.review.only-on-upload-note"),prevButton:{danger:!0,icon:(0,H.Y)(d.Q_v,{}),label:n("steps.review.button-discard-and-record"),onClick:()=>{window.confirm(n("confirm-discard-recordings"))&&(i({type:"RESET"}),t())}},nextButton:{onClick:r},children:[u&&(0,H.Y)(U,{body:n("error-lost-stream-end-recording")}),h&&(0,H.Y)(U,{body:n("steps.review.error-empty-recording")}),(!b||s.length!==Y)&&(0,H.Y)("div",{css:Xt,children:(0,H.Y)(o.y$,{})}),s.length===Y&&(0,H.FD)("div",{css:(0,a.AH)({display:b?"flex":"none",flex:"1 1 auto",gap:16,flexDirection:"column"},"",""),children:[(0,H.Y)(Vt,{ref:m,onTimeUpdate:e=>{v(e.currentTarget.currentTime)},onPausePlay:e=>y(e),onReady:()=>x(!0)}),(0,H.Y)(Ft,{previewController:m,currentTime:g})]})]})};var Zt={name:"1kr2sal",styles:"display:flex;flex-direction:column;align-items:center;:not(:first-of-type){margin-top:32px;}"},Jt={name:"bjn8wh",styles:"position:relative"},er={name:"3vo0co",styles:"border-radius:4px;display:block;max-height:190px;margin:0 auto"},tr={name:"2dzgoj",styles:"position:absolute;bottom:0;right:0;left:0;color:white;background-color:rgba(30, 30, 30, 0.85);display:flex;justify-content:center;align-items:center;gap:8px;padding:12px;border-radius:0 0 4px 4px"},rr={name:"1kvnwqk",styles:"font-size:22px"},nr={name:"14is9qy",styles:"font-size:20px"};const ir=()=>{const{t:e,i18n:t}=(0,c.Bd)(),{recordings:r,title:n,presenter:i}=(0,f.pv)(),s=(0,f.wA)(),u=Ae(),p=r.map((()=>(0,l.useRef)(null)));return De(ke.finish.download,(()=>{for(const e of p)e.current?.click()})),r.map(((r,l)=>{const{deviceType:c,mimeType:h,url:m,downloaded:g,media:f}=r,b=e("desktop"===c?"sources-display":"sources-user"),x=(0,v.F2)({mime:h,flavor:b,title:n,presenter:i}),{isHighContrast:w}=(0,o.Ut)();return m?(0,H.FD)("div",{css:Zt,children:[(0,H.FD)("div",{css:Jt,children:[(0,H.Y)("video",{tabIndex:-1,muted:!0,src:m,onLoadedData:e=>e.currentTarget.currentTime=0,preload:"auto",css:er}),g&&(0,H.FD)("div",{css:tr,children:[(0,H.Y)(C.c9S,{css:rr}),e("steps.finish.save-locally.recording-saved")]})]}),(0,H.FD)("a",{ref:p[l],"aria-label":e(`steps.finish.save-locally.save-${c}-locally`),target:"_blank",download:x,href:m,rel:"noopener noreferrer",role:"button",onClick:()=>s({type:"MARK_DOWNLOADED",index:l}),onKeyDown:e=>{" "===e.key&&(e.preventDefault(),p[l].current?.click())},css:(0,a.AH)({...Br(w),justifyContent:"center",maxWidth:260,margin:"auto",marginTop:8},"",""),children:[(0,H.Y)(d.a4x,{css:nr}),e("steps.finish.save-locally.label")+" ("+zr(f.size,t)+")",u&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",right:-4,bottom:-4},"",""),children:(0,H.Y)(Re,{shortcut:ke.finish.download})})]})]},l):null}))};var or=r(2467),sr=r(9785);const ar="ocStudioLastPresenter";let lr=[];const dr=()=>{const e=(0,I.t0)(),{t:t}=(0,c.Bd)(),r=(0,lt.Z1)(),{recordings:n,upload:i,title:s,presenter:a,...d}=(0,f.pv)(),u=(0,f.wA)();function p(e){const t=Date.now();lr.push({timestamp:t,progress:e});const r=Math.min(lr.findIndex((e=>t-e.timestamp<5e3)),Math.max(0,lr.length-6));lr.splice(0,r);let n=null;if(lr.length>=4){const r=t-lr[0].timestamp,i=(e-lr[0].progress)/r*1e3,o=1-e;n=Math.max(0,Math.round(o/i))}i.secondsLeft===n&&i.currentProgress===e||u({type:"UPLOAD_PROGRESS_UPDATE",secondsLeft:n,currentProgress:e})}(0,l.useEffect)((()=>{const e=setInterval((()=>{if("uploading"===i.state)if(lr.length){const e=lr[lr.length-1];Date.now()-e.timestamp>3e3&&p(e.progress)}else p(0)}),1e3);return()=>clearInterval(e)}));const h=async i=>{u({type:"UPLOAD_REQUEST"}),lr.push({timestamp:Date.now(),progress:0});const s=await r.upload({recordings:n.filter(Boolean),title:i.title,presenter:i.presenter,series:i.series,uploadSettings:e.upload,onProgress:p,start:d.start,end:d.end,startTime:d.recordingStartTime??(0,o.HB)("no start time set"),endTime:d.recordingEndTime??(0,o.HB)("no end time set")});lr=[];const a=e=>u({type:"UPLOAD_ERROR",msg:e});(0,o.YW)(s,{success:()=>u({type:"UPLOAD_SUCCESS"}),network_error:()=>a(t("steps.finish.upload.upload-network-error")),not_authorized:()=>a(t("steps.finish.upload.upload-not-authorized")),unexpected_response:()=>a(t("steps.finish.upload.upload-invalid-response"))},(()=>a(t("steps.finish.upload.upload-unknown-error"))))};switch(i.state){case"uploading":return(0,H.Y)(Cr,{currentProgress:i.currentProgress,secondsLeft:i.secondsLeft});case"uploaded":return(0,H.Y)(Ar,{});default:return(0,H.Y)(mr,{uploadState:i,handleUpload:h})}};var cr={name:"q3psig",styles:"font-size:16px;font-weight:700;margin-top:20px"},ur={name:"14is9qy",styles:"font-size:20px"},pr={name:"hkh81z",styles:"margin-top:8px"},hr={name:"ti75j2",styles:"margin:0"};const mr=e=>{let{handleUpload:t}=e;const{titleField:r="required",presenterField:n="required",seriesField:i="optional",autofillPresenter:s=[]}=(0,I.t0)().upload??{},{t:u,i18n:p}=(0,c.Bd)(),h=(0,lt.Z1)(),m=(0,f.wA)(),g=(0,I.CA)(),{title:v,presenter:b,upload:x,recordings:w}=(0,f.pv)(),y=b||window.localStorage.getItem(ar)||s.map((e=>(0,o.YW)(e,{opencast:()=>h.getUsername()}))).find(Boolean)||"",[Y,k]=(0,l.useState)("idle"),{formState:{errors:S},handleSubmit:C,register:D,control:A,getValues:R}=(0,sr.mN)({defaultValues:g.formValues().opencast}),{field:E}=(0,sr.as)({name:"series",control:A,rules:{required:"required"===i&&u("steps.finish.upload.validation-error-required")}});function F(e){const t=e.target;m({type:(0,o.d6)({title:"UPDATE_TITLE",presenter:"UPDATE_PRESENTER"}[t.name]),value:t.value}),"presenter"===t.name&&window.localStorage.setItem(ar,t.value)}(0,l.useEffect)((()=>{y!==b&&m({type:"UPDATE_PRESENTER",value:y})}),[]);const T=g.isConfigurable("opencast.serverUrl"),L=g.isUsernameConfigurable(),O=g.isPasswordConfigurable(),B=T||L||O,z=e=>({serverUrl:e.serverUrl,loginName:e.loginName,loginPassword:e.loginPassword}),P=w.reduce(((e,t)=>e+t.media.size),0),$=zr(P,p),{isHighContrast:M}=(0,o.Ut)(),j=async()=>{const e=R(),t=g.settings().opencast;if(!(e.serverUrl&&e.serverUrl!==t?.serverUrl||e.loginName&&e.loginName!==t?.loginName||e.loginPassword&&e.loginPassword!==t?.loginPassword))return;const r=z(e),n=await lt.cI.init({...g.settings().opencast,...r});"logged_in"===n.getState()&&(h.setGlobalInstance(n),g.saveSettings({opencast:r}))};return(0,H.FD)(H.FK,{children:[(0,H.FD)("form",{onSubmit:C((async e=>{if(!B)return void await t(e);console.log(e),k("testing");const r=z(e),n=await lt.cI.init({...g.settings().opencast,...r}),i=(0,o.YW)(n.getState(),{logged_in:()=>(h.setGlobalInstance(n),g.saveSettings({opencast:r}),null),incorrect_login:()=>h.isLoginProvided()?u("steps.finish.upload.settings-invalid-provided-login"):u("steps.finish.upload.settings-invalid-login-data"),network_error:()=>u("steps.finish.upload.upload-network-error"),invalid_response:()=>u("steps.finish.upload.upload-invalid-response"),response_not_ok:()=>u("steps.finish.upload.upload-invalid-response")},(()=>(0,o.HB)()));i?(m({type:"UPLOAD_ERROR",msg:i}),k("idle")):await t(e)})),children:["hidden"!==r&&(0,H.Y)(fr,{name:"title",label:u("steps.finish.upload.label-title"),required:"required"===r,onChange:F,autoComplete:"off",defaultValue:v,autoFocus:!0,errors:S,register:D}),"hidden"!==n&&(0,H.Y)(fr,{name:"presenter",label:u("steps.finish.upload.label-presenter"),required:"required"===n,onChange:F,autoComplete:"off",defaultValue:y,errors:S,register:D}),"hidden"!==i&&(0,H.Y)(wr,{formProps:E,showOpencastSection:B,errors:S}),B&&(0,H.FD)(H.FK,{children:[(0,H.Y)("h3",{css:cr,children:u("steps.finish.upload.settings-header")}),T&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-server-url"),name:"serverUrl",register:D,onBlur:j,required:!0,validate:e=>{try{const t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol||u("steps.finish.upload.settings-invalid-url-http-start")}catch{let t=u("steps.finish.upload.settings-invalid-url");return e.startsWith("https://")||e.startsWith("http://")||(t+=" "+u("steps.finish.upload.settings-invalid-url-http-start")),t}}}),L&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-username"),name:"loginName",register:D,onBlur:j,required:!0}),O&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-password"),name:"loginPassword",register:D,onBlur:j,required:!0,type:"password"})]}),(0,H.FD)(o.b1,{type:"submit",css:(0,a.AH)({...Br(M),margin:"0 auto",marginTop:24},"",""),children:[(0,o.YW)(Y,{idle:()=>(0,H.Y)(d.B88,{css:ur}),testing:()=>(0,H.Y)(o.y$,{size:20})}),(0,H.Y)("span",{children:u("steps.finish.upload.label")+" ("+$+")"})]})]}),(0,H.Y)("div",{css:pr,children:"error"===x.state&&(0,H.Y)(U,{css:hr,body:(0,o.d6)(x.error),extraBody:u("steps.finish.upload.warn-download-hint")})})]})};var gr={name:"cn3xcj",styles:"margin-bottom:12px"},vr={name:"mk6g3b",styles:"display:block;box-sizing:border-box;position:relative;text-align:left"};const fr=e=>{let{errors:t,register:r,label:n,name:i,required:o,validate:s,type:d="text",...u}=e;const{t:p}=(0,c.Bd)(),h=t[i],m=(0,l.useId)();return(0,H.FD)("div",{css:gr,children:[(0,H.Y)("label",{htmlFor:m,css:(0,a.AH)({display:"block",fontWeight:700,color:v.lm.neutral70,margin:"4px 0",fontSize:14},"",""),children:n}),(0,H.FD)("div",{css:vr,children:[(0,H.Y)("input",{id:m,"aria-invalid":h?"true":"false","aria-describedby":h?`${i}Error`:m,autoComplete:"off",type:d,...u,...r(i,{validate:s,onChange:u.onChange,onBlur:u.onBlur,...o&&{required:p("steps.finish.upload.validation-error-required")}}),css:(0,a.AH)({display:"block",width:"100%",borderRadius:4,border:`1px solid ${h?v.lm.danger4:v.lm.neutral30}`,backgroundColor:v.lm.neutral00,color:v.lm.neutral70,padding:"8px 16px",...(0,v.Y$)({offset:-1})},"","")}),h&&(0,H.Y)(br,{id:`${i}Error`,children:h.message})]})]})},br=e=>{let{id:t,children:r}=e;return(0,H.Y)("div",{id:t,css:(0,a.AH)({backgroundColor:v.lm.danger1,color:v.lm.danger5,marginTop:4,borderRadius:4,padding:"6px 12px",lineHeight:1.2},"",""),children:r})};var xr={name:"cn3xcj",styles:"margin-bottom:12px"};const wr=e=>{let{formProps:t,showOpencastSection:r,errors:n}=e;const{t:i,i18n:s}=(0,c.Bd)(),d=(0,lt.Z1)(),{scheme:u}=(0,o.Ut)(),p=(0,I.t0)().upload?.seriesId,[h,m]=(0,l.useState)(null),g=(0,l.useRef)(null);(0,l.useEffect)((()=>{m(null),d.getSeries().then((e=>{const t=[...e.entries()].map((e=>{let[t,r]=e;return{value:t,label:r}}));if(t.sort(((e,t)=>e.label.localeCompare(t.label,s.language,{sensitivity:"base"}))),p){const r=e.get(p),n={label:r??i("steps.finish.upload.series-unknown"),value:p};null==r&&t.push(n),g.current?.setValue(n,"select-option")}m(t)}),(e=>{console.log("Error fetching series: ",e),m("error")}))}),[d]);const f=(0,l.useId)(),b=(0,l.useId)(),x="error"===h;return(0,H.FD)("div",{css:xr,children:[(0,H.Y)("label",{htmlFor:f,css:(0,a.AH)({display:"block",fontWeight:700,color:v.lm.neutral70,margin:"4px 0",fontSize:14},"",""),children:i("steps.finish.upload.label-series")}),(0,H.Y)(or.Ay,{id:f,ref:g,options:h&&"error"!==h?h:[],isLoading:null===h,isDisabled:"error"===h,isClearable:!0,isSearchable:!0,onChange:e=>t.onChange(e?.value),onBlur:t.onBlur,"aria-invalid":x?"true":"false","aria-describedby":x?b:f,placeholder:i("steps.finish.upload.series-placeholder"),loadingMessage:()=>i("steps.finish.upload.series-loading"),noOptionsMessage:()=>i("steps.finish.upload.series-none"),styles:yr(u.startsWith("dark"),u.endsWith("high-contrast")),theme:e=>({...e,colors:{...e.colors,danger:v.lm.danger0,primary:v.lm.focus,neutral0:v.lm.neutral00,neutral5:v.lm.neutral15,neutral10:v.lm.neutral20,neutral20:v.lm.neutral30,neutral30:v.lm.neutral40,neutral40:v.lm.neutral50,neutral50:v.lm.neutral50,neutral60:v.lm.neutral60,neutral70:v.lm.neutral70,neutral80:v.lm.neutral80,neutral90:v.lm.neutral90}})}),x&&(0,H.FD)(br,{id:b,children:[i("steps.finish.upload.series-fetch-error"),r&&" "+i("steps.finish.upload.series-connection-settings-hint")]}),n.series&&(0,H.Y)(br,{id:b,children:n.series.message})]})},yr=(e,t)=>({control:(e,t)=>({...e,backgroundColor:v.lm.neutral00,paddingLeft:8,...!t.isFocused&&{borderColor:v.lm.neutral30},...t.isFocused&&{boxShadow:`0 0 0 1.5px ${v.lm.focus}`}}),input:e=>({...e,color:v.lm.neutral80,padding:"4px 0"}),placeholder:e=>({...e,color:v.lm.neutral60}),singleValue:e=>({...e,color:v.lm.neutral90}),menuList:e=>({...e,padding:0}),menu:r=>({...r,...e&&{outline:`1px solid ${v.lm.neutral20}`},...t&&{outline:`1px solid ${v.lm.neutral90}`},backgroundColor:e?v.lm.neutral10:v.lm.neutral05,overflow:"hidden"}),option:(r,n)=>({cursor:"default",padding:"6px 10px",borderLeft:`4px solid ${n.isSelected?v.lm.focus:"transparent"}`,...t&&n.isFocused&&{outline:`2px solid ${v.lm.neutral90}`,outlineOffset:-3},...(n.isFocused||n.isSelected)&&!t&&{backgroundColor:e?v.lm.neutral25:v.lm.neutral10}})});var Yr={name:"1j389vi",styles:"font-weight:700"},kr={name:"zjik7",styles:"display:flex"},Sr={name:"82a6rk",styles:"flex:1"};const Cr=e=>{let{currentProgress:t,secondsLeft:r}=e;const{t:n,i18n:i}=(0,c.Bd)(),o=Math.min(100,100*t).toLocaleString(i.language,{minimumFractionDigits:1,maximumFractionDigits:1});let s;return s=null===r?null:r<4?n("steps.finish.upload.time.a-few-seconds"):r<45?`${r} ${n("steps.finish.upload.time.seconds")}`:r<90?n("steps.finish.upload.time.a-minute"):r<2700?`${Math.round(r/60)} ${n("steps.finish.upload.time.minutes")}`:r<5400?n("steps.finish.upload.time.an-hour"):r<86400?`${Math.round(r/3600)} ${n("steps.finish.upload.time.hours")}`:null,(0,H.FD)(Rr,{children:[(0,H.Y)("div",{css:Yr,children:n("steps.finish.upload.currently-uploading")}),(0,H.Y)("div",{css:(0,a.AH)({marginTop:16,marginBottom:8,height:6,borderRadius:3,backgroundColor:v.lm.neutral05,overflow:"hidden"},"",""),children:(0,H.Y)("div",{css:(0,a.AH)({width:100*t+"%",height:"100%",backgroundColor:v.lm.accent5},"","")})}),(0,H.FD)("div",{css:kr,children:[(0,H.FD)("div",{children:[o,"%"]}),(0,H.Y)("div",{css:Sr}),(0,H.Y)("div",{children:s&&(0,H.FD)(c.x6,{i18nKey:"steps.finish.upload.time.left",children:[{time:s}," left"]})})]})]})};var Dr={name:"1j389vi",styles:"font-weight:700"};const Ar=()=>{const{t:e}=(0,c.Bd)();return(0,H.FD)(Rr,{children:[(0,H.Y)("div",{css:Dr,children:e("steps.finish.upload.complete")}),(0,H.Y)("div",{css:(0,a.AH)({fontSize:50,margin:24,lineHeight:0,color:v.lm.accent5},"",""),children:(0,H.Y)(C.c9S,{})}),(0,H.Y)("div",{children:e("steps.finish.upload.complete-explanation")})]})},Rr=e=>{let{children:t}=e;return(0,H.Y)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral10,fontSize:14,marginTop:24,padding:24,borderRadius:6,textAlign:"center"},"",""),children:t})};var Er={name:"s8j37n",styles:"height:calc(35%)"},Hr={name:"1ya0myq",styles:"height:calc(65%)"};const Fr=e=>{let{goToPrevStep:t,goToFirstStep:r}=e;const{t:n}=(0,c.Bd)(),{recordings:i,upload:s}=(0,f.pv)(),l=(0,f.wA)(),u=(0,I.t0)(),p=i.every((e=>e.downloaded)),h=("uploaded"===s.state||p)&&"uploading"!==s.state,m="not_uploaded"!==s.state||p,g={label:n("steps.finish.new-recording"),icon:(0,H.Y)(C.vAB,{}),onClick:()=>{window.confirm(n("steps.finish.new-recording-warning"))&&(l({type:"RESET"}),r())}},v=Or(u),b=v?{label:n("steps.finish.finish-button"),disabled:!h,popoverEntries:[g,{label:u.return?.label?n("steps.finish.return-to",{label:u.return.label}):n("steps.finish.return-to-no-label"),href:v,icon:(0,H.Y)(d.q_G,{})}]}:{disabled:!h,...g};return De(ke.finish.startNewRecording,g.onClick,{enabled:h}),(0,H.FD)(_e,{title:n("steps.finish.label"),prevButton:m?void 0:{onClick:t},nextButton:b,children:[(0,H.Y)("div",{css:Er}),(0,H.FD)("div",{css:(0,a.AH)({display:"flex",justifyContent:"center",alignItems:"start",gap:16,[(0,o.pi)(700)]:{flexDirection:"column",alignItems:"center"}},"",""),children:[(0,H.Y)(Lr,{title:n("steps.finish.upload.label"),children:(0,H.Y)(dr,{})}),(0,H.Y)(Lr,{title:n("steps.finish.save-locally.label"),children:(0,H.Y)(ir,{})})]}),(0,H.Y)("div",{css:Hr})]})};var Tr={name:"15ara9j",styles:"text-align:center;font-size:20px;font-weight:700;margin-bottom:12px"};const Lr=e=>{let{title:t,children:r}=e;const{isHighContrast:n}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({maxWidth:420,width:"100%",backgroundColor:v.lm.neutral05,boxShadow:n?"none":"0 4px 16px var(--shadow-color)",border:`1px solid ${v.lm.neutral15}`,padding:"24px 32px",borderRadius:6,minHeight:330},"",""),children:[(0,H.Y)("h2",{css:Tr,children:t}),r]})},Or=e=>{if(!e.return?.target)return null;let t;try{t=new URL(e.return.target,window.location.href)}catch{return null}return![window.location.hostname,...e.return?.allowedDomains||[]].some((e=>t.hostname===e))||"https:"!==t.protocol&&"http:"!==t.protocol?null:e.return.target},Br=e=>({display:"flex",alignItems:"center",padding:"8px 12px",gap:12,borderRadius:8,textDecoration:"none",position:"relative",":not([disabled])":{color:v.lm.neutral05,cursor:"pointer",backgroundColor:v.lm.accent7,":hover":{backgroundColor:v.lm.accent8,...e&&{backgroundColor:v.lm.neutral15,outline:`2px solid ${v.lm.accent8}`,color:v.lm.neutral20}}},"&[disabled]":{backgroundColor:v.lm.neutral15,color:v.lm.neutral70},...(0,v.Y$)({offset:1})}),zr=(e,t)=>{const r=e=>{const r=e<10?1:0;return e.toLocaleString(t.language,{minimumFractionDigits:r,maximumFractionDigits:r})};return e<1e3?`${e} B`:e<999500?`${r(e/1e3)} KB`:e<9995e5?`${r(e/1e6)} MB`:`${r(e/1e9)} GB`},Ur=["video-select","audio-select","recording","review","finish"],Ir=e=>Ur.indexOf(e),Pr=e=>{let{inert:t}=e;const[r,n]=(0,l.useState)("video-select"),i={goToNextStep:()=>n((0,o.d6)(Ur[Ir(r)+1])),goToPrevStep:()=>n((0,o.d6)(Ur[Ir(r)-1])),goToFirstStep:()=>n("video-select")};return(0,H.FD)("main",{inert:t?"":null,css:(0,a.AH)({display:"flex",flex:1,backgroundColor:v.lm.neutral10,[(0,o.pi)(v.LO.large)]:{flexDirection:"column-reverse"}},"",""),children:[(0,H.Y)($r,{currentStep:r}),(0,o.YW)(r,{"video-select":()=>(0,H.Y)(Xe,{...i}),"audio-select":()=>(0,H.Y)(at,{...i}),recording:()=>(0,H.Y)(bt,{...i}),review:()=>(0,H.Y)(Qt,{...i}),finish:()=>(0,H.Y)(Fr,{...i})})]})},$r=e=>{let{currentStep:t}=e;const{t:r}=(0,c.Bd)(),{isHighContrast:n}=(0,o.Ut)(),i=Ir(t),s=[r("steps.video.label"),r("steps.audio.label"),r("steps.record.label"),r("steps.review.label"),r("steps.finish.label")],l="calc(8px + max(0px, 20% - 44px))";return(0,H.Y)("div",{css:(0,a.AH)({position:"relative",flexShrink:"0",backgroundColor:v.lm.neutral05,...n&&{borderRight:`1px solid ${v.lm.neutral90}`},[(0,o.aO)(v.LO.large)]:{width:160,minWidth:160},[(0,o.pi)(v.LO.large)]:{height:42}},"",""),children:(0,H.FD)("div",{css:(0,a.AH)({position:"absolute",display:"flex",justifyContent:"space-between",[(0,o.aO)(v.LO.large)]:{flexDirection:"column",left:8,top:l,bottom:l},[(0,o.pi)(v.LO.large)]:{flexDirection:"row",top:8,left:l,right:l}},"",""),children:[s.map(((e,t)=>{let r;return r=tl.createElement("svg",qr({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24"},e),Mr||(Mr=l.createElement("rect",{width:22,height:14,x:1,y:5,rx:1,ry:1})),jr||(jr=l.createElement("path",{d:"M6 9h.001M10 9zM14 9zM18 9h.001M8 12zM12 12zM16 12h.001M6 15h12"}))),Kr=[{short:"en",long:"English",rtl:!1},{short:"de",long:"Deutsch",rtl:!1},{short:"nl",long:"Nederlands",rtl:!1},{short:"es",long:"Español",rtl:!1},{short:"fa",long:"فارسی",rtl:!0},{short:"fr",long:"Français",rtl:!1},{short:"sl",long:"Slovenščina",rtl:!1},{short:"zh",long:"简体中文",rtl:!1}];const Vr=e=>{let{setOverlayBoxState:t,inert:r}=e;const{scheme:n,isHighContrast:i}=(0,o.Ut)();return(0,H.FD)("header",{inert:r?"":null,css:(0,a.AH)({backgroundColor:(0,o.YW)(n,{light:()=>v.lm.neutral60,dark:()=>v.lm.neutral20,"dark-high-contrast":()=>"black","light-high-contrast":()=>"black"}),color:i?"white":"inherit",height:"var(--header-height)",display:"flex",justifyContent:"space-between",..."dark-high-contrast"===n?{borderBottom:"1px solid white"}:{paddingBottom:1}},"",""),children:[(0,H.Y)(Gr,{}),(0,H.Y)(Xr,{setOverlayBoxState:t})]})},Gr=()=>{const e=e=>_r.h.publicPath+e;return(0,H.FD)("picture",{css:(0,a.AH)({height:"100%",display:"flex",opacity:"dark"===(0,o.Ut)().scheme?.8:1,paddingLeft:8,alignItems:"center","> *":{height:"calc(100% - 12px)"},[(0,o.pi)(410)]:{paddingLeft:0}},"",""),children:[(0,H.Y)("source",{media:"(min-width: 920px)",srcSet:e("logo-wide.svg")}),(0,H.Y)("img",{src:e("logo-narrow.svg"),alt:"Opencast Studio Logo"})]})},Xr=e=>{let{setOverlayBoxState:t}=e;return(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:16,height:"100%",alignItems:"center",paddingRight:24,[(0,o.pi)(410)]:{gap:2,paddingRight:8}},"",""),children:[(0,H.Y)(Qr,{}),(0,H.Y)(Zr,{}),(0,H.Y)(en,{open:()=>t("shortcuts")}),(0,H.Y)(Jr,{open:()=>t("info")})]})},Qr=()=>{const{t:e,i18n:t}=(0,c.Bd)(),r=e=>e===t.resolvedLanguage,n=Object.values(Kr).map((e=>(0,o.GK)({checked:r(e.short),children:(0,H.Y)(H.FK,{children:e.long}),onClick:()=>{r(e.short)||t.changeLanguage(e.short)}}))),i=e("header.language.label");return(0,H.Y)(o.Tc,{menu:{label:i,items:n,breakpoint:v.LO.small},children:(0,H.Y)(tn,{icon:(0,H.Y)(Wr.sIu,{}),label:i})})},Zr=()=>{const{t:e}=(0,c.Bd)(),{scheme:t,isAuto:r,update:n}=(0,o.Ut)(),i=r?"auto":t,s=["auto","light","dark","light-high-contrast","dark-high-contrast"].map((t=>(0,o.GK)({checked:i===t,children:(0,H.Y)(H.FK,{children:e(`header.theme.${t}`)}),onClick:()=>n(t)})));return(0,H.Y)(o.Tc,{menu:{label:e("header.theme.label"),items:s,breakpoint:v.LO.small},children:(0,H.Y)(tn,{icon:(0,H.Y)(d.hkc,{}),label:e("header.theme.label")})})},Jr=e=>{let{open:t}=e;const{t:r}=(0,c.Bd)();return(0,H.Y)(tn,{onClick:t,icon:(0,H.Y)(d.S8s,{}),label:r("header.info.label")})},en=e=>{let{open:t}=e;const{t:r}=(0,c.Bd)();De(ke.general.showOverview,t,{ignoreModifiers:!0});const n=Ae();return(0,H.Y)(tn,{onClick:t,icon:(0,H.Y)(Nr,{}),label:r("shortcuts.label"),children:n&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,left:20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:ke.general.showOverview})})})},tn=(0,l.forwardRef)(((e,t)=>{let{icon:r,label:n,children:i,...s}=e;const{scheme:l,isHighContrast:d}=(0,o.Ut)();return(0,H.FD)(o.b1,{...s,ref:t,css:(0,a.AH)({position:"relative",display:"flex",gap:8,alignItems:"center",fontSize:16,fontFamily:"inherit",fontWeight:500,color:(0,o.YW)(l,{light:()=>v.lm.neutral05,dark:()=>v.lm.neutral90,"dark-high-contrast":()=>"white","light-high-contrast":()=>"white"}),borderRadius:6,padding:"6px 8px",":hover, :active":{outline:`2px solid ${d?"#aaa":v.lm.neutral50}`,backgroundColor:(0,o.YW)(l,{light:()=>v.lm.neutral70,dark:()=>v.lm.neutral10,"dark-high-contrast":()=>"none","light-high-contrast":()=>"none"})},...(0,v.Y$)({},(0,o.YW)(l,{light:()=>v.lm.neutral10,dark:()=>v.lm.accent8,"dark-high-contrast":()=>"#aaa","light-high-contrast":()=>"#aaa"})),"> svg":{fontSize:22,"@media (max-width: 770px)":{fontSize:26}}},"",""),children:[r,(0,H.Y)("span",{css:(0,a.AH)({"@media (max-width: 770px)":{display:"none"}},"",""),children:n}),i]})}));var rn={name:"tnb0o9",styles:"svg{margin-right:8px;vertical-align:middle;}"};const nn=e=>{let{close:t}=e;return(0,H.Y)(dn,{maxWidth:800,close:t,title:"Opencast Studio",children:(0,H.FD)("article",{css:(0,a.AH)({p:{margin:"8px 0"},h2:{marginTop:24,marginBottom:4,fontSize:21},a:{color:v.lm.accent7,"&:hover":{textDecoration:"none",color:v.lm.accent8}}},"",""),children:[(0,H.FD)("p",{children:["A web-based recording studio for ",(0,H.Y)("a",{href:"https://opencast.org",children:"Opencast"}),"."]}),(0,H.Y)("p",{children:"Opencast Studio allows you to record your camera, your display and your microphoneʼs audio. You can then either download your recordings or upload them directly to an Opencast instance (usually the one of your university)."}),(0,H.FD)("p",{children:["This is free software under the terms of the"," ",(0,H.Y)("a",{href:"https://github.com/elan-ev/opencast-studio/blob/master/LICENSE",children:"MIT License"})," ","developed by the ",(0,H.Y)("a",{href:"https://elan-ev.de",children:"elan e.V."})," in cooperation with the ",(0,H.Y)("a",{href:"https://ethz.ch",children:"ETH Zürich"}),"."]}),(0,H.Y)("h2",{children:"How it works"}),(0,H.Y)("p",{children:"Opencast Studio uses the recording capabilities built into modern browsers to record audio and video streams. The recording happens in the userʼs browser and no server is involved in the recording."}),_r.h.showLegalNotices&&(0,H.FD)(l.Fragment,{children:[(0,H.Y)("h2",{children:"Support"}),(0,H.FD)("p",{children:["If you are experiencing any difficulties or found any bugs, please take a look at the"," ",(0,H.Y)("a",{href:"https://github.com/elan-ev/opencast-studio/issues",children:"issue tracker on GitHub"}),". Before filing a new issue, please check if one about your topic already exists. We regularly check incoming issues and do our best to address bugs in a timely manner."]}),(0,H.FD)("p",{children:["If you are interested in additional development or want to support the development of Opencast Studio, please contact"," ",(0,H.Y)("a",{href:"mailto:office@elan-ev.de",children:"office@elan-ev.de"}),"."]})]}),(0,H.Y)("h2",{children:"Credits"}),(0,H.Y)("p",{children:"Thanks to the following people and institutions for contributing to this project:"}),(0,H.FD)("ul",{children:[(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/slampunk",children:"Duncan Smith"})," for starting this project"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/cilt-uct",children:"University of Cape Town (CILT)"})," ","for letting Duncan start the project"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://ethz.ch",children:"ETH Zürich"})," for financial support and testing"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/elan-ev",children:"elan e.V."})," for the re-implementation and the ongoing development"]}),(0,H.Y)("li",{children:"And many members from the Opencast community who helped along the way."})]}),_r.h.showLegalNotices&&(0,H.FD)(H.FK,{children:[(0,H.Y)("h2",{children:"elan e.V."}),(0,H.Y)("p",{children:"The e-learning academic network (elan e.V.) is a German non-profit organization supporting higher-education organizations in all matters related to e-learning. Our services include practical tips about how to use digital technologies in education, legal advice and development of free, open-source software to support education."}),(0,H.Y)("h3",{children:"Contact"}),(0,H.FD)("p",{children:["Dr. Norbert Kleinefeld, Geschäftsführer",(0,H.Y)("br",{}),"Karlstr. 23",(0,H.Y)("br",{}),"D-26123 Oldenburg"]}),(0,H.FD)("p",{css:rn,children:[(0,H.Y)(d.VeH,{}),(0,H.Y)("a",{href:"https://elan-ev.de",children:"elan-ev.de"}),(0,H.Y)("br",{}),(0,H.Y)(d.pHD,{}),(0,H.Y)("a",{href:"mailto:office@elan-ev.de",children:"kontakt@elan-ev.de"}),(0,H.Y)("br",{}),(0,H.Y)(d.QFc,{}),(0,H.Y)("a",{href:"tel:+4944199866610",children:"+49 441 998 666 10"})]}),(0,H.FD)("p",{children:["Registergericht: Amtsgericht Oldenburg",(0,H.Y)("br",{}),"Registernummer: VR 200644",(0,H.Y)("br",{}),"USt.-ID-Nr.: DE 265901392"]})]}),(0,H.Y)("h2",{children:"Version"}),(0,H.FD)("p",{children:["Build date ",_r.h.buildDate??"?",", commit"," ",(0,H.Y)("a",{"aria-label":"Git commit on GitHub",href:"https://github.com/elan-ev/opencast-studio/commit/"+_r.h.commitSha,children:_r.h.commitSha??"?"}),"."]})]})})},on=()=>{const[e,t]=(0,l.useState)("none"),r=()=>t("none");De(ke.general.closeOverlay,r);const n="none"!==e;return(0,H.FD)("div",{css:(0,a.AH)({"--header-height":"64px",display:"flex",flexDirection:"column",height:"100%",..."none"!==e&&{overflowY:"hidden"}},"",""),children:[(0,H.Y)(Vr,{inert:n,setOverlayBoxState:t}),(0,o.YW)(e,{none:()=>null,info:()=>(0,H.Y)(nn,{close:r}),shortcuts:()=>(0,H.Y)(He,{close:r})}),(0,H.Y)(Pr,{inert:n})]})};var sn={name:"4dbrlo",styles:"position:absolute;top:0;left:0;right:0;bottom:0;padding:32px 8px;z-index:800;background-color:rgba(0, 0, 0, 0.3);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;@media (min-height: 400px){padding-top:calc(var(--header-height) + 32px);}"},an={name:"1ere486",styles:"margin-bottom:8px;font-size:26px"},ln={name:"1suo034",styles:"padding-right:16px;overflow-y:auto"};const dn=e=>{let{close:t,title:r,children:n,maxWidth:i}=e;const s="light"===(0,o.Ut)().scheme,{isHighContrast:c}=(0,o.Ut)(),u=(0,l.useRef)(null);(0,o.gH)(u,t);const p=s||c?v.lm.neutral05:v.lm.neutral15;return(0,H.Y)("div",{role:"dialog","aria-modal":"true",css:sn,children:(0,H.FD)("div",{ref:u,css:(0,a.AH)({position:"relative",backgroundColor:p,borderRadius:8,padding:"24px 24px 32px 48px",width:"82%",flex:"0 1 auto",minHeight:0,maxWidth:i,display:"flex",flexDirection:"column",boxShadow:c?"none":"0 4px 16px var(--shadow-color))",outline:c?"2px solid var(--color-neutral90)":"none",[(0,o.pi)(850)]:{padding:24,paddingLeft:32},[(0,o.pi)(480)]:{width:"95%",padding:"12px 20px"}},"",""),children:[(0,H.Y)(d.yGN,{onClick:t,css:(0,a.AH)({position:"absolute",top:8,right:8,backgroundColor:p,borderRadius:"50%",fontSize:40,padding:4,cursor:"pointer"},"","")}),(0,H.Y)("h1",{css:an,children:r}),(0,H.Y)("div",{css:ln,children:n})]})})},cn=()=>(0,H.FD)(H.FK,{children:[(0,H.Y)(a.mL,{styles:pn}),(0,H.Y)(a.mL,{styles:un})]}),un={name:"cvwxji",styles:":root{--min-page-width:320px;}body{font-family:'Roboto Flex Variable', 'Vazirmatn Variable', sans-serif;font-weight:400;line-height:1.5;font-size:16px;min-width:var(--min-page-width);}"},pn={name:"wn0kj0",styles:"*, *::before, *::after{box-sizing:border-box;}body, h1, h2, h3, h4, p, li, figure, figcaption, blockquote, dl, dd, pre{margin:0;}html, body, body > #root{height:100%;}a{text-decoration-skip-ink:auto;}input, button, textarea, select{font:inherit;margin:0;}"},hn=()=>(0,H.FD)(H.FK,{children:[(0,H.Y)(cn,{}),(0,H.Y)(mn,{}),(0,H.Y)(o.Sv,{children:(0,H.Y)(on,{})})]}),mn=()=>{const{recordings:e,upload:t}=(0,f.pv)(),r=e.every((e=>e.downloaded)),n="uploaded"===t.state,i="uploading"===t.state;return(0,s.S)((t=>{(e?.length>0&&!n&&!r||i)&&t.preventDefault()})),null}}}]); +"use strict";(self.webpackChunkopencast_studio=self.webpackChunkopencast_studio||[]).push([[963],{963:function(e,t,r){r.r(t),r.d(t,{App:function(){return hn}});var n,i,o=r(2104),s=r(3645),a=r(1699),l=r(6540),d=r(2644),c=r(2389);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"step-current_svg__feather step-current_svg__feather-circle",viewBox:"0 0 24 24"},e),n||(n=l.createElement("circle",{cx:12,cy:12,r:10})),i||(i=l.createElement("circle",{cx:12,cy:12,r:3,fill:"currentColor"})));function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",className:"step-done_svg__feather step-done_svg__feather-circle",viewBox:"0 0 24 24"},e),p||(p=l.createElement("path",{d:"M12 1A11 11 0 0 0 1 12a11 11 0 0 0 11 11 11 11 0 0 0 11-11A11 11 0 0 0 12 1m5 7a1 1 0 0 1 .707.293 1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414 1 1 0 0 1 1.414 0L10 14.586l6.293-6.293A1 1 0 0 1 17 8"}))),v=r(2268),f=r(3015);const b=(e,t,r)=>{const n=e&&{max:e},i=("number"==typeof t?.height?t.height:t.height?.ideal)??r;return{height:{...n,...i&&(e?{ideal:Math.min(i,e)}:{ideal:i})}}};async function x(e,t){try{const r=await navigator.mediaDevices.getUserMedia({audio:!t||{deviceId:t},video:!1});r.getTracks().forEach((t=>{t.onended=()=>{e({type:"AUDIO_UNEXPECTED_END"})}})),e({type:"SHARE_AUDIO",stream:r})}catch(t){console.error("Error: "+t),e({type:"BLOCK_AUDIO"})}}async function w(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=t.display?.maxFps?{frameRate:{max:t.display.maxFps}}:{},i=b(t.display?.maxHeight,r),o={video:{cursor:"always",...n,...r,...i},audio:!0};try{const t=await navigator.mediaDevices.getDisplayMedia(o);t.getTracks().forEach((t=>{t.onended=()=>{e({type:"DISPLAY_UNEXPECTED_END"})}})),e({type:"SHARE_DISPLAY",stream:t})}catch(t){console.error("Error: "+t),e({type:"BLOCK_DISPLAY"})}}async function y(e,t,r){const n=t.camera?.maxFps?{frameRate:{max:t.camera.maxFps}}:{},i=b(t.camera?.maxHeight,r,1080),o={video:{facingMode:"user",...r,...n,...i},audio:!1};try{const t=await navigator.mediaDevices.getUserMedia(o);t.getTracks().forEach((t=>{t.onended=()=>{e({type:"USER_UNEXPECTED_END"})}})),e({type:"SHARE_USER",stream:t})}catch(t){console.error("Error: "+t),e({type:"BLOCK_USER"})}}function Y(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_AUDIO"})}function k(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_DISPLAY"})}function S(e,t){e?.getTracks().forEach((e=>e.stop())),t({type:"UNSHARE_USER"})}var C=r(5178),D=r(376),A=r.n(D),R=r(2017),E=r.n(R),H=r(3747);const F=l.createContext(null),T=()=>(0,v.se)(F,"useVideoBoxResize"),L=e=>{let{gap:t=0,minWidth:r=180,minHeight:n=140,children:i}=e;const{ref:s,width:d=1,height:c=1}=A()(),[,u]=(0,l.useState)(0),p=(0,l.useRef)(i.map((()=>null))),h=e=>{e.forEach(((e,t)=>{e&&(p.current[t]=e)}))};let m=i.map((e=>e.dimensions()));h(m);const g=()=>{const e=i.map((e=>e.dimensions()));E()(e,m)||(m=e,h(m),u((e=>e+1)))},v=e=>null==e?16/9:e[0]/e[1];switch(i.length){case 1:{const e=i[0],t=v(p.current[0]);let o,l;return d>c*t?(l=c,o=c*t):(o=d,l=d/t),(0,H.Y)(F.Provider,{value:g,children:(0,H.Y)("div",{ref:s,css:(0,a.AH)({flex:"1 0 0",minHeight:n,display:"flex"},"",""),children:(0,H.Y)("div",{css:(0,a.AH)({...!e.autoSize&&{height:l,width:o},minWidth:`${r}px`,margin:"auto"},"",""),children:e.body})})})}case 2:{const e=p.current.map((e=>v(e))),{rowWidths:o,rowHeights:l}=(()=>{const r=d-t,n=e[0]+e[1];if(r>c*n)return{rowHeights:Array(2).fill(c),rowWidths:e.map((e=>c*e))};{const t=r/n;return{rowHeights:i.map((()=>t)),rowWidths:e.map((e=>t*e))}}})(),{colWidths:u,colHeights:h}=(()=>{const r=c-t,n=1/(1/e[0]+1/e[1]);if(d>r*n){const t=r*n;return{colHeights:i.map(((r,n)=>t/e[n])),colWidths:Array(2).fill(t)}}return{colHeights:i.map(((t,r)=>d/e[r])),colWidths:Array(2).fill(d)}})();let m,f,b;return o[0]*l[0]+o[1]*l[1]>u[0]*h[0]+u[1]*h[1]?(b="row",m=o,f=l):(b="column",m=u,f=h),(0,H.Y)(F.Provider,{value:g,children:(0,H.FD)("div",{ref:s,css:(0,a.AH)({flex:"1 0 0",display:"flex",gap:t,flexDirection:b,justifyContent:"space-between",minHeight:n},"",""),children:[(0,H.Y)("div",{css:(0,a.AH)({...!i[0].autoSize&&{height:f[0],width:m[0]},minWidth:`${r}px`,margin:"auto"},"",""),children:i[0].body}),(0,H.Y)("div",{css:(0,a.AH)({...!i[1].autoSize&&{height:f[1],width:m[1]},minWidth:`${r}px`,margin:"auto"},"",""),children:i[1].body})]})})}default:return(0,o.jr)("Internal error: too few or too many video streams")}};var O={name:"1eeok3z",styles:"display:block;font-size:17px;margin-bottom:8px"},B={name:"b1vrpl",styles:"font-size:15px;max-width:100ch"},z={name:"1t84eec",styles:"font-size:15px;max-width:100ch;margin-top:8px"};const U=e=>{let{title:t,body:r,extraBody:n,...i}=e;return(0,H.FD)("div",{"aria-live":"polite",css:(0,a.AH)({padding:"16px 22px",margin:12,borderRadius:8,backgroundColor:v.lm.danger1,color:v.lm.danger5},"",""),...i,children:[t&&(0,H.Y)("strong",{css:O,children:t}),(0,H.Y)("div",{css:B,children:r}),n&&(0,H.Y)("div",{css:z,children:n})]})};var I=r(6606);const P=l.forwardRef(((e,t)=>(0,H.Y)("select",{ref:t,...e,css:(0,a.AH)({position:"relative",borderRadius:6,padding:"6px 12px",paddingRight:32,backgroundColor:"transparent",border:`1px solid ${v.lm.neutral25}`,appearance:"none",background:`url("data:image/svg+xml;utf8,") no-repeat`,backgroundSize:12,backgroundPosition:"calc(100% - 12px) center",option:{backgroundColor:v.lm.neutral05,color:v.lm.neutral90},...(0,v.Y$)({offset:-1})},"",""),children:e.children}))),$=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{..."deviceId"in e&&{deviceId:{[t?"exact":"ideal"]:e.deviceId}},..."aspectRatio"in e&&{aspectRatio:{ideal:e.aspectRatio?j(e.aspectRatio):void 0}},..."quality"in e&&{height:{ideal:e.quality?W(e.quality):void 0}}}},M=["4:3","16:9"],j=e=>({"4:3":4/3,"16:9":16/9}[e]??void 0),W=e=>{if(/^[0-9]+p$/.test(e))return parseInt(e)},_="ocStudioLastVideoDevice",q="ocStudioCameraAspectRatio",N="ocStudioCameraQuality",K="ocStudioDisplayQuality",V=()=>({deviceId:window.localStorage.getItem(_)??void 0,aspectRatio:window.localStorage.getItem(q)||"auto",quality:window.localStorage.getItem(N)||"auto"}),G=()=>({quality:window.localStorage.getItem(K)||"auto"});var X={name:"1v2iei1",styles:"position:absolute;right:8px;bottom:8px"},Q={name:"13h0jku",styles:"max-width:min(670px, 100vw - 16px)"};const Z=e=>{let{isDesktop:t,stream:r}=e;const n=(0,f.wA)(),i=(0,I.t0)(),s=(0,l.useRef)(null),{t:u}=(0,c.Bd)(),p="light"===(0,o.Ut)().scheme,{isHighContrast:h}=(0,o.Ut)(),m=t?G():V(),g=e=>{const o={...m,...e},s=$(o,!0),a=(e,t)=>{null!=t&&window.localStorage.setItem(e,t)};t?(a(K,o.quality),k(r,n),w(n,i,s)):(a(_,o.deviceId),a(q,o.aspectRatio),a(N,o.quality),S(r,n),y(n,i,s))};(0,l.useEffect)((()=>{const e=ae(r);!t&&e&&window.localStorage.setItem(_,e)}));const[b,x]=(0,l.useState)(!1),Y=u("steps.video.video-settings-"+(b?"close":"open"));return(0,H.FD)(H.FK,{children:[(0,H.Y)("div",{css:(0,a.AH)({display:b?"initial":"none",position:"absolute",top:12,left:0,right:0,textAlign:"center"},"",""),children:(0,H.Y)("span",{css:(0,a.AH)({color:p?v.lm.neutral70:v.lm.neutral90,backgroundColor:v.lm.neutral05,borderRadius:"10px",padding:"4px 8px",boxShadow:h?"none":"0 0 12px rgba(0, 0, 0, 30%)"},"",""),children:J(r)})}),(0,H.FD)(o.K1,{ref:s,placement:"top-end",ariaRole:"dialog",open:b,onClose:()=>x(!1),borderRadius:8,viewPortMargin:8,css:X,children:[(0,H.Y)(o.vh,{children:(0,H.Y)(o.kR,{placement:"bottom",tooltip:Y,children:(0,H.Y)(o.b1,{onClick:()=>x((e=>!e)),"aria-label":Y,css:(0,a.AH)({...we,fontSize:26,"> svg":{transition:"transform 0.2s"},"&:hover > svg, &:focus > svg":{transform:b?"none":"rotate(45deg)"}},"",""),children:b?(0,H.Y)(d.yGN,{}):(0,H.Y)(d.VSk,{})})})}),(0,H.FD)(o.DE,{css:Q,borderWidth:p?0:1,shadowBlur:16,padding:18,children:[(0,H.FD)("div",{css:(0,a.AH)({display:"grid",width:"100%",gridTemplateColumns:"auto 1fr",gridGap:"14px 32px",paddingLeft:4,[(0,o.pi)(450)]:{columnGap:8},[(0,o.pi)(360)]:{gridTemplateColumns:"1fr",rowGap:0},fontSize:14,"@media (min-width: 420px) and (min-height: 440px)":{fontSize:16}},"",""),children:[!t&&(0,H.Y)(oe,{updatePrefs:g,prefs:m,isExpanded:b}),(0,H.Y)(ne,{isDesktop:t,updatePrefs:g,prefs:m,stream:r,settings:i,isExpanded:b})]}),(0,H.Y)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral15,marginTop:8,padding:"8px 12px",fontSize:12,lineHeight:1.25,borderRadius:6,"@media (min-width: 420px) and (min-height: 440px)":{fontSize:14}},"",""),children:(0,H.FD)(c.x6,{i18nKey:"steps.video.preferences-note",children:[(0,H.Y)("strong",{children:"Note:"})," Explanation."]})})]})]})]})},J=e=>{const t=e?.getVideoTracks()?.[0]?.getSettings(),r=t&&t.width&&t.height?`${t.width}×${t.height}`:"",n=t&&t.frameRate?`${t.frameRate} fps`:"";return t?[r,n].join(", "):"..."},ee=e=>{let{children:t}=e;return(0,H.Y)("div",{css:(0,a.AH)({display:"flex",flexDirection:"column",justifyContent:"center",[(0,o.pi)(360)]:{marginTop:4}},"",""),children:t})};var te={name:"1uqn15b",styles:"display:flex;flex-wrap:wrap;gap:6px"};const re=e=>{let{children:t}=e;return(0,H.Y)("div",{css:te,children:t})},ne=e=>{let{isDesktop:t,updatePrefs:r,prefs:n,settings:i}=e;const{t:o}=(0,c.Bd)(),s=e=>r({quality:e}),a=(e=>{const t=[360,480,720,1080,1440,2160].filter((t=>!e||t<=e));return!e||0!==t.length&&t[t.length-1]===e||t.push(e),t.map((e=>`${e}p`))})(t?i.display?.maxHeight:i.camera?.maxHeight),l=t?"desktop":"user";return(0,H.FD)(H.FK,{children:[(0,H.Y)(ee,{children:o("steps.video.quality")}),(0,H.FD)(re,{children:[(0,H.Y)(se,{id:`quality-auto-${l}`,value:"auto",name:`quality-${l}`,label:o("steps.video.quality-auto"),onChange:s,checked:a.every((e=>n.quality!==e))}),a.map((e=>(0,H.Y)(se,{id:`quality-${e}-${l}`,value:e,name:`quality-${l}`,onChange:s,checked:n.quality===e},`${e}-${l}`)))]})]})};var ie={name:"1d3w5wq",styles:"width:100%"};const oe=e=>{let{updatePrefs:t,prefs:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.pv)(),o=ae(i.userStream),s=(0,v.r_)(i.mediaDevices,"videoinput"),a=e=>t({aspectRatio:e});return(0,H.FD)(H.FK,{children:[(0,H.Y)(ee,{children:(0,H.Y)("label",{htmlFor:"sources-video-device",children:n("steps.video.device")})}),(0,H.Y)(re,{children:(0,H.Y)(P,{id:"sources-video-device",value:o,onChange:e=>{return r=e.target.value,t({deviceId:r});var r},css:ie,children:s.map((e=>(0,H.Y)("option",{value:e.deviceId,children:e.label},e.deviceId)))})}),(0,H.Y)(ee,{children:n("steps.video.aspect-ratio")}),(0,H.FD)(re,{children:[(0,H.Y)(se,{id:"ar-auto",value:"auto",name:"aspectRatio",label:n("steps.video.aspect-ratio-auto"),onChange:a,checked:M.every((e=>r.aspectRatio!==e))}),M.map((e=>(0,H.Y)(se,{id:`ar-${e}`,value:e,name:"aspectRatio",onChange:a,checked:r.aspectRatio===e},e)))]})]})},se=e=>{let{id:t,value:r,checked:n,name:i,onChange:s,label:l}=e;const{isHighContrast:d}=(0,o.Ut)();return(0,H.FD)("div",{children:[(0,H.Y)("input",{type:"radio",onChange:e=>s(e.target.value),id:t,value:r,checked:n,name:i,css:(0,a.AH)({display:"none","&+label":{display:"block",border:`1px solid ${v.lm.neutral25}`,lineHeight:1.2,padding:"4px 10px",borderRadius:6,fontWeight:500,cursor:"pointer",":hover":{backgroundColor:v.lm.neutral10,borderColor:v.lm.neutral40,...d&&{outline:`2px solid ${v.lm.accent4}`,borderColor:"transparent"}}},"&:checked+label":{backgroundColor:v.lm.accent6,borderColor:v.lm.accent6,color:v.lm.neutral05,cursor:"default"}},"","")}),(0,H.Y)("label",{tabIndex:0,onKeyDown:e=>("Enter"===e.key||" "===e.key)&&s(r),htmlFor:t,children:l??r})]})},ae=e=>e?.getVideoTracks()?.[0]?.getSettings()?.deviceId,le=e=>{let{inputs:t}=e;const r=(0,o.YW)(t.length,{1:()=>[{body:(0,H.Y)(ce,{input:t[0]}),dimensions:()=>(0,v.VM)(t[0].stream),autoSize:de(t[0])}],2:()=>[{body:(0,H.Y)(ce,{input:t[0]}),dimensions:()=>(0,v.VM)(t[0].stream),autoSize:de(t[0])},{body:(0,H.Y)(ce,{input:t[1]}),dimensions:()=>(0,v.VM)(t[1].stream),autoSize:de(t[1])}]},o.HB);return(0,H.Y)(L,{gap:20,children:r})},de=e=>!1===e.allowed||!!e.unexpectedEnd,ce=e=>{let{input:t}=e;const{isHighContrast:r}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({height:"100%",backgroundColor:v.lm.neutral05,borderRadius:12,position:"relative",...!de(t)&&{boxShadow:r?"none":"0 6px 16px rgba(0, 0, 0, 0.2)"},...r&&{outline:`1px solid ${v.lm.neutral90}`}},"",""),children:[(0,H.Y)(fe,{input:t}),t.stream&&(0,H.FD)(H.FK,{children:[t.isDesktop&&(0,H.Y)(xe,{stream:t.stream}),(0,H.Y)(Z,{isDesktop:t.isDesktop,stream:t.stream})]})]})};var ue={name:"ti75j2",styles:"margin:0"},pe={name:"ti75j2",styles:"margin:0"},he={name:"10jtkcq",styles:"display:flex;flex-direction:column;width:100%;height:100%"},me={name:"r3950p",styles:"flex:1;display:flex;justify-content:center;align-items:center"},ge={name:"bjn8wh",styles:"position:relative"},ve={name:"480t9l",styles:"min-height:0;display:block;width:100%;height:100%;border-radius:12px"};const fe=e=>{let{input:t}=e;const{t:r}=(0,c.Bd)(),{allowed:n,stream:i,unexpectedEnd:s}=t,d=T(),u=(0,l.useRef)(null);if((0,l.useEffect)((()=>{const e=u.current;return e&&(e.srcObject||(e.srcObject=i),e.addEventListener("resize",d)),()=>{e&&e.removeEventListener("resize",d)}}),[i,d]),!i){let e;return e=!1===n||s?(0,H.FD)("div",{children:[!1===n&&(0,H.Y)(U,{css:ue,title:r(`steps.video.${t.isDesktop?"display":"user"}-not-allowed-title`),body:r(`steps.video.${t.isDesktop?"display":"user"}-not-allowed-text`)}),s&&(0,H.Y)(U,{css:pe,body:r("error-lost-video-stream")})]}):(0,H.Y)(o.y$,{size:75,css:(0,a.AH)({color:v.lm.neutral60},"","")}),(0,H.Y)("div",{css:he,children:(0,H.Y)("div",{css:me,children:e})})}return(0,H.Y)("div",{css:ge,children:(0,H.Y)("video",{ref:u,autoPlay:!0,muted:!0,playsInline:!0,css:ve})})};var be={name:"kmthlo",styles:"position:absolute;top:8px;right:8px"};const xe=e=>{let{stream:t}=e;const r=t.getAudioTracks().length;return(0,H.Y)("div",{css:be,children:(0,H.Y)(o.kR,{placement:"top",tooltip:(0,H.FD)(c.x6,{i18nKey:"steps.video."+(r?"display-audio-shared":"display-audio-not-shared"),children:[(0,H.Y)("strong",{children:"Note:"})," Explanation."]}),children:(0,H.FD)("div",{css:(0,a.AH)({...we,fontSize:15},"",""),children:[(0,H.Y)(C.MO8,{})," ",r?(0,H.Y)(C.exc,{}):(0,H.Y)(C.sRF,{})]})})})},we={border:"none",display:"inline-block",backgroundColor:"rgba(0, 0, 0, 0.3)",color:"white",padding:8,backdropFilter:"invert(0.3) blur(4px)",lineHeight:0,borderRadius:10,cursor:"pointer","&:hover, &:focus-visible":{backgroundColor:"rgba(0, 0, 0, 0.5)"},"&:focus-visible":{outline:"5px dashed white",outlineOffset:-2.5}};var ye=r(6933);const Ye=()=>navigator.userAgent.includes("Mac"),ke={general:{showAvailableShortcuts:"Alt; s",showOverview:"?",closeOverlay:"Escape",tab:"Tab",prev:Ye()?"Shift+Mod+left":"Mod+left",next:Ye()?"Shift+Mod+right":"Mod+right"},videoSetup:{selectScreen:"1",selectBoth:"2",selectUser:"3"},audioSetup:{withAudio:"1",withoutAudio:"2"},recording:{startPauseResume:"k; Space"},review:{playPause:"k; Space",forwards5secs:"l; right",backwards5secs:"j; left",forwardsFrame:".",backwardsFrame:",",cutLeft:"n",cutRight:"m",removeCutLeft:"Shift+n",removeCutRight:"Shift+m"},finish:{startNewRecording:"Shift+n",download:"d"}},Se={general:{showAvailableShortcuts:"shortcuts.general.show-available-shortcuts",showOverview:"shortcuts.general.show-overview",closeOverlay:"shortcuts.general.close-overlay",tab:"shortcuts.general.tab-elements",prev:"shortcuts.general.back-button",next:"shortcuts.general.next-button"},videoSetup:{selectScreen:"shortcuts.select-video.select-display",selectBoth:"shortcuts.select-video.select-both",selectUser:"shortcuts.select-video.select-camera"},audioSetup:{withAudio:"shortcuts.select-audio.select-microphone",withoutAudio:"shortcuts.select-audio.select-no-audio"},recording:{startPauseResume:"shortcuts.record.start-pause-resume-recording"},review:{playPause:"shortcuts.review.play-pause",forwards5secs:"shortcuts.review.skip-five",backwards5secs:"shortcuts.review.back-five",forwardsFrame:"shortcuts.review.frame-forward",backwardsFrame:"shortcuts.review.frame-back",cutLeft:"shortcuts.review.cut-left",cutRight:"shortcuts.review.cut-right",removeCutLeft:"shortcuts.review.delete-left",removeCutRight:"shortcuts.review.delete-right"},finish:{startNewRecording:"shortcuts.finish.new-recording",download:"steps.finish.save-locally.label"}},Ce={Escape:"escape",Space:"space",Shift:"shift",Alt:Ye()?"option":"alt",Mod:Ye()?"command":"control"},De=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return(0,ye.vC)(e,t,{splitKey:";",...r},n)},Ae=()=>{const[e,t]=(0,l.useState)(!1),r=e=>{ke.general.showAvailableShortcuts.split(";").some((t=>t.trim().toLowerCase()==e.key.toLowerCase()))&&t(!0)},n=()=>t(!1);return(0,l.useEffect)((()=>(document.addEventListener("keydown",r),document.addEventListener("keyup",n),document.addEventListener("mousedown",n),window.addEventListener("blur",n),()=>{document.removeEventListener("keydown",r),document.removeEventListener("keyup",n),document.removeEventListener("mousedown",n),window.removeEventListener("blur",n)}))),e},Re=e=>{let{shortcut:t,large:r=!1}=e;const{t:n}=(0,c.Bd)();return(0,H.Y)("div",{css:(0,a.AH)({display:"flex",alignItems:"center",gap:4,color:v.lm.neutral70},"",""),children:t.split("+").map(((e,t)=>{let i=e;e in Ce&&(i=n(`shortcuts.keys.${Ce[e]}`));const s=(0,o.YW)(e,{left:()=>(0,H.Y)(d.kRp,{title:i}),right:()=>(0,H.Y)(d.dyV,{title:i}),Mod:()=>Ye()?(0,H.Y)(d.JSe,{title:i}):(0,H.Y)(H.FK,{children:i}),Alt:()=>Ye()?(0,H.Y)(C.z_U,{title:i}):(0,H.Y)(H.FK,{children:i}),Shift:()=>(0,H.Y)(C.Uqt,{size:20,title:i})},(()=>(0,H.Y)(H.FK,{children:i})));return(0,H.FD)(l.Fragment,{children:[0!==t&&"+",(0,H.Y)(Ee,{large:r,monofont:"l"===e,children:s})]},t)}))})},Ee=e=>{let{large:t,monofont:r,children:n}=e;const i="light"===(0,o.Ut)().scheme,{scheme:s,isHighContrast:l}=(0,o.Ut)(),d=(0,o.YW)(s,{light:()=>v.lm.neutral05,dark:()=>v.lm.neutral15,"light-high-contrast":()=>v.lm.neutral05,"dark-high-contrast":()=>v.lm.neutral15});return(0,H.Y)("div",{css:(0,a.AH)({border:`1px solid ${v.lm.neutral50}`,borderRadius:4,padding:"2px 6px",display:"flex",alignItems:"center",justifyContent:"center",height:t?36:30,minWidth:t?36:30,fontSize:16,boxShadow:l?"none":"0 0 6px var(--shadow-color)",backgroundColor:t?d:v.lm.neutral10,color:l||i||!t?v.lm.neutral80:v.lm.neutral90,cursor:"default",...r&&{fontFamily:"monospace"}},"",""),children:n})},He=e=>{let{close:t}=e;const{t:r}=(0,c.Bd)();return(0,H.Y)(dn,{maxWidth:1e3,close:t,title:r("shortcuts.label"),children:Object.entries(ke).map((e=>{let[t,r]=e;return(0,H.Y)(Ue,{groupId:t,group:r},t)}))})},Fe={general:"shortcuts.general.title",videoSetup:"steps.video.label",audioSetup:"steps.audio.label",recording:"steps.record.label",review:"steps.review.label",finish:"steps.finish.label"};var Te={name:"1b7dsph",styles:"margin:32px 0;:first-of-type{margin-top:16px;}"},Le={name:"35wqm0",styles:"font-size:18px;margin-bottom:8px"},Oe={name:"1hmse4r",styles:"display:flex;flex-wrap:wrap;gap:12px"},Be={name:"26bywx",styles:"overflow-wrap:anywhere"},ze={name:"197tvr9",styles:"display:flex;gap:8px;align-items:center"};const Ue=e=>{let{groupId:t,group:r}=e;const{t:n}=(0,c.Bd)();return(0,H.FD)("section",{css:Te,children:[(0,H.Y)("h2",{css:Le,children:n(Fe[t])}),(0,H.Y)("div",{css:Oe,children:Object.entries(r).map(((e,r)=>{let[i,s]=e;return(0,H.FD)("div",{css:(0,a.AH)({width:"calc(33.33% - 24px / 3)",[(0,o.pi)(1080)]:{width:"calc(50% - 12px / 2)"},[(0,o.pi)(720)]:{width:"100%"},backgroundColor:v.lm.neutral10,borderRadius:4,padding:"10px 16px",display:"inline-flex",flexDirection:"column",alignItems:"start",gap:8},"",""),children:[(0,H.Y)("div",{css:Be,children:n(Se[t][i])}),(0,H.Y)("div",{css:ze,children:s.split(";").map(((e,t)=>(0,H.FD)(l.Fragment,{children:[t>0&&n("shortcuts.sequence-seperator"),(0,H.Y)(Re,{shortcut:e.trim(),large:!0})]},t)))})]},r)}))})]})};var Ie={name:"0",styles:""},Pe={name:"iqv73y",styles:"border-radius:8px;margin:0;padding-left:0;overflow:hidden;list-style:none"};const $e=e=>{let{kind:t,label:r,icon:n,disabled:i,danger:s,onClick:u,popoverEntries:p}=e;const{t:h}=(0,c.Bd)(),m=Ae(),g="dark"===(0,o.Ut)().scheme,{isHighContrast:f}=(0,o.Ut)(),b=(0,o.YW)(t,{prev:()=>ke.general.prev,next:()=>ke.general.next}),[x,w]=(0,l.useState)(!1),y=p?()=>w((e=>!e)):()=>u?.();De(b,y,{enabled:!i},[y,b,i]);const Y=(0,H.FD)(o.b1,{disabled:i,onClick:y,css:(0,a.AH)({position:"relative",display:"flex",gap:8,alignItems:"center",lineHeight:1,...(0,v.Y$)({offset:-1}),...s&&{"--color-focus":v.lm.danger4},borderRadius:8,border:`1px solid ${s?v.lm.danger4:v.lm.neutral50}`,color:s?v.lm.danger4:v.lm.neutral80,backgroundColor:s?v.lm.danger0:v.lm.neutral05,padding:"12px 24px",...(0,o.YW)(t,{next:()=>({paddingRight:16}),prev:()=>({paddingLeft:16})}),'&[data-floating-state="open"] svg':{transform:"rotate(-90deg)"},svg:{transition:"transform 0.15s",flexShrink:0},"&[disabled]":{color:v.lm.neutral60,borderColor:v.lm.neutral15,backgroundColor:v.lm.neutral15},"&:not([disabled]):hover, &:not([disabled]):focus-visible":{borderColor:s?v.lm.danger5:v.lm.neutral70,color:s?v.lm.danger5:v.lm.neutral90,boxShadow:f?"none":"0 0 8px var(--shadow-color)",...s&&{backgroundColor:v.lm.danger1},...f&&{outline:`2px solid ${s?v.lm.danger5:v.lm.accent4}`,borderColor:"transparent"}}},"",""),children:["prev"===t&&(n??(0,H.Y)(d.irw,{})),r??h(`steps.${"next"===t?"next":"back"}-button-label`),"next"===t&&(n??(0,H.Y)(d.fOo,{css:Ie})),m&&!i&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",top:-24,left:-6,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:b})})]});return p?(0,H.FD)(o.K1,{placement:"top-end",open:x,onClose:()=>w(!1),ariaRole:"menu",arrowSize:8,viewPortMargin:12,borderRadius:8,distance:6,children:[(0,H.Y)(o.vh,{children:Y}),(0,H.Y)(o.DE,{backgroundColor:g?v.lm.neutral15:v.lm.neutral05,borderWidth:g?1:0,padding:0,shadowBlur:8,children:(0,H.Y)("ul",{css:Pe,children:p?.map(((e,t)=>{const r={display:"flex",gap:16,alignItems:"center",width:"100%",minWidth:160,padding:12,color:v.lm.neutral80,cursor:"pointer",textDecoration:"none",...(0,v.Y$)({inset:!0}),"& > svg":{maxHeight:23,fontSize:23,color:v.lm.neutral60,width:24,strokeWidth:2,"& > path":{strokeWidth:"inherit"}},":hover, :focus":{backgroundColor:v.lm.neutral10,color:"inherit"}};return(0,H.Y)("li",{css:(0,a.AH)({":first-of-type > *":{borderRadius:"8px 8px 0 0"},":last-of-type> *":{borderRadius:"0 0 8px 8px"},":not(:first-of-type)":{borderTop:`1px solid ${v.lm.neutral30}`}},"",""),children:"href"in e?(0,H.FD)("a",{role:"button",href:e.href,css:r,onKeyDown:t=>{" "===t.key&&(t.preventDefault(),window.location.href=e.href)},children:[e.icon,e.label]}):(0,H.FD)(o.b1,{onClick:e.onClick,css:r,children:[e.icon,e.label]})},t)}))})})]}):Y};var Me={name:"1rx5t2m",styles:"flex:1;min-width:var(--min-page-width);display:flex;flex-direction:column;gap:12px;padding:12px;@media (min-width: 500px) and (min-height: 500px){gap:16px;padding:24px;}"},je={name:"xd9hir",styles:"flex:1;display:flex;flex-direction:column;justify-content:center;position:relative"},We={name:"1tn9h3w",styles:"display:flex;justify-content:end;align-items:end;gap:8px;min-height:42px"};const _e=e=>{let{title:t,note:r,nextButton:n,prevButton:i,children:o}=e;return(0,H.FD)("div",{css:Me,children:[(0,H.FD)("div",{children:[(0,H.Y)("h1",{"aria-live":"polite",css:(0,a.AH)({textAlign:"center",fontSize:32,fontWeight:700,color:v.lm.neutral70,"@media screen and (max-width: 600px), screen and (max-height: 400px)":{fontSize:26}},"",""),children:t}),r&&(0,H.Y)("div",{css:(0,a.AH)({fontSize:14,color:v.lm.neutral60,textAlign:"center",lineHeight:1.3,maxWidth:"100ch",margin:"0 auto"},"",""),children:r})]}),(0,H.Y)("div",{css:je,children:o}),(0,H.FD)("div",{css:We,children:[i&&(0,H.Y)($e,{kind:"prev",...i}),n&&(0,H.Y)($e,{kind:"next",...n})]})]})};var qe={name:"1b63svt",styles:"font-size:18px;font-weight:700"},Ne={name:"1m1e1pd",styles:"height:1lh;font-size:14px;margin-top:4px"},Ke={name:"1v2iei1",styles:"position:absolute;right:8px;bottom:8px"};const Ve=e=>{let{icon:t,label:r,onClick:n,shortcut:i,disabledText:s,ariaLabel:l}=e;const{isHighContrast:d}=(0,o.Ut)();return(0,H.FD)(o.b1,{onClick:n,disabled:!!s,"aria-label":l,css:(0,a.AH)({position:"relative",display:"inline-flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",maxHeight:250,maxWidth:420,padding:12,flex:"1",backgroundColor:v.lm.neutral05,color:v.lm.accent7,borderRadius:8,border:`1px solid ${v.lm.neutral20}`,"&[disabled]":{backgroundColor:v.lm.neutral10,color:v.lm.neutral50,borderColor:v.lm.neutral15},"&:not([disabled]):hover, &:not([disabled]):focus-visible":{color:v.lm.accent8,borderColor:v.lm.neutral30,boxShadow:"0 0 16px var(--shadow-color)",...d&&{outline:`2px solid ${v.lm.accent4}`,borderColor:"transparent",boxShadow:"none"}},...(0,v.Y$)({offset:-1})},"",""),children:[(0,H.Y)("div",{css:(0,a.AH)({borderRadius:"50%",display:"flex",justifyContent:"center",alignItems:"center",fontSize:40,width:80,height:80,backgroundColor:v.lm.neutral10,marginBottom:8},"",""),children:t}),(0,H.Y)("div",{css:qe,children:r}),(0,H.Y)("div",{css:Ne,children:s}),i&&(0,H.Y)("div",{css:Ke,children:(0,H.Y)(Re,{shortcut:i})})]})},Ge=e=>{let{setActiveSource:t,userConstraints:r,displayConstraints:n}=e;const{t:i}=(0,c.Bd)(),s=(0,I.t0)(),l=(0,f.wA)(),u=(0,f.pv)(),{displaySupported:p,userSupported:h}=u,m=async()=>{t("user"),await y(l,s,r),await(0,v.GG)(l)},g=async()=>{t("display"),await w(l,s,n)},b=async()=>{t("both"),(0,v.q4)()?(await w(l,s,n),await y(l,s,r),await(0,v.GG)(l)):(await y(l,s,r),await Promise.all([(0,v.GG)(l),w(l,s,n)]))};De(ke.videoSetup.selectScreen,g),De(ke.videoSetup.selectBoth,b),De(ke.videoSetup.selectUser,m);const x=Ae();return p||h?(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:24,padding:8,justifyContent:"center",alignItems:"center",flex:"1",[(0,o.pi)(v.LO.medium)]:{flexDirection:"column"}},"",""),children:[(p||!(0,v.kh)())&&(0,H.Y)(Ve,{label:i("sources-scenario-display"),ariaLabel:i("steps.video.share-display"),icon:(0,H.Y)(d.ufi,{}),onClick:g,disabledText:!p&&i("steps.video.display-not-supported"),shortcut:x?ke.videoSetup.selectScreen:void 0}),(p||!(0,v.kh)())&&h&&(0,H.Y)(Ve,{label:i("sources-scenario-display-and-user"),ariaLabel:i("steps.video.share-display-and-user"),icon:(0,H.FD)("div",{css:(0,a.AH)({lineHeight:0,fontSize:"0.8em",svg:{strokeWidth:2.5}},"",""),children:[(0,H.Y)(d.ufi,{}),(0,H.Y)(d.JXP,{})]}),onClick:b,disabledText:p?!u.hasWebcam&&i("steps.video.no-cam-detected"):i("steps.video.display-not-supported"),shortcut:x?ke.videoSetup.selectBoth:void 0}),h&&(0,H.Y)(Ve,{label:i("sources-scenario-user"),ariaLabel:i("steps.video.share-user"),icon:(0,H.Y)(d.JXP,{}),onClick:m,disabledText:!u.hasWebcam&&i("steps.video.no-cam-detected"),shortcut:x?ke.videoSetup.selectUser:void 0})]}):(0,H.Y)(U,{body:i("steps.video.none-available")})},Xe=e=>{let{goToNextStep:t}=e;const{t:r}=(0,c.Bd)(),n=(0,f.wA)(),i=(0,f.pv)(),{displayStream:s,userStream:a,videoChoice:l}=i,d=!!s||!!a,u=e=>n({type:"CHOOSE_VIDEO",choice:e}),p={isDesktop:!1,stream:a,allowed:i.userAllowed,unexpectedEnd:i.userUnexpectedEnd},h={isDesktop:!0,stream:s,allowed:i.displayAllowed,unexpectedEnd:i.displayUnexpectedEnd},m={prevButton:{onClick:()=>{u("none"),S(a,n),k(s,n)},disabled:!1,label:r("steps.video.reselect-source")},nextButton:{onClick:()=>t(),disabled:"both"===l?!s||!a:!d}},g=!1===i.userAllowed||i.userUnexpectedEnd||!1===i.displayAllowed||i.displayUnexpectedEnd;return(0,o.YW)(l,{none:()=>(0,H.FD)(_e,{title:r("steps.video.question"),children:[(0,H.Y)(Qe,{}),(0,H.Y)(Ge,{displayConstraints:$(G()),userConstraints:$(V()),setActiveSource:u})]}),user:()=>{const e=a||g;return(0,H.Y)(_e,{title:r("steps.video.user-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[p]})})},display:()=>{const e=s||g;return(0,H.Y)(_e,{title:r("steps.video.display-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[h]})})},both:()=>{const e=a&&s||g;return(0,H.Y)(_e,{title:r("steps.video.display-and-user-selected"),...e&&m,children:(0,H.Y)(le,{inputs:[h,p]})})}})},Qe=()=>{const{t:e}=(0,c.Bd)(),t=[];if("https:"!==window.location.protocol&&"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname&&t.push((0,H.Y)(U,{body:e("warning-https")})),!(0,v.oC)()){let r=e("warning-recorder-not-supported");(0,v.q4)()&&(r+=" "+e("warning-recorder-safari-hint")),t.push((0,H.Y)(U,{body:r}))}return t.length>0?(0,H.Y)("div",{children:t}):null},Ze=e=>{let{selectNoAudio:t,selectMicrophone:r}=e;const{t:n}=(0,c.Bd)(),i=Ae();return De(ke.audioSetup.withAudio,r),De(ke.audioSetup.withoutAudio,t),(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:24,padding:8,justifyContent:"center",alignItems:"center",flex:"1",[(0,o.pi)(v.LO.medium)]:{flexDirection:"column"}},"",""),children:[(0,H.Y)(Ve,{icon:(0,H.Y)(d.Rrl,{}),label:n("steps.audio.microphone"),onClick:r,shortcut:i?ke.audioSetup.withAudio:void 0}),(0,H.Y)(Ve,{icon:(0,H.Y)(d.Qnk,{}),label:n("steps.audio.without-audio"),onClick:t,shortcut:i?ke.audioSetup.withoutAudio:void 0})]})};var Je=r(9432),et=r.n(Je),tt={name:"nqgbks",styles:"display:flex;width:80%;min-width:240px;align-items:center"},rt={name:"102h2op",styles:"flex:1 1;min-width:50px"};const nt=()=>{const{t:e}=(0,c.Bd)(),{isHighContrast:t}=(0,o.Ut)(),r=(0,f.wA)(),n=(0,f.pv)(),{audioStream:i,audioAllowed:s,audioUnexpectedEnd:d}=n,u=i?.getAudioTracks()?.[0]?.getSettings()?.deviceId,p=(0,v.r_)(n.mediaDevices,"audioinput");(0,l.useEffect)((()=>{u&&window.localStorage.setItem(st,u)}));const h=(0,l.useId)();let m=(0,H.Y)(H.FK,{});return m=i?(0,H.FD)(H.FK,{children:[(0,H.Y)(ot,{stream:i}),(0,H.FD)("div",{css:tt,children:[(0,H.Y)("label",{htmlFor:h,css:(0,a.AH)({marginRight:16,display:"flex",flexDirection:"column",alignItems:"center",fontWeight:700,color:v.lm.neutral70},"",""),children:e("steps.audio.device")}),(0,H.Y)(P,{id:h,value:u,onChange:e=>(async e=>{i&&Y(i,r),await x(r,{exact:e})})(e.target.value),css:rt,children:p.map(((e,t)=>(0,H.Y)("option",{value:e.deviceId,children:e.label??"unlabeled microphone"},t)))})]})]}):!1===s?(0,H.Y)(U,{title:e("steps.audio.not-allowed-title"),body:e("steps.audio.not-allowed-text")}):!0===d?(0,H.Y)(U,{body:e("error-lost-audio-stream")}):(0,H.Y)(o.y$,{size:75}),(0,H.Y)("div",{css:(0,a.AH)({maxWidth:850,backgroundColor:v.lm.neutral05,borderRadius:16,boxShadow:t?"none":"0 4px 16px var(--shadow-color)",width:"100%",margin:"0 auto",padding:24,display:"flex",flexDirection:"column",alignItems:"center",maxHeight:"400px",gap:16},"",""),children:m})};var it={name:"1xnwbsu",styles:"width:100%;height:min(200px, 20vh);flex:1 0 70px"};const ot=e=>{let{stream:t}=e;const r="dark"===(0,o.Ut)().scheme,n=(0,l.useRef)(null);return(0,l.useEffect)((()=>{const e=n.current;if(e){const n=e.getContext("2d");if(null==n)throw new Error("Could not get 2D context for canvas");n.lineWidth=2,n.strokeStyle=r?"#f1c40f":"#044a81";const i=(new window.AudioContext).createMediaStreamSource(t),o=new(et())(i,{fftSize:1024});return o.animate(n),()=>o.stop()}return()=>{}}),[t,r]),(0,H.Y)("canvas",{ref:n,width:"800px",height:"200px",css:it})},st="ocStudioLastAudioDevice",at=e=>{let{goToNextStep:t,goToPrevStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),{audioStream:s,audioChoice:a}=(0,f.pv)();return(0,o.YW)(a,{none:()=>(0,H.Y)(_e,{title:n("steps.audio.question"),prevButton:{onClick:r},nextButton:{disabled:!0},children:(0,H.Y)(Ze,{selectNoAudio:t,selectMicrophone:async()=>{i({type:"CHOOSE_AUDIO",choice:"microphone"});const e=window.localStorage.getItem(st);await x(i,e?{ideal:e}:void 0),await(0,v.GG)(i)}})}),microphone:()=>(0,H.Y)(_e,{title:n("steps.audio.microphone-selected"),prevButton:{label:n("steps.audio.reselect-audio"),onClick:()=>{s&&Y(s,i),i({type:"CHOOSE_AUDIO",choice:"none"})}},nextButton:{disabled:!s,onClick:t},children:(0,H.Y)(nt,{})})})};var lt=r(4631),dt={name:"158icaa",styles:"margin-left:4px"};const ct=e=>{let{recordingState:t,startRecording:r,pauseRecording:n,resumeRecording:i}=e;const{t:s}=(0,c.Bd)(),l="light"===(0,o.Ut)().scheme,{isHighContrast:u}=(0,o.Ut)(),p=l?v.lm.neutral05:v.lm.neutral90,h=Ae();De(ke.recording.startPauseResume,(()=>{(0,o.YW)(t,{inactive:()=>r(),paused:()=>i(),recording:()=>n()})}),{ignoreEventWhen:e=>"Space"===e.code&&e.target instanceof HTMLButtonElement},[t]);const m=(0,o.YW)(t,{inactive:()=>s("steps.record.record-button-title"),paused:()=>s("steps.record.resume-button-title"),recording:()=>s("steps.record.pause-button-title")});return(0,H.FD)("div",{css:(0,a.AH)({margin:"0 auto",width:180,height:85,display:"flex",gap:32,alignItems:"center",justifyContent:"center",backgroundColor:l?v.lm.neutral70:v.lm.neutral05,border:`1px solid ${l?v.lm.neutral50:v.lm.neutral25}`,boxShadow:u?"none":"0 4px 16px rgba(0, 0, 0, 0.2)",borderRadius:12,color:p,...u&&{backgroundColor:v.lm.neutral05,border:`2px solid ${v.lm.neutral25}`}},"",""),children:[(0,H.Y)(o.kR,{tooltip:m,children:(0,H.FD)("button",{onClick:(0,o.YW)(t,{inactive:()=>r,paused:()=>i,recording:()=>n}),"aria-label":m,"aria-live":"polite",css:(0,a.AH)({position:"relative",width:50,height:50,display:"flex",justifyContent:"center",alignItems:"center",fontSize:28,padding:0,boxShadow:u?"none":"0 4px 4px rgba(0, 0, 0, 0.12)",cursor:"pointer",color:u||l?"white":"#D6D6D6",borderRadius:"50%",backgroundColor:l?"#E42D43":"#b8012d",border:`${u?"2px":"1px"} solid ${p}`,":hover, :focus-visible":{backgroundColor:l?"#c40a31":"#8f0121"},":focus-visible":{outline:`4px solid ${p}`}},"",""),children:[(0,o.YW)(t,{inactive:()=>null,paused:()=>(0,H.Y)(d.aze,{css:dt}),recording:()=>(0,H.Y)(d.GHw,{})}),h&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",right:-4,bottom:-4},"",""),children:(0,H.Y)(Re,{shortcut:ke.recording.startPauseResume.split(";")[0]})})]})}),(0,H.Y)(ut,{isRecording:"recording"===t})]})},ut=e=>{let{isRecording:t}=e;const[r,n]=(0,l.useState)("00:00"),i=(0,l.useRef)(0);return(0,l.useEffect)((()=>{let e=new Date;const r=setInterval((()=>{const r=new Date;if(t){i.current+=r.valueOf()-e.valueOf();const t=i.current;let o=[Math.floor(t/36e5),Math.floor(t/6e4)%60,Math.floor(t/1e3)%60];0===o[0]&&(o=o.slice(1)),n(o.map((e=>(e<10?"0":"")+e)).join(":"))}e=r}),100);return()=>clearInterval(r)}),[t]),(0,H.Y)("div",{children:r})};var pt=r(3537),ht=r.n(pt);class mt{#e;#t=[];#r;onStop;constructor(e,t,r){let n;"isTypeSupported"in MediaRecorder?(n=(t?.mimes||[]).find((e=>MediaRecorder.isTypeSupported(e))),n?console.debug("using first supported MIME type from settings: ",n):t?.mimes&&console.debug("None of the MIME types specified in settings are supported by this `MediaRecorder`")):t?.mimes&&console.debug("MIME types were specified, but `MediaRecorder.isTypeSupported` is not supported by your browser"),this.#n(),this.#r=(0,v.VM)(e),this.onStop=r;const i=t?.videoBitrate;this.#e=new MediaRecorder(e,{mimeType:n,videoBitsPerSecond:i}),this.#e.ondataavailable=this.#i,this.#e.onstop=this.#o}#n=()=>{this.#t=[]};#i=e=>{e.data.size>0?this.#t.push(e.data):console.log("Recording data has size 0!",e)};#o=async e=>{const t=this.#t[0]?.type||this.#e.mimeType,r=t.split(";")[0].trim();let n;n=["video/webm","video/x-matroska"].includes(r)?await ht()(new Blob(this.#t,{type:t})):new Blob(this.#t,{type:t});const i=URL.createObjectURL(n);this.#n(),this.onStop?.({url:i,media:n,mimeType:t,dimensions:this.#r})};start(){this.#e.start()}pause(){this.#e.pause()}resume(){this.#e.resume()}stop(){this.#e.stop()}}const gt=(e,t)=>r=>{let{media:n,url:i,mimeType:o,dimensions:s}=r;e({type:"ADD_RECORDING",recording:{deviceType:t,media:n,url:i,mimeType:o,dimensions:s}})},vt=(e,t)=>e.reduce(((e,t)=>t?.getAudioTracks().length?new MediaStream([...e.getVideoTracks(),...(e.getAudioTracks().length?(()=>{const r=new AudioContext,n=r.createMediaStreamSource(e),i=r.createMediaStreamSource(t),o=r.createMediaStreamDestination();return n.connect(o),i.connect(o),o.stream})():t).getAudioTracks()]):e),t);var ft={name:"1co8040",styles:"position:absolute;bottom:32px;width:100%"};const bt=e=>{let{goToNextStep:t,goToPrevStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),o=(0,lt.Z1)(),a=(0,f.wA)(),d=(0,I.t0)(),u=(0,f.pv)(),{displayStream:p,userStream:h,displayUnexpectedEnd:m,userUnexpectedEnd:g,audioUnexpectedEnd:b}=u,[x,w]=(0,l.useState)("inactive"),y=(0,l.useRef)(),C=(0,l.useRef)(),D=(p||h)&&!g&&!m&&!b,A=e=>{y.current?.stop(),C.current?.stop(),a({type:e?"STOP_RECORDING_PREMATURELY":"STOP_RECORDING"}),o.refreshConnection(),function(e,t){let{audioStream:r,displayStream:n,userStream:i}=e;Y(r,t),k(n,t),S(i,t)}(u,i),t()};(0,l.useEffect)((()=>{!(g||m||b)||"recording"!==x&&"paused"!==x||A(!0)}));const R="paused"===x,E=[];return(p||m)&&E.push({body:(0,H.Y)(yt,{stream:p,paused:R}),dimensions:()=>(0,v.VM)(p),autoSize:!p}),(h||g)&&E.push({body:(0,H.Y)(yt,{stream:h,paused:R}),dimensions:()=>(0,v.VM)(h),autoSize:!h}),(0,s.S)((e=>{"inactive"!==x&&e.preventDefault()})),(0,H.FD)(_e,{title:n("steps.record.label"),prevButton:{onClick:r,disabled:"inactive"!==x},nextButton:{onClick:()=>A(!1),disabled:"paused"!==x,label:n("steps.record.stop-button-title")},children:[b&&(0,H.Y)(U,{body:n("error-lost-audio-stream")}),(0,H.Y)(L,{gap:20,children:E}),(0,H.Y)("div",{css:ft,children:D&&(0,H.Y)(ct,{startRecording:()=>{if(a({type:"CLEAR_RECORDINGS"}),p){const e=gt(a,"desktop"),t=vt([u.audioStream],p);y.current=new mt(t,d.recording,e),y.current.start()}if(h){const e=gt(a,"video"),t=vt([u.audioStream,p],h);C.current=new mt(t,d.recording,e),C.current.start()}w("recording"),a({type:"START_RECORDING"})},pauseRecording:()=>{w("paused"),y.current?.pause(),C.current?.pause()},resumeRecording:()=>{w("recording"),y.current?.resume(),C.current?.resume()},recordingState:x})})]})};var xt={name:"ti75j2",styles:"margin:0"},wt={name:"1ujvmfg",styles:"outline:none;width:100%;height:100%;background:transparent"};const yt=e=>{let{stream:t,paused:r}=e;const{t:n}=(0,c.Bd)(),i=T(),s=(0,l.useRef)(null),{isHighContrast:d}=(0,o.Ut)();return(0,l.useEffect)((()=>{const e=s.current;if(e&&t)return e.srcObject||(e.srcObject=t),e.addEventListener("resize",i),r?e.pause():e.play(),()=>e.removeEventListener("resize",i)})),t?(0,H.FD)("div",{css:(0,a.AH)({position:"relative",boxShadow:d?"none":"0 2px 12px rgba(0, 0, 0, 0.35)",overflow:"hidden",height:"100%"},"",""),children:[r&&(0,H.Y)(St,{}),(0,H.Y)("video",{ref:s,autoPlay:!0,muted:!0,playsInline:!0,tabIndex:-1,css:wt})]}):(0,H.Y)(U,{css:xt,body:n("error-lost-video-stream")})};var Yt={name:"1b4lm15",styles:"position:absolute;width:100%;height:100%;background-color:rgba(50, 50, 50, 0.7)"},kt={name:"4t4ja4",styles:"font-size:26px"};const St=()=>{const{t:e}=(0,c.Bd)();return(0,H.Y)("div",{css:Yt,children:(0,H.FD)("div",{css:(0,a.AH)({display:"flex",alignItems:"center",justifyContent:"center",color:"white",gap:8,fontSize:20,marginTop:32,textShadow:"0 0 12px rgba(0, 0, 0, 0.6)",animation:`2s ease-in-out infinite none ${(0,a.i7)({"0%":{opacity:1},"50%":{opacity:.7},"100%":{opacity:1}})}`},"",""),children:[(0,H.Y)(d.IQZ,{css:kt}),e("steps.record.is-paused")]})})};var Ct;function Dt(){return Dt=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",Dt({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 100 90",width:"1em",height:"1em"},e),Ct||(Ct=l.createElement("g",{fill:"currentColor"},l.createElement("path",{d:"M49.7.002c-2.91.059-5.75 1.49-7.44 4.08a8.84 8.84 0 0 0-1.42 5.29c-.08.122-.986 1.51-1.13 1.72-.13-.2-.997-1.54-1.08-1.66a8.84 8.84 0 0 0-1.4-5.29c-1.68-2.59-4.51-4.04-7.42-4.11a9.03 9.03 0 0 0-5.09 1.41c-4.18 2.66-5.4 8.27-2.72 12.4 2.56 3.96 7.83 5.24 11.9 3.02l.992 1.53c-2.84 4.35-4.9 7.5-6.74 10.3-3.09 4.73-1.94 8.93 2.01 11.5l9.47-14.5 9.45 14.6c3.96-2.55 5.13-6.75 2.06-11.5-1.84-2.84-3.9-6.03-6.74-10.4l1.04-1.59c4.1 2.23 9.37.974 12-2.97 2.03-3.1 1.85-7.03-.114-9.93a8.9 8.9 0 0 0-2.55-2.49 8.94 8.94 0 0 0-5.08-1.43zm.09 5.96a3.04 3.04 0 0 1 1.7.499c.357.23.65.514.872.835.668.962.712 2.24.018 3.31-.926 1.42-2.74 1.8-4.17.882-1.43-.92-1.82-2.73-.89-4.14.58-.886 1.51-1.37 2.47-1.38zm-20.1.023c.963.017 1.89.504 2.46 1.39.92 1.42.525 3.22-.906 4.14s-3.25.521-4.17-.9c-.92-1.42-.525-3.22.906-4.14a3.07 3.07 0 0 1 1.71-.492zm10 24.1a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m0 10.9a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m-1.5 8.8a2.43 2.42 0 0 0-2.43 2.42v35.4a2.43 2.42 0 0 0 2.43 2.42h8.94v-4.83h-6.51v-30.6h6.1v-4.83zm6.51 8.86v22.5h55.2v-4.83h-3.22a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71h3.22v-4.83zm6.59 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71m22.7 0h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.77-1.71 1.72-1.71"}),l.createElement("path",{d:"M0 58.6v4.83h2.44c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H0v4.83h31.8v-22.5zm10.8 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H10.8a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.768-1.71 1.72-1.71",opacity:.2}))));function Et(){return Et=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",Et({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24"},e),At||(At=l.createElement("path",{d:"M14 21h-4V3h4"})));const Ft=e=>{let{previewController:t,currentTime:r}=e;const{i18n:n}=(0,c.Bd)(),i=t.current?.duration,{isHighContrast:s}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral05,borderRadius:8,padding:16,boxShadow:s?"none":"0 4px 4px var(--shadow-color)",display:"flex",flexDirection:"column",gap:12},"",""),children:[(0,H.Y)(Pt,{previewController:t,currentTime:r}),(0,H.FD)("div",{css:(0,a.AH)({textAlign:"center",color:v.lm.neutral70},"",""),children:[Tt(r,i,n.language),"/",Tt(i,i,n.language)]}),(0,H.Y)(Ot,{previewController:t,currentTime:r})]})},Tt=(e,t,r)=>{if(void 0===e)return"--:--";const n=e%60,i=Math.floor(e/60)%60,o=Math.floor(e/3600),s=n.toLocaleString(r,{minimumFractionDigits:1,maximumFractionDigits:1}),a=`${i<=9?"0":""}${i}:${n<=9?"0":""}${s}`;return t&&t>=3600?`${o}:${a}`:a};var Lt={name:"1r962iv",styles:"padding:4px"};const Ot=e=>{let{previewController:t,currentTime:r}=e;const n=t.current?.duration||1/0,i=(0,I.t0)(),s=(0,f.wA)(),{start:d,end:c}=(0,f.pv)(),u=(0,l.useRef)(null),{isHighContrast:p}=(0,o.Ut)(),h={position:"absolute",backgroundColor:v.lm.danger1,height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)",boxSizing:"content-box",background:`repeating-linear-gradient(45deg,${v.lm.danger2}, ${v.lm.danger2} 4px,${v.lm.danger1} 4px, ${v.lm.danger1} 8px)`};return(0,H.Y)("div",{css:Lt,children:(0,H.FD)("div",{ref:u,css:(0,a.AH)({"--scrubber-border-radius":"3px","--scrubber-height":"6px","@media not (any-pointer: fine)":{"--scrubber-border-radius":"6px","--scrubber-height":"12px"},position:"relative",backgroundColor:v.lm.accent4,width:"100%",height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)"},"",""),children:[(0,H.Y)("div",{onClick:e=>(e=>{const r=e.currentTarget.getBoundingClientRect();let i=(e.clientX-r.x)/r.width;i<0?i=0:i>1&&(i=1),t.current&&(t.current.currentTime=i*n)})(e),css:(0,a.AH)({position:"absolute",width:"100%",cursor:"pointer",zIndex:5,top:-6,bottom:-6},"",""),children:(0,H.Y)(zt,{scrubberRef:u,previewController:t,initialTime:r,onDrag:e=>(0,o.d6)(t.current).currentTime=e,children:(0,H.Y)("div",{css:(0,a.AH)({width:16,height:16,"@media not (any-pointer: fine)":{width:24,height:24},borderRadius:"50%",backgroundColor:v.lm.neutral05,border:`1px solid ${v.lm.neutral40}`},"","")})})}),null!=d&&d>0&&(0,H.Y)("div",{css:(0,a.AH)({left:0,borderRight:"2px solid black",width:d/n*100+"%",...h},"","")}),null!=c&&cMath.min(e,c??n),onDrag:e=>s({type:"UPDATE_START",time:e}),children:(0,H.Y)(Bt,{side:"left",isHighContrast:p})}),(0,H.Y)(zt,{scrubberRef:u,previewController:t,initialTime:c??n,clamp:e=>Math.max(e,d??0),onDrag:e=>s({type:"UPDATE_END",time:e}),children:(0,H.Y)(Bt,{side:"right",isHighContrast:p})})]}),(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",left:0,width:r/n*100+"%",backdropFilter:"brightness(0.75)",height:"var(--scrubber-height)",borderRadius:"var(--scrubber-border-radius)"},"","")})]})})},Bt=e=>{let{side:t,isHighContrast:r}=e;return(0,H.Y)("div",{css:(0,a.AH)({width:14,height:20,"@media not (any-pointer: fine)":{height:24},backgroundColor:v.lm.neutral05,color:v.lm.neutral70,border:`1px solid ${v.lm.neutral40}`,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:r?"none":"0 1px 2px var(--shadow-color)"},"",""),children:(0,H.Y)(Ht,{css:(0,a.AH)({transform:"scale(1.2) "+("right"==t?"scaleX(-1)":"")},"","")})})},zt=e=>{let{previewController:t,scrubberRef:r,initialTime:n,onDrag:i,clamp:s=(e=>e),children:d}=e;const c=t.current?.duration||1/0,u=n/c,p=(0,l.useRef)(u),h=(0,l.useRef)(),m=(0,l.useRef)(null),g=(0,l.useRef)(!1);return(0,l.useEffect)((()=>{const e=()=>{g.current&&(g.current=!1,i?.(p.current*c),(0,o.d6)(m.current).style.left="")},t=e=>{r(e.pageX)},r=e=>{if(g.current){const t=(0,o.d6)(h.current),r=Math.min(1,Math.max(0,(e-t.left)/t.width));p.current=s(c*r)/c,i?.(p.current*c),(0,o.d6)(m.current).style.left=100*p.current+"%"}},n=e=>{e.touches.length>0&&r(e.touches[0].pageX)};return document.addEventListener("mouseup",e),document.addEventListener("touchend",e),document.addEventListener("mousemove",t),document.addEventListener("touchmove",n),()=>{document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e),document.removeEventListener("mousemove",t),document.removeEventListener("touchmove",n)}})),(0,H.Y)("div",{ref:m,onMouseDown:()=>{g.current=!0,h.current=(0,o.d6)(r.current).getBoundingClientRect()},onTouchStart:()=>{console.log("TOUCH START"),g.current=!0,h.current=(0,o.d6)(r.current).getBoundingClientRect()},css:(0,a.AH)({position:"absolute",zIndex:10,left:100*u+"%",cursor:"grab",userSelect:"none",top:"50%",transform:"translateY(-50%) translateX(-50%)",padding:"8px 4px"},"",""),children:d})};var Ut={name:"r8hnng",styles:"display:flex;gap:16px;justify-content:center;align-items:flex-end"},It={name:"1i7v2bx",styles:"margin-left:3px"};const Pt=e=>{let{currentTime:t,previewController:r}=e;const{start:n,end:i}=(0,f.pv)(),s=(0,f.wA)(),l=(0,I.t0)(),{t:u}=(0,c.Bd)(),p=()=>{const e=r.current;e&&(e.isPlaying?e.pause():e.isReadyToPlay&&e.play())};De(ke.review.playPause,p,{ignoreEventWhen:e=>"Space"===e.code&&e.target instanceof HTMLButtonElement});const h=Ae(),{isHighContrast:m}=(0,o.Ut)(),g=r.current?.isPlaying,b=u("steps.review."+(g?"pause":"play"));return(0,H.FD)("div",{css:Ut,children:[l.review?.disableCutting||(0,H.Y)($t,{marker:"start",value:n,control:i,invariant:(e,t)=>ee.preventDefault(),children:[h&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:ke.review.playPause.split(";")[0]})}),g?(0,H.Y)(d.GHw,{}):(0,H.Y)(d.aze,{css:It})]})}),l.review?.disableCutting||(0,H.Y)($t,{marker:"end",value:i,control:n,invariant:(e,t)=>t{let{marker:t,value:r,control:n,invariant:i,currentTime:s,previewController:l,recordingDispatch:d}=e;const{t:u,i18n:p}=(0,c.Bd)(),{isHighContrast:h}=(0,o.Ut)(),m=s<=Gt||l.current&&s>=l.current.duration||null!=n&&!i(s,n),g=()=>{if(!l.current)return;let e=l.current.currentTime;null==n||i(e,n)||(e=n),d({type:"start"===t?"UPDATE_START":"UPDATE_END",time:e})},f=ke.review["start"===t?"cutLeft":"cutRight"];De(f,g,{enabled:!m}),De(ke.review["start"===t?"removeCutLeft":"removeCutRight"],(()=>d({type:"start"===t?"UPDATE_START":"UPDATE_END",time:null})));const b=Ae(),x=(0,H.Y)("div",{css:(0,a.AH)({minWidth:68,textAlign:"start"==t?"right":"left"},"",""),children:null!==r&&(0,H.Y)(o.kR,{tooltip:u("steps.review.jump-to-cut-point"),children:(0,H.Y)(o.b1,{css:(0,a.AH)({padding:"4px 0",color:v.lm.accent6},"",""),onClick:e=>{e.preventDefault(),l.current&&(l.current.currentTime=r)},onMouseDown:e=>e.preventDefault(),children:Tt(r,r,p.language)})})}),w=(0,H.Y)(o.kR,{tooltip:u(`steps.review.set-${t}`),children:(0,H.FD)(o.b1,{disabled:m,"aria-label":u(`steps.review.set-${t}`),onClick:g,onMouseDown:e=>e.preventDefault(),css:(0,a.AH)({lineHeight:0,padding:"4px 8px",paddingTop:4,borderRadius:4,...(0,v.Y$)(),"&:disabled":{opacity:.3},"&:not(:disabled):hover":{backgroundColor:v.lm.neutral10,color:h?v.lm.accent4:"inherit"}},"",""),children:[(0,H.Y)(Rt,{css:(0,a.AH)({height:36,width:36,transform:"end"===t?"scaleX(-1)":""},"","")}),b&&!m&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:f})})]})});return"start"===t?(0,H.FD)(H.FK,{children:[x,w]}):(0,H.FD)(H.FK,{children:[w,x]})};var Mt;function jt(){return jt=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("svg",jt({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 100 65",width:"1em",height:"1em"},e),Mt||(Mt=l.createElement("path",{fill:"currentColor",d:"M24.6 0c-.447 0-.894.171-1.24.511l-3.07 3.05a1.73 1.73 0 0 0 0 2.46l58.8 58.5c.685.681 1.79.681 2.47 0l3.07-3.05a1.73 1.73 0 0 0 0-2.46l-6.68-6.64h22v-7.32h-15.6c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h15.6v-7.32h-56.4L25.75.551A1.75 1.75 0 0 0 24.51.04zM0 18.2v7.32h3.7c1.44 0 2.6 1.15 2.6 2.59v14.3C6.3 43.84 5.14 45 3.7 45H0v7.32h55.8l-15.4-15.3v5.36c0 1.43-1.16 2.59-2.6 2.59H16c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h12.8l-7.36-7.32zm51 7.32h21c1.44 0 2.6 1.15 2.6 2.59v14.3c0 1.43-1.16 2.59-2.6 2.59h-1.4z"}))),_t={name:"zxsb69",styles:"position:relative;width:100%;height:100%"},qt={name:"1j80pbv",styles:"position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(0, 0, 0, 0.65);color:white;display:flex;flex-direction:column;align-items:center;justify-content:start;padding-top:16px;pointer-events:none"},Nt={name:"6yeg13",styles:"font-size:3em"},Kt={name:"te1fbj",styles:"margin:8px 0"};const Vt=(0,l.forwardRef)(((e,t)=>{let{onTimeUpdate:r,onReady:n,onPausePlay:i}=e;const{recordings:s,start:d,end:u}=(0,f.pv)(),{t:p}=(0,c.Bd)(),{isHighContrast:h}=(0,o.Ut)(),m=[(0,l.useRef)(null),(0,l.useRef)(null)],g=m.slice(0,s.length),v=2===s.length?"desktop"===s[0].deviceType?0:1:null,b=(0,l.useRef)(),x=(0,l.useRef)(null),w=e=>{g.some((e=>e.current?.seeking))?x.current=e:g.forEach((t=>{t.current&&(t.current.currentTime=Math.max(0,Math.min(e,t.current.duration)))}))};(0,l.useImperativeHandle)(t,(()=>({get currentTime(){return(0,o.d6)(m[b.current??0].current?.currentTime)},set currentTime(e){w(e)},get duration(){return(0,o.d6)(m[b.current??0].current?.duration)},get isPlaying(){const e=m[b.current??0].current;return null!=e&&e.currentTime>0&&!e.paused&&!e.ended},get isReadyToPlay(){return g.every((e=>(e.current?.readyState??0)>=2))},play(){g.forEach((e=>e.current?.play())),i(!1)},pause(){g.forEach((e=>e.current?.pause())),i(!0)}})));const y=[(0,l.useRef)(),(0,l.useRef)()],[Y,k]=(0,l.useState)(!1),S=e=>null!==d&&eu,C=m[b.current??0].current?.currentTime||0,D=S(C),[,A]=(0,l.useState)(D);(0,l.useEffect)((()=>{Y&&n()}),[n,Y]),(0,l.useEffect)((()=>{if(Y&&null!=v){(0,o.d6)(m[v].current).volume=0;const e=(0,o.d6)(m[0].current),t=(0,o.d6)(m[1].current);let r,n=0;const i=()=>{if(n%60==0&&Math.abs(e.currentTime-t.currentTime)>.15&&null!=b.current){const e=m[b.current].current,t=m[0===b.current?1:0].current;(0,o.d6)(t).currentTime=(0,o.d6)(e).currentTime}n++,r=window.requestAnimationFrame(i)};return r=window.requestAnimationFrame(i),()=>window.cancelAnimationFrame(r)}}));const R=e=>w((0,o.d6)(m[b.current??0].current?.currentTime)+e);De(ke.review.forwards5secs,(()=>R(5))),De(ke.review.backwards5secs,(()=>R(-5))),De(ke.review.forwardsFrame,(()=>R(1/30))),De(ke.review.backwardsFrame,(()=>R(-1/30)));const E=s.map(((e,t)=>({dimensions:()=>e.dimensions,body:(0,H.FD)("div",{css:_t,children:[D&&(0,H.FD)("div",{css:qt,children:[(0,H.Y)(Wt,{css:Nt}),(0,H.Y)("p",{css:Kt,children:p("steps.review.part-will-be-removed")})]}),(0,H.Y)("video",{ref:m[t],src:e.url,onLoadedData:e=>{e.currentTarget.currentTime=Number.MAX_VALUE,y[t].current="started"},onSeeked:()=>{if(Y){const e=m[0==t?1:0].current?.seeking,r=x.current;e||null==r||(g.forEach((e=>{e.current&&(e.current.currentTime=r)})),x.current=null)}},onTimeUpdate:e=>{Y?(A(S(e.currentTarget.currentTime)),r(e)):(0,o.YW)((0,o.d6)(y[t].current),{started:()=>{e.currentTarget.currentTime=Gt,y[t].current="done"},done:()=>{y.filter((e=>"done"===e.current)).length===s.length&&k(!0)}})},autoPlay:/iPad|iPhone|iPod/.test(navigator.userAgent),playsInline:!0,preload:"auto",tabIndex:-1,css:(0,a.AH)({width:"100%",height:"100%",outline:"none",boxShadow:h?"none":"0 4px 16px var(--shadow-color)",borderRadius:16},"","")},t)]})})));return(0,H.Y)(L,{gap:20,children:E})})),Gt=.001;var Xt={name:"sw5ovr",styles:"flex:1;display:flex;align-items:center;justify-content:center;font-size:42px"};const Qt=e=>{let{goToFirstStep:t,goToNextStep:r}=e;const{t:n}=(0,c.Bd)(),i=(0,f.wA)(),{recordings:s,prematureRecordingEnd:u,videoChoice:p}=(0,f.pv)(),h=s.some((e=>0===e.media.size)),m=(0,l.useRef)(null),[g,v]=(0,l.useState)(0),[b,x]=(0,l.useState)(!1),[w,y]=(0,l.useState)(!0),Y=(0,o.YW)(p,{both:()=>2,display:()=>1,user:()=>1,none:()=>0});return(0,H.FD)(_e,{title:n("steps.review.label"),note:n("steps.review.only-on-upload-note"),prevButton:{danger:!0,icon:(0,H.Y)(d.Q_v,{}),label:n("steps.review.button-discard-and-record"),onClick:()=>{window.confirm(n("confirm-discard-recordings"))&&(i({type:"RESET"}),t())}},nextButton:{onClick:r},children:[u&&(0,H.Y)(U,{body:n("error-lost-stream-end-recording")}),h&&(0,H.Y)(U,{body:n("steps.review.error-empty-recording")}),(!b||s.length!==Y)&&(0,H.Y)("div",{css:Xt,children:(0,H.Y)(o.y$,{})}),s.length===Y&&(0,H.FD)("div",{css:(0,a.AH)({display:b?"flex":"none",flex:"1 1 auto",gap:16,flexDirection:"column"},"",""),children:[(0,H.Y)(Vt,{ref:m,onTimeUpdate:e=>{v(e.currentTarget.currentTime)},onPausePlay:e=>y(e),onReady:()=>x(!0)}),(0,H.Y)(Ft,{previewController:m,currentTime:g})]})]})};var Zt={name:"1kr2sal",styles:"display:flex;flex-direction:column;align-items:center;:not(:first-of-type){margin-top:32px;}"},Jt={name:"bjn8wh",styles:"position:relative"},er={name:"3vo0co",styles:"border-radius:4px;display:block;max-height:190px;margin:0 auto"},tr={name:"2dzgoj",styles:"position:absolute;bottom:0;right:0;left:0;color:white;background-color:rgba(30, 30, 30, 0.85);display:flex;justify-content:center;align-items:center;gap:8px;padding:12px;border-radius:0 0 4px 4px"},rr={name:"1kvnwqk",styles:"font-size:22px"},nr={name:"14is9qy",styles:"font-size:20px"};const ir=()=>{const{t:e,i18n:t}=(0,c.Bd)(),{recordings:r,title:n,presenter:i}=(0,f.pv)(),s=(0,f.wA)(),u=Ae(),p=r.map((()=>(0,l.useRef)(null)));return De(ke.finish.download,(()=>{for(const e of p)e.current?.click()})),r.map(((r,l)=>{const{deviceType:c,mimeType:h,url:m,downloaded:g,media:f}=r,b=e("desktop"===c?"sources-display":"sources-user"),x=(0,v.F2)({mime:h,flavor:b,title:n,presenter:i}),{isHighContrast:w}=(0,o.Ut)();return m?(0,H.FD)("div",{css:Zt,children:[(0,H.FD)("div",{css:Jt,children:[(0,H.Y)("video",{tabIndex:-1,muted:!0,src:m,onLoadedData:e=>e.currentTarget.currentTime=0,preload:"auto",css:er}),g&&(0,H.FD)("div",{css:tr,children:[(0,H.Y)(C.c9S,{css:rr}),e("steps.finish.save-locally.recording-saved")]})]}),(0,H.FD)("a",{ref:p[l],"aria-label":e(`steps.finish.save-locally.save-${c}-locally`),target:"_blank",download:x,href:m,rel:"noopener noreferrer",role:"button",onClick:()=>s({type:"MARK_DOWNLOADED",index:l}),onKeyDown:e=>{" "===e.key&&(e.preventDefault(),p[l].current?.click())},css:(0,a.AH)({...Br(w),justifyContent:"center",maxWidth:260,margin:"auto",marginTop:8},"",""),children:[(0,H.Y)(d.a4x,{css:nr}),e("steps.finish.save-locally.label")+" ("+zr(f.size,t)+")",u&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",right:-4,bottom:-4},"",""),children:(0,H.Y)(Re,{shortcut:ke.finish.download})})]})]},l):null}))};var or=r(2467),sr=r(9785);const ar="ocStudioLastPresenter";let lr=[];const dr=()=>{const e=(0,I.t0)(),{t:t}=(0,c.Bd)(),r=(0,lt.Z1)(),{recordings:n,upload:i,title:s,presenter:a,...d}=(0,f.pv)(),u=(0,f.wA)();function p(e){const t=Date.now();lr.push({timestamp:t,progress:e});const r=Math.min(lr.findIndex((e=>t-e.timestamp<5e3)),Math.max(0,lr.length-6));lr.splice(0,r);let n=null;if(lr.length>=4){const r=t-lr[0].timestamp,i=(e-lr[0].progress)/r*1e3,o=1-e;n=Math.max(0,Math.round(o/i))}i.secondsLeft===n&&i.currentProgress===e||u({type:"UPLOAD_PROGRESS_UPDATE",secondsLeft:n,currentProgress:e})}(0,l.useEffect)((()=>{const e=setInterval((()=>{if("uploading"===i.state)if(lr.length){const e=lr[lr.length-1];Date.now()-e.timestamp>3e3&&p(e.progress)}else p(0)}),1e3);return()=>clearInterval(e)}));const h=async i=>{u({type:"UPLOAD_REQUEST"}),lr.push({timestamp:Date.now(),progress:0});const s=await r.upload({recordings:n.filter(Boolean),title:i.title,presenter:i.presenter,series:i.series,uploadSettings:e.upload,onProgress:p,start:d.start,end:d.end,startTime:d.recordingStartTime??(0,o.HB)("no start time set"),endTime:d.recordingEndTime??(0,o.HB)("no end time set")});lr=[];const a=e=>u({type:"UPLOAD_ERROR",msg:e});(0,o.YW)(s,{success:()=>u({type:"UPLOAD_SUCCESS"}),network_error:()=>a(t("steps.finish.upload.upload-network-error")),not_authorized:()=>a(t("steps.finish.upload.upload-not-authorized")),unexpected_response:()=>a(t("steps.finish.upload.upload-invalid-response"))},(()=>a(t("steps.finish.upload.upload-unknown-error"))))};switch(i.state){case"uploading":return(0,H.Y)(Cr,{currentProgress:i.currentProgress,secondsLeft:i.secondsLeft});case"uploaded":return(0,H.Y)(Ar,{});default:return(0,H.Y)(mr,{uploadState:i,handleUpload:h})}};var cr={name:"q3psig",styles:"font-size:16px;font-weight:700;margin-top:20px"},ur={name:"14is9qy",styles:"font-size:20px"},pr={name:"hkh81z",styles:"margin-top:8px"},hr={name:"ti75j2",styles:"margin:0"};const mr=e=>{let{handleUpload:t}=e;const{titleField:r="required",presenterField:n="required",seriesField:i="optional",autofillPresenter:s=[]}=(0,I.t0)().upload??{},{t:u,i18n:p}=(0,c.Bd)(),h=(0,lt.Z1)(),m=(0,f.wA)(),g=(0,I.CA)(),{title:v,presenter:b,upload:x,recordings:w}=(0,f.pv)(),y=b||window.localStorage.getItem(ar)||s.map((e=>(0,o.YW)(e,{opencast:()=>h.getUsername()}))).find(Boolean)||"",[Y,k]=(0,l.useState)("idle"),{formState:{errors:S},handleSubmit:C,register:D,control:A,getValues:R}=(0,sr.mN)({defaultValues:g.formValues().opencast}),{field:E}=(0,sr.as)({name:"series",control:A,rules:{required:"required"===i&&u("steps.finish.upload.validation-error-required")}});function F(e){const t=e.target;m({type:(0,o.d6)({title:"UPDATE_TITLE",presenter:"UPDATE_PRESENTER"}[t.name]),value:t.value}),"presenter"===t.name&&window.localStorage.setItem(ar,t.value)}(0,l.useEffect)((()=>{y!==b&&m({type:"UPDATE_PRESENTER",value:y})}),[]);const T=g.isConfigurable("opencast.serverUrl"),L=g.isUsernameConfigurable(),O=g.isPasswordConfigurable(),B=T||L||O,z=e=>({serverUrl:e.serverUrl,loginName:e.loginName,loginPassword:e.loginPassword}),P=w.reduce(((e,t)=>e+t.media.size),0),$=zr(P,p),{isHighContrast:M}=(0,o.Ut)(),j=async()=>{const e=R(),t=g.settings().opencast;if(!(e.serverUrl&&e.serverUrl!==t?.serverUrl||e.loginName&&e.loginName!==t?.loginName||e.loginPassword&&e.loginPassword!==t?.loginPassword))return;const r=z(e),n=await lt.cI.init({...g.settings().opencast,...r});"logged_in"===n.getState()&&(h.setGlobalInstance(n),g.saveSettings({opencast:r}))};return(0,H.FD)(H.FK,{children:[(0,H.FD)("form",{onSubmit:C((async e=>{if(!B)return void await t(e);console.log(e),k("testing");const r=z(e),n=await lt.cI.init({...g.settings().opencast,...r}),i=(0,o.YW)(n.getState(),{logged_in:()=>(h.setGlobalInstance(n),g.saveSettings({opencast:r}),null),incorrect_login:()=>h.isLoginProvided()?u("steps.finish.upload.settings-invalid-provided-login"):u("steps.finish.upload.settings-invalid-login-data"),network_error:()=>u("steps.finish.upload.upload-network-error"),invalid_response:()=>u("steps.finish.upload.upload-invalid-response"),response_not_ok:()=>u("steps.finish.upload.upload-invalid-response")},(()=>(0,o.HB)()));i?(m({type:"UPLOAD_ERROR",msg:i}),k("idle")):await t(e)})),children:["hidden"!==r&&(0,H.Y)(fr,{name:"title",label:u("steps.finish.upload.label-title"),required:"required"===r,onChange:F,autoComplete:"off",defaultValue:v,autoFocus:!0,errors:S,register:D}),"hidden"!==n&&(0,H.Y)(fr,{name:"presenter",label:u("steps.finish.upload.label-presenter"),required:"required"===n,onChange:F,autoComplete:"off",defaultValue:y,errors:S,register:D}),"hidden"!==i&&(0,H.Y)(wr,{formProps:E,showOpencastSection:B,errors:S}),B&&(0,H.FD)(H.FK,{children:[(0,H.Y)("h3",{css:cr,children:u("steps.finish.upload.settings-header")}),T&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-server-url"),name:"serverUrl",register:D,onBlur:j,required:!0,validate:e=>{try{const t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol||u("steps.finish.upload.settings-invalid-url-http-start")}catch{let t=u("steps.finish.upload.settings-invalid-url");return e.startsWith("https://")||e.startsWith("http://")||(t+=" "+u("steps.finish.upload.settings-invalid-url-http-start")),t}}}),L&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-username"),name:"loginName",register:D,onBlur:j,required:!0}),O&&(0,H.Y)(fr,{errors:S,label:u("steps.finish.upload.settings-label-password"),name:"loginPassword",register:D,onBlur:j,required:!0,type:"password"})]}),(0,H.FD)(o.b1,{type:"submit",css:(0,a.AH)({...Br(M),margin:"0 auto",marginTop:24},"",""),children:[(0,o.YW)(Y,{idle:()=>(0,H.Y)(d.B88,{css:ur}),testing:()=>(0,H.Y)(o.y$,{size:20})}),(0,H.Y)("span",{children:u("steps.finish.upload.label")+" ("+$+")"})]})]}),(0,H.Y)("div",{css:pr,children:"error"===x.state&&(0,H.Y)(U,{css:hr,body:(0,o.d6)(x.error),extraBody:u("steps.finish.upload.warn-download-hint")})})]})};var gr={name:"cn3xcj",styles:"margin-bottom:12px"},vr={name:"mk6g3b",styles:"display:block;box-sizing:border-box;position:relative;text-align:left"};const fr=e=>{let{errors:t,register:r,label:n,name:i,required:o,validate:s,type:d="text",...u}=e;const{t:p}=(0,c.Bd)(),h=t[i],m=(0,l.useId)();return(0,H.FD)("div",{css:gr,children:[(0,H.Y)("label",{htmlFor:m,css:(0,a.AH)({display:"block",fontWeight:700,color:v.lm.neutral70,margin:"4px 0",fontSize:14},"",""),children:n}),(0,H.FD)("div",{css:vr,children:[(0,H.Y)("input",{id:m,"aria-invalid":h?"true":"false","aria-describedby":h?`${i}Error`:m,autoComplete:"off",type:d,...u,...r(i,{validate:s,onChange:u.onChange,onBlur:u.onBlur,...o&&{required:p("steps.finish.upload.validation-error-required")}}),css:(0,a.AH)({display:"block",width:"100%",borderRadius:4,border:`1px solid ${h?v.lm.danger4:v.lm.neutral30}`,backgroundColor:v.lm.neutral00,color:v.lm.neutral70,padding:"8px 16px",...(0,v.Y$)({offset:-1})},"","")}),h&&(0,H.Y)(br,{id:`${i}Error`,children:h.message})]})]})},br=e=>{let{id:t,children:r}=e;return(0,H.Y)("div",{id:t,css:(0,a.AH)({backgroundColor:v.lm.danger1,color:v.lm.danger5,marginTop:4,borderRadius:4,padding:"6px 12px",lineHeight:1.2},"",""),children:r})};var xr={name:"cn3xcj",styles:"margin-bottom:12px"};const wr=e=>{let{formProps:t,showOpencastSection:r,errors:n}=e;const{t:i,i18n:s}=(0,c.Bd)(),d=(0,lt.Z1)(),{scheme:u}=(0,o.Ut)(),p=(0,I.t0)().upload?.seriesId,[h,m]=(0,l.useState)(null),g=(0,l.useRef)(null);(0,l.useEffect)((()=>{m(null),d.getSeries().then((e=>{const t=[...e.entries()].map((e=>{let[t,r]=e;return{value:t,label:r}}));if(t.sort(((e,t)=>e.label.localeCompare(t.label,s.language,{sensitivity:"base"}))),p){const r=e.get(p),n={label:r??i("steps.finish.upload.series-unknown"),value:p};null==r&&t.push(n),g.current?.setValue(n,"select-option")}m(t)}),(e=>{console.log("Error fetching series: ",e),m("error")}))}),[d]);const f=(0,l.useId)(),b=(0,l.useId)(),x="error"===h;return(0,H.FD)("div",{css:xr,children:[(0,H.Y)("label",{htmlFor:f,css:(0,a.AH)({display:"block",fontWeight:700,color:v.lm.neutral70,margin:"4px 0",fontSize:14},"",""),children:i("steps.finish.upload.label-series")}),(0,H.Y)(or.Ay,{id:f,ref:g,options:h&&"error"!==h?h:[],isLoading:null===h,isDisabled:"error"===h,isClearable:!0,isSearchable:!0,onChange:e=>t.onChange(e?.value),onBlur:t.onBlur,"aria-invalid":x?"true":"false","aria-describedby":x?b:f,placeholder:i("steps.finish.upload.series-placeholder"),loadingMessage:()=>i("steps.finish.upload.series-loading"),noOptionsMessage:()=>i("steps.finish.upload.series-none"),styles:yr(u.startsWith("dark"),u.endsWith("high-contrast")),theme:e=>({...e,colors:{...e.colors,danger:v.lm.danger0,primary:v.lm.focus,neutral0:v.lm.neutral00,neutral5:v.lm.neutral15,neutral10:v.lm.neutral20,neutral20:v.lm.neutral30,neutral30:v.lm.neutral40,neutral40:v.lm.neutral50,neutral50:v.lm.neutral50,neutral60:v.lm.neutral60,neutral70:v.lm.neutral70,neutral80:v.lm.neutral80,neutral90:v.lm.neutral90}})}),x&&(0,H.FD)(br,{id:b,children:[i("steps.finish.upload.series-fetch-error"),r&&" "+i("steps.finish.upload.series-connection-settings-hint")]}),n.series&&(0,H.Y)(br,{id:b,children:n.series.message})]})},yr=(e,t)=>({control:(e,t)=>({...e,backgroundColor:v.lm.neutral00,paddingLeft:8,...!t.isFocused&&{borderColor:v.lm.neutral30},...t.isFocused&&{boxShadow:`0 0 0 1.5px ${v.lm.focus}`}}),input:e=>({...e,color:v.lm.neutral80,padding:"4px 0"}),placeholder:e=>({...e,color:v.lm.neutral60}),singleValue:e=>({...e,color:v.lm.neutral90}),menuList:e=>({...e,padding:0}),menu:r=>({...r,...e&&{outline:`1px solid ${v.lm.neutral20}`},...t&&{outline:`1px solid ${v.lm.neutral90}`},backgroundColor:e?v.lm.neutral10:v.lm.neutral05,overflow:"hidden"}),option:(r,n)=>({cursor:"default",padding:"6px 10px",borderLeft:`4px solid ${n.isSelected?v.lm.focus:"transparent"}`,...t&&n.isFocused&&{outline:`2px solid ${v.lm.neutral90}`,outlineOffset:-3},...(n.isFocused||n.isSelected)&&!t&&{backgroundColor:e?v.lm.neutral25:v.lm.neutral10}})});var Yr={name:"1j389vi",styles:"font-weight:700"},kr={name:"zjik7",styles:"display:flex"},Sr={name:"82a6rk",styles:"flex:1"};const Cr=e=>{let{currentProgress:t,secondsLeft:r}=e;const{t:n,i18n:i}=(0,c.Bd)(),o=Math.min(100,100*t).toLocaleString(i.language,{minimumFractionDigits:1,maximumFractionDigits:1});let s;return s=null===r?null:r<4?n("steps.finish.upload.time.a-few-seconds"):r<45?`${r} ${n("steps.finish.upload.time.seconds")}`:r<90?n("steps.finish.upload.time.a-minute"):r<2700?`${Math.round(r/60)} ${n("steps.finish.upload.time.minutes")}`:r<5400?n("steps.finish.upload.time.an-hour"):r<86400?`${Math.round(r/3600)} ${n("steps.finish.upload.time.hours")}`:null,(0,H.FD)(Rr,{children:[(0,H.Y)("div",{css:Yr,children:n("steps.finish.upload.currently-uploading")}),(0,H.Y)("div",{css:(0,a.AH)({marginTop:16,marginBottom:8,height:6,borderRadius:3,backgroundColor:v.lm.neutral05,overflow:"hidden"},"",""),children:(0,H.Y)("div",{css:(0,a.AH)({width:100*t+"%",height:"100%",backgroundColor:v.lm.accent5},"","")})}),(0,H.FD)("div",{css:kr,children:[(0,H.FD)("div",{children:[o,"%"]}),(0,H.Y)("div",{css:Sr}),(0,H.Y)("div",{children:s&&(0,H.FD)(c.x6,{i18nKey:"steps.finish.upload.time.left",children:[{time:s}," left"]})})]})]})};var Dr={name:"1j389vi",styles:"font-weight:700"};const Ar=()=>{const{t:e}=(0,c.Bd)();return(0,H.FD)(Rr,{children:[(0,H.Y)("div",{css:Dr,children:e("steps.finish.upload.complete")}),(0,H.Y)("div",{css:(0,a.AH)({fontSize:50,margin:24,lineHeight:0,color:v.lm.accent5},"",""),children:(0,H.Y)(C.c9S,{})}),(0,H.Y)("div",{children:e("steps.finish.upload.complete-explanation")})]})},Rr=e=>{let{children:t}=e;return(0,H.Y)("div",{css:(0,a.AH)({backgroundColor:v.lm.neutral10,fontSize:14,marginTop:24,padding:24,borderRadius:6,textAlign:"center"},"",""),children:t})};var Er={name:"s8j37n",styles:"height:calc(35%)"},Hr={name:"1ya0myq",styles:"height:calc(65%)"};const Fr=e=>{let{goToPrevStep:t,goToFirstStep:r}=e;const{t:n}=(0,c.Bd)(),{recordings:i,upload:s}=(0,f.pv)(),l=(0,f.wA)(),u=(0,I.t0)(),p=i.every((e=>e.downloaded)),h=("uploaded"===s.state||p)&&"uploading"!==s.state,m="not_uploaded"!==s.state||p,g={label:n("steps.finish.new-recording"),icon:(0,H.Y)(C.vAB,{}),onClick:()=>{window.confirm(n("steps.finish.new-recording-warning"))&&(l({type:"RESET"}),r())}},v=Or(u),b=v?{label:n("steps.finish.finish-button"),disabled:!h,popoverEntries:[g,{label:u.return?.label?n("steps.finish.return-to",{label:u.return.label}):n("steps.finish.return-to-no-label"),href:v,icon:(0,H.Y)(d.q_G,{})}]}:{disabled:!h,...g};return De(ke.finish.startNewRecording,g.onClick,{enabled:h}),(0,H.FD)(_e,{title:n("steps.finish.label"),prevButton:m?void 0:{onClick:t},nextButton:b,children:[(0,H.Y)("div",{css:Er}),(0,H.FD)("div",{css:(0,a.AH)({display:"flex",justifyContent:"center",alignItems:"start",gap:16,[(0,o.pi)(700)]:{flexDirection:"column",alignItems:"center"}},"",""),children:[(0,H.Y)(Lr,{title:n("steps.finish.upload.label"),children:(0,H.Y)(dr,{})}),(0,H.Y)(Lr,{title:n("steps.finish.save-locally.label"),children:(0,H.Y)(ir,{})})]}),(0,H.Y)("div",{css:Hr})]})};var Tr={name:"15ara9j",styles:"text-align:center;font-size:20px;font-weight:700;margin-bottom:12px"};const Lr=e=>{let{title:t,children:r}=e;const{isHighContrast:n}=(0,o.Ut)();return(0,H.FD)("div",{css:(0,a.AH)({maxWidth:420,width:"100%",backgroundColor:v.lm.neutral05,boxShadow:n?"none":"0 4px 16px var(--shadow-color)",border:`1px solid ${v.lm.neutral15}`,padding:"24px 32px",borderRadius:6,minHeight:330},"",""),children:[(0,H.Y)("h2",{css:Tr,children:t}),r]})},Or=e=>{if(!e.return?.target)return null;let t;try{t=new URL(e.return.target,window.location.href)}catch{return null}return![window.location.hostname,...e.return?.allowedDomains||[]].some((e=>t.hostname===e))||"https:"!==t.protocol&&"http:"!==t.protocol?null:e.return.target},Br=e=>({display:"flex",alignItems:"center",padding:"8px 12px",gap:12,borderRadius:8,textDecoration:"none",position:"relative",":not([disabled])":{color:v.lm.neutral05,cursor:"pointer",backgroundColor:v.lm.accent7,":hover":{backgroundColor:v.lm.accent8,...e&&{backgroundColor:v.lm.neutral15,outline:`2px solid ${v.lm.accent8}`,color:v.lm.neutral20}}},"&[disabled]":{backgroundColor:v.lm.neutral15,color:v.lm.neutral70},...(0,v.Y$)({offset:1})}),zr=(e,t)=>{const r=e=>{const r=e<10?1:0;return e.toLocaleString(t.language,{minimumFractionDigits:r,maximumFractionDigits:r})};return e<1e3?`${e} B`:e<999500?`${r(e/1e3)} KB`:e<9995e5?`${r(e/1e6)} MB`:`${r(e/1e9)} GB`},Ur=["video-select","audio-select","recording","review","finish"],Ir=e=>Ur.indexOf(e),Pr=e=>{let{inert:t}=e;const[r,n]=(0,l.useState)("video-select"),i={goToNextStep:()=>n((0,o.d6)(Ur[Ir(r)+1])),goToPrevStep:()=>n((0,o.d6)(Ur[Ir(r)-1])),goToFirstStep:()=>n("video-select")};return(0,H.FD)("main",{inert:t?"":null,css:(0,a.AH)({display:"flex",flex:1,backgroundColor:v.lm.neutral10,[(0,o.pi)(v.LO.large)]:{flexDirection:"column-reverse"}},"",""),children:[(0,H.Y)($r,{currentStep:r}),(0,o.YW)(r,{"video-select":()=>(0,H.Y)(Xe,{...i}),"audio-select":()=>(0,H.Y)(at,{...i}),recording:()=>(0,H.Y)(bt,{...i}),review:()=>(0,H.Y)(Qt,{...i}),finish:()=>(0,H.Y)(Fr,{...i})})]})},$r=e=>{let{currentStep:t}=e;const{t:r}=(0,c.Bd)(),{isHighContrast:n}=(0,o.Ut)(),i=Ir(t),s=[r("steps.video.label"),r("steps.audio.label"),r("steps.record.label"),r("steps.review.label"),r("steps.finish.label")],l="calc(8px + max(0px, 20% - 44px))";return(0,H.Y)("div",{css:(0,a.AH)({position:"relative",flexShrink:"0",backgroundColor:v.lm.neutral05,...n&&{borderRight:`1px solid ${v.lm.neutral90}`},[(0,o.aO)(v.LO.large)]:{width:160,minWidth:160},[(0,o.pi)(v.LO.large)]:{height:42}},"",""),children:(0,H.FD)("div",{css:(0,a.AH)({position:"absolute",display:"flex",justifyContent:"space-between",[(0,o.aO)(v.LO.large)]:{flexDirection:"column",left:8,top:l,bottom:l},[(0,o.pi)(v.LO.large)]:{flexDirection:"row",top:8,left:l,right:l}},"",""),children:[s.map(((e,t)=>{let r;return r=tl.createElement("svg",qr({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24"},e),Mr||(Mr=l.createElement("rect",{width:22,height:14,x:1,y:5,rx:1,ry:1})),jr||(jr=l.createElement("path",{d:"M6 9h.001M10 9zM14 9zM18 9h.001M8 12zM12 12zM16 12h.001M6 15h12"}))),Kr=[{short:"en",long:"English",rtl:!1},{short:"de",long:"Deutsch",rtl:!1},{short:"nl",long:"Nederlands",rtl:!1},{short:"es",long:"Español",rtl:!1},{short:"fa",long:"فارسی",rtl:!0},{short:"fr",long:"Français",rtl:!1},{short:"sl",long:"Slovenščina",rtl:!1},{short:"zh",long:"简体中文",rtl:!1}];const Vr=e=>{let{setOverlayBoxState:t,inert:r}=e;const{scheme:n,isHighContrast:i}=(0,o.Ut)();return(0,H.FD)("header",{inert:r?"":null,css:(0,a.AH)({backgroundColor:(0,o.YW)(n,{light:()=>v.lm.neutral60,dark:()=>v.lm.neutral20,"dark-high-contrast":()=>"black","light-high-contrast":()=>"black"}),color:i?"white":"inherit",height:"var(--header-height)",display:"flex",justifyContent:"space-between",..."dark-high-contrast"===n?{borderBottom:"1px solid white"}:{paddingBottom:1}},"",""),children:[(0,H.Y)(Gr,{}),(0,H.Y)(Xr,{setOverlayBoxState:t})]})},Gr=()=>{const e=e=>_r.h.publicPath+e;return(0,H.FD)("picture",{css:(0,a.AH)({height:"100%",display:"flex",opacity:"dark"===(0,o.Ut)().scheme?.8:1,paddingLeft:8,alignItems:"center","> *":{height:"calc(100% - 12px)"},[(0,o.pi)(410)]:{paddingLeft:0}},"",""),children:[(0,H.Y)("source",{media:"(min-width: 920px)",srcSet:e("logo-wide.svg")}),(0,H.Y)("img",{src:e("logo-narrow.svg"),alt:"Opencast Studio Logo"})]})},Xr=e=>{let{setOverlayBoxState:t}=e;return(0,H.FD)("div",{css:(0,a.AH)({display:"flex",gap:16,height:"100%",alignItems:"center",paddingRight:24,[(0,o.pi)(410)]:{gap:2,paddingRight:8}},"",""),children:[(0,H.Y)(Qr,{}),(0,H.Y)(Zr,{}),(0,H.Y)(en,{open:()=>t("shortcuts")}),(0,H.Y)(Jr,{open:()=>t("info")})]})},Qr=()=>{const{t:e,i18n:t}=(0,c.Bd)(),r=e=>e===t.resolvedLanguage,n=Object.values(Kr).map((e=>(0,o.GK)({checked:r(e.short),children:(0,H.Y)(H.FK,{children:e.long}),onClick:()=>{r(e.short)||t.changeLanguage(e.short)}}))),i=e("header.language.label");return(0,H.Y)(o.Tc,{menu:{label:i,items:n,breakpoint:v.LO.small},children:(0,H.Y)(tn,{icon:(0,H.Y)(Wr.sIu,{}),label:i})})},Zr=()=>{const{t:e}=(0,c.Bd)(),{scheme:t,isAuto:r,update:n}=(0,o.Ut)(),i=r?"auto":t,s=["auto","light","dark","light-high-contrast","dark-high-contrast"].map((t=>(0,o.GK)({checked:i===t,children:(0,H.Y)(H.FK,{children:e(`header.theme.${t}`)}),onClick:()=>n(t)})));return(0,H.Y)(o.Tc,{menu:{label:e("header.theme.label"),items:s,breakpoint:v.LO.small},children:(0,H.Y)(tn,{icon:(0,H.Y)(d.hkc,{}),label:e("header.theme.label")})})},Jr=e=>{let{open:t}=e;const{t:r}=(0,c.Bd)();return(0,H.Y)(tn,{onClick:t,icon:(0,H.Y)(d.S8s,{}),label:r("header.info.label")})},en=e=>{let{open:t}=e;const{t:r}=(0,c.Bd)();De(ke.general.showOverview,t,{ignoreModifiers:!0});const n=Ae();return(0,H.Y)(tn,{onClick:t,icon:(0,H.Y)(Nr,{}),label:r("shortcuts.label"),children:n&&(0,H.Y)("div",{css:(0,a.AH)({position:"absolute",bottom:-20,left:20,padding:2,borderRadius:4,backgroundColor:v.lm.neutral05},"",""),children:(0,H.Y)(Re,{shortcut:ke.general.showOverview})})})},tn=(0,l.forwardRef)(((e,t)=>{let{icon:r,label:n,children:i,...s}=e;const{scheme:l,isHighContrast:d}=(0,o.Ut)();return(0,H.FD)(o.b1,{...s,ref:t,css:(0,a.AH)({position:"relative",display:"flex",gap:8,alignItems:"center",fontSize:16,fontFamily:"inherit",fontWeight:500,color:(0,o.YW)(l,{light:()=>v.lm.neutral05,dark:()=>v.lm.neutral90,"dark-high-contrast":()=>"white","light-high-contrast":()=>"white"}),borderRadius:6,padding:"6px 8px",":hover, :active":{outline:`2px solid ${d?"#aaa":v.lm.neutral50}`,backgroundColor:(0,o.YW)(l,{light:()=>v.lm.neutral70,dark:()=>v.lm.neutral10,"dark-high-contrast":()=>"none","light-high-contrast":()=>"none"})},...(0,v.Y$)({},(0,o.YW)(l,{light:()=>v.lm.neutral10,dark:()=>v.lm.accent8,"dark-high-contrast":()=>"#aaa","light-high-contrast":()=>"#aaa"})),"> svg":{fontSize:22,"@media (max-width: 770px)":{fontSize:26}}},"",""),children:[r,(0,H.Y)("span",{css:(0,a.AH)({"@media (max-width: 770px)":{display:"none"}},"",""),children:n}),i]})}));var rn={name:"tnb0o9",styles:"svg{margin-right:8px;vertical-align:middle;}"};const nn=e=>{let{close:t}=e;return(0,H.Y)(dn,{maxWidth:800,close:t,title:"Opencast Studio",children:(0,H.FD)("article",{css:(0,a.AH)({p:{margin:"8px 0"},h2:{marginTop:24,marginBottom:4,fontSize:21},a:{color:v.lm.accent7,"&:hover":{textDecoration:"none",color:v.lm.accent8}}},"",""),children:[(0,H.FD)("p",{children:["A web-based recording studio for ",(0,H.Y)("a",{href:"https://opencast.org",children:"Opencast"}),"."]}),(0,H.Y)("p",{children:"Opencast Studio allows you to record your camera, your display and your microphoneʼs audio. You can then either download your recordings or upload them directly to an Opencast instance (usually the one of your university)."}),(0,H.FD)("p",{children:["This is free software under the terms of the"," ",(0,H.Y)("a",{href:"https://github.com/elan-ev/opencast-studio/blob/master/LICENSE",children:"MIT License"})," ","developed by the ",(0,H.Y)("a",{href:"https://elan-ev.de",children:"elan e.V."})," in cooperation with the ",(0,H.Y)("a",{href:"https://ethz.ch",children:"ETH Zürich"}),"."]}),(0,H.Y)("h2",{children:"How it works"}),(0,H.Y)("p",{children:"Opencast Studio uses the recording capabilities built into modern browsers to record audio and video streams. The recording happens in the userʼs browser and no server is involved in the recording."}),_r.h.showLegalNotices&&(0,H.FD)(l.Fragment,{children:[(0,H.Y)("h2",{children:"Support"}),(0,H.FD)("p",{children:["If you are experiencing any difficulties or found any bugs, please take a look at the"," ",(0,H.Y)("a",{href:"https://github.com/elan-ev/opencast-studio/issues",children:"issue tracker on GitHub"}),". Before filing a new issue, please check if one about your topic already exists. We regularly check incoming issues and do our best to address bugs in a timely manner."]}),(0,H.FD)("p",{children:["If you are interested in additional development or want to support the development of Opencast Studio, please contact"," ",(0,H.Y)("a",{href:"mailto:office@elan-ev.de",children:"office@elan-ev.de"}),"."]})]}),(0,H.Y)("h2",{children:"Credits"}),(0,H.Y)("p",{children:"Thanks to the following people and institutions for contributing to this project:"}),(0,H.FD)("ul",{children:[(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/slampunk",children:"Duncan Smith"})," for starting this project"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/cilt-uct",children:"University of Cape Town (CILT)"})," ","for letting Duncan start the project"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://ethz.ch",children:"ETH Zürich"})," for financial support and testing"]}),(0,H.FD)("li",{children:[(0,H.Y)("a",{href:"https://github.com/elan-ev",children:"elan e.V."})," for the re-implementation and the ongoing development"]}),(0,H.Y)("li",{children:"And many members from the Opencast community who helped along the way."})]}),_r.h.showLegalNotices&&(0,H.FD)(H.FK,{children:[(0,H.Y)("h2",{children:"elan e.V."}),(0,H.Y)("p",{children:"The e-learning academic network (elan e.V.) is a German non-profit organization supporting higher-education organizations in all matters related to e-learning. Our services include practical tips about how to use digital technologies in education, legal advice and development of free, open-source software to support education."}),(0,H.Y)("h3",{children:"Contact"}),(0,H.FD)("p",{children:["Dr. Norbert Kleinefeld, Geschäftsführer",(0,H.Y)("br",{}),"Karlstr. 23",(0,H.Y)("br",{}),"D-26123 Oldenburg"]}),(0,H.FD)("p",{css:rn,children:[(0,H.Y)(d.VeH,{}),(0,H.Y)("a",{href:"https://elan-ev.de",children:"elan-ev.de"}),(0,H.Y)("br",{}),(0,H.Y)(d.pHD,{}),(0,H.Y)("a",{href:"mailto:office@elan-ev.de",children:"kontakt@elan-ev.de"}),(0,H.Y)("br",{}),(0,H.Y)(d.QFc,{}),(0,H.Y)("a",{href:"tel:+4944199866610",children:"+49 441 998 666 10"})]}),(0,H.FD)("p",{children:["Registergericht: Amtsgericht Oldenburg",(0,H.Y)("br",{}),"Registernummer: VR 200644",(0,H.Y)("br",{}),"USt.-ID-Nr.: DE 265901392"]})]}),(0,H.Y)("h2",{children:"Version"}),(0,H.FD)("p",{children:["Build date ",_r.h.buildDate??"?",", commit"," ",(0,H.Y)("a",{"aria-label":"Git commit on GitHub",href:"https://github.com/elan-ev/opencast-studio/commit/"+_r.h.commitSha,children:_r.h.commitSha??"?"}),"."]})]})})},on=()=>{const[e,t]=(0,l.useState)("none"),r=()=>t("none");De(ke.general.closeOverlay,r);const n="none"!==e;return(0,H.FD)("div",{css:(0,a.AH)({"--header-height":"64px",display:"flex",flexDirection:"column",height:"100%",..."none"!==e&&{overflowY:"hidden"}},"",""),children:[(0,H.Y)(Vr,{inert:n,setOverlayBoxState:t}),(0,o.YW)(e,{none:()=>null,info:()=>(0,H.Y)(nn,{close:r}),shortcuts:()=>(0,H.Y)(He,{close:r})}),(0,H.Y)(Pr,{inert:n})]})};var sn={name:"4dbrlo",styles:"position:absolute;top:0;left:0;right:0;bottom:0;padding:32px 8px;z-index:800;background-color:rgba(0, 0, 0, 0.3);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;@media (min-height: 400px){padding-top:calc(var(--header-height) + 32px);}"},an={name:"1ere486",styles:"margin-bottom:8px;font-size:26px"},ln={name:"1suo034",styles:"padding-right:16px;overflow-y:auto"};const dn=e=>{let{close:t,title:r,children:n,maxWidth:i}=e;const s="light"===(0,o.Ut)().scheme,{isHighContrast:c}=(0,o.Ut)(),u=(0,l.useRef)(null);(0,o.gH)(u,t);const p=s||c?v.lm.neutral05:v.lm.neutral15;return(0,H.Y)("div",{role:"dialog","aria-modal":"true",css:sn,children:(0,H.FD)("div",{ref:u,css:(0,a.AH)({position:"relative",backgroundColor:p,borderRadius:8,padding:"24px 24px 32px 48px",width:"82%",flex:"0 1 auto",minHeight:0,maxWidth:i,display:"flex",flexDirection:"column",boxShadow:c?"none":"0 4px 16px var(--shadow-color))",outline:c?"2px solid var(--color-neutral90)":"none",[(0,o.pi)(850)]:{padding:24,paddingLeft:32},[(0,o.pi)(480)]:{width:"95%",padding:"12px 20px"}},"",""),children:[(0,H.Y)(d.yGN,{onClick:t,css:(0,a.AH)({position:"absolute",top:8,right:8,backgroundColor:p,borderRadius:"50%",fontSize:40,padding:4,cursor:"pointer"},"","")}),(0,H.Y)("h1",{css:an,children:r}),(0,H.Y)("div",{css:ln,children:n})]})})},cn=()=>(0,H.FD)(H.FK,{children:[(0,H.Y)(a.mL,{styles:pn}),(0,H.Y)(a.mL,{styles:un})]}),un={name:"cvwxji",styles:":root{--min-page-width:320px;}body{font-family:'Roboto Flex Variable', 'Vazirmatn Variable', sans-serif;font-weight:400;line-height:1.5;font-size:16px;min-width:var(--min-page-width);}"},pn={name:"wn0kj0",styles:"*, *::before, *::after{box-sizing:border-box;}body, h1, h2, h3, h4, p, li, figure, figcaption, blockquote, dl, dd, pre{margin:0;}html, body, body > #root{height:100%;}a{text-decoration-skip-ink:auto;}input, button, textarea, select{font:inherit;margin:0;}"},hn=()=>(0,H.FD)(H.FK,{children:[(0,H.Y)(cn,{}),(0,H.Y)(mn,{}),(0,H.Y)(o.Sv,{children:(0,H.Y)(on,{})})]}),mn=()=>{const{recordings:e,upload:t}=(0,f.pv)(),r=e.every((e=>e.downloaded)),n="uploaded"===t.state,i="uploading"===t.state;return(0,s.S)((t=>{(e?.length>0&&!n&&!r||i)&&t.preventDefault()})),null}}}]); //# sourceMappingURL=963.bundle.js.map \ No newline at end of file diff --git a/963.bundle.js.map b/963.bundle.js.map index 064f8421..8fe83495 100644 --- a/963.bundle.js.map +++ b/963.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"963.bundle.js","mappings":"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","sources":["webpack://opencast-studio/./src/icons/step-current.svg","webpack://opencast-studio/./src/icons/step-done.svg","webpack://opencast-studio/./src/capturer.tsx","webpack://opencast-studio/./src/ui/VideoBox.tsx","webpack://opencast-studio/./src/ui/ErrorBox.tsx","webpack://opencast-studio/./src/ui/Select.tsx","webpack://opencast-studio/./src/steps/video-setup/prefs.tsx","webpack://opencast-studio/./src/steps/video-setup/preview.tsx","webpack://opencast-studio/./src/shortcuts.tsx","webpack://opencast-studio/./src/steps/elements.tsx","webpack://opencast-studio/./src/ui/SourceOptionButton.tsx","webpack://opencast-studio/./src/steps/video-setup/source-select.tsx","webpack://opencast-studio/./src/steps/video-setup/index.tsx","webpack://opencast-studio/./src/steps/audio-setup/source-select.tsx","webpack://opencast-studio/./src/steps/audio-setup/mic-preview.tsx","webpack://opencast-studio/./src/steps/audio-setup/index.tsx","webpack://opencast-studio/./src/steps/recording/controls.tsx","webpack://opencast-studio/./src/steps/recording/recorder.tsx","webpack://opencast-studio/./src/steps/recording/index.tsx","webpack://opencast-studio/./src/steps/review/cut-here-icon.svg","webpack://opencast-studio/./src/steps/review/cut-marker.svg","webpack://opencast-studio/./src/steps/review/control-box.tsx","webpack://opencast-studio/./src/steps/review/cut-out-icon.svg","webpack://opencast-studio/./src/steps/review/preview.tsx","webpack://opencast-studio/./src/steps/review/index.tsx","webpack://opencast-studio/./src/steps/finish/save-locally.tsx","webpack://opencast-studio/./src/steps/finish/upload.tsx","webpack://opencast-studio/./src/steps/finish/index.tsx","webpack://opencast-studio/./src/steps/index.tsx","webpack://opencast-studio/./src/icons/keyboard.svg","webpack://opencast-studio/./src/i18n/languages.tsx","webpack://opencast-studio/./src/layout/header.tsx","webpack://opencast-studio/./src/about.tsx","webpack://opencast-studio/./src/layout/index.tsx","webpack://opencast-studio/./src/ui/global-style.tsx","webpack://opencast-studio/./src/App.tsx"],"sourcesContent":["var _circle, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStepCurrent = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n className: \"step-current_svg__feather step-current_svg__feather-circle\",\n viewBox: \"0 0 24 24\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10\n})), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 3,\n fill: \"currentColor\"\n})));\nexport default SvgStepCurrent;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStepDone = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"step-done_svg__feather step-done_svg__feather-circle\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 1A11 11 0 0 0 1 12a11 11 0 0 0 11 11 11 11 0 0 0 11-11A11 11 0 0 0 12 1m5 7a1 1 0 0 1 .707.293 1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414 1 1 0 0 1 1.414 0L10 14.586l6.293-6.293A1 1 0 0 1 17 8\"\n})));\nexport default SvgStepDone;","import { Settings } from \"./settings\";\nimport { Dispatcher } from \"./studio-state\";\n\n\nconst mergeHeightConstraint = (\n maxHeight: number | undefined,\n videoConstraints: MediaTrackConstraints,\n fallbackIdeal?: number,\n) => {\n const maxField = maxHeight && { max: maxHeight };\n const constraintIdeal = typeof videoConstraints?.height === \"number\"\n ? videoConstraints.height\n : videoConstraints.height?.ideal;\n const ideal = constraintIdeal ?? fallbackIdeal;\n const idealField = ideal && (maxHeight ? { ideal: Math.min(ideal, maxHeight) } : { ideal });\n\n return { height: { ...maxField, ...idealField } };\n};\n\nexport async function startAudioCapture(dispatch: Dispatcher, deviceId?: ConstrainDOMString) {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: deviceId ? { deviceId } : true,\n video: false,\n });\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"AUDIO_UNEXPECTED_END\" });\n };\n });\n\n dispatch({ type: \"SHARE_AUDIO\", stream });\n } catch (err) {\n // TODO: there several types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_AUDIO\" });\n }\n}\n\nexport async function startDisplayCapture(\n dispatch: Dispatcher,\n settings: Settings,\n videoConstraints: MediaTrackConstraints = {},\n) {\n const maxFps = settings.display?.maxFps\n ? { frameRate: { max: settings.display.maxFps } }\n : {};\n const height = mergeHeightConstraint(settings.display?.maxHeight, videoConstraints);\n\n const constraints = {\n video: {\n cursor: \"always\",\n ...maxFps,\n ...videoConstraints,\n ...height,\n },\n audio: true,\n };\n\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia(constraints);\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"DISPLAY_UNEXPECTED_END\" });\n };\n });\n\n dispatch({ type: \"SHARE_DISPLAY\", stream });\n } catch (err) {\n // TODO: there 7 types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_DISPLAY\" });\n }\n}\n\nexport async function startUserCapture(\n dispatch: Dispatcher,\n settings: Settings,\n videoConstraints: MediaTrackConstraints,\n) {\n const maxFps = settings.camera?.maxFps\n ? { frameRate: { max: settings.camera.maxFps } }\n : {};\n const height = mergeHeightConstraint(settings.camera?.maxHeight, videoConstraints, 1080);\n\n const constraints = {\n video: {\n facingMode: \"user\",\n ...videoConstraints,\n ...maxFps,\n ...height,\n },\n audio: false,\n };\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"USER_UNEXPECTED_END\" });\n };\n });\n dispatch({ type: \"SHARE_USER\", stream });\n } catch (err) {\n // TODO: there 7 types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_USER\" });\n }\n}\n\n// ----------------------------------------------------------------------------\n\nexport function stopCapture(\n { audioStream, displayStream, userStream }: {\n audioStream: MediaStream | null;\n displayStream: MediaStream | null;\n userStream: MediaStream | null;\n },\n dispatch: Dispatcher,\n) {\n stopAudioCapture(audioStream, dispatch);\n stopDisplayCapture(displayStream, dispatch);\n stopUserCapture(userStream, dispatch);\n}\n\nexport function stopAudioCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_AUDIO\" });\n}\n\nexport function stopDisplayCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_DISPLAY\" });\n}\n\nexport function stopUserCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_USER\" });\n}\n","import useResizeObserver from \"use-resize-observer/polyfilled\";\nimport React, { useRef, useState } from \"react\";\nimport equal from \"fast-deep-equal\";\n\nimport { usePresentContext } from \"../util\";\nimport { bug } from \"@opencast/appkit\";\n\n\nconst VideoBoxResizeContext = React.createContext<(() => void) | null>(null);\n\nexport const useVideoBoxResize = () =>\n usePresentContext(VideoBoxResizeContext, \"useVideoBoxResize\");\n\nexport type VideoBoxProps = {\n gap?: number;\n minWidth?: number;\n minHeight?: number;\n children: VideoBoxChild[];\n};\n\nexport type VideoBoxChild = {\n body: JSX.Element;\n dimensions: () => [number, number] | null;\n /**\n * If `false` (default), the calculated size is used for the divs. Otherwise,\n * `width` and `height` are unset, which means the div takes the size of its\n * child. Used for error messages.\n */\n autoSize?: boolean;\n};\n\n// Manages one or two children with given aspect ratio.\n//\n// Each child is given an aspect ratio. The child will be rendered within a\n// `
` that maintains this exact aspect ratio. In the one child case, that\n// `
` also perfectly fits within the parent container. In the case of two\n// children, those children are laid out in such a way that the utilized screen\n// space is maximized while both children have the same width or height.\n//\n// `children` has to be the length 1 or 2! The parameter `gap` specifies the\n// width of the empty space between the two children in the case that two\n// children are given.\n//\n// Each child in `children` needs to be an object with the following fields:\n//\n// - `body`: the rendered DOM.\n// - `dimensions`: a function returning `[width, height]` of the child (also\n// defining the aspect ratio). We require the dimensions instead of only the\n// aspect ratio to better detect changes in the video stream.\nexport const VideoBox: React.FC = ({\n gap = 0,\n minWidth = 180,\n minHeight = 140,\n children,\n}) => {\n const { ref, width = 1, height = 1 } = useResizeObserver();\n\n // This is a dummy state to force a rerender.\n const [, setForceCounter] = useState(0);\n const forceRender = () => setForceCounter(v => v + 1);\n\n // We try to remember the last valid dimension. Otherwise, changing video\n // preferences for a non-16:9 strean leads to visual noise: the box always\n // changes between its aspect ratio and the fallback 16:9 ratio.\n const lastDimensions = useRef<([number, number] | null)[]>(children.map(() => null));\n const updateLastDimensions = (newDimensions: ([number, number] | null)[]) => {\n newDimensions.forEach((dimension, i) => {\n if (dimension) {\n lastDimensions.current[i] = dimension;\n }\n });\n };\n\n // Setup the handler for when a video stream is resized.\n let dimensions = children.map(c => c.dimensions());\n updateLastDimensions(dimensions);\n const resizeVideoBox = () => {\n const newDimensions = children.map(c => c.dimensions());\n if (!equal(newDimensions, dimensions)) {\n dimensions = newDimensions;\n updateLastDimensions(dimensions);\n forceRender();\n }\n };\n\n const ar = (dimensions: [number, number] | null): number =>\n dimensions == null ? 16 / 9 : dimensions[0] / dimensions[1];\n\n\n switch (children.length) {\n case 1: {\n const child = children[0];\n const aspectRatio = ar(lastDimensions.current[0]);\n\n // Calculate size of child\n let childWidth: number;\n let childHeight: number;\n\n if (width > height * aspectRatio) {\n // Child height perfectly matches container, extra space left and right\n childHeight = height;\n childWidth = height * aspectRatio;\n } else {\n // Child width perfectly matches container, extra space top and bottom\n childWidth = width;\n childHeight = (width / aspectRatio);\n }\n\n return (\n \n
\n
\n { child.body }\n
\n
\n
\n );\n }\n case 2: {\n // We need to decide whether the two videos are side by side or if one\n // should be below the other. We calculate the utilized space for each\n // option and then take the option that utilizes more space.\n //\n // Below we need to figure out the aspect ratios of the combined videos\n // either in row or column layout. Consider this table:\n //\n // | | a | b | row | column |\n // | ----------- | ------ | ------ | ------ | ------ |\n // | aspect | 16:9 | 4:3 | 28:9 | 16:21 |\n // | normalized | 1.77:1 | 1.33:1 | 3.11:1 | 0.76:1 |\n //\n // It shows the two aspect ratios a and b combined in both ways. In the\n // \"row\" case, the combined aspect ratio is simple: just add both children\n // aspect ratios. The column case is more difficult. First we have to\n // normalize both with respect to the width. This results in 1:0.56 and\n // 1:0.75 respectively. We can now add those, resulting in 1:1.31.\n // Finally, we normalize with respect to height again: 0.76:1\n\n const aspectRatios = lastDimensions.current.map(d => ar(d));\n\n // Videos side by side (row).\n const { rowWidths, rowHeights } = (() => {\n const availableWidth = width - gap;\n const combinedAspectRatio = aspectRatios[0] + aspectRatios[1];\n if (availableWidth > height * combinedAspectRatio) {\n // Children height perfectly matches container, extra space left and\n // right.\n return {\n rowHeights: Array(2).fill(height),\n rowWidths: aspectRatios.map(ar => height * ar),\n };\n } else {\n // Children width perfectly matches container, extra space top and\n // bottom.\n const baseHeight = availableWidth / combinedAspectRatio;\n return {\n rowHeights: children.map(() => baseHeight),\n rowWidths: aspectRatios.map(ar => baseHeight * ar),\n };\n }\n })();\n\n // One video below the other (col/column).\n const { colWidths, colHeights } = (() => {\n const availableHeight = height - gap;\n const combinedAspectRatio =\n 1 / ((1 / aspectRatios[0]) + (1 / aspectRatios[1]));\n\n if (width > availableHeight * combinedAspectRatio) {\n // Children height perfectly matches container, extra space left and\n // right.\n const width = availableHeight * combinedAspectRatio;\n return {\n colHeights: children.map((_c, i) => (width / aspectRatios[i])),\n colWidths: Array(2).fill(width),\n };\n } else {\n // Children width perfectly matches container, extra space top and\n // bottom.\n return {\n colHeights: children.map((_c, i) => (width / aspectRatios[i])),\n colWidths: Array(2).fill(width),\n };\n }\n })();\n\n // Finally, we compare the areas the two layouts would use. The one with\n // the larger area utilized wins.\n const rowArea = rowWidths[0] * rowHeights[0] + rowWidths[1] * rowHeights[1];\n const colArea = colWidths[0] * colHeights[0] + colWidths[1] * colHeights[1];\n let widths: number[];\n let heights: number[];\n let flexDirection: \"row\" | \"column\";\n if (rowArea > colArea) {\n flexDirection = \"row\";\n widths = rowWidths;\n heights = rowHeights;\n } else {\n flexDirection = \"column\";\n widths = colWidths;\n heights = colHeights;\n }\n\n return (\n \n \n
\n { children[0].body }\n
\n
\n { children[1].body }\n
\n
\n \n );\n }\n default:\n return bug(\"Internal error: too few or too many video streams\");\n }\n};\n","import { COLORS } from \"../util\";\n\n\ntype ErrorBoxProps = {\n title?: string;\n body: string;\n extraBody?: string;\n className?: string;\n};\n\nexport const ErrorBox: React.FC = ({ title, body, extraBody, ...rest }) => (\n \n {title && {title}}\n
{body}
\n {extraBody &&
{extraBody}
}\n
\n);\n","import React from \"react\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\ntype Props = JSX.IntrinsicElements[\"select\"];\n\n/** Styled ``\n + \"\"\n + '\") no-repeat',\n backgroundSize: 12,\n backgroundPosition: \"calc(100% - 12px) center\",\n\n option: {\n backgroundColor: COLORS.neutral05,\n color: COLORS.neutral90,\n },\n ...focusStyle({ offset: -1 }),\n }}>{props.children}\n));\n","// Everything related to video stream preferences that the user can modify.\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\nimport {\n Floating, FloatingContainer, FloatingHandle, FloatingTrigger, ProtoButton,\n WithTooltip, screenWidthAtMost, useColorScheme,\n} from \"@opencast/appkit\";\nimport { FiSettings, FiX } from \"react-icons/fi\";\n\nimport { Settings, useSettings } from \"../../settings\";\nimport { COLORS, getUniqueDevices } from \"../../util\";\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport {\n startDisplayCapture,\n startUserCapture,\n stopDisplayCapture,\n stopUserCapture,\n} from \"../../capturer\";\nimport { Select } from \"../../ui/Select\";\nimport { OVERLAY_STYLE } from \"./preview\";\n\n\n/**\n * Creates a valid constraints object from the given preferences. The mapping\n * is as follows:\n *\n * - deviceId: falsy values are ignored, any other value is passed on, either as\n * `ideal` (if `exactDevice` is `false`) or `exact` (if `exactDevice` is\n * `true`).\n * - aspectRatio: values in `ASPECT_RATIOS` are passed as `ideal`, everything\n * else is ignored.\n * - quality: valid quality labels are passed on as `ideal` height, invalid ones\n * are ignored.\n */\nexport const prefsToConstraints = (\n prefs: CameraPrefs | DisplayPrefs,\n exactDevice = false,\n): MediaTrackConstraints => {\n const deviceConstraint = \"deviceId\" in prefs\n && { deviceId: { [exactDevice ? \"exact\" : \"ideal\"]: prefs.deviceId } };\n\n const aspectRatioConstraint = \"aspectRatio\" in prefs && {\n aspectRatio: { ideal: prefs.aspectRatio ? parseAspectRatio(prefs.aspectRatio) : undefined },\n };\n\n const heightConstraint = \"quality\" in prefs && {\n height: { ideal: prefs.quality ? parseQuality(prefs.quality) : undefined },\n };\n\n return {\n ...deviceConstraint,\n ...aspectRatioConstraint,\n ...heightConstraint,\n };\n};\n\n// All aspect ratios the user can choose from.\nconst ASPECT_RATIOS = [\"4:3\", \"16:9\"];\n\n// All quality options given to the user respecting the `maxHeight` from the\n// settings.\nconst qualityOptions = (maxHeight: number | undefined) => {\n const defaults = [360, 480, 720, 1080, 1440, 2160];\n const out = defaults.filter(q => !maxHeight || q <= maxHeight);\n if (maxHeight && (out.length === 0 || out[out.length - 1] !== maxHeight)) {\n out.push(maxHeight);\n }\n\n return out.map(n => `${n}p`);\n};\n\n// Converts the given aspect ratio label (one of the elements in\n// `ASPECT_RATIOS`) into the numerical ratio, e.g. 4/3 = 1.333. If the argument\n// is not a valid label, `null` is returned.\nconst parseAspectRatio = (label: string) => {\n const mapping = {\n \"4:3\": 4 / 3,\n \"16:9\": 16 / 9,\n };\n\n return (mapping as Record)[label] ?? undefined;\n};\n\n// Converts the given quality label to the actual height as number. If the\n// argument is not a valid quality label (e.g. '720p'), `null` is returned.\nconst parseQuality = (label: string) => {\n if (!/^[0-9]+p$/.test(label)) {\n return undefined;\n }\n\n return parseInt(label);\n};\n\n// Local storage keys\nconst LAST_VIDEO_DEVICE_KEY = \"ocStudioLastVideoDevice\";\nconst CAMERA_ASPECT_RATIO_KEY = \"ocStudioCameraAspectRatio\";\nconst CAMERA_QUALITY_KEY = \"ocStudioCameraQuality\";\nconst DISPLAY_QUALITY_KEY = \"ocStudioDisplayQuality\";\n\ntype CameraPrefs = {\n deviceId?: string;\n aspectRatio?: string;\n quality?: string;\n};\n\ntype DisplayPrefs = {\n quality?: string;\n};\n\n// Loads the initial camera preferences from local storage.\nexport const loadCameraPrefs = (): CameraPrefs => ({\n deviceId: window.localStorage.getItem(LAST_VIDEO_DEVICE_KEY) ?? undefined,\n aspectRatio: window.localStorage.getItem(CAMERA_ASPECT_RATIO_KEY) || \"auto\",\n quality: window.localStorage.getItem(CAMERA_QUALITY_KEY) || \"auto\",\n});\n\n// Loads the initial display preferences from local storage.\nexport const loadDisplayPrefs = (): DisplayPrefs => ({\n quality: window.localStorage.getItem(DISPLAY_QUALITY_KEY) || \"auto\",\n});\n\ntype StreamSettingsProps = {\n isDesktop: boolean;\n stream: MediaStream | null;\n}\n\nexport const StreamSettings: React.FC = ({ isDesktop, stream }) => {\n const dispatch = useDispatch();\n const settings = useSettings();\n const floatRef = useRef(null);\n const { t } = useTranslation();\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n\n // The current preferences and the callback to update them.\n const prefs = isDesktop ? loadDisplayPrefs() : loadCameraPrefs();\n const updatePrefs = (newPrefs: CameraPrefs | DisplayPrefs) => {\n // Merge and update preferences.\n const merged = { ...prefs, ...newPrefs };\n const constraints = prefsToConstraints(merged, true);\n\n const setOpt = (key: string, v: string | undefined) => {\n if (v != null) {\n window.localStorage.setItem(key, v);\n }\n };\n\n // Update preferences in local storage and re-request stream. The latter\n // will cause the rerender.\n if (isDesktop) {\n setOpt(DISPLAY_QUALITY_KEY, merged.quality);\n\n stopDisplayCapture(stream, dispatch);\n startDisplayCapture(dispatch, settings, constraints);\n } else {\n setOpt(LAST_VIDEO_DEVICE_KEY, (merged as Record)[\"deviceId\"]);\n setOpt(CAMERA_ASPECT_RATIO_KEY, (merged as Record)[\"aspectRatio\"]);\n setOpt(CAMERA_QUALITY_KEY, merged.quality);\n\n stopUserCapture(stream, dispatch);\n startUserCapture(dispatch, settings, constraints);\n }\n };\n\n // Store the camera device ID in local storage. We also do this here, as we\n // also want to remember the device the user initially selected in the browser\n // popup.\n useEffect(() => {\n const cameraDeviceId = deviceIdOf(stream);\n if (!isDesktop && cameraDeviceId) {\n window.localStorage.setItem(LAST_VIDEO_DEVICE_KEY, cameraDeviceId);\n }\n });\n\n // State about expanding and hiding the settings.\n const [isExpanded, setIsExpanded] = useState(false);\n const label = t(`steps.video.video-settings-${isExpanded ? \"close\" : \"open\"}` as const);\n\n return <>\n {/* Stream info at the top */}\n
\n \n {streamInfo(stream)}\n \n
\n\n {/* The settings button and the popover dialog */}\n setIsExpanded(false)}\n borderRadius={8}\n viewPortMargin={8}\n css={{\n position: \"absolute\",\n right: 8,\n bottom: 8,\n }}\n >\n \n \n setIsExpanded(old => !old)}\n aria-label={label}\n css={{\n ...OVERLAY_STYLE,\n fontSize: 26,\n \"> svg\": {\n transition: \"transform 0.2s\",\n },\n \"&:hover > svg, &:focus > svg\": {\n transform: isExpanded ? \"none\" : \"rotate(45deg)\",\n },\n }}\n >\n {isExpanded ? : }\n \n \n \n \n
\n {!isDesktop && }\n \n
\n\n
\n \n Note: Explanation.\n \n
\n \n \n ;\n};\n\nconst streamInfo = (stream: MediaStream | null) => {\n const s = stream?.getVideoTracks()?.[0]?.getSettings();\n const sizeInfo = (s && s.width && s.height) ? `${s.width}×${s.height}` : \"\";\n const fpsInfo = (s && s.frameRate) ? `${s.frameRate} fps` : \"\";\n\n return s ? [sizeInfo, fpsInfo].join(\", \") : \"...\";\n};\n\n/** Div for the name of a value, e.g. quality, aspect ratio, .. */\nconst PrefKey: React.FC = ({ children }) => (\n
\n { children }\n
\n);\n\n/** Container for the value selection of an option, e.g. all available qualities. */\nconst PrefValue: React.FC = ({ children }) => (\n
\n { children }\n
\n);\n\ntype UniveralSettingsProps = {\n isDesktop: boolean;\n updatePrefs: (p: CameraPrefs | DisplayPrefs) => void;\n prefs: CameraPrefs | DisplayPrefs;\n settings: Settings;\n};\n\nconst UniveralSettings: React.FC = (\n { isDesktop, updatePrefs, prefs, settings }\n) => {\n const { t } = useTranslation();\n\n const changeQuality = (quality: string) => updatePrefs({ quality });\n const maxHeight = isDesktop ? settings.display?.maxHeight : settings.camera?.maxHeight;\n const qualities = qualityOptions(maxHeight);\n const kind = isDesktop ? \"desktop\" : \"user\";\n\n return <>\n {t(\"steps.video.quality\")}\n \n prefs.quality !== q)}\n />\n {\n qualities.map(q => (\n \n ))\n }\n \n ;\n};\n\ntype UserSettingsProps = {\n updatePrefs: (p: CameraPrefs | DisplayPrefs) => void;\n prefs: CameraPrefs;\n};\n\n\nconst UserSettings: React.FC = ({ updatePrefs, prefs }) => {\n const { t } = useTranslation();\n const state = useStudioState();\n\n const currentDeviceId = deviceIdOf(state.userStream);\n const devices = getUniqueDevices(state.mediaDevices, \"videoinput\");\n\n const changeDevice = (id: string) => updatePrefs({ deviceId: id });\n const changeAspectRatio = (ratio: string) => updatePrefs({ aspectRatio: ratio });\n\n return <>\n \n \n \n \n changeDevice(e.target.value)}\n css={{ width: \"100%\" }}\n >\n {devices.map(d => )}\n \n \n\n {t(\"steps.video.aspect-ratio\")}\n \n prefs.aspectRatio !== x)}\n />\n {ASPECT_RATIOS.map(ar => (\n \n ))}\n \n ;\n};\n\ntype RadioButtonProps = {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label?: string;\n onChange: (v: string) => void;\n};\n\n// A styled radio input which looks like a button.\nconst RadioButton: React.FC = ({\n id, value, checked, name, onChange, label,\n}) => {\n const { isHighContrast } = useColorScheme();\n\n return
\n onChange(e.target.value)}\n {...{ id, value, checked, name }}\n css={{\n display: \"none\",\n \"&+label\": {\n display: \"block\",\n border: `1px solid ${COLORS.neutral25}`,\n lineHeight: 1.2,\n padding: \"4px 10px\",\n borderRadius: 6,\n fontWeight: 500,\n cursor: \"pointer\",\n \":hover\": {\n backgroundColor: COLORS.neutral10,\n borderColor: COLORS.neutral40,\n ...isHighContrast && {\n outline: `2px solid ${COLORS.accent4}`,\n borderColor: \"transparent\",\n },\n },\n },\n \"&:checked+label\": {\n backgroundColor: COLORS.accent6,\n borderColor: COLORS.accent6,\n color: COLORS.neutral05,\n cursor: \"default\",\n },\n }}\n />\n (e.key === \"Enter\" || e.key === \" \") && onChange(value)}\n htmlFor={id}\n >{label ?? value}\n
;\n};\n\n// Returns the devide ID of the video track of the given stream.\nexport const deviceIdOf = (stream: MediaStream | null) =>\n stream?.getVideoTracks()?.[0]?.getSettings()?.deviceId;\n","import { useEffect, useRef } from \"react\";\nimport { Spinner, WithTooltip, match, unreachable, useColorScheme } from \"@opencast/appkit\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { LuInfo, LuVolume2, LuVolumeX } from \"react-icons/lu\";\n\nimport { COLORS, dimensionsOf } from \"../../util\";\nimport { VideoBox, useVideoBoxResize } from \"../../ui/VideoBox\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { StreamSettings } from \"./prefs\";\nimport { Input } from \".\";\n\n\n\nexport type SourcePreviewProps = {\n inputs: Input[];\n}\n\n/**\n * Shows the preview for one or two input streams. The previews also show\n * preferences allowing the user to change the webcam and the like.\n */\nexport const SourcePreview: React.FC = ({ inputs }) => {\n const children = match(inputs.length, {\n 1: () => [{\n body: ,\n dimensions: () => dimensionsOf(inputs[0].stream),\n autoSize: inputHasError(inputs[0]),\n }],\n 2: () => [\n {\n body: ,\n dimensions: () => dimensionsOf(inputs[0].stream),\n autoSize: inputHasError(inputs[0]),\n },\n {\n body: ,\n dimensions: () => dimensionsOf(inputs[1].stream),\n autoSize: inputHasError(inputs[1]),\n },\n ],\n }, unreachable);\n\n return {children};\n};\n\nconst inputHasError = (input: Input): boolean =>\n input.allowed === false || !!input.unexpectedEnd;\n\n/** Shows a single stream as preview, deals with potential errors and shows preferences UI */\nconst StreamPreview: React.FC<{ input: Input }> = ({ input }) => {\n const { isHighContrast } = useColorScheme();\n\n return (\n
\n \n {input.stream && <>\n {input.isDesktop && }\n \n }\n
\n );\n};\n\nconst PreviewVideo: React.FC<{ input: Input }> = ({ input }) => {\n const { t } = useTranslation();\n const { allowed, stream, unexpectedEnd } = input;\n const resizeVideoBox = useVideoBoxResize();\n\n const videoRef = useRef(null);\n useEffect(() => {\n const v = videoRef.current;\n if (v) {\n if (!v.srcObject) {\n v.srcObject = stream;\n }\n v.addEventListener(\"resize\", resizeVideoBox);\n }\n\n return () => {\n if (v) {\n v.removeEventListener(\"resize\", resizeVideoBox);\n }\n };\n }, [stream, resizeVideoBox]);\n\n if (!stream) {\n let inner: JSX.Element;\n if (allowed === false || unexpectedEnd) {\n inner =
\n {allowed === false && }\n {/* TODO: differentiate between desktop and camera for better error */}\n {unexpectedEnd && }\n
;\n } else {\n inner = ;\n }\n\n return (\n
\n
\n {inner}\n
\n
\n );\n }\n\n return (\n
\n \n
\n );\n};\n\nexport const DisplayAudioInfo: React.FC<{ stream: MediaStream }> = ({ stream }) => {\n const hasAudio = stream.getAudioTracks().length;\n\n return (\n
\n \n Note: Explanation.\n \n }\n >\n
\n {hasAudio ? : }\n
\n \n
\n );\n};\n\nexport const OVERLAY_STYLE = {\n border: \"none\",\n display: \"inline-block\",\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\n color: \"white\",\n padding: 8,\n backdropFilter: \"invert(0.3) blur(4px)\",\n lineHeight: 0,\n borderRadius: 10,\n cursor: \"pointer\",\n \"&:hover, &:focus-visible\": {\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n \"&:focus-visible\": {\n outline: \"5px dashed white\",\n outlineOffset: -2.5,\n },\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\nimport { LuArrowBigUp, LuOption } from \"react-icons/lu\";\nimport { FiArrowLeft, FiArrowRight, FiCommand } from \"react-icons/fi\";\nimport { Options, useHotkeys } from \"react-hotkeys-hook\";\n\nimport { COLORS } from \"./util\";\nimport { OverlayBox } from \"./layout\";\n\n\nconst onMac = () => navigator.userAgent.includes(\"Mac\");\n\nexport const SHORTCUTS = {\n general: {\n showAvailableShortcuts: \"Alt; s\",\n showOverview: \"?\",\n closeOverlay: \"Escape\",\n tab: \"Tab\",\n prev: onMac() ? \"Shift+Mod+left\" : \"Mod+left\",\n next: onMac() ? \"Shift+Mod+right\" : \"Mod+right\",\n },\n videoSetup: {\n selectScreen: \"1\",\n selectBoth: \"2\",\n selectUser: \"3\",\n },\n audioSetup: {\n withAudio: \"1\",\n withoutAudio: \"2\",\n },\n recording: {\n startPauseResume: \"k; Space\",\n },\n review: {\n playPause: \"k; Space\",\n forwards5secs: \"l; right\",\n backwards5secs: \"j; left\",\n forwardsFrame: \".\",\n backwardsFrame: \",\",\n cutLeft: \"n\",\n cutRight: \"m\",\n removeCutLeft: \"Shift+n\",\n removeCutRight: \"Shift+m\",\n },\n finish: {\n startNewRecording: \"Shift+n\",\n download: \"d\",\n },\n} as const;\n\nconst SHORTCUT_TRANSLATIONS = {\n general: {\n showAvailableShortcuts: \"shortcuts.general.show-available-shortcuts\",\n showOverview: \"shortcuts.general.show-overview\",\n closeOverlay: \"shortcuts.general.close-overlay\",\n tab: \"shortcuts.general.tab-elements\",\n prev: \"shortcuts.general.back-button\",\n next: \"shortcuts.general.next-button\",\n },\n videoSetup: {\n selectScreen: \"shortcuts.select-video.select-display\",\n selectBoth: \"shortcuts.select-video.select-both\",\n selectUser: \"shortcuts.select-video.select-camera\",\n },\n audioSetup: {\n withAudio: \"shortcuts.select-audio.select-microphone\",\n withoutAudio: \"shortcuts.select-audio.select-no-audio\",\n },\n recording: {\n startPauseResume: \"shortcuts.record.start-pause-resume-recording\",\n },\n review: {\n playPause: \"shortcuts.review.play-pause\",\n forwards5secs: \"shortcuts.review.skip-five\",\n backwards5secs: \"shortcuts.review.back-five\",\n forwardsFrame: \"shortcuts.review.frame-forward\",\n backwardsFrame: \"shortcuts.review.frame-back\",\n cutLeft: \"shortcuts.review.cut-left\",\n cutRight: \"shortcuts.review.cut-right\",\n removeCutLeft: \"shortcuts.review.delete-left\",\n removeCutRight: \"shortcuts.review.delete-right\",\n },\n finish: {\n startNewRecording: \"shortcuts.finish.new-recording\",\n download: \"steps.finish.save-locally.label\",\n },\n} as const;\n\nconst KEY_TRANSLATIONS = {\n \"Escape\": \"escape\",\n \"Space\": \"space\",\n \"Shift\": \"shift\",\n \"Alt\": onMac() ? \"option\" : \"alt\",\n \"Mod\": onMac() ? \"command\" : \"control\",\n} as const;\n\n\n/** Like `useHotkeys` but with pre-set options. */\nexport const useShortcut = (\n keys: string,\n callback: () => void,\n options: Omit = {},\n deps: unknown[] = [],\n) => {\n return useHotkeys(keys, callback, { splitKey: \";\", ...options }, deps);\n};\n\n/**\n * Helper to show an overlay of active shortcuts when Alt is pressed. Returns\n * `true` if the overlay should be shown.\n */\nexport const useShowAvailableShortcuts = () => {\n const [active, setActive] = useState(false);\n const enable = (event: KeyboardEvent) => {\n const correctKeyPressed = SHORTCUTS.general.showAvailableShortcuts.split(\";\")\n .some(s => s.trim().toLowerCase() == event.key.toLowerCase());\n if (correctKeyPressed) {\n setActive(true);\n }\n };\n const disable = () => setActive(false);\n\n useEffect(() => {\n document.addEventListener(\"keydown\", enable);\n document.addEventListener(\"keyup\", disable);\n document.addEventListener(\"mousedown\", disable);\n window.addEventListener(\"blur\", disable);\n return () => {\n document.removeEventListener(\"keydown\", enable);\n document.removeEventListener(\"keyup\", disable);\n document.removeEventListener(\"mousedown\", disable);\n window.removeEventListener(\"blur\", disable);\n };\n });\n\n return active;\n};\n\ntype ShortcutKeysProps = {\n shortcut: string;\n large?: boolean;\n};\n\nexport const ShortcutKeys: React.FC = ({ shortcut, large = false }) => {\n const { t } = useTranslation();\n return
\n {shortcut.split(\"+\").map((key, i) => {\n let s = key;\n if (key in KEY_TRANSLATIONS) {\n const translationKey = KEY_TRANSLATIONS[key as keyof typeof KEY_TRANSLATIONS];\n s = t(`shortcuts.keys.${translationKey}`);\n }\n const child = match(key, {\n \"left\": () => ,\n \"right\": () => ,\n \"Mod\": () => onMac() ? : <>{s},\n \"Alt\": () => onMac() ? : <>{s},\n \"Shift\": () => ,\n }, () => <>{s});\n return (\n \n {i !== 0 && \"+\"}\n {child}\n \n );\n })}\n
;\n};\n\ntype SingleKeyProps = React.PropsWithChildren<{\n large: boolean;\n /** Whether to use `monospace` font for this one. Basically only useful for lowercase l. */\n monofont: boolean;\n}>;\n\nconst SingleKey: React.FC = ({ large, monofont, children }) => {\n const isLight = useColorScheme().scheme === \"light\";\n const { scheme, isHighContrast } = useColorScheme();\n\n const bg = match(scheme, {\n \"light\": () => COLORS.neutral05,\n \"dark\": () => COLORS.neutral15,\n \"light-high-contrast\": () => COLORS.neutral05,\n \"dark-high-contrast\": () => COLORS.neutral15,\n });\n\n return (\n
\n {children}\n
\n );\n};\n\ntype ShortCutOverviewProps = {\n close: () => void;\n};\n\nexport const ShortcutOverview: React.FC = ({ close }) => {\n const { t } = useTranslation();\n\n return \n {Object.entries(SHORTCUTS).map(([groupId, group]) => (\n \n ))}\n ;\n};\n\n\nconst GROUP_ID_TRANSLATIONS = {\n general: \"shortcuts.general.title\",\n videoSetup: \"steps.video.label\",\n audioSetup: \"steps.audio.label\",\n recording: \"steps.record.label\",\n review: \"steps.review.label\",\n finish: \"steps.finish.label\",\n} as const satisfies Record;\n\ntype ShortcutGroupOverviewProps = {\n groupId: keyof typeof SHORTCUTS;\n group: typeof SHORTCUTS[keyof typeof SHORTCUTS];\n};\n\nconst ShortcutGroupOverview: React.FC = ({ groupId, group }) => {\n const { t } = useTranslation();\n\n return (\n
\n

{t(GROUP_ID_TRANSLATIONS[groupId])}

\n
\n {Object.entries(group).map(([name, keys], i) => (\n \n
\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {t((SHORTCUT_TRANSLATIONS[groupId] as any)[name])}\n
\n
\n {keys.split(\";\").map((combination, i) => \n {i > 0 && t(\"shortcuts.sequence-seperator\")}\n \n )}\n
\n
\n ))}\n \n
\n );\n};\n","import { Floating, FloatingContainer, FloatingTrigger, ProtoButton, match, useColorScheme } from \"@opencast/appkit\";\nimport { useTranslation } from \"react-i18next\";\nimport { FiChevronLeft, FiChevronRight } from \"react-icons/fi\";\nimport { CSSObject } from \"@emotion/react\";\nimport { useState } from \"react\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../shortcuts\";\n\n\ntype StepButtonProps = {\n kind: \"next\" | \"prev\";\n label?: string;\n danger?: boolean;\n icon?: JSX.Element;\n disabled?: boolean;\n onClick?: () => void;\n popoverEntries?: ({\n icon: JSX.Element;\n label: string;\n } & ({ onClick: () => void } | { href: string }))[];\n};\n\nconst StepButton: React.FC = ({\n kind, label, icon, disabled, danger, onClick, popoverEntries,\n}) => {\n const { t } = useTranslation();\n const showShortcut = useShowAvailableShortcuts();\n const isDark = useColorScheme().scheme === \"dark\";\n const { isHighContrast } = useColorScheme();\n const shortcut = match(kind, {\n prev: () => SHORTCUTS.general.prev,\n next: () => SHORTCUTS.general.next,\n });\n const [open, setOpen] = useState(false);\n const click = popoverEntries ? () => setOpen(old => !old) : () => onClick?.();\n useShortcut(shortcut, click, { enabled: !disabled }, [click, shortcut, disabled]);\n\n const button = (\n ({ paddingRight: 16 }) as CSSObject,\n \"prev\": () => ({ paddingLeft: 16 }) as CSSObject,\n }),\n\n '&[data-floating-state=\"open\"] svg': {\n transform: \"rotate(-90deg)\",\n },\n \"svg\": {\n transition: \"transform 0.15s\",\n flexShrink: 0,\n },\n\n \"&[disabled]\": {\n color: COLORS.neutral60,\n borderColor: COLORS.neutral15,\n backgroundColor: COLORS.neutral15,\n },\n\n \"&:not([disabled]):hover, &:not([disabled]):focus-visible\": {\n borderColor: danger ? COLORS.danger5 : COLORS.neutral70,\n color: danger ? COLORS.danger5 : COLORS.neutral90,\n boxShadow: isHighContrast ? \"none\" : \"0 0 8px var(--shadow-color)\",\n ...danger && { backgroundColor: COLORS.danger1 },\n ...isHighContrast && {\n outline: `2px solid ${danger ? COLORS.danger5 : COLORS.accent4}`,\n borderColor: \"transparent\",\n },\n },\n }}\n >\n {kind === \"prev\" && (icon ?? )}\n {label ?? t(`steps.${kind === \"next\" ? \"next\" : \"back\"}-button-label`)}\n {kind === \"next\" && (icon ?? )}\n {showShortcut && !disabled && (\n
\n )}\n \n );\n\n // One would think we can just always return a `FloatingContainer`, which just\n // sometimes does nothing. But no: this confuses screenreaders as they would\n // always announce that this button opens a menu.\n if (!popoverEntries) {\n return button;\n }\n\n return (\n setOpen(false)}\n ariaRole=\"menu\"\n arrowSize={8}\n viewPortMargin={12}\n borderRadius={8}\n distance={6}\n >\n {button}\n \n
    \n {popoverEntries?.map((entry, i) => {\n const style = {\n display: \"flex\",\n gap: 16,\n alignItems: \"center\",\n width: \"100%\",\n minWidth: 160,\n padding: 12,\n color: COLORS.neutral80,\n cursor: \"pointer\",\n textDecoration: \"none\",\n ...focusStyle({ inset: true }),\n \"& > svg\": {\n maxHeight: 23,\n fontSize: 23,\n color: COLORS.neutral60,\n width: 24,\n strokeWidth: 2,\n \"& > path\": { strokeWidth: \"inherit\" },\n },\n \":hover, :focus\": {\n backgroundColor: COLORS.neutral10,\n color: \"inherit\",\n },\n };\n\n return (\n
  • *\": { borderRadius: \"8px 8px 0 0\" },\n \":last-of-type> *\": { borderRadius: \"0 0 8px 8px\" },\n \":not(:first-of-type)\": {\n borderTop: `1px solid ${COLORS.neutral30}`,\n },\n }}>\n {\"href\" in entry\n ? {\n if (e.key === \" \") {\n e.preventDefault();\n window.location.href = entry.href;\n }\n }}\n >\n {entry.icon}\n {entry.label}\n \n : \n {entry.icon}\n {entry.label}\n \n }\n
  • \n );\n })}\n
\n \n \n );\n};\n\ntype StepContainerProps = React.PropsWithChildren<{\n title: string;\n note?: string;\n nextButton?: Omit;\n prevButton?: Omit;\n}>;\n\nexport const StepContainer: React.FC = ({\n title,\n note,\n nextButton,\n prevButton,\n children,\n}) => {\n return (\n
\n
\n

{title}

\n {note && (\n
\n {note}\n
\n )}\n
\n
\n {children}\n
\n
\n {prevButton && }\n {nextButton && }\n
\n
\n );\n};\n","import React from \"react\";\nimport { ProtoButton, useColorScheme } from \"@opencast/appkit\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { ShortcutKeys } from \"../shortcuts\";\n\n\n\nexport type SourceOptionButtonProps = {\n icon: JSX.Element;\n label: string;\n onClick: () => void;\n disabledText?: false | string;\n shortcut?: string;\n ariaLabel?: string;\n};\n\nexport const SourceOptionButton: React.FC = (\n { icon, label, onClick, shortcut, disabledText, ariaLabel }\n) => {\n const { isHighContrast } = useColorScheme();\n\n return (\n \n
\n {icon}\n
\n
{label}
\n
{disabledText}
\n {shortcut &&
}\n \n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { screenWidthAtMost } from \"@opencast/appkit\";\nimport { FiMonitor, FiUser } from \"react-icons/fi\";\n\nimport { useDispatch, useStudioState, VideoSource } from \"../../studio-state\";\nimport { useSettings } from \"../../settings\";\nimport { queryMediaDevices, onMobileDevice, BREAKPOINTS, onSafari } from \"../../util\";\nimport { startDisplayCapture, startUserCapture } from \"../../capturer\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { SHORTCUTS, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { SourceOptionButton } from \"../../ui/SourceOptionButton\";\n\n\n\ntype SourceSelectionProps = {\n setActiveSource: (s: VideoSource) => void;\n userConstraints: MediaTrackConstraints;\n displayConstraints: MediaTrackConstraints;\n};\n\nexport const SourceSelection: React.FC = ({\n setActiveSource,\n userConstraints,\n displayConstraints,\n}) => {\n const { t } = useTranslation();\n\n const settings = useSettings();\n const dispatch = useDispatch();\n const state = useStudioState();\n const { displaySupported, userSupported } = state;\n\n const clickUser = async () => {\n setActiveSource(\"user\");\n await startUserCapture(dispatch, settings, userConstraints);\n await queryMediaDevices(dispatch);\n };\n\n const clickDisplay = async () => {\n setActiveSource(\"display\");\n await startDisplayCapture(dispatch, settings, displayConstraints);\n };\n\n const clickBoth = async () => {\n setActiveSource(\"both\");\n // Safari needs the display capture to be called first as otherwise\n // it thinks `getDisplayMedia` is called without user gesture and\n // throws an error.\n if (onSafari()) {\n await startDisplayCapture(dispatch, settings, displayConstraints);\n await startUserCapture(dispatch, settings, userConstraints);\n await queryMediaDevices(dispatch);\n } else {\n await startUserCapture(dispatch, settings, userConstraints);\n await Promise.all([\n queryMediaDevices(dispatch),\n startDisplayCapture(dispatch, settings, displayConstraints),\n ]);\n }\n };\n\n useShortcut(SHORTCUTS.videoSetup.selectScreen, clickDisplay);\n useShortcut(SHORTCUTS.videoSetup.selectBoth, clickBoth);\n useShortcut(SHORTCUTS.videoSetup.selectUser, clickUser);\n const showShortcuts = useShowAvailableShortcuts();\n\n if (!displaySupported && !userSupported) {\n return ;\n }\n\n return (\n \n {(displaySupported || !onMobileDevice()) && }\n onClick={clickDisplay}\n disabledText={displaySupported ? false : t(\"steps.video.display-not-supported\")}\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectScreen : undefined}\n />}\n {(displaySupported || !onMobileDevice()) && userSupported && \n \n \n \n )}\n onClick={clickBoth}\n disabledText={\n displaySupported\n ? (state.hasWebcam ? false : t(\"steps.video.no-cam-detected\"))\n : t(\"steps.video.display-not-supported\")\n }\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectBoth : undefined}\n />}\n {userSupported && }\n onClick={clickUser}\n disabledText={state.hasWebcam ? false : t(\"steps.video.no-cam-detected\")}\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectUser : undefined}\n />}\n \n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState, VideoSource } from \"../../studio-state\";\nimport { stopDisplayCapture, stopUserCapture } from \"../../capturer\";\nimport { SourcePreview } from \"./preview\";\nimport { loadCameraPrefs, loadDisplayPrefs, prefsToConstraints } from \"./prefs\";\nimport { StepProps } from \"..\";\nimport { StepContainer } from \"../elements\";\nimport { SourceSelection } from \"./source-select\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { isRecordingSupported, onSafari } from \"../../util\";\n\n\nexport type Input = {\n isDesktop: boolean;\n stream: MediaStream | null;\n allowed: boolean | null;\n unexpectedEnd: boolean | null;\n};\n\nexport const VideoSetup: React.FC = ({ goToNextStep }) => {\n const { t } = useTranslation();\n\n const dispatch = useDispatch();\n const state = useStudioState();\n const { displayStream, userStream, videoChoice: activeSource } = state;\n const hasStreams = !!displayStream || !!userStream;\n\n const setActiveSource = (s: VideoSource) => dispatch({ type: \"CHOOSE_VIDEO\", choice: s });\n const reselectSource = () => {\n setActiveSource(\"none\");\n stopUserCapture(userStream, dispatch);\n stopDisplayCapture(displayStream, dispatch);\n };\n\n\n const userInput = {\n isDesktop: false,\n stream: userStream,\n allowed: state.userAllowed,\n unexpectedEnd: state.userUnexpectedEnd,\n };\n const displayInput = {\n isDesktop: true,\n stream: displayStream,\n allowed: state.displayAllowed,\n unexpectedEnd: state.displayUnexpectedEnd,\n };\n\n const buttons = {\n prevButton: {\n onClick: reselectSource,\n disabled: false,\n label: t(\"steps.video.reselect-source\"),\n },\n nextButton: {\n onClick: () => goToNextStep(),\n disabled: activeSource === \"both\" ? (!displayStream || !userStream) : !hasStreams,\n },\n };\n\n const someProblem = state.userAllowed === false || state.userUnexpectedEnd\n || state.displayAllowed === false || state.displayUnexpectedEnd;\n\n return match(activeSource, {\n \"none\": () => {\n return (\n \n \n \n \n );\n },\n\n \"user\": () => {\n const showButtons = userStream || someProblem;\n return (\n \n \n \n );\n },\n\n \"display\": () => {\n const showButtons = displayStream || someProblem;\n return (\n \n \n \n );\n },\n\n \"both\": () => {\n const showButtons = (userStream && displayStream) || someProblem;\n return (\n \n \n \n );\n },\n });\n};\n\n\n\n/** Conditionally shows a number of warnings to help the user identify problems. */\nconst Warnings = () => {\n const { t } = useTranslation();\n\n const warnings: JSX.Element[] = [];\n\n // We allow HTTP connections to localhost, as most browsers also seem to allow\n // video capture in those cases.\n const usingUnsecureConnection = window.location.protocol !== \"https:\" &&\n window.location.hostname !== \"localhost\" &&\n window.location.hostname !== \"127.0.0.1\";\n if (usingUnsecureConnection) {\n warnings.push(\n \n );\n }\n\n // Warning about missing `MediaRecorder` support\n if (!isRecordingSupported()) {\n let msg = t(\"warning-recorder-not-supported\");\n if (onSafari()) {\n msg += \" \" + t(\"warning-recorder-safari-hint\");\n }\n warnings.push();\n }\n\n\n return warnings.length > 0\n ?
{ warnings }
\n : null;\n};\n","import { useTranslation } from \"react-i18next\";\nimport { FiMic, FiMicOff } from \"react-icons/fi\";\nimport { screenWidthAtMost } from \"@opencast/appkit\";\n\nimport { SourceOptionButton } from \"../../ui/SourceOptionButton\";\nimport { SHORTCUTS, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { BREAKPOINTS } from \"../../util\";\n\n\ntype Props = {\n selectNoAudio: () => void;\n selectMicrophone: () => void;\n};\n\n/** The two large option buttons for \"no audio\" and \"Microphone\". */\nexport const SourceSelection: React.FC = ({ selectNoAudio, selectMicrophone }) => {\n const { t } = useTranslation();\n const showShortcuts = useShowAvailableShortcuts();\n useShortcut(SHORTCUTS.audioSetup.withAudio, selectMicrophone);\n useShortcut(SHORTCUTS.audioSetup.withoutAudio, selectNoAudio);\n\n return (\n \n }\n label={t(\"steps.audio.microphone\")}\n onClick={selectMicrophone}\n shortcut={showShortcuts ? SHORTCUTS.audioSetup.withAudio : undefined}\n />\n }\n label={t(\"steps.audio.without-audio\")}\n onClick={selectNoAudio}\n shortcut={showShortcuts ? SHORTCUTS.audioSetup.withoutAudio : undefined}\n />\n \n );\n};\n","import { useEffect, useId, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport Oscilloscope from \"oscilloscope\";\nimport { Spinner, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { startAudioCapture, stopAudioCapture } from \"../../capturer\";\nimport { getUniqueDevices, COLORS } from \"../../util\";\nimport { LAST_AUDIO_DEVICE_KEY } from \".\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { Select } from \"../../ui/Select\";\n\n\n// Once the microphone is selected, this is shown. Renders an\n// audio-visualization and a device-selector.\nexport const MicrophonePreview: React.FC = () => {\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n const dispatch = useDispatch();\n const state = useStudioState();\n const { audioStream, audioAllowed, audioUnexpectedEnd } = state;\n\n // Get current device ID and all possible audio input devices.\n const currentDeviceId = audioStream?.getAudioTracks()?.[0]?.getSettings()?.deviceId;\n const devices = getUniqueDevices(state.mediaDevices, \"audioinput\");\n\n // We write the currently used device ID to local storage to remember it\n // between visits of Studio.\n useEffect(() => {\n if (currentDeviceId) {\n window.localStorage.setItem(LAST_AUDIO_DEVICE_KEY, currentDeviceId);\n }\n });\n\n const changeDevice = async (deviceId: string) => {\n // The stream is only falsy if it unexpectedly ended.\n if (audioStream) {\n stopAudioCapture(audioStream, dispatch);\n }\n\n await startAudioCapture(dispatch, { exact: deviceId });\n };\n\n const selectId = useId();\n let body: JSX.Element = <>;\n if (audioStream) {\n body = <>\n \n
\n \n changeDevice(e.target.value)}\n css={{\n flex: \"1 1\",\n minWidth: 50,\n\n }}\n >\n {devices.map((d, i) => (\n \n ))}\n \n
\n ;\n } else if (audioAllowed === false) {\n body = ;\n } else if (audioUnexpectedEnd === true) {\n body = ;\n } else {\n body = ;\n }\n\n return (\n
\n {body}\n
\n );\n};\n\ntype AudioVisualziationProps = {\n stream: MediaStream;\n};\n\nconst AudioVisualziation: React.FC = ({ stream }) => {\n const isDark = useColorScheme().scheme === \"dark\";\n const canvasRef = useRef(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (ctx == null) {\n throw new Error(\"Could not get 2D context for canvas\");\n }\n ctx.lineWidth = 2;\n\n // We use `--color-accent9` in light mode, but have to hard code it here.\n // In dark mode, we use the tranditional yellow as it just looks better.\n ctx.strokeStyle = isDark ? \"#f1c40f\" : \"#044a81\";\n\n const audioContext = new window.AudioContext();\n const source = audioContext.createMediaStreamSource(stream);\n const scope = new Oscilloscope(source, { fftSize: 1024 });\n scope.animate(ctx);\n\n return () => scope.stop();\n }\n return () => {};\n }, [stream, isDark]);\n\n return (\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { match } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { startAudioCapture, stopAudioCapture } from \"../../capturer\";\nimport { StepContainer } from \"../elements\";\nimport { queryMediaDevices } from \"../../util\";\nimport { StepProps } from \"..\";\nimport { SourceSelection } from \"./source-select\";\nimport { MicrophonePreview } from \"./mic-preview\";\n\n\nexport const LAST_AUDIO_DEVICE_KEY = \"ocStudioLastAudioDevice\";\n\n\n// The audio setup page. This component manages the state (either 'none\n// selected' or 'microphone selected') and renders the correct component.\nexport const AudioSetup: React.FC = ({ goToNextStep, goToPrevStep }) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { audioStream, audioChoice } = useStudioState();\n\n\n return match(audioChoice, {\n \"none\": () => {\n const selectMicrophone = async () => {\n dispatch({ type: \"CHOOSE_AUDIO\", choice: \"microphone\" });\n const deviceId = window.localStorage.getItem(LAST_AUDIO_DEVICE_KEY);\n await startAudioCapture(dispatch, deviceId ? { ideal: deviceId } : undefined);\n await queryMediaDevices(dispatch);\n };\n\n return (\n \n \n \n );\n },\n\n \"microphone\": () => {\n const reselectSource = () => {\n if (audioStream) {\n stopAudioCapture(audioStream, dispatch);\n }\n dispatch({ type: \"CHOOSE_AUDIO\", choice: \"none\" });\n };\n\n return (\n \n \n \n );\n },\n });\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { WithTooltip, match, useColorScheme } from \"@opencast/appkit\";\nimport { FiPause, FiPlay } from \"react-icons/fi\";\n\nimport { RecordingState } from \".\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { COLORS } from \"../../util\";\n\n\n\n\ntype Props = {\n recordingState: RecordingState;\n startRecording: () => void;\n pauseRecording: () => void;\n resumeRecording: () => void;\n};\n\nexport const RecordingControls: React.FC = ({\n recordingState,\n startRecording,\n pauseRecording,\n resumeRecording,\n}) => {\n const { t } = useTranslation();\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n const fgColor = isLight ? COLORS.neutral05 : COLORS.neutral90;\n\n const showAvailableShortcuts = useShowAvailableShortcuts();\n useShortcut(SHORTCUTS.recording.startPauseResume, () => {\n match(recordingState, {\n \"inactive\": () => startRecording(),\n \"paused\": () => resumeRecording(),\n \"recording\": () => pauseRecording(),\n });\n }, {\n ignoreEventWhen: e => e.code === \"Space\" && e.target instanceof HTMLButtonElement,\n }, [recordingState]);\n const label = match(recordingState, {\n \"inactive\": () => t(\"steps.record.record-button-title\"),\n \"paused\": () => t(\"steps.record.resume-button-title\"),\n \"recording\": () => t(\"steps.record.pause-button-title\"),\n });\n\n return (\n
\n \n startRecording,\n \"paused\": () => resumeRecording,\n \"recording\": () => pauseRecording,\n })}\n aria-label={label}\n aria-live=\"polite\"\n css={{\n position: \"relative\",\n width: 50,\n height: 50,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: 28,\n padding: 0,\n\n boxShadow: isHighContrast ? \"none\" : \"0 4px 4px rgba(0, 0, 0, 0.12)\",\n cursor: \"pointer\",\n color: (isHighContrast || isLight) ? \"white\" : \"#D6D6D6\",\n borderRadius: \"50%\",\n backgroundColor: isLight ? \"#E42D43\" : \"#b8012d\",\n border: `${isHighContrast ? \"2px\" : \"1px\"} solid ${fgColor}`,\n \":hover, :focus-visible\": {\n backgroundColor: isLight ? \"#c40a31\" : \"#8f0121\",\n },\n \":focus-visible\": {\n outline: `4px solid ${fgColor}`,\n },\n }}\n >\n {match(recordingState, {\n \"inactive\": () => null,\n \"paused\": () => ,\n \"recording\": () => ,\n })}\n {showAvailableShortcuts && (\n
\n \n
\n )}\n \n
\n \n
\n );\n};\n\n\ntype TimerProps = {\n isRecording: boolean;\n};\n\nconst Timer: React.FC = ({ isRecording }) => {\n const [formatted, setFormatted] = useState(\"00:00\");\n const millisPassed = useRef(0);\n\n useEffect(() => {\n let lastTick = new Date();\n const tick = () => {\n const newInstant = new Date();\n if (isRecording) {\n millisPassed.current += newInstant.valueOf() - lastTick.valueOf();\n\n const ms = millisPassed.current;\n let segments = [\n Math.floor(ms / (60 * 60 * 1000)),\n Math.floor(ms / (60 * 1000)) % 60,\n Math.floor(ms / 1000) % 60,\n ];\n if (segments[0] === 0) {\n segments = segments.slice(1);\n }\n setFormatted(segments.map(unit => (unit < 10 ? \"0\" : \"\") + unit).join(\":\"));\n }\n lastTick = newInstant;\n };\n const counterId = setInterval(tick, 100);\n return () => clearInterval(counterId);\n }, [isRecording]);\n\n\n\n\n return
{formatted}
;\n};\n","import fixWebmDuration from \"webm-duration-fix\";\nimport { Settings } from \"../../settings\";\nimport { dimensionsOf } from \"../../util\";\n\n\nexport type OnStopCallback = (args: {\n url: string;\n media: Blob;\n mimeType: string;\n dimensions: [number, number] | null;\n}) => void;\n\nexport default class Recorder {\n #recorder: MediaRecorder;\n #data: Blob[] = [];\n #dimensions: [number, number] | null;\n\n onStop: OnStopCallback;\n\n constructor(\n stream: MediaStream,\n settings: Settings[\"recording\"],\n onStop: OnStopCallback,\n ) {\n // Figure out MIME type.\n let mimeType: string | undefined;\n if (\"isTypeSupported\" in MediaRecorder) {\n mimeType = (settings?.mimes || [])\n .find(mime => MediaRecorder.isTypeSupported(mime));\n if (mimeType) {\n console.debug(\"using first supported MIME type from settings: \", mimeType);\n } else if (settings?.mimes) {\n console.debug(\"None of the MIME types specified in settings are supported by \"\n + \"this `MediaRecorder`\");\n }\n } else if (settings?.mimes) {\n console.debug(\"MIME types were specified, but `MediaRecorder.isTypeSupported` is not \"\n + \"supported by your browser\");\n }\n\n\n this.#reset();\n\n this.#dimensions = dimensionsOf(stream);\n this.onStop = onStop;\n\n const videoBitsPerSecond = settings?.videoBitrate;\n this.#recorder = new MediaRecorder(stream, { mimeType, videoBitsPerSecond });\n this.#recorder.ondataavailable = this.#onDataAvailable;\n this.#recorder.onstop = this.#onStop;\n }\n\n #reset = () => {\n this.#data = [];\n };\n\n #onDataAvailable = (event: BlobEvent) => {\n if (event.data.size > 0) {\n this.#data.push(event.data);\n } else {\n console.log(\"Recording data has size 0!\", event);\n }\n };\n\n #onStop = async (_event: Event) => {\n const mimeType = this.#data[0]?.type || this.#recorder.mimeType;\n const media = await fixWebmDuration(new Blob(this.#data, { type: mimeType }));\n const url = URL.createObjectURL(media);\n\n this.#reset();\n\n this.onStop?.({ url, media, mimeType, dimensions: this.#dimensions });\n };\n\n start() {\n this.#recorder.start();\n }\n\n pause() {\n this.#recorder.pause();\n }\n\n resume() {\n this.#recorder.resume();\n }\n\n stop() {\n this.#recorder.stop();\n }\n}\n","import { useTranslation } from \"react-i18next\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useBeforeunload } from \"react-beforeunload\";\nimport { keyframes } from \"@emotion/react\";\nimport { FiPauseCircle } from \"react-icons/fi\";\n\nimport {\n useStudioState, useDispatch, Dispatcher, Recording as StudioRecording,\n} from \"../../studio-state\";\nimport { useOpencast } from \"../../opencast\";\n\nimport { stopCapture } from \"../../capturer\";\nimport { StepProps } from \"..\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { StepContainer } from \"../elements\";\nimport { VideoBox, VideoBoxProps, useVideoBoxResize } from \"../../ui/VideoBox\";\nimport { dimensionsOf } from \"../../util\";\nimport { RecordingControls } from \"./controls\";\nimport Recorder, { OnStopCallback } from \"./recorder\";\nimport { useSettings } from \"../../settings\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\nexport type RecordingState = \"inactive\" | \"paused\" | \"recording\";\n\n\nconst addRecordOnStop = (\n dispatch: Dispatcher,\n deviceType: StudioRecording[\"deviceType\"],\n): OnStopCallback => {\n return ({ media, url, mimeType, dimensions }) => {\n dispatch({\n type: \"ADD_RECORDING\",\n recording: { deviceType, media, url, mimeType, dimensions },\n });\n };\n};\n\nconst mixAudioIntoVideo = (audioStreams: (MediaStream | null)[], videoStream: MediaStream) => (\n audioStreams.reduce(\n (stream, audioStream) => audioStream?.getAudioTracks().length\n ? new MediaStream([\n ...stream.getVideoTracks(),\n ...(\n stream.getAudioTracks().length\n ? (() => {\n const audioContext = new AudioContext();\n const accumulatedAudio = audioContext.createMediaStreamSource(stream);\n const currentAudio = audioContext.createMediaStreamSource(audioStream);\n const resultAudio = audioContext.createMediaStreamDestination();\n accumulatedAudio.connect(resultAudio);\n currentAudio.connect(resultAudio);\n return resultAudio.stream;\n })()\n : audioStream\n ).getAudioTracks(),\n ])\n : stream,\n videoStream,\n )\n);\n\n\nexport const Recording: React.FC = ({ goToNextStep, goToPrevStep }) => {\n const { t } = useTranslation();\n const recordingDispatch = useDispatch();\n const opencast = useOpencast();\n const dispatch = useDispatch();\n const settings = useSettings();\n const state = useStudioState();\n const {\n displayStream, userStream, displayUnexpectedEnd, userUnexpectedEnd, audioUnexpectedEnd,\n } = state;\n\n const [recordingState, setRecordingState] = useState(\"inactive\");\n\n const desktopRecorder = useRef();\n const videoRecorder = useRef();\n\n const canRecord = (displayStream || userStream)\n && !userUnexpectedEnd && !displayUnexpectedEnd && !audioUnexpectedEnd;\n\n const startRecording = () => {\n // In theory, we should never have recordings at this point. But just to be\n // sure, in case of a bug elsewhere, we clear the recordings here.\n dispatch({ type: \"CLEAR_RECORDINGS\" });\n\n if (displayStream) {\n const onStop = addRecordOnStop(dispatch, \"desktop\");\n const stream = mixAudioIntoVideo([state.audioStream], displayStream);\n desktopRecorder.current = new Recorder(stream, settings.recording, onStop);\n desktopRecorder.current.start();\n }\n if (userStream) {\n const onStop = addRecordOnStop(dispatch, \"video\");\n const stream = mixAudioIntoVideo([state.audioStream, displayStream], userStream);\n videoRecorder.current = new Recorder(stream, settings.recording, onStop);\n videoRecorder.current.start();\n }\n\n setRecordingState(\"recording\");\n dispatch({ type: \"START_RECORDING\" });\n };\n\n const stopRecording = (premature: boolean) => {\n desktopRecorder.current?.stop();\n videoRecorder.current?.stop();\n dispatch({ type: premature ? \"STOP_RECORDING_PREMATURELY\" : \"STOP_RECORDING\" });\n opencast.refreshConnection();\n stopCapture(state, recordingDispatch);\n goToNextStep();\n };\n\n const pauseRecording = () => {\n setRecordingState(\"paused\");\n desktopRecorder.current?.pause();\n videoRecorder.current?.pause();\n };\n\n const resumeRecording = () => {\n setRecordingState(\"recording\");\n desktopRecorder.current?.resume();\n videoRecorder.current?.resume();\n };\n\n // Detect if a stream ended unexpectedly. In that case we want to stop the\n // recording completely.\n useEffect(() => {\n const unexpectedEnd = userUnexpectedEnd || displayUnexpectedEnd || audioUnexpectedEnd;\n if (unexpectedEnd && (recordingState === \"recording\" || recordingState === \"paused\")) {\n stopRecording(true);\n }\n });\n\n const paused = recordingState === \"paused\";\n const previews: VideoBoxProps[\"children\"] = [];\n if (displayStream || displayUnexpectedEnd) {\n previews.push({\n body: ,\n dimensions: () => dimensionsOf(displayStream),\n autoSize: !displayStream,\n });\n }\n if (userStream || userUnexpectedEnd) {\n previews.push({\n body: ,\n dimensions: () => dimensionsOf(userStream),\n autoSize: !userStream,\n });\n }\n\n useBeforeunload(event => {\n if (recordingState !== \"inactive\") {\n event.preventDefault();\n }\n });\n\n return (\n stopRecording(false),\n disabled: recordingState !== \"paused\",\n label: t(\"steps.record.stop-button-title\"),\n }}\n >\n {audioUnexpectedEnd && (\n \n )}\n\n {previews}\n
\n {canRecord && (\n \n )}\n
\n \n );\n};\n\n\ntype StreamPreviewProps = {\n stream: MediaStream | null;\n paused: boolean;\n};\n\nconst StreamPreview: React.FC = ({ stream, paused }) => {\n const { t } = useTranslation();\n const resizeVideoBox = useVideoBoxResize();\n const videoRef = useRef(null);\n const { isHighContrast } = useColorScheme();\n\n useEffect(() => {\n const v = videoRef.current;\n if (v && stream) {\n if (!v.srcObject) {\n v.srcObject = stream;\n }\n v.addEventListener(\"resize\", resizeVideoBox);\n\n if (paused) {\n v.pause();\n } else {\n v.play();\n }\n\n return () => v.removeEventListener(\"resize\", resizeVideoBox);\n }\n });\n\n if (!stream) {\n return ;\n }\n\n return (\n \n {paused && }\n \n \n );\n};\n\nconst PauseOverlay: React.FC = () => {\n const { t } = useTranslation();\n\n return (\n \n
\n \n {t(\"steps.record.is-paused\")}\n
\n \n );\n};\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutHereIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 100 90\",\n width: \"1em\",\n height: \"1em\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.7.002c-2.91.059-5.75 1.49-7.44 4.08a8.84 8.84 0 0 0-1.42 5.29c-.08.122-.986 1.51-1.13 1.72-.13-.2-.997-1.54-1.08-1.66a8.84 8.84 0 0 0-1.4-5.29c-1.68-2.59-4.51-4.04-7.42-4.11a9.03 9.03 0 0 0-5.09 1.41c-4.18 2.66-5.4 8.27-2.72 12.4 2.56 3.96 7.83 5.24 11.9 3.02l.992 1.53c-2.84 4.35-4.9 7.5-6.74 10.3-3.09 4.73-1.94 8.93 2.01 11.5l9.47-14.5 9.45 14.6c3.96-2.55 5.13-6.75 2.06-11.5-1.84-2.84-3.9-6.03-6.74-10.4l1.04-1.59c4.1 2.23 9.37.974 12-2.97 2.03-3.1 1.85-7.03-.114-9.93a8.9 8.9 0 0 0-2.55-2.49 8.94 8.94 0 0 0-5.08-1.43zm.09 5.96a3.04 3.04 0 0 1 1.7.499c.357.23.65.514.872.835.668.962.712 2.24.018 3.31-.926 1.42-2.74 1.8-4.17.882-1.43-.92-1.82-2.73-.89-4.14.58-.886 1.51-1.37 2.47-1.38zm-20.1.023c.963.017 1.89.504 2.46 1.39.92 1.42.525 3.22-.906 4.14s-3.25.521-4.17-.9c-.92-1.42-.525-3.22.906-4.14a3.07 3.07 0 0 1 1.71-.492zm10 24.1a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m0 10.9a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m-1.5 8.8a2.43 2.42 0 0 0-2.43 2.42v35.4a2.43 2.42 0 0 0 2.43 2.42h8.94v-4.83h-6.51v-30.6h6.1v-4.83zm6.51 8.86v22.5h55.2v-4.83h-3.22a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71h3.22v-4.83zm6.59 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71m22.7 0h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.77-1.71 1.72-1.71\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 58.6v4.83h2.44c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H0v4.83h31.8v-22.5zm10.8 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H10.8a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.768-1.71 1.72-1.71\",\n opacity: 0.2\n}))));\nexport default SvgCutHereIcon;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutMarker = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 21h-4V3h4\"\n})));\nexport default SvgCutMarker;","import React, { RefObject, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ProtoButton, WithTooltip, notNullish, useColorScheme } from \"@opencast/appkit\";\nimport { FiPause, FiPlay } from \"react-icons/fi\";\n\nimport { useStudioState, useDispatch, Dispatcher } from \"../../studio-state\";\nimport { useSettings } from \"../../settings\";\nimport CutHereIcon from \"./cut-here-icon.svg\";\nimport CutMarkerIcon from \"./cut-marker.svg\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { ALMOST_ZERO } from \".\";\nimport { PreviewHandle } from \"./preview\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\n\n\ntype SharedProps = {\n previewController: React.RefObject;\n currentTime: number;\n};\n\nexport const ControlBox: React.FC = ({ previewController, currentTime }) => {\n const { i18n } = useTranslation();\n const duration = previewController.current?.duration;\n const { isHighContrast } = useColorScheme();\n\n return (\n
\n \n
\n {formatTime(currentTime, duration, i18n.language)}\n /\n {formatTime(duration, duration, i18n.language)}\n
\n \n
\n );\n};\n\nconst formatTime = (\n seconds: number | undefined,\n totalDuration: number | undefined,\n lang: string,\n): string => {\n const MINUTE = 60;\n const HOUR = 60 * MINUTE;\n\n if (seconds === undefined) {\n return \"--:--\";\n }\n\n const secondsPart = seconds % 60;\n const minutesPart = Math.floor(seconds / MINUTE) % 60;\n const hoursPart = Math.floor(seconds / HOUR);\n\n const secondsFormatted = secondsPart.toLocaleString(lang, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n });\n\n const lowerPart = `${minutesPart <= 9 ? \"0\" : \"\"}${minutesPart}`\n + `:${secondsPart <= 9 ? \"0\" : \"\"}${secondsFormatted}`;\n\n return (totalDuration && totalDuration >= HOUR)\n ? `${hoursPart}:${lowerPart}`\n : lowerPart;\n};\n\nconst Scrubber: React.FC = ({ previewController, currentTime }) => {\n const duration = previewController.current?.duration || Infinity;\n const settings = useSettings();\n const dispatch = useDispatch();\n const { start, end } = useStudioState();\n const ref = useRef(null);\n const { isHighContrast } = useColorScheme();\n\n const setTime = (mouseEvent: React.MouseEvent) => {\n const rect = mouseEvent.currentTarget.getBoundingClientRect();\n const x = mouseEvent.clientX - rect.x;\n let progress = x / rect.width;\n if (progress < 0) {\n progress = 0;\n } else if (progress > 1) {\n progress = 1;\n }\n\n if (previewController.current) {\n previewController.current.currentTime = progress * duration;\n }\n };\n\n const cutStyle = {\n position: \"absolute\",\n backgroundColor: COLORS.danger1,\n height: \"var(--scrubber-height)\",\n borderRadius: \"var(--scrubber-border-radius)\",\n boxSizing: \"content-box\",\n background: \"repeating-linear-gradient(45deg,\"\n + `${COLORS.danger2}, ${COLORS.danger2} 4px,`\n + `${COLORS.danger1} 4px, ${COLORS.danger1} 8px)`,\n } as const;\n\n return (\n
\n
\n {/* An overlay that extends further above and below the parent for easier clicking. */}\n setTime(e)}\n css={{\n position: \"absolute\",\n width: \"100%\",\n cursor: \"pointer\",\n zIndex: 5,\n top: -6,\n bottom: -6,\n }}\n >\n {/* The playhead */}\n notNullish(previewController.current).currentTime = time}\n >\n
\n \n
\n\n {/* The two \"deleted\" areas */}\n {(start != null && start > 0) &&
}\n {(end != null && end < duration) &&
}\n\n {/* The two trim markers */}\n {settings.review?.disableCutting || <>\n Math.min(time, end ?? duration)}\n onDrag={time => dispatch({ type: \"UPDATE_START\", time })}\n >\n Math.max(time, start ?? 0)}\n onDrag={time => dispatch({ type: \"UPDATE_END\", time })}\n >\n }\n\n {/* The play progress bar, overlaying darkening everything behind. */}\n
\n
\n
\n );\n};\n\ntype CutMarkerProps = {\n side: \"left\" | \"right\";\n isHighContrast: boolean;\n};\n\nconst CutMarker: React.FC = ({ side, isHighContrast }) => (\n
\n \n
\n);\n\ntype DraggableProps = React.PropsWithChildren<{\n previewController: RefObject;\n scrubberRef: RefObject;\n initialTime: number;\n\n /** Called on every mouse move with the updated value */\n onDrag?: (time: number) => void;\n\n /**\n * Called on every mouse move. The calculate time is passed as argument and\n * the function can modify it somehow, i.e. clamp it to a range. Called\n * before `onDrag`.\n */\n clamp?: (time: number) => number;\n}>;\n\n/**\n * Makes the given `children` draggable, letting the user adjust its x position\n * inside the scrubber.\n */\nconst Draggable: React.FC = ({\n previewController,\n scrubberRef,\n initialTime,\n onDrag,\n clamp = t => t,\n children,\n}) => {\n const duration = previewController.current?.duration || Infinity;\n\n const initialPos = initialTime / duration;\n const pos = useRef(initialPos);\n const scrubberRect = useRef();\n const ref = useRef(null);\n const isDragging = useRef(false);\n\n useEffect(() => {\n const onMouseUp = () => {\n if (isDragging.current) {\n isDragging.current = false;\n onDrag?.(pos.current * duration);\n\n // Reset the element style so that the `left` value from the class CSS\n // can take over again.\n notNullish(ref.current).style.left = \"\";\n }\n };\n const onMouseMove = (e: MouseEvent) => {\n onMove(e.pageX);\n };\n const onMove = (pageX: number) => {\n if (isDragging.current) {\n const rect = notNullish(scrubberRect.current);\n const percentage = Math.min(1.0, Math.max(0.0, (pageX - rect.left) / rect.width));\n pos.current = clamp(duration * percentage) / duration;\n onDrag?.(pos.current * duration);\n\n // We set the left value here directly instead of waiting for the React\n // state change to trickle through. This actually leads to less input\n // delay and a smoother dragging.\n notNullish(ref.current).style.left = `${pos.current * 100}%`;\n }\n };\n const onTouchMove = (e: TouchEvent) => {\n if (e.touches.length > 0) {\n onMove(e.touches[0].pageX);\n }\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"touchend\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"touchmove\", onTouchMove);\n\n return () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"touchend\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"touchmove\", onTouchMove);\n };\n });\n\n return (\n {\n isDragging.current = true;\n scrubberRect.current = notNullish(scrubberRef.current).getBoundingClientRect();\n }}\n onTouchStart={() => {\n console.log(\"TOUCH START\");\n isDragging.current = true;\n scrubberRect.current = notNullish(scrubberRef.current).getBoundingClientRect();\n }}\n css={{\n position: \"absolute\",\n zIndex: 10,\n left: `${initialPos * 100}%`,\n cursor: \"grab\",\n userSelect: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%) translateX(-50%)\",\n padding: \"8px 4px\", // To make grabbing it easier\n }}\n >\n {children}\n
\n );\n};\n\nconst Controls: React.FC = ({ currentTime, previewController }) => {\n const { start, end } = useStudioState();\n const recordingDispatch = useDispatch();\n const settings = useSettings();\n const { t } = useTranslation();\n\n const togglePlayPause = () => {\n const controller = previewController.current;\n if (controller) {\n if (controller.isPlaying) {\n controller.pause();\n } else if (controller.isReadyToPlay) {\n controller.play();\n }\n }\n };\n\n useShortcut(SHORTCUTS.review.playPause, togglePlayPause, {\n ignoreEventWhen: e => e.code === \"Space\" && e.target instanceof HTMLButtonElement,\n });\n const showShortcuts = useShowAvailableShortcuts();\n const { isHighContrast } = useColorScheme();\n\n const isPlaying = previewController.current?.isPlaying;\n const label = t(`steps.review.${isPlaying ? \"pause\" : \"play\"}` as const);\n return (\n
\n {/* Cut start */}\n {settings.review?.disableCutting || start < end}\n {...{ recordingDispatch, previewController, currentTime }}\n />}\n\n {/* Play/pause button */}\n \n e.preventDefault()}\n >\n {showShortcuts && (\n
\n )}\n {isPlaying ? : }\n \n
\n\n {/* Cut end */}\n {settings.review?.disableCutting || start < end}\n {...{ recordingDispatch, previewController, currentTime }}\n />}\n
\n );\n};\n\ntype CutControlsProps = SharedProps & {\n marker: \"start\" | \"end\";\n value: number | null;\n control: number | null;\n invariant: (self: number, control: number) => boolean;\n recordingDispatch: Dispatcher;\n};\n\nconst CutControls: React.FC = (\n { marker, value, control, invariant, currentTime, previewController, recordingDispatch }\n) => {\n const { t, i18n } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const disabled = currentTime <= ALMOST_ZERO\n || (previewController.current && currentTime >= previewController.current.duration)\n || (control != null && !invariant(currentTime, control));\n\n const cut = () => {\n if (!previewController.current) {\n return;\n }\n\n let value = previewController.current.currentTime;\n // We disable the buttons when the generated values would be invalid,\n // but we rely on `timeupdate` events for that, which are not guaranteed\n // to be timely, so we still have to check the invariant when actually\n // updating the state. Here we decided to just clamp the value appropriately.\n if (control != null && !invariant(value, control)) {\n value = control;\n }\n recordingDispatch({\n type: marker === \"start\" ? \"UPDATE_START\" : \"UPDATE_END\",\n time: value,\n });\n };\n\n const shortcut = SHORTCUTS.review[marker === \"start\" ? \"cutLeft\" : \"cutRight\"];\n useShortcut(shortcut, cut, { enabled: !disabled });\n useShortcut(\n SHORTCUTS.review[marker === \"start\" ? \"removeCutLeft\" : \"removeCutRight\"],\n () => recordingDispatch({\n type: marker === \"start\" ? \"UPDATE_START\" : \"UPDATE_END\",\n time: null,\n }),\n );\n const showShortcuts = useShowAvailableShortcuts();\n\n const timestamp = (\n
\n { value !== null && (\n \n {\n event.preventDefault();\n if (previewController.current) {\n previewController.current.currentTime = value;\n }\n }}\n onMouseDown={e => e.preventDefault()}\n >\n {formatTime(value, value, i18n.language)}\n \n \n )}\n
\n );\n\n const cutButton = (\n \n e.preventDefault()}\n css={{\n lineHeight: 0,\n padding: \"4px 8px\",\n paddingTop: 4,\n borderRadius: 4,\n ...focusStyle(),\n \"&:disabled\": {\n opacity: 0.3,\n },\n \"&:not(:disabled):hover\": {\n backgroundColor: COLORS.neutral10,\n color: isHighContrast ? COLORS.accent4 : \"inherit\",\n },\n }}\n >\n \n {showShortcuts && !disabled && (\n
\n )}\n \n
\n );\n\n return marker === \"start\"\n ? <>{timestamp}{cutButton}\n : <>{cutButton}{timestamp};\n};\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutOutIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 100 65\",\n width: \"1em\",\n height: \"1em\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M24.6 0c-.447 0-.894.171-1.24.511l-3.07 3.05a1.73 1.73 0 0 0 0 2.46l58.8 58.5c.685.681 1.79.681 2.47 0l3.07-3.05a1.73 1.73 0 0 0 0-2.46l-6.68-6.64h22v-7.32h-15.6c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h15.6v-7.32h-56.4L25.75.551A1.75 1.75 0 0 0 24.51.04zM0 18.2v7.32h3.7c1.44 0 2.6 1.15 2.6 2.59v14.3C6.3 43.84 5.14 45 3.7 45H0v7.32h55.8l-15.4-15.3v5.36c0 1.43-1.16 2.59-2.6 2.59H16c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h12.8l-7.36-7.32zm51 7.32h21c1.44 0 2.6 1.15 2.6 2.59v14.3c0 1.43-1.16 2.59-2.6 2.59h-1.4z\"\n})));\nexport default SvgCutOutIcon;","import {\n forwardRef, useState, useRef, useEffect, useImperativeHandle, SyntheticEvent,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, notNullish, useColorScheme } from \"@opencast/appkit\";\n\nimport { useStudioState } from \"../../studio-state\";\nimport CutOutIcon from \"./cut-out-icon.svg\";\nimport { VideoBox } from \"../../ui/VideoBox\";\nimport { ALMOST_ZERO } from \".\";\nimport { SHORTCUTS, useShortcut } from \"../../shortcuts\";\n\n\ntype PreviewProps = {\n onTimeUpdate: (event: SyntheticEvent) => void;\n onPausePlay: (paused: boolean) => void;\n onReady: () => void;\n};\n\nexport type PreviewHandle = {\n currentTime: number;\n readonly duration: number;\n readonly isPlaying: boolean;\n readonly isReadyToPlay: boolean;\n play(): void;\n pause(): void;\n};\n\nexport const Preview = forwardRef((\n { onTimeUpdate, onReady, onPausePlay },\n ref,\n) => {\n const { recordings, start, end } = useStudioState();\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const videoRefs = [useRef(null), useRef(null)];\n const allVideos = videoRefs.slice(0, recordings.length);\n\n const desktopIndex = recordings.length === 2\n ? (recordings[0].deviceType === \"desktop\" ? 0 : 1)\n : null;\n\n // The index of the last video ref that received an event (0 or 1).\n const lastOrigin = useRef<0 | 1>();\n\n // When updating the currenTime, i.e. the play position, we want to throttle\n // this somehow. Just always setting `currentTime` is not ideal: consider\n // `onMouseMove`, which would set a new value very frequently. Chrome and\n // Firefox don't seem to handle that very well: every new time set will\n // cancel the in-progress seeking, leading to quite large delays.\n //\n // What we do instead is: if we are not currently seeking, just set the time\n // as normal. But if a seek operation is in progress, we just queue the time.\n // Further below, the `onSeeked` event handler is the second part of the\n // solution: when a seek operation has ended and a new time is queued, we\n // seek to that time again. Put simply: we just wait for seek operations to\n // finish before changing `currenTime` again.\n const queuedSeek = useRef(null);\n const setTime = (newTime: number) => {\n const isSeeking = allVideos.some(v => v.current?.seeking);\n if (isSeeking) {\n queuedSeek.current = newTime;\n } else {\n allVideos.forEach(r => {\n if (r.current) {\n r.current.currentTime = Math.max(0, Math.min(newTime, r.current.duration));\n }\n });\n }\n };\n\n useImperativeHandle(ref, () => ({\n get currentTime() {\n return notNullish(videoRefs[lastOrigin.current ?? 0].current?.currentTime);\n },\n set currentTime(newTime) {\n setTime(newTime);\n },\n get duration() {\n return notNullish(videoRefs[lastOrigin.current ?? 0].current?.duration);\n },\n get isPlaying() {\n const v = videoRefs[lastOrigin.current ?? 0].current;\n return v != null && v.currentTime > 0 && !v.paused && !v.ended;\n },\n get isReadyToPlay() {\n // State 2 means \"at least enough data to play one frame\"\n return allVideos.every(r => (r.current?.readyState ?? 0) >= 2);\n },\n play() {\n allVideos.forEach(r => r.current?.play());\n onPausePlay(false);\n },\n pause() {\n allVideos.forEach(r => r.current?.pause());\n onPausePlay(true);\n },\n }));\n\n // Some browsers don't calculate the duration for the recorded videos\n // preventing us from seeking in the video. We force it below\n // in the event handlers of the video elements, but we want to hold off\n // on some effects until that calculation is done.\n type DurationCalcState = \"done\" | \"started\";\n const durationCalculationProgress = [\n useRef(),\n useRef(),\n ];\n const [durationsCalculated, setDurationsCalculated] = useState(false);\n\n // Some logic to decide whether we currently are in a part of the video that\n // will be removed. The state will be updated in `onTimeUpdate` below and is\n // only here to trigger a rerender: the condition for rendering the overlay is\n // below.\n const isInCutRegion = (time: number) =>\n (start !== null && time < start) || (end !== null && time > end);\n const currentTime = videoRefs[lastOrigin.current ?? 0].current?.currentTime || 0;\n const overlayVisible = isInCutRegion(currentTime);\n const [, setOverlayVisible] = useState(overlayVisible);\n\n useEffect(() => {\n if (durationsCalculated) {\n onReady();\n }\n }, [onReady, durationsCalculated]);\n\n // Setup backup synchronization between both video elements\n useEffect(() => {\n if (!durationsCalculated) {\n return;\n }\n\n if (desktopIndex != null) {\n // If we have two recordings, both will have audio. But the user doesn't\n // want to hear audio twice, so we mute one video element. Particularly,\n // we mute the desktop video, as there the audio/video synchronization is\n // not as critical.\n notNullish(videoRefs[desktopIndex].current).volume = 0;\n\n const va = notNullish(videoRefs[0].current);\n const vb = notNullish(videoRefs[1].current);\n\n // We regularly check if both video elements diverge too much from one\n // another.\n let frameCounter = 0;\n let fixRequest: number;\n const fixTime = () => {\n // Only run every 60 frames.\n if (frameCounter % 60 === 0) {\n // We want the difference to be below 150ms. Usually, even without\n // this backup solution, it should be below 50ms at all time. That's\n // what testing showed.\n const diff = Math.abs(va.currentTime - vb.currentTime);\n if (diff > 0.15 && lastOrigin.current != null) {\n const origin = videoRefs[lastOrigin.current].current;\n const target = videoRefs[lastOrigin.current === 0 ? 1 : 0].current;\n notNullish(target).currentTime = notNullish(origin).currentTime;\n }\n }\n\n frameCounter++;\n fixRequest = window.requestAnimationFrame(fixTime);\n };\n fixRequest = window.requestAnimationFrame(fixTime);\n\n return () => window.cancelAnimationFrame(fixRequest);\n }\n });\n\n\n const jumpInTime = (diff: number) =>\n setTime(notNullish(videoRefs[lastOrigin.current ?? 0].current?.currentTime) + diff);\n\n // TODO: This is obviously not always correct. Finding out the FPS of the\n // recording is surprisingly tricky. And actually, browsers seem to record\n // with 30fps almost all of the time right now anway.\n const fps = 30;\n useShortcut(SHORTCUTS.review.forwards5secs, () => jumpInTime(5));\n useShortcut(SHORTCUTS.review.backwards5secs, () => jumpInTime(-5));\n useShortcut(SHORTCUTS.review.forwardsFrame, () => jumpInTime(1 / fps));\n useShortcut(SHORTCUTS.review.backwardsFrame, () => jumpInTime(-1 / fps));\n\n\n const children = recordings.map((recording, index) => ({\n dimensions: () => recording.dimensions,\n body: (\n
\n {overlayVisible && (\n
\n \n

{t(\"steps.review.part-will-be-removed\")}

\n
\n )}\n {\n // Force the browser to calculate the duration of the stream\n // by seeking way past its end. *fingers crossed*\n // We reset this later in an effect. (See above.)\n // Also without setting the current time once initially,\n // some browsers show a black video element instead of the first frame.\n event.currentTarget.currentTime = Number.MAX_VALUE;\n durationCalculationProgress[index].current = \"started\";\n }}\n onSeeked={() => {\n if (durationsCalculated) {\n const isOtherSeeking = videoRefs[index == 0 ? 1 : 0].current?.seeking;\n const queued = queuedSeek.current;\n if (!isOtherSeeking && queued != null) {\n allVideos.forEach(r => {\n if (r.current) {\n r.current.currentTime = queued;\n }\n });\n queuedSeek.current = null;\n }\n }\n }}\n onTimeUpdate={event => {\n if (durationsCalculated) {\n setOverlayVisible(isInCutRegion(event.currentTarget.currentTime));\n onTimeUpdate(event);\n } else {\n match(notNullish(durationCalculationProgress[index].current), {\n \"started\": () => {\n event.currentTarget.currentTime = ALMOST_ZERO;\n durationCalculationProgress[index].current = \"done\";\n },\n \"done\": () => {\n const finishedCalculations = durationCalculationProgress\n .filter(p => p.current === \"done\")\n .length;\n if (finishedCalculations === recordings.length) {\n setDurationsCalculated(true);\n }\n },\n });\n }\n }}\n\n // For iOS: without the autoplay attribute, the `loadeddata` event is\n // never fired for some reason. Adding this does not seem to actually\n // cause Safari to autoplay.\n autoPlay={/iPad|iPhone|iPod/.test(navigator.userAgent)}\n\n // Also for iOS: without this, the video maximizes automatically.\n playsInline\n\n preload=\"auto\"\n tabIndex={-1}\n css={{\n width: \"100%\",\n height: \"100%\",\n outline: \"none\",\n boxShadow: isHighContrast ? \"none\" : \"0 4px 16px var(--shadow-color)\",\n borderRadius: 16,\n }}\n />\n
\n ),\n }));\n\n return {children};\n});\n","import React, { useState, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Spinner, match } from \"@opencast/appkit\";\n\nimport { StepContainer } from \"../elements\";\nimport { useStudioState, useDispatch } from \"../../studio-state\";\nimport { StepProps } from \"..\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { ControlBox } from \"./control-box\";\nimport { Preview, PreviewHandle } from \"./preview\";\nimport { FiTrash } from \"react-icons/fi\";\n\n\n// In some situation we would like to set the current time to 0 or check for it.\n// Thanks to a browser bug, setting the current time to 0 fails. Using a number\n// slightly higher works though. So we use this 1ms time for now. Sigh.\nexport const ALMOST_ZERO = 0.001;\n\nexport const Review: React.FC = ({ goToFirstStep, goToNextStep }) => {\n const { t } = useTranslation();\n const recordingDispatch = useDispatch();\n const { recordings, prematureRecordingEnd, videoChoice } = useStudioState();\n const emptyRecording = recordings.some(rec => rec.media.size === 0);\n const previewController = useRef(null);\n const [currentTime, setCurrentTime] = useState(0);\n const [previewReady, setPreviewReady] = useState(false);\n const [_isPaused, setIsPaused] = useState(true);\n\n const expectedRecordings = match(videoChoice, {\n \"both\": () => 2,\n \"display\": () => 1,\n \"user\": () => 1,\n \"none\": () => 0,\n });\n\n return (\n ,\n label: t(\"steps.review.button-discard-and-record\"),\n onClick: () => {\n const doIt = window.confirm(t(\"confirm-discard-recordings\"));\n if (doIt) {\n recordingDispatch({ type: \"RESET\" });\n goToFirstStep();\n }\n },\n }}\n nextButton={{ onClick: goToNextStep }}\n >\n {prematureRecordingEnd && (\n \n )}\n\n {emptyRecording && (\n \n )}\n\n {(!previewReady || recordings.length !== expectedRecordings) && (\n
\n \n
\n )}\n {recordings.length === expectedRecordings && (\n
\n {\n setCurrentTime(event.currentTarget.currentTime);\n }}\n onPausePlay={paused => setIsPaused(paused)}\n onReady={() => setPreviewReady(true)}\n />\n\n \n
\n )}\n \n );\n};\n","import React, { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FiDownload } from \"react-icons/fi\";\nimport { LuCheckCircle2 } from \"react-icons/lu\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { recordingFileName } from \"../../util\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { prettyFileSize, sharedButtonStyle } from \".\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\n\nexport const SaveLocally: React.FC = () => {\n const { t, i18n } = useTranslation();\n const { recordings, title, presenter } = useStudioState();\n const dispatch = useDispatch();\n const showShortcuts = useShowAvailableShortcuts();\n\n const buttons = recordings.map(() => useRef(null));\n useShortcut(SHORTCUTS.finish.download, () => {\n for (const button of buttons) {\n button.current?.click();\n }\n });\n\n return recordings.map((recording, i) => {\n const { deviceType, mimeType, url, downloaded, media: blob } = recording;\n const flavor = deviceType === \"desktop\" ? t(\"sources-display\") : t(\"sources-user\");\n const downloadName = recordingFileName({ mime: mimeType, flavor, title, presenter });\n const { isHighContrast } = useColorScheme();\n\n if (!url) {\n return null;\n }\n\n return (\n
\n
\n e.currentTarget.currentTime = 0}\n preload=\"auto\"\n css={{\n borderRadius: 4,\n display: \"block\",\n maxHeight: 190,\n margin: \"0 auto\",\n }}\n />\n {downloaded && (\n
\n \n {t(\"steps.finish.save-locally.recording-saved\")}\n
\n )}\n
\n dispatch({ type: \"MARK_DOWNLOADED\", index: i })}\n onKeyDown={e => {\n if (e.key === \" \") {\n e.preventDefault();\n buttons[i].current?.click();\n }\n }}\n css={{\n ...sharedButtonStyle(isHighContrast),\n justifyContent: \"center\",\n maxWidth: 260,\n margin: \"auto\",\n marginTop: 8,\n }}\n >\n \n {t(\"steps.finish.save-locally.label\") + \" (\" + prettyFileSize(blob.size, i18n) + \")\"}\n {showShortcuts && (\n
\n \n
\n )}\n \n
\n );\n });\n};\n","import { HTMLInputTypeAttribute, useEffect, useId, useRef, useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport Select, { CSSObjectWithLabel, SelectInstance } from \"react-select\";\nimport {\n ControllerRenderProps, FieldError, FieldValues, Path, SubmitHandler, Validate,\n useController, useForm,\n} from \"react-hook-form\";\nimport { FiUpload } from \"react-icons/fi\";\nimport { LuCheckCircle2 } from \"react-icons/lu\";\nimport { ProtoButton, Spinner, match, notNullish, unreachable, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { Opencast, useOpencast } from \"../../opencast\";\nimport { useSettings, useSettingsManager } from \"../../settings\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { prettyFileSize, sharedButtonStyle } from \".\";\n\n\nconst LAST_PRESENTER_KEY = \"ocStudioLastPresenter\";\n\nlet progressHistory: { timestamp: number; progress: number }[] = [];\n\n\nexport const UploadBox: React.FC = () => {\n const settings = useSettings();\n const { t } = useTranslation();\n const opencast = useOpencast();\n const { recordings, upload: uploadState, title, presenter, ...state } = useStudioState();\n const dispatch = useDispatch();\n\n function onProgress(progress: number) {\n // ----- Time estimation -----\n // We use a simple sliding average over the last few data points and assume\n // that speed for the rest of the upload.\n const now = Date.now();\n\n // Add progress data point to history.\n progressHistory.push({\n timestamp: now,\n progress,\n });\n\n // The size of the sliding window in milliseconds.\n const WINDOW_SIZE_MS = 5000;\n // The size of the sliding window in number of data points.\n const WINDOW_SIZE_DATA_POINTS = 6;\n // The number of datapoints below which we won't show a time estimate.\n const MINIMUM_DATA_POINT_COUNT = 4;\n\n // Find the first element within the window. We use the larger window of the\n // two windows created by the two constraints (time and number of\n // datapoints).\n const windowStart = Math.min(\n progressHistory.findIndex(p => (now - p.timestamp) < WINDOW_SIZE_MS),\n Math.max(0, progressHistory.length - WINDOW_SIZE_DATA_POINTS),\n );\n\n // Remove all elements outside the window.\n progressHistory.splice(0, windowStart);\n\n let secondsLeft: null | number = null;\n if (progressHistory.length >= MINIMUM_DATA_POINT_COUNT) {\n // Calculate the remaining time based on the average speed within the window.\n const windowLength = now - progressHistory[0].timestamp;\n const progressInWindow = progress - progressHistory[0].progress;\n const progressPerSecond = (progressInWindow / windowLength) * 1000;\n const progressLeft = 1 - progress;\n secondsLeft = Math.max(0, Math.round(progressLeft / progressPerSecond));\n }\n\n // Update state if anything changed. We actually check for equality here to\n // avoid useless redraws.\n if (uploadState.secondsLeft !== secondsLeft || uploadState.currentProgress !== progress) {\n dispatch({\n type: \"UPLOAD_PROGRESS_UPDATE\",\n secondsLeft,\n currentProgress: progress,\n });\n }\n }\n\n useEffect(() => {\n // To still update the time estimation, we make sure to call `onProgress` at\n // least every so often.\n const interval = setInterval(() => {\n if (uploadState.state !== \"uploading\") {\n return;\n }\n\n if (!progressHistory.length) {\n onProgress(0);\n } else {\n const lastProgress = progressHistory[progressHistory.length - 1];\n const timeSinceLastUpdate = Date.now() - lastProgress.timestamp;\n if (timeSinceLastUpdate > 3000) {\n onProgress(lastProgress.progress);\n }\n }\n }, 1000);\n\n return () => clearInterval(interval);\n });\n\n const handleUpload: SubmitHandler = async data => {\n dispatch({ type: \"UPLOAD_REQUEST\" });\n progressHistory.push({\n timestamp: Date.now(),\n progress: 0,\n });\n const result = await opencast.upload({\n recordings: recordings.filter(Boolean),\n title: data.title,\n presenter: data.presenter,\n series: data.series,\n uploadSettings: settings.upload,\n onProgress,\n start: state.start,\n end: state.end,\n startTime: state.recordingStartTime ?? unreachable(\"no start time set\"),\n endTime: state.recordingEndTime ?? unreachable(\"no end time set\"),\n });\n progressHistory = [];\n\n const dispatchError = (msg: string) => dispatch({ type: \"UPLOAD_ERROR\", msg });\n match(result, {\n \"success\": () => dispatch({ type: \"UPLOAD_SUCCESS\" }),\n \"network_error\": () => dispatchError(t(\"steps.finish.upload.upload-network-error\")),\n \"not_authorized\": () => dispatchError(t(\"steps.finish.upload.upload-not-authorized\")),\n \"unexpected_response\": () => dispatchError(t(\"steps.finish.upload.upload-invalid-response\")),\n }, () => dispatchError(t(\"steps.finish.upload.upload-unknown-error\")));\n };\n\n switch (uploadState.state) {\n case \"uploading\":\n return ;\n case \"uploaded\":\n return ;\n default: // \"not_uploaded\" or \"error\"\n return ;\n }\n};\n\n\ntype Inputs = {\n title: string;\n presenter: string;\n series: string;\n serverUrl: string;\n loginName: string;\n loginPassword: string;\n};\n\ntype UploadFormProps = {\n handleUpload: SubmitHandler;\n};\n\nconst UploadForm: React.FC = ({ handleUpload }) => {\n const {\n titleField = \"required\",\n presenterField = \"required\",\n seriesField = \"optional\",\n autofillPresenter = [],\n } = useSettings().upload ?? {};\n\n const { t, i18n } = useTranslation();\n const opencast = useOpencast();\n const dispatch = useDispatch();\n const settingsManager = useSettingsManager();\n const { title, presenter, upload: uploadState, recordings } = useStudioState();\n const presenterValue = presenter\n || window.localStorage.getItem(LAST_PRESENTER_KEY)\n || autofillPresenter\n .map(source => match(source, {\n \"opencast\": () => opencast.getUsername(),\n }))\n .find(Boolean)\n || \"\";\n\n type FormState = \"idle\" | \"testing\";\n const [state, setState] = useState(\"idle\");\n\n const { formState: { errors }, handleSubmit, register, control, getValues } = useForm({\n defaultValues: settingsManager.formValues().opencast,\n });\n const { field: seriesSelect } = useController({\n name: \"series\",\n control,\n rules: {\n required: seriesField === \"required\"\n ? t(\"steps.finish.upload.validation-error-required\")\n : false,\n },\n });\n\n // This is a bit ugly, but works. We want to make sure that the `title` and\n // `presenter` values in the studio state always equal the current value in\n // the input.\n function handleInputChange(event: React.ChangeEvent) {\n const target = event.target;\n dispatch({\n type: notNullish(\n ({ title: \"UPDATE_TITLE\", presenter: \"UPDATE_PRESENTER\" } as const)[target.name],\n ),\n value: target.value,\n });\n\n if (target.name === \"presenter\") {\n window.localStorage.setItem(LAST_PRESENTER_KEY, target.value);\n }\n }\n\n // If the user has not yet changed the value of the field, but it has been prefilled\n // from local storage or one of the `autofillPresenter` sources, update the state\n // using that value.\n useEffect(() => {\n if (presenterValue !== presenter) {\n dispatch({ type: \"UPDATE_PRESENTER\", value: presenterValue });\n }\n }, []);\n\n const configurableServerUrl = settingsManager.isConfigurable(\"opencast.serverUrl\");\n const configurableUsername = settingsManager.isUsernameConfigurable();\n const configurablePassword = settingsManager.isPasswordConfigurable();\n const showOpencastSection = configurableServerUrl || configurableUsername || configurablePassword;\n\n const ocDataFromInputs = (data: Inputs) => ({\n serverUrl: data.serverUrl,\n loginName: data.loginName,\n loginPassword: data.loginPassword,\n });\n\n const onSubmit: SubmitHandler = async data => {\n if (!showOpencastSection) {\n await handleUpload(data);\n return;\n }\n\n console.log(data);\n setState(\"testing\");\n\n // Update Opencast connection data. This is a bit roundabout right now as\n // the Opencast logic is still from pre-redesign, where the connection data\n // was given on a separate settings page.\n const ocData = ocDataFromInputs(data);\n const oc = await Opencast.init({\n ...settingsManager.settings().opencast,\n ...ocData,\n });\n\n const error = match(oc.getState(), {\n \"logged_in\": () => {\n opencast.setGlobalInstance(oc);\n settingsManager.saveSettings({ opencast: ocData });\n return null;\n },\n \"incorrect_login\": () => opencast.isLoginProvided()\n ? t(\"steps.finish.upload.settings-invalid-provided-login\")\n : t(\"steps.finish.upload.settings-invalid-login-data\"),\n \"network_error\": () => t(\"steps.finish.upload.upload-network-error\"),\n \"invalid_response\": () => t(\"steps.finish.upload.upload-invalid-response\"),\n \"response_not_ok\": () => t(\"steps.finish.upload.upload-invalid-response\"),\n }, () => unreachable());\n\n if (error) {\n dispatch({ type: \"UPLOAD_ERROR\", msg: error });\n setState(\"idle\");\n } else {\n // The connection to Opencast works -> now actually start the upload.\n await handleUpload(data);\n }\n };\n\n const totalBytes = recordings.reduce((acc, rec) => acc + rec.media.size, 0);\n const uploadSize = prettyFileSize(totalBytes, i18n);\n const { isHighContrast } = useColorScheme();\n\n // Testing the new connection settings to establish a connection ASAP to make\n // the series selector work.\n const onConnectionSettingChange = async () => {\n const data = getValues();\n\n // If nothing changed, do nothing.\n const ocSettings = settingsManager.settings().opencast;\n const anyChange = (data.serverUrl && data.serverUrl !== ocSettings?.serverUrl)\n || (data.loginName && data.loginName !== ocSettings?.loginName)\n || (data.loginPassword && data.loginPassword !== ocSettings?.loginPassword);\n if (!anyChange) {\n return;\n }\n\n const ocData = ocDataFromInputs(data);\n const oc = await Opencast.init({\n ...settingsManager.settings().opencast,\n ...ocData,\n });\n\n if (oc.getState() === \"logged_in\") {\n opencast.setGlobalInstance(oc);\n settingsManager.saveSettings({ opencast: ocData });\n }\n };\n\n return (\n <>\n
\n {titleField !== \"hidden\" && }\n {presenterField !== \"hidden\" && }\n {seriesField !== \"hidden\" && }\n\n {showOpencastSection && <>\n

{t(\"steps.finish.upload.settings-header\")}

\n\n {configurableServerUrl && {\n try {\n const url = new URL(value);\n return (url.protocol === \"https:\" || url.protocol === \"http:\")\n || t(\"steps.finish.upload.settings-invalid-url-http-start\");\n } catch {\n let err = t(\"steps.finish.upload.settings-invalid-url\");\n if (!value.startsWith(\"https://\") && !value.startsWith(\"http://\")) {\n err += \" \" + t(\"steps.finish.upload.settings-invalid-url-http-start\");\n }\n return err;\n }\n }}\n />}\n\n {configurableUsername && }\n\n {configurablePassword && }\n }\n\n {/* Upload button */}\n \n {match(state, {\n \"idle\": () => ,\n \"testing\": () => ,\n })}\n {t(\"steps.finish.upload.label\") + \" (\" + uploadSize + \")\"}\n \n \n\n {/* Upload error box */}\n
\n {uploadState.state === \"error\" && (\n \n )}\n
\n \n );\n};\n\ntype InputProps =\n Pick<\n JSX.IntrinsicElements[\"input\"],\n \"onChange\" | \"autoComplete\" | \"defaultValue\" | \"onBlur\"\n > &\n Pick>, \"register\"> & {\n /** Human readable string describing the field. */\n label: string;\n name: Path;\n /** Whether this field is required or may be empty. */\n required: boolean;\n /** Function validating the value and returning a string in the case of error. */\n validate?: Validate;\n errors: Partial>;\n /** Passed to the ``. */\n type?: HTMLInputTypeAttribute;\n autoFocus?: boolean;\n };\n\n/**\n * A styled `` element with a label. Displays errors and integrated with\n * `react-hook-form`.\n */\nexport const Input = ({\n errors,\n register,\n label,\n name,\n required,\n validate,\n type = \"text\",\n ...rest\n}: InputProps) => {\n const { t } = useTranslation();\n const error = errors[name];\n const id = useId();\n\n return (\n
\n \n
\n \n {error && \n {error.message}\n }\n
\n
\n );\n};\n\ntype ErrorContainerProps = React.PropsWithChildren<{\n id: string;\n}>;\n\nconst ErrorContainer: React.FC = ({ id, children }) => (\n \n {children}\n
\n);\n\n\ntype SeriesSelectProps = {\n formProps: ControllerRenderProps;\n showOpencastSection: boolean;\n errors: Partial>;\n};\n\nconst SeriesSelect: React.FC = ({ formProps, showOpencastSection, errors }) => {\n const { t, i18n } = useTranslation();\n const opencast = useOpencast();\n const { scheme } = useColorScheme();\n const seriesId = useSettings().upload?.seriesId;\n\n type Option = { value: string; label: string };\n const [options, setOptions] = useState(null);\n const ref = useRef>(null);\n useEffect(() => {\n setOptions(null);\n opencast.getSeries().then(\n result => {\n const options = [...result.entries()].map(([value, label]) => ({ value, label }));\n options.sort(\n (a, b) => a.label.localeCompare(b.label, i18n.language, { sensitivity: \"base\" })\n );\n\n // If a seriesID is given, make the select use that as default value.\n if (seriesId) {\n const title = result.get(seriesId);\n const defaultOption = {\n label: title ?? t(\"steps.finish.upload.series-unknown\"),\n value: seriesId,\n };\n if (title == null) {\n options.push(defaultOption);\n }\n ref.current?.setValue(defaultOption, \"select-option\");\n }\n\n setOptions(options);\n },\n e => {\n console.log(\"Error fetching series: \", e);\n setOptions(\"error\");\n },\n );\n }, [opencast]);\n\n const inputId = useId();\n const errorId = useId();\n const error = options === \"error\";\n return (\n
\n \n\n formProps.onChange(data?.value)}\n onBlur={formProps.onBlur}\n aria-invalid={error ? \"true\" : \"false\"}\n aria-describedby={error ? errorId : inputId}\n\n // Styling\n placeholder={t(\"steps.finish.upload.series-placeholder\")}\n loadingMessage={() => t(\"steps.finish.upload.series-loading\")}\n noOptionsMessage={() => t(\"steps.finish.upload.series-none\")}\n styles={selectStyles(scheme.startsWith(\"dark\"), scheme.endsWith(\"high-contrast\"))}\n theme={theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n danger: COLORS.danger0,\n primary: COLORS.focus,\n neutral0: COLORS.neutral00,\n neutral5: COLORS.neutral15,\n neutral10: COLORS.neutral20,\n neutral20: COLORS.neutral30,\n neutral30: COLORS.neutral40,\n neutral40: COLORS.neutral50,\n neutral50: COLORS.neutral50,\n neutral60: COLORS.neutral60,\n neutral70: COLORS.neutral70,\n neutral80: COLORS.neutral80,\n neutral90: COLORS.neutral90,\n },\n })}\n />\n {error && (\n \n {t(\"steps.finish.upload.series-fetch-error\")}\n {showOpencastSection && (\n \" \" + t(\"steps.finish.upload.series-connection-settings-hint\")\n )}\n \n )}\n {errors[\"series\"] && (\n {errors[\"series\"].message}\n )}\n
\n );\n};\n\nexport const selectStyles = (isDark: boolean, isHighContrast: boolean) => ({\n control: (baseStyles: CSSObjectWithLabel, state: { isFocused: boolean }) => ({\n ...baseStyles,\n backgroundColor: COLORS.neutral00,\n paddingLeft: 8,\n ...!state.isFocused && { borderColor: COLORS.neutral30 },\n ...state.isFocused && {\n // react-select uses box-shadow as outline. But it's not quite large\n // enough, so we override it here.\n boxShadow: `0 0 0 1.5px ${COLORS.focus}`,\n },\n }),\n input: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral80,\n padding: \"4px 0\",\n }),\n placeholder: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral60,\n }),\n singleValue: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral90,\n }),\n menuList: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n padding: 0,\n }),\n menu: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n ...isDark && { outline: `1px solid ${COLORS.neutral20}` },\n ...isHighContrast && { outline: `1px solid ${COLORS.neutral90}` },\n backgroundColor: isDark ? COLORS.neutral10 : COLORS.neutral05,\n overflow: \"hidden\",\n }),\n option: (_baseStyles: CSSObjectWithLabel, state: {\n isSelected: boolean;\n isFocused: boolean;\n }) => ({\n cursor: \"default\",\n padding: \"6px 10px\",\n borderLeft: `4px solid ${state.isSelected ? COLORS.focus : \"transparent\"}`,\n ...isHighContrast && state.isFocused && {\n outline: `2px solid ${COLORS.neutral90}`,\n outlineOffset: -3,\n },\n ...(state.isFocused || state.isSelected) && !isHighContrast && {\n backgroundColor: isDark ? COLORS.neutral25 : COLORS.neutral10,\n },\n }),\n});\n\n\ntype UploadProgressProps = {\n currentProgress: number;\n secondsLeft: number | null;\n};\n\n/**\n * Shown during upload. Shows a progressbar, the percentage of data already\n * uploaded and `secondsLeft` nicely formatted as human readable time.\n */\nconst UploadProgress: React.FC = ({ currentProgress, secondsLeft }) => {\n const { t, i18n } = useTranslation();\n\n // Progress as percent with one fractional digit, e.g. 27.3%.\n const roundedPercent = Math.min(100, currentProgress * 100).toLocaleString(i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n });\n\n // Nicely format the remaining time.\n let prettyTime: string | null;\n if (secondsLeft === null) {\n prettyTime = null;\n } else if (secondsLeft < 4) {\n prettyTime = t(\"steps.finish.upload.time.a-few-seconds\");\n } else if (secondsLeft < 45) {\n prettyTime = `${secondsLeft} ${t(\"steps.finish.upload.time.seconds\")}`;\n } else if (secondsLeft < 90) {\n prettyTime = t(\"steps.finish.upload.time.a-minute\");\n } else if (secondsLeft < 45 * 60) {\n prettyTime = `${Math.round(secondsLeft / 60)} ${t(\"steps.finish.upload.time.minutes\")}`;\n } else if (secondsLeft < 90 * 60) {\n prettyTime = t(\"steps.finish.upload.time.an-hour\");\n } else if (secondsLeft < 24 * 60 * 60) {\n prettyTime = `${Math.round(secondsLeft / (60 * 60))} ${t(\"steps.finish.upload.time.hours\")}`;\n } else {\n prettyTime = null;\n }\n\n return (\n \n {/* Heading */}\n
{t(\"steps.finish.upload.currently-uploading\")}
\n\n {/* Progress bar */}\n
\n
\n
\n\n {/* Percent and time estimation */}\n
\n
{roundedPercent}%
\n
\n
\n {prettyTime && \n {{ time: prettyTime }} left\n }\n
\n
\n \n );\n};\n\n/** Shown if the upload was successful. A big checkmark and a text. */\nconst UploadSuccess = () => {\n const { t } = useTranslation();\n\n return (\n \n
{t(\"steps.finish.upload.complete\")}
\n
\n \n
\n
{t(\"steps.finish.upload.complete-explanation\")}
\n
\n );\n};\n\nconst GreyInnerBox: React.FC = ({ children }) => (\n
\n {children}\n
\n);\n","import { useTranslation } from \"react-i18next\";\nimport { LuRotateCw } from \"react-icons/lu\";\nimport { screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { StepProps } from \"..\";\nimport { StepContainer } from \"../elements\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { SaveLocally } from \"./save-locally\";\nimport { UploadBox } from \"./upload\";\nimport { FiXCircle } from \"react-icons/fi\";\nimport { Settings, useSettings } from \"../../settings\";\nimport { SHORTCUTS, useShortcut } from \"../../shortcuts\";\nimport { i18n } from \"i18next\";\n\n\n\n\nexport const Finish: React.FC = ({ goToPrevStep, goToFirstStep }) => {\n const { t } = useTranslation();\n const { recordings, upload: uploadState } = useStudioState();\n const dispatch = useDispatch();\n const settings = useSettings();\n\n const allDownloaded = recordings.every(rec => rec.downloaded);\n const possiblyDone = (uploadState.state === \"uploaded\" || allDownloaded)\n && uploadState.state !== \"uploading\";\n const hideBack = uploadState.state !== \"not_uploaded\" || allDownloaded;\n\n const startAgain = {\n label: t(\"steps.finish.new-recording\"),\n icon: ,\n onClick: () => {\n const doIt = window.confirm(t(\"steps.finish.new-recording-warning\"));\n if (doIt) {\n dispatch({ type: \"RESET\" });\n goToFirstStep();\n }\n },\n };\n const returnTarget = getReturnTarget(settings);\n const nextButton = returnTarget\n ? {\n label: t(\"steps.finish.finish-button\"),\n disabled: !possiblyDone,\n popoverEntries: [\n startAgain,\n {\n label: settings.return?.label\n ? t(\"steps.finish.return-to\", { label: settings.return.label })\n : t(\"steps.finish.return-to-no-label\"),\n href: returnTarget,\n icon: ,\n },\n ],\n }\n : {\n disabled: !possiblyDone,\n ...startAgain,\n };\n\n useShortcut(SHORTCUTS.finish.startNewRecording, startAgain.onClick, {\n enabled: possiblyDone,\n });\n\n return (\n \n {/* A spacer to push the boxes a bit further up */}\n
\n\n
\n \n \n \n \n \n \n
\n\n {/* A spacer to push the boxes a bit further up */}\n
\n \n );\n};\n\ntype BoxProps = React.PropsWithChildren<{\n title: string;\n}>;\n\nconst Box: React.FC = ({ title, children }) => {\n const { isHighContrast } = useColorScheme();\n return (\n
\n

{title}

\n {children}\n
\n );\n};\n\n\nconst getReturnTarget = (settings: Settings) => {\n if (!settings.return?.target) {\n return null;\n }\n\n let targetUrl: URL;\n try {\n targetUrl = new URL(settings.return.target, window.location.href);\n } catch {\n return null;\n }\n\n const allowedDomains = [window.location.hostname, ...(settings.return?.allowedDomains || [])];\n const allowed = allowedDomains.some(domain => targetUrl.hostname === domain)\n && (targetUrl.protocol === \"https:\" || targetUrl.protocol === \"http:\");\n\n if (!allowed) {\n return null;\n }\n\n return settings.return.target;\n};\n\nexport const sharedButtonStyle = (isHighContrast: boolean) => ({\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 12px\",\n gap: 12,\n borderRadius: 8,\n textDecoration: \"none\",\n position: \"relative\",\n \":not([disabled])\": {\n color: COLORS.neutral05,\n cursor: \"pointer\",\n backgroundColor: COLORS.accent7,\n \":hover\": {\n backgroundColor: COLORS.accent8,\n ...isHighContrast && {\n backgroundColor: COLORS.neutral15,\n outline: `2px solid ${COLORS.accent8}`,\n color: COLORS.neutral20,\n },\n },\n },\n \"&[disabled]\": {\n backgroundColor: COLORS.neutral15,\n color: COLORS.neutral70,\n },\n ...focusStyle({ offset: 1 }),\n}) as const;\n\n/**\n * Get file size in human readable format. We use base-1000 XB instead of\n * base-1024 XiB, as the latter would probably confuse some users and many\n * file managers use base-1000 anyway. Notably, the windows file manager\n * calculates with base-1024 but shows \"XB\". So it is lying.\n*/\nexport const prettyFileSize = (numBytes: number, i18n: i18n) => {\n const round = (n: number) => {\n const digits = n < 10 ? 1 : 0;\n return n.toLocaleString(i18n.language, {\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n });\n };\n\n if (numBytes < 1000) {\n return `${numBytes} B`;\n } else if (numBytes < 999_500) {\n return `${round(numBytes / 1000)} KB`;\n } else if (numBytes < 999_500_000) {\n return `${round(numBytes / (1_000_000))} MB`;\n } else {\n return `${round(numBytes / (1_000_000_000))} GB`;\n }\n};\n","import { ReactNode, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, notNullish, screenWidthAbove, screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\nimport { FiCircle } from \"react-icons/fi\";\n\nimport StepCurrent from \"../icons/step-current.svg\";\nimport StepDone from \"../icons/step-done.svg\";\nimport { BREAKPOINTS, COLORS } from \"../util\";\nimport { VideoSetup } from \"./video-setup\";\nimport { AudioSetup } from \"./audio-setup\";\nimport { Recording } from \"./recording\";\nimport { Review } from \"./review\";\nimport { Finish } from \"./finish\";\n\n\n\nexport type StepProps = {\n goToNextStep: () => void;\n goToPrevStep: () => void;\n goToFirstStep: () => void;\n};\n\nconst STEPS = [\"video-select\", \"audio-select\", \"recording\", \"review\", \"finish\"] as const;\nexport type Step = typeof STEPS[number];\nconst stepIndex = (step: Step): number => STEPS.indexOf(step);\n\n\ntype Props = {\n inert: boolean;\n};\n\nexport const Main: React.FC = ({ inert }) => {\n const [currentStep, setCurrentStep] = useState(\"video-select\");\n const stepProps = {\n goToNextStep: () => setCurrentStep(notNullish(STEPS[stepIndex(currentStep) + 1])),\n goToPrevStep: () => setCurrentStep(notNullish(STEPS[stepIndex(currentStep) - 1])),\n goToFirstStep: () => setCurrentStep(\"video-select\"),\n };\n\n return (\n
\n \n {match(currentStep, {\n \"video-select\": () => ,\n \"audio-select\": () => ,\n \"recording\": () => ,\n \"review\": () => ,\n \"finish\": () => ,\n })}\n
\n );\n};\n\n\ntype ProgressSidebarProps = {\n currentStep: Step;\n};\n\n/**\n * The element that shows the progress through the five steps. Shown left on\n * desktop, at the bottom on mobile.\n */\nconst ProgressSidebar: React.FC = ({ currentStep }) => {\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const currentIndex = stepIndex(currentStep);\n const labels = [\n t(\"steps.video.label\"),\n t(\"steps.audio.label\"),\n t(\"steps.record.label\"),\n t(\"steps.review.label\"),\n t(\"steps.finish.label\"),\n ];\n\n const VERTICAL_MARGIN = \"calc(8px + max(0px, 20% - 44px))\";\n const CIRCLE_RADIUS = 13;\n return (\n
\n
\n {labels.map((label, i) => {\n let icon: JSX.Element;\n if (i < currentIndex) {\n icon = ;\n } else if (i === currentIndex) {\n icon = ;\n } else {\n icon = ;\n }\n\n return (\n
\n {icon}\n
{label}
\n
\n );\n })}\n\n {/* Line connecting all steps */}\n
\n
\n
\n );\n};\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgKeyboard = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n viewBox: \"0 0 24 24\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 14,\n x: 1,\n y: 5,\n rx: 1,\n ry: 1\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9h.001M10 9zM14 9zM18 9h.001M8 12zM12 12zM16 12h.001M6 15h12\"\n})));\nexport default SvgKeyboard;","const languages = [\n { short: \"en\", long: \"English\", rtl: false },\n { short: \"de\", long: \"Deutsch\", rtl: false },\n { short: \"nl\", long: \"Nederlands\", rtl: false },\n { short: \"es\", long: \"Español\", rtl: false },\n { short: \"fa\", long: \"فارسی\", rtl: true },\n { short: \"fr\", long: \"Français\", rtl: false },\n { short: \"sl\", long: \"Slovenščina\", rtl: false },\n { short: \"zh\", long: \"简体中文\", rtl: false },\n];\n\nexport default languages;\n","import { HiOutlineTranslate } from \"react-icons/hi\";\nimport { FiInfo, FiMoon } from \"react-icons/fi\";\nimport {\n HeaderMenuItemProps, useColorScheme, WithHeaderMenu, checkboxMenuItem, ProtoButton,\n screenWidthAtMost, match,\n} from \"@opencast/appkit\";\nimport { useTranslation } from \"react-i18next\";\nimport React, { forwardRef } from \"react\";\n\nimport { DEFINES } from \"../defines\";\nimport KeyboardIcon from \"../icons/keyboard.svg\";\nimport languages from \"../i18n/languages\";\nimport { BREAKPOINTS, COLORS, focusStyle } from \"../util\";\nimport { OverlayBoxState } from \".\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../shortcuts\";\n\n\ntype Props = {\n setOverlayBoxState: (state: OverlayBoxState) => void;\n inert: boolean;\n};\n\nexport const Header: React.FC = ({ setOverlayBoxState, inert }) => {\n const { scheme, isHighContrast } = useColorScheme();\n\n return (\n
COLORS.neutral60,\n \"dark\": () => COLORS.neutral20,\n \"dark-high-contrast\": () => \"black\",\n \"light-high-contrast\": () => \"black\",\n }),\n color: isHighContrast ? \"white\" : \"inherit\",\n height: \"var(--header-height)\",\n display: \"flex\",\n justifyContent: \"space-between\",\n ...scheme === \"dark-high-contrast\"\n ? { borderBottom: \"1px solid white\" }\n : { paddingBottom: 1 },\n }}>\n \n \n
\n );\n};\n\nconst Logo: React.FC = () => {\n const path = (filename: string) => DEFINES.publicPath + filename;\n\n return (\n *\": {\n height: \"calc(100% - 12px)\",\n },\n [screenWidthAtMost(410)]: {\n paddingLeft: 0,\n },\n }}>\n \n \"Opencast\n \n );\n};\n\nconst Buttons: React.FC> = ({ setOverlayBoxState }) => {\n return (\n
\n \n \n setOverlayBoxState(\"shortcuts\")} />\n setOverlayBoxState(\"info\")} />\n
\n );\n};\n\nconst LanguageButton: React.FC = () => {\n const { t, i18n } = useTranslation();\n const isCurrentLanguage = (language: string) => language === i18n.resolvedLanguage;\n\n const menuItems = Object.values(languages).map(lng => checkboxMenuItem({\n checked: isCurrentLanguage(lng.short),\n children: <>{lng.long},\n onClick: () => {\n if (!isCurrentLanguage(lng.short)) {\n i18n.changeLanguage(lng.short);\n }\n },\n }));\n\n const label = t(\"header.language.label\");\n return (\n \n } label={label} />\n \n );\n};\n\nconst ThemeButton: React.FC = () => {\n const { t } = useTranslation();\n const { scheme, isAuto, update } = useColorScheme();\n\n const currentPref = isAuto ? \"auto\" : scheme;\n const choices = [\"auto\", \"light\", \"dark\", \"light-high-contrast\", \"dark-high-contrast\"] as const;\n const menuItems: HeaderMenuItemProps[] = choices.map(choice => checkboxMenuItem({\n checked: currentPref === choice,\n children: <>{t(`header.theme.${choice}`)},\n onClick: () => update(choice),\n }));\n\n return (\n \n } label={t(\"header.theme.label\")} />\n \n );\n};\n\ntype BoxOpenButtonProps = {\n open: () => void;\n};\n\nconst InfoButton: React.FC = ({ open }) => {\n const { t } = useTranslation();\n return (\n } label={t(\"header.info.label\")} />\n );\n};\n\nconst ShortCutsButton: React.FC = ({ open }) => {\n const { t } = useTranslation();\n useShortcut(SHORTCUTS.general.showOverview, open, { ignoreModifiers: true });\n const showShortcut = useShowAvailableShortcuts();\n return (\n } label={t(\"shortcuts.label\")}>\n {showShortcut && (\n
\n )}\n
\n );\n};\n\ntype HeaderButtonProps = JSX.IntrinsicElements[\"button\"] & {\n icon: JSX.Element;\n label: string;\n};\n\nconst BUTTON_LABEL_BREAKPOINT = 770;\n\nconst HeaderButton = forwardRef(\n ({ icon, label, children, ...rest }, ref) => {\n const { scheme, isHighContrast } = useColorScheme();\n\n return (\n COLORS.neutral05,\n \"dark\": () => COLORS.neutral90,\n \"dark-high-contrast\": () => \"white\",\n \"light-high-contrast\": () => \"white\",\n }),\n borderRadius: 6,\n padding: \"6px 8px\",\n\n \":hover, :active\": {\n outline: `2px solid ${isHighContrast ? \"#aaa\" : COLORS.neutral50}`,\n backgroundColor: match(scheme, {\n \"light\": () => COLORS.neutral70,\n \"dark\": () => COLORS.neutral10,\n \"dark-high-contrast\": () => \"none\",\n \"light-high-contrast\": () => \"none\",\n }),\n },\n ...focusStyle({}, match(scheme, {\n \"light\": () => COLORS.neutral10,\n \"dark\": () => COLORS.accent8,\n \"dark-high-contrast\": () => \"#aaa\",\n \"light-high-contrast\": () => \"#aaa\",\n })),\n\n \"> svg\": {\n fontSize: 22,\n [`@media (max-width: ${BUTTON_LABEL_BREAKPOINT}px)`]: {\n fontSize: 26,\n },\n },\n }}>\n {icon}\n {label}\n {children}\n \n );\n }\n);\n","import React from \"react\";\nimport { FiGlobe, FiMail, FiPhone } from \"react-icons/fi\";\n\nimport { DEFINES } from \"./defines\";\nimport { COLORS } from \"./util\";\nimport { OverlayBox } from \"./layout\";\n\n\ntype Props = {\n close: () => void;\n};\n\nexport const About: React.FC = ({ close }) => (\n \n
\n

\n A web-based recording studio for Opencast.\n

\n

\n Opencast Studio allows you to record your camera, your display and your microphoneʼs audio.\n You can then either download your recordings or upload them directly to an Opencast\n instance (usually the one of your university).\n

\n

\n This is free software under the terms of the{\" \"}\n \n MIT License\n {\" \"}\n developed by the elan e.V. in cooperation\n with the ETH Zürich.\n

\n\n

How it works

\n

\n Opencast Studio uses the recording capabilities built into modern browsers to record\n audio and video streams. The recording happens in the userʼs browser and no server is\n involved in the recording.\n

\n\n {DEFINES.showLegalNotices && (\n \n

Support

\n

\n If you are experiencing any difficulties or found any bugs,\n please take a look at the{\" \"}\n \n issue tracker on GitHub\n .\n Before filing a new issue, please check if one about your topic already exists.\n We regularly check incoming issues and do our best to address bugs in a timely manner.\n

\n

\n If you are interested in additional development\n or want to support the development of Opencast Studio, please contact{\" \"}\n \n office@elan-ev.de\n .\n

\n
\n )}\n\n

Credits

\n

\n Thanks to the following people and institutions for contributing to this project:\n

\n
    \n
  • \n Duncan Smith for starting this\n project\n
  • \n
  • \n University of Cape Town (CILT)\n {\" \"}for letting Duncan start the project\n
  • \n
  • \n ETH Zürich for financial support and\n testing\n
  • \n
  • \n elan e.V. for the re-implementation\n and the ongoing development\n
  • \n
  • \n And many members from the Opencast community who helped along the way.\n
  • \n
\n\n {DEFINES.showLegalNotices && <>\n

elan e.V.

\n\n

\n The e-learning academic network (elan e.V.) is a German non-profit organization supporting\n higher-education organizations in all matters related to e-learning. Our services include\n practical tips about how to use digital technologies in education, legal advice and\n development of free, open-source software to support education.\n

\n\n

Contact

\n\n

\n Dr. Norbert Kleinefeld, Geschäftsführer\n
\n Karlstr. 23\n
\n D-26123 Oldenburg\n

\n\n

\n \n elan-ev.de\n
\n \n kontakt@elan-ev.de\n
\n \n +49 441 998 666 10\n

\n\n

\n Registergericht: Amtsgericht Oldenburg\n
\n Registernummer: VR 200644\n
\n USt.-ID-Nr.: DE 265901392\n

\n }\n\n

Version

\n

\n Build date {DEFINES.buildDate ?? \"?\"},\n commit{\" \"}\n \n {DEFINES.commitSha ?? \"?\"}\n .\n

\n
\n
\n);\n","import React, { useRef, useState } from \"react\";\nimport { match, screenWidthAtMost, useColorScheme, useOnOutsideClick } from \"@opencast/appkit\";\nimport { FiX } from \"react-icons/fi\";\n\nimport { Main } from \"../steps\";\nimport { Header } from \"./header\";\nimport { COLORS } from \"../util\";\nimport { About } from \"../about\";\nimport { SHORTCUTS, ShortcutOverview, useShortcut } from \"../shortcuts\";\n\n\nexport type OverlayBoxState = \"none\" | \"info\" | \"shortcuts\";\n\nexport const Root: React.FC = () => {\n const [overlayBoxState, setOverlayBoxState] = useState(\"none\");\n const close = () => setOverlayBoxState(\"none\");\n useShortcut(SHORTCUTS.general.closeOverlay, close);\n const inert = overlayBoxState !== \"none\";\n\n return (\n
\n
\n {match(overlayBoxState, {\n \"none\": () => null,\n \"info\": () => ,\n \"shortcuts\": () => ,\n })}\n
\n
\n );\n};\n\n\ntype OverlayBoxProps = React.PropsWithChildren<{\n close: () => void;\n title: string;\n maxWidth: number;\n}>;\n\nexport const OverlayBox: React.FC = ({ close, title, children, maxWidth }) => {\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n const ref = useRef(null);\n useOnOutsideClick(ref, close);\n const bg = (isLight || isHighContrast) ? COLORS.neutral05 : COLORS.neutral15;\n\n return (\n
\n
\n \n

{title}

\n
\n {children}\n
\n
\n
\n );\n};\n","import { Global, css } from \"@emotion/react\";\n\n// There are also very few global styles in `index.html` as those are needed for\n// the loading indicator already.\nexport const GlobalStyle: React.FC = () => <>\n \n \n;\n\n\n/** This is just styling for Tobira that we want to apply globally. */\nconst GLOBAL_STYLE = css({\n \":root\": {\n \"--min-page-width\": \"320px\",\n },\n body: {\n // // Accent color for generated UI control `` elements\n // // where type=\"checkbox\", \"radio\" or \"range\",\n // // as well as `` elements.\n // accentColor: COLORS.primary0,\n\n fontFamily: \"'Roboto Flex Variable', 'Vazirmatn Variable', sans-serif\",\n fontWeight: 400,\n\n // A reset to a sensible value.\n lineHeight: 1.5,\n\n // 16px is a good default body text size according to the internet (TM).\n fontSize: 16,\n\n // From a set of popular phones, the iPhone 5 has the smallest viewport\n // width: 320px. It does make sense to set a minimum width early on in\n // order to know where we can stop caring.\n minWidth: \"var(--min-page-width)\",\n },\n // a: {\n // color: COLORS.primary0,\n // \"&:hover, &:focus\": {\n // textDecoration: \"none\",\n // color: COLORS.primary1,\n // },\n // \":focus-visible\": { outline: `2.5px solid ${COLORS.focus}` },\n // },\n});\n\n/**\n * The following is a minimal set of CSS reset rules in order to get rid of\n * browser dependent, inconsistent or unexpected behavior. Parts of this\n * are taken from here: https://github.com/hankchizljaw/modern-css-reset\n * Licensed as MIT, Andy Bell and other contributors\n */\nconst CSS_RESETS = css({\n // Everything should have box-sizing border-box by default as it's more\n // intuitive and expected.\n \"*, *::before, *::after\": {\n boxSizing: \"border-box\",\n },\n\n // Remove default margins of the most important elements.\n \"body, h1, h2, h3, h4, p, li, figure, figcaption, blockquote, dl, dd, pre\": {\n margin: 0,\n },\n\n \"html, body, body > #root\": {\n height: \"100%\",\n },\n\n // This improves the readability of underlines in links.\n a: {\n textDecorationSkipInk: \"auto\",\n },\n\n // Some elements not inhereting fonts is a really confusing browser default.\n \"input, button, textarea, select\": {\n font: \"inherit\",\n margin: 0,\n },\n});\n","import { ColorSchemeProvider } from \"@opencast/appkit\";\nimport { useBeforeunload } from \"react-beforeunload\";\n\nimport { Root } from \"./layout\";\nimport { GlobalStyle } from \"./ui/global-style\";\nimport { useStudioState } from \"./studio-state\";\n\n\n\nexport const App: React.FC = () => {\n return <>\n \n \n \n \n \n ;\n};\n\n/** Prevent closing the tab if recordings exists and they have not been saved. */\nconst PreventClose = () => {\n const { recordings, upload } = useStudioState();\n const downloaded = recordings.every(rec => rec.downloaded);\n const uploaded = upload.state === \"uploaded\";\n const uploading = upload.state === \"uploading\";\n\n useBeforeunload(event => {\n if ((recordings?.length > 0 && !uploaded && !downloaded) || uploading) {\n event.preventDefault();\n }\n });\n\n return null;\n};\n"],"names":["_circle","_circle2","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_path","props","xmlns","width","height","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","className","viewBox","cx","cy","d","mergeHeightConstraint","maxHeight","videoConstraints","fallbackIdeal","maxField","max","ideal","Math","min","async","startAudioCapture","dispatch","deviceId","stream","navigator","mediaDevices","getUserMedia","audio","video","getTracks","forEach","track","onended","type","err","console","error","startDisplayCapture","settings","undefined","maxFps","display","frameRate","constraints","cursor","getDisplayMedia","startUserCapture","camera","facingMode","stopAudioCapture","stop","stopDisplayCapture","stopUserCapture","VideoBoxResizeContext","React","useVideoBoxResize","usePresentContext","VideoBox","_ref","gap","minWidth","minHeight","children","ref","useResizeObserver","setForceCounter","useState","lastDimensions","useRef","map","updateLastDimensions","newDimensions","dimension","i","current","dimensions","c","resizeVideoBox","equal","v","ar","child","aspectRatio","childWidth","childHeight","_jsx","Provider","value","css","_css","flex","autoSize","margin","body","aspectRatios","rowWidths","rowHeights","availableWidth","combinedAspectRatio","Array","baseHeight","colWidths","colHeights","availableHeight","_c","widths","heights","flexDirection","_jsxs","justifyContent","bug","_ref2","name","styles","_ref3","_ref4","ErrorBox","title","extraBody","rest","padding","borderRadius","backgroundColor","COLORS","danger1","color","danger5","Select","position","paddingRight","border","neutral25","appearance","background","useColorScheme","scheme","backgroundSize","backgroundPosition","option","neutral05","neutral90","focusStyle","offset","prefsToConstraints","prefs","exactDevice","parseAspectRatio","quality","parseQuality","ASPECT_RATIOS","label","test","parseInt","LAST_VIDEO_DEVICE_KEY","CAMERA_ASPECT_RATIO_KEY","CAMERA_QUALITY_KEY","DISPLAY_QUALITY_KEY","loadCameraPrefs","window","localStorage","getItem","loadDisplayPrefs","StreamSettings","isDesktop","useDispatch","useSettings","floatRef","useTranslation","isLight","isHighContrast","updatePrefs","newPrefs","merged","setOpt","key","setItem","useEffect","cameraDeviceId","deviceIdOf","isExpanded","setIsExpanded","_Fragment","top","left","right","textAlign","neutral70","boxShadow","streamInfo","FloatingContainer","placement","ariaRole","open","onClose","viewPortMargin","FloatingTrigger","WithTooltip","tooltip","ProtoButton","onClick","old","OVERLAY_STYLE","fontSize","transition","transform","FiX","FiSettings","Floating","borderWidth","shadowBlur","gridTemplateColumns","gridGap","paddingLeft","screenWidthAtMost","columnGap","rowGap","UserSettings","UniveralSettings","neutral15","marginTop","lineHeight","Trans","i18nKey","s","getVideoTracks","getSettings","sizeInfo","fpsInfo","join","PrefKey","_ref6","PrefValue","_ref5","_ref7","changeQuality","qualities","out","filter","q","push","qualityOptions","kind","RadioButton","id","onChange","checked","every","_ref9","_ref8","state","useStudioState","currentDeviceId","userStream","devices","getUniqueDevices","changeAspectRatio","ratio","htmlFor","changeDevice","target","x","_ref10","fontWeight","neutral10","borderColor","neutral40","outline","accent4","accent6","tabIndex","onKeyDown","SourcePreview","inputs","match","StreamPreview","input","dimensionsOf","inputHasError","unreachable","allowed","unexpectedEnd","PreviewVideo","DisplayAudioInfo","videoRef","srcObject","addEventListener","removeEventListener","inner","Spinner","size","neutral60","autoPlay","muted","playsInline","_ref11","hasAudio","getAudioTracks","LuInfo","LuVolume2","LuVolumeX","backdropFilter","outlineOffset","onMac","userAgent","includes","SHORTCUTS","general","showAvailableShortcuts","showOverview","closeOverlay","tab","prev","next","videoSetup","selectScreen","selectBoth","selectUser","audioSetup","withAudio","withoutAudio","recording","startPauseResume","review","playPause","forwards5secs","backwards5secs","forwardsFrame","backwardsFrame","cutLeft","cutRight","removeCutLeft","removeCutRight","finish","startNewRecording","download","SHORTCUT_TRANSLATIONS","KEY_TRANSLATIONS","useShortcut","keys","callback","options","deps","useHotkeys","splitKey","useShowAvailableShortcuts","active","setActive","enable","event","split","some","trim","toLowerCase","disable","document","ShortcutKeys","shortcut","large","alignItems","FiArrowLeft","FiArrowRight","Mod","FiCommand","Alt","LuOption","Shift","LuArrowBigUp","SingleKey","monofont","bg","light","dark","light-high-contrast","dark-high-contrast","neutral50","neutral80","fontFamily","ShortcutOverview","close","OverlayBox","maxWidth","entries","groupId","group","ShortcutGroupOverview","GROUP_ID_TRANSLATIONS","combination","StepButton","icon","disabled","danger","popoverEntries","showShortcut","isDark","setOpen","click","enabled","button","danger4","danger0","flexShrink","FiChevronLeft","FiChevronRight","arrowSize","distance","entry","style","textDecoration","inset","borderTop","neutral30","role","href","preventDefault","location","StepContainer","note","nextButton","prevButton","SourceOptionButton","disabledText","ariaLabel","accent7","neutral20","accent8","marginBottom","SourceSelection","setActiveSource","userConstraints","displayConstraints","displaySupported","userSupported","clickUser","queryMediaDevices","clickDisplay","clickBoth","onSafari","Promise","all","showShortcuts","BREAKPOINTS","medium","onMobileDevice","FiMonitor","svg","FiUser","hasWebcam","VideoSetup","goToNextStep","displayStream","videoChoice","activeSource","hasStreams","choice","userInput","userAllowed","userUnexpectedEnd","displayInput","displayAllowed","displayUnexpectedEnd","buttons","reselectSource","someProblem","none","Warnings","user","showButtons","both","warnings","protocol","hostname","isRecordingSupported","msg","selectNoAudio","selectMicrophone","FiMic","FiMicOff","MicrophonePreview","audioStream","audioAllowed","audioUnexpectedEnd","LAST_AUDIO_DEVICE_KEY","selectId","useId","AudioVisualziation","marginRight","exact","canvasRef","canvas","ctx","getContext","Error","lineWidth","strokeStyle","source","AudioContext","createMediaStreamSource","scope","Oscilloscope","fftSize","animate","AudioSetup","goToPrevStep","audioChoice","microphone","RecordingControls","recordingState","startRecording","pauseRecording","resumeRecording","fgColor","inactive","paused","ignoreEventWhen","code","HTMLButtonElement","FiPlay","FiPause","bottom","Timer","isRecording","formatted","setFormatted","millisPassed","lastTick","Date","counterId","setInterval","tick","newInstant","valueOf","ms","segments","floor","slice","unit","clearInterval","Recorder","onStop","constructor","mimeType","MediaRecorder","mimes","find","mime","isTypeSupported","debug","this","videoBitsPerSecond","videoBitrate","ondataavailable","onstop","#reset","data","log","media","fixWebmDuration","Blob","url","URL","createObjectURL","start","pause","resume","addRecordOnStop","deviceType","mixAudioIntoVideo","audioStreams","videoStream","reduce","MediaStream","audioContext","accumulatedAudio","currentAudio","resultAudio","createMediaStreamDestination","connect","Recording","recordingDispatch","opencast","useOpencast","setRecordingState","desktopRecorder","videoRecorder","canRecord","stopRecording","premature","refreshConnection","stopCapture","previews","useBeforeunload","play","overflow","PauseOverlay","textShadow","animation","keyframes","opacity","FiPauseCircle","_g","ControlBox","previewController","currentTime","i18n","duration","Controls","formatTime","language","Scrubber","seconds","totalDuration","lang","secondsPart","minutesPart","hoursPart","secondsFormatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","lowerPart","Infinity","end","cutStyle","boxSizing","danger2","mouseEvent","rect","currentTarget","getBoundingClientRect","progress","clientX","setTime","zIndex","Draggable","scrubberRef","initialTime","onDrag","time","notNullish","borderRight","borderLeft","disableCutting","clamp","CutMarker","side","CutMarkerIcon","initialPos","pos","scrubberRect","isDragging","onMouseUp","onMouseMove","onMove","pageX","percentage","onTouchMove","touches","onMouseDown","onTouchStart","userSelect","togglePlayPause","controller","isPlaying","isReadyToPlay","CutControls","marker","control","invariant","accent5","ALMOST_ZERO","cut","timestamp","cutButton","paddingTop","CutHereIcon","Preview","forwardRef","onTimeUpdate","onReady","onPausePlay","recordings","videoRefs","allVideos","desktopIndex","lastOrigin","queuedSeek","newTime","seeking","useImperativeHandle","ended","readyState","durationCalculationProgress","durationsCalculated","setDurationsCalculated","isInCutRegion","overlayVisible","setOverlayVisible","volume","va","vb","fixRequest","frameCounter","fixTime","abs","origin","requestAnimationFrame","cancelAnimationFrame","jumpInTime","diff","index","CutOutIcon","src","onLoadedData","Number","MAX_VALUE","onSeeked","isOtherSeeking","queued","started","done","p","preload","Review","goToFirstStep","prematureRecordingEnd","emptyRecording","rec","setCurrentTime","previewReady","setPreviewReady","_isPaused","setIsPaused","expectedRecordings","FiTrash","confirm","SaveLocally","presenter","downloaded","blob","flavor","downloadName","recordingFileName","LuCheckCircle2","rel","sharedButtonStyle","FiDownload","prettyFileSize","LAST_PRESENTER_KEY","progressHistory","UploadBox","upload","uploadState","onProgress","now","windowStart","findIndex","splice","secondsLeft","windowLength","progressPerSecond","progressLeft","round","currentProgress","interval","lastProgress","handleUpload","result","Boolean","series","uploadSettings","startTime","recordingStartTime","endTime","recordingEndTime","dispatchError","success","network_error","not_authorized","unexpected_response","UploadProgress","UploadSuccess","UploadForm","titleField","presenterField","seriesField","autofillPresenter","settingsManager","useSettingsManager","presenterValue","getUsername","setState","formState","errors","handleSubmit","register","getValues","useForm","defaultValues","formValues","field","seriesSelect","useController","rules","required","handleInputChange","configurableServerUrl","isConfigurable","configurableUsername","isUsernameConfigurable","configurablePassword","isPasswordConfigurable","showOpencastSection","ocDataFromInputs","serverUrl","loginName","loginPassword","totalBytes","acc","uploadSize","onConnectionSettingChange","ocSettings","ocData","oc","Opencast","init","getState","setGlobalInstance","saveSettings","onSubmit","logged_in","incorrect_login","isLoginProvided","invalid_response","response_not_ok","Input","autoComplete","defaultValue","autoFocus","SeriesSelect","formProps","onBlur","validate","startsWith","idle","FiUpload","testing","neutral00","ErrorContainer","message","_ref12","seriesId","setOptions","getSeries","then","sort","a","b","localeCompare","sensitivity","get","defaultOption","setValue","inputId","errorId","isLoading","isDisabled","isClearable","isSearchable","placeholder","loadingMessage","noOptionsMessage","selectStyles","endsWith","theme","colors","primary","focus","neutral0","neutral5","baseStyles","isFocused","singleValue","menuList","menu","_baseStyles","isSelected","_ref14","_ref15","_ref16","_ref13","roundedPercent","prettyTime","GreyInnerBox","_ref17","_ref18","Finish","allDownloaded","possiblyDone","hideBack","startAgain","LuRotateCw","returnTarget","getReturnTarget","return","FiXCircle","Box","targetUrl","allowedDomains","domain","numBytes","digits","STEPS","stepIndex","step","indexOf","Main","inert","currentStep","setCurrentStep","stepProps","ProgressSidebar","video-select","audio-select","currentIndex","labels","VERTICAL_MARGIN","screenWidthAbove","StepDone","StepCurrent","FiCircle","CIRCLE_RADIUS","_rect","y","rx","ry","short","long","rtl","Header","setOverlayBoxState","borderBottom","paddingBottom","Logo","Buttons","path","filename","DEFINES","publicPath","srcSet","alt","LanguageButton","ThemeButton","ShortCutsButton","InfoButton","isCurrentLanguage","resolvedLanguage","menuItems","values","languages","lng","checkboxMenuItem","changeLanguage","WithHeaderMenu","items","breakpoint","small","HeaderButton","HiOutlineTranslate","isAuto","update","currentPref","FiMoon","FiInfo","ignoreModifiers","KeyboardIcon","About","h2","showLegalNotices","FiGlobe","FiMail","FiPhone","buildDate","commitSha","Root","overlayBoxState","overflowY","info","shortcuts","useOnOutsideClick","GlobalStyle","Global","CSS_RESETS","GLOBAL_STYLE","App","PreventClose","ColorSchemeProvider","uploaded","uploading"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"963.bundle.js","mappings":"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","sources":["webpack://opencast-studio/./src/icons/step-current.svg","webpack://opencast-studio/./src/icons/step-done.svg","webpack://opencast-studio/./src/capturer.tsx","webpack://opencast-studio/./src/ui/VideoBox.tsx","webpack://opencast-studio/./src/ui/ErrorBox.tsx","webpack://opencast-studio/./src/ui/Select.tsx","webpack://opencast-studio/./src/steps/video-setup/prefs.tsx","webpack://opencast-studio/./src/steps/video-setup/preview.tsx","webpack://opencast-studio/./src/shortcuts.tsx","webpack://opencast-studio/./src/steps/elements.tsx","webpack://opencast-studio/./src/ui/SourceOptionButton.tsx","webpack://opencast-studio/./src/steps/video-setup/source-select.tsx","webpack://opencast-studio/./src/steps/video-setup/index.tsx","webpack://opencast-studio/./src/steps/audio-setup/source-select.tsx","webpack://opencast-studio/./src/steps/audio-setup/mic-preview.tsx","webpack://opencast-studio/./src/steps/audio-setup/index.tsx","webpack://opencast-studio/./src/steps/recording/controls.tsx","webpack://opencast-studio/./src/steps/recording/recorder.tsx","webpack://opencast-studio/./src/steps/recording/index.tsx","webpack://opencast-studio/./src/steps/review/cut-here-icon.svg","webpack://opencast-studio/./src/steps/review/cut-marker.svg","webpack://opencast-studio/./src/steps/review/control-box.tsx","webpack://opencast-studio/./src/steps/review/cut-out-icon.svg","webpack://opencast-studio/./src/steps/review/preview.tsx","webpack://opencast-studio/./src/steps/review/index.tsx","webpack://opencast-studio/./src/steps/finish/save-locally.tsx","webpack://opencast-studio/./src/steps/finish/upload.tsx","webpack://opencast-studio/./src/steps/finish/index.tsx","webpack://opencast-studio/./src/steps/index.tsx","webpack://opencast-studio/./src/icons/keyboard.svg","webpack://opencast-studio/./src/i18n/languages.tsx","webpack://opencast-studio/./src/layout/header.tsx","webpack://opencast-studio/./src/about.tsx","webpack://opencast-studio/./src/layout/index.tsx","webpack://opencast-studio/./src/ui/global-style.tsx","webpack://opencast-studio/./src/App.tsx"],"sourcesContent":["var _circle, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStepCurrent = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n className: \"step-current_svg__feather step-current_svg__feather-circle\",\n viewBox: \"0 0 24 24\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10\n})), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 3,\n fill: \"currentColor\"\n})));\nexport default SvgStepCurrent;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStepDone = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"step-done_svg__feather step-done_svg__feather-circle\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 1A11 11 0 0 0 1 12a11 11 0 0 0 11 11 11 11 0 0 0 11-11A11 11 0 0 0 12 1m5 7a1 1 0 0 1 .707.293 1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414 1 1 0 0 1 1.414 0L10 14.586l6.293-6.293A1 1 0 0 1 17 8\"\n})));\nexport default SvgStepDone;","import { Settings } from \"./settings\";\nimport { Dispatcher } from \"./studio-state\";\n\n\nconst mergeHeightConstraint = (\n maxHeight: number | undefined,\n videoConstraints: MediaTrackConstraints,\n fallbackIdeal?: number,\n) => {\n const maxField = maxHeight && { max: maxHeight };\n const constraintIdeal = typeof videoConstraints?.height === \"number\"\n ? videoConstraints.height\n : videoConstraints.height?.ideal;\n const ideal = constraintIdeal ?? fallbackIdeal;\n const idealField = ideal && (maxHeight ? { ideal: Math.min(ideal, maxHeight) } : { ideal });\n\n return { height: { ...maxField, ...idealField } };\n};\n\nexport async function startAudioCapture(dispatch: Dispatcher, deviceId?: ConstrainDOMString) {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: deviceId ? { deviceId } : true,\n video: false,\n });\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"AUDIO_UNEXPECTED_END\" });\n };\n });\n\n dispatch({ type: \"SHARE_AUDIO\", stream });\n } catch (err) {\n // TODO: there several types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_AUDIO\" });\n }\n}\n\nexport async function startDisplayCapture(\n dispatch: Dispatcher,\n settings: Settings,\n videoConstraints: MediaTrackConstraints = {},\n) {\n const maxFps = settings.display?.maxFps\n ? { frameRate: { max: settings.display.maxFps } }\n : {};\n const height = mergeHeightConstraint(settings.display?.maxHeight, videoConstraints);\n\n const constraints = {\n video: {\n cursor: \"always\",\n ...maxFps,\n ...videoConstraints,\n ...height,\n },\n audio: true,\n };\n\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia(constraints);\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"DISPLAY_UNEXPECTED_END\" });\n };\n });\n\n dispatch({ type: \"SHARE_DISPLAY\", stream });\n } catch (err) {\n // TODO: there 7 types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_DISPLAY\" });\n }\n}\n\nexport async function startUserCapture(\n dispatch: Dispatcher,\n settings: Settings,\n videoConstraints: MediaTrackConstraints,\n) {\n const maxFps = settings.camera?.maxFps\n ? { frameRate: { max: settings.camera.maxFps } }\n : {};\n const height = mergeHeightConstraint(settings.camera?.maxHeight, videoConstraints, 1080);\n\n const constraints = {\n video: {\n facingMode: \"user\",\n ...videoConstraints,\n ...maxFps,\n ...height,\n },\n audio: false,\n };\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach(track => {\n track.onended = () => {\n dispatch({ type: \"USER_UNEXPECTED_END\" });\n };\n });\n dispatch({ type: \"SHARE_USER\", stream });\n } catch (err) {\n // TODO: there 7 types of exceptions; certainly we should differentiate here one day\n console.error(\"Error: \" + err);\n\n dispatch({ type: \"BLOCK_USER\" });\n }\n}\n\n// ----------------------------------------------------------------------------\n\nexport function stopCapture(\n { audioStream, displayStream, userStream }: {\n audioStream: MediaStream | null;\n displayStream: MediaStream | null;\n userStream: MediaStream | null;\n },\n dispatch: Dispatcher,\n) {\n stopAudioCapture(audioStream, dispatch);\n stopDisplayCapture(displayStream, dispatch);\n stopUserCapture(userStream, dispatch);\n}\n\nexport function stopAudioCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_AUDIO\" });\n}\n\nexport function stopDisplayCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_DISPLAY\" });\n}\n\nexport function stopUserCapture(stream: MediaStream | null, dispatch: Dispatcher) {\n stream?.getTracks().forEach(track => track.stop());\n dispatch({ type: \"UNSHARE_USER\" });\n}\n","import useResizeObserver from \"use-resize-observer/polyfilled\";\nimport React, { useRef, useState } from \"react\";\nimport equal from \"fast-deep-equal\";\n\nimport { usePresentContext } from \"../util\";\nimport { bug } from \"@opencast/appkit\";\n\n\nconst VideoBoxResizeContext = React.createContext<(() => void) | null>(null);\n\nexport const useVideoBoxResize = () =>\n usePresentContext(VideoBoxResizeContext, \"useVideoBoxResize\");\n\nexport type VideoBoxProps = {\n gap?: number;\n minWidth?: number;\n minHeight?: number;\n children: VideoBoxChild[];\n};\n\nexport type VideoBoxChild = {\n body: JSX.Element;\n dimensions: () => [number, number] | null;\n /**\n * If `false` (default), the calculated size is used for the divs. Otherwise,\n * `width` and `height` are unset, which means the div takes the size of its\n * child. Used for error messages.\n */\n autoSize?: boolean;\n};\n\n// Manages one or two children with given aspect ratio.\n//\n// Each child is given an aspect ratio. The child will be rendered within a\n// `
` that maintains this exact aspect ratio. In the one child case, that\n// `
` also perfectly fits within the parent container. In the case of two\n// children, those children are laid out in such a way that the utilized screen\n// space is maximized while both children have the same width or height.\n//\n// `children` has to be the length 1 or 2! The parameter `gap` specifies the\n// width of the empty space between the two children in the case that two\n// children are given.\n//\n// Each child in `children` needs to be an object with the following fields:\n//\n// - `body`: the rendered DOM.\n// - `dimensions`: a function returning `[width, height]` of the child (also\n// defining the aspect ratio). We require the dimensions instead of only the\n// aspect ratio to better detect changes in the video stream.\nexport const VideoBox: React.FC = ({\n gap = 0,\n minWidth = 180,\n minHeight = 140,\n children,\n}) => {\n const { ref, width = 1, height = 1 } = useResizeObserver();\n\n // This is a dummy state to force a rerender.\n const [, setForceCounter] = useState(0);\n const forceRender = () => setForceCounter(v => v + 1);\n\n // We try to remember the last valid dimension. Otherwise, changing video\n // preferences for a non-16:9 strean leads to visual noise: the box always\n // changes between its aspect ratio and the fallback 16:9 ratio.\n const lastDimensions = useRef<([number, number] | null)[]>(children.map(() => null));\n const updateLastDimensions = (newDimensions: ([number, number] | null)[]) => {\n newDimensions.forEach((dimension, i) => {\n if (dimension) {\n lastDimensions.current[i] = dimension;\n }\n });\n };\n\n // Setup the handler for when a video stream is resized.\n let dimensions = children.map(c => c.dimensions());\n updateLastDimensions(dimensions);\n const resizeVideoBox = () => {\n const newDimensions = children.map(c => c.dimensions());\n if (!equal(newDimensions, dimensions)) {\n dimensions = newDimensions;\n updateLastDimensions(dimensions);\n forceRender();\n }\n };\n\n const ar = (dimensions: [number, number] | null): number =>\n dimensions == null ? 16 / 9 : dimensions[0] / dimensions[1];\n\n\n switch (children.length) {\n case 1: {\n const child = children[0];\n const aspectRatio = ar(lastDimensions.current[0]);\n\n // Calculate size of child\n let childWidth: number;\n let childHeight: number;\n\n if (width > height * aspectRatio) {\n // Child height perfectly matches container, extra space left and right\n childHeight = height;\n childWidth = height * aspectRatio;\n } else {\n // Child width perfectly matches container, extra space top and bottom\n childWidth = width;\n childHeight = (width / aspectRatio);\n }\n\n return (\n \n
\n
\n { child.body }\n
\n
\n
\n );\n }\n case 2: {\n // We need to decide whether the two videos are side by side or if one\n // should be below the other. We calculate the utilized space for each\n // option and then take the option that utilizes more space.\n //\n // Below we need to figure out the aspect ratios of the combined videos\n // either in row or column layout. Consider this table:\n //\n // | | a | b | row | column |\n // | ----------- | ------ | ------ | ------ | ------ |\n // | aspect | 16:9 | 4:3 | 28:9 | 16:21 |\n // | normalized | 1.77:1 | 1.33:1 | 3.11:1 | 0.76:1 |\n //\n // It shows the two aspect ratios a and b combined in both ways. In the\n // \"row\" case, the combined aspect ratio is simple: just add both children\n // aspect ratios. The column case is more difficult. First we have to\n // normalize both with respect to the width. This results in 1:0.56 and\n // 1:0.75 respectively. We can now add those, resulting in 1:1.31.\n // Finally, we normalize with respect to height again: 0.76:1\n\n const aspectRatios = lastDimensions.current.map(d => ar(d));\n\n // Videos side by side (row).\n const { rowWidths, rowHeights } = (() => {\n const availableWidth = width - gap;\n const combinedAspectRatio = aspectRatios[0] + aspectRatios[1];\n if (availableWidth > height * combinedAspectRatio) {\n // Children height perfectly matches container, extra space left and\n // right.\n return {\n rowHeights: Array(2).fill(height),\n rowWidths: aspectRatios.map(ar => height * ar),\n };\n } else {\n // Children width perfectly matches container, extra space top and\n // bottom.\n const baseHeight = availableWidth / combinedAspectRatio;\n return {\n rowHeights: children.map(() => baseHeight),\n rowWidths: aspectRatios.map(ar => baseHeight * ar),\n };\n }\n })();\n\n // One video below the other (col/column).\n const { colWidths, colHeights } = (() => {\n const availableHeight = height - gap;\n const combinedAspectRatio =\n 1 / ((1 / aspectRatios[0]) + (1 / aspectRatios[1]));\n\n if (width > availableHeight * combinedAspectRatio) {\n // Children height perfectly matches container, extra space left and\n // right.\n const width = availableHeight * combinedAspectRatio;\n return {\n colHeights: children.map((_c, i) => (width / aspectRatios[i])),\n colWidths: Array(2).fill(width),\n };\n } else {\n // Children width perfectly matches container, extra space top and\n // bottom.\n return {\n colHeights: children.map((_c, i) => (width / aspectRatios[i])),\n colWidths: Array(2).fill(width),\n };\n }\n })();\n\n // Finally, we compare the areas the two layouts would use. The one with\n // the larger area utilized wins.\n const rowArea = rowWidths[0] * rowHeights[0] + rowWidths[1] * rowHeights[1];\n const colArea = colWidths[0] * colHeights[0] + colWidths[1] * colHeights[1];\n let widths: number[];\n let heights: number[];\n let flexDirection: \"row\" | \"column\";\n if (rowArea > colArea) {\n flexDirection = \"row\";\n widths = rowWidths;\n heights = rowHeights;\n } else {\n flexDirection = \"column\";\n widths = colWidths;\n heights = colHeights;\n }\n\n return (\n \n \n
\n { children[0].body }\n
\n
\n { children[1].body }\n
\n
\n \n );\n }\n default:\n return bug(\"Internal error: too few or too many video streams\");\n }\n};\n","import { COLORS } from \"../util\";\n\n\ntype ErrorBoxProps = {\n title?: string;\n body: string;\n extraBody?: string;\n className?: string;\n};\n\nexport const ErrorBox: React.FC = ({ title, body, extraBody, ...rest }) => (\n \n {title && {title}}\n
{body}
\n {extraBody &&
{extraBody}
}\n
\n);\n","import React from \"react\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\ntype Props = JSX.IntrinsicElements[\"select\"];\n\n/** Styled ``\n + \"\"\n + '\") no-repeat',\n backgroundSize: 12,\n backgroundPosition: \"calc(100% - 12px) center\",\n\n option: {\n backgroundColor: COLORS.neutral05,\n color: COLORS.neutral90,\n },\n ...focusStyle({ offset: -1 }),\n }}>{props.children}\n));\n","// Everything related to video stream preferences that the user can modify.\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\nimport {\n Floating, FloatingContainer, FloatingHandle, FloatingTrigger, ProtoButton,\n WithTooltip, screenWidthAtMost, useColorScheme,\n} from \"@opencast/appkit\";\nimport { FiSettings, FiX } from \"react-icons/fi\";\n\nimport { Settings, useSettings } from \"../../settings\";\nimport { COLORS, getUniqueDevices } from \"../../util\";\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport {\n startDisplayCapture,\n startUserCapture,\n stopDisplayCapture,\n stopUserCapture,\n} from \"../../capturer\";\nimport { Select } from \"../../ui/Select\";\nimport { OVERLAY_STYLE } from \"./preview\";\n\n\n/**\n * Creates a valid constraints object from the given preferences. The mapping\n * is as follows:\n *\n * - deviceId: falsy values are ignored, any other value is passed on, either as\n * `ideal` (if `exactDevice` is `false`) or `exact` (if `exactDevice` is\n * `true`).\n * - aspectRatio: values in `ASPECT_RATIOS` are passed as `ideal`, everything\n * else is ignored.\n * - quality: valid quality labels are passed on as `ideal` height, invalid ones\n * are ignored.\n */\nexport const prefsToConstraints = (\n prefs: CameraPrefs | DisplayPrefs,\n exactDevice = false,\n): MediaTrackConstraints => {\n const deviceConstraint = \"deviceId\" in prefs\n && { deviceId: { [exactDevice ? \"exact\" : \"ideal\"]: prefs.deviceId } };\n\n const aspectRatioConstraint = \"aspectRatio\" in prefs && {\n aspectRatio: { ideal: prefs.aspectRatio ? parseAspectRatio(prefs.aspectRatio) : undefined },\n };\n\n const heightConstraint = \"quality\" in prefs && {\n height: { ideal: prefs.quality ? parseQuality(prefs.quality) : undefined },\n };\n\n return {\n ...deviceConstraint,\n ...aspectRatioConstraint,\n ...heightConstraint,\n };\n};\n\n// All aspect ratios the user can choose from.\nconst ASPECT_RATIOS = [\"4:3\", \"16:9\"];\n\n// All quality options given to the user respecting the `maxHeight` from the\n// settings.\nconst qualityOptions = (maxHeight: number | undefined) => {\n const defaults = [360, 480, 720, 1080, 1440, 2160];\n const out = defaults.filter(q => !maxHeight || q <= maxHeight);\n if (maxHeight && (out.length === 0 || out[out.length - 1] !== maxHeight)) {\n out.push(maxHeight);\n }\n\n return out.map(n => `${n}p`);\n};\n\n// Converts the given aspect ratio label (one of the elements in\n// `ASPECT_RATIOS`) into the numerical ratio, e.g. 4/3 = 1.333. If the argument\n// is not a valid label, `null` is returned.\nconst parseAspectRatio = (label: string) => {\n const mapping = {\n \"4:3\": 4 / 3,\n \"16:9\": 16 / 9,\n };\n\n return (mapping as Record)[label] ?? undefined;\n};\n\n// Converts the given quality label to the actual height as number. If the\n// argument is not a valid quality label (e.g. '720p'), `null` is returned.\nconst parseQuality = (label: string) => {\n if (!/^[0-9]+p$/.test(label)) {\n return undefined;\n }\n\n return parseInt(label);\n};\n\n// Local storage keys\nconst LAST_VIDEO_DEVICE_KEY = \"ocStudioLastVideoDevice\";\nconst CAMERA_ASPECT_RATIO_KEY = \"ocStudioCameraAspectRatio\";\nconst CAMERA_QUALITY_KEY = \"ocStudioCameraQuality\";\nconst DISPLAY_QUALITY_KEY = \"ocStudioDisplayQuality\";\n\ntype CameraPrefs = {\n deviceId?: string;\n aspectRatio?: string;\n quality?: string;\n};\n\ntype DisplayPrefs = {\n quality?: string;\n};\n\n// Loads the initial camera preferences from local storage.\nexport const loadCameraPrefs = (): CameraPrefs => ({\n deviceId: window.localStorage.getItem(LAST_VIDEO_DEVICE_KEY) ?? undefined,\n aspectRatio: window.localStorage.getItem(CAMERA_ASPECT_RATIO_KEY) || \"auto\",\n quality: window.localStorage.getItem(CAMERA_QUALITY_KEY) || \"auto\",\n});\n\n// Loads the initial display preferences from local storage.\nexport const loadDisplayPrefs = (): DisplayPrefs => ({\n quality: window.localStorage.getItem(DISPLAY_QUALITY_KEY) || \"auto\",\n});\n\ntype StreamSettingsProps = {\n isDesktop: boolean;\n stream: MediaStream | null;\n}\n\nexport const StreamSettings: React.FC = ({ isDesktop, stream }) => {\n const dispatch = useDispatch();\n const settings = useSettings();\n const floatRef = useRef(null);\n const { t } = useTranslation();\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n\n // The current preferences and the callback to update them.\n const prefs = isDesktop ? loadDisplayPrefs() : loadCameraPrefs();\n const updatePrefs = (newPrefs: CameraPrefs | DisplayPrefs) => {\n // Merge and update preferences.\n const merged = { ...prefs, ...newPrefs };\n const constraints = prefsToConstraints(merged, true);\n\n const setOpt = (key: string, v: string | undefined) => {\n if (v != null) {\n window.localStorage.setItem(key, v);\n }\n };\n\n // Update preferences in local storage and re-request stream. The latter\n // will cause the rerender.\n if (isDesktop) {\n setOpt(DISPLAY_QUALITY_KEY, merged.quality);\n\n stopDisplayCapture(stream, dispatch);\n startDisplayCapture(dispatch, settings, constraints);\n } else {\n setOpt(LAST_VIDEO_DEVICE_KEY, (merged as Record)[\"deviceId\"]);\n setOpt(CAMERA_ASPECT_RATIO_KEY, (merged as Record)[\"aspectRatio\"]);\n setOpt(CAMERA_QUALITY_KEY, merged.quality);\n\n stopUserCapture(stream, dispatch);\n startUserCapture(dispatch, settings, constraints);\n }\n };\n\n // Store the camera device ID in local storage. We also do this here, as we\n // also want to remember the device the user initially selected in the browser\n // popup.\n useEffect(() => {\n const cameraDeviceId = deviceIdOf(stream);\n if (!isDesktop && cameraDeviceId) {\n window.localStorage.setItem(LAST_VIDEO_DEVICE_KEY, cameraDeviceId);\n }\n });\n\n // State about expanding and hiding the settings.\n const [isExpanded, setIsExpanded] = useState(false);\n const label = t(`steps.video.video-settings-${isExpanded ? \"close\" : \"open\"}` as const);\n\n return <>\n {/* Stream info at the top */}\n
\n \n {streamInfo(stream)}\n \n
\n\n {/* The settings button and the popover dialog */}\n setIsExpanded(false)}\n borderRadius={8}\n viewPortMargin={8}\n css={{\n position: \"absolute\",\n right: 8,\n bottom: 8,\n }}\n >\n \n \n setIsExpanded(old => !old)}\n aria-label={label}\n css={{\n ...OVERLAY_STYLE,\n fontSize: 26,\n \"> svg\": {\n transition: \"transform 0.2s\",\n },\n \"&:hover > svg, &:focus > svg\": {\n transform: isExpanded ? \"none\" : \"rotate(45deg)\",\n },\n }}\n >\n {isExpanded ? : }\n \n \n \n \n
\n {!isDesktop && }\n \n
\n\n
\n \n Note: Explanation.\n \n
\n \n \n ;\n};\n\nconst streamInfo = (stream: MediaStream | null) => {\n const s = stream?.getVideoTracks()?.[0]?.getSettings();\n const sizeInfo = (s && s.width && s.height) ? `${s.width}×${s.height}` : \"\";\n const fpsInfo = (s && s.frameRate) ? `${s.frameRate} fps` : \"\";\n\n return s ? [sizeInfo, fpsInfo].join(\", \") : \"...\";\n};\n\n/** Div for the name of a value, e.g. quality, aspect ratio, .. */\nconst PrefKey: React.FC = ({ children }) => (\n
\n { children }\n
\n);\n\n/** Container for the value selection of an option, e.g. all available qualities. */\nconst PrefValue: React.FC = ({ children }) => (\n
\n { children }\n
\n);\n\ntype UniveralSettingsProps = {\n isDesktop: boolean;\n updatePrefs: (p: CameraPrefs | DisplayPrefs) => void;\n prefs: CameraPrefs | DisplayPrefs;\n settings: Settings;\n};\n\nconst UniveralSettings: React.FC = (\n { isDesktop, updatePrefs, prefs, settings }\n) => {\n const { t } = useTranslation();\n\n const changeQuality = (quality: string) => updatePrefs({ quality });\n const maxHeight = isDesktop ? settings.display?.maxHeight : settings.camera?.maxHeight;\n const qualities = qualityOptions(maxHeight);\n const kind = isDesktop ? \"desktop\" : \"user\";\n\n return <>\n {t(\"steps.video.quality\")}\n \n prefs.quality !== q)}\n />\n {\n qualities.map(q => (\n \n ))\n }\n \n ;\n};\n\ntype UserSettingsProps = {\n updatePrefs: (p: CameraPrefs | DisplayPrefs) => void;\n prefs: CameraPrefs;\n};\n\n\nconst UserSettings: React.FC = ({ updatePrefs, prefs }) => {\n const { t } = useTranslation();\n const state = useStudioState();\n\n const currentDeviceId = deviceIdOf(state.userStream);\n const devices = getUniqueDevices(state.mediaDevices, \"videoinput\");\n\n const changeDevice = (id: string) => updatePrefs({ deviceId: id });\n const changeAspectRatio = (ratio: string) => updatePrefs({ aspectRatio: ratio });\n\n return <>\n \n \n \n \n changeDevice(e.target.value)}\n css={{ width: \"100%\" }}\n >\n {devices.map(d => )}\n \n \n\n {t(\"steps.video.aspect-ratio\")}\n \n prefs.aspectRatio !== x)}\n />\n {ASPECT_RATIOS.map(ar => (\n \n ))}\n \n ;\n};\n\ntype RadioButtonProps = {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label?: string;\n onChange: (v: string) => void;\n};\n\n// A styled radio input which looks like a button.\nconst RadioButton: React.FC = ({\n id, value, checked, name, onChange, label,\n}) => {\n const { isHighContrast } = useColorScheme();\n\n return
\n onChange(e.target.value)}\n {...{ id, value, checked, name }}\n css={{\n display: \"none\",\n \"&+label\": {\n display: \"block\",\n border: `1px solid ${COLORS.neutral25}`,\n lineHeight: 1.2,\n padding: \"4px 10px\",\n borderRadius: 6,\n fontWeight: 500,\n cursor: \"pointer\",\n \":hover\": {\n backgroundColor: COLORS.neutral10,\n borderColor: COLORS.neutral40,\n ...isHighContrast && {\n outline: `2px solid ${COLORS.accent4}`,\n borderColor: \"transparent\",\n },\n },\n },\n \"&:checked+label\": {\n backgroundColor: COLORS.accent6,\n borderColor: COLORS.accent6,\n color: COLORS.neutral05,\n cursor: \"default\",\n },\n }}\n />\n (e.key === \"Enter\" || e.key === \" \") && onChange(value)}\n htmlFor={id}\n >{label ?? value}\n
;\n};\n\n// Returns the devide ID of the video track of the given stream.\nexport const deviceIdOf = (stream: MediaStream | null) =>\n stream?.getVideoTracks()?.[0]?.getSettings()?.deviceId;\n","import { useEffect, useRef } from \"react\";\nimport { Spinner, WithTooltip, match, unreachable, useColorScheme } from \"@opencast/appkit\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { LuInfo, LuVolume2, LuVolumeX } from \"react-icons/lu\";\n\nimport { COLORS, dimensionsOf } from \"../../util\";\nimport { VideoBox, useVideoBoxResize } from \"../../ui/VideoBox\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { StreamSettings } from \"./prefs\";\nimport { Input } from \".\";\n\n\n\nexport type SourcePreviewProps = {\n inputs: Input[];\n}\n\n/**\n * Shows the preview for one or two input streams. The previews also show\n * preferences allowing the user to change the webcam and the like.\n */\nexport const SourcePreview: React.FC = ({ inputs }) => {\n const children = match(inputs.length, {\n 1: () => [{\n body: ,\n dimensions: () => dimensionsOf(inputs[0].stream),\n autoSize: inputHasError(inputs[0]),\n }],\n 2: () => [\n {\n body: ,\n dimensions: () => dimensionsOf(inputs[0].stream),\n autoSize: inputHasError(inputs[0]),\n },\n {\n body: ,\n dimensions: () => dimensionsOf(inputs[1].stream),\n autoSize: inputHasError(inputs[1]),\n },\n ],\n }, unreachable);\n\n return {children};\n};\n\nconst inputHasError = (input: Input): boolean =>\n input.allowed === false || !!input.unexpectedEnd;\n\n/** Shows a single stream as preview, deals with potential errors and shows preferences UI */\nconst StreamPreview: React.FC<{ input: Input }> = ({ input }) => {\n const { isHighContrast } = useColorScheme();\n\n return (\n
\n \n {input.stream && <>\n {input.isDesktop && }\n \n }\n
\n );\n};\n\nconst PreviewVideo: React.FC<{ input: Input }> = ({ input }) => {\n const { t } = useTranslation();\n const { allowed, stream, unexpectedEnd } = input;\n const resizeVideoBox = useVideoBoxResize();\n\n const videoRef = useRef(null);\n useEffect(() => {\n const v = videoRef.current;\n if (v) {\n if (!v.srcObject) {\n v.srcObject = stream;\n }\n v.addEventListener(\"resize\", resizeVideoBox);\n }\n\n return () => {\n if (v) {\n v.removeEventListener(\"resize\", resizeVideoBox);\n }\n };\n }, [stream, resizeVideoBox]);\n\n if (!stream) {\n let inner: JSX.Element;\n if (allowed === false || unexpectedEnd) {\n inner =
\n {allowed === false && }\n {/* TODO: differentiate between desktop and camera for better error */}\n {unexpectedEnd && }\n
;\n } else {\n inner = ;\n }\n\n return (\n
\n
\n {inner}\n
\n
\n );\n }\n\n return (\n
\n \n
\n );\n};\n\nexport const DisplayAudioInfo: React.FC<{ stream: MediaStream }> = ({ stream }) => {\n const hasAudio = stream.getAudioTracks().length;\n\n return (\n
\n \n Note: Explanation.\n \n }\n >\n
\n {hasAudio ? : }\n
\n \n
\n );\n};\n\nexport const OVERLAY_STYLE = {\n border: \"none\",\n display: \"inline-block\",\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\n color: \"white\",\n padding: 8,\n backdropFilter: \"invert(0.3) blur(4px)\",\n lineHeight: 0,\n borderRadius: 10,\n cursor: \"pointer\",\n \"&:hover, &:focus-visible\": {\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n \"&:focus-visible\": {\n outline: \"5px dashed white\",\n outlineOffset: -2.5,\n },\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\nimport { LuArrowBigUp, LuOption } from \"react-icons/lu\";\nimport { FiArrowLeft, FiArrowRight, FiCommand } from \"react-icons/fi\";\nimport { Options, useHotkeys } from \"react-hotkeys-hook\";\n\nimport { COLORS } from \"./util\";\nimport { OverlayBox } from \"./layout\";\n\n\nconst onMac = () => navigator.userAgent.includes(\"Mac\");\n\nexport const SHORTCUTS = {\n general: {\n showAvailableShortcuts: \"Alt; s\",\n showOverview: \"?\",\n closeOverlay: \"Escape\",\n tab: \"Tab\",\n prev: onMac() ? \"Shift+Mod+left\" : \"Mod+left\",\n next: onMac() ? \"Shift+Mod+right\" : \"Mod+right\",\n },\n videoSetup: {\n selectScreen: \"1\",\n selectBoth: \"2\",\n selectUser: \"3\",\n },\n audioSetup: {\n withAudio: \"1\",\n withoutAudio: \"2\",\n },\n recording: {\n startPauseResume: \"k; Space\",\n },\n review: {\n playPause: \"k; Space\",\n forwards5secs: \"l; right\",\n backwards5secs: \"j; left\",\n forwardsFrame: \".\",\n backwardsFrame: \",\",\n cutLeft: \"n\",\n cutRight: \"m\",\n removeCutLeft: \"Shift+n\",\n removeCutRight: \"Shift+m\",\n },\n finish: {\n startNewRecording: \"Shift+n\",\n download: \"d\",\n },\n} as const;\n\nconst SHORTCUT_TRANSLATIONS = {\n general: {\n showAvailableShortcuts: \"shortcuts.general.show-available-shortcuts\",\n showOverview: \"shortcuts.general.show-overview\",\n closeOverlay: \"shortcuts.general.close-overlay\",\n tab: \"shortcuts.general.tab-elements\",\n prev: \"shortcuts.general.back-button\",\n next: \"shortcuts.general.next-button\",\n },\n videoSetup: {\n selectScreen: \"shortcuts.select-video.select-display\",\n selectBoth: \"shortcuts.select-video.select-both\",\n selectUser: \"shortcuts.select-video.select-camera\",\n },\n audioSetup: {\n withAudio: \"shortcuts.select-audio.select-microphone\",\n withoutAudio: \"shortcuts.select-audio.select-no-audio\",\n },\n recording: {\n startPauseResume: \"shortcuts.record.start-pause-resume-recording\",\n },\n review: {\n playPause: \"shortcuts.review.play-pause\",\n forwards5secs: \"shortcuts.review.skip-five\",\n backwards5secs: \"shortcuts.review.back-five\",\n forwardsFrame: \"shortcuts.review.frame-forward\",\n backwardsFrame: \"shortcuts.review.frame-back\",\n cutLeft: \"shortcuts.review.cut-left\",\n cutRight: \"shortcuts.review.cut-right\",\n removeCutLeft: \"shortcuts.review.delete-left\",\n removeCutRight: \"shortcuts.review.delete-right\",\n },\n finish: {\n startNewRecording: \"shortcuts.finish.new-recording\",\n download: \"steps.finish.save-locally.label\",\n },\n} as const;\n\nconst KEY_TRANSLATIONS = {\n \"Escape\": \"escape\",\n \"Space\": \"space\",\n \"Shift\": \"shift\",\n \"Alt\": onMac() ? \"option\" : \"alt\",\n \"Mod\": onMac() ? \"command\" : \"control\",\n} as const;\n\n\n/** Like `useHotkeys` but with pre-set options. */\nexport const useShortcut = (\n keys: string,\n callback: () => void,\n options: Omit = {},\n deps: unknown[] = [],\n) => {\n return useHotkeys(keys, callback, { splitKey: \";\", ...options }, deps);\n};\n\n/**\n * Helper to show an overlay of active shortcuts when Alt is pressed. Returns\n * `true` if the overlay should be shown.\n */\nexport const useShowAvailableShortcuts = () => {\n const [active, setActive] = useState(false);\n const enable = (event: KeyboardEvent) => {\n const correctKeyPressed = SHORTCUTS.general.showAvailableShortcuts.split(\";\")\n .some(s => s.trim().toLowerCase() == event.key.toLowerCase());\n if (correctKeyPressed) {\n setActive(true);\n }\n };\n const disable = () => setActive(false);\n\n useEffect(() => {\n document.addEventListener(\"keydown\", enable);\n document.addEventListener(\"keyup\", disable);\n document.addEventListener(\"mousedown\", disable);\n window.addEventListener(\"blur\", disable);\n return () => {\n document.removeEventListener(\"keydown\", enable);\n document.removeEventListener(\"keyup\", disable);\n document.removeEventListener(\"mousedown\", disable);\n window.removeEventListener(\"blur\", disable);\n };\n });\n\n return active;\n};\n\ntype ShortcutKeysProps = {\n shortcut: string;\n large?: boolean;\n};\n\nexport const ShortcutKeys: React.FC = ({ shortcut, large = false }) => {\n const { t } = useTranslation();\n return
\n {shortcut.split(\"+\").map((key, i) => {\n let s = key;\n if (key in KEY_TRANSLATIONS) {\n const translationKey = KEY_TRANSLATIONS[key as keyof typeof KEY_TRANSLATIONS];\n s = t(`shortcuts.keys.${translationKey}`);\n }\n const child = match(key, {\n \"left\": () => ,\n \"right\": () => ,\n \"Mod\": () => onMac() ? : <>{s},\n \"Alt\": () => onMac() ? : <>{s},\n \"Shift\": () => ,\n }, () => <>{s});\n return (\n \n {i !== 0 && \"+\"}\n {child}\n \n );\n })}\n
;\n};\n\ntype SingleKeyProps = React.PropsWithChildren<{\n large: boolean;\n /** Whether to use `monospace` font for this one. Basically only useful for lowercase l. */\n monofont: boolean;\n}>;\n\nconst SingleKey: React.FC = ({ large, monofont, children }) => {\n const isLight = useColorScheme().scheme === \"light\";\n const { scheme, isHighContrast } = useColorScheme();\n\n const bg = match(scheme, {\n \"light\": () => COLORS.neutral05,\n \"dark\": () => COLORS.neutral15,\n \"light-high-contrast\": () => COLORS.neutral05,\n \"dark-high-contrast\": () => COLORS.neutral15,\n });\n\n return (\n
\n {children}\n
\n );\n};\n\ntype ShortCutOverviewProps = {\n close: () => void;\n};\n\nexport const ShortcutOverview: React.FC = ({ close }) => {\n const { t } = useTranslation();\n\n return \n {Object.entries(SHORTCUTS).map(([groupId, group]) => (\n \n ))}\n ;\n};\n\n\nconst GROUP_ID_TRANSLATIONS = {\n general: \"shortcuts.general.title\",\n videoSetup: \"steps.video.label\",\n audioSetup: \"steps.audio.label\",\n recording: \"steps.record.label\",\n review: \"steps.review.label\",\n finish: \"steps.finish.label\",\n} as const satisfies Record;\n\ntype ShortcutGroupOverviewProps = {\n groupId: keyof typeof SHORTCUTS;\n group: typeof SHORTCUTS[keyof typeof SHORTCUTS];\n};\n\nconst ShortcutGroupOverview: React.FC = ({ groupId, group }) => {\n const { t } = useTranslation();\n\n return (\n
\n

{t(GROUP_ID_TRANSLATIONS[groupId])}

\n
\n {Object.entries(group).map(([name, keys], i) => (\n \n
\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {t((SHORTCUT_TRANSLATIONS[groupId] as any)[name])}\n
\n
\n {keys.split(\";\").map((combination, i) => \n {i > 0 && t(\"shortcuts.sequence-seperator\")}\n \n )}\n
\n
\n ))}\n
\n \n );\n};\n","import { Floating, FloatingContainer, FloatingTrigger, ProtoButton, match, useColorScheme } from \"@opencast/appkit\";\nimport { useTranslation } from \"react-i18next\";\nimport { FiChevronLeft, FiChevronRight } from \"react-icons/fi\";\nimport { CSSObject } from \"@emotion/react\";\nimport { useState } from \"react\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../shortcuts\";\n\n\ntype StepButtonProps = {\n kind: \"next\" | \"prev\";\n label?: string;\n danger?: boolean;\n icon?: JSX.Element;\n disabled?: boolean;\n onClick?: () => void;\n popoverEntries?: ({\n icon: JSX.Element;\n label: string;\n } & ({ onClick: () => void } | { href: string }))[];\n};\n\nconst StepButton: React.FC = ({\n kind, label, icon, disabled, danger, onClick, popoverEntries,\n}) => {\n const { t } = useTranslation();\n const showShortcut = useShowAvailableShortcuts();\n const isDark = useColorScheme().scheme === \"dark\";\n const { isHighContrast } = useColorScheme();\n const shortcut = match(kind, {\n prev: () => SHORTCUTS.general.prev,\n next: () => SHORTCUTS.general.next,\n });\n const [open, setOpen] = useState(false);\n const click = popoverEntries ? () => setOpen(old => !old) : () => onClick?.();\n useShortcut(shortcut, click, { enabled: !disabled }, [click, shortcut, disabled]);\n\n const button = (\n ({ paddingRight: 16 }) as CSSObject,\n \"prev\": () => ({ paddingLeft: 16 }) as CSSObject,\n }),\n\n '&[data-floating-state=\"open\"] svg': {\n transform: \"rotate(-90deg)\",\n },\n \"svg\": {\n transition: \"transform 0.15s\",\n flexShrink: 0,\n },\n\n \"&[disabled]\": {\n color: COLORS.neutral60,\n borderColor: COLORS.neutral15,\n backgroundColor: COLORS.neutral15,\n },\n\n \"&:not([disabled]):hover, &:not([disabled]):focus-visible\": {\n borderColor: danger ? COLORS.danger5 : COLORS.neutral70,\n color: danger ? COLORS.danger5 : COLORS.neutral90,\n boxShadow: isHighContrast ? \"none\" : \"0 0 8px var(--shadow-color)\",\n ...danger && { backgroundColor: COLORS.danger1 },\n ...isHighContrast && {\n outline: `2px solid ${danger ? COLORS.danger5 : COLORS.accent4}`,\n borderColor: \"transparent\",\n },\n },\n }}\n >\n {kind === \"prev\" && (icon ?? )}\n {label ?? t(`steps.${kind === \"next\" ? \"next\" : \"back\"}-button-label`)}\n {kind === \"next\" && (icon ?? )}\n {showShortcut && !disabled && (\n
\n )}\n \n );\n\n // One would think we can just always return a `FloatingContainer`, which just\n // sometimes does nothing. But no: this confuses screenreaders as they would\n // always announce that this button opens a menu.\n if (!popoverEntries) {\n return button;\n }\n\n return (\n setOpen(false)}\n ariaRole=\"menu\"\n arrowSize={8}\n viewPortMargin={12}\n borderRadius={8}\n distance={6}\n >\n {button}\n \n
    \n {popoverEntries?.map((entry, i) => {\n const style = {\n display: \"flex\",\n gap: 16,\n alignItems: \"center\",\n width: \"100%\",\n minWidth: 160,\n padding: 12,\n color: COLORS.neutral80,\n cursor: \"pointer\",\n textDecoration: \"none\",\n ...focusStyle({ inset: true }),\n \"& > svg\": {\n maxHeight: 23,\n fontSize: 23,\n color: COLORS.neutral60,\n width: 24,\n strokeWidth: 2,\n \"& > path\": { strokeWidth: \"inherit\" },\n },\n \":hover, :focus\": {\n backgroundColor: COLORS.neutral10,\n color: \"inherit\",\n },\n };\n\n return (\n
  • *\": { borderRadius: \"8px 8px 0 0\" },\n \":last-of-type> *\": { borderRadius: \"0 0 8px 8px\" },\n \":not(:first-of-type)\": {\n borderTop: `1px solid ${COLORS.neutral30}`,\n },\n }}>\n {\"href\" in entry\n ? {\n if (e.key === \" \") {\n e.preventDefault();\n window.location.href = entry.href;\n }\n }}\n >\n {entry.icon}\n {entry.label}\n \n : \n {entry.icon}\n {entry.label}\n \n }\n
  • \n );\n })}\n
\n \n \n );\n};\n\ntype StepContainerProps = React.PropsWithChildren<{\n title: string;\n note?: string;\n nextButton?: Omit;\n prevButton?: Omit;\n}>;\n\nexport const StepContainer: React.FC = ({\n title,\n note,\n nextButton,\n prevButton,\n children,\n}) => {\n return (\n
\n
\n

{title}

\n {note && (\n
\n {note}\n
\n )}\n
\n
\n {children}\n
\n
\n {prevButton && }\n {nextButton && }\n
\n
\n );\n};\n","import React from \"react\";\nimport { ProtoButton, useColorScheme } from \"@opencast/appkit\";\n\nimport { COLORS, focusStyle } from \"../util\";\nimport { ShortcutKeys } from \"../shortcuts\";\n\n\n\nexport type SourceOptionButtonProps = {\n icon: JSX.Element;\n label: string;\n onClick: () => void;\n disabledText?: false | string;\n shortcut?: string;\n ariaLabel?: string;\n};\n\nexport const SourceOptionButton: React.FC = (\n { icon, label, onClick, shortcut, disabledText, ariaLabel }\n) => {\n const { isHighContrast } = useColorScheme();\n\n return (\n \n
\n {icon}\n
\n
{label}
\n
{disabledText}
\n {shortcut &&
}\n \n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { screenWidthAtMost } from \"@opencast/appkit\";\nimport { FiMonitor, FiUser } from \"react-icons/fi\";\n\nimport { useDispatch, useStudioState, VideoSource } from \"../../studio-state\";\nimport { useSettings } from \"../../settings\";\nimport { queryMediaDevices, onMobileDevice, BREAKPOINTS, onSafari } from \"../../util\";\nimport { startDisplayCapture, startUserCapture } from \"../../capturer\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { SHORTCUTS, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { SourceOptionButton } from \"../../ui/SourceOptionButton\";\n\n\n\ntype SourceSelectionProps = {\n setActiveSource: (s: VideoSource) => void;\n userConstraints: MediaTrackConstraints;\n displayConstraints: MediaTrackConstraints;\n};\n\nexport const SourceSelection: React.FC = ({\n setActiveSource,\n userConstraints,\n displayConstraints,\n}) => {\n const { t } = useTranslation();\n\n const settings = useSettings();\n const dispatch = useDispatch();\n const state = useStudioState();\n const { displaySupported, userSupported } = state;\n\n const clickUser = async () => {\n setActiveSource(\"user\");\n await startUserCapture(dispatch, settings, userConstraints);\n await queryMediaDevices(dispatch);\n };\n\n const clickDisplay = async () => {\n setActiveSource(\"display\");\n await startDisplayCapture(dispatch, settings, displayConstraints);\n };\n\n const clickBoth = async () => {\n setActiveSource(\"both\");\n // Safari needs the display capture to be called first as otherwise\n // it thinks `getDisplayMedia` is called without user gesture and\n // throws an error.\n if (onSafari()) {\n await startDisplayCapture(dispatch, settings, displayConstraints);\n await startUserCapture(dispatch, settings, userConstraints);\n await queryMediaDevices(dispatch);\n } else {\n await startUserCapture(dispatch, settings, userConstraints);\n await Promise.all([\n queryMediaDevices(dispatch),\n startDisplayCapture(dispatch, settings, displayConstraints),\n ]);\n }\n };\n\n useShortcut(SHORTCUTS.videoSetup.selectScreen, clickDisplay);\n useShortcut(SHORTCUTS.videoSetup.selectBoth, clickBoth);\n useShortcut(SHORTCUTS.videoSetup.selectUser, clickUser);\n const showShortcuts = useShowAvailableShortcuts();\n\n if (!displaySupported && !userSupported) {\n return ;\n }\n\n return (\n \n {(displaySupported || !onMobileDevice()) && }\n onClick={clickDisplay}\n disabledText={displaySupported ? false : t(\"steps.video.display-not-supported\")}\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectScreen : undefined}\n />}\n {(displaySupported || !onMobileDevice()) && userSupported && \n \n \n
\n )}\n onClick={clickBoth}\n disabledText={\n displaySupported\n ? (state.hasWebcam ? false : t(\"steps.video.no-cam-detected\"))\n : t(\"steps.video.display-not-supported\")\n }\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectBoth : undefined}\n />}\n {userSupported && }\n onClick={clickUser}\n disabledText={state.hasWebcam ? false : t(\"steps.video.no-cam-detected\")}\n shortcut={showShortcuts ? SHORTCUTS.videoSetup.selectUser : undefined}\n />}\n
\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState, VideoSource } from \"../../studio-state\";\nimport { stopDisplayCapture, stopUserCapture } from \"../../capturer\";\nimport { SourcePreview } from \"./preview\";\nimport { loadCameraPrefs, loadDisplayPrefs, prefsToConstraints } from \"./prefs\";\nimport { StepProps } from \"..\";\nimport { StepContainer } from \"../elements\";\nimport { SourceSelection } from \"./source-select\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { isRecordingSupported, onSafari } from \"../../util\";\n\n\nexport type Input = {\n isDesktop: boolean;\n stream: MediaStream | null;\n allowed: boolean | null;\n unexpectedEnd: boolean | null;\n};\n\nexport const VideoSetup: React.FC = ({ goToNextStep }) => {\n const { t } = useTranslation();\n\n const dispatch = useDispatch();\n const state = useStudioState();\n const { displayStream, userStream, videoChoice: activeSource } = state;\n const hasStreams = !!displayStream || !!userStream;\n\n const setActiveSource = (s: VideoSource) => dispatch({ type: \"CHOOSE_VIDEO\", choice: s });\n const reselectSource = () => {\n setActiveSource(\"none\");\n stopUserCapture(userStream, dispatch);\n stopDisplayCapture(displayStream, dispatch);\n };\n\n\n const userInput = {\n isDesktop: false,\n stream: userStream,\n allowed: state.userAllowed,\n unexpectedEnd: state.userUnexpectedEnd,\n };\n const displayInput = {\n isDesktop: true,\n stream: displayStream,\n allowed: state.displayAllowed,\n unexpectedEnd: state.displayUnexpectedEnd,\n };\n\n const buttons = {\n prevButton: {\n onClick: reselectSource,\n disabled: false,\n label: t(\"steps.video.reselect-source\"),\n },\n nextButton: {\n onClick: () => goToNextStep(),\n disabled: activeSource === \"both\" ? (!displayStream || !userStream) : !hasStreams,\n },\n };\n\n const someProblem = state.userAllowed === false || state.userUnexpectedEnd\n || state.displayAllowed === false || state.displayUnexpectedEnd;\n\n return match(activeSource, {\n \"none\": () => {\n return (\n \n \n \n \n );\n },\n\n \"user\": () => {\n const showButtons = userStream || someProblem;\n return (\n \n \n \n );\n },\n\n \"display\": () => {\n const showButtons = displayStream || someProblem;\n return (\n \n \n \n );\n },\n\n \"both\": () => {\n const showButtons = (userStream && displayStream) || someProblem;\n return (\n \n \n \n );\n },\n });\n};\n\n\n\n/** Conditionally shows a number of warnings to help the user identify problems. */\nconst Warnings = () => {\n const { t } = useTranslation();\n\n const warnings: JSX.Element[] = [];\n\n // We allow HTTP connections to localhost, as most browsers also seem to allow\n // video capture in those cases.\n const usingUnsecureConnection = window.location.protocol !== \"https:\" &&\n window.location.hostname !== \"localhost\" &&\n window.location.hostname !== \"127.0.0.1\";\n if (usingUnsecureConnection) {\n warnings.push(\n \n );\n }\n\n // Warning about missing `MediaRecorder` support\n if (!isRecordingSupported()) {\n let msg = t(\"warning-recorder-not-supported\");\n if (onSafari()) {\n msg += \" \" + t(\"warning-recorder-safari-hint\");\n }\n warnings.push();\n }\n\n\n return warnings.length > 0\n ?
{ warnings }
\n : null;\n};\n","import { useTranslation } from \"react-i18next\";\nimport { FiMic, FiMicOff } from \"react-icons/fi\";\nimport { screenWidthAtMost } from \"@opencast/appkit\";\n\nimport { SourceOptionButton } from \"../../ui/SourceOptionButton\";\nimport { SHORTCUTS, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { BREAKPOINTS } from \"../../util\";\n\n\ntype Props = {\n selectNoAudio: () => void;\n selectMicrophone: () => void;\n};\n\n/** The two large option buttons for \"no audio\" and \"Microphone\". */\nexport const SourceSelection: React.FC = ({ selectNoAudio, selectMicrophone }) => {\n const { t } = useTranslation();\n const showShortcuts = useShowAvailableShortcuts();\n useShortcut(SHORTCUTS.audioSetup.withAudio, selectMicrophone);\n useShortcut(SHORTCUTS.audioSetup.withoutAudio, selectNoAudio);\n\n return (\n \n }\n label={t(\"steps.audio.microphone\")}\n onClick={selectMicrophone}\n shortcut={showShortcuts ? SHORTCUTS.audioSetup.withAudio : undefined}\n />\n }\n label={t(\"steps.audio.without-audio\")}\n onClick={selectNoAudio}\n shortcut={showShortcuts ? SHORTCUTS.audioSetup.withoutAudio : undefined}\n />\n
\n );\n};\n","import { useEffect, useId, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport Oscilloscope from \"oscilloscope\";\nimport { Spinner, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { startAudioCapture, stopAudioCapture } from \"../../capturer\";\nimport { getUniqueDevices, COLORS } from \"../../util\";\nimport { LAST_AUDIO_DEVICE_KEY } from \".\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { Select } from \"../../ui/Select\";\n\n\n// Once the microphone is selected, this is shown. Renders an\n// audio-visualization and a device-selector.\nexport const MicrophonePreview: React.FC = () => {\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n const dispatch = useDispatch();\n const state = useStudioState();\n const { audioStream, audioAllowed, audioUnexpectedEnd } = state;\n\n // Get current device ID and all possible audio input devices.\n const currentDeviceId = audioStream?.getAudioTracks()?.[0]?.getSettings()?.deviceId;\n const devices = getUniqueDevices(state.mediaDevices, \"audioinput\");\n\n // We write the currently used device ID to local storage to remember it\n // between visits of Studio.\n useEffect(() => {\n if (currentDeviceId) {\n window.localStorage.setItem(LAST_AUDIO_DEVICE_KEY, currentDeviceId);\n }\n });\n\n const changeDevice = async (deviceId: string) => {\n // The stream is only falsy if it unexpectedly ended.\n if (audioStream) {\n stopAudioCapture(audioStream, dispatch);\n }\n\n await startAudioCapture(dispatch, { exact: deviceId });\n };\n\n const selectId = useId();\n let body: JSX.Element = <>;\n if (audioStream) {\n body = <>\n \n
\n \n changeDevice(e.target.value)}\n css={{\n flex: \"1 1\",\n minWidth: 50,\n\n }}\n >\n {devices.map((d, i) => (\n \n ))}\n \n
\n ;\n } else if (audioAllowed === false) {\n body = ;\n } else if (audioUnexpectedEnd === true) {\n body = ;\n } else {\n body = ;\n }\n\n return (\n
\n {body}\n
\n );\n};\n\ntype AudioVisualziationProps = {\n stream: MediaStream;\n};\n\nconst AudioVisualziation: React.FC = ({ stream }) => {\n const isDark = useColorScheme().scheme === \"dark\";\n const canvasRef = useRef(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (ctx == null) {\n throw new Error(\"Could not get 2D context for canvas\");\n }\n ctx.lineWidth = 2;\n\n // We use `--color-accent9` in light mode, but have to hard code it here.\n // In dark mode, we use the tranditional yellow as it just looks better.\n ctx.strokeStyle = isDark ? \"#f1c40f\" : \"#044a81\";\n\n const audioContext = new window.AudioContext();\n const source = audioContext.createMediaStreamSource(stream);\n const scope = new Oscilloscope(source, { fftSize: 1024 });\n scope.animate(ctx);\n\n return () => scope.stop();\n }\n return () => {};\n }, [stream, isDark]);\n\n return (\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { match } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { startAudioCapture, stopAudioCapture } from \"../../capturer\";\nimport { StepContainer } from \"../elements\";\nimport { queryMediaDevices } from \"../../util\";\nimport { StepProps } from \"..\";\nimport { SourceSelection } from \"./source-select\";\nimport { MicrophonePreview } from \"./mic-preview\";\n\n\nexport const LAST_AUDIO_DEVICE_KEY = \"ocStudioLastAudioDevice\";\n\n\n// The audio setup page. This component manages the state (either 'none\n// selected' or 'microphone selected') and renders the correct component.\nexport const AudioSetup: React.FC = ({ goToNextStep, goToPrevStep }) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { audioStream, audioChoice } = useStudioState();\n\n\n return match(audioChoice, {\n \"none\": () => {\n const selectMicrophone = async () => {\n dispatch({ type: \"CHOOSE_AUDIO\", choice: \"microphone\" });\n const deviceId = window.localStorage.getItem(LAST_AUDIO_DEVICE_KEY);\n await startAudioCapture(dispatch, deviceId ? { ideal: deviceId } : undefined);\n await queryMediaDevices(dispatch);\n };\n\n return (\n \n \n \n );\n },\n\n \"microphone\": () => {\n const reselectSource = () => {\n if (audioStream) {\n stopAudioCapture(audioStream, dispatch);\n }\n dispatch({ type: \"CHOOSE_AUDIO\", choice: \"none\" });\n };\n\n return (\n \n \n \n );\n },\n });\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { WithTooltip, match, useColorScheme } from \"@opencast/appkit\";\nimport { FiPause, FiPlay } from \"react-icons/fi\";\n\nimport { RecordingState } from \".\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { COLORS } from \"../../util\";\n\n\n\n\ntype Props = {\n recordingState: RecordingState;\n startRecording: () => void;\n pauseRecording: () => void;\n resumeRecording: () => void;\n};\n\nexport const RecordingControls: React.FC = ({\n recordingState,\n startRecording,\n pauseRecording,\n resumeRecording,\n}) => {\n const { t } = useTranslation();\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n const fgColor = isLight ? COLORS.neutral05 : COLORS.neutral90;\n\n const showAvailableShortcuts = useShowAvailableShortcuts();\n useShortcut(SHORTCUTS.recording.startPauseResume, () => {\n match(recordingState, {\n \"inactive\": () => startRecording(),\n \"paused\": () => resumeRecording(),\n \"recording\": () => pauseRecording(),\n });\n }, {\n ignoreEventWhen: e => e.code === \"Space\" && e.target instanceof HTMLButtonElement,\n }, [recordingState]);\n const label = match(recordingState, {\n \"inactive\": () => t(\"steps.record.record-button-title\"),\n \"paused\": () => t(\"steps.record.resume-button-title\"),\n \"recording\": () => t(\"steps.record.pause-button-title\"),\n });\n\n return (\n
\n \n startRecording,\n \"paused\": () => resumeRecording,\n \"recording\": () => pauseRecording,\n })}\n aria-label={label}\n aria-live=\"polite\"\n css={{\n position: \"relative\",\n width: 50,\n height: 50,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: 28,\n padding: 0,\n\n boxShadow: isHighContrast ? \"none\" : \"0 4px 4px rgba(0, 0, 0, 0.12)\",\n cursor: \"pointer\",\n color: (isHighContrast || isLight) ? \"white\" : \"#D6D6D6\",\n borderRadius: \"50%\",\n backgroundColor: isLight ? \"#E42D43\" : \"#b8012d\",\n border: `${isHighContrast ? \"2px\" : \"1px\"} solid ${fgColor}`,\n \":hover, :focus-visible\": {\n backgroundColor: isLight ? \"#c40a31\" : \"#8f0121\",\n },\n \":focus-visible\": {\n outline: `4px solid ${fgColor}`,\n },\n }}\n >\n {match(recordingState, {\n \"inactive\": () => null,\n \"paused\": () => ,\n \"recording\": () => ,\n })}\n {showAvailableShortcuts && (\n
\n \n
\n )}\n \n
\n \n
\n );\n};\n\n\ntype TimerProps = {\n isRecording: boolean;\n};\n\nconst Timer: React.FC = ({ isRecording }) => {\n const [formatted, setFormatted] = useState(\"00:00\");\n const millisPassed = useRef(0);\n\n useEffect(() => {\n let lastTick = new Date();\n const tick = () => {\n const newInstant = new Date();\n if (isRecording) {\n millisPassed.current += newInstant.valueOf() - lastTick.valueOf();\n\n const ms = millisPassed.current;\n let segments = [\n Math.floor(ms / (60 * 60 * 1000)),\n Math.floor(ms / (60 * 1000)) % 60,\n Math.floor(ms / 1000) % 60,\n ];\n if (segments[0] === 0) {\n segments = segments.slice(1);\n }\n setFormatted(segments.map(unit => (unit < 10 ? \"0\" : \"\") + unit).join(\":\"));\n }\n lastTick = newInstant;\n };\n const counterId = setInterval(tick, 100);\n return () => clearInterval(counterId);\n }, [isRecording]);\n\n\n\n\n return
{formatted}
;\n};\n","import fixWebmDuration from \"webm-duration-fix\";\nimport { Settings } from \"../../settings\";\nimport { dimensionsOf } from \"../../util\";\n\n\nexport type OnStopCallback = (args: {\n url: string;\n media: Blob;\n mimeType: string;\n dimensions: [number, number] | null;\n}) => void;\n\nexport default class Recorder {\n #recorder: MediaRecorder;\n #data: Blob[] = [];\n #dimensions: [number, number] | null;\n\n onStop: OnStopCallback;\n\n constructor(\n stream: MediaStream,\n settings: Settings[\"recording\"],\n onStop: OnStopCallback,\n ) {\n // Figure out MIME type.\n let mimeType: string | undefined;\n if (\"isTypeSupported\" in MediaRecorder) {\n mimeType = (settings?.mimes || [])\n .find(mime => MediaRecorder.isTypeSupported(mime));\n if (mimeType) {\n console.debug(\"using first supported MIME type from settings: \", mimeType);\n } else if (settings?.mimes) {\n console.debug(\"None of the MIME types specified in settings are supported by \"\n + \"this `MediaRecorder`\");\n }\n } else if (settings?.mimes) {\n console.debug(\"MIME types were specified, but `MediaRecorder.isTypeSupported` is not \"\n + \"supported by your browser\");\n }\n\n\n this.#reset();\n\n this.#dimensions = dimensionsOf(stream);\n this.onStop = onStop;\n\n const videoBitsPerSecond = settings?.videoBitrate;\n this.#recorder = new MediaRecorder(stream, { mimeType, videoBitsPerSecond });\n this.#recorder.ondataavailable = this.#onDataAvailable;\n this.#recorder.onstop = this.#onStop;\n }\n\n #reset = () => {\n this.#data = [];\n };\n\n #onDataAvailable = (event: BlobEvent) => {\n if (event.data.size > 0) {\n this.#data.push(event.data);\n } else {\n console.log(\"Recording data has size 0!\", event);\n }\n };\n\n #onStop = async (_event: Event) => {\n const mimeType = this.#data[0]?.type || this.#recorder.mimeType;\n const mainMimeType = mimeType.split(\";\")[0].trim();\n let media;\n\n const fixMimeTypes = [\"video/webm\", \"video/x-matroska\"];\n\n if (fixMimeTypes.includes(mainMimeType)) {\n media = await fixWebmDuration(new Blob(this.#data, { type: mimeType }));\n } else {\n media = new Blob(this.#data, { type: mimeType });\n }\n\n const url = URL.createObjectURL(media);\n\n this.#reset();\n\n this.onStop?.({ url, media, mimeType, dimensions: this.#dimensions });\n };\n\n start() {\n this.#recorder.start();\n }\n\n pause() {\n this.#recorder.pause();\n }\n\n resume() {\n this.#recorder.resume();\n }\n\n stop() {\n this.#recorder.stop();\n }\n}\n","import { useTranslation } from \"react-i18next\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useBeforeunload } from \"react-beforeunload\";\nimport { keyframes } from \"@emotion/react\";\nimport { FiPauseCircle } from \"react-icons/fi\";\n\nimport {\n useStudioState, useDispatch, Dispatcher, Recording as StudioRecording,\n} from \"../../studio-state\";\nimport { useOpencast } from \"../../opencast\";\n\nimport { stopCapture } from \"../../capturer\";\nimport { StepProps } from \"..\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { StepContainer } from \"../elements\";\nimport { VideoBox, VideoBoxProps, useVideoBoxResize } from \"../../ui/VideoBox\";\nimport { dimensionsOf } from \"../../util\";\nimport { RecordingControls } from \"./controls\";\nimport Recorder, { OnStopCallback } from \"./recorder\";\nimport { useSettings } from \"../../settings\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\nexport type RecordingState = \"inactive\" | \"paused\" | \"recording\";\n\n\nconst addRecordOnStop = (\n dispatch: Dispatcher,\n deviceType: StudioRecording[\"deviceType\"],\n): OnStopCallback => {\n return ({ media, url, mimeType, dimensions }) => {\n dispatch({\n type: \"ADD_RECORDING\",\n recording: { deviceType, media, url, mimeType, dimensions },\n });\n };\n};\n\nconst mixAudioIntoVideo = (audioStreams: (MediaStream | null)[], videoStream: MediaStream) => (\n audioStreams.reduce(\n (stream, audioStream) => audioStream?.getAudioTracks().length\n ? new MediaStream([\n ...stream.getVideoTracks(),\n ...(\n stream.getAudioTracks().length\n ? (() => {\n const audioContext = new AudioContext();\n const accumulatedAudio = audioContext.createMediaStreamSource(stream);\n const currentAudio = audioContext.createMediaStreamSource(audioStream);\n const resultAudio = audioContext.createMediaStreamDestination();\n accumulatedAudio.connect(resultAudio);\n currentAudio.connect(resultAudio);\n return resultAudio.stream;\n })()\n : audioStream\n ).getAudioTracks(),\n ])\n : stream,\n videoStream,\n )\n);\n\n\nexport const Recording: React.FC = ({ goToNextStep, goToPrevStep }) => {\n const { t } = useTranslation();\n const recordingDispatch = useDispatch();\n const opencast = useOpencast();\n const dispatch = useDispatch();\n const settings = useSettings();\n const state = useStudioState();\n const {\n displayStream, userStream, displayUnexpectedEnd, userUnexpectedEnd, audioUnexpectedEnd,\n } = state;\n\n const [recordingState, setRecordingState] = useState(\"inactive\");\n\n const desktopRecorder = useRef();\n const videoRecorder = useRef();\n\n const canRecord = (displayStream || userStream)\n && !userUnexpectedEnd && !displayUnexpectedEnd && !audioUnexpectedEnd;\n\n const startRecording = () => {\n // In theory, we should never have recordings at this point. But just to be\n // sure, in case of a bug elsewhere, we clear the recordings here.\n dispatch({ type: \"CLEAR_RECORDINGS\" });\n\n if (displayStream) {\n const onStop = addRecordOnStop(dispatch, \"desktop\");\n const stream = mixAudioIntoVideo([state.audioStream], displayStream);\n desktopRecorder.current = new Recorder(stream, settings.recording, onStop);\n desktopRecorder.current.start();\n }\n if (userStream) {\n const onStop = addRecordOnStop(dispatch, \"video\");\n const stream = mixAudioIntoVideo([state.audioStream, displayStream], userStream);\n videoRecorder.current = new Recorder(stream, settings.recording, onStop);\n videoRecorder.current.start();\n }\n\n setRecordingState(\"recording\");\n dispatch({ type: \"START_RECORDING\" });\n };\n\n const stopRecording = (premature: boolean) => {\n desktopRecorder.current?.stop();\n videoRecorder.current?.stop();\n dispatch({ type: premature ? \"STOP_RECORDING_PREMATURELY\" : \"STOP_RECORDING\" });\n opencast.refreshConnection();\n stopCapture(state, recordingDispatch);\n goToNextStep();\n };\n\n const pauseRecording = () => {\n setRecordingState(\"paused\");\n desktopRecorder.current?.pause();\n videoRecorder.current?.pause();\n };\n\n const resumeRecording = () => {\n setRecordingState(\"recording\");\n desktopRecorder.current?.resume();\n videoRecorder.current?.resume();\n };\n\n // Detect if a stream ended unexpectedly. In that case we want to stop the\n // recording completely.\n useEffect(() => {\n const unexpectedEnd = userUnexpectedEnd || displayUnexpectedEnd || audioUnexpectedEnd;\n if (unexpectedEnd && (recordingState === \"recording\" || recordingState === \"paused\")) {\n stopRecording(true);\n }\n });\n\n const paused = recordingState === \"paused\";\n const previews: VideoBoxProps[\"children\"] = [];\n if (displayStream || displayUnexpectedEnd) {\n previews.push({\n body: ,\n dimensions: () => dimensionsOf(displayStream),\n autoSize: !displayStream,\n });\n }\n if (userStream || userUnexpectedEnd) {\n previews.push({\n body: ,\n dimensions: () => dimensionsOf(userStream),\n autoSize: !userStream,\n });\n }\n\n useBeforeunload(event => {\n if (recordingState !== \"inactive\") {\n event.preventDefault();\n }\n });\n\n return (\n stopRecording(false),\n disabled: recordingState !== \"paused\",\n label: t(\"steps.record.stop-button-title\"),\n }}\n >\n {audioUnexpectedEnd && (\n \n )}\n\n {previews}\n
\n {canRecord && (\n \n )}\n
\n \n );\n};\n\n\ntype StreamPreviewProps = {\n stream: MediaStream | null;\n paused: boolean;\n};\n\nconst StreamPreview: React.FC = ({ stream, paused }) => {\n const { t } = useTranslation();\n const resizeVideoBox = useVideoBoxResize();\n const videoRef = useRef(null);\n const { isHighContrast } = useColorScheme();\n\n useEffect(() => {\n const v = videoRef.current;\n if (v && stream) {\n if (!v.srcObject) {\n v.srcObject = stream;\n }\n v.addEventListener(\"resize\", resizeVideoBox);\n\n if (paused) {\n v.pause();\n } else {\n v.play();\n }\n\n return () => v.removeEventListener(\"resize\", resizeVideoBox);\n }\n });\n\n if (!stream) {\n return ;\n }\n\n return (\n \n {paused && }\n \n
\n );\n};\n\nconst PauseOverlay: React.FC = () => {\n const { t } = useTranslation();\n\n return (\n \n
\n \n {t(\"steps.record.is-paused\")}\n
\n
\n );\n};\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutHereIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 100 90\",\n width: \"1em\",\n height: \"1em\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.7.002c-2.91.059-5.75 1.49-7.44 4.08a8.84 8.84 0 0 0-1.42 5.29c-.08.122-.986 1.51-1.13 1.72-.13-.2-.997-1.54-1.08-1.66a8.84 8.84 0 0 0-1.4-5.29c-1.68-2.59-4.51-4.04-7.42-4.11a9.03 9.03 0 0 0-5.09 1.41c-4.18 2.66-5.4 8.27-2.72 12.4 2.56 3.96 7.83 5.24 11.9 3.02l.992 1.53c-2.84 4.35-4.9 7.5-6.74 10.3-3.09 4.73-1.94 8.93 2.01 11.5l9.47-14.5 9.45 14.6c3.96-2.55 5.13-6.75 2.06-11.5-1.84-2.84-3.9-6.03-6.74-10.4l1.04-1.59c4.1 2.23 9.37.974 12-2.97 2.03-3.1 1.85-7.03-.114-9.93a8.9 8.9 0 0 0-2.55-2.49 8.94 8.94 0 0 0-5.08-1.43zm.09 5.96a3.04 3.04 0 0 1 1.7.499c.357.23.65.514.872.835.668.962.712 2.24.018 3.31-.926 1.42-2.74 1.8-4.17.882-1.43-.92-1.82-2.73-.89-4.14.58-.886 1.51-1.37 2.47-1.38zm-20.1.023c.963.017 1.89.504 2.46 1.39.92 1.42.525 3.22-.906 4.14s-3.25.521-4.17-.9c-.92-1.42-.525-3.22.906-4.14a3.07 3.07 0 0 1 1.71-.492zm10 24.1a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m0 10.9a1.83 1.81 0 0 0-1.83 1.81v3.62a1.83 1.81 0 0 0 1.83 1.81 1.83 1.81 0 0 0 1.83-1.81v-3.62a1.83 1.81 0 0 0-1.83-1.81m-1.5 8.8a2.43 2.42 0 0 0-2.43 2.42v35.4a2.43 2.42 0 0 0 2.43 2.42h8.94v-4.83h-6.51v-30.6h6.1v-4.83zm6.51 8.86v22.5h55.2v-4.83h-3.22a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71h3.22v-4.83zm6.59 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.767-1.71 1.72-1.71m22.7 0h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.767 1.71-1.72 1.71h-14.4a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.77-1.71 1.72-1.71\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 58.6v4.83h2.44c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H0v4.83h31.8v-22.5zm10.8 4.83h14.4c.954 0 1.72.762 1.72 1.71v9.47c0 .946-.768 1.71-1.72 1.71H10.8a1.71 1.71 0 0 1-1.72-1.71v-9.47c0-.946.768-1.71 1.72-1.71\",\n opacity: 0.2\n}))));\nexport default SvgCutHereIcon;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutMarker = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 21h-4V3h4\"\n})));\nexport default SvgCutMarker;","import React, { RefObject, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ProtoButton, WithTooltip, notNullish, useColorScheme } from \"@opencast/appkit\";\nimport { FiPause, FiPlay } from \"react-icons/fi\";\n\nimport { useStudioState, useDispatch, Dispatcher } from \"../../studio-state\";\nimport { useSettings } from \"../../settings\";\nimport CutHereIcon from \"./cut-here-icon.svg\";\nimport CutMarkerIcon from \"./cut-marker.svg\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { ALMOST_ZERO } from \".\";\nimport { PreviewHandle } from \"./preview\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\n\n\ntype SharedProps = {\n previewController: React.RefObject;\n currentTime: number;\n};\n\nexport const ControlBox: React.FC = ({ previewController, currentTime }) => {\n const { i18n } = useTranslation();\n const duration = previewController.current?.duration;\n const { isHighContrast } = useColorScheme();\n\n return (\n
\n \n
\n {formatTime(currentTime, duration, i18n.language)}\n /\n {formatTime(duration, duration, i18n.language)}\n
\n \n
\n );\n};\n\nconst formatTime = (\n seconds: number | undefined,\n totalDuration: number | undefined,\n lang: string,\n): string => {\n const MINUTE = 60;\n const HOUR = 60 * MINUTE;\n\n if (seconds === undefined) {\n return \"--:--\";\n }\n\n const secondsPart = seconds % 60;\n const minutesPart = Math.floor(seconds / MINUTE) % 60;\n const hoursPart = Math.floor(seconds / HOUR);\n\n const secondsFormatted = secondsPart.toLocaleString(lang, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n });\n\n const lowerPart = `${minutesPart <= 9 ? \"0\" : \"\"}${minutesPart}`\n + `:${secondsPart <= 9 ? \"0\" : \"\"}${secondsFormatted}`;\n\n return (totalDuration && totalDuration >= HOUR)\n ? `${hoursPart}:${lowerPart}`\n : lowerPart;\n};\n\nconst Scrubber: React.FC = ({ previewController, currentTime }) => {\n const duration = previewController.current?.duration || Infinity;\n const settings = useSettings();\n const dispatch = useDispatch();\n const { start, end } = useStudioState();\n const ref = useRef(null);\n const { isHighContrast } = useColorScheme();\n\n const setTime = (mouseEvent: React.MouseEvent) => {\n const rect = mouseEvent.currentTarget.getBoundingClientRect();\n const x = mouseEvent.clientX - rect.x;\n let progress = x / rect.width;\n if (progress < 0) {\n progress = 0;\n } else if (progress > 1) {\n progress = 1;\n }\n\n if (previewController.current) {\n previewController.current.currentTime = progress * duration;\n }\n };\n\n const cutStyle = {\n position: \"absolute\",\n backgroundColor: COLORS.danger1,\n height: \"var(--scrubber-height)\",\n borderRadius: \"var(--scrubber-border-radius)\",\n boxSizing: \"content-box\",\n background: \"repeating-linear-gradient(45deg,\"\n + `${COLORS.danger2}, ${COLORS.danger2} 4px,`\n + `${COLORS.danger1} 4px, ${COLORS.danger1} 8px)`,\n } as const;\n\n return (\n
\n
\n {/* An overlay that extends further above and below the parent for easier clicking. */}\n setTime(e)}\n css={{\n position: \"absolute\",\n width: \"100%\",\n cursor: \"pointer\",\n zIndex: 5,\n top: -6,\n bottom: -6,\n }}\n >\n {/* The playhead */}\n notNullish(previewController.current).currentTime = time}\n >\n
\n \n
\n\n {/* The two \"deleted\" areas */}\n {(start != null && start > 0) &&
}\n {(end != null && end < duration) &&
}\n\n {/* The two trim markers */}\n {settings.review?.disableCutting || <>\n Math.min(time, end ?? duration)}\n onDrag={time => dispatch({ type: \"UPDATE_START\", time })}\n >\n Math.max(time, start ?? 0)}\n onDrag={time => dispatch({ type: \"UPDATE_END\", time })}\n >\n }\n\n {/* The play progress bar, overlaying darkening everything behind. */}\n
\n
\n
\n );\n};\n\ntype CutMarkerProps = {\n side: \"left\" | \"right\";\n isHighContrast: boolean;\n};\n\nconst CutMarker: React.FC = ({ side, isHighContrast }) => (\n
\n \n
\n);\n\ntype DraggableProps = React.PropsWithChildren<{\n previewController: RefObject;\n scrubberRef: RefObject;\n initialTime: number;\n\n /** Called on every mouse move with the updated value */\n onDrag?: (time: number) => void;\n\n /**\n * Called on every mouse move. The calculate time is passed as argument and\n * the function can modify it somehow, i.e. clamp it to a range. Called\n * before `onDrag`.\n */\n clamp?: (time: number) => number;\n}>;\n\n/**\n * Makes the given `children` draggable, letting the user adjust its x position\n * inside the scrubber.\n */\nconst Draggable: React.FC = ({\n previewController,\n scrubberRef,\n initialTime,\n onDrag,\n clamp = t => t,\n children,\n}) => {\n const duration = previewController.current?.duration || Infinity;\n\n const initialPos = initialTime / duration;\n const pos = useRef(initialPos);\n const scrubberRect = useRef();\n const ref = useRef(null);\n const isDragging = useRef(false);\n\n useEffect(() => {\n const onMouseUp = () => {\n if (isDragging.current) {\n isDragging.current = false;\n onDrag?.(pos.current * duration);\n\n // Reset the element style so that the `left` value from the class CSS\n // can take over again.\n notNullish(ref.current).style.left = \"\";\n }\n };\n const onMouseMove = (e: MouseEvent) => {\n onMove(e.pageX);\n };\n const onMove = (pageX: number) => {\n if (isDragging.current) {\n const rect = notNullish(scrubberRect.current);\n const percentage = Math.min(1.0, Math.max(0.0, (pageX - rect.left) / rect.width));\n pos.current = clamp(duration * percentage) / duration;\n onDrag?.(pos.current * duration);\n\n // We set the left value here directly instead of waiting for the React\n // state change to trickle through. This actually leads to less input\n // delay and a smoother dragging.\n notNullish(ref.current).style.left = `${pos.current * 100}%`;\n }\n };\n const onTouchMove = (e: TouchEvent) => {\n if (e.touches.length > 0) {\n onMove(e.touches[0].pageX);\n }\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"touchend\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"touchmove\", onTouchMove);\n\n return () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"touchend\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"touchmove\", onTouchMove);\n };\n });\n\n return (\n {\n isDragging.current = true;\n scrubberRect.current = notNullish(scrubberRef.current).getBoundingClientRect();\n }}\n onTouchStart={() => {\n console.log(\"TOUCH START\");\n isDragging.current = true;\n scrubberRect.current = notNullish(scrubberRef.current).getBoundingClientRect();\n }}\n css={{\n position: \"absolute\",\n zIndex: 10,\n left: `${initialPos * 100}%`,\n cursor: \"grab\",\n userSelect: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%) translateX(-50%)\",\n padding: \"8px 4px\", // To make grabbing it easier\n }}\n >\n {children}\n
\n );\n};\n\nconst Controls: React.FC = ({ currentTime, previewController }) => {\n const { start, end } = useStudioState();\n const recordingDispatch = useDispatch();\n const settings = useSettings();\n const { t } = useTranslation();\n\n const togglePlayPause = () => {\n const controller = previewController.current;\n if (controller) {\n if (controller.isPlaying) {\n controller.pause();\n } else if (controller.isReadyToPlay) {\n controller.play();\n }\n }\n };\n\n useShortcut(SHORTCUTS.review.playPause, togglePlayPause, {\n ignoreEventWhen: e => e.code === \"Space\" && e.target instanceof HTMLButtonElement,\n });\n const showShortcuts = useShowAvailableShortcuts();\n const { isHighContrast } = useColorScheme();\n\n const isPlaying = previewController.current?.isPlaying;\n const label = t(`steps.review.${isPlaying ? \"pause\" : \"play\"}` as const);\n return (\n
\n {/* Cut start */}\n {settings.review?.disableCutting || start < end}\n {...{ recordingDispatch, previewController, currentTime }}\n />}\n\n {/* Play/pause button */}\n \n e.preventDefault()}\n >\n {showShortcuts && (\n
\n )}\n {isPlaying ? : }\n \n
\n\n {/* Cut end */}\n {settings.review?.disableCutting || start < end}\n {...{ recordingDispatch, previewController, currentTime }}\n />}\n
\n );\n};\n\ntype CutControlsProps = SharedProps & {\n marker: \"start\" | \"end\";\n value: number | null;\n control: number | null;\n invariant: (self: number, control: number) => boolean;\n recordingDispatch: Dispatcher;\n};\n\nconst CutControls: React.FC = (\n { marker, value, control, invariant, currentTime, previewController, recordingDispatch }\n) => {\n const { t, i18n } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const disabled = currentTime <= ALMOST_ZERO\n || (previewController.current && currentTime >= previewController.current.duration)\n || (control != null && !invariant(currentTime, control));\n\n const cut = () => {\n if (!previewController.current) {\n return;\n }\n\n let value = previewController.current.currentTime;\n // We disable the buttons when the generated values would be invalid,\n // but we rely on `timeupdate` events for that, which are not guaranteed\n // to be timely, so we still have to check the invariant when actually\n // updating the state. Here we decided to just clamp the value appropriately.\n if (control != null && !invariant(value, control)) {\n value = control;\n }\n recordingDispatch({\n type: marker === \"start\" ? \"UPDATE_START\" : \"UPDATE_END\",\n time: value,\n });\n };\n\n const shortcut = SHORTCUTS.review[marker === \"start\" ? \"cutLeft\" : \"cutRight\"];\n useShortcut(shortcut, cut, { enabled: !disabled });\n useShortcut(\n SHORTCUTS.review[marker === \"start\" ? \"removeCutLeft\" : \"removeCutRight\"],\n () => recordingDispatch({\n type: marker === \"start\" ? \"UPDATE_START\" : \"UPDATE_END\",\n time: null,\n }),\n );\n const showShortcuts = useShowAvailableShortcuts();\n\n const timestamp = (\n
\n { value !== null && (\n \n {\n event.preventDefault();\n if (previewController.current) {\n previewController.current.currentTime = value;\n }\n }}\n onMouseDown={e => e.preventDefault()}\n >\n {formatTime(value, value, i18n.language)}\n \n \n )}\n
\n );\n\n const cutButton = (\n \n e.preventDefault()}\n css={{\n lineHeight: 0,\n padding: \"4px 8px\",\n paddingTop: 4,\n borderRadius: 4,\n ...focusStyle(),\n \"&:disabled\": {\n opacity: 0.3,\n },\n \"&:not(:disabled):hover\": {\n backgroundColor: COLORS.neutral10,\n color: isHighContrast ? COLORS.accent4 : \"inherit\",\n },\n }}\n >\n \n {showShortcuts && !disabled && (\n
\n )}\n \n
\n );\n\n return marker === \"start\"\n ? <>{timestamp}{cutButton}\n : <>{cutButton}{timestamp};\n};\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCutOutIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 100 65\",\n width: \"1em\",\n height: \"1em\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M24.6 0c-.447 0-.894.171-1.24.511l-3.07 3.05a1.73 1.73 0 0 0 0 2.46l58.8 58.5c.685.681 1.79.681 2.47 0l3.07-3.05a1.73 1.73 0 0 0 0-2.46l-6.68-6.64h22v-7.32h-15.6c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h15.6v-7.32h-56.4L25.75.551A1.75 1.75 0 0 0 24.51.04zM0 18.2v7.32h3.7c1.44 0 2.6 1.15 2.6 2.59v14.3C6.3 43.84 5.14 45 3.7 45H0v7.32h55.8l-15.4-15.3v5.36c0 1.43-1.16 2.59-2.6 2.59H16c-1.44 0-2.6-1.15-2.6-2.59v-14.3c0-1.43 1.16-2.59 2.6-2.59h12.8l-7.36-7.32zm51 7.32h21c1.44 0 2.6 1.15 2.6 2.59v14.3c0 1.43-1.16 2.59-2.6 2.59h-1.4z\"\n})));\nexport default SvgCutOutIcon;","import {\n forwardRef, useState, useRef, useEffect, useImperativeHandle, SyntheticEvent,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, notNullish, useColorScheme } from \"@opencast/appkit\";\n\nimport { useStudioState } from \"../../studio-state\";\nimport CutOutIcon from \"./cut-out-icon.svg\";\nimport { VideoBox } from \"../../ui/VideoBox\";\nimport { ALMOST_ZERO } from \".\";\nimport { SHORTCUTS, useShortcut } from \"../../shortcuts\";\n\n\ntype PreviewProps = {\n onTimeUpdate: (event: SyntheticEvent) => void;\n onPausePlay: (paused: boolean) => void;\n onReady: () => void;\n};\n\nexport type PreviewHandle = {\n currentTime: number;\n readonly duration: number;\n readonly isPlaying: boolean;\n readonly isReadyToPlay: boolean;\n play(): void;\n pause(): void;\n};\n\nexport const Preview = forwardRef((\n { onTimeUpdate, onReady, onPausePlay },\n ref,\n) => {\n const { recordings, start, end } = useStudioState();\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const videoRefs = [useRef(null), useRef(null)];\n const allVideos = videoRefs.slice(0, recordings.length);\n\n const desktopIndex = recordings.length === 2\n ? (recordings[0].deviceType === \"desktop\" ? 0 : 1)\n : null;\n\n // The index of the last video ref that received an event (0 or 1).\n const lastOrigin = useRef<0 | 1>();\n\n // When updating the currenTime, i.e. the play position, we want to throttle\n // this somehow. Just always setting `currentTime` is not ideal: consider\n // `onMouseMove`, which would set a new value very frequently. Chrome and\n // Firefox don't seem to handle that very well: every new time set will\n // cancel the in-progress seeking, leading to quite large delays.\n //\n // What we do instead is: if we are not currently seeking, just set the time\n // as normal. But if a seek operation is in progress, we just queue the time.\n // Further below, the `onSeeked` event handler is the second part of the\n // solution: when a seek operation has ended and a new time is queued, we\n // seek to that time again. Put simply: we just wait for seek operations to\n // finish before changing `currenTime` again.\n const queuedSeek = useRef(null);\n const setTime = (newTime: number) => {\n const isSeeking = allVideos.some(v => v.current?.seeking);\n if (isSeeking) {\n queuedSeek.current = newTime;\n } else {\n allVideos.forEach(r => {\n if (r.current) {\n r.current.currentTime = Math.max(0, Math.min(newTime, r.current.duration));\n }\n });\n }\n };\n\n useImperativeHandle(ref, () => ({\n get currentTime() {\n return notNullish(videoRefs[lastOrigin.current ?? 0].current?.currentTime);\n },\n set currentTime(newTime) {\n setTime(newTime);\n },\n get duration() {\n return notNullish(videoRefs[lastOrigin.current ?? 0].current?.duration);\n },\n get isPlaying() {\n const v = videoRefs[lastOrigin.current ?? 0].current;\n return v != null && v.currentTime > 0 && !v.paused && !v.ended;\n },\n get isReadyToPlay() {\n // State 2 means \"at least enough data to play one frame\"\n return allVideos.every(r => (r.current?.readyState ?? 0) >= 2);\n },\n play() {\n allVideos.forEach(r => r.current?.play());\n onPausePlay(false);\n },\n pause() {\n allVideos.forEach(r => r.current?.pause());\n onPausePlay(true);\n },\n }));\n\n // Some browsers don't calculate the duration for the recorded videos\n // preventing us from seeking in the video. We force it below\n // in the event handlers of the video elements, but we want to hold off\n // on some effects until that calculation is done.\n type DurationCalcState = \"done\" | \"started\";\n const durationCalculationProgress = [\n useRef(),\n useRef(),\n ];\n const [durationsCalculated, setDurationsCalculated] = useState(false);\n\n // Some logic to decide whether we currently are in a part of the video that\n // will be removed. The state will be updated in `onTimeUpdate` below and is\n // only here to trigger a rerender: the condition for rendering the overlay is\n // below.\n const isInCutRegion = (time: number) =>\n (start !== null && time < start) || (end !== null && time > end);\n const currentTime = videoRefs[lastOrigin.current ?? 0].current?.currentTime || 0;\n const overlayVisible = isInCutRegion(currentTime);\n const [, setOverlayVisible] = useState(overlayVisible);\n\n useEffect(() => {\n if (durationsCalculated) {\n onReady();\n }\n }, [onReady, durationsCalculated]);\n\n // Setup backup synchronization between both video elements\n useEffect(() => {\n if (!durationsCalculated) {\n return;\n }\n\n if (desktopIndex != null) {\n // If we have two recordings, both will have audio. But the user doesn't\n // want to hear audio twice, so we mute one video element. Particularly,\n // we mute the desktop video, as there the audio/video synchronization is\n // not as critical.\n notNullish(videoRefs[desktopIndex].current).volume = 0;\n\n const va = notNullish(videoRefs[0].current);\n const vb = notNullish(videoRefs[1].current);\n\n // We regularly check if both video elements diverge too much from one\n // another.\n let frameCounter = 0;\n let fixRequest: number;\n const fixTime = () => {\n // Only run every 60 frames.\n if (frameCounter % 60 === 0) {\n // We want the difference to be below 150ms. Usually, even without\n // this backup solution, it should be below 50ms at all time. That's\n // what testing showed.\n const diff = Math.abs(va.currentTime - vb.currentTime);\n if (diff > 0.15 && lastOrigin.current != null) {\n const origin = videoRefs[lastOrigin.current].current;\n const target = videoRefs[lastOrigin.current === 0 ? 1 : 0].current;\n notNullish(target).currentTime = notNullish(origin).currentTime;\n }\n }\n\n frameCounter++;\n fixRequest = window.requestAnimationFrame(fixTime);\n };\n fixRequest = window.requestAnimationFrame(fixTime);\n\n return () => window.cancelAnimationFrame(fixRequest);\n }\n });\n\n\n const jumpInTime = (diff: number) =>\n setTime(notNullish(videoRefs[lastOrigin.current ?? 0].current?.currentTime) + diff);\n\n // TODO: This is obviously not always correct. Finding out the FPS of the\n // recording is surprisingly tricky. And actually, browsers seem to record\n // with 30fps almost all of the time right now anway.\n const fps = 30;\n useShortcut(SHORTCUTS.review.forwards5secs, () => jumpInTime(5));\n useShortcut(SHORTCUTS.review.backwards5secs, () => jumpInTime(-5));\n useShortcut(SHORTCUTS.review.forwardsFrame, () => jumpInTime(1 / fps));\n useShortcut(SHORTCUTS.review.backwardsFrame, () => jumpInTime(-1 / fps));\n\n\n const children = recordings.map((recording, index) => ({\n dimensions: () => recording.dimensions,\n body: (\n
\n {overlayVisible && (\n
\n \n

{t(\"steps.review.part-will-be-removed\")}

\n
\n )}\n {\n // Force the browser to calculate the duration of the stream\n // by seeking way past its end. *fingers crossed*\n // We reset this later in an effect. (See above.)\n // Also without setting the current time once initially,\n // some browsers show a black video element instead of the first frame.\n event.currentTarget.currentTime = Number.MAX_VALUE;\n durationCalculationProgress[index].current = \"started\";\n }}\n onSeeked={() => {\n if (durationsCalculated) {\n const isOtherSeeking = videoRefs[index == 0 ? 1 : 0].current?.seeking;\n const queued = queuedSeek.current;\n if (!isOtherSeeking && queued != null) {\n allVideos.forEach(r => {\n if (r.current) {\n r.current.currentTime = queued;\n }\n });\n queuedSeek.current = null;\n }\n }\n }}\n onTimeUpdate={event => {\n if (durationsCalculated) {\n setOverlayVisible(isInCutRegion(event.currentTarget.currentTime));\n onTimeUpdate(event);\n } else {\n match(notNullish(durationCalculationProgress[index].current), {\n \"started\": () => {\n event.currentTarget.currentTime = ALMOST_ZERO;\n durationCalculationProgress[index].current = \"done\";\n },\n \"done\": () => {\n const finishedCalculations = durationCalculationProgress\n .filter(p => p.current === \"done\")\n .length;\n if (finishedCalculations === recordings.length) {\n setDurationsCalculated(true);\n }\n },\n });\n }\n }}\n\n // For iOS: without the autoplay attribute, the `loadeddata` event is\n // never fired for some reason. Adding this does not seem to actually\n // cause Safari to autoplay.\n autoPlay={/iPad|iPhone|iPod/.test(navigator.userAgent)}\n\n // Also for iOS: without this, the video maximizes automatically.\n playsInline\n\n preload=\"auto\"\n tabIndex={-1}\n css={{\n width: \"100%\",\n height: \"100%\",\n outline: \"none\",\n boxShadow: isHighContrast ? \"none\" : \"0 4px 16px var(--shadow-color)\",\n borderRadius: 16,\n }}\n />\n
\n ),\n }));\n\n return {children};\n});\n","import React, { useState, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Spinner, match } from \"@opencast/appkit\";\n\nimport { StepContainer } from \"../elements\";\nimport { useStudioState, useDispatch } from \"../../studio-state\";\nimport { StepProps } from \"..\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { ControlBox } from \"./control-box\";\nimport { Preview, PreviewHandle } from \"./preview\";\nimport { FiTrash } from \"react-icons/fi\";\n\n\n// In some situation we would like to set the current time to 0 or check for it.\n// Thanks to a browser bug, setting the current time to 0 fails. Using a number\n// slightly higher works though. So we use this 1ms time for now. Sigh.\nexport const ALMOST_ZERO = 0.001;\n\nexport const Review: React.FC = ({ goToFirstStep, goToNextStep }) => {\n const { t } = useTranslation();\n const recordingDispatch = useDispatch();\n const { recordings, prematureRecordingEnd, videoChoice } = useStudioState();\n const emptyRecording = recordings.some(rec => rec.media.size === 0);\n const previewController = useRef(null);\n const [currentTime, setCurrentTime] = useState(0);\n const [previewReady, setPreviewReady] = useState(false);\n const [_isPaused, setIsPaused] = useState(true);\n\n const expectedRecordings = match(videoChoice, {\n \"both\": () => 2,\n \"display\": () => 1,\n \"user\": () => 1,\n \"none\": () => 0,\n });\n\n return (\n ,\n label: t(\"steps.review.button-discard-and-record\"),\n onClick: () => {\n const doIt = window.confirm(t(\"confirm-discard-recordings\"));\n if (doIt) {\n recordingDispatch({ type: \"RESET\" });\n goToFirstStep();\n }\n },\n }}\n nextButton={{ onClick: goToNextStep }}\n >\n {prematureRecordingEnd && (\n \n )}\n\n {emptyRecording && (\n \n )}\n\n {(!previewReady || recordings.length !== expectedRecordings) && (\n
\n \n
\n )}\n {recordings.length === expectedRecordings && (\n
\n {\n setCurrentTime(event.currentTarget.currentTime);\n }}\n onPausePlay={paused => setIsPaused(paused)}\n onReady={() => setPreviewReady(true)}\n />\n\n \n
\n )}\n \n );\n};\n","import React, { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FiDownload } from \"react-icons/fi\";\nimport { LuCheckCircle2 } from \"react-icons/lu\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { recordingFileName } from \"../../util\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../../shortcuts\";\nimport { prettyFileSize, sharedButtonStyle } from \".\";\nimport { useColorScheme } from \"@opencast/appkit\";\n\n\n\nexport const SaveLocally: React.FC = () => {\n const { t, i18n } = useTranslation();\n const { recordings, title, presenter } = useStudioState();\n const dispatch = useDispatch();\n const showShortcuts = useShowAvailableShortcuts();\n\n const buttons = recordings.map(() => useRef(null));\n useShortcut(SHORTCUTS.finish.download, () => {\n for (const button of buttons) {\n button.current?.click();\n }\n });\n\n return recordings.map((recording, i) => {\n const { deviceType, mimeType, url, downloaded, media: blob } = recording;\n const flavor = deviceType === \"desktop\" ? t(\"sources-display\") : t(\"sources-user\");\n const downloadName = recordingFileName({ mime: mimeType, flavor, title, presenter });\n const { isHighContrast } = useColorScheme();\n\n if (!url) {\n return null;\n }\n\n return (\n
\n
\n e.currentTarget.currentTime = 0}\n preload=\"auto\"\n css={{\n borderRadius: 4,\n display: \"block\",\n maxHeight: 190,\n margin: \"0 auto\",\n }}\n />\n {downloaded && (\n
\n \n {t(\"steps.finish.save-locally.recording-saved\")}\n
\n )}\n
\n dispatch({ type: \"MARK_DOWNLOADED\", index: i })}\n onKeyDown={e => {\n if (e.key === \" \") {\n e.preventDefault();\n buttons[i].current?.click();\n }\n }}\n css={{\n ...sharedButtonStyle(isHighContrast),\n justifyContent: \"center\",\n maxWidth: 260,\n margin: \"auto\",\n marginTop: 8,\n }}\n >\n \n {t(\"steps.finish.save-locally.label\") + \" (\" + prettyFileSize(blob.size, i18n) + \")\"}\n {showShortcuts && (\n
\n \n
\n )}\n \n
\n );\n });\n};\n","import { HTMLInputTypeAttribute, useEffect, useId, useRef, useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport Select, { CSSObjectWithLabel, SelectInstance } from \"react-select\";\nimport {\n ControllerRenderProps, FieldError, FieldValues, Path, SubmitHandler, Validate,\n useController, useForm,\n} from \"react-hook-form\";\nimport { FiUpload } from \"react-icons/fi\";\nimport { LuCheckCircle2 } from \"react-icons/lu\";\nimport { ProtoButton, Spinner, match, notNullish, unreachable, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { Opencast, useOpencast } from \"../../opencast\";\nimport { useSettings, useSettingsManager } from \"../../settings\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { ErrorBox } from \"../../ui/ErrorBox\";\nimport { prettyFileSize, sharedButtonStyle } from \".\";\n\n\nconst LAST_PRESENTER_KEY = \"ocStudioLastPresenter\";\n\nlet progressHistory: { timestamp: number; progress: number }[] = [];\n\n\nexport const UploadBox: React.FC = () => {\n const settings = useSettings();\n const { t } = useTranslation();\n const opencast = useOpencast();\n const { recordings, upload: uploadState, title, presenter, ...state } = useStudioState();\n const dispatch = useDispatch();\n\n function onProgress(progress: number) {\n // ----- Time estimation -----\n // We use a simple sliding average over the last few data points and assume\n // that speed for the rest of the upload.\n const now = Date.now();\n\n // Add progress data point to history.\n progressHistory.push({\n timestamp: now,\n progress,\n });\n\n // The size of the sliding window in milliseconds.\n const WINDOW_SIZE_MS = 5000;\n // The size of the sliding window in number of data points.\n const WINDOW_SIZE_DATA_POINTS = 6;\n // The number of datapoints below which we won't show a time estimate.\n const MINIMUM_DATA_POINT_COUNT = 4;\n\n // Find the first element within the window. We use the larger window of the\n // two windows created by the two constraints (time and number of\n // datapoints).\n const windowStart = Math.min(\n progressHistory.findIndex(p => (now - p.timestamp) < WINDOW_SIZE_MS),\n Math.max(0, progressHistory.length - WINDOW_SIZE_DATA_POINTS),\n );\n\n // Remove all elements outside the window.\n progressHistory.splice(0, windowStart);\n\n let secondsLeft: null | number = null;\n if (progressHistory.length >= MINIMUM_DATA_POINT_COUNT) {\n // Calculate the remaining time based on the average speed within the window.\n const windowLength = now - progressHistory[0].timestamp;\n const progressInWindow = progress - progressHistory[0].progress;\n const progressPerSecond = (progressInWindow / windowLength) * 1000;\n const progressLeft = 1 - progress;\n secondsLeft = Math.max(0, Math.round(progressLeft / progressPerSecond));\n }\n\n // Update state if anything changed. We actually check for equality here to\n // avoid useless redraws.\n if (uploadState.secondsLeft !== secondsLeft || uploadState.currentProgress !== progress) {\n dispatch({\n type: \"UPLOAD_PROGRESS_UPDATE\",\n secondsLeft,\n currentProgress: progress,\n });\n }\n }\n\n useEffect(() => {\n // To still update the time estimation, we make sure to call `onProgress` at\n // least every so often.\n const interval = setInterval(() => {\n if (uploadState.state !== \"uploading\") {\n return;\n }\n\n if (!progressHistory.length) {\n onProgress(0);\n } else {\n const lastProgress = progressHistory[progressHistory.length - 1];\n const timeSinceLastUpdate = Date.now() - lastProgress.timestamp;\n if (timeSinceLastUpdate > 3000) {\n onProgress(lastProgress.progress);\n }\n }\n }, 1000);\n\n return () => clearInterval(interval);\n });\n\n const handleUpload: SubmitHandler = async data => {\n dispatch({ type: \"UPLOAD_REQUEST\" });\n progressHistory.push({\n timestamp: Date.now(),\n progress: 0,\n });\n const result = await opencast.upload({\n recordings: recordings.filter(Boolean),\n title: data.title,\n presenter: data.presenter,\n series: data.series,\n uploadSettings: settings.upload,\n onProgress,\n start: state.start,\n end: state.end,\n startTime: state.recordingStartTime ?? unreachable(\"no start time set\"),\n endTime: state.recordingEndTime ?? unreachable(\"no end time set\"),\n });\n progressHistory = [];\n\n const dispatchError = (msg: string) => dispatch({ type: \"UPLOAD_ERROR\", msg });\n match(result, {\n \"success\": () => dispatch({ type: \"UPLOAD_SUCCESS\" }),\n \"network_error\": () => dispatchError(t(\"steps.finish.upload.upload-network-error\")),\n \"not_authorized\": () => dispatchError(t(\"steps.finish.upload.upload-not-authorized\")),\n \"unexpected_response\": () => dispatchError(t(\"steps.finish.upload.upload-invalid-response\")),\n }, () => dispatchError(t(\"steps.finish.upload.upload-unknown-error\")));\n };\n\n switch (uploadState.state) {\n case \"uploading\":\n return ;\n case \"uploaded\":\n return ;\n default: // \"not_uploaded\" or \"error\"\n return ;\n }\n};\n\n\ntype Inputs = {\n title: string;\n presenter: string;\n series: string;\n serverUrl: string;\n loginName: string;\n loginPassword: string;\n};\n\ntype UploadFormProps = {\n handleUpload: SubmitHandler;\n};\n\nconst UploadForm: React.FC = ({ handleUpload }) => {\n const {\n titleField = \"required\",\n presenterField = \"required\",\n seriesField = \"optional\",\n autofillPresenter = [],\n } = useSettings().upload ?? {};\n\n const { t, i18n } = useTranslation();\n const opencast = useOpencast();\n const dispatch = useDispatch();\n const settingsManager = useSettingsManager();\n const { title, presenter, upload: uploadState, recordings } = useStudioState();\n const presenterValue = presenter\n || window.localStorage.getItem(LAST_PRESENTER_KEY)\n || autofillPresenter\n .map(source => match(source, {\n \"opencast\": () => opencast.getUsername(),\n }))\n .find(Boolean)\n || \"\";\n\n type FormState = \"idle\" | \"testing\";\n const [state, setState] = useState(\"idle\");\n\n const { formState: { errors }, handleSubmit, register, control, getValues } = useForm({\n defaultValues: settingsManager.formValues().opencast,\n });\n const { field: seriesSelect } = useController({\n name: \"series\",\n control,\n rules: {\n required: seriesField === \"required\"\n ? t(\"steps.finish.upload.validation-error-required\")\n : false,\n },\n });\n\n // This is a bit ugly, but works. We want to make sure that the `title` and\n // `presenter` values in the studio state always equal the current value in\n // the input.\n function handleInputChange(event: React.ChangeEvent) {\n const target = event.target;\n dispatch({\n type: notNullish(\n ({ title: \"UPDATE_TITLE\", presenter: \"UPDATE_PRESENTER\" } as const)[target.name],\n ),\n value: target.value,\n });\n\n if (target.name === \"presenter\") {\n window.localStorage.setItem(LAST_PRESENTER_KEY, target.value);\n }\n }\n\n // If the user has not yet changed the value of the field, but it has been prefilled\n // from local storage or one of the `autofillPresenter` sources, update the state\n // using that value.\n useEffect(() => {\n if (presenterValue !== presenter) {\n dispatch({ type: \"UPDATE_PRESENTER\", value: presenterValue });\n }\n }, []);\n\n const configurableServerUrl = settingsManager.isConfigurable(\"opencast.serverUrl\");\n const configurableUsername = settingsManager.isUsernameConfigurable();\n const configurablePassword = settingsManager.isPasswordConfigurable();\n const showOpencastSection = configurableServerUrl || configurableUsername || configurablePassword;\n\n const ocDataFromInputs = (data: Inputs) => ({\n serverUrl: data.serverUrl,\n loginName: data.loginName,\n loginPassword: data.loginPassword,\n });\n\n const onSubmit: SubmitHandler = async data => {\n if (!showOpencastSection) {\n await handleUpload(data);\n return;\n }\n\n console.log(data);\n setState(\"testing\");\n\n // Update Opencast connection data. This is a bit roundabout right now as\n // the Opencast logic is still from pre-redesign, where the connection data\n // was given on a separate settings page.\n const ocData = ocDataFromInputs(data);\n const oc = await Opencast.init({\n ...settingsManager.settings().opencast,\n ...ocData,\n });\n\n const error = match(oc.getState(), {\n \"logged_in\": () => {\n opencast.setGlobalInstance(oc);\n settingsManager.saveSettings({ opencast: ocData });\n return null;\n },\n \"incorrect_login\": () => opencast.isLoginProvided()\n ? t(\"steps.finish.upload.settings-invalid-provided-login\")\n : t(\"steps.finish.upload.settings-invalid-login-data\"),\n \"network_error\": () => t(\"steps.finish.upload.upload-network-error\"),\n \"invalid_response\": () => t(\"steps.finish.upload.upload-invalid-response\"),\n \"response_not_ok\": () => t(\"steps.finish.upload.upload-invalid-response\"),\n }, () => unreachable());\n\n if (error) {\n dispatch({ type: \"UPLOAD_ERROR\", msg: error });\n setState(\"idle\");\n } else {\n // The connection to Opencast works -> now actually start the upload.\n await handleUpload(data);\n }\n };\n\n const totalBytes = recordings.reduce((acc, rec) => acc + rec.media.size, 0);\n const uploadSize = prettyFileSize(totalBytes, i18n);\n const { isHighContrast } = useColorScheme();\n\n // Testing the new connection settings to establish a connection ASAP to make\n // the series selector work.\n const onConnectionSettingChange = async () => {\n const data = getValues();\n\n // If nothing changed, do nothing.\n const ocSettings = settingsManager.settings().opencast;\n const anyChange = (data.serverUrl && data.serverUrl !== ocSettings?.serverUrl)\n || (data.loginName && data.loginName !== ocSettings?.loginName)\n || (data.loginPassword && data.loginPassword !== ocSettings?.loginPassword);\n if (!anyChange) {\n return;\n }\n\n const ocData = ocDataFromInputs(data);\n const oc = await Opencast.init({\n ...settingsManager.settings().opencast,\n ...ocData,\n });\n\n if (oc.getState() === \"logged_in\") {\n opencast.setGlobalInstance(oc);\n settingsManager.saveSettings({ opencast: ocData });\n }\n };\n\n return (\n <>\n
\n {titleField !== \"hidden\" && }\n {presenterField !== \"hidden\" && }\n {seriesField !== \"hidden\" && }\n\n {showOpencastSection && <>\n

{t(\"steps.finish.upload.settings-header\")}

\n\n {configurableServerUrl && {\n try {\n const url = new URL(value);\n return (url.protocol === \"https:\" || url.protocol === \"http:\")\n || t(\"steps.finish.upload.settings-invalid-url-http-start\");\n } catch {\n let err = t(\"steps.finish.upload.settings-invalid-url\");\n if (!value.startsWith(\"https://\") && !value.startsWith(\"http://\")) {\n err += \" \" + t(\"steps.finish.upload.settings-invalid-url-http-start\");\n }\n return err;\n }\n }}\n />}\n\n {configurableUsername && }\n\n {configurablePassword && }\n }\n\n {/* Upload button */}\n \n {match(state, {\n \"idle\": () => ,\n \"testing\": () => ,\n })}\n {t(\"steps.finish.upload.label\") + \" (\" + uploadSize + \")\"}\n \n \n\n {/* Upload error box */}\n
\n {uploadState.state === \"error\" && (\n \n )}\n
\n \n );\n};\n\ntype InputProps =\n Pick<\n JSX.IntrinsicElements[\"input\"],\n \"onChange\" | \"autoComplete\" | \"defaultValue\" | \"onBlur\"\n > &\n Pick>, \"register\"> & {\n /** Human readable string describing the field. */\n label: string;\n name: Path;\n /** Whether this field is required or may be empty. */\n required: boolean;\n /** Function validating the value and returning a string in the case of error. */\n validate?: Validate;\n errors: Partial>;\n /** Passed to the ``. */\n type?: HTMLInputTypeAttribute;\n autoFocus?: boolean;\n };\n\n/**\n * A styled `` element with a label. Displays errors and integrated with\n * `react-hook-form`.\n */\nexport const Input = ({\n errors,\n register,\n label,\n name,\n required,\n validate,\n type = \"text\",\n ...rest\n}: InputProps) => {\n const { t } = useTranslation();\n const error = errors[name];\n const id = useId();\n\n return (\n
\n \n
\n \n {error && \n {error.message}\n }\n
\n
\n );\n};\n\ntype ErrorContainerProps = React.PropsWithChildren<{\n id: string;\n}>;\n\nconst ErrorContainer: React.FC = ({ id, children }) => (\n \n {children}\n
\n);\n\n\ntype SeriesSelectProps = {\n formProps: ControllerRenderProps;\n showOpencastSection: boolean;\n errors: Partial>;\n};\n\nconst SeriesSelect: React.FC = ({ formProps, showOpencastSection, errors }) => {\n const { t, i18n } = useTranslation();\n const opencast = useOpencast();\n const { scheme } = useColorScheme();\n const seriesId = useSettings().upload?.seriesId;\n\n type Option = { value: string; label: string };\n const [options, setOptions] = useState(null);\n const ref = useRef>(null);\n useEffect(() => {\n setOptions(null);\n opencast.getSeries().then(\n result => {\n const options = [...result.entries()].map(([value, label]) => ({ value, label }));\n options.sort(\n (a, b) => a.label.localeCompare(b.label, i18n.language, { sensitivity: \"base\" })\n );\n\n // If a seriesID is given, make the select use that as default value.\n if (seriesId) {\n const title = result.get(seriesId);\n const defaultOption = {\n label: title ?? t(\"steps.finish.upload.series-unknown\"),\n value: seriesId,\n };\n if (title == null) {\n options.push(defaultOption);\n }\n ref.current?.setValue(defaultOption, \"select-option\");\n }\n\n setOptions(options);\n },\n e => {\n console.log(\"Error fetching series: \", e);\n setOptions(\"error\");\n },\n );\n }, [opencast]);\n\n const inputId = useId();\n const errorId = useId();\n const error = options === \"error\";\n return (\n
\n \n\n formProps.onChange(data?.value)}\n onBlur={formProps.onBlur}\n aria-invalid={error ? \"true\" : \"false\"}\n aria-describedby={error ? errorId : inputId}\n\n // Styling\n placeholder={t(\"steps.finish.upload.series-placeholder\")}\n loadingMessage={() => t(\"steps.finish.upload.series-loading\")}\n noOptionsMessage={() => t(\"steps.finish.upload.series-none\")}\n styles={selectStyles(scheme.startsWith(\"dark\"), scheme.endsWith(\"high-contrast\"))}\n theme={theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n danger: COLORS.danger0,\n primary: COLORS.focus,\n neutral0: COLORS.neutral00,\n neutral5: COLORS.neutral15,\n neutral10: COLORS.neutral20,\n neutral20: COLORS.neutral30,\n neutral30: COLORS.neutral40,\n neutral40: COLORS.neutral50,\n neutral50: COLORS.neutral50,\n neutral60: COLORS.neutral60,\n neutral70: COLORS.neutral70,\n neutral80: COLORS.neutral80,\n neutral90: COLORS.neutral90,\n },\n })}\n />\n {error && (\n \n {t(\"steps.finish.upload.series-fetch-error\")}\n {showOpencastSection && (\n \" \" + t(\"steps.finish.upload.series-connection-settings-hint\")\n )}\n \n )}\n {errors[\"series\"] && (\n {errors[\"series\"].message}\n )}\n
\n );\n};\n\nexport const selectStyles = (isDark: boolean, isHighContrast: boolean) => ({\n control: (baseStyles: CSSObjectWithLabel, state: { isFocused: boolean }) => ({\n ...baseStyles,\n backgroundColor: COLORS.neutral00,\n paddingLeft: 8,\n ...!state.isFocused && { borderColor: COLORS.neutral30 },\n ...state.isFocused && {\n // react-select uses box-shadow as outline. But it's not quite large\n // enough, so we override it here.\n boxShadow: `0 0 0 1.5px ${COLORS.focus}`,\n },\n }),\n input: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral80,\n padding: \"4px 0\",\n }),\n placeholder: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral60,\n }),\n singleValue: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n color: COLORS.neutral90,\n }),\n menuList: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n padding: 0,\n }),\n menu: (baseStyles: CSSObjectWithLabel) => ({\n ...baseStyles,\n ...isDark && { outline: `1px solid ${COLORS.neutral20}` },\n ...isHighContrast && { outline: `1px solid ${COLORS.neutral90}` },\n backgroundColor: isDark ? COLORS.neutral10 : COLORS.neutral05,\n overflow: \"hidden\",\n }),\n option: (_baseStyles: CSSObjectWithLabel, state: {\n isSelected: boolean;\n isFocused: boolean;\n }) => ({\n cursor: \"default\",\n padding: \"6px 10px\",\n borderLeft: `4px solid ${state.isSelected ? COLORS.focus : \"transparent\"}`,\n ...isHighContrast && state.isFocused && {\n outline: `2px solid ${COLORS.neutral90}`,\n outlineOffset: -3,\n },\n ...(state.isFocused || state.isSelected) && !isHighContrast && {\n backgroundColor: isDark ? COLORS.neutral25 : COLORS.neutral10,\n },\n }),\n});\n\n\ntype UploadProgressProps = {\n currentProgress: number;\n secondsLeft: number | null;\n};\n\n/**\n * Shown during upload. Shows a progressbar, the percentage of data already\n * uploaded and `secondsLeft` nicely formatted as human readable time.\n */\nconst UploadProgress: React.FC = ({ currentProgress, secondsLeft }) => {\n const { t, i18n } = useTranslation();\n\n // Progress as percent with one fractional digit, e.g. 27.3%.\n const roundedPercent = Math.min(100, currentProgress * 100).toLocaleString(i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n });\n\n // Nicely format the remaining time.\n let prettyTime: string | null;\n if (secondsLeft === null) {\n prettyTime = null;\n } else if (secondsLeft < 4) {\n prettyTime = t(\"steps.finish.upload.time.a-few-seconds\");\n } else if (secondsLeft < 45) {\n prettyTime = `${secondsLeft} ${t(\"steps.finish.upload.time.seconds\")}`;\n } else if (secondsLeft < 90) {\n prettyTime = t(\"steps.finish.upload.time.a-minute\");\n } else if (secondsLeft < 45 * 60) {\n prettyTime = `${Math.round(secondsLeft / 60)} ${t(\"steps.finish.upload.time.minutes\")}`;\n } else if (secondsLeft < 90 * 60) {\n prettyTime = t(\"steps.finish.upload.time.an-hour\");\n } else if (secondsLeft < 24 * 60 * 60) {\n prettyTime = `${Math.round(secondsLeft / (60 * 60))} ${t(\"steps.finish.upload.time.hours\")}`;\n } else {\n prettyTime = null;\n }\n\n return (\n \n {/* Heading */}\n
{t(\"steps.finish.upload.currently-uploading\")}
\n\n {/* Progress bar */}\n
\n
\n
\n\n {/* Percent and time estimation */}\n
\n
{roundedPercent}%
\n
\n
\n {prettyTime && \n {{ time: prettyTime }} left\n }\n
\n
\n \n );\n};\n\n/** Shown if the upload was successful. A big checkmark and a text. */\nconst UploadSuccess = () => {\n const { t } = useTranslation();\n\n return (\n \n
{t(\"steps.finish.upload.complete\")}
\n
\n \n
\n
{t(\"steps.finish.upload.complete-explanation\")}
\n
\n );\n};\n\nconst GreyInnerBox: React.FC = ({ children }) => (\n
\n {children}\n
\n);\n","import { useTranslation } from \"react-i18next\";\nimport { LuRotateCw } from \"react-icons/lu\";\nimport { screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\n\nimport { useDispatch, useStudioState } from \"../../studio-state\";\nimport { StepProps } from \"..\";\nimport { StepContainer } from \"../elements\";\nimport { COLORS, focusStyle } from \"../../util\";\nimport { SaveLocally } from \"./save-locally\";\nimport { UploadBox } from \"./upload\";\nimport { FiXCircle } from \"react-icons/fi\";\nimport { Settings, useSettings } from \"../../settings\";\nimport { SHORTCUTS, useShortcut } from \"../../shortcuts\";\nimport { i18n } from \"i18next\";\n\n\n\n\nexport const Finish: React.FC = ({ goToPrevStep, goToFirstStep }) => {\n const { t } = useTranslation();\n const { recordings, upload: uploadState } = useStudioState();\n const dispatch = useDispatch();\n const settings = useSettings();\n\n const allDownloaded = recordings.every(rec => rec.downloaded);\n const possiblyDone = (uploadState.state === \"uploaded\" || allDownloaded)\n && uploadState.state !== \"uploading\";\n const hideBack = uploadState.state !== \"not_uploaded\" || allDownloaded;\n\n const startAgain = {\n label: t(\"steps.finish.new-recording\"),\n icon: ,\n onClick: () => {\n const doIt = window.confirm(t(\"steps.finish.new-recording-warning\"));\n if (doIt) {\n dispatch({ type: \"RESET\" });\n goToFirstStep();\n }\n },\n };\n const returnTarget = getReturnTarget(settings);\n const nextButton = returnTarget\n ? {\n label: t(\"steps.finish.finish-button\"),\n disabled: !possiblyDone,\n popoverEntries: [\n startAgain,\n {\n label: settings.return?.label\n ? t(\"steps.finish.return-to\", { label: settings.return.label })\n : t(\"steps.finish.return-to-no-label\"),\n href: returnTarget,\n icon: ,\n },\n ],\n }\n : {\n disabled: !possiblyDone,\n ...startAgain,\n };\n\n useShortcut(SHORTCUTS.finish.startNewRecording, startAgain.onClick, {\n enabled: possiblyDone,\n });\n\n return (\n \n {/* A spacer to push the boxes a bit further up */}\n
\n\n
\n \n \n \n \n \n \n
\n\n {/* A spacer to push the boxes a bit further up */}\n
\n \n );\n};\n\ntype BoxProps = React.PropsWithChildren<{\n title: string;\n}>;\n\nconst Box: React.FC = ({ title, children }) => {\n const { isHighContrast } = useColorScheme();\n return (\n
\n

{title}

\n {children}\n
\n );\n};\n\n\nconst getReturnTarget = (settings: Settings) => {\n if (!settings.return?.target) {\n return null;\n }\n\n let targetUrl: URL;\n try {\n targetUrl = new URL(settings.return.target, window.location.href);\n } catch {\n return null;\n }\n\n const allowedDomains = [window.location.hostname, ...(settings.return?.allowedDomains || [])];\n const allowed = allowedDomains.some(domain => targetUrl.hostname === domain)\n && (targetUrl.protocol === \"https:\" || targetUrl.protocol === \"http:\");\n\n if (!allowed) {\n return null;\n }\n\n return settings.return.target;\n};\n\nexport const sharedButtonStyle = (isHighContrast: boolean) => ({\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 12px\",\n gap: 12,\n borderRadius: 8,\n textDecoration: \"none\",\n position: \"relative\",\n \":not([disabled])\": {\n color: COLORS.neutral05,\n cursor: \"pointer\",\n backgroundColor: COLORS.accent7,\n \":hover\": {\n backgroundColor: COLORS.accent8,\n ...isHighContrast && {\n backgroundColor: COLORS.neutral15,\n outline: `2px solid ${COLORS.accent8}`,\n color: COLORS.neutral20,\n },\n },\n },\n \"&[disabled]\": {\n backgroundColor: COLORS.neutral15,\n color: COLORS.neutral70,\n },\n ...focusStyle({ offset: 1 }),\n}) as const;\n\n/**\n * Get file size in human readable format. We use base-1000 XB instead of\n * base-1024 XiB, as the latter would probably confuse some users and many\n * file managers use base-1000 anyway. Notably, the windows file manager\n * calculates with base-1024 but shows \"XB\". So it is lying.\n*/\nexport const prettyFileSize = (numBytes: number, i18n: i18n) => {\n const round = (n: number) => {\n const digits = n < 10 ? 1 : 0;\n return n.toLocaleString(i18n.language, {\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n });\n };\n\n if (numBytes < 1000) {\n return `${numBytes} B`;\n } else if (numBytes < 999_500) {\n return `${round(numBytes / 1000)} KB`;\n } else if (numBytes < 999_500_000) {\n return `${round(numBytes / (1_000_000))} MB`;\n } else {\n return `${round(numBytes / (1_000_000_000))} GB`;\n }\n};\n","import { ReactNode, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { match, notNullish, screenWidthAbove, screenWidthAtMost, useColorScheme } from \"@opencast/appkit\";\nimport { FiCircle } from \"react-icons/fi\";\n\nimport StepCurrent from \"../icons/step-current.svg\";\nimport StepDone from \"../icons/step-done.svg\";\nimport { BREAKPOINTS, COLORS } from \"../util\";\nimport { VideoSetup } from \"./video-setup\";\nimport { AudioSetup } from \"./audio-setup\";\nimport { Recording } from \"./recording\";\nimport { Review } from \"./review\";\nimport { Finish } from \"./finish\";\n\n\n\nexport type StepProps = {\n goToNextStep: () => void;\n goToPrevStep: () => void;\n goToFirstStep: () => void;\n};\n\nconst STEPS = [\"video-select\", \"audio-select\", \"recording\", \"review\", \"finish\"] as const;\nexport type Step = typeof STEPS[number];\nconst stepIndex = (step: Step): number => STEPS.indexOf(step);\n\n\ntype Props = {\n inert: boolean;\n};\n\nexport const Main: React.FC = ({ inert }) => {\n const [currentStep, setCurrentStep] = useState(\"video-select\");\n const stepProps = {\n goToNextStep: () => setCurrentStep(notNullish(STEPS[stepIndex(currentStep) + 1])),\n goToPrevStep: () => setCurrentStep(notNullish(STEPS[stepIndex(currentStep) - 1])),\n goToFirstStep: () => setCurrentStep(\"video-select\"),\n };\n\n return (\n
\n \n {match(currentStep, {\n \"video-select\": () => ,\n \"audio-select\": () => ,\n \"recording\": () => ,\n \"review\": () => ,\n \"finish\": () => ,\n })}\n
\n );\n};\n\n\ntype ProgressSidebarProps = {\n currentStep: Step;\n};\n\n/**\n * The element that shows the progress through the five steps. Shown left on\n * desktop, at the bottom on mobile.\n */\nconst ProgressSidebar: React.FC = ({ currentStep }) => {\n const { t } = useTranslation();\n const { isHighContrast } = useColorScheme();\n\n const currentIndex = stepIndex(currentStep);\n const labels = [\n t(\"steps.video.label\"),\n t(\"steps.audio.label\"),\n t(\"steps.record.label\"),\n t(\"steps.review.label\"),\n t(\"steps.finish.label\"),\n ];\n\n const VERTICAL_MARGIN = \"calc(8px + max(0px, 20% - 44px))\";\n const CIRCLE_RADIUS = 13;\n return (\n
\n
\n {labels.map((label, i) => {\n let icon: JSX.Element;\n if (i < currentIndex) {\n icon = ;\n } else if (i === currentIndex) {\n icon = ;\n } else {\n icon = ;\n }\n\n return (\n
\n {icon}\n
{label}
\n
\n );\n })}\n\n {/* Line connecting all steps */}\n
\n
\n
\n );\n};\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgKeyboard = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n viewBox: \"0 0 24 24\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 14,\n x: 1,\n y: 5,\n rx: 1,\n ry: 1\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9h.001M10 9zM14 9zM18 9h.001M8 12zM12 12zM16 12h.001M6 15h12\"\n})));\nexport default SvgKeyboard;","const languages = [\n { short: \"en\", long: \"English\", rtl: false },\n { short: \"de\", long: \"Deutsch\", rtl: false },\n { short: \"nl\", long: \"Nederlands\", rtl: false },\n { short: \"es\", long: \"Español\", rtl: false },\n { short: \"fa\", long: \"فارسی\", rtl: true },\n { short: \"fr\", long: \"Français\", rtl: false },\n { short: \"sl\", long: \"Slovenščina\", rtl: false },\n { short: \"zh\", long: \"简体中文\", rtl: false },\n];\n\nexport default languages;\n","import { HiOutlineTranslate } from \"react-icons/hi\";\nimport { FiInfo, FiMoon } from \"react-icons/fi\";\nimport {\n HeaderMenuItemProps, useColorScheme, WithHeaderMenu, checkboxMenuItem, ProtoButton,\n screenWidthAtMost, match,\n} from \"@opencast/appkit\";\nimport { useTranslation } from \"react-i18next\";\nimport React, { forwardRef } from \"react\";\n\nimport { DEFINES } from \"../defines\";\nimport KeyboardIcon from \"../icons/keyboard.svg\";\nimport languages from \"../i18n/languages\";\nimport { BREAKPOINTS, COLORS, focusStyle } from \"../util\";\nimport { OverlayBoxState } from \".\";\nimport { SHORTCUTS, ShortcutKeys, useShortcut, useShowAvailableShortcuts } from \"../shortcuts\";\n\n\ntype Props = {\n setOverlayBoxState: (state: OverlayBoxState) => void;\n inert: boolean;\n};\n\nexport const Header: React.FC = ({ setOverlayBoxState, inert }) => {\n const { scheme, isHighContrast } = useColorScheme();\n\n return (\n
COLORS.neutral60,\n \"dark\": () => COLORS.neutral20,\n \"dark-high-contrast\": () => \"black\",\n \"light-high-contrast\": () => \"black\",\n }),\n color: isHighContrast ? \"white\" : \"inherit\",\n height: \"var(--header-height)\",\n display: \"flex\",\n justifyContent: \"space-between\",\n ...scheme === \"dark-high-contrast\"\n ? { borderBottom: \"1px solid white\" }\n : { paddingBottom: 1 },\n }}>\n \n \n
\n );\n};\n\nconst Logo: React.FC = () => {\n const path = (filename: string) => DEFINES.publicPath + filename;\n\n return (\n *\": {\n height: \"calc(100% - 12px)\",\n },\n [screenWidthAtMost(410)]: {\n paddingLeft: 0,\n },\n }}>\n \n \"Opencast\n \n );\n};\n\nconst Buttons: React.FC> = ({ setOverlayBoxState }) => {\n return (\n
\n \n \n setOverlayBoxState(\"shortcuts\")} />\n setOverlayBoxState(\"info\")} />\n
\n );\n};\n\nconst LanguageButton: React.FC = () => {\n const { t, i18n } = useTranslation();\n const isCurrentLanguage = (language: string) => language === i18n.resolvedLanguage;\n\n const menuItems = Object.values(languages).map(lng => checkboxMenuItem({\n checked: isCurrentLanguage(lng.short),\n children: <>{lng.long},\n onClick: () => {\n if (!isCurrentLanguage(lng.short)) {\n i18n.changeLanguage(lng.short);\n }\n },\n }));\n\n const label = t(\"header.language.label\");\n return (\n \n } label={label} />\n \n );\n};\n\nconst ThemeButton: React.FC = () => {\n const { t } = useTranslation();\n const { scheme, isAuto, update } = useColorScheme();\n\n const currentPref = isAuto ? \"auto\" : scheme;\n const choices = [\"auto\", \"light\", \"dark\", \"light-high-contrast\", \"dark-high-contrast\"] as const;\n const menuItems: HeaderMenuItemProps[] = choices.map(choice => checkboxMenuItem({\n checked: currentPref === choice,\n children: <>{t(`header.theme.${choice}`)},\n onClick: () => update(choice),\n }));\n\n return (\n \n } label={t(\"header.theme.label\")} />\n \n );\n};\n\ntype BoxOpenButtonProps = {\n open: () => void;\n};\n\nconst InfoButton: React.FC = ({ open }) => {\n const { t } = useTranslation();\n return (\n } label={t(\"header.info.label\")} />\n );\n};\n\nconst ShortCutsButton: React.FC = ({ open }) => {\n const { t } = useTranslation();\n useShortcut(SHORTCUTS.general.showOverview, open, { ignoreModifiers: true });\n const showShortcut = useShowAvailableShortcuts();\n return (\n } label={t(\"shortcuts.label\")}>\n {showShortcut && (\n
\n )}\n
\n );\n};\n\ntype HeaderButtonProps = JSX.IntrinsicElements[\"button\"] & {\n icon: JSX.Element;\n label: string;\n};\n\nconst BUTTON_LABEL_BREAKPOINT = 770;\n\nconst HeaderButton = forwardRef(\n ({ icon, label, children, ...rest }, ref) => {\n const { scheme, isHighContrast } = useColorScheme();\n\n return (\n COLORS.neutral05,\n \"dark\": () => COLORS.neutral90,\n \"dark-high-contrast\": () => \"white\",\n \"light-high-contrast\": () => \"white\",\n }),\n borderRadius: 6,\n padding: \"6px 8px\",\n\n \":hover, :active\": {\n outline: `2px solid ${isHighContrast ? \"#aaa\" : COLORS.neutral50}`,\n backgroundColor: match(scheme, {\n \"light\": () => COLORS.neutral70,\n \"dark\": () => COLORS.neutral10,\n \"dark-high-contrast\": () => \"none\",\n \"light-high-contrast\": () => \"none\",\n }),\n },\n ...focusStyle({}, match(scheme, {\n \"light\": () => COLORS.neutral10,\n \"dark\": () => COLORS.accent8,\n \"dark-high-contrast\": () => \"#aaa\",\n \"light-high-contrast\": () => \"#aaa\",\n })),\n\n \"> svg\": {\n fontSize: 22,\n [`@media (max-width: ${BUTTON_LABEL_BREAKPOINT}px)`]: {\n fontSize: 26,\n },\n },\n }}>\n {icon}\n {label}\n {children}\n \n );\n }\n);\n","import React from \"react\";\nimport { FiGlobe, FiMail, FiPhone } from \"react-icons/fi\";\n\nimport { DEFINES } from \"./defines\";\nimport { COLORS } from \"./util\";\nimport { OverlayBox } from \"./layout\";\n\n\ntype Props = {\n close: () => void;\n};\n\nexport const About: React.FC = ({ close }) => (\n \n
\n

\n A web-based recording studio for Opencast.\n

\n

\n Opencast Studio allows you to record your camera, your display and your microphoneʼs audio.\n You can then either download your recordings or upload them directly to an Opencast\n instance (usually the one of your university).\n

\n

\n This is free software under the terms of the{\" \"}\n \n MIT License\n {\" \"}\n developed by the elan e.V. in cooperation\n with the ETH Zürich.\n

\n\n

How it works

\n

\n Opencast Studio uses the recording capabilities built into modern browsers to record\n audio and video streams. The recording happens in the userʼs browser and no server is\n involved in the recording.\n

\n\n {DEFINES.showLegalNotices && (\n \n

Support

\n

\n If you are experiencing any difficulties or found any bugs,\n please take a look at the{\" \"}\n \n issue tracker on GitHub\n .\n Before filing a new issue, please check if one about your topic already exists.\n We regularly check incoming issues and do our best to address bugs in a timely manner.\n

\n

\n If you are interested in additional development\n or want to support the development of Opencast Studio, please contact{\" \"}\n \n office@elan-ev.de\n .\n

\n
\n )}\n\n

Credits

\n

\n Thanks to the following people and institutions for contributing to this project:\n

\n
    \n
  • \n Duncan Smith for starting this\n project\n
  • \n
  • \n University of Cape Town (CILT)\n {\" \"}for letting Duncan start the project\n
  • \n
  • \n ETH Zürich for financial support and\n testing\n
  • \n
  • \n elan e.V. for the re-implementation\n and the ongoing development\n
  • \n
  • \n And many members from the Opencast community who helped along the way.\n
  • \n
\n\n {DEFINES.showLegalNotices && <>\n

elan e.V.

\n\n

\n The e-learning academic network (elan e.V.) is a German non-profit organization supporting\n higher-education organizations in all matters related to e-learning. Our services include\n practical tips about how to use digital technologies in education, legal advice and\n development of free, open-source software to support education.\n

\n\n

Contact

\n\n

\n Dr. Norbert Kleinefeld, Geschäftsführer\n
\n Karlstr. 23\n
\n D-26123 Oldenburg\n

\n\n

\n \n elan-ev.de\n
\n \n kontakt@elan-ev.de\n
\n \n +49 441 998 666 10\n

\n\n

\n Registergericht: Amtsgericht Oldenburg\n
\n Registernummer: VR 200644\n
\n USt.-ID-Nr.: DE 265901392\n

\n }\n\n

Version

\n

\n Build date {DEFINES.buildDate ?? \"?\"},\n commit{\" \"}\n \n {DEFINES.commitSha ?? \"?\"}\n .\n

\n
\n
\n);\n","import React, { useRef, useState } from \"react\";\nimport { match, screenWidthAtMost, useColorScheme, useOnOutsideClick } from \"@opencast/appkit\";\nimport { FiX } from \"react-icons/fi\";\n\nimport { Main } from \"../steps\";\nimport { Header } from \"./header\";\nimport { COLORS } from \"../util\";\nimport { About } from \"../about\";\nimport { SHORTCUTS, ShortcutOverview, useShortcut } from \"../shortcuts\";\n\n\nexport type OverlayBoxState = \"none\" | \"info\" | \"shortcuts\";\n\nexport const Root: React.FC = () => {\n const [overlayBoxState, setOverlayBoxState] = useState(\"none\");\n const close = () => setOverlayBoxState(\"none\");\n useShortcut(SHORTCUTS.general.closeOverlay, close);\n const inert = overlayBoxState !== \"none\";\n\n return (\n
\n
\n {match(overlayBoxState, {\n \"none\": () => null,\n \"info\": () => ,\n \"shortcuts\": () => ,\n })}\n
\n
\n );\n};\n\n\ntype OverlayBoxProps = React.PropsWithChildren<{\n close: () => void;\n title: string;\n maxWidth: number;\n}>;\n\nexport const OverlayBox: React.FC = ({ close, title, children, maxWidth }) => {\n const isLight = useColorScheme().scheme === \"light\";\n const { isHighContrast } = useColorScheme();\n const ref = useRef(null);\n useOnOutsideClick(ref, close);\n const bg = (isLight || isHighContrast) ? COLORS.neutral05 : COLORS.neutral15;\n\n return (\n
\n
\n \n

{title}

\n
\n {children}\n
\n
\n
\n );\n};\n","import { Global, css } from \"@emotion/react\";\n\n// There are also very few global styles in `index.html` as those are needed for\n// the loading indicator already.\nexport const GlobalStyle: React.FC = () => <>\n \n \n;\n\n\n/** This is just styling for Tobira that we want to apply globally. */\nconst GLOBAL_STYLE = css({\n \":root\": {\n \"--min-page-width\": \"320px\",\n },\n body: {\n // // Accent color for generated UI control `` elements\n // // where type=\"checkbox\", \"radio\" or \"range\",\n // // as well as `` elements.\n // accentColor: COLORS.primary0,\n\n fontFamily: \"'Roboto Flex Variable', 'Vazirmatn Variable', sans-serif\",\n fontWeight: 400,\n\n // A reset to a sensible value.\n lineHeight: 1.5,\n\n // 16px is a good default body text size according to the internet (TM).\n fontSize: 16,\n\n // From a set of popular phones, the iPhone 5 has the smallest viewport\n // width: 320px. It does make sense to set a minimum width early on in\n // order to know where we can stop caring.\n minWidth: \"var(--min-page-width)\",\n },\n // a: {\n // color: COLORS.primary0,\n // \"&:hover, &:focus\": {\n // textDecoration: \"none\",\n // color: COLORS.primary1,\n // },\n // \":focus-visible\": { outline: `2.5px solid ${COLORS.focus}` },\n // },\n});\n\n/**\n * The following is a minimal set of CSS reset rules in order to get rid of\n * browser dependent, inconsistent or unexpected behavior. Parts of this\n * are taken from here: https://github.com/hankchizljaw/modern-css-reset\n * Licensed as MIT, Andy Bell and other contributors\n */\nconst CSS_RESETS = css({\n // Everything should have box-sizing border-box by default as it's more\n // intuitive and expected.\n \"*, *::before, *::after\": {\n boxSizing: \"border-box\",\n },\n\n // Remove default margins of the most important elements.\n \"body, h1, h2, h3, h4, p, li, figure, figcaption, blockquote, dl, dd, pre\": {\n margin: 0,\n },\n\n \"html, body, body > #root\": {\n height: \"100%\",\n },\n\n // This improves the readability of underlines in links.\n a: {\n textDecorationSkipInk: \"auto\",\n },\n\n // Some elements not inhereting fonts is a really confusing browser default.\n \"input, button, textarea, select\": {\n font: \"inherit\",\n margin: 0,\n },\n});\n","import { ColorSchemeProvider } from \"@opencast/appkit\";\nimport { useBeforeunload } from \"react-beforeunload\";\n\nimport { Root } from \"./layout\";\nimport { GlobalStyle } from \"./ui/global-style\";\nimport { useStudioState } from \"./studio-state\";\n\n\n\nexport const App: React.FC = () => {\n return <>\n \n \n \n \n \n ;\n};\n\n/** Prevent closing the tab if recordings exists and they have not been saved. */\nconst PreventClose = () => {\n const { recordings, upload } = useStudioState();\n const downloaded = recordings.every(rec => rec.downloaded);\n const uploaded = upload.state === \"uploaded\";\n const uploading = upload.state === \"uploading\";\n\n useBeforeunload(event => {\n if ((recordings?.length > 0 && !uploaded && !downloaded) || uploading) {\n event.preventDefault();\n }\n });\n\n return null;\n};\n"],"names":["_circle","_circle2","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_path","props","xmlns","width","height","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","className","viewBox","cx","cy","d","mergeHeightConstraint","maxHeight","videoConstraints","fallbackIdeal","maxField","max","ideal","Math","min","async","startAudioCapture","dispatch","deviceId","stream","navigator","mediaDevices","getUserMedia","audio","video","getTracks","forEach","track","onended","type","err","console","error","startDisplayCapture","settings","undefined","maxFps","display","frameRate","constraints","cursor","getDisplayMedia","startUserCapture","camera","facingMode","stopAudioCapture","stop","stopDisplayCapture","stopUserCapture","VideoBoxResizeContext","React","useVideoBoxResize","usePresentContext","VideoBox","_ref","gap","minWidth","minHeight","children","ref","useResizeObserver","setForceCounter","useState","lastDimensions","useRef","map","updateLastDimensions","newDimensions","dimension","i","current","dimensions","c","resizeVideoBox","equal","v","ar","child","aspectRatio","childWidth","childHeight","_jsx","Provider","value","css","_css","flex","autoSize","margin","body","aspectRatios","rowWidths","rowHeights","availableWidth","combinedAspectRatio","Array","baseHeight","colWidths","colHeights","availableHeight","_c","widths","heights","flexDirection","_jsxs","justifyContent","bug","_ref2","name","styles","_ref3","_ref4","ErrorBox","title","extraBody","rest","padding","borderRadius","backgroundColor","COLORS","danger1","color","danger5","Select","position","paddingRight","border","neutral25","appearance","background","useColorScheme","scheme","backgroundSize","backgroundPosition","option","neutral05","neutral90","focusStyle","offset","prefsToConstraints","prefs","exactDevice","parseAspectRatio","quality","parseQuality","ASPECT_RATIOS","label","test","parseInt","LAST_VIDEO_DEVICE_KEY","CAMERA_ASPECT_RATIO_KEY","CAMERA_QUALITY_KEY","DISPLAY_QUALITY_KEY","loadCameraPrefs","window","localStorage","getItem","loadDisplayPrefs","StreamSettings","isDesktop","useDispatch","useSettings","floatRef","useTranslation","isLight","isHighContrast","updatePrefs","newPrefs","merged","setOpt","key","setItem","useEffect","cameraDeviceId","deviceIdOf","isExpanded","setIsExpanded","_Fragment","top","left","right","textAlign","neutral70","boxShadow","streamInfo","FloatingContainer","placement","ariaRole","open","onClose","viewPortMargin","FloatingTrigger","WithTooltip","tooltip","ProtoButton","onClick","old","OVERLAY_STYLE","fontSize","transition","transform","FiX","FiSettings","Floating","borderWidth","shadowBlur","gridTemplateColumns","gridGap","paddingLeft","screenWidthAtMost","columnGap","rowGap","UserSettings","UniveralSettings","neutral15","marginTop","lineHeight","Trans","i18nKey","s","getVideoTracks","getSettings","sizeInfo","fpsInfo","join","PrefKey","_ref6","PrefValue","_ref5","_ref7","changeQuality","qualities","out","filter","q","push","qualityOptions","kind","RadioButton","id","onChange","checked","every","_ref9","_ref8","state","useStudioState","currentDeviceId","userStream","devices","getUniqueDevices","changeAspectRatio","ratio","htmlFor","changeDevice","target","x","_ref10","fontWeight","neutral10","borderColor","neutral40","outline","accent4","accent6","tabIndex","onKeyDown","SourcePreview","inputs","match","StreamPreview","input","dimensionsOf","inputHasError","unreachable","allowed","unexpectedEnd","PreviewVideo","DisplayAudioInfo","videoRef","srcObject","addEventListener","removeEventListener","inner","Spinner","size","neutral60","autoPlay","muted","playsInline","_ref11","hasAudio","getAudioTracks","LuInfo","LuVolume2","LuVolumeX","backdropFilter","outlineOffset","onMac","userAgent","includes","SHORTCUTS","general","showAvailableShortcuts","showOverview","closeOverlay","tab","prev","next","videoSetup","selectScreen","selectBoth","selectUser","audioSetup","withAudio","withoutAudio","recording","startPauseResume","review","playPause","forwards5secs","backwards5secs","forwardsFrame","backwardsFrame","cutLeft","cutRight","removeCutLeft","removeCutRight","finish","startNewRecording","download","SHORTCUT_TRANSLATIONS","KEY_TRANSLATIONS","useShortcut","keys","callback","options","deps","useHotkeys","splitKey","useShowAvailableShortcuts","active","setActive","enable","event","split","some","trim","toLowerCase","disable","document","ShortcutKeys","shortcut","large","alignItems","FiArrowLeft","FiArrowRight","Mod","FiCommand","Alt","LuOption","Shift","LuArrowBigUp","SingleKey","monofont","bg","light","dark","light-high-contrast","dark-high-contrast","neutral50","neutral80","fontFamily","ShortcutOverview","close","OverlayBox","maxWidth","entries","groupId","group","ShortcutGroupOverview","GROUP_ID_TRANSLATIONS","combination","StepButton","icon","disabled","danger","popoverEntries","showShortcut","isDark","setOpen","click","enabled","button","danger4","danger0","flexShrink","FiChevronLeft","FiChevronRight","arrowSize","distance","entry","style","textDecoration","inset","borderTop","neutral30","role","href","preventDefault","location","StepContainer","note","nextButton","prevButton","SourceOptionButton","disabledText","ariaLabel","accent7","neutral20","accent8","marginBottom","SourceSelection","setActiveSource","userConstraints","displayConstraints","displaySupported","userSupported","clickUser","queryMediaDevices","clickDisplay","clickBoth","onSafari","Promise","all","showShortcuts","BREAKPOINTS","medium","onMobileDevice","FiMonitor","svg","FiUser","hasWebcam","VideoSetup","goToNextStep","displayStream","videoChoice","activeSource","hasStreams","choice","userInput","userAllowed","userUnexpectedEnd","displayInput","displayAllowed","displayUnexpectedEnd","buttons","reselectSource","someProblem","none","Warnings","user","showButtons","both","warnings","protocol","hostname","isRecordingSupported","msg","selectNoAudio","selectMicrophone","FiMic","FiMicOff","MicrophonePreview","audioStream","audioAllowed","audioUnexpectedEnd","LAST_AUDIO_DEVICE_KEY","selectId","useId","AudioVisualziation","marginRight","exact","canvasRef","canvas","ctx","getContext","Error","lineWidth","strokeStyle","source","AudioContext","createMediaStreamSource","scope","Oscilloscope","fftSize","animate","AudioSetup","goToPrevStep","audioChoice","microphone","RecordingControls","recordingState","startRecording","pauseRecording","resumeRecording","fgColor","inactive","paused","ignoreEventWhen","code","HTMLButtonElement","FiPlay","FiPause","bottom","Timer","isRecording","formatted","setFormatted","millisPassed","lastTick","Date","counterId","setInterval","tick","newInstant","valueOf","ms","segments","floor","slice","unit","clearInterval","Recorder","onStop","constructor","mimeType","MediaRecorder","mimes","find","mime","isTypeSupported","debug","this","videoBitsPerSecond","videoBitrate","ondataavailable","onstop","#reset","data","log","mainMimeType","media","fixWebmDuration","Blob","url","URL","createObjectURL","start","pause","resume","addRecordOnStop","deviceType","mixAudioIntoVideo","audioStreams","videoStream","reduce","MediaStream","audioContext","accumulatedAudio","currentAudio","resultAudio","createMediaStreamDestination","connect","Recording","recordingDispatch","opencast","useOpencast","setRecordingState","desktopRecorder","videoRecorder","canRecord","stopRecording","premature","refreshConnection","stopCapture","previews","useBeforeunload","play","overflow","PauseOverlay","textShadow","animation","keyframes","opacity","FiPauseCircle","_g","ControlBox","previewController","currentTime","i18n","duration","Controls","formatTime","language","Scrubber","seconds","totalDuration","lang","secondsPart","minutesPart","hoursPart","secondsFormatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","lowerPart","Infinity","end","cutStyle","boxSizing","danger2","mouseEvent","rect","currentTarget","getBoundingClientRect","progress","clientX","setTime","zIndex","Draggable","scrubberRef","initialTime","onDrag","time","notNullish","borderRight","borderLeft","disableCutting","clamp","CutMarker","side","CutMarkerIcon","initialPos","pos","scrubberRect","isDragging","onMouseUp","onMouseMove","onMove","pageX","percentage","onTouchMove","touches","onMouseDown","onTouchStart","userSelect","togglePlayPause","controller","isPlaying","isReadyToPlay","CutControls","marker","control","invariant","accent5","ALMOST_ZERO","cut","timestamp","cutButton","paddingTop","CutHereIcon","Preview","forwardRef","onTimeUpdate","onReady","onPausePlay","recordings","videoRefs","allVideos","desktopIndex","lastOrigin","queuedSeek","newTime","seeking","useImperativeHandle","ended","readyState","durationCalculationProgress","durationsCalculated","setDurationsCalculated","isInCutRegion","overlayVisible","setOverlayVisible","volume","va","vb","fixRequest","frameCounter","fixTime","abs","origin","requestAnimationFrame","cancelAnimationFrame","jumpInTime","diff","index","CutOutIcon","src","onLoadedData","Number","MAX_VALUE","onSeeked","isOtherSeeking","queued","started","done","p","preload","Review","goToFirstStep","prematureRecordingEnd","emptyRecording","rec","setCurrentTime","previewReady","setPreviewReady","_isPaused","setIsPaused","expectedRecordings","FiTrash","confirm","SaveLocally","presenter","downloaded","blob","flavor","downloadName","recordingFileName","LuCheckCircle2","rel","sharedButtonStyle","FiDownload","prettyFileSize","LAST_PRESENTER_KEY","progressHistory","UploadBox","upload","uploadState","onProgress","now","windowStart","findIndex","splice","secondsLeft","windowLength","progressPerSecond","progressLeft","round","currentProgress","interval","lastProgress","handleUpload","result","Boolean","series","uploadSettings","startTime","recordingStartTime","endTime","recordingEndTime","dispatchError","success","network_error","not_authorized","unexpected_response","UploadProgress","UploadSuccess","UploadForm","titleField","presenterField","seriesField","autofillPresenter","settingsManager","useSettingsManager","presenterValue","getUsername","setState","formState","errors","handleSubmit","register","getValues","useForm","defaultValues","formValues","field","seriesSelect","useController","rules","required","handleInputChange","configurableServerUrl","isConfigurable","configurableUsername","isUsernameConfigurable","configurablePassword","isPasswordConfigurable","showOpencastSection","ocDataFromInputs","serverUrl","loginName","loginPassword","totalBytes","acc","uploadSize","onConnectionSettingChange","ocSettings","ocData","oc","Opencast","init","getState","setGlobalInstance","saveSettings","onSubmit","logged_in","incorrect_login","isLoginProvided","invalid_response","response_not_ok","Input","autoComplete","defaultValue","autoFocus","SeriesSelect","formProps","onBlur","validate","startsWith","idle","FiUpload","testing","neutral00","ErrorContainer","message","_ref12","seriesId","setOptions","getSeries","then","sort","a","b","localeCompare","sensitivity","get","defaultOption","setValue","inputId","errorId","isLoading","isDisabled","isClearable","isSearchable","placeholder","loadingMessage","noOptionsMessage","selectStyles","endsWith","theme","colors","primary","focus","neutral0","neutral5","baseStyles","isFocused","singleValue","menuList","menu","_baseStyles","isSelected","_ref14","_ref15","_ref16","_ref13","roundedPercent","prettyTime","GreyInnerBox","_ref17","_ref18","Finish","allDownloaded","possiblyDone","hideBack","startAgain","LuRotateCw","returnTarget","getReturnTarget","return","FiXCircle","Box","targetUrl","allowedDomains","domain","numBytes","digits","STEPS","stepIndex","step","indexOf","Main","inert","currentStep","setCurrentStep","stepProps","ProgressSidebar","video-select","audio-select","currentIndex","labels","VERTICAL_MARGIN","screenWidthAbove","StepDone","StepCurrent","FiCircle","CIRCLE_RADIUS","_rect","y","rx","ry","short","long","rtl","Header","setOverlayBoxState","borderBottom","paddingBottom","Logo","Buttons","path","filename","DEFINES","publicPath","srcSet","alt","LanguageButton","ThemeButton","ShortCutsButton","InfoButton","isCurrentLanguage","resolvedLanguage","menuItems","values","languages","lng","checkboxMenuItem","changeLanguage","WithHeaderMenu","items","breakpoint","small","HeaderButton","HiOutlineTranslate","isAuto","update","currentPref","FiMoon","FiInfo","ignoreModifiers","KeyboardIcon","About","h2","showLegalNotices","FiGlobe","FiMail","FiPhone","buildDate","commitSha","Root","overlayBoxState","overflowY","info","shortcuts","useOnOutsideClick","GlobalStyle","Global","CSS_RESETS","GLOBAL_STYLE","App","PreventClose","ColorSchemeProvider","uploaded","uploading"],"sourceRoot":""} \ No newline at end of file diff --git a/artifacts.zip b/artifacts.zip index 2369ce0a6a6749dd780e081aa4e52e5a2f384371..ebf182b0febd6728087d17c369c884b253a2d14c 100644 GIT binary patch delta 221682 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%0A7cYs_CQ;}8?<&<5bKgf_6m1qx&yRoelp0Eok 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%0AnLlC?UQ&)gS7405wit8KJZXA4R;*MCrq_T?7 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 ZAJ|fA@esE)c$^4yI0TH|YYBO9{U5;715*G1 delta 221560 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

gAsHxuT$Ib~(^+b}i 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 z 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

8f@Fv{ES1Y=> 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

9zW230eAk1# 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,--b):0,m--,10===y&&(m=1,g--),y}function C(){return y=b2||R(y)>3?"":" "}function N(e,t){for(;--t&&C()&&!(y<48||y>102||y>57&&y<65||y>70&&y<97););return T(e,_()+(t<6&&32==E()&&32==C()))}function I(e){for(;C();)switch(y){case e:return b;case 34:case 39:34!==e&&39!==e&&I(y);break;case 40:41===e&&I(e);break;case 92:C()}return b}function D(e,t){for(;C()&&e+y!==57&&(e+y!==84||47!==E()););return"/*"+T(t,b-1)+"*"+i(47===e?e:C())}function z(e){for(;!R(E());)C();return T(e,b)}var M="-ms-",j="-moz-",U="-webkit-",F="comm",H="rule",$="decl",B="@keyframes";function V(e,t){for(var n="",r=p(e),o=0;o0&&f(j)-v&&h(y>32?G(j+";",r,n,v-1):G(l(j," ","")+";",r,n,v-2),p);break;case 59:j+=";";default:if(h(M=Y(j,t,n,g,m,o,d,O,L=[],I=[],v),a),123===R)if(0===m)K(j,t,M,M,L,a,v,d,I);else switch(99===b&&110===c(j,3)?100:b){case 100:case 108:case 109:case 115:K(e,M,M,r&&h(Y(e,M,M,0,0,o,d,O,o,L=[],v),I),o,I,v,d,r?L:I);break;default:K(j,M,M,M,[""],I,0,d,I)}}g=m=y=0,k=T=1,O=j="",v=s;break;case 58:v=1+f(j),y=w;default:if(k<1)if(123==R)--k;else if(125==R&&0==k++&&125==S())continue;switch(j+=i(R),R*k){case 38:T=m>0?1:(j+="\f",-1);break;case 44:d[g++]=(f(j)-1)*T,T=1;break;case 64:45===E()&&(j+=P(C())),b=E(),m=v=f(O=j+=z(_())),R++;break;case 45:45===w&&2==f(j)&&(k=0)}}return a}function Y(e,t,n,r,i,a,u,c,f,h,g){for(var m=i-1,v=0===i?a:[""],b=p(v),y=0,w=0,x=0;y0?v[S]+" "+C:l(C,/&\f/g,v[S])))&&(f[x++]=E);return k(e,t,n,0===i?H:c,f,h,g)}function Q(e,t,n){return k(e,t,n,F,i(y),d(e,2,-2),0)}function G(e,t,n,r){return k(e,t,n,$,d(e,0,r),d(e,r+1,-1),r)}var J=function(e,t,n){for(var r=0,o=0;r=o,o=E(),38===r&&12===o&&(t[n]=1),!R(o);)C();return T(e,b)},Z=new WeakMap,X=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Z.get(n))&&!r){Z.set(e,!0);for(var o=[],a=function(e,t){return L(function(e,t){var n=-1,r=44;do{switch(R(r)){case 0:38===r&&12===E()&&(t[n]=1),e[n]+=J(b-1,t,n);break;case 2:e[n]+=P(r);break;case 4:if(44===r){e[++n]=58===E()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=i(r)}}while(r=C());return e}(O(e),t))}(t,o),s=n.props,l=0,u=0;l6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+U+"$2-$3$1"+j+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?te(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,f(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":"+U)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+U+(45===c(e,14)?"inline-":"")+"box$3$1"+U+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return U+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return U+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return U+e+M+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return U+e+M+e+e}return e}var ne=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case $:e.return=te(e.value,e.length);break;case B:return V([x(e,{value:l(e.value,"@","@"+U)})],r);case H:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return V([x(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return V([x(e,{props:[l(t,/:(plac\w+)/,":"+U+"input-$1")]}),x(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),x(e,{props:[l(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],re=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o,i,a=e.stylisPlugins||ne,s={},l=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(o)+l;return{name:u,styles:o,next:h}}},1287:function(e,t,n){"use strict";var r;n.d(t,{i:function(){return s},s:function(){return a}});var o=n(6540),i=!!(r||(r=n.t(o,2))).useInsertionEffect&&(r||(r=n.t(o,2))).useInsertionEffect,a=i||function(e){return e()},s=i||o.useLayoutEffect},41:function(e,t,n){"use strict";function r(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}n.d(t,{Rk:function(){return r},SF:function(){return o},sk:function(){return i}});var o=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},i=function(e,t,n){o(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var i=t;do{e.insert(t===i?"."+r:"",i,e.sheet,!0),i=i.next}while(void 0!==i)}}},8574:function(e,t,n){"use strict";const r=n(9611),o=n.g.Date;class i extends o{constructor(e){super(e),this.isDate=!0}toISOString(){return`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}`}}e.exports=e=>{const t=new i(e);if(isNaN(t))throw new TypeError("Invalid Datetime");return t}},6804:function(e,t,n){"use strict";const r=n(9611);class o extends Date{constructor(e){super(e+"Z"),this.isFloating=!0}toISOString(){return`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}T${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`}}e.exports=e=>{const t=new o(e);if(isNaN(t))throw new TypeError("Invalid Datetime");return t}},1051:function(e){"use strict";e.exports=e=>{const t=new Date(e);if(isNaN(t))throw new TypeError("Invalid Datetime");return t}},5879:function(e,t,n){"use strict";const r=n(9611);class o extends Date{constructor(e){super(`0000-01-01T${e}Z`),this.isTime=!0}toISOString(){return`${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`}}e.exports=e=>{const t=new o(e);if(isNaN(t))throw new TypeError("Invalid Datetime");return t}},9611:function(e){"use strict";e.exports=(e,t)=>{for(t=String(t);t.length{const t=new TomlError(e.message);return t.code=e.code,t.wrapped=e,t},module.exports.TomlError=TomlError;const createDateTime=__webpack_require__(1051),createDateTimeFloat=__webpack_require__(6804),createDate=__webpack_require__(8574),createTime=__webpack_require__(5879),CTRL_I=9,CTRL_J=10,CTRL_M=13,CTRL_CHAR_BOUNDARY=31,CHAR_SP=32,CHAR_QUOT=34,CHAR_NUM=35,CHAR_APOS=39,CHAR_PLUS=43,CHAR_COMMA=44,CHAR_HYPHEN=45,CHAR_PERIOD=46,CHAR_0=48,CHAR_1=49,CHAR_7=55,CHAR_9=57,CHAR_COLON=58,CHAR_EQUALS=61,CHAR_A=65,CHAR_E=69,CHAR_F=70,CHAR_T=84,CHAR_U=85,CHAR_Z=90,CHAR_LOWBAR=95,CHAR_a=97,CHAR_b=98,CHAR_e=101,CHAR_f=102,CHAR_i=105,CHAR_l=108,CHAR_n=110,CHAR_o=111,CHAR_r=114,CHAR_s=115,CHAR_t=116,CHAR_u=117,CHAR_x=120,CHAR_z=122,CHAR_LCUB=123,CHAR_RCUB=125,CHAR_LSQB=91,CHAR_BSOL=92,CHAR_RSQB=93,CHAR_DEL=127,SURROGATE_FIRST=55296,SURROGATE_LAST=57343,escapes={[CHAR_b]:"\b",[CHAR_t]:"\t",[CHAR_n]:"\n",[CHAR_f]:"\f",[CHAR_r]:"\r",[CHAR_QUOT]:'"',[CHAR_BSOL]:"\\"};function isDigit(e){return e>=CHAR_0&&e<=CHAR_9}function isHexit(e){return e>=CHAR_A&&e<=CHAR_F||e>=CHAR_a&&e<=CHAR_f||e>=CHAR_0&&e<=CHAR_9}function isBit(e){return e===CHAR_1||e===CHAR_0}function isOctit(e){return e>=CHAR_0&&e<=CHAR_7}function isAlphaNumQuoteHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_APOS||e===CHAR_QUOT||e===CHAR_LOWBAR||e===CHAR_HYPHEN}function isAlphaNumHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_LOWBAR||e===CHAR_HYPHEN}const _type=Symbol("type"),_declared=Symbol("declared"),hasOwnProperty=Object.prototype.hasOwnProperty,defineProperty=Object.defineProperty,descriptor={configurable:!0,enumerable:!0,writable:!0,value:void 0};function hasKey(e,t){return!!hasOwnProperty.call(e,t)||("__proto__"===t&&defineProperty(e,"__proto__",descriptor),!1)}const INLINE_TABLE=Symbol("inline-table");function InlineTable(){return Object.defineProperties({},{[_type]:{value:INLINE_TABLE}})}function isInlineTable(e){return null!==e&&"object"==typeof e&&e[_type]===INLINE_TABLE}const TABLE=Symbol("table");function Table(){return Object.defineProperties({},{[_type]:{value:TABLE},[_declared]:{value:!1,writable:!0}})}function isTable(e){return null!==e&&"object"==typeof e&&e[_type]===TABLE}const _contentType=Symbol("content-type"),INLINE_LIST=Symbol("inline-list");function InlineList(e){return Object.defineProperties([],{[_type]:{value:INLINE_LIST},[_contentType]:{value:e}})}function isInlineList(e){return null!==e&&"object"==typeof e&&e[_type]===INLINE_LIST}const LIST=Symbol("list");function List(){return Object.defineProperties([],{[_type]:{value:LIST}})}function isList(e){return null!==e&&"object"==typeof e&&e[_type]===LIST}let _custom;try{const utilInspect=eval("require('util').inspect");_custom=utilInspect.custom}catch(e){}const _inspect=_custom||"inspect";class BoxedBigInt{constructor(e){try{this.value=__webpack_require__.g.BigInt.asIntN(64,e)}catch(e){this.value=null}Object.defineProperty(this,_type,{value:INTEGER})}isNaN(){return null===this.value}toString(){return String(this.value)}[_inspect](){return`[BigInt: ${this.toString()}]}`}valueOf(){return this.value}}const INTEGER=Symbol("integer");function Integer(e){let t=Number(e);return Object.is(t,-0)&&(t=0),__webpack_require__.g.BigInt&&!Number.isSafeInteger(t)?new BoxedBigInt(e):Object.defineProperties(new Number(t),{isNaN:{value:function(){return isNaN(this)}},[_type]:{value:INTEGER},[_inspect]:{value:()=>`[Integer: ${e}]`}})}function isInteger(e){return null!==e&&"object"==typeof e&&e[_type]===INTEGER}const FLOAT=Symbol("float");function Float(e){return Object.defineProperties(new Number(e),{[_type]:{value:FLOAT},[_inspect]:{value:()=>`[Float: ${e}]`}})}function isFloat(e){return null!==e&&"object"==typeof e&&e[_type]===FLOAT}function tomlType(e){const t=typeof e;if("object"===t){if(null===e)return"null";if(e instanceof Date)return"datetime";if(_type in e)switch(e[_type]){case INLINE_TABLE:return"inline-table";case INLINE_LIST:return"inline-list";case TABLE:return"table";case LIST:return"list";case FLOAT:return"float";case INTEGER:return"integer"}}return t}function makeParserClass(e){return class extends e{constructor(){super(),this.ctx=this.obj=Table()}atEndOfWord(){return this.char===CHAR_NUM||this.char===CTRL_I||this.char===CHAR_SP||this.atEndOfLine()}atEndOfLine(){return this.char===e.END||this.char===CTRL_J||this.char===CTRL_M}parseStart(){if(this.char===e.END)return null;if(this.char===CHAR_LSQB)return this.call(this.parseTableOrList);if(this.char===CHAR_NUM)return this.call(this.parseComment);if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M)return null;if(isAlphaNumQuoteHyphen(this.char))return this.callNow(this.parseAssignStatement);throw this.error(new TomlError(`Unknown character "${this.char}"`))}parseWhitespaceToEOL(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M)return null;if(this.char===CHAR_NUM)return this.goto(this.parseComment);if(this.char===e.END||this.char===CTRL_J)return this.return();throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line"))}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(e){let t=this.ctx,n=e.key.pop();for(let n of e.key){if(hasKey(t,n)&&(!isTable(t[n])||t[n][_declared]))throw this.error(new TomlError("Can't redefine existing key"));t=t[n]=t[n]||Table()}if(hasKey(t,n))throw this.error(new TomlError("Can't redefine existing key"));return isInteger(e.value)||isFloat(e.value)?t[n]=e.value.valueOf():t[n]=e.value,this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(e){return this.state.resultTable?this.state.resultTable.push(e):this.state.resultTable=[e],this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){return this.char===CHAR_PERIOD?this.next(this.parseAssignKeywordPostDot):this.char!==CHAR_SP&&this.char!==CTRL_I?this.goto(this.parseAssignEqual):void 0}parseAssignKeywordPostDot(){if(this.char!==CHAR_SP&&this.char!==CTRL_I)return this.callNow(this.parseKeyword,this.recordAssignKeyword)}parseAssignEqual(){if(this.char===CHAR_EQUALS)return this.next(this.parseAssignPreValue);throw this.error(new TomlError('Invalid character, expected "="'))}parseAssignPreValue(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseValue,this.recordAssignValue)}recordAssignValue(e){return this.returnNow({key:this.state.resultTable,value:e})}parseComment(){do{if(this.char===e.END||this.char===CTRL_J)return this.return()}while(this.nextChar())}parseTableOrList(){if(this.char!==CHAR_LSQB)return this.goto(this.parseTable);this.next(this.parseList)}parseTable(){return this.ctx=this.obj,this.goto(this.parseTableNext)}parseTableNext(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseKeyword,this.parseTableMore)}parseTableMore(e){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CHAR_RSQB){if(hasKey(this.ctx,e)&&(!isTable(this.ctx[e])||this.ctx[e][_declared]))throw this.error(new TomlError("Can't redefine existing key"));return this.ctx=this.ctx[e]=this.ctx[e]||Table(),this.ctx[_declared]=!0,this.next(this.parseWhitespaceToEOL)}if(this.char===CHAR_PERIOD){if(hasKey(this.ctx,e))if(isTable(this.ctx[e]))this.ctx=this.ctx[e];else{if(!isList(this.ctx[e]))throw this.error(new TomlError("Can't redefine existing key"));this.ctx=this.ctx[e][this.ctx[e].length-1]}else this.ctx=this.ctx[e]=Table();return this.next(this.parseTableNext)}throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseList(){return this.ctx=this.obj,this.goto(this.parseListNext)}parseListNext(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseKeyword,this.parseListMore)}parseListMore(e){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CHAR_RSQB){if(hasKey(this.ctx,e)||(this.ctx[e]=List()),isInlineList(this.ctx[e]))throw this.error(new TomlError("Can't extend an inline array"));if(!isList(this.ctx[e]))throw this.error(new TomlError("Can't redefine an existing key"));{const t=Table();this.ctx[e].push(t),this.ctx=t}return this.next(this.parseListEnd)}if(this.char===CHAR_PERIOD){if(hasKey(this.ctx,e)){if(isInlineList(this.ctx[e]))throw this.error(new TomlError("Can't extend an inline array"));if(isInlineTable(this.ctx[e]))throw this.error(new TomlError("Can't extend an inline table"));if(isList(this.ctx[e]))this.ctx=this.ctx[e][this.ctx[e].length-1];else{if(!isTable(this.ctx[e]))throw this.error(new TomlError("Can't redefine an existing key"));this.ctx=this.ctx[e]}}else this.ctx=this.ctx[e]=Table();return this.next(this.parseListNext)}throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseListEnd(e){if(this.char===CHAR_RSQB)return this.next(this.parseWhitespaceToEOL);throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseValue(){if(this.char===e.END)throw this.error(new TomlError("Key without value"));if(this.char===CHAR_QUOT)return this.next(this.parseDoubleString);if(this.char===CHAR_APOS)return this.next(this.parseSingleString);if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS)return this.goto(this.parseNumberSign);if(this.char===CHAR_i)return this.next(this.parseInf);if(this.char===CHAR_n)return this.next(this.parseNan);if(isDigit(this.char))return this.goto(this.parseNumberOrDateTime);if(this.char===CHAR_t||this.char===CHAR_f)return this.goto(this.parseBoolean);if(this.char===CHAR_LSQB)return this.call(this.parseInlineList,this.recordValue);if(this.char===CHAR_LCUB)return this.call(this.parseInlineTable,this.recordValue);throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}recordValue(e){return this.returnNow(e)}parseInf(){if(this.char===CHAR_n)return this.next(this.parseInf2);throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseInf2(){if(this.char===CHAR_f)return"-"===this.state.buf?this.return(-1/0):this.return(1/0);throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseNan(){if(this.char===CHAR_a)return this.next(this.parseNan2);throw this.error(new TomlError('Unexpected character, expected "nan"'))}parseNan2(){if(this.char===CHAR_n)return this.return(NaN);throw this.error(new TomlError('Unexpected character, expected "nan"'))}parseKeyword(){return this.char===CHAR_QUOT?this.next(this.parseBasicString):this.char===CHAR_APOS?this.next(this.parseLiteralString):this.goto(this.parseBareKey)}parseBareKey(){do{if(this.char===e.END)throw this.error(new TomlError("Key ended without value"));if(!isAlphaNumHyphen(this.char)){if(0===this.state.buf.length)throw this.error(new TomlError("Empty bare keys are not allowed"));return this.returnNow()}this.consume()}while(this.nextChar())}parseSingleString(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiStringMaybe):this.goto(this.parseLiteralString)}parseLiteralString(){do{if(this.char===CHAR_APOS)return this.return();if(this.atEndOfLine())throw this.error(new TomlError("Unterminated string"));if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I)throw this.errorControlCharInString();this.consume()}while(this.nextChar())}parseLiteralMultiStringMaybe(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiString):this.returnNow()}parseLiteralMultiString(){return this.char===CTRL_M?null:this.char===CTRL_J?this.next(this.parseLiteralMultiStringContent):this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiStringContent(){do{if(this.char===CHAR_APOS)return this.next(this.parseLiteralMultiEnd);if(this.char===e.END)throw this.error(new TomlError("Unterminated multi-line string"));if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M)throw this.errorControlCharInString();this.consume()}while(this.nextChar())}parseLiteralMultiEnd(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiEnd2):(this.state.buf+="'",this.goto(this.parseLiteralMultiStringContent))}parseLiteralMultiEnd2(){return this.char===CHAR_APOS?this.return():(this.state.buf+="''",this.goto(this.parseLiteralMultiStringContent))}parseDoubleString(){return this.char===CHAR_QUOT?this.next(this.parseMultiStringMaybe):this.goto(this.parseBasicString)}parseBasicString(){do{if(this.char===CHAR_BSOL)return this.call(this.parseEscape,this.recordEscapeReplacement);if(this.char===CHAR_QUOT)return this.return();if(this.atEndOfLine())throw this.error(new TomlError("Unterminated string"));if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I)throw this.errorControlCharInString();this.consume()}while(this.nextChar())}recordEscapeReplacement(e){return this.state.buf+=e,this.goto(this.parseBasicString)}parseMultiStringMaybe(){return this.char===CHAR_QUOT?this.next(this.parseMultiString):this.returnNow()}parseMultiString(){return this.char===CTRL_M?null:this.char===CTRL_J?this.next(this.parseMultiStringContent):this.goto(this.parseMultiStringContent)}parseMultiStringContent(){do{if(this.char===CHAR_BSOL)return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement);if(this.char===CHAR_QUOT)return this.next(this.parseMultiEnd);if(this.char===e.END)throw this.error(new TomlError("Unterminated multi-line string"));if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M)throw this.errorControlCharInString();this.consume()}while(this.nextChar())}errorControlCharInString(){let e="\\u00";return this.char<16&&(e+="0"),e+=this.char.toString(16),this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${e} instead`))}recordMultiEscapeReplacement(e){return this.state.buf+=e,this.goto(this.parseMultiStringContent)}parseMultiEnd(){return this.char===CHAR_QUOT?this.next(this.parseMultiEnd2):(this.state.buf+='"',this.goto(this.parseMultiStringContent))}parseMultiEnd2(){return this.char===CHAR_QUOT?this.return():(this.state.buf+='""',this.goto(this.parseMultiStringContent))}parseMultiEscape(){return this.char===CTRL_M||this.char===CTRL_J?this.next(this.parseMultiTrim):this.char===CHAR_SP||this.char===CTRL_I?this.next(this.parsePreMultiTrim):this.goto(this.parseEscape)}parsePreMultiTrim(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CTRL_M||this.char===CTRL_J)return this.next(this.parseMultiTrim);throw this.error(new TomlError("Can't escape whitespace"))}parseMultiTrim(){return this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M?null:this.returnNow()}parseEscape(){if(this.char in escapes)return this.return(escapes[this.char]);if(this.char===CHAR_u)return this.call(this.parseSmallUnicode,this.parseUnicodeReturn);if(this.char===CHAR_U)return this.call(this.parseLargeUnicode,this.parseUnicodeReturn);throw this.error(new TomlError("Unknown escape character: "+this.char))}parseUnicodeReturn(e){try{const t=parseInt(e,16);if(t>=SURROGATE_FIRST&&t<=SURROGATE_LAST)throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"));return this.returnNow(String.fromCodePoint(t))}catch(e){throw this.error(TomlError.wrap(e))}}parseSmallUnicode(){if(!isHexit(this.char))throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"));if(this.consume(),this.state.buf.length>=4)return this.return()}parseLargeUnicode(){if(!isHexit(this.char))throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"));if(this.consume(),this.state.buf.length>=8)return this.return()}parseNumberSign(){return this.consume(),this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){return this.char===CHAR_i?this.next(this.parseInf):this.char===CHAR_n?this.next(this.parseNan):this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}parseNumberIntegerStart(){return this.char===CHAR_0?(this.consume(),this.next(this.parseNumberIntegerExponentOrDecimal)):this.goto(this.parseNumberInteger)}parseNumberIntegerExponentOrDecimal(){return this.char===CHAR_PERIOD?(this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat)):this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.returnNow(Integer(this.state.buf))}parseNumberInteger(){if(!isDigit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnder);if(this.char===CHAR_E||this.char===CHAR_e)return this.consume(),this.next(this.parseNumberExponentSign);if(this.char===CHAR_PERIOD)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);{const e=Integer(this.state.buf);if(e.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(e)}}this.consume()}parseNoUnder(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD||this.char===CHAR_E||this.char===CHAR_e)throw this.error(new TomlError("Unexpected character, expected digit"));if(this.atEndOfWord())throw this.error(new TomlError("Incomplete number"));return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD)throw this.error(new TomlError("Unexpected character, expected digit"));if(this.atEndOfWord())throw this.error(new TomlError("Incomplete number"));return this.returnNow()}parseNumberFloat(){return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder,this.parseNumberFloat):isDigit(this.char)?void this.consume():this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.returnNow(Float(this.state.buf))}parseNumberExponentSign(){if(isDigit(this.char))return this.goto(this.parseNumberExponent);if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS)throw this.error(new TomlError("Unexpected character, expected -, + or digit"));this.consume(),this.call(this.parseNoUnder,this.parseNumberExponent)}parseNumberExponent(){if(!isDigit(this.char))return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder):this.returnNow(Float(this.state.buf));this.consume()}parseNumberOrDateTime(){return this.char===CHAR_0?(this.consume(),this.next(this.parseNumberBaseOrDateTime)):this.goto(this.parseNumberOrDateTimeOnly)}parseNumberOrDateTimeOnly(){return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder,this.parseNumberInteger):isDigit(this.char)?(this.consume(),void(this.state.buf.length>4&&this.next(this.parseNumberInteger))):this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.char===CHAR_PERIOD?(this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat)):this.char===CHAR_HYPHEN?this.goto(this.parseDateTime):this.char===CHAR_COLON?this.goto(this.parseOnlyTimeHour):this.returnNow(Integer(this.state.buf))}parseDateTimeOnly(){if(this.state.buf.length<4){if(isDigit(this.char))return this.consume();if(this.char===CHAR_COLON)return this.goto(this.parseOnlyTimeHour);throw this.error(new TomlError("Expected digit while parsing year part of a date"))}if(this.char===CHAR_HYPHEN)return this.goto(this.parseDateTime);throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date"))}parseNumberBaseOrDateTime(){return this.char===CHAR_b?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin)):this.char===CHAR_o?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct)):this.char===CHAR_x?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex)):this.char===CHAR_PERIOD?this.goto(this.parseNumberInteger):isDigit(this.char)?this.goto(this.parseDateTimeOnly):this.returnNow(Integer(this.state.buf))}parseIntegerHex(){if(!isHexit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const e=Integer(this.state.buf);if(e.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(e)}}this.consume()}parseIntegerOct(){if(!isOctit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const e=Integer(this.state.buf);if(e.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(e)}}this.consume()}parseIntegerBin(){if(!isBit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const e=Integer(this.state.buf);if(e.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(e)}}this.consume()}parseDateTime(){if(this.state.buf.length<4)throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===CHAR_HYPHEN){if(this.state.buf.length<2)throw this.error(new TomlError("Months less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseDateDay)}if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseDateDay(){if(this.char===CHAR_T||this.char===CHAR_SP){if(this.state.buf.length<2)throw this.error(new TomlError("Days less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseStartTimeHour)}if(this.atEndOfWord())return this.returnNow(createDate(this.state.result+"-"+this.state.buf));if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseStartTimeHour(){return this.atEndOfWord()?this.returnNow(createDate(this.state.result)):this.goto(this.parseTimeHour)}parseTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2)throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"));return this.state.result+="T"+this.state.buf,this.state.buf="",this.next(this.parseTimeMin)}if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseTimeMin(){if(!(this.state.buf.length<2&&isDigit(this.char))){if(2===this.state.buf.length&&this.char===CHAR_COLON)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeSec);throw this.error(new TomlError("Incomplete datetime"))}this.consume()}parseTimeSec(){if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));if(this.consume(),2===this.state.buf.length)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeZoneOrFraction)}parseOnlyTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2)throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeMin)}throw this.error(new TomlError("Incomplete time"))}parseOnlyTimeMin(){if(!(this.state.buf.length<2&&isDigit(this.char))){if(2===this.state.buf.length&&this.char===CHAR_COLON)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeSec);throw this.error(new TomlError("Incomplete time"))}this.consume()}parseOnlyTimeSec(){if(!isDigit(this.char))throw this.error(new TomlError("Incomplete time"));if(this.consume(),2===this.state.buf.length)return this.next(this.parseOnlyTimeFractionMaybe)}parseOnlyTimeFractionMaybe(){if(this.state.result+=":"+this.state.buf,this.char!==CHAR_PERIOD)return this.return(createTime(this.state.result));this.state.buf="",this.next(this.parseOnlyTimeFraction)}parseOnlyTimeFraction(){if(!isDigit(this.char)){if(this.atEndOfWord()){if(0===this.state.buf.length)throw this.error(new TomlError("Expected digit in milliseconds"));return this.returnNow(createTime(this.state.result+"."+this.state.buf))}throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume()}parseTimeZoneOrFraction(){if(this.char===CHAR_PERIOD)this.consume(),this.next(this.parseDateTimeFraction);else{if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS){if(this.char===CHAR_Z)return this.consume(),this.return(createDateTime(this.state.result+this.state.buf));if(this.atEndOfWord())return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf));throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume(),this.next(this.parseTimeZoneHour)}}parseDateTimeFraction(){if(isDigit(this.char))this.consume();else{if(1===this.state.buf.length)throw this.error(new TomlError("Expected digit in milliseconds"));if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS){if(this.char===CHAR_Z)return this.consume(),this.return(createDateTime(this.state.result+this.state.buf));if(this.atEndOfWord())return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf));throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume(),this.next(this.parseTimeZoneHour)}}parseTimeZoneHour(){if(!isDigit(this.char))throw this.error(new TomlError("Unexpected character in datetime, expected digit"));if(this.consume(),/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}parseTimeZoneSep(){if(this.char!==CHAR_COLON)throw this.error(new TomlError("Unexpected character in datetime, expected colon"));this.consume(),this.next(this.parseTimeZoneMin)}parseTimeZoneMin(){if(!isDigit(this.char))throw this.error(new TomlError("Unexpected character in datetime, expected digit"));if(this.consume(),/\d\d$/.test(this.state.buf))return this.return(createDateTime(this.state.result+this.state.buf))}parseBoolean(){return this.char===CHAR_t?(this.consume(),this.next(this.parseTrue_r)):this.char===CHAR_f?(this.consume(),this.next(this.parseFalse_a)):void 0}parseTrue_r(){if(this.char===CHAR_r)return this.consume(),this.next(this.parseTrue_u);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseTrue_u(){if(this.char===CHAR_u)return this.consume(),this.next(this.parseTrue_e);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseTrue_e(){if(this.char===CHAR_e)return this.return(!0);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_a(){if(this.char===CHAR_a)return this.consume(),this.next(this.parseFalse_l);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_l(){if(this.char===CHAR_l)return this.consume(),this.next(this.parseFalse_s);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_s(){if(this.char===CHAR_s)return this.consume(),this.next(this.parseFalse_e);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_e(){if(this.char===CHAR_e)return this.return(!1);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseInlineList(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J)return null;if(this.char===e.END)throw this.error(new TomlError("Unterminated inline array"));return this.char===CHAR_NUM?this.call(this.parseComment):this.char===CHAR_RSQB?this.return(this.state.resultArr||InlineList()):this.callNow(this.parseValue,this.recordInlineListValue)}recordInlineListValue(e){if(this.state.resultArr){const t=this.state.resultArr[_contentType],n=tomlType(e);if(t!==n)throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${t} and ${n}`))}else this.state.resultArr=InlineList(tomlType(e));return isFloat(e)||isInteger(e)?this.state.resultArr.push(e.valueOf()):this.state.resultArr.push(e),this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J)return null;if(this.char===CHAR_NUM)return this.call(this.parseComment);if(this.char===CHAR_COMMA)return this.next(this.parseInlineList);if(this.char===CHAR_RSQB)return this.goto(this.parseInlineList);throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}parseInlineTable(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M)throw this.error(new TomlError("Unterminated inline array"));return this.char===CHAR_RCUB?this.return(this.state.resultTable||InlineTable()):(this.state.resultTable||(this.state.resultTable=InlineTable()),this.callNow(this.parseAssign,this.recordInlineTableValue))}recordInlineTableValue(e){let t=this.state.resultTable,n=e.key.pop();for(let n of e.key){if(hasKey(t,n)&&(!isTable(t[n])||t[n][_declared]))throw this.error(new TomlError("Can't redefine existing key"));t=t[n]=t[n]||Table()}if(hasKey(t,n))throw this.error(new TomlError("Can't redefine existing key"));return isInteger(e.value)||isFloat(e.value)?t[n]=e.value.valueOf():t[n]=e.value,this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M)throw this.error(new TomlError("Unterminated inline array"));if(this.char===CHAR_COMMA)return this.next(this.parseInlineTable);if(this.char===CHAR_RCUB)return this.goto(this.parseInlineTable);throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}}},3956:function(e){"use strict";e.exports=function(e,t){if(null==e.pos||null==e.line)return e;let n=e.message;if(n+=` at row ${e.line+1}, col ${e.col+1}, pos ${e.pos}:\n`,t&&t.split){const r=t.split(/\n/),o=String(Math.min(r.length,e.line+3)).length;let i=" ";for(;i.length "+r[t]+"\n",n+=i+" ";for(let t=0;t(0,r.Y)("button",{type:"button",ref:n,css:{border:"none",padding:0,background:"none",color:"inherit",":not([disabled])":{cursor:"pointer"}},...t,children:e}))),s=o.forwardRef((({kind:e="normal",extraCss:t,children:n,...o},i)=>{const a=S(),{isHighContrast:s}=y();return(0,r.Y)("button",{ref:i,type:"button",css:l(a,e,s,t),...o,children:n})})),l=(e,t,n,r={})=>{const o=C(t,{normal:()=>({border:`1px solid ${e.colors.neutral40}`,color:e.colors.neutral90,"&:hover, &:focus-visible":{border:`1px solid ${e.colors.neutral60}`,backgroundColor:e.colors.neutral15}}),danger:()=>({border:`1px solid ${e.colors.danger4}`,color:e.colors.danger4,fontWeight:n?"bold":"inherit","&:hover, &:focus-visible":{border:`1px solid ${e.colors.danger5}`,backgroundColor:e.colors.danger4,color:e.colors.danger4BwInverted}}),"call-to-action":()=>({border:`1px solid ${e.colors.happy8}`,color:e.colors.happy7BwInverted,backgroundColor:e.colors.happy7,"&:hover, &:focus-visible":{border:`1px solid ${e.colors.happy9}`,backgroundColor:e.colors.happy8,color:e.colors.happy8BwInverted}})});return{borderRadius:8,display:"inline-flex",alignItems:"center",padding:"7px 14px",gap:12,whiteSpace:"nowrap",backgroundColor:e.colors.neutral10,transition:"background-color 0.15s, border-color 0.15s",textDecoration:"none","& > svg":{fontSize:20},"&:disabled":{border:`1px solid ${e.colors.neutral25}`,color:e.colors.neutral40},"&:not([disabled])":{cursor:"pointer",...o,...lt(e,{offset:-1})},...r}};var u=n(5178);const c=({kind:e,iconPos:t="left",children:n,...o})=>{const i=S();return(0,r.FD)("div",{css:{display:"inline-flex",flexDirection:"left"===t?"row":"column",borderRadius:4,padding:"8px 16px",gap:16,alignItems:"center","& > svg":{fontSize:24,minWidth:24},...C(e,{error:()=>({backgroundColor:i.colors.danger0,border:`1.5px solid ${i.colors.danger0}`,color:i.colors.danger0BwInverted}),info:()=>({backgroundColor:i.colors.neutral10})})},...o,children:[C(e,{error:()=>(0,r.Y)(u.KOO,{}),info:()=>(0,r.Y)(u.MO8,{css:{color:i.colors.neutral60}})}),(0,r.Y)("div",{children:n})]})},d=e=>p("`assertNever` call was reached, that's a soundness hole in the typesystem :(");class f extends Error{constructor(e){super(`${e} (this is a bug in this application)`),this.name="Bug"}}const p=e=>{throw new f(e)},h=e=>{const t="reached unreachable code";throw new f(void 0===e?t:`${t}: ${e}`)},g=e=>null==e?p("value was unexpectedly nullish"):e,m=["light","dark","light-high-contrast","dark-high-contrast"],v="colorScheme",b=o.createContext(null),y=()=>(0,o.useContext)(b)??p("missing color scheme context provider"),w=({allowedSchemes:e=m,children:t})=>{if(e.length<2)return p("`allowedSchemes` for ColorSchemeProvider need to have at least 2 schemes");if(!e.includes("light")&&!e.includes("dark"))return p("`allowedSchemes` must contain either 'light' or 'dark'");const n=t=>!!t&&e.includes(t),i=document.documentElement.dataset.colorScheme,a=n(i)?i:"light",[s,l]=(0,o.useState)(a),u=window.localStorage.getItem(v),[c,d]=(0,o.useState)(!n(u)),f={scheme:s,isAuto:c,isHighContrast:s.includes("high-contrast"),update:t=>{if("auto"!==t&&!n(t))return p("Passed forbidden color scheme to `update`");window.localStorage.setItem(v,t),d("auto"===t);const r="auto"!==t?t:(()=>{const t=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",n=window.matchMedia("(prefers-contrast: more)").matches?"-high-contrast":"",r=`${t}${n}`;if(e.includes(r))return r;const o=`${"light"===t?"dark":"light"}${n}`;return e.includes(o)?o:t})();l(r),document.documentElement.dataset.colorScheme=r}};return(0,r.Y)(b.Provider,{value:f,children:t})},k={colors:{neutral00:"var(--color-neutral00)",neutral05:"var(--color-neutral05)",neutral10:"var(--color-neutral10)",neutral15:"var(--color-neutral15)",neutral20:"var(--color-neutral20)",neutral25:"var(--color-neutral25)",neutral30:"var(--color-neutral30)",neutral40:"var(--color-neutral40)",neutral50:"var(--color-neutral50)",neutral60:"var(--color-neutral60)",neutral70:"var(--color-neutral70)",neutral80:"var(--color-neutral80)",neutral90:"var(--color-neutral90)",danger0:"var(--color-danger0)",danger0BwInverted:"var(--color-danger0-bw-inverted)",danger1:"var(--color-danger1)",danger1BwInverted:"var(--color-danger1-bw-inverted)",danger2:"var(--color-danger2)",danger2BwInverted:"var(--color-danger2-bw-inverted)",danger4:"var(--color-danger4)",danger4BwInverted:"var(--color-danger4-bw-inverted)",danger5:"var(--color-danger5)",danger5BwInverted:"var(--color-danger5-bw-inverted)",happy4:"var(--color-accent4)",happy4BwInverted:"var(--color-accent4-bw-inverted)",happy5:"var(--color-accent5)",happy5BwInverted:"var(--color-accent5-bw-inverted)",happy6:"var(--color-accent6)",happy6BwInverted:"var(--color-accent6-bw-inverted)",happy7:"var(--color-accent7)",happy7BwInverted:"var(--color-accent7-bw-inverted)",happy8:"var(--color-accent8)",happy8BwInverted:"var(--color-accent8-bw-inverted)",happy9:"var(--color-accent9)",happy9BwInverted:"var(--color-accent9-bw-inverted)",accent9:"var(--color-accent9)",accent9BwInverted:"var(--color-accent9-bw-inverted)",accent8:"var(--color-accent8)",accent8BwInverted:"var(--color-accent8-bw-inverted)",accent7:"var(--color-accent7)",accent7BwInverted:"var(--color-accent7-bw-inverted)",accent6:"var(--color-accent6)",accent6BwInverted:"var(--color-accent6-bw-inverted)",accent5:"var(--color-accent5)",accent5BwInverted:"var(--color-accent5-bw-inverted)",accent4:"var(--color-accent4)",accent4BwInverted:"var(--color-accent4-bw-inverted)",focus:"var(--color-accent8)"},breakpoints:{small:450,medium:650,large:900}},x=o.createContext(k),S=()=>(0,o.useContext)(x);function C(e,t,n){return void 0===n?t[e]():(t[e]??n)()}const E=e=>`@media (max-width: ${e}px)`,_=e=>`@media not all and (max-width: ${e}px)`,T=(e,t)=>{(0,o.useEffect)((()=>{const n=n=>{const r=n.target;e.current&&r instanceof Element&&!e.current.contains(r)&&t()};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)}))},R=e=>e.current??p("ref unexpectedly unbound"),O=((0,o.forwardRef)((({title:e,buttonContent:t,onSubmit:n,text:i,children:a},l)=>{const u=e??i.areYouSure,[c,d]=(0,o.useState)(!1),[f,p]=(0,o.useState)(),h=(0,o.useRef)(null);return(0,o.useImperativeHandle)(l,(()=>({open:()=>{d(!1),p(void 0),R(h).open()},done:()=>{R(h).close?.()},reportError:e=>{d(!1),p(e)}}))),(0,r.FD)(st,{title:u,closable:!c,ref:h,text:i,children:[a,(0,r.FD)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),d(!0),p(void 0),n?.()},css:{marginTop:32},children:[(0,r.FD)("div",{css:{display:"flex",gap:12,justifyContent:"center",flexWrap:"wrap"},children:[(0,r.Y)(s,{disabled:c,onClick:()=>R(h).close?.(),children:i.cancel}),(0,r.Y)(s,{disabled:c,type:"submit",kind:"danger",css:{whiteSpace:"normal"},children:t})]}),c&&(0,r.Y)("div",{css:{marginTop:16},children:(0,r.Y)(ot,{size:20})})]}),L(f)]})})),({children:e})=>(0,r.Y)("div",{css:{marginTop:8},children:(0,r.Y)(c,{kind:"error",children:e})})),L=e=>null==e?null:(0,r.Y)(O,{children:e});var P=n(6635),A=n(7315),N=n(961),I="undefined"!=typeof document?o.useLayoutEffect:o.useEffect;function D(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;0!=r--;)if(!D(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(!("_owner"===n&&e.$$typeof||D(e[n],t[n])))return!1}return!0}return e!=e&&t!=t}function z(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function M(e,t){const n=z(e);return Math.round(t*n)/n}function j(e){const t=o.useRef(e);return I((()=>{t.current=e})),t}const U=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?(0,A.UE)({element:n.current,padding:r}).fn(t):{}:n?(0,A.UE)({element:n,padding:r}).fn(t):{};var o}}),F=(e,t)=>({...(0,A.BN)(e),options:[e,t]}),H=(e,t)=>({...(0,A.UU)(e),options:[e,t]}),$=(e,t)=>({...U(e),options:[e,t]});var B="undefined"!=typeof document?o.useLayoutEffect:o.useEffect;let V=!1,q=0;const W=()=>"floating-ui-"+q++,K=i["useId".toString()]||function(){const[e,t]=o.useState((()=>V?W():void 0));return B((()=>{null==e&&t(W())}),[]),o.useEffect((()=>{V||(V=!0)}),[]),e};const Y=o.createContext(null),Q=o.createContext(null),G=()=>{var e;return(null==(e=o.useContext(Y))?void 0:e.id)||null},J=()=>o.useContext(Q);function Z(e){return(null==e?void 0:e.ownerDocument)||document}function X(){const e=navigator.userAgentData;return null!=e&&e.platform?e.platform:navigator.platform}function ee(e){return Z(e).defaultView||window}function te(e){return!!e&&(e instanceof Element||e instanceof ee(e).Element)}function ne(e){return!!e&&(e instanceof HTMLElement||e instanceof ee(e).HTMLElement)}function re(e){if(0===e.mozInputSource&&e.isTrusted)return!0;const t=/Android/i;return(t.test(X())||t.test(function(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map((e=>{let{brand:t,version:n}=e;return t+"/"+n})).join(" "):navigator.userAgent}()))&&e.pointerType?"click"===e.type&&1===e.buttons:0===e.detail&&!e.pointerType}function oe(e){return 0===e.width&&0===e.height||1===e.width&&1===e.height&&0===e.pressure&&0===e.detail&&"mouse"!==e.pointerType||e.width<1&&e.height<1&&0===e.pressure&&0===e.detail}function ie(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function ae(e,t){if(!e||!t)return!1;const n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&(r=n,"undefined"!=typeof ShadowRoot&&(r instanceof ee(r).ShadowRoot||r instanceof ShadowRoot))){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}var r;return!1}function se(e){return"data-floating-ui-"+e}function le(e){const t=(0,o.useRef)(e);return B((()=>{t.current=e})),t}const ue=se("safe-polygon");function ce(e,t,n){return n&&!ie(n)?0:"number"==typeof e?e:null==e?void 0:e[t]}function de(e){let t=e.activeElement;for(;null!=(null==(n=t)||null==(r=n.shadowRoot)?void 0:r.activeElement);){var n,r;t=t.shadowRoot.activeElement}return t}let fe=0;function pe(e,t){void 0===t&&(t={});const{preventScroll:n=!1,cancelPrevious:r=!0,sync:o=!1}=t;r&&cancelAnimationFrame(fe);const i=()=>null==e?void 0:e.focus({preventScroll:n});o?i():fe=requestAnimationFrame(i)}function he(e,t){let n=e.filter((e=>{var n;return e.parentId===t&&(null==(n=e.context)?void 0:n.open)})),r=n;for(;r.length;)r=e.filter((e=>{var t;return null==(t=r)?void 0:t.some((t=>{var n;return e.parentId===t.id&&(null==(n=e.context)?void 0:n.open)}))})),n=n.concat(r);return n}function ge(e){return"composedPath"in e?e.composedPath()[0]:e.target}const me="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function ve(e){e.preventDefault(),e.stopPropagation()}function be(e){return ne(e.target)&&"BUTTON"===e.target.tagName}function ye(e){return function(e){return ne(e)&&e.matches(me)}(e)}const we=i["useInsertionEffect".toString()]||(e=>e());function ke(e){const t=o.useRef((()=>{}));return we((()=>{t.current=e})),o.useCallback((function(){for(var e=arguments.length,n=new Array(e),r=0;r{e!==S.current&&(S.current=e,m(e))}),[]),w=o.useCallback((e=>{e!==C.current&&(C.current=e,b(e))}),[]),k=a||g,x=s||v,S=o.useRef(null),C=o.useRef(null),E=o.useRef(d),_=null!=u,T=j(u),R=j(i),O=o.useCallback((()=>{if(!S.current||!C.current)return;const e={placement:t,strategy:n,middleware:p};R.current&&(e.platform=R.current),(0,A.rD)(S.current,C.current,e).then((e=>{const t={...e,isPositioned:!0};L.current&&!D(E.current,t)&&(E.current=t,N.flushSync((()=>{f(t)})))}))}),[p,t,n,R]);I((()=>{!1===c&&E.current.isPositioned&&(E.current.isPositioned=!1,f((e=>({...e,isPositioned:!1}))))}),[c]);const L=o.useRef(!1);I((()=>(L.current=!0,()=>{L.current=!1})),[]),I((()=>{if(k&&(S.current=k),x&&(C.current=x),k&&x){if(T.current)return T.current(k,x,O);O()}}),[k,x,O,T,_]);const P=o.useMemo((()=>({reference:S,floating:C,setReference:y,setFloating:w})),[y,w]),U=o.useMemo((()=>({reference:k,floating:x})),[k,x]),F=o.useMemo((()=>{const e={position:n,left:0,top:0};if(!U.floating)return e;const t=M(U.floating,d.x),r=M(U.floating,d.y);return l?{...e,transform:"translate("+t+"px, "+r+"px)",...z(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,l,U.floating,d.x,d.y]);return o.useMemo((()=>({...d,update:O,refs:P,elements:U,floatingStyles:F})),[d,O,P,U,F])}(e),c=J(),d=ke(((e,t)=>{e&&(p.current.openEvent=t),null==r||r(e,t)})),f=o.useRef(null),p=o.useRef({}),h=o.useState((()=>function(){const e=new Map;return{emit(t,n){var r;null==(r=e.get(t))||r.forEach((e=>e(n)))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,(null==(r=e.get(t))?void 0:r.filter((e=>e!==n)))||[])}}}()))[0],g=K(),m=o.useCallback((e=>{const t=te(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),contextElement:e}:e;u.refs.setReference(t)}),[u.refs]),v=o.useCallback((e=>{(te(e)||null===e)&&(f.current=e,s(e)),(te(u.refs.reference.current)||null===u.refs.reference.current||null!==e&&!te(e))&&u.refs.setReference(e)}),[u.refs]),b=o.useMemo((()=>({...u.refs,setReference:v,setPositionReference:m,domReference:f})),[u.refs,v,m]),y=o.useMemo((()=>({...u.elements,domReference:l})),[u.elements,l]),w=o.useMemo((()=>({...u,refs:b,elements:y,dataRef:p,nodeId:i,floatingId:g,events:h,open:n,onOpenChange:d})),[u,i,g,h,n,d,b,y]);return B((()=>{const e=null==c?void 0:c.nodesRef.current.find((e=>e.id===i));e&&(e.context=w)})),o.useMemo((()=>({...u,context:w,refs:b,elements:y})),[u,b,y,w])}function _e(e,t,n){const r=new Map;return{..."floating"===n&&{tabIndex:-1},...e,...t.map((e=>e?e[n]:null)).concat(e).reduce(((e,t)=>t?(Object.entries(t).forEach((t=>{let[n,o]=t;var i;0===n.indexOf("on")?(r.has(n)||r.set(n,[]),"function"==typeof o&&(null==(i=r.get(n))||i.push(o),e[n]=function(){for(var e,t=arguments.length,o=new Array(t),i=0;ie(...o))).find((e=>void 0!==e))})):e[n]=o})),e):e),{})}}let Te=!1;const Re="ArrowUp",Oe="ArrowDown",Le="ArrowLeft",Pe="ArrowRight";function Ae(e,t,n){return Math.floor(e/t)!==n}function Ne(e,t){return t<0||t>=e.current.length}function Ie(e,t){let{startingIndex:n=-1,decrement:r=!1,disabledIndices:o,amount:i=1}=void 0===t?{}:t;const a=e.current;let s=n;do{var l,u;s+=r?-i:i}while(s>=0&&s<=a.length-1&&(o?o.includes(s):null==a[s]||(null==(l=a[s])?void 0:l.hasAttribute("disabled"))||"true"===(null==(u=a[s])?void 0:u.getAttribute("aria-disabled"))));return s}function De(e,t,n){switch(e){case"vertical":return t;case"horizontal":return n;default:return t||n}}function ze(e,t){return De(t,e===Re||e===Oe,e===Le||e===Pe)}function Me(e,t,n){return De(t,e===Oe,n?e===Le:e===Pe)||"Enter"===e||" "==e||""===e}function je(e,t){return Ie(e,{disabledIndices:t})}function Ue(e,t){return Ie(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function Fe(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let e=0,a=i-1;e=r!=u>=r&&n<=(l-i)*(r-s)/(u-s)+i&&(o=!o)}return o}function He(e){void 0===e&&(e={});const{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e;let o,i=!1,a=null,s=null,l=performance.now();const u=e=>{let{x:n,y:u,placement:c,elements:d,onClose:f,nodeId:p,tree:h}=e;return function(e){function g(){clearTimeout(o),f()}if(clearTimeout(o),!d.domReference||!d.floating||null==c||null==n||null==u)return;const{clientX:m,clientY:v}=e,b=[m,v],y=ge(e),w="mouseleave"===e.type,k=ae(d.floating,y),x=ae(d.domReference,y),S=d.domReference.getBoundingClientRect(),C=d.floating.getBoundingClientRect(),E=c.split("-")[0],_=n>C.right-C.width/2,T=u>C.bottom-C.height/2,R=function(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}(b,S),O=C.width>S.width,L=C.height>S.height,P=(O?S:C).left,A=(O?S:C).right,N=(L?S:C).top,I=(L?S:C).bottom;if(k&&(i=!0,!w))return;if(x&&(i=!1),x&&!w)return void(i=!0);if(w&&te(e.relatedTarget)&&ae(d.floating,e.relatedTarget))return;if(h&&he(h.nodesRef.current,p).some((e=>{let{context:t}=e;return null==t?void 0:t.open})))return;if("top"===E&&u>=S.bottom-1||"bottom"===E&&u<=S.top+1||"left"===E&&n>=S.right-1||"right"===E&&n<=S.left+1)return g();let D=[];switch(E){case"top":D=[[P,S.top+1],[P,C.bottom-1],[A,C.bottom-1],[A,S.top+1]];break;case"bottom":D=[[P,C.top+1],[P,S.bottom-1],[A,S.bottom-1],[A,C.top+1]];break;case"left":D=[[C.right-1,I],[C.right-1,N],[S.left+1,N],[S.left+1,I]];break;case"right":D=[[S.right-1,I],[S.right-1,N],[C.left+1,N],[C.left+1,I]]}if(!Fe([m,v],D)){if(i&&!R)return g();if(!w&&r){const t=function(e,t){const n=performance.now(),r=n-l;if(null===a||null===s||0===r)return a=e,s=t,l=n,null;const o=e-a,i=t-s,u=Math.sqrt(o*o+i*i);return a=e,s=t,l=n,u/r}(e.clientX,e.clientY);if(null!==t&&t<.1)return g()}Fe([m,v],function(e){let[n,r]=e;switch(E){case"top":return[[O?n+t/2:_?n+4*t:n-4*t,r+t+1],[O?n-t/2:_?n+4*t:n-4*t,r+t+1],[C.left,_||O?C.bottom-t:C.top],[C.right,_?O?C.bottom-t:C.top:C.bottom-t]];case"bottom":return[[O?n+t/2:_?n+4*t:n-4*t,r-t],[O?n-t/2:_?n+4*t:n-4*t,r-t],[C.left,_||O?C.top+t:C.bottom],[C.right,_?O?C.top+t:C.bottom:C.top+t]];case"left":{const e=[n+t+1,L?r+t/2:T?r+4*t:r-4*t],o=[n+t+1,L?r-t/2:T?r+4*t:r-4*t];return[[T||L?C.right-t:C.left,C.top],[T?L?C.right-t:C.left:C.right-t,C.bottom],e,o]}case"right":return[[n-t,L?r+t/2:T?r+4*t:r-4*t],[n-t,L?r-t/2:T?r+4*t:r-4*t],[T||L?C.left+t:C.right,C.top],[T?L?C.left+t:C.right:C.left+t,C.bottom]]}}([n,u]))?!i&&r&&(o=window.setTimeout(g,40)):g()}}};return u.__options={blockPointerEvents:n},u}const $e=o.createContext(null),Be=()=>{const e=o.useContext($e);return null==e?p("Missing context"):e},Ve=()=>{const e=Be();return t=>({tabIndex:e.activeIndex===t?0:-1,ref:n=>{null!==e.refs.listRef.current&&(e.refs.listRef.current[t]=n)},...e.getItemProps()})},qe=o.forwardRef((({children:e,placement:t,arrowSize:n=8,distance:i=4,borderRadius:a=4,viewPortMargin:s=8,ariaRole:l="tooltip",onClose:u=(()=>{}),className:c,...d},f)=>{const[p,g]=(0,o.useState)(null),[m,v]=(0,o.useState)(!1),b="open"in d?d.open:m,y=(0,o.useRef)(null),w=(0,o.useRef)(null),k=(0,o.useRef)([]);(0,o.useImperativeHandle)(f,(()=>Object.assign(w.current??h(),{open:()=>v(!0),close:()=>v(!1)})));const{x:x,y:S,placement:C,refs:E,middlewareData:_,context:T}=Ee({open:b,onOpenChange:e=>{"open"in d||v(e),e||u()},placement:t,whileElementsMounted:A.ll,middleware:[(R=n+i,{...(0,A.cY)(R),options:[R,undefined]}),H(),F({padding:s}),$({element:y,padding:1.6*a})]});var R;const O=function(e,t){void 0===t&&(t={});const{open:n,onOpenChange:r,dataRef:i,events:a,elements:{domReference:s,floating:l},refs:u}=e,{enabled:c=!0,delay:d=0,handleClose:f=null,mouseOnly:p=!1,restMs:h=0,move:g=!0}=t,m=J(),v=G(),b=le(f),y=le(d),w=o.useRef(),k=o.useRef(),x=o.useRef(),S=o.useRef(),C=o.useRef(!0),E=o.useRef(!1),_=o.useRef((()=>{})),T=o.useCallback((()=>{var e;const t=null==(e=i.current.openEvent)?void 0:e.type;return(null==t?void 0:t.includes("mouse"))&&"mousedown"!==t}),[i]);o.useEffect((()=>{if(c)return a.on("dismiss",e),()=>{a.off("dismiss",e)};function e(){clearTimeout(k.current),clearTimeout(S.current),C.current=!0}}),[c,a]),o.useEffect((()=>{if(!c||!b.current||!n)return;function e(e){T()&&r(!1,e)}const t=Z(l).documentElement;return t.addEventListener("mouseleave",e),()=>{t.removeEventListener("mouseleave",e)}}),[l,n,r,c,b,i,T]);const R=o.useCallback((function(e,t){void 0===t&&(t=!0);const n=ce(y.current,"close",w.current);n&&!x.current?(clearTimeout(k.current),k.current=setTimeout((()=>r(!1,e)),n)):t&&(clearTimeout(k.current),r(!1,e))}),[y,r]),O=o.useCallback((()=>{_.current(),x.current=void 0}),[]),L=o.useCallback((()=>{if(E.current){const e=Z(u.floating.current).body;e.style.pointerEvents="",e.removeAttribute(ue),E.current=!1}}),[u]);return o.useEffect((()=>{if(c&&te(s)){const e=s;return n&&e.addEventListener("mouseleave",u),null==l||l.addEventListener("mouseleave",u),g&&e.addEventListener("mousemove",o,{once:!0}),e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",a),()=>{n&&e.removeEventListener("mouseleave",u),null==l||l.removeEventListener("mouseleave",u),g&&e.removeEventListener("mousemove",o),e.removeEventListener("mouseenter",o),e.removeEventListener("mouseleave",a)}}function t(){return!!i.current.openEvent&&["click","mousedown"].includes(i.current.openEvent.type)}function o(e){if(clearTimeout(k.current),C.current=!1,p&&!ie(w.current)||h>0&&0===ce(y.current,"open"))return;const t=ce(y.current,"open",w.current);t?k.current=setTimeout((()=>{r(!0,e)}),t):r(!0,e)}function a(r){if(t())return;_.current();const o=Z(l);if(clearTimeout(S.current),b.current){n||clearTimeout(k.current),x.current=b.current({...e,tree:m,x:r.clientX,y:r.clientY,onClose(){L(),O(),R(r)}});const t=x.current;return o.addEventListener("mousemove",t),void(_.current=()=>{o.removeEventListener("mousemove",t)})}("touch"!==w.current||!ae(l,r.relatedTarget))&&R(r)}function u(n){t()||null==b.current||b.current({...e,tree:m,x:n.clientX,y:n.clientY,onClose(){L(),O(),R(n)}})(n)}}),[s,l,c,e,p,h,g,R,O,L,r,n,m,y,b,i]),B((()=>{var e;if(c&&n&&null!=(e=b.current)&&e.__options.blockPointerEvents&&T()){const e=Z(l).body;if(e.setAttribute(ue,""),e.style.pointerEvents="none",E.current=!0,te(s)&&l){var t,r;const e=s,n=null==m||null==(t=m.nodesRef.current.find((e=>e.id===v)))||null==(r=t.context)?void 0:r.elements.floating;return n&&(n.style.pointerEvents=""),e.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{e.style.pointerEvents="",l.style.pointerEvents=""}}}}),[c,n,v,l,s,m,b,i,T]),B((()=>{n||(w.current=void 0,O(),L())}),[n,O,L]),o.useEffect((()=>()=>{O(),clearTimeout(k.current),clearTimeout(S.current),L()}),[c,O,L]),o.useMemo((()=>{if(!c)return{};function e(e){w.current=e.pointerType}return{reference:{onPointerDown:e,onPointerEnter:e,onMouseMove(e){n||0===h||(clearTimeout(S.current),S.current=setTimeout((()=>{C.current||r(!0,e.nativeEvent)}),h))}},floating:{onMouseEnter(){clearTimeout(k.current)},onMouseLeave(e){a.emit("dismiss",{type:"mouseLeave",data:{returnFocus:!1}}),R(e.nativeEvent,!1)}}}}),[a,c,h,n,r,R])}(T,{enabled:"trigger"in d&&"hover"===d.trigger,handleClose:He(),move:!1}),L=function(e,t){void 0===t&&(t={});const{open:n,onOpenChange:r,dataRef:i,events:a,refs:s,elements:{floating:l,domReference:u}}=e,{enabled:c=!0,keyboardOnly:d=!0}=t,f=o.useRef(""),p=o.useRef(!1),h=o.useRef();return o.useEffect((()=>{if(!c)return;const e=Z(l).defaultView||window;function t(){!n&&ne(u)&&u===de(Z(u))&&(p.current=!0)}return e.addEventListener("blur",t),()=>{e.removeEventListener("blur",t)}}),[l,u,n,c]),o.useEffect((()=>{if(c)return a.on("dismiss",e),()=>{a.off("dismiss",e)};function e(e){"referencePress"!==e.type&&"escapeKey"!==e.type||(p.current=!0)}}),[a,c]),o.useEffect((()=>()=>{clearTimeout(h.current)}),[]),o.useMemo((()=>c?{reference:{onPointerDown(e){let{pointerType:t}=e;f.current=t,p.current=!(!t||!d)},onMouseLeave(){p.current=!1},onFocus(e){var t;p.current||"focus"===e.type&&"mousedown"===(null==(t=i.current.openEvent)?void 0:t.type)&&xe(i.current.openEvent,u)||r(!0,e.nativeEvent)},onBlur(e){p.current=!1;const t=e.relatedTarget,n=te(t)&&t.hasAttribute(se("focus-guard"))&&"outside"===t.getAttribute("data-type");h.current=setTimeout((()=>{ae(s.floating.current,t)||ae(u,t)||n||r(!1,e.nativeEvent)}))}}}:{}),[c,d,u,s,i,r])}(T,{enabled:"trigger"in d&&"hover"===d.trigger}),N=function(e,t){void 0===t&&(t={});const{open:n,onOpenChange:r,dataRef:i,elements:{domReference:a}}=e,{enabled:s=!0,event:l="click",toggle:u=!0,ignoreMouse:c=!1,keyboardHandlers:d=!0}=t,f=o.useRef(),p=o.useRef(!1);return o.useMemo((()=>s?{reference:{onPointerDown(e){f.current=e.pointerType},onMouseDown(e){0===e.button&&(ie(f.current,!0)&&c||"click"!==l&&(!n||!u||i.current.openEvent&&"mousedown"!==i.current.openEvent.type?(e.preventDefault(),r(!0,e.nativeEvent)):r(!1,e.nativeEvent)))},onClick(e){"mousedown"===l&&f.current?f.current=void 0:ie(f.current,!0)&&c||(!n||!u||i.current.openEvent&&"click"!==i.current.openEvent.type?r(!0,e.nativeEvent):r(!1,e.nativeEvent))},onKeyDown(e){f.current=void 0,e.defaultPrevented||!d||be(e)||(" "!==e.key||ye(a)||(e.preventDefault(),p.current=!0),"Enter"===e.key&&r(!n||!u,e.nativeEvent))},onKeyUp(e){e.defaultPrevented||!d||be(e)||ye(a)||" "===e.key&&p.current&&(p.current=!1,r(!n||!u,e.nativeEvent))}}}:{}),[s,i,l,c,d,a,u,n,r])}(T,{enabled:"trigger"in d&&"click"===d.trigger}),I=function(e,t){void 0===t&&(t={});const{open:n,onOpenChange:r,events:i,nodeId:a,elements:{reference:s,domReference:l,floating:u},dataRef:c}=e,{enabled:d=!0,escapeKey:f=!0,outsidePress:p=!0,outsidePressEvent:h="pointerdown",referencePress:g=!1,referencePressEvent:m="pointerdown",ancestorScroll:v=!1,bubbles:b}=t,y=J(),w=null!=G(),k=ke("function"==typeof p?p:()=>!1),x="function"==typeof p?k:p,S=o.useRef(!1),{escapeKeyBubbles:C,outsidePressBubbles:E}=(e=>{var t,n;return{escapeKeyBubbles:"boolean"==typeof e?e:null!=(t=null==e?void 0:e.escapeKey)&&t,outsidePressBubbles:"boolean"==typeof e?e:null==(n=null==e?void 0:e.outsidePress)||n}})(b),_=ke((e=>{if(!n||!d||!f||"Escape"!==e.key)return;const t=y?he(y.nodesRef.current,a):[];if(!C&&(e.stopPropagation(),t.length>0)){let e=!0;if(t.forEach((t=>{var n;null==(n=t.context)||!n.open||t.context.dataRef.current.__escapeKeyBubbles||(e=!1)})),!e)return}i.emit("dismiss",{type:"escapeKey",data:{returnFocus:{preventScroll:!1}}}),r(!1,function(e){return"nativeEvent"in e}(e)?e.nativeEvent:e)})),T=ke((e=>{const t=S.current;if(S.current=!1,t)return;if("function"==typeof x&&!x(e))return;const n=ge(e);if(ne(n)&&u){const t=n.clientWidth>0&&n.scrollWidth>n.clientWidth,r=n.clientHeight>0&&n.scrollHeight>n.clientHeight;let o=r&&e.offsetX>n.clientWidth;if(r&&"rtl"===ee(u).getComputedStyle(n).direction&&(o=e.offsetX<=n.offsetWidth-n.clientWidth),o||t&&e.offsetY>n.clientHeight)return}const o=y&&he(y.nodesRef.current,a).some((t=>{var n;return xe(e,null==(n=t.context)?void 0:n.elements.floating)}));if(xe(e,u)||xe(e,l)||o)return;const s=y?he(y.nodesRef.current,a):[];if(s.length>0){let e=!0;if(s.forEach((t=>{var n;null==(n=t.context)||!n.open||t.context.dataRef.current.__outsidePressBubbles||(e=!1)})),!e)return}i.emit("dismiss",{type:"outsidePress",data:{returnFocus:w?{preventScroll:!0}:re(e)||oe(e)}}),r(!1,e)}));return o.useEffect((()=>{if(!n||!d)return;function e(e){r(!1,e)}c.current.__escapeKeyBubbles=C,c.current.__outsidePressBubbles=E;const t=Z(u);f&&t.addEventListener("keydown",_),x&&t.addEventListener(h,T);let o=[];return v&&(te(l)&&(o=(0,P.v9)(l)),te(u)&&(o=o.concat((0,P.v9)(u))),!te(s)&&s&&s.contextElement&&(o=o.concat((0,P.v9)(s.contextElement)))),o=o.filter((e=>{var n;return e!==(null==(n=t.defaultView)?void 0:n.visualViewport)})),o.forEach((t=>{t.addEventListener("scroll",e,{passive:!0})})),()=>{f&&t.removeEventListener("keydown",_),x&&t.removeEventListener(h,T),o.forEach((t=>{t.removeEventListener("scroll",e)}))}}),[c,u,l,s,f,x,h,n,r,v,d,C,E,_,T]),o.useEffect((()=>{S.current=!1}),[x,h]),o.useMemo((()=>d?{reference:{onKeyDown:_,[Se[m]]:e=>{g&&(i.emit("dismiss",{type:"referencePress",data:{returnFocus:!1}}),r(!1,e.nativeEvent))}},floating:{onKeyDown:_,[Ce[h]]:()=>{S.current=!0}}}:{}),[d,i,g,h,m,r,_])}(T,{referencePress:"tooltip"===l}),D=function(e,t){void 0===t&&(t={});const{open:n,floatingId:r}=e,{enabled:i=!0,role:a="dialog"}=t,s=K();return o.useMemo((()=>{const e={id:r,role:a};return i?"tooltip"===a?{reference:{"aria-describedby":n?r:void 0},floating:e}:{reference:{"aria-expanded":n?"true":"false","aria-haspopup":"alertdialog"===a?"dialog":a,"aria-controls":n?r:void 0,..."listbox"===a&&{role:"combobox"},..."menu"===a&&{id:s}},floating:{...e,..."menu"===a&&{"aria-labelledby":s}}}:{}}),[i,a,n,r,s])}(T,{role:l}),z=function(e,t){const{open:n,onOpenChange:r,refs:i,elements:{domReference:a,floating:s}}=e,{listRef:l,activeIndex:u,onNavigate:c=(()=>{}),enabled:d=!0,selectedIndex:f=null,allowEscape:p=!1,loop:h=!1,nested:g=!1,rtl:m=!1,virtual:v=!1,focusItemOnOpen:b="auto",focusItemOnHover:y=!0,openOnArrowKeyDown:w=!0,disabledIndices:k,orientation:x="vertical",cols:S=1,scrollItemIntoView:C=!0}=t,E=G(),_=J(),T=ke(c),R=o.useRef(b),O=o.useRef(null!=f?f:-1),L=o.useRef(null),P=o.useRef(!0),A=o.useRef(T),N=o.useRef(!!s),I=o.useRef(!1),D=o.useRef(!1),z=le(k),M=le(n),j=le(C),[U,F]=o.useState(),H=ke((function(e,t,n){void 0===n&&(n=!1);const r=e.current[t.current];r&&(v?F(r.id):pe(r,{preventScroll:!0,sync:!(!X().toLowerCase().startsWith("mac")||navigator.maxTouchPoints||!/apple/i.test(navigator.vendor))&&(Te||I.current)}),requestAnimationFrame((()=>{const e=j.current;e&&r&&(n||!P.current)&&(null==r.scrollIntoView||r.scrollIntoView("boolean"==typeof e?{block:"nearest",inline:"nearest"}:e))})))}));B((()=>{document.createElement("div").focus({get preventScroll(){return Te=!0,!1}})}),[]),B((()=>{d&&(n&&s?R.current&&null!=f&&(D.current=!0,T(f)):N.current&&(O.current=-1,A.current(null)))}),[d,n,s,f,T]),B((()=>{if(d&&n&&s)if(null==u){if(I.current=!1,null!=f)return;if(N.current&&(O.current=-1,H(l,O)),!N.current&&R.current&&(null!=L.current||!0===R.current&&null==L.current)){let e=0;const t=()=>{null==l.current[0]?(e<2&&(e?requestAnimationFrame:queueMicrotask)(t),e++):(O.current=null==L.current||Me(L.current,x,m)||g?je(l,z.current):Ue(l,z.current),L.current=null,T(O.current))};t()}}else Ne(l,u)||(O.current=u,H(l,O,D.current),D.current=!1)}),[d,n,s,u,f,g,l,x,m,T,H,z]),B((()=>{if(d&&N.current&&!s&&_){var e,t;const n=_.nodesRef.current,r=null==(e=n.find((e=>e.id===E)))||null==(t=e.context)?void 0:t.elements.floating,o=de(Z(s)),i=n.some((e=>e.context&&ae(e.context.elements.floating,o)));r&&!i&&r.focus({preventScroll:!0})}}),[d,s,_,E]),B((()=>{A.current=T,N.current=!!s})),B((()=>{n||(L.current=null)}),[n]);const $=null!=u,V=o.useMemo((()=>{function e(e){if(!n)return;const t=l.current.indexOf(e);-1!==t&&T(t)}return{onFocus(t){let{currentTarget:n}=t;e(n)},onClick:e=>{let{currentTarget:t}=e;return t.focus({preventScroll:!0})},...y&&{onMouseMove(t){let{currentTarget:n}=t;e(n)},onPointerLeave(e){let{pointerType:t}=e;P.current&&"touch"!==t&&(O.current=-1,H(l,O),T(null),v||pe(i.floating.current,{preventScroll:!0}))}}}}),[n,i,H,y,l,T,v]);return o.useMemo((()=>{if(!d)return{};const e=z.current;function t(t){if(P.current=!1,I.current=!0,!M.current&&t.currentTarget===i.floating.current)return;if(g&&function(e,t,n){return De(t,n?e===Pe:e===Le,e===Re)}(t.key,x,m))return ve(t),r(!1,t.nativeEvent),void(ne(a)&&a.focus());const o=O.current,s=je(l,e),u=Ue(l,e);if("Home"===t.key&&(ve(t),O.current=s,T(O.current)),"End"===t.key&&(ve(t),O.current=u,T(O.current)),S>1){const n=O.current;if(t.key===Re){if(ve(t),-1===n)O.current=u;else if(O.current=Ie(l,{startingIndex:n,amount:S,decrement:!0,disabledIndices:e}),h&&(n-Se?r:r-S}Ne(l,O.current)&&(O.current=n),T(O.current)}if(t.key===Oe&&(ve(t),-1===n?O.current=s:(O.current=Ie(l,{startingIndex:n,amount:S,disabledIndices:e}),h&&n+S>u&&(O.current=Ie(l,{startingIndex:n%S-S,amount:S,disabledIndices:e}))),Ne(l,O.current)&&(O.current=n),T(O.current)),"both"===x){const r=Math.floor(n/S);t.key===Pe&&(ve(t),n%S!=S-1?(O.current=Ie(l,{startingIndex:n,disabledIndices:e}),h&&Ae(O.current,S,r)&&(O.current=Ie(l,{startingIndex:n-n%S-1,disabledIndices:e}))):h&&(O.current=Ie(l,{startingIndex:n-n%S-1,disabledIndices:e})),Ae(O.current,S,r)&&(O.current=n)),t.key===Le&&(ve(t),n%S!=0?(O.current=Ie(l,{startingIndex:n,disabledIndices:e,decrement:!0}),h&&Ae(O.current,S,r)&&(O.current=Ie(l,{startingIndex:n+(S-n%S),decrement:!0,disabledIndices:e}))):h&&(O.current=Ie(l,{startingIndex:n+(S-n%S),decrement:!0,disabledIndices:e})),Ae(O.current,S,r)&&(O.current=n));const o=Math.floor(u/S)===r;return Ne(l,O.current)&&(O.current=h&&o?t.key===Le?u:Ie(l,{startingIndex:n-n%S-1,disabledIndices:e}):n),void T(O.current)}}if(ze(t.key,x)){if(ve(t),n&&!v&&de(t.currentTarget.ownerDocument)===t.currentTarget)return O.current=Me(t.key,x,m)?s:u,void T(O.current);Me(t.key,x,m)?O.current=h?o>=u?p&&o!==l.current.length?-1:s:Ie(l,{startingIndex:o,disabledIndices:e}):Math.min(u,Ie(l,{startingIndex:o,disabledIndices:e})):O.current=h?o<=s?p&&-1!==o?l.current.length:u:Ie(l,{startingIndex:o,decrement:!0,disabledIndices:e}):Math.max(s,Ie(l,{startingIndex:o,decrement:!0,disabledIndices:e})),Ne(l,O.current)?T(null):T(O.current)}}function o(e){"auto"===b&&re(e.nativeEvent)&&(R.current=!0)}const s=v&&n&&$&&{"aria-activedescendant":U};return{reference:{...s,onKeyDown(o){P.current=!1;const i=0===o.key.indexOf("Arrow");if(v&&n)return t(o);if(!n&&!w&&i)return;const a=i||"Enter"===o.key||""===o.key.trim(),s=ze(o.key,x),u=function(e,t,n){return De(t,n?e===Le:e===Pe,e===Oe)}(o.key,x,m);a&&(L.current=g&&s?null:o.key),g?u&&(ve(o),n?(O.current=je(l,e),T(O.current)):r(!0,o.nativeEvent)):s&&(null!=f&&(O.current=f),ve(o),!n&&w?r(!0,o.nativeEvent):t(o),n&&T(O.current))},onFocus(){n&&T(null)},onPointerDown:function(e){R.current=b,"auto"===b&&oe(e.nativeEvent)&&(R.current=!0)},onMouseDown:o,onClick:o},floating:{"aria-orientation":"both"===x?void 0:x,...s,onKeyDown:t,onPointerMove(){P.current=!0}},item:V}}),[a,i,U,z,M,l,d,x,m,v,n,$,g,f,w,p,S,h,b,T,r,V])}(T,{listRef:k,activeIndex:p,loop:!0,focusItemOnHover:!1,onNavigate:g}),{getReferenceProps:M,getFloatingProps:j,getItemProps:U}=function(e){void 0===e&&(e=[]);const t=e,n=o.useCallback((t=>_e(t,e,"reference")),t),r=o.useCallback((t=>_e(t,e,"floating")),t),i=o.useCallback((t=>_e(t,e,"item")),e.map((e=>null==e?void 0:e.item)));return o.useMemo((()=>({getReferenceProps:n,getFloatingProps:r,getItemProps:i})),[n,r,i])}([O,L,N,I,D,z]),V={activeIndex:p,open:b,setOpen:"tooltip"===l?v:null,settings:{arrowSize:n,distance:i,borderRadius:a,viewPortMargin:s},calculated:{x:x,y:S,placement:C,arrow:_.arrow},refs:{arrowRef:y,listRef:k,...E},getReferenceProps:M,getFloatingProps:j,getItemProps:U};return(0,r.Y)($e.Provider,{value:V,children:(0,r.Y)("div",{ref:w,css:{position:"relative"},className:c,children:e})})})),We=({children:e})=>{const t=Be();return o.cloneElement(e,{"data-floating-state":t.open?"open":"closed",...t.getReferenceProps({ref:t.refs.setReference,onClick:()=>t.open&&t.setOpen?.(!1),...e.props})})},Ke=o.forwardRef((({children:e,backgroundColor:t,borderColor:n,borderWidth:o=1,shadowColor:i="rgba(0, 0, 0, 20%)",shadowBlur:a=4,padding:s=[4,8],className:l,hideArrowTip:u=!1},c)=>{const d=S(),{open:f,calculated:p,refs:h,settings:g,...m}=Be();if(!f)return null;const v=Ge(p.placement),b=Math.SQRT2*g.arrowSize,y=(w=[c,h.setFloating],e=>{w.forEach((t=>{"function"==typeof t?t(e):null!=t&&(t.current=e)}))});var w;return(0,r.FD)("div",{...m.getFloatingProps({ref:y}),css:{"--floating-background-color":t??d.colors.neutral05,"--floating-border-color":n??d.colors.neutral40,"--floating-border-width":`${o}px`,"--floating-shadow-blur":`${a}px`,"--floating-shadow-color":i,position:"absolute",...null!=p.x&&null!=p.y?{left:p.x,top:p.y}:{[Qe(v)]:"100%"},width:"max-content",maxWidth:`calc(100vw - ${2*g.viewPortMargin}px)`,zIndex:1e4,backgroundColor:"var(--floating-background-color)",borderRadius:g.borderRadius,boxShadow:"0 0 var(--floating-shadow-blur) var(--floating-shadow-color)",outline:"var(--floating-border-width) solid var(--floating-border-color)"},children:[(0,r.Y)("div",{className:l,css:{overflow:"hidden",borderRadius:g.borderRadius,padding:(Array.isArray(s)?s:[s]).map((e=>`${e}px`)).join(" ")},children:e}),(0,r.Y)("div",{css:{position:"absolute",display:u?"none":"block",..."top"===v||"bottom"===v?{left:0,right:0,height:g.arrowSize+a}:{top:0,bottom:0,width:g.arrowSize+a},[v]:"100%",pointerEvents:"none",overflow:"hidden"},children:(0,r.Y)("div",{ref:h.arrowRef,css:{position:"absolute",left:p.arrow?.x,top:p.arrow?.y,[v]:-b/2,height:b,width:b,transform:"rotate(45deg)",backgroundColor:"var(--floating-background-color)",boxShadow:`${a/6}px ${a/6}px var(--floating-shadow-blur) `+a/12+"px var(--floating-shadow-color)",outline:"var(--floating-border-width) solid var(--floating-border-color)"}})})]})})),Ye=o.forwardRef((({children:e,tooltip:t,tooltipCss:n,...o},i)=>{const a=S();return(0,r.FD)(qe,{ref:i,...o,trigger:"hover",placement:o.placement??"top",children:[(0,r.Y)(Ke,{css:{color:a.colors.neutral80,fontSize:14,maxWidth:"100%",...n},children:t}),(0,r.Y)(We,{children:e})]})})),Qe=e=>({top:"bottom",right:"left",bottom:"top",left:"right"}[e]),Ge=e=>e.split("-")[0];var Je=n(1699),Ze=n(2644);const Xe=({children:e,menu:t,floatingContainer:n})=>{const i=(0,o.useRef)(null);return(0,r.FD)(qe,{ref:i,placement:"bottom",trigger:"click",ariaRole:"menu",arrowSize:12,viewPortMargin:12,borderRadius:8,distance:6,...n,children:[(0,r.Y)(We,{children:e}),(0,r.Y)(et,{close:()=>i.current?.close(),...t})]})},et=({close:e,items:t,label:n,breakpoint:o})=>{const i=S(),{scheme:a,isHighContrast:s}=y(),l=Ve(),u=C(a,{light:()=>i.colors.neutral05,dark:()=>i.colors.neutral15,"dark-high-contrast":()=>i.colors.neutral05,"light-high-contrast":()=>i.colors.neutral05});return(0,r.Y)(Ke,{backgroundColor:u,borderWidth:"light"!==a?1:0,padding:0,shadowBlur:s?0:8,children:(0,r.Y)("div",{onClick:t=>{t.target===t.currentTarget&&e()},onBlur:t=>{t.currentTarget.contains(t.relatedTarget)||e()},css:{position:"relative",[`@media (max-width: ${o}px)`]:{position:"fixed",top:0,bottom:0,left:0,right:0,zIndex:1001,backgroundColor:"#000000a0"}},children:(0,r.FD)("ul",{css:{borderRadius:8,right:0,margin:0,paddingLeft:0,overflow:"hidden",listStyle:"none",li:{":first-of-type":{borderRadius:"8px 8px 0 0"},":last-of-type":{borderRadius:"0 0 8px 8px"}},[`@media (max-width: ${o}px)`]:{backgroundColor:u,borderRadius:"0 0 8px 8px",marginTop:0,position:"fixed",left:0,top:0,li:{":not(:first-of-type)":{borderRadius:0}}}},children:[(0,r.Y)(rt,{onClick:e,breakpoint:o,children:n}),t.map((({keepOpenAfterClick:t,...n},o)=>(0,r.Y)(tt,{...l(o),...n,onClick:r=>{n?.onClick?.(r),t||e()}},o)))]})})})},tt=(0,o.forwardRef)((({icon:e,children:t,wrapper:n,...o},i)=>{const a=S(),s=y().isHighContrast?a.colors.neutral90:a.colors.neutral10,l=y().isHighContrast?a.colors.neutral05:a.colors.neutral90,u={display:"flex",gap:16,alignItems:"center",minWidth:160,padding:12,textDecoration:"none",color:a.colors.neutral90,cursor:"pointer",whiteSpace:"nowrap","& > svg":{maxHeight:23,fontSize:23,width:24,strokeWidth:2,"& > path":{strokeWidth:"inherit"}},":hover, :focus":{backgroundColor:s,color:l},...lt(a,{inset:!0})},{className:c,...d}=o,f=n??(0,r.Y)(r.FK,{});return(0,r.Y)("li",{role:"menuitem",...d,css:{":not(:first-of-type)":{borderTop:`1px solid ${a.colors.neutral30}`},...!n&&u},...!n&&{className:c,ref:e=>"function"==typeof i?i(e):i?i.current=e:{}},children:(0,Je.Y)(f.type,{key:f.key,...f.props,children:(0,r.FD)(r.FK,{children:[e??(0,r.Y)("svg",{}),(0,r.Y)("div",{children:t})]}),...n&&{className:c,ref:e=>"function"==typeof i?i(e):i?i.current=e:{}},...n&&{css:[u,{borderRadius:"inherit"}]}})})})),nt=({checked:e,onClick:t,children:n})=>({icon:e?(0,r.Y)(Ze.YrT,{}):void 0,onClick:t,onKeyDown:e=>{document.activeElement===e.currentTarget&&"Enter"===e.key&&t()},tabIndex:0,children:n,role:"checkbox","aria-checked":e,css:{...e&&{cursor:"default"}}}),rt=({onClick:e,breakpoint:t,children:n})=>{const o=S();return(0,r.FD)("div",{css:{borderBottom:`1px solid ${o.colors.neutral40}`,display:"flex",alignItems:"center",[`@media not all and (max-width: ${t}px)`]:{display:"none"}},children:[(0,r.Y)(a,{onClick:e,tabIndex:0,css:{display:"flex",alignItems:"center",cursor:"pointer",padding:"24px 12px",opacity:.75,":hover, :focus":{opacity:1},...lt(o,{inset:!0}),"> svg":{maxHeight:23,fontSize:23,width:24,strokeWidth:2}},children:(0,r.Y)(Ze.kRp,{})}),(0,r.Y)("span",{css:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",color:o.colors.neutral60},children:n})]})},ot=o.forwardRef((({size:e="1em",strokeColor:t="currentcolor",...n},o)=>(0,r.Y)("svg",{ref:o,viewBox:"0 0 50 50",css:{width:e,height:e,animation:`2s linear infinite none ${(0,Je.i7)({"0%":{transform:"rotate(0)"},"100%":{transform:"rotate(360deg)"}})}`,"& > circle":{fill:"none",stroke:t,strokeWidth:4,strokeDasharray:83,strokeLinecap:"round"}},...n,children:(0,r.Y)("circle",{cx:"25",cy:"25",r:"20"})})));var it=n(4708),at=n.n(it);const st=(0,o.forwardRef)((({title:e,closable:t=!0,children:n,className:i,closeOnOutsideClick:s=!1,open:l=!1,initialFocus:c,text:d},f)=>{const p=S(),[h,g]=(0,o.useState)(l),m="dark"===y().scheme;return(0,o.useImperativeHandle)(f,(()=>({isOpen:()=>h,open:()=>g(!0),close:()=>g(!1)})),[h]),(0,o.useEffect)((()=>{const e=e=>{t&&"Escape"===e.key&&g(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)}),[t]),N.createPortal(h&&(0,r.Y)(at(),{focusTrapOptions:{initialFocus:c},children:(0,r.Y)("div",{...t&&s&&{onClick:e=>{e.target===e.currentTarget&&g(!1)}},css:{position:"fixed",top:0,bottom:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.8)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:10001},children:(0,r.FD)("div",{className:i,css:{backgroundColor:p.colors.neutral05,borderRadius:4,minWidth:"clamp(300px, 90%, 400px)",margin:16,...m&&{border:`1px solid ${p.colors.neutral25}`}},children:[(0,r.FD)("div",{css:{padding:"12px 16px",borderBottom:`1px solid ${p.colors.neutral25}`,display:"flex",alignItems:"center"},children:[(0,r.Y)("h2",{css:{flex:1},children:e}),t&&(0,r.Y)(a,{"aria-label":d.close,tabIndex:0,onClick:()=>g(!1),css:{fontSize:32,cursor:"pointer",display:"inline-flex",borderRadius:4,...lt(p)},children:(0,r.Y)(u.SXS,{})})]}),(0,r.Y)("div",{css:{padding:16},children:n})]})})}),document.body)})),lt=(e,t)=>{const n=t?.width??2.5,r=t?.inset??!1,o=t?.offset??0;return{"&:focus-visible":{outline:`${n}px solid ${e.colors.focus}`,outlineOffset:`${r?-n:o}px`}}}},3855:function(e,t,n){"use strict";n.d(t,{h:function(){return r}});const r={publicPath:"/",settingsPath:void 0,showLegalNotices:"1",buildDate:"2024-12-11",commitSha:"fc95dc9"}},4631:function(e,t,n){"use strict";n.d(t,{cI:function(){return N},Kq:function(){return $},Z1:function(){return H}});var r=n(6540),o=n(2017),i=n.n(o),a=Object.prototype.toString,s=Array.isArray||function(e){return"[object Array]"===a.call(e)};function l(e){return"function"==typeof e}function u(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function c(e,t){return null!=e&&"object"==typeof e&&t in e}var d=RegExp.prototype.test,f=/\S/;var p={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},h=/\s*/,g=/\s+/,m=/\s*=/,v=/\s*\}/,b=/#|\^|\/|>|\{|&|=|!/;function y(e){this.string=e,this.tail=e,this.pos=0}function w(e,t){this.view=e,this.cache={".":this.view},this.parent=t}function k(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}y.prototype.eos=function(){return""===this.tail},y.prototype.scan=function(e){var t=this.tail.match(e);if(!t||0!==t.index)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n},y.prototype.scanUntil=function(e){var t,n=this.tail.search(e);switch(n){case-1:t=this.tail,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,n),this.tail=this.tail.substring(n)}return this.pos+=t.length,t},w.prototype.push=function(e){return new w(e,this)},w.prototype.lookup=function(e){var t,n,r,o=this.cache;if(o.hasOwnProperty(e))t=o[e];else{for(var i,a,s,u=this,d=!1;u;){if(e.indexOf(".")>0)for(i=u.view,a=e.split("."),s=0;null!=i&&s0?o[o.length-1][4]:n;break;default:r.push(t)}return n}(function(e){for(var t,n,r=[],o=0,i=e.length;o"===a?s=this.renderPartial(i,t,n,o):"&"===a?s=this.unescapedValue(i,t):"name"===a?s=this.escapedValue(i,t,o):"text"===a&&(s=this.rawValue(i)),void 0!==s&&(l+=s);return l},k.prototype.renderSection=function(e,t,n,r,o){var i=this,a="",u=t.lookup(e[1]);if(u){if(s(u))for(var c=0,d=u.length;c0||!n)&&(o[i]=r+o[i]);return o.join("\n")},k.prototype.renderPartial=function(e,t,n,r){if(n){var o=this.getConfigTags(r),i=l(n)?n(e[1]):n[e[1]];if(null!=i){var a=e[6],s=e[5],u=e[4],c=i;0==s&&u&&(c=this.indentPartial(i,u,a));var d=this.parse(c,o);return this.renderTokens(d,t,n,c,r)}}},k.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(null!=n)return n},k.prototype.escapedValue=function(e,t,n){var r=this.getConfigEscape(n)||x.escape,o=t.lookup(e[1]);if(null!=o)return"number"==typeof o&&r===x.escape?String(o):r(o)},k.prototype.rawValue=function(e){return e[1]},k.prototype.getConfigTags=function(e){return s(e)?e:e&&"object"==typeof e?e.tags:void 0},k.prototype.getConfigEscape=function(e){return e&&"object"==typeof e&&!s(e)?e.escape:void 0};var x={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(e){S.templateCache=e},get templateCache(){return S.templateCache}},S=new k;x.clearCache=function(){return S.clearCache()},x.parse=function(e,t){return S.parse(e,t)},x.render=function(e,t,n,r){if("string"!=typeof e)throw new TypeError('Invalid template! Template should be a "string" but "'+(s(o=e)?"array":typeof o)+'" was given as the first argument for mustache#render(template, view, partials)');var o;return S.render(e,t,n,r)},x.escape=function(e){return String(e).replace(/[&<>"'`=\/]/g,(function(e){return p[e]}))},x.Scanner=y,x.Context=w,x.Writer=k;var C=x,E=n(2104),_=n(2268),T=n(3747);const R="connected",O="logged_in",L="network_error",P="invalid_response",A="incorrect_login";class N{#e="unconfigured";#t=null;#n=null;#r=null;#o=null;updateGlobalOc=null;constructor(e){null!=e?.serverUrl&&(this.#t=e.serverUrl.endsWith("/")?e.serverUrl.slice(0,-1):e.serverUrl,!0===e.loginProvided?this.#n=!0:e.loginName&&e.loginPassword?this.#n={username:e.loginName,password:e.loginPassword}:this.#n=null)}static async init(e){const t=new N(e);return await t.updateUser(),t}async getSeries(){if(null===this.#t)throw new Error("Connection not configured");const e=await this.jsonRequest("studio-api/series.json");if(t=e,!Array.isArray(t)||!t.every((e=>"object"==typeof e&&"id"in e&&"title"in e&&"string"==typeof e.id&&"string"==typeof e.title)))throw new z("unexpected result from series API",null);var t;return new Map(e.map((e=>[e.id,e.title])))}setGlobalInstance(e){this.updateGlobalOc||(0,E.jr)("'updateGlobalOc' not set"),this.updateGlobalOc?.(e)}async refreshConnection(){null!==this.#t&&await this.updateUser()&&this.updateGlobalOc?.(this)}async updateUser(){let e;try{e=await this.getInfoMe()}catch(e){if(!(e instanceof I))throw e;console.error("error when getting info/me",e);const t=this.#e;e instanceof D?this.#e=L:e instanceof M?this.#e=A:e instanceof j?this.#e="response_not_ok":e instanceof U?this.#e=A:e instanceof z&&(this.#e=P);const n=null!==this.#r||null!==this.#o||t!==this.#e;return this.#r=null,this.#o=null,n}const t=!i()(e,this.#r);if(t&&(this.#r=e,this.#e="anonymous"===e?.user?.username?this.#n?A:R:e?.user?.username?O:P),!0!==this.#n){const e=t||null!==this.#o;return this.#o=null,e}let n;try{n=await this.getLti()}catch(e){if(!(e instanceof I))throw e;console.error("Error when getting LTI info: ",e);const n=this.#e;e instanceof D&&(this.#e=L);const r=t||null!==this.#o||n!==this.#e;return this.#o=null,r}const r=!i()(n,this.#o);return this.#o=n,t||r}async getInfoMe(){return await this.jsonRequest("info/me.json")}getUsername(){return this.#r&&"object"==typeof this.#r&&"user"in this.#r&&this.#r.user&&"object"==typeof this.#r.user&&"name"in this.#r.user&&"string"==typeof this.#r.user.name?this.#r.user.name:null}async getLti(){return await this.jsonRequest("lti")}async jsonRequest(e){const t=`${this.#t}/${e}`,n=await this.request(e);try{const t=await n.json();if("object"!=typeof t)throw new Error(`'${e}' did not return an object`);return t}catch(e){throw new z(t,e)}}async request(e,t){const n=`${this.#t}/${e}`;let r,o={};!0!==this.#n&&this.#n?.username&&this.#n?.password&&(o={Authorization:`Basic ${btoa(unescape(encodeURIComponent(this.#n.username+":"+this.#n.password)))}`});try{r=await fetch(n,{...t,credentials:"same-origin",redirect:"manual",headers:o})}catch(e){throw new D(n,e)}if(401===r.status||403===r.status)throw new M(r.status,r.statusText,n);if("opaqueredirect"===r.type)throw new U(n);if(!r.ok)throw new j(r.status,r.statusText,n);return r}async upload(e){let{recordings:t,title:n,presenter:r,series:o,start:i,end:a,uploadSettings:s,startTime:l,endTime:u,onProgress:c}=e;switch(await this.refreshConnection(),this.#e){case O:break;case L:return"network_error";case A:case R:return"not_authorized";case P:return"unexpected_response";default:return"unknown_error"}try{let e=await this.request("ingest/createMediaPackage").then((e=>e.text()));return e=await this.addDcCatalog({mediaPackage:e,uploadSettings:s,title:n,presenter:r,series:o,startTime:l,endTime:u}),!1!==s?.acl&&(e=await this.attachAcl({mediaPackage:e,uploadSettings:s})),e=await this.uploadTracks({mediaPackage:e,recordings:t,onProgress:c,title:n,presenter:r}),null==i&&null==a||(e=await this.addCuttingInformation({mediaPackage:e,start:i||0,end:a||Number.MAX_VALUE})),await this.finishIngest({mediaPackage:e,uploadSettings:s}),"success"}catch(e){if(!(e instanceof I))throw e;return console.error("Error occured during upload: ",e),e instanceof D?"network_error":e instanceof U||e instanceof M?"not_authorized":e instanceof j?"unexpected_response":"unknown_error"}}async addDcCatalog(e){let{mediaPackage:t,uploadSettings:n,series:r,...o}=e;const i=r||n?.seriesId,a=n?.dcc||q,s=this.constructDcc(a,{...o,seriesId:i}),l=new FormData;return l.append("mediaPackage",t),l.append("dublinCore",encodeURIComponent(s)),l.append("flavor","dublincore/episode"),await this.request("ingest/addDCCatalog",{method:"post",body:l}).then((e=>e.text()))}async attachAcl(e){let{mediaPackage:t,uploadSettings:n}=e;const r=!0!==n?.acl&&n?.acl?n?.acl:W,o=this.constructAcl(r),i=new FormData;return i.append("flavor","security/xacml+episode"),i.append("mediaPackage",t),i.append("BODY",new Blob([o]),"acl.xml"),await this.request("ingest/addAttachment",{method:"post",body:i}).then((e=>e.text()))}async addCuttingInformation(e){let{mediaPackage:t,start:n,end:r}=e;const o=new FormData;o.append("flavor","smil/cutting"),o.append("mediaPackage",t),o.append("BODY",new Blob([K({start:n,end:r})]),"cutting.smil");const i=await this.request("ingest/addCatalog",{method:"post",body:o});return await i.text()}async uploadTracks(e){let{mediaPackage:t,recordings:n,onProgress:r,title:o,presenter:i}=e;const a=n.map((e=>e.media.size)).reduce(((e,t)=>e+t),0);let s=0;for(const{deviceType:e,media:l,mimeType:u}of n){const n=s;let c="presentation/source";"desktop"===e?c="presentation/source":"video"===e&&(c="presenter/source");const d="desktop"===e?"presentation":"presenter",f=(0,_.F2)({mime:u,flavor:d,title:o,presenter:i}),p=new FormData;p.append("mediaPackage",t),p.append("flavor",c),p.append("tags",""),p.append("BODY",l,f);const h=`${this.#t}/ingest/addTrack`;t=await new Promise(((e,t)=>{const o=new XMLHttpRequest;if(o.open("POST",h),!0!==this.#n&&this.#n?.username&&this.#n?.password){const e=btoa(unescape(encodeURIComponent(this.#n.username+":"+this.#n.password)));o.setRequestHeader("Authorization",`Basic ${e}`)}o.onload=()=>e(o.responseText),o.onerror=()=>{401===o.status||403===o.status?t(new M(o.status,o.statusText,h)):t(new j(o.status,o.statusText,h))},o.upload.onprogress=e=>{if(r){const t=e.loaded+n;r(t/a)}};try{o.send(p)}catch(e){t(new D(h,e))}})),s+=l.size}return t}async finishIngest(e){let{mediaPackage:t,uploadSettings:n}=e;const r=n?.workflowId,o=new FormData;o.append("mediaPackage",t),r&&o.append("workflowDefinitionId",r),await this.request("ingest/ingest",{method:"post",body:o})}getState(){return this.#e}isLoginProvided(){return!0===this.#n}isReadyToUpload(){return this.#e===O}prettyServerUrl(){const e=this.#t;return e&&e.startsWith("https")?new URL(e).hostname:null}constructAcl(e){if(null==(t=this.#r)||"object"!=typeof t||!("roles"in t)||!Array.isArray(t.roles))throw new Error(`'currentUser' is '${this.#r}' in 'constructAcl'`);var t;const n={user:this.#r,lti:this.#o,roleOAuthUser:this.#r.roles.find((e=>"ROLE_OAUTH_USER"===e))};return V(e,n)}constructDcc(e,t){let{title:n,presenter:r,startTime:o,endTime:i,seriesId:a}=t;const s={user:this.#r,lti:this.#o,title:n,presenter:r,seriesId:a,now:(new Date).toISOString(),startTime:o.toISOString(),endTime:i.toISOString()};return V(e,s)}}class I extends Error{}class D extends I{constructor(e,t){super(`network error when accessing '${e}': ${t}`)}}class z extends I{constructor(e,t){super(`invalid JSON when accessing ${e}: ${t}`)}}class M extends I{constructor(e,t,n){super(`got ${e} ${t} when accessing ${n}`)}}class j extends I{constructor(e,t,n){super(`unexpected ${e} ${t} response when accessing ${n}`)}}class U extends I{constructor(e){super(`unexpected redirect when accessing ${e}`)}}const F=r.createContext(null),H=()=>(0,_.se)(F,"useOpencast"),$=e=>{let{initial:t,children:n}=e;const[,o]=(0,r.useState)(0),[i,a]=(0,r.useState)(t);return i.updateGlobalOc=e=>{a(e),i===e&&o((e=>e+1))},(0,r.useEffect)((()=>{console.debug("Current Opencast connection: ",i);const e=setInterval((()=>i.refreshConnection()),3e5);return()=>clearInterval(e)})),(0,T.Y)(F.Provider,{value:i,children:n})},B=e=>(new XMLSerializer).serializeToString(new Text(e)),V=(e,t)=>{const n=C.escape;C.escape=B;const r=C.render(e,t);return C.escape=n,r},q='\n\n {{ now }}\n {{ title }}\n {{ #presenter }}{{ presenter }}{{ /presenter }}\n {{ #seriesId }}{{ seriesId }}{{ /seriesId }}\n \n start={{ startTime }}; end={{ endTime }}; scheme=W3CDTF;\n \n Opencast Studio\n\n',W='\n\n \n \n \n \n \n read\n \n \n \n \n \n \n \n {{ user.userRole }}\n \n \n \n \n \n \n \n \n \n write\n \n \n \n \n \n \n \n {{ user.userRole }}\n \n \n \n \n\n',K=e=>{let{start:t,end:n}=e;return`\n \n \n \n \n \n \n`}},6606:function(e,t,n){"use strict";n.d(t,{CA:function(){return P},Kq:function(){return A},Vr:function(){return y},t0:function(){return L}});var r=n(6540),o=n(4744),i=n.n(o),a=n(6970),s=n.n(a),l=n(2104),u=n(2268),c=n(3855),d=n(3747);const f="ocStudioSettings",p="settingsFile",h="hidden",g="optional",m="required",v=["opencast"],b={opencast:{serverUrl:"https://develop.opencast.org/",loginName:"admin",loginPassword:"opencast"}};class y{contextSettings=Object.create(null);urlSettings=Object.create(null);#i=Object.create(null);onChange=()=>{};static async init(){const e=new y,t=window.localStorage.getItem(f);if(null!==t){let n;try{n=JSON.parse(t)}catch{console.warn("Could not parse settings stored in local storage. Ignoring.")}e.#i=w(n,!1,"src-local-storage","from local storage user settings")}const n=await y.loadContextSettings()||Object.create(null);e.contextSettings=w(n,!1,"src-server","from server settings file");const r=new URLSearchParams(window.location.search);r.delete(p);const o=r.get("config");if(o){const t=e=>{let t;try{t=(0,u.xQ)(e)}catch(e){return console.warn("Could not decode hex-encoded string given to GET parameter 'config'. Ignoring. Error:",e),null}try{return s()(t)}catch(e){console.warn("Could not parse (as TOML) decoded hex-string given to GET parameter 'config'. Ignoring. Error:",e)}return null};for(const e of r.keys())"config"!==e&&console.warn(`URL GET parameter '${e}' is ignored as 'config' is specified. Either specify all configuration via the 'config' GET parameter hex string or via direct GET parameters. Mixing is not allowed.`);const n=t(o);e.urlSettings=w(n??{},!1,"src-url","given as URL `config` GET parameter")}else{const t=Object.create(null);for(const[e,n]of r){let r=t;const o=e.split(".");o.slice(0,-1).forEach((e=>{e in r||(r[e]=Object.create(null)),r=r[e]})),r[o[o.length-1]]=n}e.urlSettings=w(t,!0,"src-url","given as URL GET parameter")}return e}static async loadContextSettings(){let e=c.h.settingsPath||"settings.toml";const t=new URLSearchParams(window.location.search).get(p);if(t)if(t.includes("/")||t.includes("\\"))console.warn(`You can only specify a filename via '${p}', not a path`);else{const n=e.split("/");n[n.length-1]=t,e=n.join("/")}const n=e.startsWith("/")?"":c.h.publicPath,r=`${window.location.origin}${n}${e}`;let o;try{o=await fetch(r)}catch(t){return console.warn(`Could not access '${e}' due to network error!`,t||""),null}if(404===o.status)return console.debug(`'${e}' returned 404: ignoring`),null;if(!o.ok)return console.error(`Fetching '${e}' failed: ${o.status} ${o.statusText}`),null;if(o.headers.get("Content-Type")?.startsWith("text/html"))return console.warn(`'${e}' request has 'Content-Type: text/html' -> ignoring...`),null;try{return s()(await o.text())}catch(t){throw console.error(`Could not parse '${e}' as TOML: `,t),new SyntaxError(`Could not parse '${e}' as TOML: ${t}`)}}saveSettings(e){this.#i=E(this.#i,e),window.localStorage.setItem(f,JSON.stringify(this.#i)),this.onChange(this.settings())}settings(){return _([this.#i,this.contextSettings,this.urlSettings])}formValues(){return E(b,this.#i)}fixedSettings(){return E(this.contextSettings,this.urlSettings)}isConfigurable(e){let t=this.fixedSettings();const n=e.split(".");for(const e of n){if(!(e in t))return!0;t=t[e]}return!1}isUsernameConfigurable(){return this.isConfigurable("opencast.loginName")&&!0!==this.fixedSettings().opencast?.loginProvided}isPasswordConfigurable(){return this.isConfigurable("opencast.loginPassword")&&!0!==this.fixedSettings().opencast?.loginProvided}}const w=(e,t,n,r)=>{const o=(e,t,n)=>"function"==typeof e?i(e,t,n):t&&"object"==typeof t?a(e,t,n):(0,l.HB)(),i=(e,o,i)=>{try{const r=e(o,t,n);return void 0===r?o:r}catch(e){return console.warn(`Validation of setting '${i}' (${r}) with value '${o}' failed: ${e}. Ignoring.`),null}},a=(e,t,n)=>{const i=Object.create(null);for(const[a,s]of Object.entries(t)){const l=n?`${n}.${a}`:a;if(a in e&&a in t){const t=o(e[a],s,l);null!==t&&(i[a]=t)}else console.warn(`'${l}' (${r}) is not a valid settings key. Ignoring.`)}return i};return o(S,e,"")},k={string:e=>{if("string"!=typeof e)throw new Error("is not a string, but should be");return e},int:(e,t)=>{if(Number.isInteger(e))return e;if(t&&"string"==typeof e){if(/^[-+]?(\d+)$/.test(e))return Number(e);throw new Error("can't be parsed as integer")}throw new Error("is not an integer")},boolean:(e,t)=>{if("boolean"==typeof e)return e;if(t){if("true"===e)return!0;if("false"===e)return!1;throw new Error("can't be parsed as boolean")}throw new Error("is not a boolean")},positiveInteger:(e,t)=>{const n=k.int(e,t);if(n<=0)throw new Error("has to be positive, but isn't");return n},array:e=>(t,n,r)=>{if("string"==typeof t&&n)try{t=JSON.parse(t)}catch{throw new Error("can't be parsed as array")}if(!Array.isArray(t))throw new Error("is not an array");return t.map((t=>{try{return e(t,n,r)}catch(e){throw new Error(`failed to validate element '${t}' of array: ${e}`)}}))}},x=e=>{if("string"!=typeof e)throw new Error("has to be a string");if(![h,g,m].includes(e))throw new Error(`has to be either '${h}', '${g}' or '${m}', but is '${e}'`);return e},S={opencast:{serverUrl:e=>{const t=k.string(e);if("/"===t||""===t)return;const n=new URL(t);if("https:"!==n.protocol&&"http:"!==n.protocol)throw new Error('the URL does not start with "http:" or "https:"');return e},loginName:k.string,loginPassword:k.string,loginProvided:k.boolean},upload:{seriesId:k.string,workflowId:k.string,acl:(e,t)=>{if(t&&"false"===e||!1===e)return!1;if(t&&"true"===e||!0===e)return!0;if("string"==typeof e&&e.trim().startsWith("<"))return e;throw new Error("needs to be 'true', 'false' or an XML string")},dcc:k.string,titleField:x,presenterField:x,seriesField:x,autofillPresenter:(e,t,n)=>{const r=k.array((e=>{const t=k.string(e);if(!v.includes(t))throw new Error("invalid presenter name source");return t}))(e,t,n);if(new Set(r).size{if("src-server"!==n)throw new Error("this configuration cannot be specified via the URL or local storage, but must be specified in 'settings.toml'");return C(e,t,n)}),label:k.string,target:e=>{if("string"!=typeof e)throw new Error("has to be a string");if(!e.startsWith("/")&&!e.startsWith("http"))throw new Error("has to start with '/' or 'http'");return e}}};var C;const E=(e,t)=>i()(e,t,{arrayMerge:T}),_=e=>i().all(e,{arrayMerge:T}),T=(e,t,n)=>t,R=r.createContext(null),O=r.createContext(null),L=()=>(0,u.se)(R,"useSettings"),P=()=>(0,u.se)(O,"useSettingsManager"),A=e=>{let{settingsManager:t,children:n}=e;const[o,i]=(0,r.useState)(t.settings());return t.onChange=e=>i(e),(0,r.useEffect)((()=>{console.debug("Current settings: ",o)})),(0,d.Y)(O.Provider,{value:t,children:(0,d.Y)(R.Provider,{value:o,children:n})})}},3015:function(e,t,n){"use strict";n.d(t,{Kq:function(){return d},pv:function(){return p},wA:function(){return f}});var r=n(6540),o=n(2104),i=n(2268),a=n(3747);const s=e=>({hasWebcam:e,mediaDevices:[],audioAllowed:null,audioStream:null,audioUnexpectedEnd:!1,audioSupported:(0,i.eL)(),displayAllowed:null,displayStream:null,displayUnexpectedEnd:!1,displaySupported:(0,i.fF)(),userAllowed:null,userStream:null,userUnexpectedEnd:!1,userSupported:(0,i.eL)(),videoChoice:"none",audioChoice:"none",isRecording:!1,prematureRecordingEnd:!1,recordings:[],title:"",presenter:"",start:null,end:null,recordingStartTime:null,recordingEndTime:null,upload:{error:null,state:"not_uploaded",secondsLeft:null,currentProgress:0}}),l=(e,t)=>{switch(t.type){case"UPDATE_MEDIA_DEVICES":return{...e,mediaDevices:t.devices};case"CHOOSE_AUDIO":return{...e,audioChoice:t.choice};case"CHOOSE_VIDEO":return{...e,videoChoice:t.choice};case"SHARE_AUDIO":return{...e,audioStream:t.stream,audioAllowed:!0,audioUnexpectedEnd:!1};case"BLOCK_AUDIO":return{...e,audioStream:null,audioAllowed:!1,audioUnexpectedEnd:!1};case"UNSHARE_AUDIO":return{...e,audioStream:null,audioUnexpectedEnd:!1};case"AUDIO_UNEXPECTED_END":return{...e,audioStream:null,audioUnexpectedEnd:!0};case"SHARE_DISPLAY":return{...e,displayStream:t.stream,displayAllowed:!0,displayUnexpectedEnd:!1};case"BLOCK_DISPLAY":return{...e,displayStream:null,displayAllowed:!1,displayUnexpectedEnd:!1};case"UNSHARE_DISPLAY":return{...e,displayStream:null,displayAllowed:null,displayUnexpectedEnd:!1};case"DISPLAY_UNEXPECTED_END":return{...e,displayStream:null,displayUnexpectedEnd:!0};case"SHARE_USER":return{...e,userStream:t.stream,userAllowed:!0,userUnexpectedEnd:!1};case"BLOCK_USER":return{...e,userStream:null,userAllowed:!1,userUnexpectedEnd:!1};case"UNSHARE_USER":return{...e,userStream:null,userAllowed:null,userUnexpectedEnd:!1};case"USER_UNEXPECTED_END":return{...e,userStream:null,userUnexpectedEnd:!0};case"START_RECORDING":return{...e,isRecording:!0,recordingStartTime:new Date};case"STOP_RECORDING":return{...e,isRecording:!1,recordingEndTime:new Date};case"STOP_RECORDING_PREMATURELY":return{...e,isRecording:!1,prematureRecordingEnd:!0,recordingEndTime:new Date};case"CLEAR_RECORDINGS":return{...e,recordings:[],prematureRecordingEnd:!1};case"ADD_RECORDING":return{...e,recordings:[...e.recordings.filter((e=>e.deviceType!==t.recording.deviceType)),t.recording]};case"UPLOAD_ERROR":return{...e,upload:{...e.upload,error:t.msg,state:"error"}};case"UPLOAD_REQUEST":return{...e,upload:{...e.upload,error:null,state:"uploading"}};case"UPLOAD_SUCCESS":return{...e,upload:{...e.upload,error:null,state:"uploaded"}};case"UPLOAD_PROGRESS_UPDATE":return{...e,upload:{...e.upload,secondsLeft:t.secondsLeft,currentProgress:t.currentProgress}};case"MARK_DOWNLOADED":return{...e,recordings:e.recordings.map(((e,n)=>n===t.index?{...e,downloaded:!0}:e))};case"UPDATE_TITLE":return{...e,title:t.value};case"UPDATE_PRESENTER":return{...e,presenter:t.value};case"UPDATE_START":return{...e,start:t.time};case"UPDATE_END":return{...e,end:t.time};case"RESET":return s(e.hasWebcam);default:(0,o.xb)(t)}},u=(0,r.createContext)(null),c=(0,r.createContext)(null),d=e=>{let{hasWebcam:t,children:n}=e;const[o,i]=(0,r.useReducer)(l,s(t));return(0,a.Y)(c.Provider,{value:i,children:(0,a.Y)(u.Provider,{value:o,children:n})})},f=()=>(0,i.se)(c,"useDispatch"),p=()=>(0,i.se)(u,"useStudioState")},2268:function(e,t,n){"use strict";n.d(t,{Bb:function(){return m},F2:function(){return h},GG:function(){return y},LO:function(){return a},VM:function(){return p},Y$:function(){return s},eL:function(){return c},fF:function(){return u},kh:function(){return l},lm:function(){return i},oC:function(){return d},q4:function(){return f},r_:function(){return w},se:function(){return k},xQ:function(){return v},yy:function(){return b}});var r=n(6540),o=n(2104);const i=o.PV.colors,a=o.PV.breakpoints,s=(e,t)=>{let n=o.PV;return t&&(n={colors:{...o.PV.colors,focus:t},breakpoints:o.PV.breakpoints}),(0,o.Y$)(n,e)},l=()=>/Android|iPhone|iPad|iPod/i.test(navigator.platform)||/Android/i.test(navigator.userAgent),u=()=>"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices&&!l(),c=()=>"mediaDevices"in navigator&&"getUserMedia"in navigator.mediaDevices,d=()=>"undefined"!=typeof MediaRecorder,f=()=>/^((?!chrome|android).)*safari/i.test(navigator.userAgent),p=e=>{const{width:t,height:n}=e?.getVideoTracks()?.[0]?.getSettings()??{};return null==t||null==n?null:[t,n]},h=e=>{let{mime:t,flavor:n,title:r,presenter:o}=e;const i=(r?` - ${r}`:"").substring(0,50),a=(o?` - ${o}`:"").substring(0,50);return`${g()}${i}${a} (${n}, OC Studio).${(e=>{if(e){const t=e.toLowerCase();if(t.startsWith("video/webm"))return"webm";if(t.startsWith("video/mp4"))return"mp4";if(t.startsWith("video/x-matroska"))return"mkv";if(t.startsWith("video/avi"))return"avi";if(t.startsWith("video/quicktime"))return"mov"}return f()?"mp4":"webm"})(t)}`},g=()=>{const e=e=>(e>=10?"":"0")+e,t=new Date;return t.getFullYear()+"-"+e(t.getMonth()+1)+"-"+e(t.getDate())+" "+e(t.getHours())+"-"+e(t.getMinutes())},m=async()=>"mediaDevices"in navigator&&(await navigator.mediaDevices.enumerateDevices()).some((e=>"videoinput"===e.kind)),v=e=>{if(e.length%2!=0)throw new SyntaxError("hex string does not have an even length");const t=e=>{if(e>="0"&&e<="9")return e.charCodeAt(0)-"0".charCodeAt(0);if(e>="a"&&e<="f")return e.charCodeAt(0)-"a".charCodeAt(0)+10;if(e>="A"&&e<="F")return e.charCodeAt(0)-"A".charCodeAt(0)+10;throw new RangeError(`invalid hex digit '${e}'`)},n=new Uint8Array(e.length/2);for(let r=0;rnew Promise((t=>setTimeout(t,e))),y=async e=>{e({type:"UPDATE_MEDIA_DEVICES",devices:await navigator.mediaDevices.enumerateDevices()})},w=(e,t)=>{const n=[];for(const r of e)r.kind===t&&(n.some((e=>e.deviceId===r.deviceId))||n.push(r));return n},k=(e,t)=>(0,r.useContext)(e)??(0,o.jr)(`hook '${t}' called without parent context provider`)},4744:function(e){"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===n}(e)}(e)},n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?s((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function o(e,t,n){return e.concat(t).map((function(e){return r(e,n)}))}function i(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function a(e,t){try{return t in e}catch(e){return!1}}function s(e,n,l){(l=l||{}).arrayMerge=l.arrayMerge||o,l.isMergeableObject=l.isMergeableObject||t,l.cloneUnlessOtherwiseSpecified=r;var u=Array.isArray(n);return u===Array.isArray(e)?u?l.arrayMerge(e,n,l):function(e,t,n){var o={};return n.isMergeableObject(e)&&i(e).forEach((function(t){o[t]=r(e[t],n)})),i(t).forEach((function(i){(function(e,t){return a(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,i)||(a(e,i)&&n.isMergeableObject(t[i])?o[i]=function(e,t){if(!t.customMerge)return s;var n=t.customMerge(e);return"function"==typeof n?n:s}(i,n)(e[i],t[i],n):o[i]=r(t[i],n))})),o}(e,n,l):r(n,l)}s.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return s(e,n,t)}),{})};var l=s;e.exports=l},2017:function(e){"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,o,i;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(o=r;0!=o--;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(o=r;0!=o--;)if(!Object.prototype.hasOwnProperty.call(n,i[o]))return!1;for(o=r;0!=o--;){var a=i[o];if(!e(t[a],n[a]))return!1}return!0}return t!=t&&n!=n}},4708:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function o(e,t){for(var n=0;n1?r-1:0),i=1;i element.");return u.cloneElement(t,{ref:function(n){var r=e.props.containerElements;t&&("function"==typeof t.ref?t.ref(n):t.ref&&(t.ref.current=n)),e.focusTrapElements=r||[n]}})}return null}}])&&o(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),h}(u.Component),h="undefined"==typeof Element?Function:Element;p.propTypes={active:c.bool,paused:c.bool,focusTrapOptions:c.shape({document:c.object,onActivate:c.func,onPostActivate:c.func,checkCanFocusTrap:c.func,onPause:c.func,onPostPause:c.func,onUnpause:c.func,onPostUnpause:c.func,onDeactivate:c.func,onPostDeactivate:c.func,checkCanReturnFocus:c.func,initialFocus:c.oneOfType([c.instanceOf(h),c.string,c.bool,c.func]),fallbackFocus:c.oneOfType([c.instanceOf(h),c.string,c.func]),escapeDeactivates:c.oneOfType([c.bool,c.func]),clickOutsideDeactivates:c.oneOfType([c.bool,c.func]),returnFocusOnDeactivate:c.bool,setReturnFocus:c.oneOfType([c.instanceOf(h),c.string,c.bool,c.func]),allowOutsideClick:c.oneOfType([c.bool,c.func]),preventScroll:c.bool,tabbableOptions:c.shape({displayCheck:c.oneOf(["full","legacy-full","non-zero-area","none"]),getShadowRoot:c.oneOfType([c.bool,c.func])}),trapStack:c.array,isKeyForward:c.func,isKeyBackward:c.func}),containerElements:c.arrayOf(c.instanceOf(h)),children:c.oneOfType([c.element,c.instanceOf(h)])},p.defaultProps={active:!0,paused:!1,focusTrapOptions:{},_createFocusTrap:d},e.exports=p},2697:function(e,t,n){"use strict";n.r(t),n.d(t,{createFocusTrap:function(){return h}});var r=n(9054);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t1?t-1:0),r=1;r1?n-1:0),i=1;i=0)e=o.activeElement;else{var t=m.tabbableGroups[0];e=t&&t.firstTabbableNode||y("fallbackFocus")}if(!e)throw new Error("Your focus-trap needs to have at least one focusable element");return e},k=function(){if(m.containerGroups=m.containers.map((function(e){var t=(0,r.tabbable)(e,g.tabbableOptions),n=(0,r.focusable)(e,g.tabbableOptions),o=t.length>0?t[0]:void 0,i=t.length>0?t[t.length-1]:void 0,a=n.find((function(e){return(0,r.isTabbable)(e)})),s=n.slice().reverse().find((function(e){return(0,r.isTabbable)(e)})),l=!!t.find((function(e){return(0,r.getTabIndex)(e)>0}));return{container:e,tabbableNodes:t,focusableNodes:n,posTabIndexesFound:l,firstTabbableNode:o,lastTabbableNode:i,firstDomTabbableNode:a,lastDomTabbableNode:s,nextTabbableNode:function(e){var o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t.indexOf(e);return i<0?o?n.slice(n.indexOf(e)+1).find((function(e){return(0,r.isTabbable)(e)})):n.slice(0,n.indexOf(e)).reverse().find((function(e){return(0,r.isTabbable)(e)})):t[i+(o?1:-1)]}}})),m.tabbableGroups=m.containerGroups.filter((function(e){return e.tabbableNodes.length>0})),m.tabbableGroups.length<=0&&!y("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(m.containerGroups.find((function(e){return e.posTabIndexesFound}))&&m.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},x=function e(t){var n=t.activeElement;if(n)return n.shadowRoot&&null!==n.shadowRoot.activeElement?e(n.shadowRoot):n},S=function e(t){!1!==t&&t!==x(document)&&(t&&t.focus?(t.focus({preventScroll:!!g.preventScroll}),m.mostRecentlyFocusedNode=t,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"==typeof e.select}(t)&&t.select()):e(w()))},C=function(e){var t=y("setReturnFocus",e);return t||!1!==t&&e},E=function(e){var t=e.target,n=e.event,o=e.isBackward,i=void 0!==o&&o;t=t||f(n),k();var s=null;if(m.tabbableGroups.length>0){var l=b(t,n),u=l>=0?m.containerGroups[l]:void 0;if(l<0)s=i?m.tabbableGroups[m.tabbableGroups.length-1].lastTabbableNode:m.tabbableGroups[0].firstTabbableNode;else if(i){var d=c(m.tabbableGroups,(function(e){var n=e.firstTabbableNode;return t===n}));if(d<0&&(u.container===t||(0,r.isFocusable)(t,g.tabbableOptions)&&!(0,r.isTabbable)(t,g.tabbableOptions)&&!u.nextTabbableNode(t,!1))&&(d=l),d>=0){var p=0===d?m.tabbableGroups.length-1:d-1,h=m.tabbableGroups[p];s=(0,r.getTabIndex)(t)>=0?h.lastTabbableNode:h.lastDomTabbableNode}else a(n)||(s=u.nextTabbableNode(t,!1))}else{var v=c(m.tabbableGroups,(function(e){var n=e.lastTabbableNode;return t===n}));if(v<0&&(u.container===t||(0,r.isFocusable)(t,g.tabbableOptions)&&!(0,r.isTabbable)(t,g.tabbableOptions)&&!u.nextTabbableNode(t))&&(v=l),v>=0){var w=v===m.tabbableGroups.length-1?0:v+1,x=m.tabbableGroups[w];s=(0,r.getTabIndex)(t)>=0?x.firstTabbableNode:x.firstDomTabbableNode}else a(n)||(s=u.nextTabbableNode(t))}}else s=y("fallbackFocus");return s},_=function(e){var t=f(e);b(t,e)>=0||(d(g.clickOutsideDeactivates,e)?n.deactivate({returnFocus:g.returnFocusOnDeactivate}):d(g.allowOutsideClick,e)||e.preventDefault())},T=function(e){var t=f(e),n=b(t,e)>=0;if(n||t instanceof Document)n&&(m.mostRecentlyFocusedNode=t);else{var o;e.stopImmediatePropagation();var i=!0;if(m.mostRecentlyFocusedNode)if((0,r.getTabIndex)(m.mostRecentlyFocusedNode)>0){var a=b(m.mostRecentlyFocusedNode),s=m.containerGroups[a].tabbableNodes;if(s.length>0){var l=s.findIndex((function(e){return e===m.mostRecentlyFocusedNode}));l>=0&&(g.isKeyForward(m.recentNavEvent)?l+1=0&&(o=s[l-1],i=!1))}}else m.containerGroups.some((function(e){return e.tabbableNodes.some((function(e){return(0,r.getTabIndex)(e)>0}))}))||(i=!1);else i=!1;i&&(o=E({target:m.mostRecentlyFocusedNode,isBackward:g.isKeyBackward(m.recentNavEvent)})),S(o||m.mostRecentlyFocusedNode||w())}m.recentNavEvent=void 0},R=function(e){if(("Escape"===(null==(t=e)?void 0:t.key)||"Esc"===(null==t?void 0:t.key)||27===(null==t?void 0:t.keyCode))&&!1!==d(g.escapeDeactivates,e))return e.preventDefault(),void n.deactivate();var t;(g.isKeyForward(e)||g.isKeyBackward(e))&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];m.recentNavEvent=e;var n=E({event:e,isBackward:t});n&&(a(e)&&e.preventDefault(),S(n))}(e,g.isKeyBackward(e))},O=function(e){var t=f(e);b(t,e)>=0||d(g.clickOutsideDeactivates,e)||d(g.allowOutsideClick,e)||(e.preventDefault(),e.stopImmediatePropagation())},L=function(){if(m.active)return function(e,t){if(e.length>0){var n=e[e.length-1];n!==t&&n.pause()}var r=e.indexOf(t);-1===r||e.splice(r,1),e.push(t)}(h,n),m.delayInitialFocusTimer=g.delayInitialFocus?u((function(){S(w())})):S(w()),o.addEventListener("focusin",T,!0),o.addEventListener("mousedown",_,{capture:!0,passive:!1}),o.addEventListener("touchstart",_,{capture:!0,passive:!1}),o.addEventListener("click",O,{capture:!0,passive:!1}),o.addEventListener("keydown",R,{capture:!0,passive:!1}),n},P=function(){if(m.active)return o.removeEventListener("focusin",T,!0),o.removeEventListener("mousedown",_,!0),o.removeEventListener("touchstart",_,!0),o.removeEventListener("click",O,!0),o.removeEventListener("keydown",R,!0),n},A="undefined"!=typeof window&&"MutationObserver"in window?new MutationObserver((function(e){e.some((function(e){return Array.from(e.removedNodes).some((function(e){return e===m.mostRecentlyFocusedNode}))}))&&S(w())})):void 0,N=function(){A&&(A.disconnect(),m.active&&!m.paused&&m.containers.map((function(e){A.observe(e,{subtree:!0,childList:!0})})))};return(n={get active(){return m.active},get paused(){return m.paused},activate:function(e){if(m.active)return this;var t=v(e,"onActivate"),n=v(e,"onPostActivate"),r=v(e,"checkCanFocusTrap");r||k(),m.active=!0,m.paused=!1,m.nodeFocusedBeforeActivation=o.activeElement,null==t||t();var i=function(){r&&k(),L(),N(),null==n||n()};return r?(r(m.containers.concat()).then(i,i),this):(i(),this)},deactivate:function(e){if(!m.active)return this;var t=i({onDeactivate:g.onDeactivate,onPostDeactivate:g.onPostDeactivate,checkCanReturnFocus:g.checkCanReturnFocus},e);clearTimeout(m.delayInitialFocusTimer),m.delayInitialFocusTimer=void 0,P(),m.active=!1,m.paused=!1,N(),function(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()}(h,n);var r=v(t,"onDeactivate"),o=v(t,"onPostDeactivate"),a=v(t,"checkCanReturnFocus"),s=v(t,"returnFocus","returnFocusOnDeactivate");null==r||r();var l=function(){u((function(){s&&S(C(m.nodeFocusedBeforeActivation)),null==o||o()}))};return s&&a?(a(C(m.nodeFocusedBeforeActivation)).then(l,l),this):(l(),this)},pause:function(e){if(m.paused||!m.active)return this;var t=v(e,"onPause"),n=v(e,"onPostPause");return m.paused=!0,null==t||t(),P(),N(),null==n||n(),this},unpause:function(e){if(!m.paused||!m.active)return this;var t=v(e,"onUnpause"),n=v(e,"onPostUnpause");return m.paused=!1,null==t||t(),k(),L(),N(),null==n||n(),this},updateContainerElements:function(e){var t=[].concat(e).filter(Boolean);return m.containers=t.map((function(e){return"string"==typeof e?o.querySelector(e):e})),m.active&&k(),N(),this}}).updateContainerElements(e),n}},4146:function(e,t,n){"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var a=c(n);d&&(a=a.concat(d(n)));for(var s=l(t),g=l(n),m=0;m