{"version":3,"sources":["Services/WebService.ts","TokenContext.ts","Components/EnrollmentDatePanel.tsx","Components/ManagerContacts.tsx","Components/SideStepsPanel.tsx","filesHelper.tsx","Components/Fields/FileField.tsx","Components/Fields/SelectWithChoice.tsx","Components/Fields/FIASField.tsx","Components/Fields/BankAccountField.tsx","Components/Steps/DocumentsUploadStep.tsx","Components/Common/FileLink.tsx","Components/Common/SMSCodePanel.tsx","Components/InnerDocuments.tsx","Components/Steps/SigningStep.tsx","Components/Fields/FileItem.tsx","Components/Steps/UNEPStep.tsx","Components/Steps/FinalStep.tsx","Components/CommunityDescription.tsx","Components/CommunititesWidget.tsx","Components/OffersWidget.tsx","Components/Steps/SocialStep.tsx","Components/Fields/HireCalendar.tsx","Services/UseWindowDimensions.ts","Components/Steps/SelectHireDateStep.tsx","Components/Steps/OfferStep.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["serviceUrl","WebService","token","axiosInstance","this","axios","create","withCredentials","interceptors","request","use","config","headers","Authorization","get","data","post","guid","params","filesData","nnDocType","requestData","docId","fileId","level","parentLevel","parentGuid","addressType","adress","bankId","accNum","file","bodyFormData","FormData","append","id","slotId","decision","comment","TokenContext","React","createContext","EnrollmentDatePanel","props","context","state","enrollmentDate","undefined","GetSlot","then","res","setState","dayjs","slotDate","toDate","time","beginTime","className","cn","collapsed","meetingLink","format","href","style","height","src","Component","contextType","ManagerContacts","isLoading","isContactOpen","GetUserInfo","managerInfo","Manager","result","Loader","width","renderBody","onClick","icon64","label","shortName","Dialog","open","onChange","fullName","email","telegram","Button","size","e","stopPropagation","Steps","number","description","SideStepsPanel","useState","setOpen","renderItem","s","n","currentMaxStep","currentStep","key","onStepChange","type","checked","display","map","i","emplManagerInfo","_","ArrowRight","ArrowLeft","getBase64","Promise","resolve","reject","fileReader","FileReader","onload","readAsDataURL","FileField","fileInput","createRef","DownloadDocument","nnDoc","a","document","createElement","fileData","download","fileName","click","isNew","DownloadFile","name","Typography","variant","weight","isRequired","current","info","ref","multiple","accept","acceptExtensions","event","target","files","f","FileItem","SelectWithChoice","optionsRef","wrapperRef","showOptions","keySelectedIndex","handleClickOutside","bind","addEventListener","capture","removeEventListener","innerInputRef","focus","optionsUp","options","o","onSelectOption","ReturnFocus","value","onFocus","currentInput","onInputChange","onKeyDown","checkKeyDown","disabled","newIndex","length","optElement","getElementById","scrollHeight","offsetHeight","scrollTo","selectedKey","contains","FIASField","loadedAdresses","loadedOptions","initAdress","optionsLoad","GetOptions","GetFiasAdressList","mapPartToString","filter","toLowerCase","indexOf","part","artShort","resultArray","houseNum","push","houseStruc","houseCorp","houseBuild","join","levels","Object","keys","val","parseInt","Math","max","currentValue","item","find","deleteCount","getMaxLevel","currentVal","getFIASParts","newValLength","split","oldLength","newVal","deleteLastFromAdress","onValueChange","newLevel","filterVal","replace","trim","filterOptions","newValue","addToAdress","BankAccountField","accountNumberInput","account","cardId","loadedBanks","bankBic","ws","GetBanks","bo","toString","bic","bankName","GetCard","card","selectedBank","b","accountNum","filteredOptions","accountChanged","bank","onAccountChange","paddingTop","onSave","DocumentsUploadStep","adressesSame","fiasRerenderKey1","fiasRerenderKey2","fields","nextFileId","isUploadError","newFields","fieldIndex","findIndex","v","existsFiles","Array","from","forEach","prevState","dataPromises","fld","filesPromises","file64","all","PostFileInfo","items","strDocCode","InitFields","catch","ex","onError","adressReal","adressR","values","SaveFiasAdress","adressOff","adressOfficial","InitAdress","GetPersonalDocuments","pDocs","d","fieldTitle","fieldName","GetFiasAdress","initAdressOfficial","address","initAdressReal","rerenderKey","random","adressChanged","CheckboxField","saveAdress","filesAlreadyDownload","fl","isClient","rel","fi","uploadFieldDoc","AdressFields","SaveCard","color","uploadDocs","FileLink","loading","setLoading","Consumer","docTitle","SMSCodePanel","smscode","setSMSCode","setIsLoading","message","code","SendCodeUNEPDocuments","confirmId","docIds","afterAction","InnerDocuments","GetInnerDocuments","group","selectedGroup","index","selectedDoc","title","dangerouslySetInnerHTML","__html","body","groups","self","g","renderGroup","SigningStep","docs","isBtnLoading","isBtnDisabled","signedDocs","GetDocs","GetSigningDocs","field","SignUNEPDocuments","showCodePanel","phones","newField","filesToUpload","firstDocs","secondDocs","firstDocEnableSign","isSigned","secondDocEnableSign","marginBottom","showInnerDocs","strDocType","SignDocuments","endAction","DialogTitle","DialogContent","DialogActions","isAddItem","UNEPStep","InitStatus","GetUNEPStatus","docTypeName","documentID","docTypeNumber","docType","status","unepStatus","data64","DownloadDoc","SignDocument","UploadDoc","GetNewUNEP","renderStepByStatus","FinalStep","margin","textAlign","window","CommunititesWidget","GetCommunity","Id","Title","Description","Image64","image64","communities","GetCommunities","selectedId","alt","minWidth","onBackdropClick","justifyContent","cursor","OffersWidget","offers","openGroups","GetOffers","offerGroup","toggleTab","newOpenGroup","openIndex","splice","offer","renderOfferTab","imageExtensions","require","SocialStep","coworkers","GetPhoto","photo","GetCoworkers","console","log","tytle","firstName","strPost","ArrowlineDown","UploadPhoto","ext","c","renderCoworkerItem","weekdayPlug","extend","locale","HireCalendar","slots","today","freeSlots","sort","getTime","startDate","setStartDate","dateMobile","setDateMobile","firstDayOfTheMonth","useMemo","startOf","firstDayOfFirstWeekOfMonth","generateFirstDayOfEachWeek","useCallback","day","dates","date","clone","add","month","getMonth","generateWeek","generateWeeksOfTheMonth","generateCalendarHeader","weekday","h","hi","GetSlots","sl","toISOString","j","sameMonth","date1","date2","getFullYear","isMobile","fontWeight","slot","onSelect","generateMobileSlots","week","wi","di","slotsDivs","getDate","generateDayJSX","getWindowDimensions","innerWidth","innerHeight","OfferStep","windowDimensions","setWindowDimensions","useEffect","handleResize","useWindowDimensions","SelectHireDateStepInner","selectedSlotId","managerName","selectedSlot","GetFreeSlots","loadSelect","SelectSlot","marginTop","OnAccept","personalDataAccess","GetOffer","offerData","listString","itemRender","p","desicion","AcceptOffer","cancelCause","strDepartment","probationSalary","salary","probation","goals","SplitOfferList","bonuses","passed","OnDecision","cancelPanelOpen","isOpen","contentLabel","ariaHideApp","content","left","top","position","transform","borderRadius","overlay","zIndex","overlayClassName","TextArea","minRows","App","widgetElementRef","isInfoPanelOpen","errorMessage","candidateGUID","managerGUID","step","managerURL","initAuth","GetUserData","success","exception","userAgentString","navigator","userAgent","chromeAgent","safariAgent","appName","appVersion","lang","theme","env","provider","events","onLoginSuccess","TxAuthWidget","new","widget","subscribeJWT","userToken","unmount","mount","shortMessage","fullMessage","ThemeProvider","Provider","renderSafariAlarm","checkIfSafari","emplManagerGUID","emplManagerURL","location","short","full","errorHandle","userGuid","renderStepBody","right","bottom","marginRight","overflowY","Snackbar","icon","DismissCircle","ClickAwayListenerProps","onClickAway","onClose","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","error","formRoot","ReactDOM","render","URL","process","origin","fetch","response","contentType","ready","unregister","reload","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.8efc79ee.chunk.js","sourcesContent":["import axios, { AxiosInstance } from \"axios\";\r\nimport { IEdocsCodeData, IEdocsSignData, InfoData, IUploadFileData } from \"./RequestsData\";\r\nimport { IUserInfo, IRequiredDoc, IFiasAdress, ICoworkersInfo, ICommunityShort, CardData, IRecruitmentDateSlotResponse, IOfferData, ICommunityFull, IOfferShort, } from \"./ResponseData\";\r\n\r\n//const serviceUrl = \"http://localhost:51798/api\";\r\n//const serviceUrl = \"http://msa-corpr1-ap1:3008/api\";\r\nconst serviceUrl = \"https://onboard.finam.ru/api\";\r\n\r\n\r\nexport class WebService {\r\n private readonly axiosInstance: AxiosInstance;\r\n\r\n constructor(token: string) {\r\n this.axiosInstance = axios.create({\r\n withCredentials: true,\r\n });\r\n this.axiosInstance.interceptors.request.use(function (config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!config.headers) {\r\n config.headers = {};\r\n }\r\n config.headers.Authorization = token;\r\n return config;\r\n });\r\n }\r\n\r\n public async GetUserData(): Promise<{ userName: string, stepNumber: number, success: boolean, exception: string, requestData: InfoData, isClient: boolean }> {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/auth?step=4\");\r\n return request.data;\r\n }\r\n\r\n public async GetNewUNEP(): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/kadry/getUnep\");\r\n return request.data;\r\n }\r\n\r\n public async GetUNEPStatus(): Promise<{ document: { id: number, title: string, docType: number }, unepStatus: number, message: string }> {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/unepStatus\");\r\n return request.data;\r\n }\r\n\r\n public async GetUserInfo(guid: string): Promise<{ result: IUserInfo }> {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/userinfo\", { params: { guid } });\r\n return request.data;\r\n }\r\n\r\n public async PostFileInfo(filesData: IUploadFileData): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/kadry/uploadDoc\", filesData);\r\n return request.data;\r\n }\r\n\r\n public async GetPersonalDocuments(nnDocType?: number): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/persDocs\", { params: { nnDocType } });\r\n return request.data;\r\n }\r\n\r\n public async SignUNEPDocuments(requestData: IEdocsSignData): Promise<{ phones: string, confirmId: string }> {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/edocs/sign\", requestData);\r\n return request.data;\r\n }\r\n\r\n public async GetSigningDocs(): Promise<{ nnDoc: number, strDocType: string, nnDocType: number, isSigned: boolean }[]> {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/getSignDocuments\");\r\n return request.data;\r\n }\r\n\r\n public async SendCodeUNEPDocuments(requestData: IEdocsCodeData): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/edocs/code\", requestData);\r\n return request.data;\r\n }\r\n\r\n public async DownloadDocument(docId: number, fileId: number): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/edocs/download\", { params: { docId, fileId } });\r\n return request.data;\r\n }\r\n\r\n public async GetInnerDocuments(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/innerDocuments\");\r\n return request.data;\r\n }\r\n\r\n\r\n public async GetFiasAdressList(level: number, parentLevel: number, parentGuid?: string): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/FIAS/adressList\", { params: { level, parentLevel, parentGuid } });\r\n return request.data || [];\r\n }\r\n\r\n public async SaveFiasAdress(addressType: number, adress: IFiasAdress[]): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/FIAS/saveAdress\", { addressType, adress });\r\n return request.data;\r\n }\r\n\r\n public async GetFiasAdress(addressType: number): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/FIAS/adress\", { params: { addressType } });\r\n return request.data;\r\n }\r\n\r\n public async GetBanks(): Promise<{ bankId: number, bic: string, bankName: string, bankFullName: string }[]> {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/banksList\");\r\n return request.data;\r\n }\r\n\r\n public async SaveCard(bankId: number, accNum: string): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/kadry/card\", { bankId, accNum });\r\n return request.data;\r\n }\r\n\r\n public async GetCard(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/card\");\r\n return request.data;\r\n }\r\n\r\n public async GetPhoto(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/kadry/myphoto\");\r\n return request.data;\r\n }\r\n\r\n public async GetCoworkers(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/coworkers\");\r\n return request.data;\r\n }\r\n\r\n public async UploadPhoto(file: File): Promise {\r\n var bodyFormData = new FormData();\r\n bodyFormData.append(\"image\", file);\r\n var request = await this.axiosInstance.post(serviceUrl + \"/kadry/uploadPhoto\", bodyFormData, { headers: { \"Content-Type\": \"multipart/form-data\" } });\r\n return request.data;\r\n }\r\n\r\n public async GetCommunities(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/communities\");\r\n return request.data;\r\n }\r\n\r\n public async GetOffers(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/offers\");\r\n return request.data;\r\n }\r\n\r\n public async GetCommunity(id: number): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/sharepoint/community\", { params: { id } });\r\n return request.data;\r\n }\r\n\r\n public async GetFreeSlots(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/offer/freeSlots\");\r\n return request.data;\r\n }\r\n\r\n public async GetSlot(slotId: number): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/offer/slot\", { params: { slotId } });\r\n return request.data;\r\n }\r\n\r\n public async SelectSlot(slotId: number): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/offer/selectSlot\", { slotId });\r\n return request.data;\r\n }\r\n\r\n public async GetOffer(): Promise {\r\n var request = await this.axiosInstance.get(serviceUrl + \"/offer/offer\");\r\n return request.data;\r\n }\r\n\r\n public async AcceptOffer(decision: boolean, comment: string): Promise {\r\n var request = await this.axiosInstance.post(serviceUrl + \"/offer/offer\", { decision, comment });\r\n return request.data;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import React from \"react\";\r\n\r\nexport const TokenContext = React.createContext({ token: '' });","import dayjs from 'dayjs';\r\nimport React from 'react';\r\nimport { WebService } from '../Services/WebService';\r\nimport { TokenContext } from '../TokenContext';\r\nimport './EnrollmentDatePanel.scss'\r\nimport cn from 'classnames'\r\n\r\ninterface IProps {\r\n slotId: number;\r\n collapsed?: boolean;\r\n meetingLink?: string;\r\n}\r\n\r\ninterface IState {\r\n enrollmentDate?: Date;\r\n time?: string;\r\n}\r\n\r\n\r\nexport default class EnrollmentDatePanel extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n enrollmentDate: undefined\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n new WebService(this.context.token).GetSlot(this.props.slotId)\r\n .then(res => this.setState({ enrollmentDate: dayjs(res.slotDate).toDate(), time: res.beginTime }));\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n
\r\n
Дата и время оформления:
\r\n {!!this.state.enrollmentDate &&
{dayjs(this.state.enrollmentDate).format(\"DD.MM.YYYY\")} в {this.state.time}
}\r\n
\r\n {this.props.meetingLink &&
\r\n \r\n
Live с менеджером
}\r\n
\r\n
\r\n }\r\n\r\n}\r\n","import Modal from 'react-modal';\r\nimport { Button, Dialog, Loader, Typography } from '@finam/web-ui-kit';\r\nimport React, { useEffect } from 'react';\r\nimport { IUserInfo } from '../Services/ResponseData';\r\nimport { WebService } from '../Services/WebService';\r\nimport './ManagerContacts.scss'\r\nimport { TokenContext } from '../TokenContext';\r\nimport cn from 'classnames'\r\n\r\n\r\ninterface State {\r\n Manager?: IUserInfo,\r\n isLoading: boolean,\r\n isContactOpen: boolean\r\n}\r\n\r\ninterface IProps {\r\n label: string,\r\n managerInfo: { guid: string, telegram: string | undefined },\r\n collapsed?: boolean\r\n}\r\n\r\nexport default class ManagerContacts extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n isContactOpen: false\r\n }\r\n }\r\n\r\n // handleClickOutside(event: any) {\r\n // if (this.modalDiv && this.modalDiv.current && !this.modalDiv.current.contains(event.target)) {\r\n // this.setState({ isContactOpen: false });\r\n // }\r\n // };\r\n\r\n componentDidMount() {\r\n new WebService(this.context.token).GetUserInfo(this.props.managerInfo.guid)\r\n .then(res =>\r\n this.setState({ Manager: res.result, isLoading: false }))\r\n }\r\n\r\n\r\n render(): React.ReactNode {\r\n return
\r\n {this.state.isLoading ? : this.renderBody()}\r\n
\r\n }\r\n\r\n renderBody(): JSX.Element {\r\n const closeModal =\r\n () => this.setState({ isContactOpen: false });\r\n const openModal =\r\n () => this.setState({ isContactOpen: true });\r\n\r\n return
{ openModal(); }}>\r\n
\r\n \r\n
\r\n
\r\n
{this.props.label}
\r\n
{this.props.label}
\r\n
{this.state.Manager?.shortName}
\r\n
\r\n
\r\n {\r\n this.setState({ isContactOpen: false });\r\n }}>\r\n
\r\n \r\n

