tweb/public/442.aee5aa5c25ff95c14b4d.ch...

1 line
9.4 KiB
Plaintext

{"version":3,"file":"442.aee5aa5c25ff95c14b4d.chunk.js","mappings":"8HAQe,MAAMA,EAQnBC,YAAYC,GAMVC,KAAKC,QAAUC,SAASC,KAAKC,cAAc,IAAML,EAAQM,WAIzDL,KAAKM,UAAYJ,SAASK,cAAc,OACxCP,KAAKM,UAAUD,UAAY,yBAE3BL,KAAKQ,SAAWN,SAASK,cAAc,OACvCP,KAAKQ,SAASH,UAAY,aAE1BL,KAAKS,MAAQP,SAASK,cAAc,MACjCR,EAAQW,cACTV,KAAKS,MAAME,QAAO,QAAKZ,EAAQW,eAGjCV,KAAKY,SAAWV,SAASK,cAAc,KACvCP,KAAKY,SAASP,UAAY,WACvBN,EAAQc,iBACTb,KAAKY,SAASD,QAAO,QAAKZ,EAAQc,kBAGpCb,KAAKM,UAAUK,OAAOX,KAAKQ,SAAUR,KAAKS,MAAOT,KAAKY,UAEnDb,EAAQe,mBACTd,KAAKe,aAAeb,SAASK,cAAc,OAC3CP,KAAKe,aAAaV,UAAY,gBAC9BL,KAAKM,UAAUK,OAAOX,KAAKe,eAG7Bf,KAAKC,QAAQU,OAAOX,KAAKM,c,sMC3B7B,IAAIU,EAEJ,MA6HA,EARa,IAAI,IAAK,iBAAiB,GArHlB,KACnB,MAAMC,EAAO,IAAI,IAAU,CACzBZ,UAAW,gBACXS,kBAAkB,EAClBJ,aAAc,uBACdG,gBAAiB,4BAGbK,GAAU,OAAO,iCACjBC,EAAc,IAAI,iBAAiB,CAACC,IAAK,eAE/CF,EAAQP,OAAOQ,EAAYlB,SAE3B,MAAMoB,EAAqB,IAAI,IAAmB,CAChDC,MAAO,gBACPC,KAAM,aAOR,IAAIC,EAJJR,EAAgBK,EAAmBI,MAEnCR,EAAKF,aAAaJ,OAAOU,EAAmBf,UAAWY,GAIvD,MAAMQ,EAAW,KAEXF,IACFA,EAAmBG,OAAOC,YAAYF,EAAU,MAGlC,wCAA8CG,MAAMC,IAClEC,EAAQD,EAELC,EAAMC,MACP,OAAeX,EAAmBC,OAAO,QAAW,OAAcS,EAAMC,QAExEX,EAAmBY,eAKzB,IAAIF,EAEJ,MAAMG,EAAYC,IAKhB,GAJGA,IACD,OAAYA,IAGVnB,EAAcoB,MAAMC,OAEtB,YADArB,EAAcsB,UAAUC,IAAI,SAI9B,MAAMC,GAAS,OAAiB,CAACxB,EAAeE,IAAU,GACpDkB,EAAQpB,EAAcoB,MAE5BjB,EAAYsB,OAAO,CAACrB,IAAK,eACzB,MAAMsB,GAAY,OAAaxB,GAE/BG,EAAmBsB,iBAAiB,GAAKC,KAAKC,UAC9CxB,EAAmBsB,iBAAiBP,GAEpC,mCAAyCA,EAAOL,GAAOF,MAAMiB,IAIpD,uBADAA,EAASC,GAEZC,cAAcxB,GACd,8BAAmBK,MAAMoB,IACvBA,EAAEC,QAAQC,WAETC,GAAQA,EAAOC,WAGlBnC,EAAQoC,gBAAgB,YACxBnC,EAAYsB,OAAO,CAACrB,IAAK0B,EAASC,IAClCL,EAAUW,aAGbE,OAAOC,IACRhB,IACAnB,EAAmBI,MAAMa,UAAUC,IAAI,SAEhCiB,EAAIC,KAGPtC,EAAYsB,OAAO,CAACrB,IAAK,0BACzBJ,EAAc0C,SAIlBhB,EAAUW,SAEV3B,SAIJ,QAAiBR,EAASgB,GAE1BlB,EAAc2C,iBAAiB,YAAY,SAAexB,GAIxD,GAHAnC,KAAKsC,UAAUe,OAAO,SACtBlC,EAAYsB,OAAO,CAACrB,IAAK,eAEZ,UAAVe,EAAEf,IACH,OAAOc,OAIX,MAAM0B,EAAO,aAAsB,IAAM,IACnCR,EAAS,IAAI,IAAe/B,EAAoBuC,GAEtD,OADA3C,EAAKT,SAASG,OAAOyC,EAAO9C,WACrBuD,QAAQC,IAAI,CACjBV,EAAOW,OACPrC,QAIuD,MAAM,KAE/DV,EAAcgD,QAGd,yCAA+C,YAAa,CAACjB,EAAG","sources":["webpack://tweb/./src/pages/loginPage.ts","webpack://tweb/./src/pages/pagePassword.ts"],"sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport {LangPackKey, i18n} from '../lib/langPack';\r\n\r\nexport default class LoginPage {\r\n public element: HTMLElement;\r\n public container: HTMLElement;\r\n public imageDiv: HTMLElement;\r\n public inputWrapper: HTMLElement;\r\n public title: HTMLElement;\r\n public subtitle: HTMLParagraphElement;\r\n\r\n constructor(options: {\r\n className: string,\r\n withInputWrapper?: boolean,\r\n titleLangKey?: LangPackKey,\r\n subtitleLangKey?: LangPackKey,\r\n }) {\r\n this.element = document.body.querySelector('.' + options.className) as HTMLDivElement;\r\n // this.element = document.createElement('div');\r\n // this.element.className = 'page-' + options.className;\r\n\r\n this.container = document.createElement('div');\r\n this.container.className = 'container center-align';\r\n\r\n this.imageDiv = document.createElement('div');\r\n this.imageDiv.className = 'auth-image';\r\n\r\n this.title = document.createElement('h4');\r\n if(options.titleLangKey) {\r\n this.title.append(i18n(options.titleLangKey));\r\n }\r\n\r\n this.subtitle = document.createElement('p');\r\n this.subtitle.className = 'subtitle';\r\n if(options.subtitleLangKey) {\r\n this.subtitle.append(i18n(options.subtitleLangKey));\r\n }\r\n\r\n this.container.append(this.imageDiv, this.title, this.subtitle);\r\n\r\n if(options.withInputWrapper) {\r\n this.inputWrapper = document.createElement('div');\r\n this.inputWrapper.className = 'input-wrapper';\r\n this.container.append(this.inputWrapper);\r\n }\r\n\r\n this.element.append(this.container);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport {putPreloader} from '../components/putPreloader';\r\nimport mediaSizes from '../helpers/mediaSizes';\r\nimport {AccountPassword} from '../layer';\r\nimport Page from './page';\r\nimport Button from '../components/button';\r\nimport PasswordInputField from '../components/passwordInputField';\r\nimport PasswordMonkey from '../components/monkeys/password';\r\nimport I18n from '../lib/langPack';\r\nimport LoginPage from './loginPage';\r\nimport cancelEvent from '../helpers/dom/cancelEvent';\r\nimport {attachClickEvent} from '../helpers/dom/clickEvent';\r\nimport htmlToSpan from '../helpers/dom/htmlToSpan';\r\nimport replaceContent from '../helpers/dom/replaceContent';\r\nimport toggleDisability from '../helpers/dom/toggleDisability';\r\nimport wrapEmojiText from '../lib/richTextProcessor/wrapEmojiText';\r\nimport rootScope from '../lib/rootScope';\r\n\r\nconst TEST = false;\r\nlet passwordInput: HTMLInputElement;\r\n\r\nconst onFirstMount = (): Promise<any> => {\r\n const page = new LoginPage({\r\n className: 'page-password',\r\n withInputWrapper: true,\r\n titleLangKey: 'Login.Password.Title',\r\n subtitleLangKey: 'Login.Password.Subtitle'\r\n });\r\n\r\n const btnNext = Button('btn-primary btn-color-primary');\r\n const btnNextI18n = new I18n.IntlElement({key: 'Login.Next'});\r\n\r\n btnNext.append(btnNextI18n.element);\r\n\r\n const passwordInputField = new PasswordInputField({\r\n label: 'LoginPassword',\r\n name: 'password'\r\n });\r\n\r\n passwordInput = passwordInputField.input as HTMLInputElement;\r\n\r\n page.inputWrapper.append(passwordInputField.container, btnNext);\r\n\r\n let getStateInterval: number;\r\n\r\n const getState = () => {\r\n // * just to check session relevance\r\n if(!getStateInterval) {\r\n getStateInterval = window.setInterval(getState, 10e3);\r\n }\r\n\r\n return !TEST && rootScope.managers.passwordManager.getState().then((_state) => {\r\n state = _state;\r\n\r\n if(state.hint) {\r\n replaceContent(passwordInputField.label, htmlToSpan(wrapEmojiText(state.hint)));\r\n } else {\r\n passwordInputField.setLabel();\r\n }\r\n });\r\n };\r\n\r\n let state: AccountPassword;\r\n\r\n const onSubmit = (e?: Event) => {\r\n if(e) {\r\n cancelEvent(e);\r\n }\r\n\r\n if(!passwordInput.value.length) {\r\n passwordInput.classList.add('error');\r\n return;\r\n }\r\n\r\n const toggle = toggleDisability([passwordInput, btnNext], true);\r\n const value = passwordInput.value;\r\n\r\n btnNextI18n.update({key: 'PleaseWait'});\r\n const preloader = putPreloader(btnNext);\r\n\r\n passwordInputField.setValueSilently('' + Math.random()); // prevent saving suggestion\r\n passwordInputField.setValueSilently(value); // prevent saving suggestion\r\n\r\n rootScope.managers.passwordManager.check(value, state).then((response) => {\r\n // console.log('passwordManager response:', response);\r\n\r\n switch(response._) {\r\n case 'auth.authorization':\r\n clearInterval(getStateInterval);\r\n import('./pageIm').then((m) => {\r\n m.default.mount();\r\n });\r\n if(monkey) monkey.remove();\r\n break;\r\n default:\r\n btnNext.removeAttribute('disabled');\r\n btnNextI18n.update({key: response._ as any});\r\n preloader.remove();\r\n break;\r\n }\r\n }).catch((err: any) => {\r\n toggle();\r\n passwordInputField.input.classList.add('error');\r\n\r\n switch(err.type) {\r\n default:\r\n // btnNext.innerText = err.type;\r\n btnNextI18n.update({key: 'PASSWORD_HASH_INVALID'});\r\n passwordInput.select();\r\n break;\r\n }\r\n\r\n preloader.remove();\r\n\r\n getState();\r\n });\r\n };\r\n\r\n attachClickEvent(btnNext, onSubmit);\r\n\r\n passwordInput.addEventListener('keypress', function(this, e) {\r\n this.classList.remove('error');\r\n btnNextI18n.update({key: 'Login.Next'});\r\n\r\n if(e.key === 'Enter') {\r\n return onSubmit();\r\n }\r\n });\r\n\r\n const size = mediaSizes.isMobile ? 100 : 166;\r\n const monkey = new PasswordMonkey(passwordInputField, size);\r\n page.imageDiv.append(monkey.container);\r\n return Promise.all([\r\n monkey.load(),\r\n getState()\r\n ]);\r\n};\r\n\r\nconst page = new Page('page-password', true, onFirstMount, null, () => {\r\n // if(!isAppleMobile) {\r\n passwordInput.focus();\r\n // }\r\n\r\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStatePassword'});\r\n});\r\n\r\nexport default page;\r\n"],"names":["LoginPage","constructor","options","this","element","document","body","querySelector","className","container","createElement","imageDiv","title","titleLangKey","append","subtitle","subtitleLangKey","withInputWrapper","inputWrapper","passwordInput","page","btnNext","btnNextI18n","key","passwordInputField","label","name","getStateInterval","input","getState","window","setInterval","then","_state","state","hint","setLabel","onSubmit","e","value","length","classList","add","toggle","update","preloader","setValueSilently","Math","random","response","_","clearInterval","m","default","mount","monkey","remove","removeAttribute","catch","err","type","select","addEventListener","size","Promise","all","load","focus"],"sourceRoot":""}