import{Controller}from"stimulus";export default class extends Controller{static targets=["container"];static values={options:Object};static sourceUrl="https://challenges.cloudflare.com/turnstile/v0/api.js";static callbackFunctionName="__turnstileLoadedCallback";loadingState=void 0;loadingPromise={resolve:()=>{},reject:()=>{}};initialize(){this.loadingState=void 0!==window.turnstile?"ready":"unloaded",window[this.constructor.callbackFunctionName]=()=>{this.loadingPromise.resolve(),this.loadingState="ready",delete window[this.constructor.callbackFunctionName]}}connect(){this.hasOptionsValue&&this.loadTurnstile().then(()=>{this.render()}).catch(t=>console.log(t))}render(){window.turnstile.render(this.containerTarget,this.optionsValue)}loadTurnstile(){if("unloaded"===this.loadingState){this.loadingState="loading";const t=`${this.constructor.sourceUrl}?onload=${this.constructor.callbackFunctionName}&render=explicit`,e=document.createElement("script");e.src=t,e.async=!0,e.defer=!0,e.addEventListener("error",()=>{this.loadingPromise.reject("Failed to load Turnstile."),delete window[this.constructor.callbackFunctionName]}),document.head.appendChild(e)}return new Promise((t,e)=>{this.loadingPromise={resolve:t,reject:e},"ready"===this.loadingState&&(t(),delete window[this.constructor.callbackFunctionName])})}}