{this.props.label}

\r\n

{this.state.Manager?.fullName}

\r\n
\r\n

Задать вопрос:

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\nimport './SideStepsPanel.scss';\r\nimport cn from 'classnames'\r\nimport { Icon } from '@finam/web-ui-kit/Input/Input.styles';\r\nimport { ArrowLeft, ArrowRight } from '@finam/web-ui-kit/Icons/Arrow';\r\nimport EnrollmentDatePanel from './EnrollmentDatePanel';\r\nimport ManagerContacts from './ManagerContacts';\r\n\r\n\r\ninterface ISidePanelProps {\r\n currentStep: number,\r\n currentMaxStep: number,\r\n onStepChange: (step: number) => void,\r\n slotId?: number;\r\n managerInfo?: { guid: string, telegram: string | undefined };\r\n emplManagerInfo?: { guid: string, telegram: string | undefined };\r\n meetingLink?: string;\r\n}\r\n\r\ninterface IStepItem {\r\n number: number;\r\n description: string\r\n}\r\n\r\nconst Steps: IStepItem[] = [\r\n { number: 1, description: 'Принятие оффера' },\r\n { number: 3, description: 'Выбор даты выхода' },\r\n { number: 4, description: 'Получение УНЭП' },\r\n { number: 5, description: 'Загрузка документов' },\r\n { number: 6, description: 'Познакомиться с коллегами' },\r\n { number: 7, description: 'Подписание документов' },\r\n { number: 8, description: 'Завершение' }\r\n];\r\n\r\nexport const SideStepsPanel: React.FC = (props) => {\r\n const [open, setOpen] = useState(false);\r\n\r\n\r\n const renderItem = (s: IStepItem, n: number) => {\r\n return
{ if (s.number <= props.currentMaxStep) props.onStepChange(s.number); }}>\r\n
{n}
\r\n
{s.description}
\r\n
\r\n }\r\n\r\n const renderCurrentItem = () => {\r\n const currentStepIndex = Steps.findIndex(s => s.number == props.currentStep);\r\n return currentStepIndex > -1 ? renderItem(Steps[currentStepIndex], currentStepIndex + 1) : undefined;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n

Этапы оформления

\r\n
\r\n {Steps.map((s, i) => renderItem(s, i + 1))}\r\n {!!props.slotId && props.slotId > 0 && }\r\n
\r\n {!!props.managerInfo?.guid && }\r\n {!!props.emplManagerInfo?.guid && }\r\n
\r\n
setOpen(true)}>
\r\n
\r\n\r\n
\r\n {Steps.map((s, i) => renderItem(s, i + 1))}\r\n {!!props.slotId && props.slotId > 0 && }\r\n
Ваши менеджеры:
\r\n
\r\n {!!props.managerInfo?.guid && }\r\n {!!props.emplManagerInfo?.guid && }\r\n
\r\n
setOpen(false)}>
\r\n
\r\n\r\n
\r\n
)\r\n} ","export async function getBase64(file: File): Promise<{ data: string }> {\r\n return new Promise((resolve, reject) => {\r\n let fileReader = new FileReader();\r\n fileReader.onload = function () {\r\n return resolve({ data: fileReader.result as string });\r\n }\r\n fileReader.readAsDataURL(file);\r\n })\r\n}","import { Button, Typography } from '@finam/web-ui-kit';\r\nimport { DocArrowDown } from '@finam/web-ui-kit/Icons/Doc';\r\nimport { Icon } from '@finam/web-ui-kit/Input/Input.styles';\r\nimport React, { ReactElement } from 'react';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport './Fields.scss';\r\nimport { FileItem } from './FileItem';\r\nimport cn from 'classnames'\r\n\r\ninterface IFileItem {\r\n name: string;\r\n id: number;\r\n isNew: boolean;\r\n}\r\n\r\ninterface IFieldProps {\r\n files: IFileItem[];\r\n label?: string;\r\n description?: string;\r\n info?: string;\r\n onChange: (value: FileList | null) => void;\r\n acceptExtensions?: string;\r\n nnDoc: number,\r\n isRequired: boolean,\r\n}\r\n\r\n\r\n\r\nexport default class FileField extends React.Component{\r\n private fileInput: React.RefObject;\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: IFieldProps) {\r\n super(props);\r\n this.fileInput = React.createRef();\r\n }\r\n\r\n\r\n private DownloadFile(fileId: number): void {\r\n new WebService(this.context.token).DownloadDocument(this.props.nnDoc, fileId).then(res => {\r\n var a = document.createElement(\"a\"); //Create \r\n a.href = res.fileData; //Image Base64 Goes here\r\n a.download = res.fileName; //File name Here\r\n a.click(); //Downloaded file\r\n });\r\n }\r\n\r\n private FileItem(file: IFileItem, key: string) {\r\n return
\r\n
{ if (!file.isNew) this.DownloadFile(file.id) }}>{file.name}
\r\n { !file.isNew &&
Уже загружен
}\r\n
\r\n }\r\n\r\n render() {\r\n return
\r\n
\r\n {this.props.label &&\r\n
\r\n {this.props.label}{this.props.description}\r\n
}\r\n
this.fileInput.current?.click()}>\r\n Прикрепите файл\r\n
\r\n {this.props.info &&
}\r\n
\r\n {\r\n
\r\n this.props.onChange(event.target.files)}\r\n />\r\n {this.props.files.map((f, i) => this.FileItem(f, `file_${i}`))}\r\n
\r\n }\r\n
\r\n }\r\n} ","import React from 'react';\r\nimport './SelectWithChoice.scss'\r\nimport cn from 'classnames'\r\n\r\ninterface IProps {\r\n options: { key: string, value: string }[]\r\n onSelectOption: (key: string) => void\r\n currentInput: string\r\n onInputChange: (val: string) => void\r\n optionsUp?: boolean\r\n disabled?: boolean\r\n innerInputRef?: React.RefObject;\r\n}\r\n\r\ninterface IState {\r\n showOptions: boolean;\r\n keySelectedIndex: number;\r\n}\r\n\r\nexport default class SelectWithChoice extends React.Component{\r\n private optionsRef: React.RefObject;\r\n private wrapperRef: React.RefObject;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n showOptions: false,\r\n keySelectedIndex: -1\r\n }\r\n this.wrapperRef = React.createRef();\r\n this.optionsRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n document.addEventListener(\"mousedown\", this.handleClickOutside, { capture: false });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n document.removeEventListener(\"mousedown\", this.handleClickOutside);\r\n }\r\n\r\n private ReturnFocus() {\r\n !!this.props.innerInputRef && !!this.props.innerInputRef.current && this.props.innerInputRef.current.focus();\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n {this.props.optionsUp && this.state.showOptions &&
\r\n {this.props.options.map((o, i) =>\r\n
{ this.props.onSelectOption(o.key); e.stopPropagation(); this.ReturnFocus(); }} id={`option_${i}`} key={o.key}>{o.value}
)}\r\n
}\r\n { this.setState({ showOptions: true }); }}\r\n value={this.props.currentInput}\r\n onChange={(e) => { this.props.onInputChange(e.target.value); this.setState({ keySelectedIndex: -1 }) }}\r\n onKeyDown={(e) => this.checkKeyDown(e.key)}\r\n disabled={this.props.disabled}\r\n />\r\n {!this.props.optionsUp && this.state.showOptions &&
\r\n {this.props.options.map((o, i) =>\r\n
{ this.props.onSelectOption(o.key); e.stopPropagation(); this.ReturnFocus(); }} id={`option_${i}`} key={o.key}>{o.value}
)}\r\n
}\r\n
\r\n }\r\n private checkKeyDown(key: string) {\r\n let newIndex = this.state.keySelectedIndex;\r\n if (key === \"ArrowDown\") {\r\n if (this.props.options.length > 0 && this.props.options.length > this.state.keySelectedIndex + 1)\r\n newIndex = this.state.keySelectedIndex < 0 ? 0 : this.state.keySelectedIndex + 1;\r\n if (newIndex % 8 == 0) {\r\n const optElement = document.getElementById(`option_${newIndex}`);\r\n const scrollHeight = optElement?.offsetHeight || 0;\r\n this.optionsRef.current?.scrollTo(0, newIndex * scrollHeight);\r\n }\r\n }\r\n if (key === \"ArrowUp\") {\r\n if (this.props.options.length > 0 && this.state.keySelectedIndex > 0)\r\n newIndex = this.state.keySelectedIndex - 1;\r\n if (newIndex % 8 == 7) {\r\n const optElement = document.getElementById(`option_${newIndex}`);\r\n const scrollHeight = optElement?.offsetHeight || 0;\r\n this.optionsRef.current?.scrollTo(0, (newIndex - 7) * scrollHeight);\r\n }\r\n }\r\n if (key === \"Enter\") {\r\n if (this.state.keySelectedIndex > -1) {\r\n const selectedKey = this.props.options[this.state.keySelectedIndex];\r\n this.props.onSelectOption(selectedKey.key);\r\n this.ReturnFocus();\r\n newIndex = -1;\r\n }\r\n }\r\n\r\n this.setState({ keySelectedIndex: newIndex })\r\n }\r\n\r\n\r\n handleClickOutside(event: any) {\r\n if (this.wrapperRef && !this.wrapperRef.current?.contains(event.target)) {\r\n this.setState({ showOptions: false })\r\n }\r\n }\r\n}","import { Loader, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { IFiasAdress } from '../../Services/ResponseData';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport SelectWithChoice from './SelectWithChoice';\r\n\r\nexport interface IFIASValue {\r\n [level: number]: IFiasAdress\r\n}\r\n\r\nexport interface IProps {\r\n value?: IFIASValue\r\n onValueChange: (value: IFIASValue) => void\r\n rerenderKey: string\r\n label: string\r\n initAdress?: string\r\n}\r\n\r\ninterface IState {\r\n loadedAdresses: IFiasAdress[];\r\n loadedOptions: { key: string, value: string }[]\r\n options: { key: string, value: string }[]\r\n optionsLoad: boolean\r\n currentInput: string;\r\n}\r\n\r\nexport default class FIASField extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n private innerInputRef: React.RefObject;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.innerInputRef = React.createRef();\r\n this.state = {\r\n loadedAdresses: [],\r\n options: [],\r\n loadedOptions: [],\r\n currentInput: this.props.initAdress || '',\r\n optionsLoad: false\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n this.GetOptions(0, -1, undefined);\r\n }\r\n\r\n\r\n private async GetOptions(level: number, parentLevel: number, parentGuid?: string | undefined): Promise {\r\n this.setState({ options: [], optionsLoad: true });\r\n let loadedAdresses = await new WebService(this.context.token).GetFiasAdressList(level, parentLevel, parentGuid);\r\n let options = loadedAdresses.map(a => (this.mapPartToString(a)))\r\n this.setState({\r\n loadedAdresses: loadedAdresses,\r\n options: options,\r\n loadedOptions: options,\r\n optionsLoad: false\r\n });\r\n\r\n }\r\n\r\n private filterOptions(filter: string): { key: string, value: string }[] {\r\n if (!!filter) {\r\n return this.state.loadedOptions.filter(o => o.value.toLowerCase().indexOf(filter.toLowerCase()) > -1);\r\n\r\n }\r\n else return [];\r\n }\r\n\r\n private mapPartToString(part: IFiasAdress): { value: string, key: string } {\r\n if (part.level < 6)\r\n return { value: `${part.value} ${part.artShort}`, key: part.id };\r\n else if (part.level == 6) {\r\n let resultArray: string[] = [];\r\n if (!!part.houseNum)\r\n resultArray.push(`д. ${part.houseNum}`)\r\n if (!!part.houseStruc)\r\n resultArray.push(`корп. ${part.houseStruc}`)\r\n if (!!part.houseCorp)\r\n resultArray.push(`стр. ${part.houseCorp}`)\r\n if (!!part.houseBuild)\r\n resultArray.push(`стр. ${part.houseBuild}`)\r\n return ({ value: resultArray.join(' '), key: part.id });\r\n }\r\n else {\r\n return { value: part.value, key: part.id };\r\n }\r\n }\r\n\r\n private getFIASParts(value: IFIASValue | undefined): string[] {\r\n if (!!value) {\r\n let resultArray: string[] = [];\r\n for (let level in value) {\r\n const part = value[level];\r\n if (!!part)\r\n resultArray.push(this.mapPartToString(part).value);\r\n }\r\n return resultArray;\r\n }\r\n else\r\n return [];\r\n }\r\n\r\n private getMaxLevel(value: IFIASValue) {\r\n const levels: number[] = Object.keys(value).filter(val => !!val).map(val => parseInt(val));\r\n return levels.length > 0 ? Math.max(...levels) : -1;\r\n }\r\n\r\n private addToAdress(value: string, level: number): IFIASValue {\r\n let currentValue: IFIASValue = !!this.props.value ? { ...this.props.value } : {};\r\n const item = this.state.loadedAdresses.find(o => o.id == value);\r\n if (!!item)\r\n currentValue[level] = item;\r\n return currentValue;\r\n }\r\n\r\n private deleteLastFromAdress(deleteCount: number): IFIASValue {\r\n let currentValue = !!this.props.value ? { ...this.props.value } : {};\r\n let level = this.getMaxLevel(currentValue);\r\n while (deleteCount > 0) {\r\n if (!!currentValue[level]) {\r\n delete currentValue[level];\r\n level--;\r\n deleteCount--;\r\n }\r\n }\r\n return currentValue;\r\n }\r\n\r\n private onInputChange(value: string) {\r\n const currentVal = this.getFIASParts(this.props.value).join(', ');\r\n if (!currentVal && this.state.currentInput.indexOf(value) > -1)\r\n this.setState({ currentInput: '' });\r\n else {\r\n let isDeleteVal = !value || this.state.currentInput.indexOf(value) > -1;\r\n if (isDeleteVal) {\r\n const newValLength = value?.split(',').length;\r\n const oldLength = currentVal.split(',').length;\r\n const newVal = this.deleteLastFromAdress(oldLength - newValLength);\r\n this.props.onValueChange(newVal);\r\n const newLevel = this.getMaxLevel(newVal);\r\n this.GetOptions(-1, newLevel, newVal[newLevel]?.id).then(_ => { !!this.innerInputRef.current && this.innerInputRef.current.focus(); });\r\n this.setState({ currentInput: value });\r\n }\r\n else {\r\n const filterVal = value.replace(currentVal, '').replace(',', '').trim();\r\n var options = this.filterOptions(filterVal);\r\n if (options.length == 1)\r\n this.onSelectOption(options[0].key)\r\n else if (options.length > 0)\r\n this.setState({ options, currentInput: value });\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n private onSelectOption(id: string) {\r\n const item = this.state.loadedAdresses.find(o => o.id == id);\r\n if (!!item) {\r\n if (item.level > -1) {\r\n let newValue = this.addToAdress(id, item.level);\r\n this.props.onValueChange(newValue);\r\n this.GetOptions(-1, item.level, id).then(_ => { !!this.innerInputRef.current && this.innerInputRef.current.focus(); });\r\n this.setState({ currentInput: this.getFIASParts(newValue).join(', ') + ' ' })\r\n }\r\n }\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n {this.props.label}\r\n Начните вводить адрес и выберите варианты из выпадающего списка\r\n Например: Московская обл, Дзержинский г, Лесная ул, д. 21, 163\r\n this.onInputChange(value)}\r\n currentInput={this.state.optionsLoad ? \"Загрузка...\" : this.state.currentInput}\r\n onSelectOption={(key) => { this.onSelectOption(key) }}\r\n disabled={this.state.optionsLoad}\r\n innerInputRef={this.innerInputRef}\r\n />\r\n
\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import { Button, Input, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { CardData } from '../../Services/ResponseData';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport SelectWithChoice from './SelectWithChoice';\r\n\r\ninterface IProps {\r\n onSave: (val: { bankId: number, account: string }) => void\r\n}\r\n\r\ninterface IState {\r\n cardId: number,\r\n bankId: number,\r\n bankBic?: string,\r\n account: string,\r\n loadedBanks: { bankId: number, bic: string, bankName: string, bankFullName: string }[]\r\n options: { key: string, value: string }[]\r\n currentInput: string\r\n accountChanged?: boolean\r\n}\r\n\r\nexport default class BankAccountField extends React.Component {\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n private accountNumberInput: React.RefObject;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.accountNumberInput = React.createRef();\r\n this.state = {\r\n account: '',\r\n cardId: 0,\r\n bankId: 0,\r\n loadedBanks: [],\r\n options: [],\r\n currentInput: '',\r\n bankBic: ''\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n const ws = new WebService(this.context.token);\r\n ws.GetBanks().then(\r\n res => {\r\n this.setState({\r\n loadedBanks: res,\r\n options: res.map(bo => ({ key: bo.bankId?.toString(), value: `${bo.bic} - ${bo.bankName}` })),\r\n });\r\n ws.GetCard().then(card => {\r\n if (!!card) {\r\n const selectedBank = res.find(b => b.bankId == card.bankId);\r\n this.setState({\r\n bankId: card.bankId,\r\n account: card.accountNum,\r\n cardId: card.cardId,\r\n currentInput: !!selectedBank ? `${selectedBank.bic} - ${selectedBank.bankName}` : ''\r\n })\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n private onInputChange(value: string) {\r\n const filteredOptions = this.state.loadedBanks.filter(i => i.bic.toLowerCase().indexOf(value.toLowerCase()) > -1 || i.bankName.toLowerCase().indexOf(value.toLowerCase()) > -1);\r\n this.setState({\r\n options: filteredOptions.map(bo => ({ key: bo.bankId?.toString(), value: `${bo.bic} - ${bo.bankName}` })),\r\n currentInput: value\r\n })\r\n }\r\n\r\n private onAccountChange(value: string) {\r\n if (value.length > 20)\r\n return;\r\n this.setState({ account: value, accountChanged: true })\r\n }\r\n\r\n private onSelectOption(key: string) {\r\n if (!!key) {\r\n const bank = this.state.loadedBanks.find(b => b.bankId == parseInt(key));\r\n this.setState({ bankId: bank?.bankId || 0, currentInput: `${bank?.bic} -${bank?.bankName}` || '', bankBic: bank?.bic, accountChanged: true });\r\n }\r\n }\r\n\r\n render() {\r\n return
\r\n Банк (бик - название банка)\r\n this.onInputChange(value)}\r\n currentInput={this.state.currentInput}\r\n onSelectOption={(key) => { this.onSelectOption(key) }}\r\n innerInputRef={undefined}\r\n />\r\n Расчетный счет\r\n 20 символов\r\n this.onAccountChange(e.target.value)} ref={this.accountNumberInput} />\r\n
\r\n { this.props.onSave({ account: this.state.account, bankId: this.state.bankId }) }}\r\n >Сохранить счет\r\n
\r\n
\r\n }\r\n}","import { Button, Checkbox, CheckboxField, Loader, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { getBase64 } from '../../filesHelper';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport FileField from '../Fields/FileField';\r\nimport './Steps.scss';\r\nimport cn from 'classnames'\r\nimport FIASField, { IFIASValue } from '../Fields/FIASField';\r\nimport { IFiasAdress } from '../../Services/ResponseData';\r\nimport BankAccountField from '../Fields/BankAccountField';\r\nimport IFieldInfo from '../Data/IFieldInfo';\r\n\r\ninterface IState {\r\n fields: IFieldInfo[];\r\n isLoading: boolean;\r\n nextFileId: number;\r\n isUploadError: boolean;\r\n\r\n fiasRerenderKey1: number;\r\n fiasRerenderKey2: number;\r\n\r\n adressesSame: boolean;\r\n adressReal?: { [level: number]: IFiasAdress };\r\n initAdressReal?: string,\r\n initAdressOfficial?: string;\r\n adressOfficial?: { [level: number]: IFiasAdress };\r\n adressChanged?: boolean;\r\n\r\n bankAccountValue?: { bankId: number, account: string }\r\n bankAccountChanged?: boolean;\r\n}\r\n\r\n\r\n\r\ninterface IProps {\r\n onError: (short: string, full: string) => void\r\n isClient: boolean\r\n}\r\n\r\n\r\nexport default class DocumentsUploadStep extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n adressesSame: false,\r\n fiasRerenderKey1: 0,\r\n fiasRerenderKey2: 0,\r\n fields: [],\r\n isLoading: true,\r\n nextFileId: 1,\r\n isUploadError: false\r\n }\r\n }\r\n\r\n private uploadFieldDoc(type: number, files: FileList | null): void {\r\n if (!files || !type)\r\n return;\r\n var newFields = [...this.state.fields];\r\n var fieldIndex = newFields.findIndex(v => v.nnDocType == type);\r\n var existsFiles = [...newFields[fieldIndex].files];\r\n Array.from(files).forEach(file =>\r\n existsFiles.push({ fileName: file.name, file: file, fileId: this.state.nextFileId }));\r\n newFields[fieldIndex].files = existsFiles;\r\n this.setState(prevState => ({ fields: newFields, nextFileId: prevState.nextFileId + 1 }));\r\n }\r\n\r\n\r\n private async uploadDocs(): Promise {\r\n this.setState({ isLoading: true });\r\n var fields = [...this.state.fields];\r\n var dataPromises = fields.map(async (fld) => {\r\n const filesToUpload = fld.files?.filter(f => !!f.file);\r\n if (filesToUpload.length > 0) {\r\n var filesData: { file64: string, fileName: string }[] = [];\r\n var filesPromises = fld.files.map(async (file) => {\r\n if (file.file) {\r\n const data = await getBase64(file.file);\r\n filesData.push({ file64: data.data, fileName: file.fileName });\r\n }\r\n });\r\n await Promise.all(filesPromises);\r\n await new WebService(this.context.token).PostFileInfo({ items: filesData, nnDoc: fld.nnDoc, strDocCode: fld.strDocCode });\r\n }\r\n });\r\n Promise.all(dataPromises).then(res => this.InitFields())\r\n .catch(ex => { this.setState({ isLoading: false, isUploadError: true }); this.props.onError('Ошибка при загрузке документов', ''); this.InitFields(); });\r\n }\r\n\r\n private async saveAdress(): Promise {\r\n if (!!this.state.adressReal && !!this.state.adressReal[0]) {\r\n const adressR = Object.values(this.state.adressReal)\r\n new WebService(this.context.token).SaveFiasAdress(0, adressR);\r\n }\r\n const adressOff = this.state.adressesSame ? this.state.adressReal : this.state.adressOfficial;\r\n if (!!adressOff && !!adressOff[0]) {\r\n const adress = Object.values(adressOff)\r\n new WebService(this.context.token).SaveFiasAdress(1, adress);\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n this.InitFields();\r\n this.InitAdress();\r\n }\r\n\r\n private InitFields(): void {\r\n this.setState({ isLoading: true });\r\n new WebService(this.context.token).GetPersonalDocuments().then((pDocs) => {\r\n const fields: IFieldInfo[] = pDocs.map(d => ({\r\n fieldTitle: d.fieldName,\r\n files: d.files || [],\r\n nnDoc: d.nnDoc,\r\n nnDocType: d.nnDocType,\r\n strDocCode: d.strDocCode,\r\n isRequired: d.isRequired,\r\n description: d.description\r\n }));\r\n this.setState({ isLoading: false, fields: fields });\r\n });\r\n }\r\n\r\n private InitAdress(): void {\r\n const ws = new WebService(this.context.token);\r\n ws.GetFiasAdress(0).then(res => this.setState({ initAdressOfficial: res.address }));\r\n ws.GetFiasAdress(1).then(res => this.setState({ initAdressReal: res.address }));\r\n }\r\n\r\n private get AdressFields(): JSX.Element {\r\n return
\r\n this.setState({ adressReal: val, fiasRerenderKey1: Math.random(), adressChanged: true })}\r\n initAdress={this.state.initAdressReal}\r\n />\r\n , checked: boolean) => { this.setState({ adressesSame: checked, adressChanged: true }) }}\r\n />\r\n {!this.state.adressesSame && this.setState({ adressOfficial: val, fiasRerenderKey2: Math.random(), adressChanged: true })}\r\n initAdress={this.state.initAdressOfficial}\r\n />}\r\n
\r\n { this.saveAdress() }}\r\n disabled={!this.state.adressChanged}\r\n >Сохранить адрес\r\n
\r\n
\r\n }\r\n\r\n\r\n\r\n render() {\r\n const filesAlreadyDownload = this.state.fields.findIndex(fld => fld.files.findIndex(fl => !fl.file) > -1) > -1;\r\n return
\r\n {this.props.isClient && \r\n Внимание! Вы являетесь клиентом Финам, поэтому перед продолжением оформления, пройдите, пожалуйста, в личный кабинет на портале finam.ru и проверьте все ли ваши данные там верны.\r\n }\r\n Загрузите документы из перечня ниже\r\n Сумарный размер загруженных в одно поле документов не может превышать 15 Мб. Загрузите в несколько шагов если необходимо. \r\n {\r\n this.state.isLoading ? :\r\n
\r\n
\r\n {this.state.fields.filter(f => f.nnDocType != 3760).map((fi, i) => {\r\n if (fi.nnDocType == 3991)\r\n return
\r\n ({ name: f.fileName, id: f.fileId, isNew: !!f.file }))}\r\n label={`${i + 1}. ${fi.fieldTitle}`}\r\n nnDoc={fi.nnDoc}\r\n onChange={(v) => { this.uploadFieldDoc(fi.nnDocType, v) }}\r\n description={fi.description} />\r\n {this.AdressFields}\r\n
\r\n else return ({ name: f.fileName, id: f.fileId, isNew: !!f.file }))}\r\n label={`${i + 1}. ${fi.fieldTitle}`}\r\n nnDoc={fi.nnDoc}\r\n onChange={(v) => { this.uploadFieldDoc(fi.nnDocType, v) }}\r\n key={fi.nnDocType}\r\n description={fi.description} />\r\n })}\r\n
\r\n { new WebService(this.context.token).SaveCard(val.bankId, val.account) }}\r\n />\r\n
\r\n
\r\n\r\n { this.uploadDocs() }}\r\n >Загрузить\r\n
\r\n }\r\n {filesAlreadyDownload &&

Мы получили ваши документы, вы можете продолжить загрузку если необходимо, если будут какие-то вопросы мы с вами свяжемся.

}\r\n
;\r\n }\r\n}","import { Loader } from '@finam/web-ui-kit';\r\nimport React, { useState } from 'react';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\n\r\nexport const FileLink: React.FC<{ docTitle: string, docId: number }> = (props) => {\r\n const [loading, setLoading] = useState(false);\r\n\r\n function DownloadDoc(docId: number, token: string): void {\r\n setLoading(true);\r\n new WebService(token).DownloadDocument(docId, 0).then(res => {\r\n var a = document.createElement(\"a\"); //Create \r\n a.href = res.fileData; //Image Base64 Goes here\r\n a.download = res.fileName; //File name Here\r\n a.click(); //Downloaded file\r\n setLoading(false);\r\n });\r\n }\r\n\r\n return ({loading ? : {value => { DownloadDoc(props.docId, value.token) }}>{props.docTitle}}});\r\n}","import { Button } from '@finam/web-ui-kit';\r\nimport React, { useState } from 'react';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport './SMSCodePanel.scss';\r\n\r\ninterface IProps {\r\n docIds: number[],\r\n confirmId: string,\r\n message: string,\r\n afterAction: () => void\r\n}\r\n\r\n\r\nexport const SMSCodePanel: React.FC = (props) => {\r\n\r\n const [smscode, setSMSCode] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n function SendCode(token: string, code: string) {\r\n setIsLoading(true);\r\n new WebService(token).SendCodeUNEPDocuments({ code: code, confirmId: props.confirmId, docIds: props.docIds })\r\n .then(res => { setIsLoading(false); props.afterAction(); setSMSCode(''); })\r\n }\r\n\r\n return ({value =>
\r\n
{props.message}
\r\n
\r\n { setSMSCode(val.target.value) }} value={smscode}>\r\n { SendCode(value.token, smscode); }}\r\n >Отправить код\r\n
\r\n
}
);\r\n}","import { Loader, Typography } from '@finam/web-ui-kit';\r\nimport { Divider } from '@finam/web-ui-kit/Tabs/Tabs.styles';\r\nimport React from 'react';\r\nimport { WebService } from '../Services/WebService';\r\nimport { TokenContext } from '../TokenContext';\r\nimport './InnerDocuments.scss';\r\n\r\ninterface IDoc {\r\n id: number,\r\n title: string,\r\n body: string,\r\n group: string\r\n}\r\n\r\nexport default class InnerDocuments extends React.Component<{}, { items: IDoc[], isLoading: boolean, selectedGroup?: string, selectedDoc?: number }>{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n items: [],\r\n isLoading: true\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n this.setState({ isLoading: true });\r\n new WebService(this.context.token).GetInnerDocuments()\r\n .then(res =>\r\n this.setState({ items: res.result, isLoading: false }))\r\n }\r\n\r\n renderGroup(group: string): JSX.Element {\r\n const items = this.state.items.filter(d => d.group == group);\r\n return
\r\n this.setState({ selectedGroup: group })}>{group}\r\n {this.state.selectedGroup == group &&
\r\n {items.map(i => this.renderItem(i))}\r\n
}\r\n
\r\n }\r\n\r\n renderItem(item: IDoc): JSX.Element {\r\n return
\r\n {\r\n const index = this.state.selectedDoc == item.id ? 0 : item.id;\r\n this.setState({ selectedDoc: index });\r\n }}>{item.title}\r\n {this.state.selectedDoc == item.id &&\r\n
\r\n }\r\n \r\n
;\r\n }\r\n\r\n renderBody(): JSX.Element {\r\n function onlyUnique(value: any, index: number, self: any) {\r\n return self.indexOf(value) === index;\r\n }\r\n const groups = this.state.items.map(d => d.group).filter(onlyUnique);\r\n return
{groups.map(g => this.renderGroup(g))}
\r\n }\r\n\r\n render(): React.ReactNode {\r\n return this.state.isLoading ? : this.renderBody();\r\n }\r\n}","import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from '@finam/web-ui-kit';\r\nimport { PrimaryButton } from '@finam/web-ui-kit/Button/Button.styles';\r\nimport React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport { FileLink } from '../Common/FileLink';\r\nimport { SMSCodePanel } from '../Common/SMSCodePanel';\r\nimport InnerDocuments from '../InnerDocuments';\r\nimport './Steps.scss';\r\nimport IFieldInfo from '../Data/IFieldInfo';\r\nimport FileField from '../Fields/FileField';\r\nimport { getBase64 } from '../../filesHelper';\r\n\r\n\r\ninterface IState {\r\n isLoading: boolean;\r\n isBtnLoading: boolean;\r\n isBtnDisabled: boolean;\r\n docs: { nnDoc: number, strDocType: string, nnDocType: number, isSigned: boolean }[];\r\n showCodePanel?: boolean;\r\n showInnerDocs?: boolean;\r\n confirmId?: string;\r\n phones?: string;\r\n smscode?: string;\r\n signedDocs: number[];\r\n field?: IFieldInfo\r\n}\r\n\r\nexport default class SigningStep extends React.Component<{ endAction: () => void }, IState>{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n docs: [],\r\n isBtnLoading: true,\r\n isBtnDisabled: true,\r\n signedDocs: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.GetDocs();\r\n }\r\n\r\n private GetDocs() {\r\n const ws = new WebService(this.context.token);\r\n this.setState({ isLoading: true, signedDocs: [] });\r\n ws.GetSigningDocs().then(res => this.setState({ docs: res, isBtnDisabled: false, isBtnLoading: false, isLoading: true, }));\r\n ws.GetPersonalDocuments(3760).then(res => {\r\n const fi = res[0];\r\n if (fi) {\r\n const field: IFieldInfo = {\r\n fieldTitle: fi.fieldName,\r\n files: fi.files || [],\r\n nnDoc: fi.nnDoc,\r\n nnDocType: fi.nnDocType,\r\n strDocCode: fi.strDocCode,\r\n isRequired: fi.isRequired,\r\n description: fi.description\r\n };\r\n this.setState({ field });\r\n }\r\n\r\n });\r\n }\r\n\r\n\r\n private SignDocuments(docIds: number[]) {\r\n this.setState({ isBtnLoading: true, signedDocs: docIds });\r\n new WebService(this.context.token).SignUNEPDocuments({ docIds: docIds }).then(res => { this.setState({ isBtnLoading: false, isBtnDisabled: true, showCodePanel: true, phones: res.phones, confirmId: res.confirmId }) });\r\n }\r\n\r\n private uploadFieldDoc(files: FileList | null): void {\r\n if (!this.state.field || !files)\r\n return;\r\n var newField = { ...this.state.field };\r\n Array.from(files).forEach(file =>\r\n newField.files.push({ fileName: file.name, file: file, fileId: 1 }));\r\n this.setState({ field: newField });\r\n }\r\n\r\n\r\n private async uploadDocs(): Promise {\r\n const filesToUpload = this.state.field?.files?.filter(f => !!f.file);\r\n if (!!this.state.field && filesToUpload && filesToUpload.length > 0) {\r\n var filesData: { file64: string, fileName: string }[] = [];\r\n var filesPromises = this.state.field.files.map(async (file) => {\r\n if (file.file) {\r\n const data = await getBase64(file.file);\r\n filesData.push({ file64: data.data, fileName: file.fileName });\r\n }\r\n });\r\n await Promise.all(filesPromises);\r\n await new WebService(this.context.token).PostFileInfo({ items: filesData, nnDoc: this.state.field.nnDoc, strDocCode: this.state.field.strDocCode });\r\n }\r\n }\r\n\r\n render(): React.ReactNode {\r\n const firstDocs = this.state.docs.filter(d => d.nnDocType == 1807);\r\n const secondDocs = this.state.docs.filter(d => d.nnDocType != 1807);\r\n const firstDocEnableSign = firstDocs.findIndex(d => !d.isSigned) > -1;\r\n const secondDocEnableSign = !firstDocEnableSign && secondDocs.findIndex(d => !d.isSigned) > -1;\r\n return
\r\n

Электронная трудовая книжка

\r\n

\r\n Загрузите документ с госуслуг на текущую дату\r\n

\r\n {this.state.field &&\r\n
\r\n ({ name: f.fileName, id: f.fileId, isNew: !!f.file }))}\r\n nnDoc={this.state.field.nnDoc}\r\n onChange={(v) => { this.uploadFieldDoc(v) }}\r\n />\r\n
\r\n }\r\n\r\n

