1import{a as te,c as re,d as ae}from"./N2K5FCVN.js";import{a as ee}from"./5445XDOC.js";import{e as q}from"./KXU7WH2M.js";import{a as _}from"./UYL7VSDS.js";import{c as Z}from"./3G2J36HI.js";import{a as J,b as Q}from"./WEIL2JTR.js";import{d as Y,e as G}from"./2TIVUJ3R.js";import{F as X,I as W,k as S,n as P,p as D}from"./OVTD5G6M.js";import{q as V,r as k,s as K}from"./6JD7I43H.js";import{a as B,c as H}from"./AOUAX5L7.js";import{e as l,i as j}from"./PW3DBR6S.js";import{g,h as t,i as c,j as f,k as E,m as I}from"./KBWPKQNA.js";var A=class{get signal(){return this.listenerController||(this.listenerController=new AbortController),this.listenerController.signal}abort(){this.listenerController?.abort(),this.listenerController=void 0}};var oe=`:host, 2ak-stage-captcha.style-scope { 3 --captcha-background-to: var(--pf-global--BackgroundColor--light-100); 4 --captcha-background-from: var(--pf-global--BackgroundColor--light-300); 5} 6 7:host([theme="dark"]), 8ak-stage-captcha[theme="dark"].style-scope { 9 --captcha-background-to: var(--ak-dark-background-light); 10 --captcha-background-from: var(--pf-global--BackgroundColor--300); 11} 12 13@keyframes captcha-background-animation { 14 0% { 15 background-color: var(--captcha-background-from); 16 } 17 50% { 18 background-color: var(--captcha-background-to); 19 } 20 100% { 21 background-color: var(--captcha-background-from); 22 } 23} 24 25.ak-interactive-challenge { 26 /** 27 * We use & here to hint to the ShadyDOM polyfill that this rule is meant 28 * for the iframe itself, not the contents of the iframe. 29 */ 30 & { 31 width: 100%; 32 min-height: 65px; 33 } 34 35 &[data-ready="loading"] { 36 background-color: var(--captcha-background-from); 37 animation: captcha-background-animation 1s infinite var(--pf-global--TimingFunction); 38 } 39} 40`;var p=class{static{this.globalName=""}get globalName(){return this.constructor.globalName}static{this.logPrefix="controller"}static discover(s){return Array.from(s).filter(e=>Object.hasOwn(window,e.globalName))}hostConnected(){this.logger.debug("Host connected.")}hostDisconnected(){this.logger.debug("Host disconnected.")}prepareURL(){let s=this.host.challenge?.jsUrl;return s&&URL.canParse(s)?new URL(s):null}constructor(s){let{logPrefix:e}=this.constructor;this.logger=D.prefix(`controller/${e}`),this.host=s,this.host.addController(this)}};var v=class extends p{constructor(){super(...arguments);this.interactive=()=>l`<div 41 id="ak-container" 42 class="g-recaptcha" 43 data-theme=${this.host.activeTheme} 44 data-sitekey=${P(this.host.challenge?.siteKey)} 45 data-callback="callback" 46 ></div>`;this.refreshInteractive=async()=>{this.host.iframeRef.value?.contentWindow?.grecaptcha.reset()};this.execute=async()=>grecaptcha.ready(()=>grecaptcha.execute(grecaptcha.render(this.host.captchaDocumentContainer,{sitekey:this.host.challenge?.siteKey??"",callback:this.host.onTokenChange,size:"invisible",hl:this.host.activeLanguageTag})));this.refresh=async()=>{window.grecaptcha.reset(),window.grecaptcha.execute()}}static{this.globalName="grecaptcha"}};var L=class extends p{constructor(){super(...arguments);this.#e=null;this.interactive=()=>l`<div 47 id="ak-container" 48 class="h-captcha" 49 data-sitekey=${P(this.host.challenge?.siteKey)} 50 data-theme=${this.host.activeTheme} 51 data-callback="callback" 52 ></div>`;this.refreshInteractive=async()=>{this.host.iframeRef.value?.contentWindow?.hcaptcha?.reset()};this.execute=async()=>{this.#e=hcaptcha.render(this.host.captchaDocumentContainer,{sitekey:this.host.challenge?.siteKey??"",callback:this.host.onTokenChange,size:"invisible",hl:this.host.activeLanguageTag}),await hcaptcha.execute(this.#e,{async:!0})};this.refresh=async()=>{if(this.#e===null){this.logger.warn("Skipping refresh: no hCaptcha ID set");return}window.hcaptcha.reset(this.#e),window.hcaptcha.execute(this.#e)}}static{this.globalName="hcaptcha"}#e};var ie,U=class extends p{constructor(){super(...arguments);this.prepareURL=()=>{let e=this.host.challenge?.jsUrl;if(!e||!URL.canParse(e))return null;let r=new URL(e);return r.searchParams.set("render","explicit"),r.searchParams.set("onload","onTurnstileReady"),r};this.#e=e=>{this.host.error=`Turnstile error: ${e}`};this.interactive=()=>{let e=this.host.challenge?.siteKey??"",r=this.host.activeTheme,a=this.host.activeLanguageTag.toLowerCase();return l(ie||(ie=I([`<div id="ak-container"></div> 53 <script> 54 function onTurnstileReady() { 55 turnstile.render("#ak-container", { 56 sitekey: "`,`", 57 theme: "`,`", 58 language: "`,`", 59 size: "flexible", 60 callback, 61 }); 62 loadListener(); 63 } 64 <\/script>`])),e,r,a)};this.refreshInteractive=async()=>this.host.iframeRef.value?.contentWindow?.turnstile.reset();this.execute=async()=>{window.turnstile.render(this.host.captchaDocumentContainer,{sitekey:this.host.challenge?.siteKey??"",callback:this.host.onTokenChange,"error-callback":this.#e,theme:this.host.activeTheme})};this.refresh=async()=>window.turnstile.reset()}static{this.globalName="turnstile"}#e};function ne(h){let s=q(h.body);return`<!DOCTYPE html> 65 <html> 66 <head> 67 ${h.head?q(h.head):""} 68 </head> 69 <body> 70 ${s} 71 </body> 72 </html>`}var z={dark:"#18191a",light:"#ffffff"};function me(h){switch(h){case"dark":return l` 73 <meta name="color-scheme" content="dark" /> 74 <meta name="theme-color" content=${z.dark} /> 75 `;case"light":return l` <meta name="color-scheme" content="light" /> 76 <meta name="theme-color" content=${z.light} />`}}
76var se;function le(h,{challengeURL:s,theme:e,scriptOnLoad:r=!0}){return ne({head:l` 77 <meta charset="UTF-8" /> 78 79 ${me(e)} 80 `,body:l(se||(se=I([` 81 <script> 82 "use strict"; 83 84 function callback(token) { 85 self.parent.postMessage({ 86 message: "captcha", 87 source: "goauthentik.io", 88 context: "flow-executor", 89 token, 90 }); 91 } 92 93 function loadListener() { 94 self.parent.postMessage({ 95 message: "load", 96 source: "goauthentik.io", 97 context: "flow-executor", 98 }); 99 } 100 <\/script> 101 102 <style> 103 html, 104 body { 105 background: `,`; 106 } 107 108 body { 109 margin: 0; 110 padding: 0; 111 } 112 113 .g-recaptcha { 114 padding-block: 0.5rem; 115 } 116 117 .g-recaptcha, 118 .h-captcha { 119 display: flex; 120 align-items: center; 121 justify-content: center; 122 } 123 </style> 124 `,` 125 <script 126 `,` 127 src="`,`" 128 ><\/script> 129 `])),z[e],h,r?'onload="loadListener()"':"",s.toString())})}var o,R,T,b,w,O,C,ce,M,x,y,N,$,F,n=class extends ae{constructor(){super(...arguments);c(this,C);c(this,o,D.prefix("flow:captcha"));this.embedded=!1;this.onTokenChange=e=>{this.host.submit({component:"ak-stage-captcha",token:e})};this.refreshedAt=new Date;this.error=null;this.iframeHeight=65;this.activeController=null;c(this,R,"about:blank");this.iframeRef=Y();c(this,T,!1);c(this,b);c(this,w,new A);c(this,O,({data:e})=>{if(e&&!(e.source!=="goauthentik.io"||e.context!=="flow-executor"))return t(this,o).debug("Received message:",e),Z(e).with({message:"captcha"},({token:r})=>this.onTokenChange(r)).with({message:"load"},t(this,N)).otherwise(({message:r})=>{t(this,o).debug(`Unknown message: ${r}`)})});c(this,M,e=>{if(!this.activeController)return;if(e.detail.status==="error"){t(this,o).debug("Error loading locale:",e.detail);return}if(e.detail.status==="loading")return;let{readyLocale:r}=e.detail;t(this,o).debug(`Locale changed to \`${r}\``),E(this,C,F).call(this,this.activeController)});c(this,x);c(this,y);c(this,N,()=>{t(this,x)?.disconnect(),t(this,y)?.disconnect();let e=this.iframeRef.value,r=e?.contentDocument;if(!e||!r)return;let a;this.activeController instanceof v?(a=()=>{if(!this.iframeRef)return;let i=r.getElementById("ak-container");if(!i)return;let d=r.querySelector('iframe[style~="height:"]'),u=d?.getBoundingClientRect().bottom??0,m=Math.max(u,i.clientHeight);this.iframeHeight=Math.round(m*1.1),d?.parentElement&&(d.parentElement.style.height=`${m}px`)},f(this,x,new MutationObserver(i=>{for(let d of i)if(d.type==="childList")for(let u of d.addedNodes)u.tagName==="IFRAME"&&(t(this,y)?.observe(u),requestAnimationFrame(a))})),t(this,x).observe(r.body,{childList:!0,subtree:!0})):a=()=>{if(!this.iframeRef)return;let i=r.getElementById("ak-container");i&&(this.iframeHeight=Math.round(i.clientHeight))},f(this,y,new ResizeObserver(a)),requestAnimationFrame(()=>{t(this,y)?.observe(r.body),this.onLoad?.(),f(this,T,!0)})});c(this,$,async e=>{let r=e?.currentTarget;t(this,o).debug("Script loaded",r?.src??"unknown source"),this.error=null,f(this,T,!1);let[a,...i]=p.discover(n.controllers);if(!a){this.error=H("Could not find a suitable CAPTCHA provider.");return}i.length&&a===L&&i.some(m=>m!==v)&&t(this,o).debug(`Other CAPTCHA providers were also available: ${i.map(m=>m?.globalName??"unknown").join(", ")}`);let{globalName:d}=a,u=new a(this);try{await E(this,C,F).call(this,u),t(this,o).debug(`[${d}]: handler succeeded`),this.activeController=u}catch(m){t(this,o).debug(`[${d}]: handler failed`),t(this,o).debug(m),this.error=S(m,"Unspecified error"),this.removeController(u)}window.addEventListener(B,t(this,M),{signal:t(this,w).signal})})}get captchaDocumentContainer(){return t(this,b)?t(this,b):(f(this,b,document.createElement("div")),t(this,b).id=`ak-captcha-${ee()}`,t(this,b))}renderBody(){return this.error?l`<ak-empty-state icon="fa-times" .defaultLabel=${!1}> 130 <div>${H("The CAPTCHA challenge failed to load.")}</div> 131 <div slot="body">${_({errors:[this.error]})}</div></ak-empty-state 132 >`:this.challenge?.interactive?l` 133 <iframe 134 aria-label=${H("CAPTCHA challenge")} 135 ${G(this.iframeRef)} 136 style="height: ${this.iframeHeight}px;" 137 data-ready=${t(this,T)?"ready":"loading"} 138 class="ak-interactive-challenge" 139 id="ak-captcha" 140 ></iframe> 141 `:W({loading:!0},{heading:H("Verifying...")})}renderMain(){return l`<ak-flow-card .challenge=${this.challenge}> 142 <form class="pf-c-form"> 143 ${re({challenge:this.challenge})} ${this.renderBody()} 144 </form> 145 </ak-flow-card>`}render(){return this.challenge?this.embedded?this.challenge.interactive?this.renderBody():j:this.renderMain():this.embedded?j:W({loading:!0})}connectedCallback(){super.connectedCallback(),window.addEventListener("message",t(this,O),{signal:t(this,w).signal})}disconnectedCallback(){t(this,w).abort(),this.challenge?.interactive||document.body.contains(this.captchaDocumentContainer)&&document.body.removeChild(this.captchaDocumentContainer),super.disconnectedCallback()}firstUpdated(e){super.firstUpdated(e),e.has("challenge")&&this.challenge&&E(this,C,ce).call(this)}updated(e){if(super.updated(e),!(!e.has("refreshedAt")||!this.challenge)&&(t(this,o).debug("refresh triggered"),this.activeController))return this.challenge.interactive?this.activeController.refreshInteractive():this.activeController.refresh()}};o=new WeakMap,R=new WeakMap,T=new WeakMap,b=new WeakMap,w=new WeakMap,O=new WeakMap,C=new WeakSet,ce=function(){if(!this.challenge){t(this,o).debug("No challenge, skipping controller refresh.");return}window.removeEventListener(B,t(this,M)),this.challenge.interactive||document.body.appendChild(this.captchaDocumentContainer);let e=this.challenge?.jsUrl&&URL.canParse(this.challenge.jsUrl)?new URL(this.challenge.jsUrl):null;if(!e){t(this,o).debug("No challenge URL, skipping controller refresh.");return}if(Iterator.from(this.ownerDocument.querySelectorAll("script")).find(i=>i.src===e.href))return t(this,o).debug("Reusing existing script element."),this.activeController?E(this,C,F).call(this,this.activeController):t(this,$).
145call(this);let a=document.createElement("script");a.src=e.toString(),a.async=!0,a.defer=!0,a.onload=t(this,$),document.head.appendChild(a),this.activeController&&(this.removeController(this.activeController),this.activeController=null)},M=new WeakMap,x=new WeakMap,y=new WeakMap,N=new WeakMap,$=new WeakMap,F=async function(e){if(!this.challenge)throw new Error("No challenge available");this.challenge.interactive||await e.execute();let r=this.iframeRef.value;if(!r){t(this,o).debug("No iframe found, skipping.");return}let{contentDocument:a}=r;if(!a){t(this,o).debug("No iframe content window found, skipping.");return}t(this,o).debug("Rendering interactive.");let i=e.prepareURL();if(!i)throw new Error("Could not prepare challenge URL");let d=e.interactive(),u=le(d,{challengeURL:i.toString(),theme:this.activeTheme,scriptOnLoad:!(e instanceof U)});if(e instanceof v||e instanceof L){f(this,R,"about:blank"),requestAnimationFrame(()=>{a.open(),a.write(u),a.close()});return}URL.revokeObjectURL(t(this,R));let m=URL.createObjectURL(new Blob([u],{type:"text/html"}));f(this,R,m),r.src=m},n.styles=[te,J,Q,X,oe],n.controllers=new Set([L,v,U]),g([k({type:Boolean})],n.prototype,"embedded",2),g([k()],n.prototype,"onTokenChange",2),g([k()],n.prototype,"onLoad",2),g([k({attribute:!1})],n.prototype,"refreshedAt",2),g([k({attribute:!1})],n.prototype,"error",2),g([K()],n.prototype,"iframeHeight",2),g([K()],n.prototype,"activeController",2),n=g([V("ak-stage-captcha")],n);var ut=n;export{n as a,ut as b}; 146//# sourceMappingURL=EY3IOIRT.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.