1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2838,5815],{29145:function(e,n){n.DF={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},n.LE=n.DF},81335:function(e,n,t){t.d(n,{FP:function(){return i},JW:function(){return a},kj:function(){return o}});var r=t(88520);let o="https://api.".concat(r.b),i="".concat(o,"/graphql"),a="".concat(o,"/enmeshed")},45815:function(e,n,t){t.r(n),t.d(n,{ModalWithCloseButton:function(){return l},defaultModalOverlayStyles:function(){return d}});var r=t(52322),o=t(16737),i=t(95257),a=t(2784),s=t(50079),c=t(31668),u=t(34387);function l(e){let{isOpen:n,title:t,setIsOpen:l,children:f,className:h,extraTitleClassName:p,confirmCloseDescription:m,extraCloseButtonClassName:v,extraOverlayClassName:b,onEscapeKeyDown:y,onKeyDown:g}=e,{strings:w}=(0,c.xN)(),[x,j]=(0,a.useState)(!1),N=(0,a.useRef)(null),C=(0,a.useCallback)(e=>{if(!e&&m){j(!0);return}if(!1!==e){l(e);return}!1===e&&setTimeout(()=>{l(e)},1)},[m,l]);return(0,a.useEffect)(()=>{if(!n){N.current&&N.current.focus();return}N.current=document.activeElement},[n]),(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(i.fC,{open:n,onOpenChange:C,children:(0,r.jsxs)(i.h_,{children:[(0,r.jsx)(i.aV,{className:(0,u.cn)(d,b)}),(0,r.jsxs)(i.VY,{className:(0,u.cn)("serlo-modal",h),"data-modal-state":n?"open":"closed","aria-describedby":void 0,onEscapeKeyDown:y,onKeyDown:g,children:[t?(0,r.jsx)(i.Dx,{className:(0,u.cn)("serlo-h2",p),children:t}):null,f,(0,r.jsx)(i.x8,{"aria-label":"Close",onClick:()=>C(!1),title:t,className:(0,u.cn)("absolute right-3.5 top-3.5 z-20 inline-flex h-9 w-9 cursor-pointer items-center\n justify-center rounded-full border-none leading-tight\n text-almost-black hover:bg-brand hover:text-white",v),"data-qa":"modal-close-button",children:(0,r.jsx)(s.J,{icon:o.g8,className:"h-5"})}),x&&(0,r.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center rounded-xl bg-gray-500 bg-opacity-75 px-4",children:(0,r.jsxs)("div",{className:"rounded-xl bg-editor-primary-100 p-6 shadow-lg ",children:[(0,r.jsx)("p",{className:"px-2",children:m}),(0,r.jsxs)("div",{className:"mt-4 flex space-x-4",children:[(0,r.jsx)("button",{className:"serlo-button-learner-transparent mr-4",onClick:()=>l(!1),children:w.modal.leaveNow}),(0,r.jsx)("button",{className:"serlo-button-learner-primary",onClick:()=>j(!1),children:w.modal.noStay})]})]})})]})]})})})}let d=(0,u.cn)("fixed bottom-0 left-0 right-0 top-0 z-[101] bg-white bg-opacity-75")},82838:function(e,n,t){t.r(n),t.d(n,{CheckoutRejectButtons:function(){return N}});var r=t(52322),o=t(29145),i=t(16737),a=t(2784),s=t(60983),c=t(45815),u=t(95529),l=t(9063),d=t(34387),f=t(73235),h=t(2409),p=t(92521),m=t.n(p),v=t(62378),b=t(22428),y=t(84185);function g(){let e=(0,f._)(["\n mutation rejectRevision($input: RejectRevisionInput!) {\n entity {\n rejectRevision(input: $input) {\n success\n }\n }\n }\n"]);return g=function(){return e},e}function w(){let e=(0,f._)(["\n mutation checkoutRevision($input: CheckoutRevisionInput!) {\n entity {\n checkoutRevision(input: $input) {\n success\n }\n }\n }\n"]);return w=function(){return e},e}let x=(0,h.Ps)(g()),j=(0,h.Ps)(w());function N(e){let{data:n,aboveContent:t}=e,[f,h]=(0,a.useState)(null),p=function(){let e=(0,b.K)(),n=(0,y.X)();return async function(t,r){let o="checkout"===t;m().start();let i=await (0,v.A)(r.revisionId),a=await e(o?j:x,r);return i&&await (0,v.t)(i),n({success:a,toastKey:o?"accept":"reject",redirectUrl:sessionStorage.getItem("previousPathname")||"/entity/unrevised",delay:100,stopNProgress:!0,useHardRedirect:!0})}}(),[g,w]=(0,a.useState)(""),N=(0,u.t)();if(!n.revisionData)return null;let C=n.revisionData.current,k=n.revisionData.rejected,O=n.revisionId,P=n.typename===l.Xc.Page;if(C||!O||!N)return null;let{strings:R}=N;function T(){f&&p(f,{revisionId:O,reason:g})}return(0,r.jsxs)(r.Fragment,{children:[E("checkout"),k||P?null:E("reject"),(0,r.jsx)(c.ModalWithCloseButton,{isOpen:null!==f,setIsOpen:e=>e?void 0:void h(null),title:f?R.revisions[f].title:"",children:f?(0,r.jsxs)("p",{className:"mx-side mb-1",children:[R.revisions[f].explanation,(0,r.jsx)("textarea",{value:g,onChange:e=>{w(e.target.value)},onKeyDown:function(e){"Enter"===e.code&&e.metaKey&&T()},className:(0,d.cn)("\n bold my-5 box-border min-h-[80px] w-full\n rounded-xl border-0 bg-brand-50 py-2 pl-4 pr-14\n outline-none focus-visible:bg-brand-200\n ")}),(0,r.jsx)("button",{className:"serlo-button-learner-secondary",onClick:T,children:R.revisions.confirm})]}):null})]});function E(e){let n="checkout"===e;return(0,r.jsx)(s.zi,{title:R.revisions[e].action,onClick:()=>h(e),aboveContent:t,icon:n?o.LE:i.g8})}}},88520:function(e,n,t){t.d(n,{b:function(){return r}});let r="serlo.org"},63092:function(e,n,t){t.d(n,{R:function(){return u},z:function(){return c}});var r=t(5632),o=t(92521),i=t.n(o),a=t(2784),s=t(31668);let c="#success";function u(e){let n=(0,r.useRouter)(),t=(0,s.xN)().strings.saveButton,o=(0,a.useCallback)(r=>{if(!(r&&r.includes(c))&&e){if(window.confirm(t.confirmRouteChange))return!0;throw i().done(),n.asPath!==window.location.pathname&&window.history.pushState("","",n.asPath),Error("Abort route change by user's confirmation.")}},[e,t.confirmRouteChange,n.asPath]);(0,a.useEffect)(()=>(n.events.on("routeChangeStart",o),window.onbeforeunload=e?()=>!0:null,()=>{n.events.off("routeChangeStart",o),window.onbeforeunload=null}),[o,n.events,e])}},62378:function(e,n,t){t.d(n,{A:function(){return c},t:function(){return s}});var r=t(73235),o=t(2409),i=t(81335);function a(){let e=(0,r._)(["\n query aliasByUuid($id: Int!) {\n uuid(id: $
1id) {\n alias\n ... on AbstractEntityRevision {\n repository {\n alias\n }\n }\n }\n }\n"]);return a=function(){return e},e}async function s(e){try{var n;let t=encodeURIComponent(e),r=await fetch("/api/frontend/revalidate-path?path=".concat(t));if(!r.ok)return console.error("Fetch failed",r.status,r.statusText),!1;console.log("revalidatePath ran:",e);let o=null===(n=t.match(/\/([1-9]?[0-9]+)\//))||void 0===n?void 0:n[1];if(o){let n=await fetch("/api/frontend/revalidate-path?path=".concat(o));if(!n.ok)return console.error("Fetch failed",n.status,n.statusText),!1;console.log("revalidatePath ran:",e)}return await new Promise(e=>setTimeout(e,500)),!0}catch(e){return console.error(e),!1}}async function c(e){try{var n;let t=await fetch(i.FP,{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({query:u,variables:{id:e}})}),r=await t.json();if(!r.data.uuid)return null;let{uuid:o}=r.data,a=Object.hasOwn(o,"repository")?o.repository.alias:null;if(a)return a;return null!==(n=o.alias)&&void 0!==n?n:null}catch(e){return console.error(e),null}}let u=(0,o.Ps)(a())},22428:function(e,n,t){t.d(n,{K:function(){return u}});var r=t(2409),o=t(63830),i=t(85350),a=t(81335),s=t(67063),c=t(95529);function u(){let e=(0,s.J)(),n=(0,c.t)(),t=null==n?void 0:n.strings.mutations.errors;return async function(n,o){var i,s,c,u;if(null===e)return l("UNAUTHENTICATED",t);try{let e="localhost"===window.location.hostname?await f():await d();if(Object.hasOwn(e,"entity")){let n=e.entity;if(Object.keys(n)[0].startsWith("set")){let e=Object.values(n)[0];return null!==(s=null===(i=e.record)||void 0===i?void 0:i.id)&&void 0!==s&&s}}return!!e}catch(r){let e=null===(u=r.response)||void 0===u?void 0:null===(c=u.errors)||void 0===c?void 0:c[0],n=e?e.extensions.code:"UNKNOWN";return console.error(e),l(n,t,e)}async function d(){return new r.g6(a.FP,{credentials:"include"}).request(n,{input:o})}async function f(){let e=await fetch("/api/frontend/localhost-graphql-fetch",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({query:n,variables:{input:o}})});return await e.json()}}}function l(e,n,t){var r;if(!n)return!1;let a=null!==(r=n[e])&&void 0!==r?r:n.UNKNOWN;if(console.error(t),"BAD_USER_INPUT"===e&&(0,i.K)({message:"API(mutation): bad user input"}),"UNKNOWN"===e&&(0,i.K)({message:"API(mutation): unknown error"}),"UNAUTHENTICATED"===e&&(0,i.K)({message:"API(mutation): unauthenticated"}),(0,o.U)(a,"warning"),t){let e=Object.hasOwn(t,"message")?t.message:"unknown error";(0,o.U)('"'.concat(e,'"'))}return!1}},84185:function(e,n,t){t.d(n,{X:function(){return u}});var r=t(5632),o=t(92521),i=t.n(o),a=t(95529),s=t(63830),c=t(63092);function u(){let e=(0,a.t)(),n=(0,r.useRouter)();return function(t){let{success:r,toastKey:o,redirectUrl:a,timeout:u,useHardRedirect:l,delay:d,stopNProgress:f}=t;if(!e)return!1;let h=e.strings.mutations.success;return!!r&&(setTimeout(()=>{o&&(0,s.U)(h[o],"success"),a&&(l?window.location.href=a:setTimeout(()=>n.push(a+c.z),u||500)),f&&i().done()},d||0),!0)}}},73235:function(e,n,t){t.d(n,{_:function(){return r}});function r(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}}}]); 2//# sourceMappingURL=2838.2e237c000c3212ee.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.