PageSourceSearch

https://login.720cloud.io/static/dist/flow/chunk-7EAKTWRW.js

js 720cloud.io collected 2026-09-25 12:19:20 UTC 20,614 bytes, 284 lines download raw bytes

1import{a as h}from"./chunk-2GOU373Y.js";import{a as L}from"./chunk-5KIDWFX2.js";import{a as P}from"./chunk-FLSSQY4S.js";import{c as C}from"./chunk-IFDVRLCM.js";import{a as v}from"./chunk-3ZXF4WD3.js";import{a as W,b as x,c as N}from"./chunk-4EO2KNVY.js";import{a as D,b as q,c as Y}from"./chunk-RCUYZO7A.js";import{a as H,b as y,c as V,i as U}from"./chunk-NOFJ6GXZ.js";import{H as A,I as _,J as u,K as m,M as k}from"./chunk-VM53P45Q.js";import{c as S,g as a,h as M,i as p,m as I,n as l}from"./chunk-WQ3TMWBQ.js";import{d as n}from"./chunk-SYELWAOX.js";function O(r,o){let e=a`<i class="fas fa-share-square" title="${r}"></i>`;if(o){if(o.startsWith("fa://")){let t=o.replaceAll("fa://","");return a`<i class="fas ${t}" title="${r}"></i>`}return a`<img src="${o}" alt="${r}" />`}return e}function B(r,o){return!o||!("shadowRoot"in o)||o.shadowRoot===null?!1:o.shadowRoot.activeElement===r?!0:B(o.shadowRoot.activeElement,o)}var j=y(class extends V{constructor(r){if(super(r),r.type!==H.ATTRIBUTE||r.name!=="class"||r.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(r){return" "+Object.keys(r).filter(o=>r[o]).join(" ")+" "}update(r,[o]){if(this.st===void 0){this.st=new Set,r.strings!==void 0&&(this.nt=new Set(r.strings.join(" ").split(/\s/).filter(t=>t!=="")));for(let t in o)o[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(o)}let e=r.element.classList;for(let t of this.st)t in o||(e.remove(t),this.st.delete(t));for(let t in o){let i=!!o[t];i===this.st.has(t)||this.nt?.has(t)||(i?(e.add(t),this.st.add(t)):(e.remove(t),this.st.delete(t)))}return M}});var F=()=>new R,R=class{},$=new WeakMap,E=y(class extends U{render(r){return p}update(r,[o]){let e=o!==this.Y;return e&&this.Y!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=o,this.ht=r.options?.host,this.rt(this.ct=r.element)),p}rt(r){if(this.isConnected||(r=void 0),typeof this.Y=="function"){let o=this.ht??globalThis,e=$.get(o);e===void 0&&(e=new WeakMap,$.set(o,e)),e.get(this.Y)!==void 0&&this.Y.call(this.ht,void 0),e.set(this.Y,r),r!==void 0&&this.Y.call(this.ht,r)}else this.Y.value=r}get lt(){return typeof this.Y=="function"?$.get(this.ht??globalThis)?.get(this.Y):this.Y?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var w=`.pf-c-input-group {
2  --pf-global--Color--100: var(--pf-global--Color--dark-100);
3  --pf-global--Color--200: var(--pf-global--Color--dark-200);
4  --pf-global--BorderColor--100: var(--pf-global--BorderColor--dark-100);
5  --pf-global--primary-color--100: var(--pf-global--primary-color--dark-100);
6  --pf-global--link--Color: var(--pf-global--link--Color--dark);
7  --pf-global--link--Color--hover: var(--pf-global--link--Color--dark--hover);
8  --pf-global--BackgroundColor--100: var(--pf-global--BackgroundColor--light-100);
9}
10
11.pf-c-input-group {
12  --pf-c-input-group--BackgroundColor: var(--pf-global--BackgroundColor--100);
13  --pf-c-input-group--child--ZIndex: var(--pf-global--ZIndex--xs);
14  --pf-c-input-group__text--FontSize: var(--pf-global--FontSize--md);
15  --pf-c-input-group__text--PaddingRight: var(--pf-global--spacer--sm);
16  --pf-c-input-group__text--PaddingLeft: var(--pf-global--spacer--sm);
17  --pf-c-input-group__text--Color: var(--pf-global--Color--dark-200);
18  --pf-c-input-group__text--BorderWidth: var(--pf-global--BorderWidth--sm);
19  --pf-c-input-group__text--BorderTopColor: var(--pf-global--BorderColor--300);
20  --pf-c-input-group__text--BorderRightColor: var(--pf-global--BorderColor--300);
21  --pf-c-input-group__text--BorderBottomColor: var(--pf-global--BorderColor--200);
22  --pf-c-input-group__text--BorderLeftColor: var(--pf-global--BorderColor--300);
23  --pf-c-input-group__text--BackgroundColor: var(--pf-global--BackgroundColor--100);
24  --pf-c-input-group__textarea--MinHeight: var(--pf-global--spacer--xl);
25  --pf-c-input-group__text--m-disabled--Color: var(--pf-global--disabled-color--100);
26  --pf-c-input-group__text--m-disabled--BackgroundColor: var(--pf-global--disabled-color--300);
27  --pf-c-input-group__text--m-disabled--BorderBottomColor: transparent;
28  --pf-c-input-group--c-form-control--invalid--ZIndex: var(--pf-global--ZIndex--xs);
29  --pf-c-input-group--c-form-control--MarginRight: 0;
30  color: var(--pf-global--Color--100);
31  display: flex;
32  width: 100%;
33  background-color: var(--pf-c-input-group--BackgroundColor);
34}
35.pf-c-input-group.pf-m-plain {
36  --pf-c-input-group--BackgroundColor: transparent;
37}
38.pf-c-input-group > * + * {
39  margin-left: -1px;
40}
41.pf-c-input-group > :focus,
42.pf-c-input-group > :focus-within {
43  z-index: var(--pf-c-input-group--child--ZIndex);
44}
45.pf-c-input-group .pf-c-form-control[aria-invalid=true]:not(:last-child) {
46  margin-right: var(--pf-c-input-group--c-form-control--MarginRight);
47}
48.pf-c-input-group input:not([type=checkbox]):not([type=radio]),
49.pf-c-input-group textarea {
50  flex: 2;
51  min-width: 0;
52}
53.pf-c-input-group textarea {
54  min-height: var(--pf-c-input-group__textarea--MinHeight);
55}
56
57.pf-c-input-group__text {
58  display: flex;
59  align-items: center;
60  padding-right: var(--pf-c-input-group__text--PaddingRight);
61  padding-left: var(--pf-c-input-group__text--PaddingLeft);
62  font-size: var(--pf-c-input-group__text--FontSize);
63  color: var(--pf-c-input-group__text--Color);
64  text-align: center;
65  background-color: var(--pf-c-input-group__text--BackgroundColor);
66  border: var(--pf-c-input-group__text--BorderWidth) solid;
67  border-color: var(--pf-c-input-group__text--BorderTopColor) var(--pf-c-input-group__text--BorderRightColor) var(--pf-c-input-group__text--BorderBottomColor) var(--pf-c-input-group__text--BorderLeftColor);
68}
69label.pf-c-input-group__text {
70  cursor: pointer;
71}
72
73.pf-c-input-group__text.pf-m-plain {
74  --pf-c-input-group__text--BorderWidth: 0;
75  margin-left: 0;
76}
77.pf-c-input-group__text.pf-m-disabled {
78  --pf-c-input-group__text--Color: var(--pf-c-input-group__text--m-disabled--Color);
79  --pf-c-input-group__text--BackgroundColor: var(--pf-c-input-group__text--m-disabled--BackgroundColor);
80  --pf-c-input-group__text--BorderBottomColor: var(--pf-c-input-group__text--m-disabled--BorderBottomColor);
81}
82
83:where(.pf-theme-dark) .pf-c-input-group {
84  --pf-c-input-group--BackgroundColor: transparent;
85  --pf-c-input-group__text--BorderTopColor: transparent;
86  --pf-c-input-group__text--BorderRightColor: transparent;
87  --pf-c-input-group__text--BorderBottomColor: var(--pf-global--BorderColor--400);
88  --pf-c-input-group__text--BorderLeftColor: transparent;
89  --pf-c-input-group__text--BackgroundColor: var(--pf-global--palette--black-600);
90  --pf-c-input-group__text--m-disabled--Color: var(--pf-global--palette--black-100);
91  --pf-c-input-group__text--m-disabled--BackgroundColor: var(--pf-global--disabled-color--200);
92}
93:where(.pf-theme-dark) .pf-c-input-group > * + * {
94  margin-left: 0;
95  border-left: 1px solid var(--pf-global--palette--black-700);
96}
97:where(.pf-theme-dark) .pf-c-input-group__text {
98  --pf-c-input-group__text--BorderTopColor: transparent;
99  --pf-c-input-group__text--BorderRightColor: transparent;
100  --pf-c-input-group__text--BorderBottomColor: var(--pf-global--BorderColor--400);
101  --pf-c-input-group__text--BorderLeftColor: transparent;
102}
103:where(.pf-theme-dark) .pf-c-input-group__text.pf-m-plain {
104  --pf-c-input-group__text--BackgroundColor: transparent;
105}
106:where(.pf-theme-dark) .pf-c-input-group__text.pf-m-disabled {
107  --pf-c-input-group__text--BackgroundColor: var(--pf-c-input-group__text--m-disabled--BackgroundColor);
108  color: var(--pf-c-input-group__text--m-disabled--Color);
109}`;var f={Reveal:{icon:"fa-eye",label:l("Show password")},Mask:{icon:"fa-eye-slash",label:l("Hide password")}},s=class extends A{constructor(){super(...arguments);this.inputId="ak-stage-password-input";this.name="password";this.label=l("Password");this.placeholder=l("Please enter your password");this.initialValue="";this.errors={};this.allowShowPassword=!1;this.passwordVisible=!1;this.grabFocus=!1;this.inputRef=F();this.toggleVisibilityRef=F();this.capsLock=!1}static get styles(){return[k,w,x,v]}togglePasswordVisibility(e){e?.stopPropagation(),e?.preventDefault();let t=this.inputRef.value;if(!t){console.warn("ak-flow-password-input: unable to identify input field");return}t.type=t.type==="password"?"text":"password",this.syncVisibilityToggle(t)}capsLockListener(e){this.capsLock=e.getModifierState("CapsLock")}observeInputFocus(){this.grabFocus&&(this.inputFocusIntervalID=setInterval(()=>{let e=this.inputRef.value;e&&(B(e,document.activeElement)&&(console.debug("authentik/stages/password: cleared focus observer"),clearInterval(this.inputFocusIntervalID)),e.focus())},10),console.debug("authentik/stages/password: started focus observer"))}connectedCallback(){super.connectedCallback(),this.observeInputFocus(),addEventListener("keydown",this.capsLockListener),addEventListener("keyup",this.capsLockListener)}disconnectedCallback(){this.inputFocusIntervalID&&clearInterval(this.inputFocusIntervalID),super.disconnectedCallback(),removeEventListener("keydown",this.capsLockListener),removeEventListener("keyup",this.capsLockListener)}createRenderRoot(){return this}syncVisibilityToggle(e=this.inputRef.value){if(!e)return;let t=this.toggleVisibilityRef.value;if(!t)return;let i=e.type==="password";t.setAttribute("aria-label",i?f.Reveal.label:f.Mask.label);let c=t.querySelector("i");c.classList.remove(f.Mask.icon,f.Reveal.icon),c.classList.add(i?f.Reveal.icon:f.Mask.icon)}renderVisibilityToggle(){if(!this.allowShowPassword)return p;let{label:e,icon:t}=this.passwordVisible?f.Mask:f.Reveal;return a`<button
110            ${E(this.toggleVisibilityRef)}
111            aria-label=${e}
112            @click=${this.togglePasswordVisibility}
113            class="pf-c-button pf-m-control"
114            type="button"
115        >
116            <i class="fas ${t}" aria-hidden="true"></i>
117        </button>`}renderHelperText(){return this.capsLock?a`<div
118            class="pf-c-form__helper-text"
119            id="helper-text-form-caps-lock-helper"
120            aria-live="polite"
121        >
122            <div class="pf-c-helper-text">
123                <div class="pf-c-helper-text__item pf-m-warning">
124                    <span class="pf-c-helper-text__item-icon">
125                        <i class="fas fa-fw fa-exclamation-triangle" aria-hidden="true"></i>
126                    </span>
127
128                    <span class="pf-c-helper-text__item-text">${l("Caps Lock is enabled.")}</span>
129                </div>
130            </div>
131        </div>`:p}render(){return a` <ak-form-element
132            label="${this.label}"
133            required
134            class="pf-c-form__group"
135            .errors=${this.errors}
136        >
137            <div class="pf-c-form__group-control">
138                <div class="pf-c-input-group">
139                    <input
140                        type=${this.passwordVisible?"text":"password"}
141                        id=${this.inputId}
142                        name=${this.name}
143                        placeholder=${this.placeholder}
144                        autocomplete="current-password"
145                        class="${j({"pf-c-form-control":!0,"pf-m-icon":!0,"pf-m-caps-lock":this.capsLock})}"
146                        required
147                        aria-invalid=${q(this.invalid)}
148                        value=${this.initialValue}
149                        ${E(this.inputRef)}
150                    />
151
152                    ${this.renderVisibilityToggle()}
153                </div>
154
155                ${this.renderHelperText()}
156            </div>
157        </ak-form-element>`}};n([u({type:String,attribute:"input-id"})],s.prototype,"inputId",2),n([u({type:String})],s.prototype,"name",2),n([u({type:String})],s.prototype,"label",2),n([u({type:String})],s.prototype,"placeholder",2),n([u({type:String,attribute:"prefill"})],s.prototype,"initialValue",2),n([u({type:Object})],s.prototype,"errors",2),n([u({type:String})],s.prototype,"invalid",2),n([u({type:Boolean,attribute:"allow-show-password"})],s.prototype,"allowShowPassword",2),n([u({type:Boolean,attribute:"password-visible"})],s.prototype,"passwordVisible",2),n([u({type:Boolean,attribute:"grab-focus"})],s.prototype,"grabFocus",2),n([m()],s.prototype,"capsLock",2),n([C],s.prototype,"togglePasswordVisibility",1),n([C],s.prototype,"capsLockListener",1),s=n([_("ak-flow-input-password")],s);var T={password:void 0,totp:void 0},K=new Intl.ListFormat("default",{style:"short",type:"disjunction"}),g=class extends Y{constructor(){super(...arguments);this.captchaToken="";this.captchaRefreshedAt=new Date}static get styles(){return[k,P,w,N,W,x,D,v,S`
158                .pf-c-login__main-footer-links-item button {
159                    background-color: transparent;
160                    border: 0;
161                    display: flex;
162                    align-items: stretch;
163                }
164                .pf-c-login__main-footer-links-item img {
165                    fill: var(--pf-c-login__main-footer-links-item-link-svg--Fill);
166                    width: 100px;
167                    max-width: var(--pf-c-login__main-footer-links-item-link-svg--Width);
168                    height: 100%;
169                    max-height: var(--pf-c-login__main-footer-links-item-link-svg--Height);
170                }
171            `]}updated(e){e.has("challenge")&&this.challenge!==void 0&&(this.autoRedirect(),this.createHelperForm())}autoRedirect(){if(!this.challenge||this.challenge.sources?.length!==1||(this.challenge.userFields||[]).length!==0||this.challenge.passwordlessUrl)return;let e=this.challenge.sources[0];this.host.challenge=e.challenge}createHelperForm(){let e="ShadyDOM"in window;if(this.form=document.createElement("form"),document.documentElement.appendChild(this.form),!e){let i=document.createElement("input");i.setAttribute("type","text"),i.setAttribute("name","username"),i.setAttribute("autocomplete","username"),i.onkeyup=c=>{let d=c.target;(this.shadowRoot||this).querySelectorAll("input[name=uidField]").forEach(b=>{b.value=d.value,b.focus()})},this.form.appendChild(i)}if(!e&&!this.challenge.passwordFields){let i=document.createElement("input");i.setAttribute("type","password"),i.setAttribute("name","password"),i.setAttribute("autocomplete","current-password"),i.onkeyup=c=>{c.key=="Enter"&&this.submitForm(c);let d=c.target;T.password=d.value,(this.shadowRoot||this).querySelectorAll("input[name=uidField]").forEach(b=>{b.focus()})},this.form.appendChild(i)}let t=document.createElement("input");t.setAttribute("type","text"),t.setAttribute("name","code"),t.setAttribute("autocomplete","one-time-code"),t.onkeyup=i=>{i.key=="Enter"&&this.submitForm(i);let c=i.target;T.totp=c.value,(this.shadowRoot||this).querySelectorAll("input[name=uidField]").forEach(d=>{d.focus()})},this.form.appendChild(t)}onSubmitSuccess(){this.form&&this.form.remove()}onSubmitFailure(){this.captchaRefreshedAt=new Date}renderSource(e){let t=O(e.name,e.iconUrl);return a`<li class="pf-c-login__main-footer-links-item">
172            <button
173                type="button"
174                @click=${()=>{this.host&&(this.host.challenge=e.challenge)}}
175                class=${this.challenge.showSourceLabels?"pf-c-button pf-m-link":""}
176            >
177                <span class="pf-c-button__icon pf-m-start">${t}</span>
178                ${this.challenge.showSourceLabels?e.name:""}
179            </button>
180        </li>`}renderFooter(){return!this.challenge?.enrollUrl&&!this.challenge?.recoveryUrl?p:a`<div class="pf-c-login__main-footer-band">
181            ${this.challenge.enrollUrl?a`<p class="pf-c-login__main-footer-band-item">
182                      ${l("Need an account?")}
183                      <a id="enroll" href="${this.challenge.enrollUrl}">${l("Sign up.")}</a>
184                  </p>`:p}
185            ${this.challenge.recoveryUrl?a`<p class="pf-c-login__main-footer-band-item">
186                      <a id="recovery" href="${this.challenge.recoveryUrl}"
187                          >${l("Forgot username or password?")}</a
188                      >
189                  </p>`:p}
190        </div>`}renderInput(){let e="text";if(!this.challenge?.userFields||this.challenge.userFields.length===0)return a`<p>${l("Select one of the options below to continue.")}</p>`;let t=(this.challenge?.userFields||[]).sort();t.includes(h.Email)&&t.length===1&&(e="email");let i={[h.Username]:l("Username"),[h.Email]:l("Email"),[h.Upn]:l("UPN")},c=K.format(t.map(d=>i[d]));return a`${this.challenge.flowDesignation===L.Recovery?a`
191                      <p>
192                          ${l("Enter the email associated with your account, and we'll send you a link to reset your password.")}
193                      </p>
194                  `:p}
195            <ak-form-element
196                label=${c}
197                required
198                class="pf-c-form__group"
199                .errors=${(this.challenge.responseErrors||{}).uid_field}
200            >
201                <input
202                    type=${e}
203                    name="uidField"
204                    placeholder=${c}
205                    autofocus=""
206                    autocomplete="username"
207                    spellcheck="false"
208                    class="pf-c-form-control"
209                    required
210                />
211            </ak-form-element>
212            ${this.challenge.passwordFields?a`
213                      <ak-flow-input-password
214                          label=${l("Password")}
215                          inputId="ak-stage-identification-password"
216                          required
217                          class="pf-c-form__group"
218                          .errors=${(this.challenge?.responseErrors||{}).password}
219                          ?allow-show-password=${this.challenge.allowShowPassword}
220                          prefill=${T.password??""}
221                      ></ak-flow-input-password>
222                  `:p}
223            ${this.renderNonFieldErrors()}
224            ${this.challenge.captchaStage?a`
225                      <input name="captchaToken" type="hidden" .value="${this.captchaToken}" />
226                      <ak-stage-captcha
227                          .challenge=${this.challenge.captchaStage}
228                          .onTokenChange=${d=>{this.captchaToken=d}}
229                          .refreshedAt=${this.captchaRefreshedAt}
230                          embedded
231                      ></ak-stage-captcha>
232                  `:p}
233            <div class="pf-c-form__group pf-m-action">
234                <button type="submit" class="pf-c-button pf-m-primary pf-m-block">
235                    ${this.challenge.primaryAction}
236                </button>
237            </div>
238            ${this.challenge.passwordlessUrl?a`<ak-divider>${l("Or")}</ak-divider>`:p}`}render(){return this.challenge?a`<header class="pf-c-login__main-header">
239                <h1 class="pf-c-title pf-m-3xl">${this.challenge.flowInfo?.title}</h1>
240            </header>
241            <div class="pf-c-login__main-body">
242                <form
243                    class="pf-c-form"
244                    @submit=${e=>{this.submitForm(e)}}
245                >
246                    ${this.challenge.applicationPre?a`<p>
247                              ${l(I`Login to continue to ${this.challenge.applicationPre}.`)}
248                          </p>`:p}
249                    ${this.renderInput()}
250                    ${this.challenge.passwordlessUrl?a`
251                              <div>
252                                  <a
253                                      href=${this.challenge.passwordlessUrl}
254                                      class="pf-c-button pf-m-secondary pf-m-block"
255                                  >
256                                      ${l("Use a security key")}
257                                  </a>
258                              </div>
259                          `:p}
260                </form>
261            </div>
262            <footer class="pf-c-login__main-footer">
263                <ul class="pf-c-login__main-footer-links">
264                    ${(this.challenge.sources||[]).map(e=>this.renderSource(e))}
265                </ul>
266                ${this.renderFooter()}
267            </footer>`:a`<ak-empty-state loading> </ak-empty-state>`}};n([m()],g.prototype,"captchaToken",2),n([m()],g.prototype,"captchaRefreshedAt",2),g=n([_("ak-stage-identification")],g);export{w as a,T as b,K as c,g as d};
268/*! Bundled license information:
269
270lit-html/directives/class-map.js:
271  (**
272   * @license
273   * Copyright 2018 Google LLC
274   * SPDX-License-Identifier: BSD-3-Clause
275   *)
276
277lit-html/directives/ref.js:
278  (**
279   * @license
280   * Copyright 2020 Google LLC
281   * SPDX-License-Identifier: BSD-3-Clause
282   *)
283*/
284//# sourceMappingURL=chunk-7EAKTWRW.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.