Подпишите документы

\r\n
\r\n

\r\n Внимательно ознакомьтесь с { this.setState({ showInnerDocs: true }) }}>внутренними документами компании и подпишите лист ознакомления с помощью УНЭП.\r\n

\r\n
\r\n {firstDocs.map((d, i) =>
\r\n
)}\r\n
\r\n { this.setState({ isBtnLoading: true }); this.SignDocuments(firstDocs.map(d => d.nnDoc)); }}\r\n >Подписать\r\n
\r\n
\r\n

\r\n Внимательно ознакомьтесь с документами перед подписанием. После этого нажмите кнопку «Подписать с помощью УНЭП».s\r\n

\r\n
\r\n {secondDocs.map((d, i) =>
\r\n
)}\r\n
\r\n
\r\n { this.setState({ isBtnLoading: true }); this.SignDocuments(secondDocs.map(d => d.nnDoc)); }}\r\n >Подписать
\r\n {this.state.showCodePanel && d.nnDoc)}\r\n message={`На ваш телефон ${this.state.phones} ушла СМС с кодом. Пожалуйста введите его в поле ниже и нажмите Отправить`}\r\n afterAction={() => { this.setState({ showCodePanel: false }); this.GetDocs(); this.props.endAction(); }}\r\n />}\r\n
\r\n \r\n Внутренние документы\r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n}","import React from 'react';\r\nimport './Fields.scss';\r\nimport cn from 'classnames'\r\n\r\nexport interface IItem {\r\n title: string;\r\n key: string;\r\n description?: string;\r\n onClick: () => void;\r\n isAddItem?: boolean;\r\n}\r\n\r\nexport const FileItem: React.FC = (props) => {\r\n return (
\r\n
\r\n
{props.title}
\r\n {props.description &&
{props.description}
}\r\n
\r\n
\r\n {props.isAddItem && }\r\n
\r\n
)\r\n}","import { Button, Input, Loader, Modal, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { getBase64 } from '../../filesHelper';\r\nimport { IUNEPDocument } from '../../Services/ResponseData';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport { SMSCodePanel } from '../Common/SMSCodePanel';\r\nimport FileField from '../Fields/FileField';\r\nimport { FileItem } from '../Fields/FileItem';\r\nimport './Steps.scss';\r\n\r\ninterface IState {\r\n isLoading: boolean;\r\n isBtnDisabled: boolean;\r\n showCodePanel: boolean;\r\n status?: number;\r\n document?: IUNEPDocument;\r\n message?: string;\r\n confirmId?: string;\r\n phones?: string;\r\n smscode?: string;\r\n file?: File\r\n}\r\n\r\ninterface IProps {\r\n onError: (short: string, full: string) => void,\r\n endAction: () => void\r\n}\r\n\r\nexport default class UNEPStep extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n private fileInput: React.RefObject;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.fileInput = React.createRef();\r\n this.state = {\r\n isLoading: true,\r\n isBtnDisabled: false,\r\n showCodePanel: false,\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n this.InitStatus();\r\n }\r\n\r\n private InitStatus() {\r\n this.setState({ isLoading: true });\r\n new WebService(this.context.token).GetUNEPStatus().then(res => this.setState({\r\n isLoading: false,\r\n document: res.document && { docTypeName: res.document.title, documentID: res.document.id, docTypeNumber: res.document.docType },\r\n message: res.message,\r\n status: res.unepStatus\r\n }));\r\n }\r\n\r\n private SignDocument() {\r\n if (this.state.document) {\r\n this.setState({ isLoading: true });\r\n const docId = this.state.document.documentID;\r\n new WebService(this.context.token).SignUNEPDocuments({ docIds: [docId] }).then(res => { this.setState({ isLoading: false, showCodePanel: true, phones: res.phones, confirmId: res.confirmId }) });\r\n }\r\n }\r\n\r\n private DownloadDoc(docId: number): void {\r\n new WebService(this.context.token).DownloadDocument(docId, 0).then(res => {\r\n var a = document.createElement(\"a\"); //Create \r\n a.href = res.fileData; //Image Base64 Goes here\r\n a.download = res.fileName; //File name Here\r\n a.click(); //Downloaded file\r\n });;\r\n }\r\n\r\n private async UploadDoc() {\r\n if (this.state.file) {\r\n if (this.state.file.size > 27000000)\r\n this.props.onError(\"Размер скана не должен превышать 28мб\", \"Размер скана не должен превышать 28мб\");\r\n else {\r\n this.setState({ isLoading: true });\r\n const data64 = await getBase64(this.state.file);\r\n await new WebService(this.context.token).PostFileInfo({ items: [{ file64: data64.data, fileName: this.state.file?.name }], nnDoc: this.state.document?.documentID, strDocCode: '' })\r\n }\r\n }\r\n }\r\n\r\n\r\n private renderStepByStatus(status?: number): JSX.Element {\r\n switch (status) {\r\n case 5:\r\n return

Для вас уже создана ЭП. Если есть какие-то вопросы обратитесь к своему нанимающему менеджеру. Спасибо.

\r\n case 4:\r\n return
\r\n

Для создания электронной подписи:

\r\n

1. Ознакомьтесь с документом по ссылке { this.state.document && this.DownloadDoc(this.state.document.documentID) }}>{this.state.document?.docTypeName}

\r\n

2. Нажмите на кнопку для подписи документа своей ЭП

\r\n { this.SignDocument() }}\r\n >Подписать\r\n {this.state.showCodePanel && { this.setState({ showCodePanel: false }); this.props.endAction(); }}\r\n />}\r\n\r\n
\r\n case 2:\r\n return
\r\n

Для создания электронной подписи:

\r\n

1. Скачайте и распечатайте прикрепленный документ { this.state.document && this.DownloadDoc(this.state.document.documentID) }}>{this.state.document?.docTypeName}

\r\n

2. Подпишите документ собственноручно и прикрепите скан-копию.

\r\n { this.state.document && this.DownloadDoc(this.state.document.documentID) }}\r\n isAddItem={false}\r\n />\r\n

Мы получили ваш подписанный документ, ожидайте ответа в течение двух рабочих дней, вам придет СМС оповещание с результатом.

\r\n
\r\n case 1:\r\n return
\r\n this.setState({ file: event.target.files && event.target.files[0] || undefined })}\r\n />\r\n

Для создания электронной подписи:

\r\n

1. Скачайте и распечатайте прикрепленный здесь документ { this.state.document && this.DownloadDoc(this.state.document.documentID) }}>{this.state.document?.docTypeName}

\r\n

2. Подпишите документ собственноручно и прикрепите скан-копию.

\r\n { if (!this.state.file) this.fileInput.current?.click(); }}\r\n isAddItem={!this.state.file}\r\n />\r\n { this.UploadDoc().then(res => this.InitStatus()) }}\r\n >Получить УНЭП\r\n
\r\n case 0:\r\n return { this.setState({ isLoading: true }); new WebService(this.context.token).GetNewUNEP().then(res => this.InitStatus()) }}\r\n >Получить УНЭП\r\n default:\r\n return

{this.state.message}

\r\n }\r\n }\r\n\r\n render() {\r\n return
\r\n

Создайте электронную подпись

\r\n

\r\n Усиленная неквалифицированная электронная подпись (УНЭП) – это криптографический ключ, с помощью которого можно осуществлять подписание электронных документов без физического присутствия.\r\n

\r\n

При этом в отличие от квалифицированной подписи к НЭП предъявляются менее строгие правила. Система криптошифрования, используемая для ее создания, может быть любой.\r\n Для получения УНЭП нажмите на кнопку ниже.

\r\n

Регламент ООО «Моревиль»

\r\n
\r\n {this.state.isLoading ? : this.renderStepByStatus(this.state.status)}\r\n
\r\n
;\r\n }\r\n} ","import { Button, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\n\r\nexport const FinalStep: React.FC = () => {\r\n return
\r\n

Оформление успешно завершено.

\r\n

Если у вас удаленный режим работы, ознакомьтесь с обязательными шагами и оформите заявку на получение удаленного рабочего места:

\r\n

1. Введите логин и пароль, полученный ранее в смс-сообщении (например логин: Office// vivanov; пароль (временный) 178345). \r\n

\r\n

2.\tНажмите на созданную заявку на подключение и ознакомьтесь с регламентом, нажав на кнопку «Согласовать».

\r\n

3. В течение 10 минут в согласованную заявку будет добавлена инструкция по подключению к рабочему месту.

\r\n

4. Если возникнут вопросы или проблемы, свяжитесь со специалистом технической поддержки, оставив обращение в поле «Комментарии» или по телефону +7 (495) 1-346-346 (доб. 1111).

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Будь в курсе!
\r\n
Устанавливай мобильное приложение Корпоративного портала и подписывайся на наш Телеграм канал, чтобы всегда быть в курсе последних новостей и иметь сервисы компании всегда под рукой.
\r\n
\r\n
\r\n
\r\n \r\n Мобильное приложение iOS\r\n
\r\n
\r\n \r\n Мобильное приложение Android\r\n
\r\n
\r\n \r\n Telegram бот\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n}\r\n\r\n\r\n\r\n","import React from \"react\";\r\nimport { WebService } from \"../Services/WebService\";\r\nimport { TokenContext } from \"../TokenContext\";\r\nimport './CommunityDescription.scss';\r\n\r\ninterface IState {\r\n Id?: number,\r\n Title?: string,\r\n Description?: string,\r\n Image64?: string\r\n}\r\n\r\nexport default class CommunititesWidget extends React.Component<{ id: number }, IState>{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n componentDidMount(): void {\r\n new WebService(this.context.token).GetCommunity(this.props.id).then(res => this.setState({ Id: res?.id, Title: res?.title, Description: res?.description, Image64: res?.image64 }));\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n {this.state?.Title && <>\r\n
{this.state.Title}
\r\n
{this.state.Description}
\r\n {!!this.state?.Image64 &&
}\r\n }\r\n
\r\n }\r\n}","import { Button, Dialog, Modal, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { ICommunityShort } from '../Services/ResponseData';\r\nimport { WebService } from '../Services/WebService';\r\nimport { TokenContext } from '../TokenContext';\r\nimport './Widgets.scss'\r\nimport CommunityDescription from './CommunityDescription';\r\n\r\ninterface IState {\r\n communities: ICommunityShort[],\r\n selectedId?: number\r\n}\r\n\r\nexport default class CommunititesWidget extends React.Component<{}, IState>{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { communities: [] };\r\n }\r\n\r\n componentDidMount() {\r\n new WebService(this.context.token).GetCommunities().then(res => this.setState({ communities: res }));\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n
\r\n {this.state.communities.map((item, i) =>\r\n
this.setState({ selectedId: item.id })}>\r\n {item.title}\r\n {item.title}\r\n
)}\r\n
\r\n 0} onBackdropClick={(e) => { e.stopPropagation(); this.setState({ selectedId: 0 }) }}>\r\n
\r\n
\r\n { e.stopPropagation(); this.setState({ selectedId: 0 }); }} />\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n}","import { Button, Dialog, Modal, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { IOfferShort } from '../Services/ResponseData';\r\nimport { WebService } from '../Services/WebService';\r\nimport { TokenContext } from '../TokenContext';\r\nimport './Widgets.scss'\r\nimport CommunityDescription from './CommunityDescription';\r\nimport cn from 'classnames';\r\n\r\ninterface IState {\r\n offers: IOfferShort[],\r\n openGroups: number[]\r\n}\r\n\r\nexport default class OffersWidget extends React.Component<{}, IState>{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n private wrapperRef: React.RefObject;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { offers: [], openGroups: [] };\r\n this.wrapperRef = React.createRef();\r\n // this.handleClickOutside = this.handleClickOutside.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n new WebService(this.context.token).GetOffers().then(res => this.setState({ offers: res }));\r\n // document.addEventListener(\"mousedown\", this.handleClickOutside);\r\n }\r\n\r\n // componentWillUnmount(): void {\r\n // document.removeEventListener(\"mousedown\", this.handleClickOutside);\r\n // }\r\n\r\n\r\n\r\n\r\n // renderSubitems(parentId: number): JSX.Element {\r\n // const suboffers = this.state.offers.filter(o => o.parent == parentId);\r\n // return
\r\n // {suboffers.map((so, i) =>
\r\n //
{so.description}
\r\n // \r\n //
)}\r\n //
\r\n // }\r\n\r\n renderOfferTab(offerGroup: IOfferShort, index: number): JSX.Element {\r\n return
this.toggleTab(index)}>\r\n
\r\n {offerGroup.name}\r\n {`(${offerGroup.offers.length} предложения)`}\r\n
\r\n {this.state.openGroups.indexOf(index) > -1 &&
\r\n {offerGroup.offers.map((o, i) => this.renderItem(o, i))}\r\n
}\r\n
\r\n }\r\n\r\n toggleTab(index: number) {\r\n var newOpenGroup = [...this.state.openGroups];\r\n var openIndex = newOpenGroup.indexOf(index);\r\n if (openIndex > -1) {\r\n newOpenGroup.splice(openIndex, 1);\r\n }\r\n else {\r\n newOpenGroup.push(index);\r\n }\r\n this.setState({ openGroups: newOpenGroup });\r\n }\r\n\r\n renderItem(offer: any, index: number): JSX.Element {\r\n return
\r\n
\r\n \r\n
\r\n
{offer.description}
\r\n
\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n
\r\n {this.state.offers.map((group, i) => this.renderOfferTab(group, i))}\r\n
\r\n {/* {this.state.offers.filter(o => o.parent == 0).map((item, i) => this.renderItem(item, i))} */}\r\n
\r\n\r\n }\r\n\r\n // handleClickOutside(event: any) {\r\n // if (this.state?.selectedId && this.state?.selectedId > 0) {\r\n // if (this.wrapperRef && !this.wrapperRef.current?.contains(event.target)) {\r\n // //alert('Test');\r\n // this.setState({ selectedId: 0 });\r\n // }\r\n // }\r\n // }\r\n}","import { Icons, TextArea, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { ICoworkersInfo, IUserInfo } from '../../Services/ResponseData';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport './Steps.scss';\r\nimport '../Fields/Fields.scss';\r\nimport { ArrowRight } from '@finam/web-ui-kit/Icons/Arrow';\r\nimport CommunititesWidget from '../CommunititesWidget';\r\nimport OffersWidget from '../OffersWidget';\r\nimport { ArrowlineDown } from '@finam/web-ui-kit/Icons';\r\n\r\nconst imageExtensions: string[] = require('image-extensions');\r\n\r\ninterface IProps {\r\n userGuid: string\r\n}\r\n\r\ninterface IState {\r\n photo?: string\r\n coworkers: ICoworkersInfo[]\r\n userPhotoFile?: File,\r\n aboutItself?: string;\r\n}\r\n\r\nexport default class SocialStep extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n private fileInput: React.RefObject;\r\n\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n coworkers: []\r\n }\r\n this.fileInput = React.createRef();\r\n }\r\n\r\n componentDidMount(): void {\r\n const ws = new WebService(this.context.token);\r\n ws.GetPhoto().then((photo) => this.setState({ photo: photo }));\r\n ws.GetCoworkers().then(res => this.setState({ coworkers: res }));\r\n console.log(imageExtensions);\r\n }\r\n\r\n renderSection(tytle: string, body: JSX.Element): JSX.Element {\r\n return
\r\n }\r\n\r\n\r\n renderCoworkerItem(info: ICoworkersInfo, key: string): JSX.Element {\r\n return
\r\n
\r\n \r\n
\r\n
\r\n {info.firstName}\r\n {info.strPost}\r\n
\r\n
\r\n }\r\n\r\n\r\n\r\n render(): React.ReactNode {\r\n return
Привет наш новый коллега\r\n Мы выбираем лучших специалистов и искренне гордимся, что ты стал составляющей коллектива. Желаем больших достижений в работе!\r\n\r\n
\r\n

Моё фото

\r\n
this.fileInput.current?.click()}>\r\n \r\n
\r\n \r\n
\r\n {\r\n if (event.target.files && event.target.files.length > 0) {\r\n const ws = new WebService(this.context.token);\r\n ws.UploadPhoto(event.target.files[0]).then(_ => {\r\n ws.GetPhoto().then((photo) => this.setState({ photo: photo }));\r\n })\r\n }\r\n }}\r\n accept={imageExtensions.map(ext => `image/${ext}`).join(', ')}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n

Мои коллеги

\r\n {this.state.coworkers.length > 0 &&\r\n
\r\n {this.state.coworkers.map((c, i) => this.renderCoworkerItem(c, `coworker_${i}`))}\r\n
\r\n }
\r\n
\r\n
Наши сообщества
\r\n

Ты можешь присоединиться к действующему клубу или создать свое направление, собрав необходимое количество единомышленников

\r\n \r\n
\r\n
\r\n
Предложения наших партнеров
\r\n \r\n
\r\n
\r\n
\r\n }\r\n}","import dayjs, { Dayjs } from 'dayjs';\r\nimport * as React from 'react';\r\nimport { useCallback, useMemo } from 'react';\r\nimport 'dayjs/locale/ru' // import locale\r\nimport * as weekday from 'dayjs/plugin/weekday'\r\nimport './HireCalendar.scss';\r\nimport { ArrowLeft, ArrowRight } from '@finam/web-ui-kit/Icons/Arrow';\r\nimport cn from 'classnames'\r\nimport { start } from 'repl';\r\nimport { IRecruitmentDateSlot } from '../../Services/ResponseData';\r\nimport { Body16 } from '@finam/web-ui-kit/Typography/Typography.styles';\r\n\r\nvar weekdayPlug = require('dayjs/plugin/weekday')\r\ndayjs.extend(weekdayPlug);\r\ndayjs.locale('ru');\r\n\r\ninterface IProps {\r\n value?: IRecruitmentDateSlot,\r\n onSelect: (val: IRecruitmentDateSlot | undefined) => void,\r\n freeSlots: IRecruitmentDateSlot[],\r\n isMobile?: boolean\r\n}\r\n\r\nexport const HireCalendar: React.FC = props => {\r\n const getFirstSlotDate = (slots: IRecruitmentDateSlot[]): Date => {\r\n if (!slots || slots.length < 1)\r\n return today;\r\n else {\r\n var firsSlot = slots.sort((a, b) => a.slotDate.getTime() - b.slotDate.getTime())[0];\r\n return firsSlot.slotDate;\r\n }\r\n }\r\n\r\n const today: Date = dayjs().toDate();\r\n const [startDate, setStartDate] = React.useState(props.value ? dayjs(props.value.slotDate).toDate() : getFirstSlotDate(props.freeSlots));\r\n const [dateMobile, setDateMobile] = React.useState();\r\n\r\n const firstDayOfTheMonth: Dayjs = useMemo(\r\n () => dayjs(startDate).startOf('month'),\r\n [startDate]\r\n );\r\n\r\n const firstDayOfFirstWeekOfMonth: Dayjs = useMemo(\r\n () => dayjs(firstDayOfTheMonth).startOf(\"week\"),\r\n [firstDayOfTheMonth]\r\n );\r\n\r\n const generateFirstDayOfEachWeek = useCallback((day: Dayjs): Dayjs[] => {\r\n const dates: Dayjs[] = [];\r\n let date = day.clone();\r\n do {\r\n dates.push(date);\r\n date = date.clone().add(1, \"week\");\r\n } while (date.month() == startDate.getMonth());\r\n return dates;\r\n }, [startDate]);\r\n\r\n const generateWeek = useCallback((day: Dayjs): Date[] => {\r\n const dates: Date[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n const date = day.clone().add(i, \"day\").toDate();\r\n dates.push(date);\r\n }\r\n return dates;\r\n }, [firstDayOfFirstWeekOfMonth]);\r\n\r\n const generateWeeksOfTheMonth = useMemo((): Date[][] => {\r\n const firstDayOfEachWeek = generateFirstDayOfEachWeek(\r\n firstDayOfFirstWeekOfMonth\r\n );\r\n return firstDayOfEachWeek.map((date) => generateWeek(date));\r\n }, [generateFirstDayOfEachWeek, firstDayOfFirstWeekOfMonth, generateWeek, startDate]);\r\n\r\n const generateCalendarHeader: JSX.Element[] = useMemo(\r\n (): JSX.Element[] => {\r\n return Array.from(Array(7).keys()).map(i => dayjs().weekday(i).format(\"dd\")).map((h, hi) => {h})\r\n }, undefined);\r\n\r\n const GetSlots: (date: Date) => IRecruitmentDateSlot[] = date => {\r\n const daySlots = props.freeSlots.filter((sl, index, self) =>\r\n sl.slotDate.toISOString() == date.toISOString());\r\n const slots = daySlots.filter((d, i, self) => { return self.findIndex(j => j.time == d.time) == i });\r\n return slots || [];\r\n };\r\n\r\n\r\n const generateDayJSX = (day: Date, index: number): JSX.Element | null => {\r\n let slotsDivs: JSX.Element | undefined = undefined;\r\n let slots = [];\r\n if (day >= today) {\r\n slots = GetSlots(day);\r\n if (slots.length > 0 && !props.isMobile)\r\n slotsDivs =
\r\n {slots.map((slot, i) =>\r\n
props.onSelect(slot)} className={cn(\"slot\", { \"active\": slot == props.value })}>{slot.time}
)}\r\n
\r\n }\r\n return 0, \"selected\": props.value?.slotDate.getTime() == day.getTime() || dateMobile?.getTime() == day.getTime() })}\r\n key={`day_${index}`}\r\n onClick={_ => {\r\n if (!!props.isMobile && slots.length > 0) {\r\n props.onSelect(undefined);\r\n setDateMobile(day);\r\n }\r\n }}\r\n >\r\n
{day.getDate()}
{slotsDivs}
\r\n ;\r\n };\r\n\r\n const generateMobileSlots = (): JSX.Element | null => {\r\n const date = props.value?.slotDate || dateMobile;\r\n const slots = !!date ? GetSlots(date) : [];\r\n if (slots.length > 0)\r\n return
\r\n {slots.map((slot, i) =>\r\n
props.onSelect(slot)} className={cn(\"slotMobile\", { \"active\": slot == props.value })}>{slot.time}
)}\r\n
\r\n else\r\n return null;\r\n }\r\n\r\n\r\n const sameMonth: (date1: Date, date2: Date) => boolean =\r\n (date1, date2) => date1.getMonth() == date2.getMonth() && date1.getFullYear() == date2.getFullYear()\r\n\r\n\r\n\r\n return
\r\n
\r\n
\r\n
setStartDate(dayjs(startDate).add(-1, \"month\").toDate())}>\r\n \r\n
\r\n {dayjs(startDate).format('MMMM')}\r\n
setStartDate(dayjs(startDate).add(1, \"month\").toDate())}>\r\n \r\n
\r\n
\r\n
\r\n {props.isMobile && (!!props.value || !!dateMobile) &&
\r\n
\r\n Важно! Обратите внимание что слоты выбираются по московскому времени\r\n
Дата выхода
\r\n {

{dayjs(!!props.value?.slotDate ? props.value.slotDate : dateMobile).format(\"DD.MM.YYYY\")}

}\r\n
\r\n {generateMobileSlots()}\r\n
\r\n
\r\n
}\r\n \r\n \r\n \r\n {generateCalendarHeader}\r\n \r\n \r\n \r\n {generateWeeksOfTheMonth.map((week, wi) => \r\n {week.map((day, di) => generateDayJSX(day, di))}\r\n )}\r\n
\r\n\r\n
\r\n} ","import { useState, useEffect } from 'react';\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n return {\r\n width,\r\n height\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}","import { Button, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport { HireCalendar } from '../Fields/HireCalendar';\r\nimport './Steps.scss';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { IRecruitmentDateSlot } from '../../Services/ResponseData';\r\nimport useWindowDimensions from '../../Services/UseWindowDimensions';\r\n\r\ninterface IState {\r\n freeSlots?: IRecruitmentDateSlot[],\r\n selectedSlot?: IRecruitmentDateSlot,\r\n loadSelect: boolean\r\n}\r\n\r\ninterface IProps {\r\n endAction: () => void\r\n selectedSlotId: number\r\n}\r\n\r\n\r\nexport default function OfferStep(props: IProps): JSX.Element {\r\n const { height, width } = useWindowDimensions();\r\n return \r\n}\r\n\r\nclass SelectHireDateStepInner extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n\r\n componentDidMount(): void {\r\n if (this.props.selectedSlotId > 0) {\r\n new WebService(this.context.token).GetSlot(this.props.selectedSlotId)\r\n .then(res => {\r\n const slot: IRecruitmentDateSlot = { slotId: res.slotId, slotDate: dayjs(res.slotDate).toDate(), time: res.beginTime, managerName: res.managerName };\r\n this.setState({ selectedSlot: slot, freeSlots: [slot] });\r\n });\r\n }\r\n else {\r\n new WebService(this.context.token).GetFreeSlots()\r\n .then(res => {\r\n this.setState({ freeSlots: res.map(slot => ({ slotId: slot.slotId, slotDate: dayjs(slot.slotDate).toDate(), time: slot.beginTime, managerName: slot.managerName })) })\r\n });\r\n }\r\n }\r\n\r\n private OnAccept() {\r\n this.setState({ loadSelect: true });\r\n if (!!this.state.selectedSlot)\r\n new WebService(this.context.token).SelectSlot(this.state.selectedSlot?.slotId).then(_ => { this.props.endAction(); this.setState({ loadSelect: true }); });\r\n }\r\n\r\n render(): React.ReactNode {\r\n return
\r\n Выберите желаемую дату и время выхода\r\n {this.props.width >= 750 && Важно! Обратите внимание что слоты выбираются по московскому времени.}\r\n {!!this.state && !!this.state.freeSlots && <>\r\n
\r\n this.setState({ selectedSlot: val })}\r\n freeSlots={this.state.freeSlots}\r\n value={this.state.selectedSlot}\r\n isMobile={this.props.width < 750}\r\n />\r\n
\r\n {this.props.selectedSlotId < 0 &&
\r\n {}\r\n {this.state.selectedSlot &&\r\n
\r\n Дата выхода\r\n {dayjs(this.state.selectedSlot.slotDate).format(\"DD.MM.YYYY\")} в {this.state.selectedSlot.time}
}\r\n
}}\r\n
\r\n }\r\n}","import { Button, Checkbox, CheckboxField, TextArea, Typography } from '@finam/web-ui-kit';\r\nimport React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport { JsxAttribute } from 'typescript';\r\nimport { IOfferData } from '../../Services/ResponseData';\r\nimport useWindowDimensions from '../../Services/UseWindowDimensions';\r\nimport { WebService } from '../../Services/WebService';\r\nimport { TokenContext } from '../../TokenContext';\r\nimport './Steps.scss';\r\n\r\ninterface IState {\r\n personalDataAccess: boolean;\r\n offerData?: IOfferData;\r\n cancelPanelOpen?: boolean;\r\n cancelCause?: string\r\n}\r\n\r\ninterface IProps {\r\n endAction: () => void\r\n passed: boolean;\r\n}\r\n\r\n\r\n// export default function OfferStep(props: IProps): JSX.Element {\r\n// const { height, width } = useWindowDimensions();\r\n// return \r\n// }\r\n\r\nexport default class OfferStep extends React.Component{\r\n static contextType?= TokenContext;\r\n context!: React.ContextType;\r\n\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n personalDataAccess: false\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n new WebService(this.context.token).GetOffer()\r\n .then(res => this.setState({ offerData: res }))\r\n }\r\n\r\n\r\n private SplitOfferList(listString: string, itemRender: (s: string, i: number) => JSX.Element): JSX.Element | undefined {\r\n if (!listString) return undefined;\r\n const items = listString.split('\\r\\n');\r\n return <>{items.map((p, i) => itemRender(p, i))}\r\n }\r\n\r\n private OnDecision(desicion: boolean) {\r\n new WebService(this.context.token).AcceptOffer(desicion, this.state.cancelCause || '')\r\n .then(_ => { this.props.endAction() });\r\n }\r\n\r\n render() {\r\n return
\r\n {this.state.offerData?.firstName}, добрый день!\r\n {!!this.state.offerData && <>\r\n
\r\n

Поздравляем с успешным прохождением всех этапов знакомства с «Финамом». Уверены, что ваши профессиональные навыки и личные качества могут прекрасно раскрыться и реализоваться в задачах и проектах компании, и рады пригласить присоединиться к команде «Финама»!

\r\n

Ваша должность {this.state.offerData.strPost}{this.state.offerData.strDepartment && ` ${this.state.offerData.strDepartment}`}.

\r\n

Оплата труда на этой должности составляет {this.state.offerData.probationSalary} руб. в месяц на время испытательного срока и {this.state.offerData.salary} руб. в месяц — после прохождения испытательного срока. Обе суммы указаны после вычета подоходного налога.

\r\n {this.state.offerData.probation > 0 &&

Испытательный период составляет {this.state.offerData.probation} месяца.

}\r\n {!!this.state.offerData.goals && <>\r\n

На период испытательного срока перед вами будут стоять следующие задачи:

\r\n {this.SplitOfferList(this.state.offerData.goals, (s, i) =>

{s}

)}}\r\n\r\n {this.SplitOfferList(this.state.offerData.bonuses, (s, i) =>

{s}

)}\r\n

Команда «Финама» демократичная, приветливая, мы обращаемся друг к другу на «ты» и поддерживаем дружественную атмосферу внутри. У нас много внутрикорпоративных активностей — клубы по бегу, йоге, футболу и другим видам спорта, мы проводим благотворительные акции и вместе празднуем дни рождения!

\r\n

Надеемся, что наше сотрудничество будет интересным, насыщенным и долгосрочным!

\r\n
\r\n \r\n }\r\n {!this.props.passed &&\r\n <>
\r\n , checked: boolean) => { this.setState({ personalDataAccess: checked }) }}\r\n />\r\n
\r\n
\r\n \r\n \r\n
\r\n }\r\n \r\n\r\n
{ e.stopPropagation(); this.setState({ cancelPanelOpen: false }); }} />
\r\n
\r\n Почему вы решили отказаться от сотрудничества с нами?\r\n Пожалуйста, напишите причину в поле ниже\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
{ e.stopPropagation(); this.setState({ cancelPanelOpen: false }); }} />
\r\n
\r\n Почему вы решили отказаться от сотрудничества с нами?\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n }\r\n}","import { Loader, Snackbar, ThemeProvider, Typography } from '@finam/web-ui-kit';\r\nimport React, { useRef } from 'react';\r\nimport './App.scss';\r\nimport ManagerContacts from './Components/ManagerContacts';\r\nimport { SideStepsPanel } from './Components/SideStepsPanel';\r\nimport DocumentsUploadStep from './Components/Steps/DocumentsUploadStep';\r\nimport SigningStep from './Components/Steps/SigningStep';\r\nimport UNEPStep from './Components/Steps/UNEPStep';\r\nimport Modal from 'react-modal';\r\nimport { DismissCircle } from '@finam/web-ui-kit/Icons/Dismiss';\r\nimport { InfoData } from './Services/RequestsData';\r\nimport TxAuthWidget, { Options } from '@finam/tx-auth-widget/build';\r\nimport { TokenContext } from './TokenContext';\r\nimport { FinalStep } from './Components/Steps/FinalStep';\r\nimport SocialStep from './Components/Steps/SocialStep';\r\nimport SelectHireDateStep from './Components/Steps/SelectHireDateStep';\r\nimport OfferStep from './Components/Steps/OfferStep';\r\nimport { WebService } from './Services/WebService';\r\nimport MeetingLink from './Components/Meetinglink';\r\nimport { isEdge, isSafari } from 'react-device-detect';\r\nimport ReactModal from 'react-modal';\r\n\r\ninterface IState {\r\n currentStep: number;\r\n errorMessage: string;\r\n userToken?: string;\r\n isLoading: boolean;\r\n isInfoPanelOpen: boolean;\r\n requestData: InfoData;\r\n isClient: boolean;\r\n}\r\n\r\nexport default class App extends React.Component<{}, IState> {\r\n private readonly widgetElementRef: React.RefObject;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { isLoading: true, isInfoPanelOpen: false, currentStep: 0, errorMessage: '', requestData: { candidateGUID: '', managerGUID: '', step: 0, slotId: 0, managerURL: '' }, isClient: false };\r\n this.widgetElementRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n this.initAuth();\r\n }\r\n\r\n private GetUserData(token: string) {\r\n new WebService(token).GetUserData().then((res: any) => {\r\n if (res.success) {\r\n this.setState({ requestData: res.requestData, isLoading: false, currentStep: res.requestData!.step })\r\n }\r\n else {\r\n this.setState({ errorMessage: res.exception, isLoading: false })\r\n }\r\n });\r\n\r\n }\r\n\r\n private checkIfSafari(): boolean {\r\n const userAgentString = navigator.userAgent;\r\n const chromeAgent = userAgentString.indexOf(\"Chrome\") > -1;\r\n // Detect Safari \r\n let safariAgent = userAgentString.indexOf(\"Safari\") > -1;\r\n\r\n // Discard Safari since it also matches Chrome \r\n if ((chromeAgent) && (safariAgent)) safariAgent = false;\r\n return safariAgent;\r\n }\r\n\r\n\r\n private async initAuth() {\r\n const options: Options = {\r\n variant: 'finam',\r\n appName: 'FinamTrade',\r\n appVersion: '1.0.0',\r\n lang: 'ru',\r\n theme: 'light',\r\n env: 'prod',\r\n //provider: \"PREBOARDING_TFA\",\r\n provider: \"PREBOARDING\",\r\n events: {\r\n onLoginSuccess: (res) => {\r\n if (res) {\r\n this.GetUserData(res.token)\r\n }\r\n }\r\n }\r\n };\r\n const widget = await TxAuthWidget.new(options);\r\n widget.subscribeJWT((res) => {\r\n console.log('subscribeJWT', res);\r\n this.setState({ userToken: res ? res.token : undefined });\r\n if (res) {\r\n widget.unmount();\r\n } else if (this.widgetElementRef.current) {\r\n widget.mount(this.widgetElementRef.current);\r\n }\r\n });\r\n }\r\n\r\n private errorHandle(shortMessage: string, fullMessage: string): void {\r\n console.log(fullMessage);\r\n this.setState({ errorMessage: shortMessage });\r\n }\r\n\r\n render(): React.ReactNode {\r\n return {this.renderSafariAlarm()}{this.renderBody()}\r\n }\r\n\r\n renderSafariAlarm() {\r\n return this.checkIfSafari() &&
Приносим извинения, но данный сайт не поддерживает браузер Safari. Не весь функционал может работать корректно. Мы рекомендуем использовать Google Chrome.
\r\n\r\n }\r\n\r\n renderBody(): JSX.Element {\r\n const renderStepBody = () => {\r\n if (this.state.currentStep == 2)\r\n window.location.replace('https://www.finam.ru/landings/otkrytie-scheta/?int_source=finam_main&int_medium=button&int_campaign=open_account&from=finam_main_button_open_account');\r\n switch (this.state.currentStep) {\r\n case 1:\r\n return this.GetUserData(this.state.userToken || '')} passed={this.state.requestData.step > 1} />\r\n case 3:\r\n return this.GetUserData(this.state.userToken || '')} selectedSlotId={this.state.requestData?.slotId || -1} />\r\n case 4:\r\n return this.errorHandle(short, full)} endAction={() => this.GetUserData(this.state.userToken || '')} />\r\n case 5:\r\n return this.errorHandle(short, full)} isClient={this.state.isClient} />\r\n case 6:\r\n return \r\n case 7:\r\n return this.GetUserData(this.state.userToken || '')} />\r\n case 8:\r\n return \r\n default:\r\n return

'Не удалось определить шаг процесса'

;\r\n }\r\n }\r\n\r\n return
\r\n {!this.state.userToken &&
}\r\n {this.state.userToken &&
\r\n { this.setState({ currentStep: step }) }}\r\n slotId={this.state.requestData?.slotId}\r\n managerInfo={!!this.state.requestData?.managerGUID ? { guid: this.state.requestData?.managerGUID, telegram: this.state.requestData?.managerURL } : undefined}\r\n emplManagerInfo={!!this.state.requestData?.emplManagerGUID ? { guid: this.state.requestData?.emplManagerGUID, telegram: this.state.requestData?.emplManagerURL } : undefined}\r\n meetingLink={this.state.requestData?.meetingLink}\r\n />\r\n
\r\n
\r\n {renderStepBody()}\r\n
\r\n {/* {!!this.state.requestData.meetingLink && } */}\r\n
\r\n
\r\n \r\n \r\n }\r\n ClickAwayListenerProps={{ onClickAway: () => { this.setState({ errorMessage: '' }) } }}\r\n onClose={() => { this.setState({ errorMessage: '' }) }}\r\n />\r\n
}\r\n
\r\n }\r\n}\r\n\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport TxAuthWidget from '@finam/tx-auth-widget/build';\r\nimport { config } from 'process';\r\n\r\nconst formRoot = document.getElementById('root');\r\n\r\nReactDOM.render(, formRoot);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.register();\r\n"],"sourceRoot":""}