{"version":3,"sources":["app/assets/icons/menu-dashboard.png","app/assets/icons/menu-exchange-orders.png","app/assets/icons/menu-disposals.png","app/assets/icons/menu-transfers.png","app/assets/icons/menu-messages.png","app/assets/icons/menu-profile.png","app/assets/icons/menu-dashboard-active.png","app/assets/icons/menu-exchange-orders-active.png","app/assets/icons/menu-disposals-active.png","app/assets/icons/menu-transfers-active.png","app/assets/icons/menu-messages-active.png","app/assets/icons/menu-profile-active.png","app/assets/icons/triangle.png","app/assets/icons/help.png","app/assets/icons/checkbox-icon.png","app/assets/icons/back-arrow.png","app/assets/icons/personal-data.svg","app/assets/icons/personal-data-billing.svg","app/assets/icons/personal-data-cards.svg","app/assets/icons/personal-data-accounts.svg","app/assets/icons/personal-data-company.svg","app/assets/icons/icon-park-solid_bank-card.svg","app/assets/icons/icon-park-solid_id-card.svg","app/assets/icons/forward-menu.png","app/assets/icons/clock.png","app/assets/icons/error-icon.png","app/assets/icons/notification-sell.png","app/assets/icons/notification-buy.png","app/assets/icons/notification.png","app/assets/icons/attachment.png","app/assets/icons/pdf-icon.png","app/assets/icons/important-message.png","app/assets/icons/modal-close.png","app/assets/icons/info_svg.svg","app/assets/icons/status-active.svg","app/assets/icons/status-canceled.svg","app/assets/icons/status-completed.svg","app/assets/icons/status-expired.svg","app/assets/icons/status-partial.svg","app/assets/icons/status-pending.svg","app/assets/icons/status-rejected.svg","app/assets/icons/security-icon.svg","app/assets/icons/filter-icon.svg","app/assets/icons/konstruktor.svg","app/assets/icons/tradebull-logo-large.png","app/assets/icons/tradebull-logo.png","app/assets/icons/positive_arrow.png","app/assets/icons/negative_arrow.png","app/assets/images/chess.jpg","app/assets/images/home-bg.png","app/assets/images/profile.png","app/assets/images/profile-personal-data.svg","app/assets/images/profile-notifications.png","app/assets/images/profile-settings.png","app/assets/images/profile-bg.png","app/assets/images/settings-login.png","app/assets/images/settings-logout.png","app/assets/images/settings-notifications.png","app/assets/images/settings-contract.png","app/assets/images/messages-bg.png","app/assets/images/contact-bg.png","app/assets/images/contact.png","app/assets/images/exchange-order-bg.png","app/assets/images/orders-bg.png","app/assets/images/money-transfers-bg.png","app/assets/images/earth.jpg","app/styles/screen-sizes.ts","config.ts","app/logic/graphql/error-handler/errors.ts","app/logic/graphql/operations.ts","app/logic/graphql/generated-operations/queries/login_first.ts","app/logic/graphql/generated-operations/queries/login_second.ts","app/logic/graphql/generated-operations/queries/token_validate.ts","app/logic/graphql/generated-operations/queries/getUser.ts","app/logic/graphql/custom-operations/queries/getUser-all-details.ts","app/logic/graphql/custom-operations/queries/getUser-name.ts","app/logic/graphql/custom-operations/queries/getUser-accounts.ts","app/logic/graphql/custom-operations/queries/getUser-phone-number.ts","app/logic/graphql/custom-operations/queries/getUser-brokers.ts","app/logic/graphql/custom-operations/queries/getUser-need-transaction-second-confirmation.ts","app/logic/graphql/generated-operations/queries/get_notifications.ts","app/logic/graphql/generated-operations/queries/get_unread_notifications_count.ts","app/logic/graphql/generated-operations/queries/get_messages.ts","app/logic/graphql/generated-operations/queries/get_unread_messages_count.ts","app/logic/graphql/generated-operations/queries/get_message.ts","app/logic/graphql/generated-operations/queries/validate_password.ts","app/logic/graphql/generated-operations/queries/sum_portfolio.ts","app/logic/graphql/custom-operations/queries/sum_portfolio-last-update.ts","app/logic/graphql/custom-operations/queries/portfolio_fundamentals.ts","app/logic/graphql/generated-operations/queries/portfolio_history_graph.ts","app/logic/graphql/generated-operations/queries/get_account_balance.ts","app/logic/graphql/generated-operations/queries/get_security_amount.ts","app/logic/graphql/generated-operations/queries/get_exchange_orders.ts","app/logic/graphql/generated-operations/queries/get_exchange_order.ts","app/logic/graphql/generated-operations/queries/get_securities.ts","app/logic/graphql/generated-operations/queries/get_valid_trading_days.ts","app/logic/graphql/generated-operations/queries/get_unit_orders.ts","app/logic/graphql/generated-operations/queries/get_unit_order.ts","app/logic/graphql/generated-operations/queries/get_money_transitions.ts","app/logic/graphql/generated-operations/queries/get_money_transition.ts","app/logic/graphql/generated-operations/queries/get_currencies.ts","app/logic/graphql/generated-operations/queries/get_security_transitions.ts","app/logic/graphql/generated-operations/queries/get_security_transition.ts","app/logic/graphql/generated-operations/queries/get_currency_conversions.ts","app/logic/graphql/generated-operations/queries/get_currency_conversion.ts","app/logic/graphql/generated-operations/queries/get_security_transfers.ts","app/logic/graphql/generated-operations/queries/get_security_transfer.ts","app/logic/graphql/generated-operations/queries/get_money_transfers.ts","app/logic/graphql/generated-operations/queries/get_money_transfer.ts","app/logic/graphql/generated-operations/mutations/update_user_password.ts","app/logic/graphql/generated-operations/mutations/accept_terms_of_use.ts","app/logic/graphql/generated-operations/mutations/read_notification.ts","app/logic/graphql/generated-operations/mutations/read_message.ts","app/logic/graphql/generated-operations/mutations/accept_message.ts","app/logic/graphql/generated-operations/mutations/update_user_timeout.ts","app/logic/graphql/generated-operations/mutations/update_user_language.ts","app/logic/graphql/generated-operations/mutations/logout.ts","app/logic/graphql/generated-operations/mutations/update_user_password_with_confirm.ts","app/logic/graphql/generated-operations/mutations/confirm_password_update.ts","app/logic/graphql/generated-operations/mutations/create_exchange_order.ts","app/logic/graphql/generated-operations/mutations/create_exchange_order_confirm.ts","app/logic/graphql/generated-operations/mutations/cancel_exchange_order.ts","app/logic/graphql/generated-operations/mutations/cancel_exchange_order_confirm.ts","app/logic/graphql/generated-operations/subscriptions/new_token.ts","app/logic/graphql/generated-operations/subscriptions/new_notification.ts","app/logic/graphql/generated-operations/subscriptions/notification_unread_count.ts","app/logic/graphql/generated-operations/subscriptions/auto_read_notification.ts","app/logic/graphql/generated-operations/subscriptions/new_message.ts","app/logic/graphql/generated-operations/subscriptions/message_unread_count.ts","app/logic/graphql/generated-operations/subscriptions/message_read.ts","app/logic/graphql/generated-operations/subscriptions/notification_read.ts","app/logic/graphql/generated-operations/subscriptions/sum_portfolio.ts","app/logic/graphql/generated-operations/subscriptions/new_exchange_order.ts","app/logic/graphql/generated-operations/subscriptions/update_exchange_order.ts","app/logic/graphql/generated-operations/subscriptions/new_unit_order.ts","app/logic/graphql/generated-operations/subscriptions/update_unit_order.ts","app/logic/graphql/generated-operations/subscriptions/new_money_transition.ts","app/logic/graphql/generated-operations/subscriptions/update_money_transition.ts","app/logic/graphql/generated-operations/subscriptions/new_security_transition.ts","app/logic/graphql/generated-operations/subscriptions/update_security_transition.ts","app/logic/graphql/generated-operations/subscriptions/new_currency_conversion.ts","app/logic/graphql/generated-operations/subscriptions/update_currency_conversion.ts","app/logic/graphql/generated-operations/subscriptions/new_security_transfer.ts","app/logic/graphql/generated-operations/subscriptions/update_security_transfer.ts","app/logic/graphql/generated-operations/subscriptions/new_money_transfer.ts","app/logic/graphql/generated-operations/subscriptions/update_money_transfer.ts","app/logic/redux/presentation/presentation-actions.ts","app/logic/redux/presentation/presentation-reducer.ts","app/logic/redux/presentation/presentation-selector.ts","app/logic/graphql/types/types.d.ts","app/logic/redux/presentation/index.ts","app/logic/redux/auth/auth-thunk-actions.ts","app/logic/redux/auth/auth-actions.ts","app/logic/redux/auth/auth-reducer.ts","app/logic/redux/auth/auth-selector.ts","app/logic/redux/auth/index.ts","app/logic/redux/exchange-orders/exchange-orders-actions.ts","app/logic/redux/exchange-orders/exchange-orders-reducer.ts","app/logic/redux/exchange-orders/constants.ts","app/logic/redux/reducers.ts","app/logic/redux/exchange-orders/helpers.ts","app/logic/redux/exchange-orders/exchange-orders-selector.ts","app/logic/redux/exchange-orders/index.ts","app/logic/redux/store.ts","app/logic/graphql/error-handler/error-exchange.ts","app/logic/graphql/error-handler/handle-error.ts","app/logic/graphql/graphql-client.ts","app/components/utils/resetable-urql-provider.tsx","app/assets/icons/index.ts","app/assets/index.ts","app/assets/images/index.ts","app/helpers/use-on-click-outside.ts","app/components/ui-utils/modal.tsx","app/components/ui-utils/modal-presenter.tsx","app/components/utils/toast-presenter.tsx","app/navigation/paths.ts","app/components/navigation/menu-sidebar/components/notification-badge.tsx","app/components/navigation/menu-sidebar/components/profile-circle.tsx","app/components/navigation/menu-sidebar/components/message-badge.tsx","app/components/navigation/menu-sidebar/custom-menu.tsx","app/components/loading-indicators/button-spinner.tsx","app/components/buttons/button.tsx","app/components/utils/logout-button.tsx","app/components/utils/error-boundary.tsx","app/components/navigation/mobile-menu.tsx","app/components/utils/hideable-component.tsx","app/components/loading-indicators/spinner.tsx","app/screens/loading-screen/loading-screen.tsx","app/logic/redux/router/router-selectors.ts","app/components/utils/private-route.tsx","app/components/containers/containers.tsx","app/components/loading-indicators/centered-spinner.tsx","app/components/ui-utils/screen-header/header-back-button.tsx","app/components/ui-utils/screen-header/screen-header.tsx","app/components/containers/default-screen.tsx","app/components/ui-utils/error-shower.tsx","app/components/inputs/styled-react-select.tsx","app/helpers/date-formatters.ts","app/helpers/number-formatters.ts","app/components/data-viewers/charts/area-chart/components.tsx","app/components/data-viewers/charts/area-chart/area-chart.tsx","app/components/data-viewers/charts/area-chart/helpers.ts","app/screens/dashboard/components/history/components.tsx","app/screens/dashboard/components/history/history.tsx","app/components/ui-utils/info-icon.tsx","app/screens/dashboard/components/components.tsx","app/screens/dashboard/components/instrument-list/components.tsx","app/screens/dashboard/components/instrument-list/instrument-list-item.tsx","app/screens/dashboard/components/instrument-list/instrument-list.tsx","app/components/data-viewers/charts/donut-chart/components.tsx","app/components/data-viewers/charts/donut-chart/donut-chart.tsx","app/components/ui-utils/separators.tsx","app/screens/dashboard/components/sum-portfolio/components.tsx","app/screens/dashboard/components/sum-portfolio/sum-portfolio.tsx","app/screens/dashboard/dashboard.tsx","app/components/inputs/styled-checkbox.tsx","app/components/inputs/styled-input.tsx","app/logic/cookies/cookie-dao.ts","app/components/ui-utils/cookie-bar.tsx","app/components/ui-utils/legal-information.tsx","app/components/ui-utils/terms-of-use.tsx","app/screens/login/login.tsx","app/components/navigation/menu-sidebar/profile-menu.tsx","app/components/navigation/menu-sidebar/menu-sidebar.tsx","app/components/utils/direction-utils.ts","app/components/ui-utils/notifications-sidebar/notification-list-item.tsx","app/components/ui-utils/notifications-sidebar/notification-list.tsx","app/components/ui-utils/notifications-sidebar/notifications-sidebar.tsx","app/helpers/use-interval.tsx","app/components/utils/timeout.tsx","app/screens/main-frame/main-frame.tsx","app/screens/main-screen/main-screen.tsx","app/components/data-viewers/data-row/data-row.tsx","app/components/data-viewers/id-card.tsx","app/screens/personal-data/personal-data.tsx","app/components/navigation/menu-card.tsx","app/screens/profile/profile.tsx","app/screens/settings/settings.tsx","app/screens/contact/contact.tsx","app/components/lists/infinite-list/index.ts","app/components/lists/infinite-list/infinite-list.tsx","app/screens/notifications/notification-card.tsx","app/screens/notifications/notifications.tsx","app/components/inputs/styled-select.tsx","app/screens/logout-settings/logout-settings.tsx","app/screens/login-settings/login-settings.tsx","app/logic/graphql/hooks/use-user-phone-number.ts","app/screens/password-change/password-change.tsx","app/screens/messages/message-details.tsx","app/screens/messages/message-card.tsx","app/screens/messages/message-infinite-list.tsx","app/screens/messages/messages.tsx","app/helpers/type-formatters.tsx","app/components/lists/list-controls/index.ts","app/components/lists/list-controls/list-controls.tsx","app/components/lists/list-header/components/styled-components.ts","app/components/lists/list-item/types.ts","app/components/lists/list-header/hooks/use-list-header.ts","app/components/lists/list-header/index.ts","app/components/lists/list-header/list-header.tsx","app/helpers/type-options.ts","app/components/lists/list-item/components.tsx","app/components/lists/list-item/list-item.tsx","app/screens/exchange-orders/exchange-orders/components/exchange-order-list-item/exchange-order-list-item.tsx","app/screens/exchange-orders/exchange-orders/hooks/use-exchange-orders.ts","app/screens/exchange-orders/exchange-orders/exchange-orders.tsx","app/screens/exchange-orders/exchange-order-details.tsx","app/components/inputs/button-select.tsx","app/screens/exchange-orders/new-exchange-order/components/exchange-order-field-info/exchange-order-field-info.tsx","app/screens/exchange-orders/new-exchange-order/step-1-form/new-exchange-order-form.tsx","app/screens/exchange-orders/new-exchange-order/new-exchange-order.tsx","app/screens/exchange-orders/new-exchange-order/step-2-details/new-exchange-order-details.tsx","app/screens/exchange-orders/new-exchange-order/step-3-confirmation/new-exchange-order-confirmation.tsx","app/screens/unit-orders/unit-orders/components/unit-order-list-item.tsx","app/screens/unit-orders/unit-orders/unit-orders.tsx","app/screens/unit-orders/unit-order-details.tsx","app/screens/money-transition/money-transitions/components/money-transition-list-item.tsx","app/screens/money-transition/money-transitions/money-transitions.tsx","app/screens/money-transition/money-transition-details.tsx","app/screens/security-transition/security-transitions/components/security-transition-list-item.tsx","app/screens/security-transition/security-transitions/security-transitions.tsx","app/screens/security-transition/security-transition-details.tsx","app/screens/currency-conversion/currency-conversions/components/currency-conversion-list-item.tsx","app/screens/currency-conversion/currency-conversions/currency-conversions.tsx","app/screens/currency-conversion/currency-conversion-details.tsx","app/screens/security-transfer/security-transfers/components/security-transfer-list-item.tsx","app/screens/security-transfer/security-transfers/security-transfers.tsx","app/screens/security-transfer/security-transfer-details.tsx","app/screens/money-transfer/money-transfers/components/money-transfer-list-item.tsx","app/screens/money-transfer/money-transfers/money-transfers.tsx","app/screens/money-transfer/money-transfer-details.tsx","app/screens/locale-settings/locale-settings.tsx","app/screens/index.ts","app/navigation/routes.tsx","app/navigation/navigation.tsx","app/navigation/browser-tab-label.tsx","app/components/utils/screen-width-observer.tsx","app/app.tsx","serviceWorker.ts","index.tsx"],"names":["module","exports","ScreenSize","config","backend_url","httpProtocol","ws_api_url","wsProtocol","graphql_api_url","version","ErrorMessages","ErrorDescriptions","GraphqlOperations","login_first","queryString","createVars","uid","password","input","login_second","first_token","secret","token_validate","getUser","getUserAllDetails","getUserName","getUserAccounts","getUserPhoneNumber","getUserBrokers","getUserNeedTransactionSecondConfirmation","get_notifications","page","per_page","paginator","get_unread_notifications_count","get_messages","get_unread_messages_count","get_message","id","validate_password","old_password","sum_portfolio","sum_portfolioLastUpdate","portfolio_fundamentals","account","portfolio_history_graph","range","get_account_balance","currency","get_security_amount","security","get_exchange_orders","type","direction","status","ids","order","filter","get_exchange_order","get_securities","list_type","get_valid_trading_days","get_unit_orders","get_unit_order","get_money_transitions","get_money_transition","get_currencies","get_security_transitions","get_security_transition","get_currency_conversions","get_currency_conversion","get_security_transfers","get_security_transfer","get_money_transfers","get_money_transfer","update_user_password","mutationString","new_password","accept_terms_of_use","term_id","read_notification","read_message","accept_message","update_user_timeout","timeout","update_user_language","language","logout","update_user_password_with_confirm","confirm_password_update","create_exchange_order","create_exchange_order_confirm","token","cancel_exchange_order","cancel_exchange_order_confirm","new_token","subscriptionString","new_notification","notification_unread_count","auto_read_notification","new_message","message_unread_count","message_read","notification_read","new_exchange_order","update_exchange_order","new_unit_order","update_unit_order","new_money_transition","update_money_transition","new_security_transition","update_security_transition","new_currency_conversion","update_currency_conversion","new_security_transfer","update_security_transfer","new_money_transfer","update_money_transfer","actionTypes","SET_TOAST","SET_SHOW_MODAL","SET_SCREEN_SIZE","actions","setToast","content","options","action","setShowModal","onClose","setScreenSize","screenSize","initializeState","toast","undefined","modalContent","state","produce","draft","Presentation","payload","console","log","ScreenSizeFloor","CurrencyListType","CurrencyType","DaytradeType","Direction","ExchangeRateType","OrderingDirection","OrderingType","SecurityListType","SecurityType","Status","selectToast","presentation","selectModalContent","selectOnClose","selectScreenSize","XL","selectIsMobileSize","createSelector","XS","handleAuthenticationSuccess","dispatch","Auth","setAuthToken","expiry","need_password_update","terms_of_use","setUserLoggedIn","setTimeoutTimestamp","Date","setUserLoggedOut","DO_LOGIN","DO_HANDLE_ALREADY_LOGGED_IN","SET_USER_LOGGED_IN","SET_USER_LOGGED_OUT","SET_LOGIN_REDIRECT_PATH","SET_LANGUAGE","SET_FIRST_TOKEN","SET_AUTH_TOKEN","SET_FINISHED_CONFIRMATION","SET_TIMEOUT_TIMESTAMP","SET_REMAINING_TIME","SET_LOGIN_ERROR","RESET_STORE","SET_SHOULD_RESET_CLIENT","SET_AUTH_TOKEN_ACCEPT_TERMS","setLoginRedirectPath","path","setFirstToken","setAuthTokenAcceptTerms","timestamp","setRemainingTime","time","setLoginError","key","value","setFinishedConfirmation","finished","resetStore","setShouldResetClient","reset","setLanguage","doLoginFirst","getState","a","previousFirstToken","select","selectFirstToken","graphqlClient","query","requestPolicy","toPromise","result","error","data","appearance","autoDismiss","doLoginSecond","graphqlSubscriptionClient","close","doLogout","mutation","doHandleApplicationStarted","doSetAuthenticationToken","doPostponeTimeout","loggedIn","loginRedirectPath","firstToken","authToken","timeoutTimestamp","remainingTime","loginErrors","finishedConfirmation","shouldResetClient","selectLoggedIn","auth","selectLoginRedirectPath","selectAuthToken","selectTimeoutTimestamp","selectRemainingTime","selectLoginErrors","selectFinishedConfirmation","selectShouldResetClient","selectLanguage","SET_EDITED_EXCHANGE_ORDER","SET_SHOULD_VALIDATE","SET_VALID_DATES","SET_INVESTABLE_ACCOUNT_BALANCE","SET_INVESTABLE_SECURITY_AMOUNT","setEditedExchangeOrder","setShouldValidate","validate","setValidDates","dates","setInvestableAccountBalance","balance","setInvestableSecurityAmount","amount","editedExchangeOrder","shouldValidate","validDates","investableAccountBalance","investableSecurityAmount","ExchangeOrders","history","diffInDays","startDate","endDate","moment","startOf","diff","selectEditedExchangeOrder","exchangeOrders","selectShouldValidate","selectValidDates","selectInvestableAccountBalance","selectInvestableSecurityAmount","selectSelectableDates","exchangeOrder","today","selectableStartDates","d","selectableEndDates","validity_start","selectExchangeOrderIsValid","accountBalance","ownedSecurityAmount","count","isNaN","daytrade","daytrade_type","LimitPrice","StopLimit","limit_price","StopMarket","activation_price","securityDetails","Buy","Sell","selectExchangeOrderValidationErrors","exchangeType","daytradeType","limitPrice","activationPrice","createBrowserHistory","store","createStore","combineReducers","reducer","router","connectRouter","compose","applyMiddleware","routerMiddleware","thunk","errorExchange","forward","ops$","pipe","tap","message","handleError","subscriptionClient","SubscriptionClient","reconnect","connectionCallback","_result","length","createGraphqlClient","Object","freeze","createClient","url","exchanges","dedupExchange","cacheExchange","fetchExchange","subscriptionExchange","forwardSubscription","operation","request","fetchOptions","credentials","ResetableUrqlProvider","props","useDispatch","useState","client","setClient","useSelector","useEffect","newClient","resetGraphqlClient","window","location","reload","children","icons","menu_dashboard","menu_exchange_orders","menu_disposals","menu_transfers","menu_messages","menu_profile","menu_dashboard_active","menu_exchange_orders_active","menu_disposals_active","menu_transfers_active","menu_messages_active","menu_profile_active","back_arrow","forward_menu","tradebull_logo_large","konstruktor","personal_data","personal_data_billing","personal_data_cards","personal_data_accounts","personal_data_company","fa_solid_id_card","icon_park_solid_id_card","clock","notification_sell","notification_buy","notification","attachment","pdf_icon","important_message","status_active","status_canceled","status_completed","status_expired","status_partial","status_pending","status_rejected","error_icon","triangle","tradebull_logo","help","checkbox_icon","modal_close","info_svg","security_icon","filter_icon","positive","negative","assets","images","home_bg","profile_bg","contact_bg","messages_bg","exchange_order_bg","orders_bg","money_transfers_bg","profile_personal_data","profile_notifications","profile_settings","profile","settings_login","settings_logout","settings_notifications","settings_contract","settings_language","chess","contact","useOnClickOutside","ref","onClickOutside","handleClickOutside","event","current","contains","target","document","addEventListener","removeEventListener","opacityAnimation","keyframes","ModalBackdrop","styled","div","ModalWindow","ModalCloseIcon","img","Modal","modalWindowRef","useRef","open","src","onClick","ModalPresenter","ToastPresenter","intl","useIntl","addToast","useToasts","formatMessage","Paths","BadgeContainer","span","NotificationBadge","notificationCount","setNotficicationCount","notificationQueryResult","useQuery","useSubscription","response","notificationCountData","indicatedNotificationsCount","Container","attrs","small","Image","ProfileCircle","stopPropagation","isActive","width","alt","MessageBadge","messageCount","setMessageCount","messageQueryResult","messageCountData","indicatedMessagesCount","ImageContainer","MenuIcon","Item1","isOpen","setIsOpen","useLocation","useHistory","pathname","some","c","subRoutes","r","includes","className","preventDefault","push","activeIcon","icon","badge","label","map","index","Item2","CustomMenu","useMemo","style","rotateAnimation","ButtonSpinner","StyledButton","button","big","secondary","isLoading","fullWidthMobile","ButtonText","Button","loading","inactive","LogoutButton","Fallback","ErrorBoundary","beforeCapture","scope","setTag","fallback","growAnimation","MenuDrawer","Navbar","nav","NavbarHeader","header","profileSubroutes","HamburgerButton","height","viewBox","fill","xmlns","y","withErrorBoundary","menuOpen","setMenuOpen","visible","menuRef","HideableComponent","mediaMinQuery","showFrom","matchMedia","mediaMaxQuery","showUntil","windowWidth","innerWidth","showingInitially","setVisible","mediaQueryMinChanged","ev","matches","mediaQueryMaxChanged","addListener","removeListener","Spinner","LoadingScreen","getCurrentLocation","PrivateRoute","component","to","render","ScreenContainer","BlurredContainer","section","BlurredContainerM2030","BlurredContainerM3030","MattRow","ImageCircleBig","SpinnerWrapper","CenteredSpinner","Wrapper","BackIcon","HeaderBackButton","UpdatedAtText","p","ScreenHeader","title","lastUpdate","StepsContainer","StepItemContainer","HeaderContainer","StepIndexContainer","color","StepItem","getStepStatus","currentIndex","ImageBackground","DefaultScreen","background","backUrl","onBackClick","updatedAt","rightContent","steps","step","currentStep","ErrorIcon","ErrorContainer","ErrorShower","bigger","BoldSingleValue","SingleValue","DropdownIndicatorBlack","DropdownIndicator","DropdownIndicatorWhite","Option","innerProps","rest","onMouseMove","onMouseOver","newProps","assign","StyledReactSelect","typeClassName","mattExtraClasses","disabled","isMulti","placeholder","onChange","selected","o","defaultValue","isSearchable","searchable","noOptionsMessage","classNamePrefix","filterOption","createFilter","ignoreAccents","components","IndicatorSeparator","bold","isDisabled","formatDate","dateString","locale","format","formatDateTime","formatNumber","num","postfix","maximumFractionDigits","toLocaleString","replace","ChartContainer","TooltipContainer","Dot","cx","cy","stroke","strokeWidth","ActiveDot","CustomTooltip","date","MyAreaChart","calculatedXAxisProperties","numberOfPoints","textAnchor","tick","angle","interval","Math","min","floor","SM","dy","calculateXAxisProperties","tooltipCoordinate","setTooltipCoordinate","areaRef","createRef","points","Infinity","max","forEach","extension","rangeMin","rangeMax","ticks","i","calculateGraphRangeData","onChartMouseMove","chart","isTooltipActive","point","activeTooltipIndex","x","onChartMouseLeave","onMouseLeave","x1","y1","x2","y2","offset","stopColor","stopOpacity","vertical","dataKey","axisLine","tickLine","tickFormatter","t","dx","domain","unit","isAnimationActive","position","cursor","dot","activeDot","Percentage","isPositive","ValueLabel","TitleCol","onChangeInterval","percent","InfoIcon","InfoContainer","InfoContent","dangerouslySetInnerHTML","__html","DataBlock","HalfDataBlock","Row","Icon","MiniIcon","MobileValueWrapper","MobileValue","MobileDataRow","valueClassName","MobilePercentDataRow","justifyContent","alignItems","marginRight","FinancialInstrumentContent","instrument","name","investable","payable","reserved","last_closing_price","market_price","exchange_rate","FinancialInstrumentMobileContent","FundsContent","funds","FundsMobileContent","MobileContainer","InstrumentListItem","typeName","fundamental","__typename","handleOnClick","financialInstrument","tradable_stock_exchange","short_name","accounts","number","accountDetails","renderContent","renderMobileContent","isShowingInfo","setShowingInfo","f","constants","TOOLTIP_TITLE_FONTSIZE","TOOLTIP_DESCRIPTION_FONTSIZE","TEXT_OFFSET","START_OFFSET","MIDDLE_OFFSET","END_OFFSET","OUTER_EXTRA_RADIUS","INNER_EXTRA_RADIUS","mobileConstants","RADIAN","PI","RADII","inner","middleOverlap","middle","outer","SMALL_RADII","DonutChart","activeIndex","setActiveIndex","onPieEnter","radii","activeShape","innerRadius","midAngle","outerRadius","startAngle","endAngle","values","InnerActiveShape","onMouseEnter","entry","innerColors","sin","cos","sx","sy","mx","my","ex","ey","sinTip1","cosTip1","xTip1","yTip1","sinTip2","cosTip2","xTip2","yTip2","xTip3","yTip3","fontSize","fontWeight","toFixed","ActiveShape","radius","percentage","dominantBaseline","CustomizedLabel","colors","VerticalSeparator","HorizontalSeparator","HorizontalSeparatorGray","COLORS","INNER_COLORS","ChartWrapper","Circle","LabelContainer","PercentContainer","Legend","sumPortfolioSlices","s","FlexContainer","isMobile","sum","selectedAccount","setSelectedAccount","sumPortfolio","setSumPortfolio","portfolioHistoryGraph","setPortfolioHistoryGraph","portfolioFundamentals","setPortfolioFundamentals","historyInterval","setHistoryInterval","userAccountsQueryResult","sumPortfolioQueryResult","variables","portfolioHistoryGraphQueryResult","reexecutePortfolioHistoryGraphQuery","portfolioFundamentalsQueryResult","reexecutePortfolioFundamentalsQuery","last_update","portfolio","fetching","toString","Checkbox","checked","CheckIcon","StyledCheckbox","setValue","Input","blurred","paddingTop","Placeholder","top","StyledInput","uncontrolled","currentTarget","onKeyPress","onEnterPress","autoComplete","inputMode","autoFocus","CookieDAO","Cookies","CookieBarContainer","CookieBar","get","isShowing","setIsShowing","set","WrapperHorizontal","InfoText","KonstruktorIcon","LegalLink","ImpressumModalContent","LegalInformation","getFullYear","pdfjs","GlobalWorkerOptions","workerSrc","TermsOfUseModalContent","numPages","setNumPages","eventListener","setEventListener","offsetHeight","scrollHeight","scrollTop","scroll","setScroll","pdf","acceptTermsOfUse","useMutation","handleScroll","file","onLoadSuccess","pages","item","inputRef","e","pageNumber","then","catch","err","UnableToLoginModalContent","redirectPath","email","setEmail","setPassword","secondPassword","setSecondPassword","newPassword","setNewPassword","newPasswordConfirmation","setNewPasswordConfirmation","changePassword","newPasswordError","setNewPasswordError","newPasswordConfirmationError","setNewPasswordConfirmationError","shouldValidateNewPassword","setShouldValidateNewPassword","acceptedPrivacyPolicy","setAcceptedPrivacyPolicy","handleLoginFirstClick","handleLoginSecondClick","handleSetNewPasswordClick","firstLoginStepContent","handleLanguageSelect","href","rel","secondLoginStepContent","passwordChangeStepContent","display","termsOfUseStepContent","margin","subroutes","ProfileMenu","user","MenuSidebar","getDirectionText","getDirectionIcon","borderAnimation","newLabelAnimation","NotificationCardWrapper","animated","ClockIcon","DirectionIcon","NewLabel","NotificationListItem","new","text","ListContainer","List","ul","NotificationsList","notifications","setNotifications","subscriptionNotifications","setSubsciptionNotifications","subscriptionNotifs","n","SidebarRight","Header","NotificationsSidebar","useInterval","callback","delay","savedCallback","setInterval","clearInterval","TimeoutModalContent","remainingSecs","Timeout","getTime","MainFrame","scrollContainerRef","scrollTo","left","tokens","showNotificationsSideMenu","Value","DataRow","IDCardBody","backgroundGradient","IDCartNumberWrapper","IDNumberText","IDCard","CardTitleContainer","CardTitle","h2","TitleIcon","AccountRow","PdfIcon","LangLink","b","AttachmentContainer","formatAddress","addr","country","concat","zip_code","city","address","openAttahcment","place_of_birth","time_of_birth","mothers_name","is_company","tax_number","company_name","registration_number","phone","mailing_address","billing_address","personal_documents","doc","type_en","terms_and_conditions","term","name_en","attachment_en","personal_contracts","renderUserContent","TextContainer","ForwardIcon","TitleContainer","MenuCard","image","description","IconContainer","WarningIconContainer","phoneIcon","emailIcon","getUserBrokersQueryResult","brokerCards","brokers","onError","goBack","InfiniteList","itemHeight","mobileItemHeight","desktopItemHeight","hasNextPage","isNextPageLoading","items","loadNextPage","listItem","onClickItem","itemCount","loadMoreItems","isItemLoaded","Item","mobileHeight","threshold","minimumBatchSize","onItemsRendered","innerHeight","itemSize","unread","TextWrapper","Text","NotificationCard","text_en","currentPage","setCurrentPage","page_count","readNotification","notifs","startIndex","stopIndex","notif","find","Select","TriangleWrapper","StyledSelect","initialValue","setSelected","selectedOption","option","selectedTimeout","setSelectedTimeout","changeTimeout","useUserPhoneNumber","phoneNumber","setCurrentStep","currentPassword","setCurrentPassword","smsCode","setSMSCode","passwordError","setPasswordError","smsCodeError","setSMSCodeError","confirmPassword","handleNext1Click","handleNext2Click","handleNext3Click","step1Content","step2Content","step3Content","renderCurrentStepContent","MessageDetailWrapper","AttachmentIcon","MessageBody","MessageDetails","acceptMessage","refetchMessage","attachments","subject_en","subject","awaiting_acception","accepted","fileName","MessageCardWrapper","borderColor","UrgentIcon","TextPreview","TitleWrapper","MessageCard","has_attachment","MessageInfiniteList","handleMessageClick","selectedMessage","overflowY","MessageListContainer","DetailsContainer","messages","setMessages","setSelectedMessage","hasSetFirst","setHadSetFirst","mobileSelected","setMobileSelected","isMobileMode","MD","readMessage","initialMessage","subscriptionMessages","noContent","hasZeroItems","isShowingMobileDetails","stringifyStatus","stringifyExchangeRateType","StatusIcon","Active","CancelRequested","Canceled","Completed","Expired","Partial","Pending","Rejected","statusColor","ListControls","selectedStatus","setSelectedStatus","selectedOrderingType","selectedOrderingDirection","setSelectedOrderingDirection","setSelectedOrderingType","selectedInstruments","setSelectedInstruments","resetList","handleStatusChange","useCallback","handleOrderingChange","handleInstrumentChange","instruments","statusOptions","orderingOptions","istrumentPlaceholder","instrumentOptions","DataVariant","ButtonContainer","ControlsContainer","FilterIcon","useListHeader","filtersVisible","setFiltersVisible","handleFilterClick","ListHeader","onCreateClick","createButtonLabel","getStatusOptions","getOrderingOptions","Desc","TransferDate","Asc","TransitionDate","ValidityStart","ValidityEnd","OrderDate","FromValue","Security","TransactionCode","Currency","Count","ActivationPrice","FromAccount","ToAccount","ExchangeOrderOrderingTypes","UnitOrderingTypes","MoneyTransitionOrderingTypes","SecurityTransitionsOrderingTypes","MoneyTransfersOderingTypes","SecurityTransfersOrderingTypes","CurrencyConversionsOderingTypes","decorationColor","decorationShadowColor","StatusLabelContainer","DateContainer","DefaultRow","HighlightedRow","GrayRow","DescriptiveHighlightedRow","variant","highlighted","gray","descriptive_highlighted","dataLines","lineData","ListItemContent","iconVisible","minWidth","titleExtension","transactionCode","detailBlocks","blockData","ListItemMobileContent","ListItem","ExchangeOrderListItem","pricesDataLines","deal_price","transaction_code","validity_end","selectedSecurities","setItems","sumPortfolioLastUpdateQueryResult","reexecuteSumPortfolioLastUpdateQuery","pause","itemsResultQuery","reexecuteItemsResultQuery","securitiesQueryResult","ExchangeOrder","OwnHistory","itemsCopy","itemToChangeIndex","findIndex","exchange_orders","userAccountOptions","controls","handleCreateClick","list","fetchNextPage","exchangeOrderOrderingOptions","getExchangeOrderOrderingOptions","useExchangeOrders","CloseConfirmModalContent","setToken","getUserNeedTransactionSecondConfirmationQueryResult","needsConfirmation","need_transaction_second_confirmation","cancelResult","cancelExchangeOrder","cancelConfirmResult","cancelExchangeOrderConfirm","handleConfirmedCancellation","onCancellationSuccess","confirmationDependentContent","match","useRouteMatch","params","idNum","Number","parseInt","NaN","valueOf","exchangeOrderQueryResult","reexecuteExchangeOrderQuery","handleCancellationSuccess","titleWithTransactionCode","isShowingCancelButton","cancel_accepted","isShowingCancelRejectedContent","reason","cancel_reject_reason_en","cancel_reject_reason","reject_reason_en","reject_reason","fulfilled_count","stock_market_locality","outside_trading_hours","edited_id","ButtonCard","ButtonSelect","onSelect","Anchor","aside","yOffset","ExchangeOrderFieldInfo","unregisterHistoryBlock","FormContainer","FormBlockContainer","getExchangeTypeOptions","typeOptions","NewExchangeOrderForm","isValidating","validationErrors","isValid","currentValidDays","openInfo","setOpenInfo","datePickerFocusedInput","setDatePickerFocusedInput","selectableDays","getAccountBalanceQueryResult","investableBalance","getSecurityAmountQueryResult","isDaytrade","getSecuritiesQueryResult","All","OwnActual","allValidDays","selectableSecurities","sec","handleDatesChange","toISOString","directionSelect","accountSelect","observedBalance","balanceUnit","summary","securitySelect","stockExchangeLocality","exchangeTypeSelect","Open","Close","activationPriceInput","maxWidth","parsedActivationPrice","parseFloat","abs","limitPriceInput","parsedLimitPrice","countInput","outsideTradingHoursCheckbox","validityDatePicker","String","navigationButtons","onFinishedEditing","NewExchangeOrderDetails","creationResult","createExchangeOrder","createdExchangeOrder","onCreationSuccess","NewExchangeOrderConfirmation","onSuccess","confirmationContent","infoContent","handler","returnValue","block","handleSuccesfulConfirmation","UnitOrderListItem","dataLines1","purchase_value","dataLines2","unitOrderingOptions","getUnitOrderingOptions","UnitOrder","unit_orders","unitOrderQueryResult","reexecuteUnitOrderQuery","unitOrder","last_available_net_price","MoneyTransitionListItem","from_account","to_account","transfer_date","moneyTransitionOrderingOptions","getMoneyTransitionOrderingOptions","selectedCurrencies","setSelectedCurrencies","currenciesQueryResult","Transition","money_transitions","moneyTransitionQueryResult","reexecuteMoneyTransitionQuery","moneyTransition","fulfillment_date","SecurityTransitionListItem","securityTransitionsOrderingOptions","getSecurityTransitionsOrderingOptions","security_transitions","securityTransitionQueryResult","reexecuteSecurityTransitionQuery","securityTransition","CurrencyConversionListItem","exchangeRateDescriptor","from_currency","to_currency","from_amount","to_amount","order_date","currencyConversionsOrderingOptions","getCurrencyConversionsOrderingOptions","Conversion","currency_conversions","currencyConversionQueryResult","reexecuteCurrencyConversionQuery","currencyConversion","SecurityTransferListItem","securityTransfersOrderingOptions","getSecurityTransfersOrderingOptions","Transfer","security_transfers","securityTransferQueryResult","reexecuteSecurityTransferQuery","securityTransfer","to_provider","MoneyTransferListItem","moneyTransfersOrderingOptions","getMoneyTransfersOrderingOptions","money_transfers","moneyTransferQueryResult","reexecuteMoneyTransferQuery","moneyTransfer","changeLanguage","selectedLanguage","setSelectedLanguage","Screens","MainScreen","Dashboard","Login","Profile","PersonalData","Settings","Contact","Notifications","LoginSettings","LogoutSettings","LocaleSettings","PasswordChange","Messages","ExchangeOrderDetails","NewExchangeOrder","UnitOrders","UnitOrderDetails","MoneyTransitions","MoneyTransitionDetails","SecurityTransitions","SecurityTransitionDetails","CurrencyConversions","CurrencyConversionDetails","SecurityTransfers","SecurityTransferDetails","MoneyTransfers","MoneyTransferDetails","Routes","exact","InnerRoutes","Navigation","tabNamesByPath","BrowserTabLabel","favIcon","Helmet","charSet","renderTitleComponent","pathName","tabNames","pathKey","keys","pickTitle","getScreenSize","LG","ScreenWidthObserver","mediaSMBoundaryMinQuery","mediaMDBoundaryMinQuery","mediaLGBoundaryMinQuery","mediaXLBoundaryMinQuery","mediaQueryChanged","useScreenWidthObserver","flattenMessages","nestedMessages","prefix","reduce","prefixedKey","hu","en","App","handleTabClose","userLanguage","loginLanguage","lang","defaultLocale","fallbackOnEmptyString","Boolean","hostname","Sentry","dsn","environment","process","release","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"+JAAAA,EAAOC,QAAU,k2V,kBCAjBD,EAAOC,QAAU,s+R,kBCAjBD,EAAOC,QAAU,8rX,kBCAjBD,EAAOC,QAAU,8jO,kBCAjBD,EAAOC,QAAU,8qW,kBCAjBD,EAAOC,QAAU,0gX,kBCAjBD,EAAOC,QAAU,8nU,kBCAjBD,EAAOC,QAAU,0zQ,kBCAjBD,EAAOC,QAAU,k2V,kBCAjBD,EAAOC,QAAU,ksN,kBCAjBD,EAAOC,QAAU,s8U,kBCAjBD,EAAOC,QAAU,srV,kBCAjBD,EAAOC,QAAU,sY,kBCAjBD,EAAOC,QAAU,87F,kBCAjBD,EAAOC,QAAU,84Q,kBCAjBD,EAAOC,QAAU,0lB,oBCAjBD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,mD,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,oD,oBCA3CD,EAAOC,QAAU,IAA0B,mD,oBCA3CD,EAAOC,QAAU,IAA0B,uD,oBCA3CD,EAAOC,QAAU,IAA0B,qD,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,kBCA3CD,EAAOC,QAAU,01F,oBCAjBD,EAAOC,QAAU,IAA0B,wC,kBCA3CD,EAAOC,QAAU,k+T,oBCAjBD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,kD,kBCA3CD,EAAOC,QAAU,kwW,kBCAjBD,E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","file":"static/js/main.838ba57f.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAYAAAA1+Nx+AAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACmSURBVHgBtdQxDsIgFMbxZx/sHoGbcAU9Qk+gIyMJHMTR1RsYLqCjox6EIAyaNC0F2tcvafLa4f/bulNKCc75AwD2QLu39/7YMcbOG8TTBCKeunjcYaOFEG7onHtJKT/x/QC06621V0xXRJ7ESG+MuaQDf18IkX98ABAhg/gIWImM4pPAQmQyngUakWx8FqhEZuNFoIAU41VABqmKN09rLeLT9N/6AiPtWyOEYC5HAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA4CAYAAABHRFAgAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFFSURBVHgB7dv/TcJAGMbx51hAmcCO4Ai6gU5gR3ADu4FxAnQDR3AD3aAjwAav7wtcUkID9Eigz9v3mxyXwF8fmlx6/QFcKBGpdDzouIXHFPYuu73CUwpaSH9v8NABoA/oCUBu6ABgjmsxKgBad2CpENiCpUKgVYOhAE4UuNTxBIbOAN6DoQD2104BWIGhAAZw5AWwv19h2TYFcKLAsbaQ7R+fukCdavjqJ6X0uEY6BebmM9lcLavht5uZfnDs7c7IkD7vTXQy5AeclxeeT51e4LO5HUnoMlvr9AV/fattlbrfODqiKx1/Op4NuferQWV4PKd1uYAeh1ZgqhDaBnSsBTSgAR13hVCeGz65gB6Hcm3UC6EW10YgoAFdtwRbhVCex85yBVDOK4YDoA2YOwHawEMHoA08ZaAOzs54fD1on5MrvjLxD3UwE2XjuyqSAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/personal-data.935f0640.svg\";","module.exports = __webpack_public_path__ + \"static/media/personal-data-billing.7f6e6793.svg\";","module.exports = __webpack_public_path__ + \"static/media/personal-data-cards.13759746.svg\";","module.exports = __webpack_public_path__ + \"static/media/personal-data-accounts.30d4bcf8.svg\";","module.exports = __webpack_public_path__ + \"static/media/personal-data-company.c6a6161a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-park-solid_bank-card.b9eb9652.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-park-solid_id-card.26f2184b.svg\";","module.exports = __webpack_public_path__ + \"static/media/forward-menu.a318802c.png\";","module.exports = __webpack_public_path__ + \"static/media/clock.0686f8b3.png\";","module.exports = __webpack_public_path__ + \"static/media/error-icon.266f2999.png\";","module.exports = __webpack_public_path__ + \"static/media/notification-sell.a8d3e2b1.png\";","module.exports = __webpack_public_path__ + \"static/media/notification-buy.a6db4dee.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/attachment.a6e21c85.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/important-message.7f7f2bc4.png\";","module.exports = __webpack_public_path__ + \"static/media/modal-close.31e9c392.png\";","module.exports = __webpack_public_path__ + \"static/media/info_svg.6b86cf24.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-active.c2fbc0cb.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-canceled.2f73f449.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-completed.f3ab2d26.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-expired.c07d3802.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-partial.f3b9b561.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-pending.e669eab0.svg\";","module.exports = __webpack_public_path__ + \"static/media/status-rejected.451b6125.svg\";","module.exports = __webpack_public_path__ + \"static/media/security-icon.d7a749a7.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-icon.886affe6.svg\";","module.exports = __webpack_public_path__ + \"static/media/konstruktor.c683dd8a.svg\";","module.exports = __webpack_public_path__ + \"static/media/tradebull-logo-large.cd5be8f9.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB/SURBVHgBlc9BDYAwDAXQX4KX2UACBwTUARpQgARAACE4QALcuCKEDRgZp45tP9llvy9NCULUzDVOlFIHgzkXixcUUkV0P0REjdzdk2wRsGSxgDQG95fFgr3qOYh8wIv+gIgCYDUaG6VscKFU8KEUYG9SE7cpwCJoHGTQxIInF2OuRjDRxUbXAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAClSURBVHgBlZDBDcIwDEX9AwsgIeZgBDbgVvdGmQA2YQTKrT0yAWUC9qAgsQA1roSqtLKa1IdY/zsvkT+9mQ8184kmlGtEFtqPL+ZzLIT2eKZpDpGdinxZlvsoaCoIX8SCGBpjoAZ2+xJd3RBaFUUmwEWIMiOczYxo66zvAyCZUAgEBcrfsX1ArSoI+eBfVnPrUp0kDwLWnSHSm5sQgLu2jzVrNPIf0gNUQBdDKnsAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/chess.a023c20d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/home-bg.a4ef15cf.png\";","module.exports = __webpack_public_path__ + \"static/media/profile.b2b06e3d.png\";","module.exports = __webpack_public_path__ + \"static/media/profile-personal-data.5b4129ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/profile-notifications.38744483.png\";","module.exports = __webpack_public_path__ + \"static/media/profile-settings.04e75657.png\";","module.exports = __webpack_public_path__ + \"static/media/profile-bg.fc226b57.png\";","module.exports = __webpack_public_path__ + \"static/media/settings-login.6b331bd0.png\";","module.exports = __webpack_public_path__ + \"static/media/settings-logout.5c28317f.png\";","module.exports = __webpack_public_path__ + \"static/media/settings-notifications.75b15b57.png\";","module.exports = __webpack_public_path__ + \"static/media/settings-contract.8ae1bf7d.png\";","module.exports = __webpack_public_path__ + \"static/media/messages-bg.2d4f29bb.png\";","module.exports = __webpack_public_path__ + \"static/media/contact-bg.cdb9bcb4.png\";","module.exports = __webpack_public_path__ + \"static/media/contact.04411221.png\";","module.exports = __webpack_public_path__ + \"static/media/exchange-order-bg.c0703939.png\";","module.exports = __webpack_public_path__ + \"static/media/orders-bg.9a1c84af.png\";","module.exports = __webpack_public_path__ + \"static/media/money-transfers-bg.3ad99512.png\";","module.exports = __webpack_public_path__ + \"static/media/earth.c849ea5e.jpg\";","export const ScreenSizeFloor = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n};\n\nexport enum ScreenSize {\n XS,\n SM,\n MD,\n LG,\n XL,\n}\n","const isDevelopment = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';\nconst backendURL = process.env.REACT_APP_API ? process.env.REACT_APP_API : 'localhost:8080';\nconst secure =\n process.env.REACT_APP_SECURE && process.env.REACT_APP_SECURE === 'true' ? true : false;\n\nconst httpProtocol = secure ? 'https://' : 'http://';\nconst wsProtocol = secure ? 'wss://' : 'ws://';\n\nconst BACKEND_URL = isDevelopment ? httpProtocol + 'localhost:8080' : httpProtocol + backendURL;\nconst WS_API_URL = isDevelopment\n ? wsProtocol + 'localhost:8080/query'\n : wsProtocol + backendURL + '/query';\nconst GRAPHQL_API_URL = isDevelopment\n ? httpProtocol + 'localhost:8080/query'\n : httpProtocol + backendURL + '/query';\n\nconst version = 'v1.15.0';\n\nconst config = {\n backend_url: BACKEND_URL,\n ws_api_url: WS_API_URL,\n graphql_api_url: GRAPHQL_API_URL,\n version: version,\n};\n\nexport default config;\n","export const ErrorMessages = {\n AuthenticationError: '[GraphQL] authentication_error',\n InternalServerError: '[GraphQL] internal_server_error',\n SignInTokenExpiredError: '[GraphQL] sign_in_token_expired',\n PaginatorError: '[GraphQL] paginator_error',\n AccessDenied: '[GraphQL] access_denied',\n BadRequest: '[GraphQL] bad_request',\n TooManyFailedLoginAttemptsError: '[GraphQL] too_many_failed_login_attempts',\n\n // User errors\n InvalidNewPasswordError: '[GraphQL] invalid_new_password',\n InvalidOldPasswordError: '[GraphQL] invalid_old_password',\n InvalidTokenError: '[GraphQL] invalid_token',\n ExpiredTokenError: '[GraphQL] expired_token',\n InvalidSecretError: '[GraphQL] invalid_secret',\n DuplicateNewPasswordError: '[GraphQL] duplicate_new_password',\n InvalidTimeoutError: '[GraphQL] invalid_timeout',\n InvalidHistoryGraphRange: '[GraphQL] invalid_history_graph_range',\n\n // exchange order\n InvalidDate: '[GraphQL] invalid_date',\n NotFoundError: '[GraphQL] not_found',\n};\n\nexport const ErrorDescriptions: { [key: string]: string } = {\n '[GraphQL] authentication_error': 'serverErrors.authentication_error',\n '[GraphQL] internal_server_error': 'serverErrors.internal_server_error',\n '[GraphQL] sign_in_token_expired': 'serverErrors.sign_in_token_expired',\n '[GraphQL] paginator_error': 'serverErrors.paginator_error',\n '[GraphQL] access_denied': 'serverErrors.access_denied',\n '[GraphQL] bad_request': 'serverErrors.bad_request',\n '[GraphQL] too_many_failed_login_attempts': 'serverErrors.too_many_failed_login_attempts',\n '[GraphQL] invalid_new_password': 'serverErrors.invalid_new_password',\n '[GraphQL] invalid_old_password': 'serverErrors.invalid_old_password',\n '[GraphQL] invalid_token': 'serverErrors.invalid_token',\n '[GraphQL] expired_token': 'serverErrors.expired_token',\n '[GraphQL] invalid_secret': 'serverErrors.invalid_secret',\n '[GraphQL] duplicate_new_password': 'serverErrors.duplicate_new_password',\n '[GraphQL] invalid_timeout': 'serverErrors.invalid_timeout',\n '[GraphQL] invalid_history_graph_range': 'serverErrors.invalid_history_graph_range',\n '[GraphQL] invalid_date': 'serverErrors.invalid_date',\n '[GraphQL] not_found': 'serverErrors.not_found',\n};\n","import { getUserPhoneNumber } from './custom-operations/queries/getUser-phone-number';\nimport { getUserAccounts } from './custom-operations/queries/getUser-accounts';\nimport { getUserAllDetails } from './custom-operations/queries/getUser-all-details';\nimport { getUserBrokers } from './custom-operations/queries/getUser-brokers';\nimport { getUserName } from './custom-operations/queries/getUser-name';\nimport { getUserNeedTransactionSecondConfirmation } from './custom-operations/queries/getUser-need-transaction-second-confirmation';\nimport { portfolio_fundamentals } from './custom-operations/queries/portfolio_fundamentals';\nimport { sum_portfolioLastUpdate } from './custom-operations/queries/sum_portfolio-last-update';\nimport { accept_message } from './generated-operations/mutations/accept_message';\nimport { cancel_exchange_order } from './generated-operations/mutations/cancel_exchange_order';\nimport { cancel_exchange_order_confirm } from './generated-operations/mutations/cancel_exchange_order_confirm';\nimport { confirm_password_update } from './generated-operations/mutations/confirm_password_update';\nimport { create_exchange_order } from './generated-operations/mutations/create_exchange_order';\nimport { create_exchange_order_confirm } from './generated-operations/mutations/create_exchange_order_confirm';\nimport { logout } from './generated-operations/mutations/logout';\nimport { read_message } from './generated-operations/mutations/read_message';\nimport { read_notification } from './generated-operations/mutations/read_notification';\nimport { update_user_password } from './generated-operations/mutations/update_user_password';\nimport { accept_terms_of_use } from './generated-operations/mutations/accept_terms_of_use';\nimport { update_user_password_with_confirm } from './generated-operations/mutations/update_user_password_with_confirm';\nimport { update_user_timeout } from './generated-operations/mutations/update_user_timeout';\nimport { getUser } from './generated-operations/queries/getUser';\nimport { get_account_balance } from './generated-operations/queries/get_account_balance';\nimport { get_currencies } from './generated-operations/queries/get_currencies';\nimport { get_currency_conversion } from './generated-operations/queries/get_currency_conversion';\nimport { get_currency_conversions } from './generated-operations/queries/get_currency_conversions';\nimport { get_exchange_order } from './generated-operations/queries/get_exchange_order';\nimport { get_exchange_orders } from './generated-operations/queries/get_exchange_orders';\nimport { get_message } from './generated-operations/queries/get_message';\nimport { get_messages } from './generated-operations/queries/get_messages';\nimport { get_money_transfer } from './generated-operations/queries/get_money_transfer';\nimport { get_money_transfers } from './generated-operations/queries/get_money_transfers';\nimport { get_money_transition } from './generated-operations/queries/get_money_transition';\nimport { get_money_transitions } from './generated-operations/queries/get_money_transitions';\nimport { get_notifications } from './generated-operations/queries/get_notifications';\nimport { get_securities } from './generated-operations/queries/get_securities';\nimport { get_security_amount } from './generated-operations/queries/get_security_amount';\nimport { get_security_transfer } from './generated-operations/queries/get_security_transfer';\nimport { get_security_transfers } from './generated-operations/queries/get_security_transfers';\nimport { get_security_transition } from './generated-operations/queries/get_security_transition';\nimport { get_security_transitions } from './generated-operations/queries/get_security_transitions';\nimport { get_unit_order } from './generated-operations/queries/get_unit_order';\nimport { get_unit_orders } from './generated-operations/queries/get_unit_orders';\nimport { get_unread_messages_count } from './generated-operations/queries/get_unread_messages_count';\nimport { get_unread_notifications_count } from './generated-operations/queries/get_unread_notifications_count';\nimport { get_valid_trading_days } from './generated-operations/queries/get_valid_trading_days';\nimport { login_first } from './generated-operations/queries/login_first';\nimport { login_second } from './generated-operations/queries/login_second';\nimport { portfolio_history_graph } from './generated-operations/queries/portfolio_history_graph';\nimport { sum_portfolio } from './generated-operations/queries/sum_portfolio';\nimport { token_validate } from './generated-operations/queries/token_validate';\nimport { validate_password } from './generated-operations/queries/validate_password';\nimport { auto_read_notification } from './generated-operations/subscriptions/auto_read_notification';\nimport { message_read } from './generated-operations/subscriptions/message_read';\nimport { message_unread_count } from './generated-operations/subscriptions/message_unread_count';\nimport { new_currency_conversion } from './generated-operations/subscriptions/new_currency_conversion';\nimport { new_exchange_order } from './generated-operations/subscriptions/new_exchange_order';\nimport { new_message } from './generated-operations/subscriptions/new_message';\nimport { new_money_transfer } from './generated-operations/subscriptions/new_money_transfer';\nimport { new_money_transition } from './generated-operations/subscriptions/new_money_transition';\nimport { new_notification } from './generated-operations/subscriptions/new_notification';\nimport { new_security_transfer } from './generated-operations/subscriptions/new_security_transfer';\nimport { new_security_transition } from './generated-operations/subscriptions/new_security_transition';\nimport { new_token } from './generated-operations/subscriptions/new_token';\nimport { new_unit_order } from './generated-operations/subscriptions/new_unit_order';\nimport { notification_read } from './generated-operations/subscriptions/notification_read';\nimport { notification_unread_count } from './generated-operations/subscriptions/notification_unread_count';\nimport { sum_portfolio as sum_portfolio_subscription } from './generated-operations/subscriptions/sum_portfolio';\nimport { update_currency_conversion } from './generated-operations/subscriptions/update_currency_conversion';\nimport { update_exchange_order } from './generated-operations/subscriptions/update_exchange_order';\nimport { update_money_transfer } from './generated-operations/subscriptions/update_money_transfer';\nimport { update_money_transition } from './generated-operations/subscriptions/update_money_transition';\nimport { update_security_transfer } from './generated-operations/subscriptions/update_security_transfer';\nimport { update_security_transition } from './generated-operations/subscriptions/update_security_transition';\nimport { update_unit_order } from './generated-operations/subscriptions/update_unit_order';\nimport {\n AuthFirst,\n AuthSecond,\n CreateExchangeOrder,\n CurrencyListType,\n CurrencyType,\n HistoryQuery,\n ListingFilter,\n ListingOrder,\n OrderingDirection,\n OrderingType,\n Paginator,\n SecurityListType,\n SecurityType,\n Status,\n UpdateUserPassword,\n} from './types/types.d';\nimport { update_user_language } from './generated-operations/mutations/update_user_language';\n\nexport const GraphqlOperations = {\n queries: {\n login_first: {\n queryString: login_first,\n createVars: (uid: string, password: string): { input: AuthFirst } => ({\n input: { uid, password },\n }),\n },\n login_second: {\n queryString: login_second,\n createVars: (first_token: string, secret: string): { input: AuthSecond } => ({\n input: { first_token, secret },\n }),\n },\n token_validate: {\n queryString: token_validate,\n },\n getUser: {\n queryString: getUser,\n },\n getUserAllDetails: {\n queryString: getUserAllDetails,\n },\n getUserName: {\n queryString: getUserName,\n },\n getUserAccounts: {\n queryString: getUserAccounts,\n },\n getUserPhoneNumber: {\n queryString: getUserPhoneNumber,\n },\n getUserBrokers: {\n queryString: getUserBrokers,\n },\n getUserNeedTransactionSecondConfirmation: {\n queryString: getUserNeedTransactionSecondConfirmation,\n },\n get_notifications: {\n queryString: get_notifications,\n createVars: (page: number, per_page: number): { paginator: Paginator } => ({\n paginator: { page, per_page },\n }),\n },\n get_unread_notifications_count: {\n queryString: get_unread_notifications_count,\n },\n get_messages: {\n queryString: get_messages,\n createVars: (page: number, per_page: number): { paginator: Paginator } => ({\n paginator: { page, per_page },\n }),\n },\n get_unread_messages_count: {\n queryString: get_unread_messages_count,\n },\n get_message: {\n queryString: get_message,\n createVars: (id: number): { id: number } => ({\n id,\n }),\n },\n validate_password: {\n queryString: validate_password,\n createVars: (old_password: string): { old_password: string } => ({\n old_password,\n }),\n },\n sum_portfolio: {\n queryString: sum_portfolio,\n },\n sum_portfolioLastUpdate: {\n queryString: sum_portfolioLastUpdate,\n },\n portfolio_fundamentals: {\n queryString: portfolio_fundamentals,\n createVars: (account: string): { account: string } => ({\n account,\n }),\n },\n portfolio_history_graph: {\n queryString: portfolio_history_graph,\n createVars: (account: string, range: number): { input: HistoryQuery } => ({\n input: { account, range },\n }),\n },\n get_account_balance: {\n queryString: get_account_balance,\n createVars: (account: string, currency: string): { account: string; currency: string } => ({\n account,\n currency,\n }),\n },\n get_security_amount: {\n queryString: get_security_amount,\n createVars: (account: string, security: string): { account: string; security: string } => ({\n account,\n security,\n }),\n },\n get_exchange_orders: {\n queryString: get_exchange_orders,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_exchange_order: {\n queryString: get_exchange_order,\n createVars: (id: number): { id: number } => ({\n id,\n }),\n },\n get_securities: {\n queryString: get_securities,\n createVars: (\n type: SecurityType,\n list_type: SecurityListType,\n account: string,\n ): { type: SecurityType; list_type: SecurityListType; account: string } => ({\n type,\n list_type,\n account,\n }),\n },\n get_valid_trading_days: {\n queryString: get_valid_trading_days,\n },\n get_unit_orders: {\n queryString: get_unit_orders,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_unit_order: {\n queryString: get_unit_order,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n get_money_transitions: {\n queryString: get_money_transitions,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_money_transition: {\n queryString: get_money_transition,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n get_currencies: {\n queryString: get_currencies,\n createVars: (\n type: CurrencyType,\n list_type: CurrencyListType,\n account: string,\n ): { type: CurrencyType; list_type: CurrencyListType; account: string } => ({\n type,\n list_type,\n account,\n }),\n },\n get_security_transitions: {\n queryString: get_security_transitions,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_security_transition: {\n queryString: get_security_transition,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n get_currency_conversions: {\n queryString: get_currency_conversions,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_currency_conversion: {\n queryString: get_currency_conversion,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n get_security_transfers: {\n queryString: get_security_transfers,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_security_transfer: {\n queryString: get_security_transfer,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n get_money_transfers: {\n queryString: get_money_transfers,\n createVars: (\n page: number,\n per_page: number,\n type: OrderingType,\n direction: OrderingDirection,\n status: Status | 'all',\n ids: string[],\n account: string,\n ): {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n } => ({\n paginator: { page, per_page },\n order: { type, direction },\n filter: { status: status === 'all' ? [] : [status], ids, account },\n }),\n },\n get_money_transfer: {\n queryString: get_money_transfer,\n createVars: (id: string): { id: string } => ({\n id,\n }),\n },\n },\n mutations: {\n update_user_password: {\n mutationString: update_user_password,\n createVars: (old_password: string, new_password: string): { input: UpdateUserPassword } => ({\n input: { old_password, new_password },\n }),\n },\n accept_terms_of_use: {\n mutationString: accept_terms_of_use,\n createVars: (term_id: number): { input: number } => ({\n input: term_id,\n }),\n },\n read_notification: {\n mutationString: read_notification,\n createVars: (id: number): { input: number } => ({\n input: id,\n }),\n },\n read_message: {\n mutationString: read_message,\n createVars: (id: number): { input: number } => ({\n input: id,\n }),\n },\n accept_message: {\n mutationString: accept_message,\n createVars: (id: number): { input: number } => ({\n input: id,\n }),\n },\n update_user_timeout: {\n mutationString: update_user_timeout,\n createVars: (timeout: number): { input: number } => ({\n input: timeout,\n }),\n },\n update_user_language: {\n mutationString: update_user_language,\n createVars: (language: string): { input: string } => ({\n input: language,\n }),\n },\n logout: {\n mutationString: logout,\n },\n update_user_password_with_confirm: {\n mutationString: update_user_password_with_confirm,\n createVars: (old_password: string, new_password: string): { input: UpdateUserPassword } => ({\n input: { old_password, new_password },\n }),\n },\n confirm_password_update: {\n mutationString: confirm_password_update,\n createVars: (first_token: string, secret: string): { input: AuthSecond } => ({\n input: { first_token, secret },\n }),\n },\n create_exchange_order: {\n mutationString: create_exchange_order,\n createVars: (input: CreateExchangeOrder): { input: CreateExchangeOrder } => ({\n input,\n }),\n },\n create_exchange_order_confirm: {\n mutationString: create_exchange_order_confirm,\n createVars: (secret: string, token: string): { secret: string; token: string } => ({\n secret,\n token,\n }),\n },\n cancel_exchange_order: {\n mutationString: cancel_exchange_order,\n createVars: (id: number): { id: number } => ({\n id,\n }),\n },\n cancel_exchange_order_confirm: {\n mutationString: cancel_exchange_order_confirm,\n createVars: (secret: string, token: string): { secret: string; token: string } => ({\n secret,\n token,\n }),\n },\n },\n subscriptions: {\n new_token: {\n subscriptionString: new_token,\n },\n new_notification: {\n subscriptionString: new_notification,\n },\n notification_unread_count: {\n subscriptionString: notification_unread_count,\n },\n auto_read_notification: {\n subscriptionString: auto_read_notification,\n },\n new_message: {\n subscriptionString: new_message,\n },\n message_unread_count: {\n subscriptionString: message_unread_count,\n },\n message_read: {\n subscriptionString: message_read,\n },\n notification_read: {\n subscriptionString: notification_read,\n },\n sum_portfolio: {\n subscriptionString: sum_portfolio_subscription,\n },\n new_exchange_order: {\n subscriptionString: new_exchange_order,\n },\n update_exchange_order: {\n subscriptionString: update_exchange_order,\n },\n new_unit_order: {\n subscriptionString: new_unit_order,\n },\n update_unit_order: {\n subscriptionString: update_unit_order,\n },\n new_money_transition: {\n subscriptionString: new_money_transition,\n },\n update_money_transition: {\n subscriptionString: update_money_transition,\n },\n new_security_transition: {\n subscriptionString: new_security_transition,\n },\n update_security_transition: {\n subscriptionString: update_security_transition,\n },\n new_currency_conversion: {\n subscriptionString: new_currency_conversion,\n },\n update_currency_conversion: {\n subscriptionString: update_currency_conversion,\n },\n new_security_transfer: {\n subscriptionString: new_security_transfer,\n },\n update_security_transfer: {\n subscriptionString: update_security_transfer,\n },\n new_money_transfer: {\n subscriptionString: new_money_transfer,\n },\n update_money_transfer: {\n subscriptionString: update_money_transfer,\n },\n },\n};\n","export const login_first = `query login_first($input: AuthFirst!){\n login_first(input: $input){\n token\n }\n}`;\n","export const login_second = `query login_second($input: AuthSecond!){\n login_second(input: $input){\n need_password_update\n expiry\n language\n terms_of_use{\n id\n document\n document_en\n }\n }\n}`;\n","export const token_validate = `query token_validate{\n token_validate{\n need_password_update\n expiry\n language\n terms_of_use{\n id\n document\n document_en\n }\n }\n}`;\n","export const getUser = `query getUser{\n getUser{\n uid\n kommpId\n brokers{\n name\n email\n phone\n img\n }\n name\n accounts{\n type\n number\n }\n need_transaction_second_confirmation\n phone\n tax_number\n email\n mailing_address{\n country\n city\n zip_code\n address\n }\n billing_address{\n country\n city\n zip_code\n address\n }\n place_of_birth\n time_of_birth\n mothers_name\n personal_documents{\n type\n type_en\n number\n expiry\n }\n is_company\n registration_number\n company_name\n language\n terms_and_conditions{\n id\n time\n name\n name_en\n attachment\n attachment_en\n }\n personal_contracts{\n id\n time\n name\n name_en\n attachment\n attachment_en\n }\n }\n}`;\n","export const getUserAllDetails = `query getUser{\n getUser{\n uid\n kommpId\n brokers{\n name\n email\n phone\n img\n }\n name\n accounts{\n type\n number\n }\n need_transaction_second_confirmation\n phone\n tax_number\n email\n mailing_address{\n country\n city\n zip_code\n address\n }\n billing_address{\n country\n city\n zip_code\n address\n }\n place_of_birth\n time_of_birth\n mothers_name\n personal_documents{\n type\n type_en\n number\n expiry\n }\n is_company\n registration_number\n company_name\n terms_and_conditions{\n id\n time\n name\n name_en\n attachment\n attachment_en\n }\n personal_contracts{\n id\n time\n name\n name_en\n attachment\n attachment_en\n }\n }\n}`;\n","export const getUserName = `query getUser{\n getUser{\n uid\n name\n email\n registration_number\n tax_number\n }\n}`;\n","export const getUserAccounts = `query getUser{\n getUser{\n accounts {\n type\n number\n }\n }\n}`;\n","export const getUserPhoneNumber = `query getUser{\n getUser{\n phone\n }\n}`;\n","export const getUserBrokers = `query getUser{\n getUser{\n brokers{\n name\n email\n phone\n img\n }\n }\n}`;\n","export const getUserNeedTransactionSecondConfirmation = `query getUser{\n getUser{\n need_transaction_second_confirmation\n }\n}`;\n","export const get_notifications = `query get_notifications($paginator: Paginator!){\n get_notifications(paginator: $paginator){\n notifications{\n id\n time\n text\n text_en\n direction\n unread\n }\n page\n page_count\n }\n}`;\n","export const get_unread_notifications_count = `query get_unread_notifications_count{\n get_unread_notifications_count\n}`;\n","export const get_messages = `query get_messages($paginator: Paginator!){\n get_messages(paginator: $paginator){\n messages{\n id\n time\n type\n subject\n subject_en\n text\n text_en\n awaiting_acception\n accepted\n unread\n has_attachment\n }\n page\n page_count\n }\n}`;\n","export const get_unread_messages_count = `query get_unread_messages_count{\n get_unread_messages_count\n}`;\n","export const get_message = `query get_message($id: Int!){\n get_message(id: $id){\n id\n time\n type\n subject\n subject_en\n text\n text_en\n awaiting_acception\n accepted\n unread\n attachments\n }\n}`;\n","export const validate_password = `query validate_password($old_password: String!){\n validate_password(old_password: $old_password)\n}`;\n","export const sum_portfolio = `query sum_portfolio{\n sum_portfolio{\n last_update\n sum\n portfolio{\n name\n value\n percent\n }\n }\n}`;\n","export const sum_portfolioLastUpdate = `query sum_portfolio{\n sum_portfolio{\n last_update\n }\n}`;\n","export const portfolio_fundamentals = `query portfolio_fundamentals($account: String!){\n portfolio_fundamentals(account: $account){\n name\n reserved\n investable\n payable\n market_price\n exchange_rate\n value\n percent\n accounts{\n type\n number\n }\n ... on PortfolioFinancialInstrument{\n last_closing_price\n count\n security_type\n type\n tradable_stock_exchange\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n }\n ... on PortfolioFunds{\n balance\n }\n }\n}`;\n","export const portfolio_history_graph = `query portfolio_history_graph($input: HistoryQuery!){\n portfolio_history_graph(input: $input){\n value\n percent\n points{\n value\n time\n }\n }\n}`;\n","export const get_account_balance = `query get_account_balance($account: String!, $currency: String!){\n get_account_balance(account: $account, currency: $currency){\n balance\n investable\n daytrade_limit\n }\n}`;\n","export const get_security_amount = `query get_security_amount($account: String!, $security: String!){\n get_security_amount(account: $account, security: $security){\n balance\n investable\n daytrade_limit\n }\n}`;\n","export const get_exchange_orders = `query get_exchange_orders($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_exchange_orders(paginator: $paginator, order: $order, filter: $filter){\n exchange_orders{\n id\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n type\n limit_price\n activation_price\n validity_start\n validity_end\n deal_price\n reject_reason\n reject_reason_en\n cancel_accepted\n cancel_reject_reason\n cancel_reject_reason_en\n }\n page\n page_count\n }\n}`;\n","export const get_exchange_order = `query get_exchange_order($id: Int!){\n get_exchange_order(id: $id){\n id\n transaction_code\n status\n direction\n account\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n daytrade\n daytrade_type\n type\n limit_price\n activation_price\n outside_trading_hours\n validity_start\n validity_end\n deal_price\n reject_reason\n reject_reason_en\n cancel_accepted\n cancel_reject_reason\n cancel_reject_reason_en\n }\n}`;\n","export const get_securities = `query get_securities($type: SecurityType!, $list_type: SecurityListType!, $account: String!){\n get_securities(type: $type, list_type: $list_type, account: $account){\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n}`;\n","export const get_valid_trading_days = `query get_valid_trading_days{\n get_valid_trading_days\n}`;\n","export const get_unit_orders = `query get_unit_orders($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_unit_orders(paginator: $paginator, order: $order, filter: $filter){\n unit_orders{\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n validity_start\n validity_end\n deal_price\n purchase_value\n }\n page\n page_count\n }\n}`;\n","export const get_unit_order = `query get_unit_order($id: String!){\n get_unit_order(id: $id){\n transaction_code\n status\n direction\n account\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n last_available_net_price\n validity_start\n validity_end\n deal_price\n purchase_value\n }\n}`;\n","export const get_money_transitions = `query get_money_transitions($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_money_transitions(paginator: $paginator, order: $order, filter: $filter){\n money_transitions{\n transaction_code\n status\n from_account\n to_account\n amount\n currency\n transfer_date\n fulfillment_date\n }\n page\n page_count\n }\n}`;\n","export const get_money_transition = `query get_money_transition($id: String!){\n get_money_transition(id: $id){\n transaction_code\n status\n from_account\n to_account\n amount\n currency\n transfer_date\n fulfillment_date\n }\n}`;\n","export const get_currencies = `query get_currencies($type: CurrencyType!, $list_type: CurrencyListType!, $account: String!){\n get_currencies(type: $type, list_type: $list_type, account: $account){\n currency\n name\n decimal\n }\n}`;\n","export const get_security_transitions = `query get_security_transitions($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_security_transitions(paginator: $paginator, order: $order, filter: $filter){\n security_transitions{\n transaction_code\n status\n from_account\n to_account\n amount\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n transfer_date\n fulfillment_date\n }\n page\n page_count\n }\n}`;\n","export const get_security_transition = `query get_security_transition($id: String!){\n get_security_transition(id: $id){\n transaction_code\n status\n from_account\n to_account\n amount\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n transfer_date\n fulfillment_date\n }\n}`;\n","export const get_currency_conversions = `query get_currency_conversions($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_currency_conversions(paginator: $paginator, order: $order, filter: $filter){\n currency_conversions{\n transaction_code\n status\n account\n from_currency{\n currency\n name\n decimal\n }\n to_currency{\n currency\n name\n decimal\n }\n from_amount\n to_amount\n exchange_rate\n order_date\n }\n page\n page_count\n }\n}`;\n","export const get_currency_conversion = `query get_currency_conversion($id: String!){\n get_currency_conversion(id: $id){\n transaction_code\n status\n account\n from_currency{\n currency\n name\n decimal\n }\n to_currency{\n currency\n name\n decimal\n }\n from_amount\n to_amount\n exchange_rate\n order_date\n fulfillment_date\n }\n}`;\n","export const get_security_transfers = `query get_security_transfers($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_security_transfers(paginator: $paginator, order: $order, filter: $filter){\n security_transfers{\n transaction_code\n status\n account\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n amount\n order_date\n }\n page\n page_count\n }\n}`;\n","export const get_security_transfer = `query get_security_transfer($id: String!){\n get_security_transfer(id: $id){\n transaction_code\n status\n account\n to_provider\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n amount\n order_date\n fulfillment_date\n }\n}`;\n","export const get_money_transfers = `query get_money_transfers($paginator: Paginator!, $order: ListingOrder!, $filter: ListingFilter!){\n get_money_transfers(paginator: $paginator, order: $order, filter: $filter){\n money_transfers{\n transaction_code\n status\n from_account\n currency{\n currency\n name\n decimal\n }\n amount\n order_date\n }\n page\n page_count\n }\n}`;\n","export const get_money_transfer = `query get_money_transfer($id: String!){\n get_money_transfer(id: $id){\n transaction_code\n status\n from_account\n to_account\n currency{\n currency\n name\n decimal\n }\n amount\n order_date\n fulfillment_date\n }\n}`;\n","export const update_user_password = `mutation update_user_password($input: UpdateUserPassword!){\n update_user_password(input: $input)\n}`;\n","export const accept_terms_of_use = `mutation accept_terms_of_use($input: Int!){\n accept_terms_of_use(input: $input)\n}`;\n","export const read_notification = `mutation read_notification($input: Int!){\n read_notification(input: $input)\n}`;\n","export const read_message = `mutation read_message($input: Int!){\n read_message(input: $input)\n}`;\n","export const accept_message = `mutation accept_message($input: Int!){\n accept_message(input: $input)\n}`;\n","export const update_user_timeout = `mutation update_user_timeout($input: Int!){\n update_user_timeout(input: $input)\n}`;\n","export const update_user_language = `mutation update_user_language($input: String!){\n update_user_language(input: $input)\n}`;\n","export const logout = `mutation logout{\n logout\n}`;\n","export const update_user_password_with_confirm = `mutation update_user_password_with_confirm($input: UpdateUserPassword!){\n update_user_password_with_confirm(input: $input){\n token\n }\n}`;\n","export const confirm_password_update = `mutation confirm_password_update($input: AuthSecond!){\n confirm_password_update(input: $input)\n}`;\n","export const create_exchange_order = `mutation create_exchange_order($input: CreateExchangeOrder!){\n create_exchange_order(input: $input)\n}`;\n","export const create_exchange_order_confirm = `mutation create_exchange_order_confirm($secret: String!, $token: String){\n create_exchange_order_confirm(secret: $secret, token: $token)\n}`;\n","export const cancel_exchange_order = `mutation cancel_exchange_order($id: Int!){\n cancel_exchange_order(id: $id)\n}`;\n","export const cancel_exchange_order_confirm = `mutation cancel_exchange_order_confirm($secret: String!, $token: String!){\n cancel_exchange_order_confirm(secret: $secret, token: $token)\n}`;\n","export const new_token = `subscription new_token{\n new_token{\n need_password_update\n expiry\n language\n terms_of_use{\n id\n document\n document_en\n }\n }\n}`;\n","export const new_notification = `subscription new_notification{\n new_notification{\n id\n time\n text\n text_en\n direction\n unread\n }\n}`;\n","export const notification_unread_count = `subscription notification_unread_count{\n notification_unread_count\n}`;\n","export const auto_read_notification = `subscription auto_read_notification{\n auto_read_notification\n}`;\n","export const new_message = `subscription new_message{\n new_message{\n id\n time\n type\n subject\n subject_en\n text\n text_en\n awaiting_acception\n accepted\n unread\n has_attachment\n }\n}`;\n","export const message_unread_count = `subscription message_unread_count{\n message_unread_count\n}`;\n","export const message_read = `subscription message_read{\n message_read\n}`;\n","export const notification_read = `subscription notification_read{\n notification_read\n}`;\n","export const sum_portfolio = `subscription sum_portfolio{\n sum_portfolio{\n last_update\n sum\n portfolio{\n name\n value\n percent\n }\n }\n}`;\n","export const new_exchange_order = `subscription new_exchange_order{\n new_exchange_order{\n id\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n type\n limit_price\n activation_price\n validity_start\n validity_end\n deal_price\n reject_reason\n reject_reason_en\n cancel_accepted\n cancel_reject_reason\n cancel_reject_reason_en\n }\n}`;\n","export const update_exchange_order = `subscription update_exchange_order{\n update_exchange_order{\n id\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n type\n limit_price\n activation_price\n validity_start\n validity_end\n deal_price\n reject_reason\n reject_reason_en\n cancel_accepted\n cancel_reject_reason\n cancel_reject_reason_en\n }\n}`;\n","export const new_unit_order = `subscription new_unit_order{\n new_unit_order{\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n validity_start\n validity_end\n deal_price\n purchase_value\n }\n}`;\n","export const update_unit_order = `subscription update_unit_order{\n update_unit_order{\n transaction_code\n status\n direction\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n count\n fulfilled_count\n validity_start\n validity_end\n deal_price\n purchase_value\n }\n}`;\n","export const new_money_transition = `subscription new_money_transition{\n new_money_transition{\n transaction_code\n status\n from_account\n to_account\n amount\n currency\n transfer_date\n fulfillment_date\n }\n}`;\n","export const update_money_transition = `subscription update_money_transition{\n update_money_transition{\n transaction_code\n status\n from_account\n to_account\n amount\n currency\n transfer_date\n fulfillment_date\n }\n}`;\n","export const new_security_transition = `subscription new_security_transition{\n new_security_transition{\n transaction_code\n status\n from_account\n to_account\n amount\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n transfer_date\n fulfillment_date\n }\n}`;\n","export const update_security_transition = `subscription update_security_transition{\n update_security_transition{\n transaction_code\n status\n from_account\n to_account\n amount\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n transfer_date\n fulfillment_date\n }\n}`;\n","export const new_currency_conversion = `subscription new_currency_conversion{\n new_currency_conversion{\n transaction_code\n status\n account\n from_currency{\n currency\n name\n decimal\n }\n to_currency{\n currency\n name\n decimal\n }\n from_amount\n to_amount\n exchange_rate\n order_date\n }\n}`;\n","export const update_currency_conversion = `subscription update_currency_conversion{\n update_currency_conversion{\n transaction_code\n status\n account\n from_currency{\n currency\n name\n decimal\n }\n to_currency{\n currency\n name\n decimal\n }\n from_amount\n to_amount\n exchange_rate\n order_date\n }\n}`;\n","export const new_security_transfer = `subscription new_security_transfer{\n new_security_transfer{\n transaction_code\n status\n account\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n amount\n order_date\n }\n}`;\n","export const update_security_transfer = `subscription update_security_transfer{\n update_security_transfer{\n transaction_code\n status\n account\n security{\n short_name\n name\n stock_market_locality\n currency{\n currency\n name\n decimal\n }\n }\n amount\n order_date\n }\n}`;\n","export const new_money_transfer = `subscription new_money_transfer{\n new_money_transfer{\n transaction_code\n status\n from_account\n currency{\n currency\n name\n decimal\n }\n amount\n order_date\n }\n}`;\n","export const update_money_transfer = `subscription update_money_transfer{\n update_money_transfer{\n transaction_code\n status\n from_account\n currency{\n currency\n name\n decimal\n }\n amount\n order_date\n }\n}`;\n","import { ScreenSize } from './../../../styles/screen-sizes';\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { Options } from 'react-toast-notifications';\nimport { action } from 'typesafe-actions';\n\nexport const actionTypes = {\n SET_TOAST: 'Presentation/SetToast',\n SET_SHOW_MODAL: 'Presentation/SetShowModal',\n SET_SCREEN_SIZE: 'Presentation/SetScreenSize',\n};\n\nexport const actions = {\n setToast: (content: string, options?: Options | undefined) =>\n action(actionTypes.SET_TOAST, { content, options }),\n setShowModal: (content?: JSX.Element, onClose?: () => void) =>\n action(actionTypes.SET_SHOW_MODAL, { content, onClose }),\n setScreenSize: (screenSize: ScreenSize) => action(actionTypes.SET_SCREEN_SIZE, screenSize),\n};\n","import { ScreenSize } from './../../../styles/screen-sizes';\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport produce from 'immer';\nimport Presentation from '.';\nimport { ToastPayload } from './presentation-models';\n\nconst initializeState: Presentation.model.PresentationReducer = {\n toast: undefined,\n modalContent: undefined,\n screenSize: undefined,\n onClose: undefined,\n};\n\nexport default (\n state = initializeState,\n action: { type: string; payload: Presentation.model.PresentationActionsPayload },\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case Presentation.actionTypes.SET_TOAST:\n draft.toast = action.payload as ToastPayload | undefined;\n return draft;\n case Presentation.actionTypes.SET_SHOW_MODAL:\n // eslint-disable-next-line no-case-declarations\n const payload = action.payload as {\n content?: JSX.Element | undefined;\n onClose?: () => void;\n };\n draft.modalContent = payload.content;\n console.log('SET_SHOW_MODAL', payload.onClose);\n draft.onClose = payload.onClose;\n return draft;\n case Presentation.actionTypes.SET_SCREEN_SIZE:\n draft.screenSize = action.payload as ScreenSize;\n return draft;\n default:\n }\n });\n","import { createSelector } from 'reselect';\nimport { ScreenSize } from './../../../styles/screen-sizes';\nimport { IStore } from '../IStore';\nimport { ToastPayload } from './presentation-models';\n\nexport const selectToast = (state: IStore): ToastPayload | undefined => state.presentation.toast;\nexport const selectModalContent = (state: IStore): JSX.Element | undefined =>\n state.presentation.modalContent;\nexport const selectOnClose = (state: IStore): (() => void) | undefined =>\n state.presentation.onClose;\nexport const selectScreenSize = (state: IStore): ScreenSize =>\n state.presentation.screenSize !== undefined ? state.presentation.screenSize : ScreenSize.XL;\n\nexport const selectIsMobileSize = createSelector([selectScreenSize], (screenSize) => {\n return screenSize === ScreenSize.XS;\n});\n","export type Maybe = T | null;\nexport type Exact = { [K in keyof T]: T[K] };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n Time: any;\n};\n\nexport type AcceptedTermOfUse = {\n __typename?: 'AcceptedTermOfUse';\n id: Scalars['Int'];\n date: Scalars['Time'];\n};\n\nexport type Account = {\n __typename?: 'Account';\n type: Scalars['String'];\n number: Scalars['String'];\n};\n\nexport type AccountBalance = {\n __typename?: 'AccountBalance';\n balance: Scalars['Float'];\n investable: Scalars['Float'];\n daytrade_limit: Scalars['Float'];\n};\n\nexport type Address = {\n __typename?: 'Address';\n country: Scalars['String'];\n city: Scalars['String'];\n zip_code: Scalars['String'];\n address: Scalars['String'];\n};\n\nexport type AuthFirst = {\n uid: Scalars['String'];\n password: Scalars['String'];\n};\n\nexport type AuthSecond = {\n first_token: Scalars['String'];\n secret: Scalars['String'];\n};\n\nexport type AuthToken = {\n __typename?: 'AuthToken';\n need_password_update: Scalars['Boolean'];\n expiry: Scalars['Int'];\n language: Scalars['String'];\n terms_of_use?: Maybe;\n};\n\nexport type Broker = {\n __typename?: 'Broker';\n name: Scalars['String'];\n email: Scalars['String'];\n phone: Scalars['String'];\n img: Scalars['String'];\n};\n\nexport type CreateExchangeOrder = {\n direction: Direction;\n account: Scalars['String'];\n security: Scalars['String'];\n count: Scalars['Int'];\n daytrade: Scalars['Boolean'];\n daytrade_type?: Maybe;\n type: ExchangeRateType;\n limit_price?: Maybe;\n activation_price?: Maybe;\n outside_trading_hours: Scalars['Boolean'];\n validity_start: Scalars['Time'];\n validity_end?: Maybe;\n edited_id?: Maybe;\n};\n\nexport type Currency = {\n __typename?: 'Currency';\n currency: Scalars['String'];\n name: Scalars['String'];\n decimal: Scalars['Int'];\n};\n\nexport type CurrencyConversion = {\n __typename?: 'CurrencyConversion';\n transaction_code: Scalars['String'];\n status: Status;\n account: Scalars['String'];\n from_currency: Currency;\n to_currency: Currency;\n from_amount: Scalars['Float'];\n to_amount: Scalars['Float'];\n exchange_rate: Scalars['Float'];\n order_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type CurrencyConversionListItem = {\n __typename?: 'CurrencyConversionListItem';\n transaction_code: Scalars['String'];\n status: Status;\n account: Scalars['String'];\n from_currency: Currency;\n to_currency: Currency;\n from_amount: Scalars['Float'];\n to_amount: Scalars['Float'];\n exchange_rate: Scalars['Float'];\n order_date: Scalars['Time'];\n};\n\nexport type CurrencyConversionsResponse = {\n __typename?: 'CurrencyConversionsResponse';\n currency_conversions: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport enum CurrencyListType {\n All = 'all',\n OwnHistory = 'own_history',\n OwnActual = 'own_actual'\n}\n\nexport enum CurrencyType {\n Transition = 'transition',\n Transfer = 'transfer',\n Conversion = 'conversion'\n}\n\nexport enum DaytradeType {\n Open = 'open',\n Close = 'close'\n}\n\nexport enum Direction {\n Buy = 'buy',\n Sell = 'sell'\n}\n\nexport type ExchangeOrder = {\n __typename?: 'ExchangeOrder';\n id: Scalars['Int'];\n transaction_code: Scalars['String'];\n status: Status;\n direction: Direction;\n account: Scalars['String'];\n security: Security;\n count: Scalars['Int'];\n fulfilled_count: Scalars['Int'];\n daytrade: Scalars['Boolean'];\n daytrade_type?: Maybe;\n type: ExchangeRateType;\n limit_price?: Maybe;\n activation_price?: Maybe;\n outside_trading_hours: Scalars['Boolean'];\n validity_start: Scalars['Time'];\n validity_end?: Maybe;\n deal_price: Scalars['Float'];\n reject_reason: Scalars['String'];\n reject_reason_en: Scalars['String'];\n cancel_accepted?: Maybe;\n cancel_reject_reason: Scalars['String'];\n cancel_reject_reason_en: Scalars['String'];\n};\n\nexport type ExchangeOrderListItem = {\n __typename?: 'ExchangeOrderListItem';\n id: Scalars['Int'];\n transaction_code: Scalars['String'];\n status: Status;\n direction: Direction;\n security: Security;\n count: Scalars['Int'];\n fulfilled_count: Scalars['Int'];\n type: ExchangeRateType;\n limit_price?: Maybe;\n activation_price?: Maybe;\n validity_start: Scalars['Time'];\n validity_end?: Maybe;\n deal_price: Scalars['Float'];\n reject_reason: Scalars['String'];\n reject_reason_en: Scalars['String'];\n cancel_accepted?: Maybe;\n cancel_reject_reason: Scalars['String'];\n cancel_reject_reason_en: Scalars['String'];\n};\n\nexport type ExchangeOrdersResponse = {\n __typename?: 'ExchangeOrdersResponse';\n exchange_orders: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport enum ExchangeRateType {\n LimitPrice = 'limit_price',\n StopLimit = 'stop_limit',\n StopMarket = 'stop_market'\n}\n\nexport type GetMessagesResult = {\n __typename?: 'GetMessagesResult';\n messages: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type GetNotificationsResult = {\n __typename?: 'GetNotificationsResult';\n notifications: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type GraphPoint = {\n __typename?: 'GraphPoint';\n value: Scalars['Float'];\n time: Scalars['Time'];\n};\n\nexport type HistoryGraph = {\n __typename?: 'HistoryGraph';\n value: Scalars['Float'];\n percent: Scalars['Float'];\n points: Array;\n};\n\nexport type HistoryQuery = {\n account: Scalars['String'];\n range: Scalars['Int'];\n};\n\nexport type ListingFilter = {\n account: Scalars['String'];\n status: Array;\n ids: Array;\n};\n\nexport type ListingOrder = {\n type: OrderingType;\n direction: OrderingDirection;\n};\n\nexport type LoginToken = {\n __typename?: 'LoginToken';\n token: Scalars['String'];\n};\n\nexport type Message = {\n __typename?: 'Message';\n id: Scalars['Int'];\n time: Scalars['Time'];\n type: Scalars['String'];\n subject: Scalars['String'];\n subject_en: Scalars['String'];\n text: Scalars['String'];\n text_en: Scalars['String'];\n awaiting_acception: Scalars['Boolean'];\n accepted: Scalars['Boolean'];\n unread: Scalars['Boolean'];\n attachments: Array;\n};\n\nexport type MessageListItem = {\n __typename?: 'MessageListItem';\n id: Scalars['Int'];\n time: Scalars['Time'];\n type: Scalars['String'];\n subject: Scalars['String'];\n subject_en: Scalars['String'];\n text: Scalars['String'];\n text_en: Scalars['String'];\n awaiting_acception: Scalars['Boolean'];\n accepted: Scalars['Boolean'];\n unread: Scalars['Boolean'];\n has_attachment: Scalars['Boolean'];\n};\n\nexport type MoneyTransfer = {\n __typename?: 'MoneyTransfer';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n to_account: Scalars['String'];\n currency: Currency;\n amount: Scalars['Float'];\n order_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type MoneyTransferListItem = {\n __typename?: 'MoneyTransferListItem';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n currency: Currency;\n amount: Scalars['Float'];\n order_date: Scalars['Time'];\n};\n\nexport type MoneyTransfersResponse = {\n __typename?: 'MoneyTransfersResponse';\n money_transfers: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type MoneyTransition = {\n __typename?: 'MoneyTransition';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n to_account: Scalars['String'];\n amount: Scalars['Float'];\n currency: Scalars['String'];\n transfer_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type MoneyTransitionListItem = {\n __typename?: 'MoneyTransitionListItem';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n to_account: Scalars['String'];\n amount: Scalars['Float'];\n currency: Scalars['String'];\n transfer_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type MoneyTransitionsResponse = {\n __typename?: 'MoneyTransitionsResponse';\n money_transitions: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n update_user_password: Scalars['Boolean'];\n update_user_timeout: Scalars['Boolean'];\n update_user_password_with_confirm: UpdatePasswordToken;\n confirm_password_update: Scalars['Boolean'];\n read_notification: Scalars['Boolean'];\n read_message: Scalars['Boolean'];\n accept_message: Scalars['Boolean'];\n logout: Scalars['Boolean'];\n create_exchange_order: Scalars['String'];\n create_exchange_order_confirm: Scalars['Boolean'];\n cancel_exchange_order: Scalars['String'];\n cancel_exchange_order_confirm: Scalars['Boolean'];\n update_user_language: Scalars['Boolean'];\n accept_terms_of_use: Scalars['Boolean'];\n};\n\n\nexport type MutationUpdate_User_PasswordArgs = {\n input: UpdateUserPassword;\n};\n\n\nexport type MutationUpdate_User_TimeoutArgs = {\n input: Scalars['Int'];\n};\n\n\nexport type MutationUpdate_User_Password_With_ConfirmArgs = {\n input: UpdateUserPassword;\n};\n\n\nexport type MutationConfirm_Password_UpdateArgs = {\n input: AuthSecond;\n};\n\n\nexport type MutationRead_NotificationArgs = {\n input: Scalars['Int'];\n};\n\n\nexport type MutationRead_MessageArgs = {\n input: Scalars['Int'];\n};\n\n\nexport type MutationAccept_MessageArgs = {\n input: Scalars['Int'];\n};\n\n\nexport type MutationCreate_Exchange_OrderArgs = {\n input: CreateExchangeOrder;\n};\n\n\nexport type MutationCreate_Exchange_Order_ConfirmArgs = {\n secret: Scalars['String'];\n token?: Maybe;\n};\n\n\nexport type MutationCancel_Exchange_OrderArgs = {\n id: Scalars['Int'];\n};\n\n\nexport type MutationCancel_Exchange_Order_ConfirmArgs = {\n secret: Scalars['String'];\n token: Scalars['String'];\n};\n\n\nexport type MutationUpdate_User_LanguageArgs = {\n input: Scalars['String'];\n};\n\n\nexport type MutationAccept_Terms_Of_UseArgs = {\n input: Scalars['Int'];\n};\n\nexport type Notification = {\n __typename?: 'Notification';\n id: Scalars['Int'];\n time: Scalars['Time'];\n text: Scalars['String'];\n text_en: Scalars['String'];\n direction?: Maybe;\n unread: Scalars['Boolean'];\n};\n\nexport enum OrderingDirection {\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport enum OrderingType {\n None = 'none',\n Status = 'status',\n TransactionCode = 'transaction_code',\n Security = 'security',\n Direction = 'direction',\n Count = 'count',\n LimitPrice = 'limit_price',\n ActivationPrice = 'activation_price',\n Value = 'value',\n ValidityStart = 'validity_start',\n ValidityEnd = 'validity_end',\n FromAccount = 'from_account',\n ToAccount = 'to_account',\n Currency = 'currency',\n TransferDate = 'transfer_date',\n TransitionDate = 'transition_date',\n OrderDate = 'order_date',\n FromAmount = 'from_amount',\n ToAmount = 'to_amount',\n FromValue = 'from_value',\n ToValue = 'to_value'\n}\n\nexport type Paginator = {\n page: Scalars['Int'];\n per_page: Scalars['Int'];\n};\n\nexport type PersonalContract = {\n __typename?: 'PersonalContract';\n id: Scalars['Int'];\n time: Scalars['Time'];\n name: Scalars['String'];\n name_en: Scalars['String'];\n attachment: Scalars['String'];\n attachment_en: Scalars['String'];\n};\n\nexport type PersonalDocument = {\n __typename?: 'PersonalDocument';\n type: Scalars['String'];\n type_en: Scalars['String'];\n number: Scalars['String'];\n expiry: Scalars['Time'];\n};\n\nexport type Portfolio = {\n __typename?: 'Portfolio';\n last_update: Scalars['Time'];\n sum: Scalars['Float'];\n portfolio: Array;\n};\n\nexport type PortfolioFinancialInstrument = PortfolioFundamental & {\n __typename?: 'PortfolioFinancialInstrument';\n name: Scalars['String'];\n count: Scalars['Int'];\n reserved: Scalars['Float'];\n investable: Scalars['Float'];\n payable: Scalars['Float'];\n last_closing_price: Scalars['Float'];\n market_price: Scalars['Float'];\n exchange_rate: Scalars['Float'];\n value: Scalars['Float'];\n percent: Scalars['Float'];\n accounts: Array;\n security: Security;\n security_type: SecurityType;\n tradable_stock_exchange: Scalars['Boolean'];\n type: Scalars['String'];\n};\n\nexport type PortfolioFundamental = {\n name: Scalars['String'];\n reserved: Scalars['Float'];\n investable: Scalars['Float'];\n payable: Scalars['Float'];\n market_price: Scalars['Float'];\n exchange_rate: Scalars['Float'];\n value: Scalars['Float'];\n percent: Scalars['Float'];\n accounts: Array;\n};\n\nexport type PortfolioFunds = PortfolioFundamental & {\n __typename?: 'PortfolioFunds';\n name: Scalars['String'];\n balance: Scalars['Float'];\n reserved: Scalars['Float'];\n investable: Scalars['Float'];\n payable: Scalars['Float'];\n market_price: Scalars['Float'];\n exchange_rate: Scalars['Float'];\n value: Scalars['Float'];\n percent: Scalars['Float'];\n accounts: Array;\n};\n\nexport type Query = {\n __typename?: 'Query';\n login_first: LoginToken;\n login_second: AuthToken;\n validate_password: Scalars['Boolean'];\n token_validate: AuthToken;\n getUser?: Maybe;\n getAcceptedTermsOfUse: Array;\n get_unread_notifications_count: Scalars['Int'];\n get_notifications: GetNotificationsResult;\n get_unread_messages_count: Scalars['Int'];\n get_messages: GetMessagesResult;\n get_message: Message;\n sum_portfolio: Portfolio;\n portfolio_history_graph: HistoryGraph;\n portfolio_fundamentals: Array;\n get_exchange_order: ExchangeOrder;\n get_exchange_orders: ExchangeOrdersResponse;\n get_securities: Array;\n get_account_balance: AccountBalance;\n get_security_amount: AccountBalance;\n get_valid_trading_days: Array;\n get_unit_order: UnitOrder;\n get_unit_orders: UnitOrdersResponse;\n get_money_transition: MoneyTransition;\n get_money_transitions: MoneyTransitionsResponse;\n get_currencies: Array;\n get_security_transition: SecurityTransition;\n get_security_transitions: SecurityTransitionsResponse;\n get_currency_conversion: CurrencyConversion;\n get_currency_conversions: CurrencyConversionsResponse;\n get_security_transfer: SecurityTransfer;\n get_security_transfers: SecurityTransfersResponse;\n get_money_transfer: MoneyTransfer;\n get_money_transfers: MoneyTransfersResponse;\n};\n\n\nexport type QueryLogin_FirstArgs = {\n input: AuthFirst;\n};\n\n\nexport type QueryLogin_SecondArgs = {\n input: AuthSecond;\n};\n\n\nexport type QueryValidate_PasswordArgs = {\n old_password: Scalars['String'];\n};\n\n\nexport type QueryGet_NotificationsArgs = {\n paginator: Paginator;\n};\n\n\nexport type QueryGet_MessagesArgs = {\n paginator: Paginator;\n};\n\n\nexport type QueryGet_MessageArgs = {\n id: Scalars['Int'];\n};\n\n\nexport type QueryPortfolio_History_GraphArgs = {\n input: HistoryQuery;\n};\n\n\nexport type QueryPortfolio_FundamentalsArgs = {\n account: Scalars['String'];\n};\n\n\nexport type QueryGet_Exchange_OrderArgs = {\n id: Scalars['Int'];\n};\n\n\nexport type QueryGet_Exchange_OrdersArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_SecuritiesArgs = {\n type: SecurityType;\n list_type: SecurityListType;\n account: Scalars['String'];\n};\n\n\nexport type QueryGet_Account_BalanceArgs = {\n account: Scalars['String'];\n currency: Scalars['String'];\n};\n\n\nexport type QueryGet_Security_AmountArgs = {\n account: Scalars['String'];\n security: Scalars['String'];\n};\n\n\nexport type QueryGet_Unit_OrderArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Unit_OrdersArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_Money_TransitionArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Money_TransitionsArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_CurrenciesArgs = {\n type: CurrencyType;\n list_type: CurrencyListType;\n account: Scalars['String'];\n};\n\n\nexport type QueryGet_Security_TransitionArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Security_TransitionsArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_Currency_ConversionArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Currency_ConversionsArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_Security_TransferArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Security_TransfersArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\n\nexport type QueryGet_Money_TransferArgs = {\n id: Scalars['String'];\n};\n\n\nexport type QueryGet_Money_TransfersArgs = {\n paginator: Paginator;\n order: ListingOrder;\n filter: ListingFilter;\n};\n\nexport type Security = {\n __typename?: 'Security';\n short_name: Scalars['String'];\n name: Scalars['String'];\n stock_market_locality: Scalars['String'];\n currency: Currency;\n};\n\nexport enum SecurityListType {\n All = 'all',\n OwnHistory = 'own_history',\n OwnActual = 'own_actual'\n}\n\nexport type SecurityTransfer = {\n __typename?: 'SecurityTransfer';\n transaction_code: Scalars['String'];\n status: Status;\n account: Scalars['String'];\n to_provider: Scalars['String'];\n security: Security;\n amount: Scalars['Int'];\n order_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type SecurityTransferListItem = {\n __typename?: 'SecurityTransferListItem';\n transaction_code: Scalars['String'];\n status: Status;\n account: Scalars['String'];\n security: Security;\n amount: Scalars['Int'];\n order_date: Scalars['Time'];\n};\n\nexport type SecurityTransfersResponse = {\n __typename?: 'SecurityTransfersResponse';\n security_transfers: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type SecurityTransition = {\n __typename?: 'SecurityTransition';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n to_account: Scalars['String'];\n amount: Scalars['Int'];\n security: Security;\n transfer_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type SecurityTransitionListItem = {\n __typename?: 'SecurityTransitionListItem';\n transaction_code: Scalars['String'];\n status: Status;\n from_account: Scalars['String'];\n to_account: Scalars['String'];\n amount: Scalars['Int'];\n security: Security;\n transfer_date: Scalars['Time'];\n fulfillment_date?: Maybe;\n};\n\nexport type SecurityTransitionsResponse = {\n __typename?: 'SecurityTransitionsResponse';\n security_transitions: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport enum SecurityType {\n ExchangeOrder = 'exchange_order',\n UnitOrder = 'unit_order',\n Transition = 'transition',\n Transfer = 'transfer'\n}\n\nexport type Slice = {\n __typename?: 'Slice';\n name: Scalars['String'];\n value: Scalars['Float'];\n percent: Scalars['Float'];\n};\n\nexport enum Status {\n Active = 'active',\n Expired = 'expired',\n Pending = 'pending',\n Partial = 'partial',\n CancelRequested = 'cancel_requested',\n Canceled = 'canceled',\n Completed = 'completed',\n Rejected = 'rejected'\n}\n\nexport type Subscription = {\n __typename?: 'Subscription';\n test: Scalars['Boolean'];\n new_token: AuthToken;\n notification_unread_count: Scalars['Int'];\n notification_read: Scalars['Int'];\n new_notification: Notification;\n auto_read_notification: Scalars['Boolean'];\n new_message: MessageListItem;\n message_unread_count: Scalars['Int'];\n message_read: Scalars['Int'];\n sum_portfolio: Portfolio;\n new_exchange_order: ExchangeOrderListItem;\n update_exchange_order: ExchangeOrderListItem;\n new_unit_order: UnitOrderListItem;\n update_unit_order: UnitOrderListItem;\n new_money_transition: MoneyTransitionListItem;\n update_money_transition: MoneyTransitionListItem;\n new_security_transition: SecurityTransitionListItem;\n update_security_transition: SecurityTransitionListItem;\n new_currency_conversion: CurrencyConversionListItem;\n update_currency_conversion: CurrencyConversionListItem;\n new_security_transfer: SecurityTransferListItem;\n update_security_transfer: SecurityTransferListItem;\n new_money_transfer: MoneyTransferListItem;\n update_money_transfer: MoneyTransferListItem;\n};\n\nexport type TermsAndConditions = {\n __typename?: 'TermsAndConditions';\n id: Scalars['Int'];\n time: Scalars['Time'];\n name: Scalars['String'];\n name_en: Scalars['String'];\n attachment: Scalars['String'];\n attachment_en: Scalars['String'];\n};\n\nexport type TermsOfUse = {\n __typename?: 'TermsOfUse';\n id: Scalars['Int'];\n document: Scalars['String'];\n document_en: Scalars['String'];\n};\n\n\nexport type UnitOrder = {\n __typename?: 'UnitOrder';\n transaction_code: Scalars['String'];\n status: Status;\n direction: Direction;\n account: Scalars['String'];\n security: Security;\n count: Scalars['Int'];\n fulfilled_count: Scalars['Int'];\n last_available_net_price: Scalars['Float'];\n validity_start: Scalars['Time'];\n validity_end: Scalars['Time'];\n deal_price: Scalars['Float'];\n purchase_value: Scalars['Float'];\n};\n\nexport type UnitOrderListItem = {\n __typename?: 'UnitOrderListItem';\n transaction_code: Scalars['String'];\n status: Status;\n direction: Direction;\n security: Security;\n count: Scalars['Int'];\n fulfilled_count: Scalars['Int'];\n validity_start: Scalars['Time'];\n validity_end: Scalars['Time'];\n deal_price: Scalars['Float'];\n purchase_value: Scalars['Float'];\n};\n\nexport type UnitOrdersResponse = {\n __typename?: 'UnitOrdersResponse';\n unit_orders: Array;\n page: Scalars['Int'];\n page_count: Scalars['Int'];\n};\n\nexport type UpdatePasswordToken = {\n __typename?: 'UpdatePasswordToken';\n token: Scalars['String'];\n};\n\nexport type UpdateUserPassword = {\n old_password: Scalars['String'];\n new_password: Scalars['String'];\n};\n\nexport type User = {\n __typename?: 'User';\n uid: Scalars['String'];\n kommpId: Scalars['String'];\n brokers: Array;\n name: Scalars['String'];\n accounts: Array;\n need_transaction_second_confirmation: Scalars['Boolean'];\n phone: Scalars['String'];\n tax_number: Scalars['String'];\n email: Scalars['String'];\n mailing_address: Address;\n billing_address: Address;\n place_of_birth: Scalars['String'];\n time_of_birth?: Maybe;\n mothers_name: Scalars['String'];\n personal_documents: Array;\n is_company: Scalars['Boolean'];\n registration_number: Scalars['String'];\n company_name: Scalars['String'];\n language: Scalars['String'];\n terms_and_conditions: Array;\n personal_contracts: Array;\n};\n","import * as Presentation from './presentation';\n\nexport default Presentation;\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { Dispatch } from 'redux';\nimport Auth from '.';\nimport graphqlClient from '../../graphql/graphql-client';\nimport { GraphqlOperations } from '../../graphql/operations';\nimport Presentation from '../presentation';\nimport { graphqlSubscriptionClient } from './../../graphql/graphql-client';\nimport { AuthToken, Query } from './../../graphql/types/types.d';\nimport { IStore } from './../IStore';\n\nconst handleAuthenticationSuccess = (dispatch: Dispatch, token: AuthToken): void => {\n dispatch(Auth.actions.setAuthToken(token));\n if (\n token.expiry > 0 &&\n !token.need_password_update &&\n (token.terms_of_use === undefined || token.terms_of_use === null)\n ) {\n dispatch(Auth.actions.setUserLoggedIn());\n dispatch(Auth.actions.setTimeoutTimestamp(new Date()));\n } else {\n dispatch(Auth.actions.setUserLoggedOut());\n }\n};\n\nexport const doSetAuthenticationToken = (token: AuthToken) => {\n return async (dispatch: Dispatch) => {\n dispatch(Auth.actions.setAuthToken(token));\n dispatch(Auth.actions.setTimeoutTimestamp(new Date()));\n };\n};\n\nexport const doLoginFirst = (uid: string, password: string) => {\n return async (dispatch: Dispatch, getState: () => IStore) => {\n const previousFirstToken = Auth.select.selectFirstToken(getState());\n try {\n const result = await graphqlClient\n .query(\n GraphqlOperations.queries.login_first.queryString,\n GraphqlOperations.queries.login_first.createVars(uid, password),\n { requestPolicy: 'network-only' },\n )\n .toPromise();\n if (!result.error) {\n const data = result.data as Query;\n dispatch(Auth.actions.setFirstToken(data.login_first.token));\n dispatch(Auth.actions.setLoginError('first', undefined));\n\n // when requesting new sms code\n if (previousFirstToken) {\n dispatch(\n Presentation.actions.setToast('loginPage.toastMessages.newCodeHasBeenSent', {\n appearance: 'success',\n autoDismiss: true,\n }),\n );\n }\n } else {\n console.log('Login first failure: ', result.error);\n dispatch(Auth.actions.setLoginError('first', 'loginPage.errors.invalidCredentials'));\n }\n } catch (err) {\n console.log('Login first in store error: ', err);\n dispatch(Auth.actions.setLoginError('first', 'loginPage.errors.errorOccurred'));\n }\n };\n};\n\nexport const doLoginSecond = (secret: string) => {\n return async (dispatch: Dispatch, getState: () => IStore) => {\n const token = Auth.select.selectFirstToken(getState()) || '';\n try {\n const result = await graphqlClient\n .query(\n GraphqlOperations.queries.login_second.queryString,\n GraphqlOperations.queries.login_second.createVars(token, secret),\n { requestPolicy: 'network-only' },\n )\n .toPromise();\n if (!result.error) {\n const data = result.data as Query;\n // fixing subscription client unauthenticated connection - reconnects after closing, because of reconnect: true parameter\n graphqlSubscriptionClient.close();\n\n handleAuthenticationSuccess(dispatch, data.login_second);\n dispatch(Auth.actions.setFinishedConfirmation(true));\n dispatch(Auth.actions.setLoginError('second', undefined));\n } else {\n console.log('Login second failure: ', result.error);\n dispatch(Auth.actions.setLoginError('second', 'loginPage.errors.invalidConfirmationCode'));\n }\n } catch (err) {\n console.log('Login second in store error: ', err);\n dispatch(Auth.actions.setLoginError('first', 'loginPage.errors.errorOccurred'));\n }\n };\n};\n\nexport const doHandleApplicationStarted = () => {\n return async (dispatch: Dispatch) => {\n try {\n const result = await graphqlClient\n .query(GraphqlOperations.queries.token_validate.queryString, undefined, {\n requestPolicy: 'network-only',\n })\n .toPromise();\n if (!result.error) {\n const data = result.data as Query;\n handleAuthenticationSuccess(dispatch, data.token_validate);\n } else {\n dispatch(Auth.actions.setUserLoggedOut());\n }\n } catch (err) {\n dispatch(Auth.actions.setUserLoggedOut());\n }\n };\n};\n\nexport const doPostponeTimeout = () => {\n return async (dispatch: Dispatch) => {\n try {\n const result = await graphqlClient\n .query(GraphqlOperations.queries.token_validate.queryString, undefined, {\n requestPolicy: 'network-only',\n })\n .toPromise();\n if (!result.error) {\n const data = result.data as Query;\n handleAuthenticationSuccess(dispatch, data.token_validate);\n } else {\n console.log('Timeout postpone failure: ', result.error);\n dispatch(Auth.actions.resetStore());\n dispatch(Auth.actions.setUserLoggedOut());\n }\n } catch (err) {\n console.log('Timeout postpone error: ', err);\n dispatch(Auth.actions.resetStore());\n dispatch(Auth.actions.setUserLoggedOut());\n }\n };\n};\n\nexport const doLogout = () => {\n return async (dispatch: Dispatch) => {\n try {\n const result = await graphqlClient\n .mutation(GraphqlOperations.mutations.logout.mutationString)\n .toPromise();\n if (!result.error) {\n console.log('Succesful logout');\n } else {\n console.log('Logout failure: ', result.error);\n }\n } catch (err) {\n console.log('Logout error: ', err);\n }\n dispatch(Auth.actions.resetStore());\n dispatch(Auth.actions.setUserLoggedOut());\n };\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { action } from 'typesafe-actions';\nimport { AuthToken } from './../../graphql/types/types.d';\nimport {\n doHandleApplicationStarted,\n doLoginFirst,\n doLoginSecond,\n doLogout,\n doSetAuthenticationToken,\n doPostponeTimeout,\n} from './auth-thunk-actions';\n\nexport const actionTypes = {\n DO_LOGIN: 'Auth/DoLogin',\n DO_HANDLE_ALREADY_LOGGED_IN: 'Auth/DoHandleAlreadyLoggedIn',\n SET_USER_LOGGED_IN: 'Auth/SetUserLoggedIn',\n SET_USER_LOGGED_OUT: 'Auth/SetUserLoggedOut',\n SET_LOGIN_REDIRECT_PATH: 'Auth/SetLoginRedirectPath',\n SET_LANGUAGE: 'Auth/SetLanguage',\n SET_FIRST_TOKEN: 'Auth/SetFirstToken',\n SET_AUTH_TOKEN: 'Auth/SetAuthToken',\n SET_FINISHED_CONFIRMATION: 'Auth/SetFinishedConfirmation',\n SET_TIMEOUT_TIMESTAMP: 'Auth/SetTimeoutTimestamp',\n SET_REMAINING_TIME: 'Auth/SetRemainingTime',\n SET_LOGIN_ERROR: 'Auth/SetLoginError',\n RESET_STORE: 'Auth/ResetStore',\n SET_SHOULD_RESET_CLIENT: 'Auth/SetShouldResetClient',\n SET_AUTH_TOKEN_ACCEPT_TERMS: 'Auth/SetAuthTokenAcceptTerms',\n};\n\nexport const actions = {\n setUserLoggedIn: () => action(actionTypes.SET_USER_LOGGED_IN),\n setUserLoggedOut: () => action(actionTypes.SET_USER_LOGGED_OUT),\n setLoginRedirectPath: (path?: string) => action(actionTypes.SET_LOGIN_REDIRECT_PATH, path),\n setFirstToken: (token?: string) => action(actionTypes.SET_FIRST_TOKEN, token),\n setAuthToken: (token?: AuthToken) => action(actionTypes.SET_AUTH_TOKEN, token),\n setAuthTokenAcceptTerms: () => action(actionTypes.SET_AUTH_TOKEN_ACCEPT_TERMS),\n setTimeoutTimestamp: (timestamp?: Date) => action(actionTypes.SET_TIMEOUT_TIMESTAMP, timestamp),\n setRemainingTime: (time?: number) => action(actionTypes.SET_REMAINING_TIME, time),\n setLoginError: (key: string, value: string | undefined) =>\n action(actionTypes.SET_LOGIN_ERROR, { key, value }),\n setFinishedConfirmation: (finished: boolean) =>\n action(actionTypes.SET_FINISHED_CONFIRMATION, finished),\n resetStore: () => action(actionTypes.RESET_STORE),\n setShouldResetClient: (reset: boolean) => action(actionTypes.SET_SHOULD_RESET_CLIENT, reset),\n setLanguage: (language: string) => action(actionTypes.SET_LANGUAGE, language),\n\n doLoginFirst,\n doLoginSecond,\n doLogout,\n doHandleApplicationStarted,\n doSetAuthenticationToken,\n doPostponeTimeout,\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport produce from 'immer';\nimport Auth from '.';\nimport { AuthToken } from './../../graphql/types/types.d';\nimport { AuthErrorPayload } from './auth-models';\n\nconst initializeState = (): Auth.model.AuthReducer => ({\n loggedIn: undefined,\n loginRedirectPath: undefined,\n firstToken: undefined,\n authToken: undefined,\n timeoutTimestamp: undefined,\n remainingTime: undefined,\n loginErrors: {},\n finishedConfirmation: false,\n shouldResetClient: false,\n});\n\nexport default (\n state = initializeState(),\n action: { type: string; payload: Auth.model.AuthActionsPayload },\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case Auth.actionTypes.SET_USER_LOGGED_IN:\n draft.loggedIn = true;\n return draft;\n case Auth.actionTypes.SET_USER_LOGGED_OUT:\n draft.loggedIn = false;\n return draft;\n case Auth.actionTypes.SET_LOGIN_REDIRECT_PATH:\n draft.loginRedirectPath = action.payload as string | undefined;\n return draft;\n case Auth.actionTypes.SET_FIRST_TOKEN:\n draft.firstToken = action.payload as string | undefined;\n return draft;\n case Auth.actionTypes.SET_AUTH_TOKEN:\n draft.authToken = action.payload as AuthToken | undefined;\n return draft;\n case Auth.actionTypes.SET_AUTH_TOKEN_ACCEPT_TERMS:\n if (draft.authToken) {\n draft.authToken = { ...draft.authToken, terms_of_use: undefined };\n }\n return draft;\n case Auth.actionTypes.SET_TIMEOUT_TIMESTAMP:\n draft.timeoutTimestamp = action.payload as Date | undefined;\n return draft;\n case Auth.actionTypes.SET_REMAINING_TIME:\n draft.remainingTime = action.payload as number | undefined;\n return draft;\n case Auth.actionTypes.SET_LOGIN_ERROR:\n // eslint-disable-next-line no-case-declarations\n const { key, value } = action.payload as AuthErrorPayload;\n draft.loginErrors[key] = value;\n return draft;\n case Auth.actionTypes.SET_FINISHED_CONFIRMATION:\n draft.finishedConfirmation = action.payload as boolean;\n return draft;\n case Auth.actionTypes.RESET_STORE:\n draft = { ...initializeState(), shouldResetClient: true };\n return draft;\n case Auth.actionTypes.SET_SHOULD_RESET_CLIENT:\n draft.shouldResetClient = action.payload as boolean;\n return draft;\n case Auth.actionTypes.SET_LANGUAGE:\n draft.language = action.payload as string;\n return draft;\n default:\n }\n });\n","import { AuthToken } from './../../graphql/types/types.d';\nimport { IStore } from '../IStore';\n\nexport const selectLoggedIn = (state: IStore): boolean | undefined => state.auth.loggedIn;\nexport const selectLoginRedirectPath = (state: IStore): string | undefined =>\n state.auth.loginRedirectPath;\nexport const selectFirstToken = (state: IStore): string | undefined => state.auth.firstToken;\nexport const selectAuthToken = (state: IStore): AuthToken | undefined => state.auth.authToken;\nexport const selectTimeoutTimestamp = (state: IStore): Date | undefined =>\n state.auth.timeoutTimestamp;\nexport const selectRemainingTime = (state: IStore): number | undefined => state.auth.remainingTime;\nexport const selectLoginErrors = (state: IStore): { [key: string]: string | undefined } =>\n state.auth.loginErrors;\nexport const selectFinishedConfirmation = (state: IStore): boolean =>\n state.auth.finishedConfirmation;\nexport const selectShouldResetClient = (state: IStore): boolean => state.auth.shouldResetClient;\nexport const selectLanguage = (state: IStore): string | undefined => state.auth.language;\n","import * as Auth from './auth';\n\nexport default Auth;\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { action } from 'typesafe-actions';\nimport { EditedCreateExchangeOrder } from './exchange-orders-models';\n\nexport const actionTypes = {\n SET_EDITED_EXCHANGE_ORDER: 'ExchangeOrders/SetEditedExchangeOrder',\n SET_SHOULD_VALIDATE: 'ExchangeOrders/SetShouldValidate',\n SET_VALID_DATES: 'ExchangeOrders/SetValidDates',\n SET_INVESTABLE_ACCOUNT_BALANCE: 'ExchangeOrders/SetInvestableAccountBalance',\n SET_INVESTABLE_SECURITY_AMOUNT: 'ExchangeOrders/SetInvestableSecurityAmount',\n};\n\nexport const actions = {\n setEditedExchangeOrder: (data?: EditedCreateExchangeOrder) =>\n action(actionTypes.SET_EDITED_EXCHANGE_ORDER, data),\n setShouldValidate: (validate: boolean) => action(actionTypes.SET_SHOULD_VALIDATE, validate),\n setValidDates: (dates: string[]) => action(actionTypes.SET_VALID_DATES, dates),\n setInvestableAccountBalance: (balance?: number) => action(actionTypes.SET_INVESTABLE_ACCOUNT_BALANCE, balance),\n setInvestableSecurityAmount: (amount?: number) => action(actionTypes.SET_INVESTABLE_SECURITY_AMOUNT, amount),\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport produce from 'immer';\nimport ExchangeOrders from '.';\nimport { EditedCreateExchangeOrder } from './exchange-orders-models';\n\nconst initializeState: ExchangeOrders.model.ExchangeOrdersReducer = {\n editedExchangeOrder: undefined,\n shouldValidate: false,\n validDates: [],\n investableAccountBalance: undefined,\n investableSecurityAmount: undefined,\n};\n\nexport default (\n state = initializeState,\n action: { type: string; payload: ExchangeOrders.model.ExchangeOrdersActionsPayload },\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case ExchangeOrders.actionTypes.SET_EDITED_EXCHANGE_ORDER:\n draft.editedExchangeOrder = action.payload as EditedCreateExchangeOrder | undefined;\n return draft;\n case ExchangeOrders.actionTypes.SET_SHOULD_VALIDATE:\n draft.shouldValidate = action.payload as boolean;\n return draft;\n case ExchangeOrders.actionTypes.SET_VALID_DATES:\n draft.validDates = action.payload as string[];\n return draft;\n case ExchangeOrders.actionTypes.SET_INVESTABLE_ACCOUNT_BALANCE:\n draft.investableAccountBalance = action.payload as number | undefined;\n return draft;\n case ExchangeOrders.actionTypes.SET_INVESTABLE_SECURITY_AMOUNT:\n draft.investableSecurityAmount = action.payload as number | undefined;\n return draft;\n default:\n }\n });\n","export const EXCHANGE_ORDER_MAX_INTERVAL = 30;\nexport const EXCHANGE_ORDER_MAX_START_DAY = 90;\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { connectRouter } from 'connected-react-router';\nimport { combineReducers } from 'redux';\nimport Auth from './auth';\nimport Presentation from './presentation';\nimport ExchangeOrders from './exchange-orders';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default (history: any) =>\n combineReducers({\n auth: Auth.reducer,\n presentation: Presentation.reducer,\n exchangeOrders: ExchangeOrders.reducer,\n router: connectRouter(history),\n });\n","import moment from 'moment';\n\nexport const diffInDays = (\n startDate: Date | string | moment.Moment,\n endDate: Date | string | moment.Moment,\n): number => {\n const diff = moment(endDate).startOf('day').diff(moment(startDate).startOf('day'), 'days');\n return diff;\n};\n\nexport const isSameDate = (a: Date, b: Date): boolean => {\n const isSameDate = a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n return isSameDate;\n};\n\nexport const isDateInDates = (date: string, dates: readonly string[]): boolean => {\n const contains = dates.some((d) => {\n const dateInDates = new Date(d);\n const observedDay = new Date(date);\n const isSame = isSameDate(dateInDates, observedDay);\n\n return isSame;\n });\n\n return contains;\n};\n","import { createSelector } from 'reselect';\nimport { IStore } from '../IStore';\nimport { Direction, ExchangeRateType } from './../../graphql/types/types.d';\nimport { EXCHANGE_ORDER_MAX_INTERVAL, EXCHANGE_ORDER_MAX_START_DAY } from './constants';\nimport {\n EditedCreateExchangeOrder,\n ExchangeOrderValidationErrorType,\n} from './exchange-orders-models';\nimport { diffInDays, isDateInDates, isSameDate } from './helpers';\n\nexport const selectEditedExchangeOrder = (state: IStore): EditedCreateExchangeOrder | undefined =>\n state.exchangeOrders.editedExchangeOrder;\n\nexport const selectShouldValidate = (state: IStore): boolean => state.exchangeOrders.shouldValidate;\nexport const selectValidDates = (state: IStore): string[] => state.exchangeOrders.validDates;\nexport const selectInvestableAccountBalance = (state: IStore): number | undefined => state.exchangeOrders.investableAccountBalance;\nexport const selectInvestableSecurityAmount = (state: IStore): number | undefined => state.exchangeOrders.investableSecurityAmount;\n\nexport const selectSelectableDates = createSelector(\n [selectEditedExchangeOrder, selectValidDates],\n (exchangeOrder, validDates) => {\n const today = new Date();\n const selectableStartDates = validDates.filter((d) => {\n const diff = diffInDays(today, d);\n return diff < EXCHANGE_ORDER_MAX_START_DAY;\n });\n const selectableEndDates = exchangeOrder?.validity_start\n ? validDates.filter((d) => {\n const diff = diffInDays(exchangeOrder.validity_start!, d);\n return diff < EXCHANGE_ORDER_MAX_INTERVAL;\n })\n : [];\n\n return { selectableStartDates, selectableEndDates };\n },\n);\n\nexport const selectExchangeOrderIsValid = createSelector(\n [selectEditedExchangeOrder, selectValidDates, selectInvestableAccountBalance, selectInvestableSecurityAmount],\n (exchangeOrder, validDates, accountBalance, ownedSecurityAmount) => {\n if (!exchangeOrder) {\n return false;\n }\n\n const mandatoryFieldsValid =\n exchangeOrder.direction &&\n exchangeOrder.account &&\n exchangeOrder.security !== undefined &&\n exchangeOrder.count !== undefined &&\n !isNaN(exchangeOrder.count) &&\n exchangeOrder.type &&\n exchangeOrder.validity_start;\n\n if (!mandatoryFieldsValid) {\n return false;\n }\n\n if (exchangeOrder.daytrade && !exchangeOrder.daytrade_type) {\n return false;\n }\n if (\n (exchangeOrder.type === ExchangeRateType.LimitPrice ||\n exchangeOrder.type === ExchangeRateType.StopLimit) &&\n (exchangeOrder.limit_price === undefined || isNaN(exchangeOrder.limit_price))\n ) {\n return false;\n }\n if (\n (exchangeOrder.type === ExchangeRateType.StopMarket ||\n exchangeOrder.type === ExchangeRateType.StopLimit) &&\n (exchangeOrder.activation_price === undefined || isNaN(exchangeOrder.activation_price))\n ) {\n return false;\n }\n\n if (!exchangeOrder.securityDetails) {\n return false;\n }\n\n /*if (exchangeOrder.daytrade && exchangeOrder.validity_start) {\n const daytradeDay = exchangeOrder.validity_start;\n const isToday = isSameDate(new Date(daytradeDay), new Date());\n const daytradeDayIsValid = isDateInDates(daytradeDay, validDates) && isToday;\n if (!daytradeDayIsValid) {\n return false;\n }\n } else {\n const today = new Date();\n const selectableStartDates = validDates.filter((d) => {\n const diff = diffInDays(today, d);\n return diff < EXCHANGE_ORDER_MAX_START_DAY;\n });\n const selectableEndDates = exchangeOrder?.validity_start\n ? validDates.filter((d) => {\n const diff = diffInDays(exchangeOrder.validity_start!, d);\n return diff < EXCHANGE_ORDER_MAX_INTERVAL;\n })\n : [];\n const startDateIsValid =\n exchangeOrder?.validity_start &&\n isDateInDates(exchangeOrder.validity_start!, selectableStartDates);\n\n const endDateIsValid = exchangeOrder?.validity_end\n ? exchangeOrder?.validity_end &&\n isDateInDates(exchangeOrder.validity_end!, selectableEndDates)\n : true;\n\n if (!startDateIsValid || !endDateIsValid) {\n return false;\n }\n }*/\n\n if (exchangeOrder.direction === Direction.Buy && !accountBalance) {\n return false;\n }\n if (exchangeOrder.direction === Direction.Buy && exchangeOrder.limit_price && exchangeOrder.count) {\n if (exchangeOrder.limit_price * exchangeOrder.count > (accountBalance || 0)) {\n return false;\n }\n }\n\n if (exchangeOrder.direction === Direction.Sell && !ownedSecurityAmount) {\n return false\n }\n if (exchangeOrder.direction === Direction.Sell && exchangeOrder.count) {\n if (exchangeOrder.count > (ownedSecurityAmount || 0)) {\n return false;\n }\n }\n\n return true;\n },\n);\n\nexport const selectExchangeOrderValidationErrors = createSelector(\n [selectEditedExchangeOrder, selectShouldValidate, selectValidDates, selectInvestableAccountBalance, selectInvestableSecurityAmount],\n (exchangeOrder, shouldValidate, validDates, accountBalance, ownedSecurityAmount) => {\n const result: ExchangeOrderValidationErrorType = {};\n if (!shouldValidate) {\n return result;\n }\n\n if (!exchangeOrder?.direction) {\n result.direction = 'exchangeOrderFormPage.errors.required';\n }\n if (!exchangeOrder?.account) {\n result.account = 'exchangeOrderFormPage.errors.required';\n }\n if (!exchangeOrder?.security) {\n result.security = 'exchangeOrderFormPage.errors.required';\n }\n if (!exchangeOrder?.count) {\n result.count = 'exchangeOrderFormPage.errors.required';\n }\n if (!exchangeOrder?.type) {\n result.exchangeType = 'exchangeOrderFormPage.errors.required';\n }\n if (!exchangeOrder?.validity_start) {\n result.dates = 'exchangeOrderFormPage.errors.required';\n }\n /*if (!exchangeOrder?.validity_end) {\n result.dates = 'exchangeOrderFormPage.errors.required;\n }*/\n\n if (exchangeOrder?.daytrade && !exchangeOrder?.daytrade_type) {\n result.daytradeType = 'exchangeOrderFormPage.errors.required';\n }\n if (\n (exchangeOrder?.type === ExchangeRateType.LimitPrice ||\n exchangeOrder?.type === ExchangeRateType.StopLimit) &&\n (exchangeOrder.limit_price === undefined || isNaN(exchangeOrder.limit_price))\n ) {\n result.limitPrice = 'exchangeOrderFormPage.errors.required';\n }\n if (\n (exchangeOrder?.type === ExchangeRateType.StopMarket ||\n exchangeOrder?.type === ExchangeRateType.StopLimit) &&\n (exchangeOrder.activation_price === undefined || isNaN(exchangeOrder.activation_price))\n ) {\n result.activationPrice = 'exchangeOrderFormPage.errors.required';\n }\n\n /*if (exchangeOrder?.daytrade && exchangeOrder.validity_start) {\n const daytradeDay = exchangeOrder.validity_start;\n const isToday = isSameDate(new Date(daytradeDay), new Date());\n const daytradeDayIsValid = isDateInDates(daytradeDay, validDates) && isToday;\n if (!daytradeDayIsValid) {\n result.dates = 'exchangeOrderFormPage.errors.dayTradeDayInvalid';\n }\n } else {\n const today = new Date();\n const selectableStartDates = validDates.filter((d) => {\n const diff = diffInDays(today, d);\n return diff < EXCHANGE_ORDER_MAX_START_DAY;\n });\n const selectableEndDates = exchangeOrder?.validity_start\n ? validDates.filter((d) => {\n const diff = diffInDays(exchangeOrder.validity_start!, d);\n return diff < EXCHANGE_ORDER_MAX_INTERVAL;\n })\n : [];\n const startDateIsValid =\n exchangeOrder?.validity_start &&\n isDateInDates(exchangeOrder.validity_start!, selectableStartDates);\n\n const endDateIsValid =\n exchangeOrder?.validity_end &&\n isDateInDates(exchangeOrder.validity_end!, selectableEndDates);\n\n if (\n exchangeOrder?.validity_start &&\n exchangeOrder.validity_end &&\n (!startDateIsValid || !endDateIsValid)\n ) {\n result.dates = 'exchangeOrderFormPage.errors.date';\n }\n }*/\n\n if (exchangeOrder?.direction === Direction.Buy && !accountBalance) {\n result.count = 'exchangeOrderFormPage.errors.notEnoughBalance';\n }\n if (exchangeOrder?.direction === Direction.Buy && exchangeOrder.limit_price && exchangeOrder.count) {\n if (exchangeOrder.limit_price * exchangeOrder.count > (accountBalance || 0)) {\n result.count = 'exchangeOrderFormPage.errors.notEnoughBalance';\n }\n }\n\n if (exchangeOrder?.direction === Direction.Sell && !ownedSecurityAmount) {\n result.count = 'exchangeOrderFormPage.errors.notEnoughSecurity';\n }\n if (exchangeOrder?.direction === Direction.Sell && exchangeOrder.count) {\n if (exchangeOrder.count > (ownedSecurityAmount || 0)) {\n result.count = 'exchangeOrderFormPage.errors.notEnoughSecurity';\n }\n }\n\n return result;\n },\n);\n","import * as ExchangeOrders from './exchange-orders';\n\nexport default ExchangeOrders;\n","import { routerMiddleware } from 'connected-react-router';\nimport { createBrowserHistory } from 'history';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers';\n\nexport const history = createBrowserHistory();\n\nconst store = createStore(\n rootReducer(history),\n compose(applyMiddleware(routerMiddleware(history), thunk)),\n);\n\nexport default store;\n","import { Exchange } from 'urql';\nimport { pipe, tap } from 'wonka';\nimport { handleError } from './handle-error';\n\n// error handling exchange - https://github.com/FormidableLabs/urql/issues/225\nexport const errorExchange: Exchange = ({ forward }) => (ops$) => {\n return pipe(\n forward(ops$),\n tap(({ error }) => {\n // If the OperationResult has an error send a request to sentry\n if (error) {\n handleError(error);\n }\n }),\n );\n};\n","import { ErrorMessages, ErrorDescriptions } from './errors';\nimport { CombinedError } from 'urql';\nimport Auth from '../../redux/auth';\nimport store from '../../redux/store';\nimport Presentation from '../../redux/presentation';\n\nexport const handleError = (error: CombinedError): void => {\n switch (error.message) {\n case ErrorMessages.AuthenticationError: {\n const loggedIn = Auth.select.selectLoggedIn(store.getState());\n if (loggedIn) {\n store.dispatch(Auth.actions.resetStore());\n store.dispatch(Auth.actions.setUserLoggedOut());\n console.log(\n 'Logged out, because of client recieved an authentication_error in a graphql operation',\n );\n }\n break;\n }\n case ErrorMessages.InvalidSecretError:\n break;\n case ErrorMessages.DuplicateNewPasswordError:\n break;\n default:\n store.dispatch(\n Presentation.actions.setToast(ErrorDescriptions[error.message] || 'common.unexpectedError', {\n appearance: 'error',\n autoDismiss: false,\n }),\n );\n break;\n }\n};\n","import { SubscriptionClient } from 'subscriptions-transport-ws';\nimport {\n cacheExchange,\n Client,\n createClient,\n dedupExchange,\n fetchExchange,\n subscriptionExchange,\n} from 'urql';\nimport config from '../../../config';\nimport { errorExchange } from './error-handler/error-exchange';\n\nconst subscriptionClient = new SubscriptionClient(config.ws_api_url, {\n reconnect: true,\n timeout: 20000,\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n connectionCallback: (error: Error[], _result?: any) => {\n if (error && error.length) {\n console.log('Ws connection error: ', error);\n } else {\n console.log('Ws connection success to host: ', config.ws_api_url);\n }\n },\n});\n\nexport const graphqlSubscriptionClient = subscriptionClient;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const defaultHeaders: {} = Object.freeze({\n 'Content-Type': 'application/json',\n});\n\nexport const createGraphqlClient = (): Client =>\n createClient({\n url: config.graphql_api_url,\n exchanges: [\n ...[dedupExchange, cacheExchange, errorExchange, fetchExchange],\n subscriptionExchange({\n forwardSubscription: (operation) => subscriptionClient.request(operation),\n }),\n ],\n fetchOptions: () => {\n return {\n credentials: 'include',\n };\n },\n });\n\nlet graphqlClient = createGraphqlClient();\n\nexport const resetGraphqlClient = (): Client => {\n const newClient = createGraphqlClient();\n graphqlClient = newClient;\n return newClient;\n};\n\nexport default graphqlClient;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport graphqlClient, { resetGraphqlClient } from '../../logic/graphql/graphql-client';\nimport Auth from '../../logic/redux/auth';\nimport { Provider as URQLProvider, Client } from 'urql';\n\nconst ResetableUrqlProvider = (props: { children: JSX.Element }): JSX.Element => {\n const dispatch = useDispatch();\n\n const [client, setClient] = useState(graphqlClient);\n\n const shouldResetClient = useSelector(Auth.select.selectShouldResetClient);\n\n useEffect(() => {\n if (shouldResetClient) {\n setClient(resetGraphqlClient());\n dispatch(Auth.actions.setShouldResetClient(false));\n window.location.reload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shouldResetClient]);\n\n return {props.children};\n};\n\nexport default ResetableUrqlProvider;\n","import menu_dashboard from './menu-dashboard.png';\nimport menu_exchange_orders from './menu-exchange-orders.png';\nimport menu_disposals from './menu-disposals.png';\nimport menu_transfers from './menu-transfers.png';\nimport menu_messages from './menu-messages.png';\nimport menu_profile from './menu-profile.png';\nimport menu_dashboard_active from './menu-dashboard-active.png';\nimport menu_exchange_orders_active from './menu-exchange-orders-active.png';\nimport menu_disposals_active from './menu-disposals-active.png';\nimport menu_transfers_active from './menu-transfers-active.png';\nimport menu_messages_active from './menu-messages-active.png';\nimport menu_profile_active from './menu-profile-active.png';\nimport triangle from './triangle.png';\nimport help from './help.png';\nimport checkbox_icon from './checkbox-icon.png';\nimport back_arrow from './back-arrow.png';\nimport personal_data from './personal-data.svg';\nimport personal_data_billing from './personal-data-billing.svg';\nimport personal_data_cards from './personal-data-cards.svg';\nimport personal_data_accounts from './personal-data-accounts.svg';\nimport personal_data_company from './personal-data-company.svg';\nimport fa_solid_id_card from './icon-park-solid_bank-card.svg';\nimport icon_park_solid_id_card from './icon-park-solid_id-card.svg';\nimport forward_menu from './forward-menu.png';\nimport clock from './clock.png';\nimport error_icon from './error-icon.png';\nimport notification_sell from './notification-sell.png';\nimport notification_buy from './notification-buy.png';\nimport notification from './notification.png';\nimport attachment from './attachment.png';\nimport pdf_icon from './pdf-icon.png';\nimport important_message from './important-message.png';\nimport modal_close from './modal-close.png';\nimport info_svg from './info_svg.svg';\nimport status_active from './status-active.svg';\nimport status_canceled from './status-canceled.svg';\nimport status_completed from './status-completed.svg';\nimport status_expired from './status-expired.svg';\nimport status_partial from './status-partial.svg';\nimport status_pending from './status-pending.svg';\nimport status_rejected from './status-rejected.svg';\nimport security_icon from './security-icon.svg';\nimport filter_icon from './filter-icon.svg';\nimport konstruktor from './konstruktor.svg';\n\nimport tradebull_logo_large from './tradebull-logo-large.png';\nimport tradebull_logo from './tradebull-logo.png';\n\nimport positive from './positive_arrow.png';\nimport negative from './negative_arrow.png';\n\nexport const icons = {\n // menu icons\n menu_dashboard,\n menu_exchange_orders,\n menu_disposals,\n menu_transfers,\n menu_messages,\n menu_profile,\n menu_dashboard_active,\n menu_exchange_orders_active,\n menu_disposals_active,\n menu_transfers_active,\n menu_messages_active,\n menu_profile_active,\n\n // default screen\n back_arrow,\n\n // card menus\n forward_menu,\n\n // login\n tradebull_logo_large,\n konstruktor,\n\n // personal data\n personal_data,\n personal_data_billing,\n personal_data_cards,\n personal_data_accounts,\n personal_data_company,\n fa_solid_id_card,\n icon_park_solid_id_card,\n\n // messages/notifications\n clock,\n notification_sell,\n notification_buy,\n notification,\n attachment,\n pdf_icon,\n important_message,\n\n // statuses\n status_active,\n status_canceled,\n status_completed,\n status_expired,\n status_partial,\n status_pending,\n status_rejected,\n\n // components\n error_icon,\n triangle,\n tradebull_logo,\n help,\n checkbox_icon,\n modal_close,\n info_svg,\n security_icon,\n filter_icon,\n\n positive,\n negative,\n};\n","import { icons } from './icons/index';\nimport { images } from './images/index';\n\nexport const assets = {\n images,\n icons,\n};\n","import chess from './chess.jpg';\nimport home_bg from './home-bg.png';\nimport profile from './profile.png';\nimport profile_personal_data from './profile-personal-data.svg';\nimport profile_notifications from './profile-notifications.png';\nimport profile_settings from './profile-settings.png';\nimport profile_bg from './profile-bg.png';\nimport settings_login from './settings-login.png';\nimport settings_logout from './settings-logout.png';\nimport settings_notifications from './settings-notifications.png';\nimport settings_contract from './settings-contract.png';\nimport messages_bg from './messages-bg.png';\nimport contact_bg from './contact-bg.png';\nimport contact from './contact.png';\nimport exchange_order_bg from './exchange-order-bg.png';\nimport orders_bg from './orders-bg.png';\nimport money_transfers_bg from './money-transfers-bg.png';\nimport settings_language from './earth.jpg';\n\n\nexport const images = {\n // backgrounds\n home_bg,\n profile_bg,\n contact_bg,\n messages_bg,\n exchange_order_bg,\n orders_bg,\n money_transfers_bg,\n\n // profile menu\n profile_personal_data,\n profile_notifications,\n profile_settings,\n\n // profile menu item\n profile,\n\n // settings menu\n settings_login,\n settings_logout,\n settings_notifications,\n settings_contract,\n settings_language,\n\n // login\n chess,\n\n // contact\n contact,\n};\n","import { useEffect } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport const useOnClickOutside = (ref: any, onClickOutside: () => void): void => {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent): void {\n if (ref.current && !ref.current.contains(event.target)) {\n onClickOutside();\n }\n }\n // Bind the event listener\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [onClickOutside, ref]);\n};\n","import React, { useRef } from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { assets } from '../../assets';\nimport { useOnClickOutside } from '../../helpers/use-on-click-outside';\n\nconst opacityAnimation = keyframes`\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n`;\n\nconst ModalBackdrop = styled.div`\n position: absolute;\n left: 0px;\n right: 0px;\n top: 0px;\n bottom: 0px;\n animation: ${opacityAnimation} 0.2s ease-out 0s 1;\n background-color: rgba(0, 0, 0, 0.9);\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst ModalWindow = styled.div`\n position: relative;\n width: 670px;\n min-height: 160px;\n max-height: calc(100% - 30px);\n overflow-y: auto;\n padding: 20px 20px;\n border-radius: 2px;\n background-color: var(--matt-lighter-bg-color);\n margin: 0px 10px;\n`;\n\nconst ModalCloseIcon = styled.img`\n width: 30px;\n height: 30px;\n position: absolute;\n top: 20px;\n right: 20px;\n cursor: pointer;\n`;\n\nconst Modal = (props: {\n open?: boolean;\n children: React.ReactNode;\n onClose: () => void;\n}): JSX.Element | null => {\n const modalWindowRef = useRef(null);\n useOnClickOutside(modalWindowRef, props.onClose);\n\n if (!props.open) {\n return null;\n }\n\n return (\n \n \n {props.children} \n \n \n );\n};\n\nexport default Modal;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Presentation from '../../logic/redux/presentation';\nimport Modal from './modal';\n\nconst ModalPresenter = (): JSX.Element | null => {\n const dispatch = useDispatch();\n const modalContent = useSelector(Presentation.select.selectModalContent);\n const onClose = useSelector(Presentation.select.selectOnClose);\n console.log('ModalPresenter', onClose);\n\n const handleClose = (): void => {\n dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n return (\n \n {modalContent}\n \n );\n};\n\nexport default ModalPresenter;\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useToasts } from 'react-toast-notifications';\nimport Presentation from '../../logic/redux/presentation';\nimport { useIntl } from 'react-intl';\n\nconst ToastPresenter = (): null => {\n const toast = useSelector(Presentation.select.selectToast);\n const intl = useIntl();\n const { addToast } = useToasts();\n\n useEffect(() => {\n if (toast) {\n addToast(intl.formatMessage({ id: toast.content }), toast.options);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toast]);\n\n return null;\n};\n\nexport default ToastPresenter;\n","const dashboard = '/';\nconst login = '/login';\nconst profile = '/profil';\nconst personal_data = '/profil/szemelyesadatok';\nconst settings = '/profil/beallitasok';\nconst contact = '/kapcsolat';\nconst notifications = '/profil/ertesitesek';\nconst login_settings = '/profil/beallitasok/belepesi-adatok';\nconst logout_settings = '/profil/beallitasok/kilepesi-adatok';\nconst locale_settings = '/profil/beallitasok/nyelv-modositas';\nconst password_change = '/profil/beallitasok/jelszo-modositas';\nconst messages = '/uzenetek';\nconst exchange_orders = '/megbizasok/tozsdei';\nconst new_exchange_order = '/megbizasok/tozsdei/uj';\nconst exchange_order_details = '/megbizasok/tozsdei/:id';\nconst unit_orders = '/megbizasok/befektetesijegy';\nconst unit_order_details = '/megbizasok/befektetesijegy/:id';\nconst money_transitions = '/rendelkezesek/penz-atvezetes';\nconst money_transition_details = '/rendelkezesek/penz-atvezetes/:id';\nconst security_transitions = '/rendelkezesek/ertekpapir-atvezetes';\nconst security_transition_details = '/rendelkezesek/ertekpapir-atvezetes/:id';\nconst currency_conversions = '/rendelkezesek/devizakonverzio';\nconst currency_conversion_details = '/rendelkezesek/devizakonverzio/:id';\nconst security_transfers = '/rendelkezesek/ertekpapir-transzfer';\nconst security_transfer_details = '/rendelkezesek/ertekpapir-transzfer/:id';\nconst money_transfers = '/atutalasok';\nconst money_transfer_details = '/atutalasok/:id';\n\nexport const Paths = {\n login,\n dashboard,\n profile,\n personal_data,\n contact,\n settings,\n notifications,\n login_settings,\n logout_settings,\n locale_settings,\n password_change,\n messages,\n exchange_orders,\n new_exchange_order,\n exchange_order_details,\n unit_orders,\n unit_order_details,\n money_transitions,\n money_transition_details,\n security_transitions,\n security_transition_details,\n currency_conversions,\n currency_conversion_details,\n security_transfers,\n security_transfer_details,\n money_transfers,\n money_transfer_details,\n};\n","import React, { useEffect, useState } from 'react';\nimport { useQuery, useSubscription } from 'urql';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport { Query, Subscription } from '../../../../logic/graphql/types/types';\nimport styled from 'styled-components';\n\nconst BadgeContainer = styled.span`\n position: absolute;\n top: 0px;\n right: 0px;\n height: 18px;\n min-width: 18px;\n background: #eb5757;\n font-weight: bold;\n font-size: 11px;\n line-height: 18px;\n text-align: center;\n letter-spacing: -0.01em;\n border-radius: 9px;\n box-shadow: 0px 0px 10px #eb5757;\n padding: 0px 3px;\n`;\n\nconst NotificationBadge = (): JSX.Element | null => {\n const [notificationCount, setNotficicationCount] = useState(undefined);\n const notificationQueryResult = useQuery({\n query: GraphqlOperations.queries.get_unread_notifications_count.queryString,\n })[0];\n\n const handleSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _notificationCounts: number[] = [],\n response: Subscription,\n ): number[] => {\n if (response && response.notification_unread_count !== undefined) {\n setNotficicationCount(response.notification_unread_count);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.notification_unread_count.subscriptionString,\n },\n handleSubscription,\n );\n\n const notificationCountData = notificationQueryResult.data?.get_unread_notifications_count;\n\n useEffect(() => {\n if (notificationCount === undefined && notificationCountData !== undefined) {\n setNotficicationCount(notificationCountData);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [notificationCountData]);\n\n const indicatedNotificationsCount = notificationCount\n ? notificationCount < 100\n ? notificationCount\n : '99+'\n : undefined;\n\n if (indicatedNotificationsCount) {\n return {indicatedNotificationsCount};\n }\n return null;\n};\n\nexport default NotificationBadge;\n","import React from 'react';\nimport { assets } from '../../../../assets';\nimport NotificationBadge from './notification-badge';\nimport styled from 'styled-components';\n\nconst Container = styled.div.attrs(() => ({}))<{ small: boolean }>`\n position: relative;\n background-color: var(--primary-text-color);\n padding: ${(props) => (props.small ? '6px' : '8px')};\n border-radius: 100px;\n margin-left: ${(props) => (props.small ? '0px' : '40px')};\n`;\n\nconst Image = styled.img.attrs(() => ({}))<{ small: boolean }>`\n width: ${(props) => (props.small ? '28px' : '32px')};\n height: ${(props) => (props.small ? '28px' : '32px')};\n object-fit: contain;\n`;\n\nconst ProfileCircle = (props: {\n isActive?: boolean;\n onClick?: () => void;\n small?: boolean;\n}): JSX.Element => {\n const handleClick = (event: React.MouseEvent): void => {\n if (props.onClick) {\n event.stopPropagation();\n props.onClick();\n }\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default ProfileCircle;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useQuery, useSubscription } from 'urql';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport { Query, Subscription } from '../../../../logic/graphql/types/types';\n\nconst BadgeContainer = styled.span`\n position: absolute;\n top: -12px;\n right: -16px;\n height: 18px;\n min-width: 18px;\n background: #eb5757;\n font-weight: bold;\n font-size: 11px;\n line-height: 18px;\n text-align: center;\n letter-spacing: -0.01em;\n border-radius: 9px;\n box-shadow: 0px 0px 10px #eb5757;\n padding: 0px 3px;\n`;\n\nconst MessageBadge = (): JSX.Element | null => {\n const [messageCount, setMessageCount] = useState(undefined);\n const messageQueryResult = useQuery({\n query: GraphqlOperations.queries.get_unread_messages_count.queryString,\n })[0];\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleSubscription = (_messageCounts: number[] = [], response: Subscription): number[] => {\n if (response && response.message_unread_count !== undefined) {\n setMessageCount(response.message_unread_count);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.message_unread_count.subscriptionString,\n },\n handleSubscription,\n );\n\n const messageCountData = messageQueryResult.data?.get_unread_messages_count;\n\n useEffect(() => {\n if (messageCount === undefined && messageCountData !== undefined) {\n setMessageCount(messageCountData);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageCountData]);\n\n const indicatedMessagesCount = messageCount\n ? messageCount < 100\n ? messageCount\n : '99+'\n : undefined;\n\n if (indicatedMessagesCount) {\n return {indicatedMessagesCount};\n }\n return null;\n};\n\nexport default MessageBadge;\n","import React, { useMemo, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { assets } from '../../../assets';\nimport { Paths } from '../../../navigation/paths';\nimport './custom-menu.css';\nimport MessageBadge from './components/message-badge';\nimport {useIntl} from \"react-intl\";\n\nexport type MenuItem1 = {\n label: string;\n path?: string;\n icon: string;\n activeIcon: string;\n children?: MenuItem2[];\n subRoutes: string[];\n badge?: JSX.Element | null;\n};\n\nexport type MenuItem2 = {\n label: string;\n path: string;\n subRoutes: string[];\n};\n\nconst ImageContainer = styled.div`\n position: relative;\n margin-left: 38px;\n width: 16px;\n height: 16px;\n`;\n\nconst MenuIcon = styled.img.attrs(() => ({}))<{ isActive: boolean }>`\n width: 16px;\n height: 16px;\n -webkit-filter: ${(props) =>\n props.isActive ? 'drop-shadow(0px 0px 10px var(--primary-color))' : 'initial'};\n filter: ${(props) =>\n props.isActive ? 'drop-shadow(0px 0px 10px var(--primary-color))' : 'initial'};\n`;\n\nconst Item1 = (props: { data: MenuItem1 }): JSX.Element => {\n const [isOpen, setIsOpen] = useState(false);\n const location = useLocation();\n const history = useHistory();\n const isActive =\n location.pathname === props.data.path ||\n (!!props.data.children &&\n props.data.children.some(\n (c) =>\n c.path === location.pathname || c.subRoutes.some((r) => location.pathname.includes(r)),\n ));\n\n const handleItemClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n event.preventDefault();\n if (props.data.children) {\n setIsOpen(!isOpen);\n } else if (props.data.path) {\n history.push(props.data.path);\n }\n };\n\n return (\n <>\n
\n
\n \n \n {props.data.badge}\n \n {props.data.label}\n {props.data.children ? (\n \n ) : null}\n
\n
\n {props.data.children\n ? props.data.children.map((c: MenuItem2, index: number) => )\n : null}\n
\n \n );\n};\n\nexport const Item2 = (props: { data: MenuItem2 }): JSX.Element => {\n const location = useLocation();\n const history = useHistory();\n const isActive =\n location.pathname === props.data.path ||\n props.data.subRoutes.some((r) => location.pathname.includes(r));\n const handleItemClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n event.preventDefault();\n history.push(props.data.path);\n };\n\n return (\n
\n {props.data.label}\n
\n );\n};\n\nconst CustomMenu = (): JSX.Element => {\n const intl = useIntl();\n const data: MenuItem1[] = useMemo(() => {\n return [\n {\n label: intl.formatMessage({ id: 'navbar.dashboard' }),\n path: Paths.dashboard,\n icon: assets.icons.menu_dashboard,\n activeIcon: assets.icons.menu_dashboard_active,\n subRoutes: [],\n },\n {\n label: intl.formatMessage({ id: 'navbar.orders' }),\n icon: assets.icons.menu_exchange_orders,\n activeIcon: assets.icons.menu_exchange_orders_active,\n subRoutes: [],\n children: [\n {\n label: intl.formatMessage({ id: 'navbar.orders_exchange_orders_' }),\n path: Paths.exchange_orders,\n subRoutes: [Paths.exchange_orders, Paths.new_exchange_order],\n },\n {\n label: intl.formatMessage({ id: 'navbar.orders_unit' }),\n path: Paths.unit_orders,\n subRoutes: [Paths.unit_orders],\n },\n ],\n },\n {\n label: intl.formatMessage({ id: 'navbar.disposals' }),\n icon: assets.icons.menu_disposals,\n activeIcon: assets.icons.menu_disposals_active,\n subRoutes: [],\n children: [\n {\n label: intl.formatMessage({ id: 'navbar.disposals_transitions' }),\n path: Paths.money_transitions,\n subRoutes: [Paths.money_transitions],\n },\n {\n label: intl.formatMessage({ id: 'navbar.disposals_security_transitions' }),\n path: Paths.security_transitions,\n subRoutes: [Paths.security_transitions],\n },\n {\n label: intl.formatMessage({ id: 'navbar.disposals_currency_conversions' }),\n path: Paths.currency_conversions,\n subRoutes: [Paths.currency_conversions],\n },\n {\n label: intl.formatMessage({ id: 'navbar.disposals_security_transfers' }),\n path: Paths.security_transfers,\n subRoutes: [Paths.security_transfers],\n },\n ],\n },\n {\n label: intl.formatMessage({ id: 'navbar.money_transfers' }),\n path: Paths.money_transfers,\n icon: assets.icons.menu_transfers,\n activeIcon: assets.icons.menu_transfers_active,\n subRoutes: [Paths.money_transfers],\n },\n {\n label: intl.formatMessage({ id: 'navbar.messages' }),\n path: Paths.messages,\n icon: assets.icons.menu_messages,\n activeIcon: assets.icons.menu_messages_active,\n subRoutes: [],\n badge: ,\n },\n ];\n }, [intl]);\n\n return (\n
\n {data.map((d: MenuItem1, index: number) => (\n \n ))}\n
\n );\n};\n\nexport default CustomMenu;\n","import styled, { keyframes } from 'styled-components';\n\nconst rotateAnimation = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst ButtonSpinner = styled.span`\n width: 22px;\n height: 22px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 8px;\n &:before {\n content: '';\n color: white;\n height: 22px;\n width: 22px;\n background: transparent;\n border-radius: 50%;\n border: 5px solid blue;\n border-color: #999 var(--primary-text-color) #999 #999;\n animation: ${rotateAnimation} 0.6s infinite ease-in-out;\n }\n`;\n\nexport default ButtonSpinner;\n","import React, { ReactChild } from 'react';\nimport styled from 'styled-components';\nimport ButtonSpinner from '../loading-indicators/button-spinner';\n\nconst StyledButton = styled.button.attrs(() => ({}))<{\n isLoading?: boolean;\n secondary?: boolean;\n big?: boolean;\n fullWidthMobile?: boolean;\n}>`\n height: ${(props) => (props.big ? '56px' : '32px')};\n width: min-content;\n padding: 0px ${(props) => (props.big ? '32px' : '24px')};\n background: ${(props) =>\n props.secondary ? 'var(--primary-text-color)' : 'var(--primary-color)'};\n opacity: ${(props) => (props.isLoading ? '0.5' : '1')};\n border-radius: 2px;\n font-weight: bold;\n font-size: 12px;\n line-height: 16px;\n cursor: ${(props) => (props.isLoading ? 'not-allowed' : 'pointer')};\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n @media (max-width: 640px) {\n width: ${(props) => (props.fullWidthMobile ? '100%' : 'min-content')};\n }\n`;\n\nconst ButtonText = styled.span.attrs(() => ({}))<{\n secondary?: boolean;\n}>`\n color: ${(props) => (props.secondary ? 'var(--primary-color)' : 'var(--primary-text-color)')};\n`;\n\nconst Button = (props: {\n onClick: (event: React.MouseEvent) => void;\n children?: ReactChild;\n loading?: boolean;\n inactive?: boolean;\n secondary?: boolean;\n big?: boolean;\n className?: string;\n fullWidthMobile?: boolean;\n style?: React.CSSProperties | undefined;\n}): JSX.Element => {\n const handleOnClick = (event: React.MouseEvent): void => {\n if (!props.loading && !props.inactive) {\n props.onClick(event);\n }\n };\n\n return (\n \n {props.loading && }\n {props.children}\n \n );\n};\n\nexport default Button;\n","import React from 'react';\nimport Button from '../buttons/button';\nimport { useDispatch } from 'react-redux';\nimport Auth from '../../logic/redux/auth';\nimport { FormattedMessage } from 'react-intl';\n\nconst LogoutButton = (): JSX.Element => {\n const dispatch = useDispatch();\n const handleLogoutClick = (): void => {\n dispatch(Auth.actions.doLogout());\n };\n return (\n \n );\n};\n\nexport default LogoutButton;\n","import * as Sentry from '@sentry/react';\nimport React from 'react';\nimport Button from '../buttons/button';\nimport {FormattedMessage} from \"react-intl\";\n\nexport const Fallback = (): JSX.Element => (\n
\n

\n \n

\n

\n \n

\n

\n \n

\n \n
\n);\n\nconst ErrorBoundary = (props: { children: React.ReactNode }): JSX.Element => {\n return (\n {\n scope.setTag('location', window.location.pathname);\n }}\n fallback={Fallback}\n >\n {props.children}\n \n );\n};\n\nexport default ErrorBoundary;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport styled, { keyframes } from 'styled-components';\nimport { assets } from '../../assets';\nimport { Paths } from '../../navigation/paths';\nimport ProfileCircle from './menu-sidebar/components/profile-circle';\nimport CustomMenu from './menu-sidebar/custom-menu';\nimport { useSelector } from 'react-redux';\nimport Auth from '../../logic/redux/auth';\nimport { useOnClickOutside } from '../../helpers/use-on-click-outside';\nimport LogoutButton from '../utils/logout-button';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../utils/error-boundary';\n\nconst growAnimation = keyframes`\n from {\n max-height: 0px;\n }\n to {\n max-height: 330px;\n }\n`;\n\nconst MenuDrawer = styled.div`\n width: 100%;\n max-height: 330px;\n animation: ${growAnimation} 0.3s ease-out 0s 1;\n overflow-y: auto;\n position: absolute;\n top: 0px;\n left: 0px;\n transform: translate(0, 60px);\n z-index: 1;\n background-color: inherit;\n`;\n\nconst Navbar = styled.nav`\n width: 100%;\n background-color: var(--main-bg-color);\n position: relative;\n`;\n\nconst NavbarHeader = styled.header`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 30px;\n height: 60px;\n`;\n\nconst profileSubroutes = [\n Paths.profile,\n Paths.notifications,\n Paths.personal_data,\n Paths.settings,\n Paths.login_settings,\n Paths.logout_settings,\n Paths.password_change,\n];\n\nconst HamburgerButton = (props: { onClick?: () => void }): JSX.Element => {\n return (\n \n );\n};\n\nconst MobileMenu = (): JSX.Element | null => {\n const location = useLocation();\n const history = useHistory();\n const [menuOpen, setMenuOpen] = useState(false);\n const visible = useSelector(Auth.select.selectLoggedIn);\n\n const isActive = profileSubroutes.some((r) => r === location.pathname);\n\n const menuRef = useRef(null);\n const handleOutsideClick = (): void => {\n if (menuOpen) {\n setMenuOpen(false);\n }\n };\n useOnClickOutside(menuRef, handleOutsideClick);\n\n useEffect(() => {\n if (menuOpen) {\n setMenuOpen(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location]);\n\n const handleProfileClick = (): void => {\n history.push(Paths.profile);\n };\n\n if (!visible) return null;\n\n return (\n <>\n \n \n setMenuOpen(!menuOpen)} />\n \"TradeBull\n \n \n {menuOpen ? (\n \n \n \n \n ) : null}\n \n \n );\n};\n\nexport default withErrorBoundary(MobileMenu, { fallback: Fallback });\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport React, { useState, useEffect } from 'react';\n\nconst showingInitially = (showFrom?: number, showUntil?: number): boolean => {\n const windowWidth = window.innerWidth;\n\n if (!showFrom && !showUntil) {\n return true;\n } else if (!showFrom) {\n // showUntil\n return showUntil! > windowWidth;\n } else if (!showUntil) {\n // showFrom\n return showFrom! < windowWidth;\n } else {\n // both\n return showUntil! > windowWidth && showFrom! < windowWidth;\n }\n};\n\nconst HideableComponent = (props: {\n showFrom?: number;\n showUntil?: number;\n children?: React.ReactChild;\n}): JSX.Element | null => {\n const mediaMinQuery = useState(\n props.showFrom ? window.matchMedia(`(min-width: ${props.showFrom}px)`) : null,\n )[0];\n const mediaMaxQuery = useState(\n props.showUntil ? window.matchMedia(`(max-width: ${props.showUntil}px)`) : null,\n )[0];\n const [visible, setVisible] = useState(\n showingInitially(props.showFrom, props.showUntil),\n );\n\n const mediaQueryMinChanged = (ev: MediaQueryListEvent): void => {\n setVisible(ev.matches);\n };\n\n const mediaQueryMaxChanged = (ev: MediaQueryListEvent): void => {\n setVisible(ev.matches);\n };\n\n useEffect(() => {\n mediaMinQuery?.addListener(mediaQueryMinChanged);\n mediaMaxQuery?.addListener(mediaQueryMaxChanged);\n\n return () => {\n mediaMinQuery?.removeListener(mediaQueryMinChanged);\n mediaMaxQuery?.removeListener(mediaQueryMaxChanged);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (visible) {\n return <>{props.children};\n } else {\n return null;\n }\n};\n\nexport default HideableComponent;\n","import styled, { keyframes } from 'styled-components';\n\nconst rotateAnimation = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst Spinner = styled.div`\n width: 100px;\n height: 100px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 10px 20px;\n &:before {\n content: '';\n color: white;\n height: 50px;\n width: 50px;\n background: transparent;\n border-radius: 50%;\n border: 10px solid blue;\n border-color: #353d48 #0066ff #353d48 #353d48;\n animation: ${rotateAnimation} 0.6s infinite ease-in-out;\n box-shadow: 0px 0px 77px -2px rgba(0, 102, 255, 0.6);\n }\n`;\n\nexport default Spinner;\n","import React from 'react';\nimport Spinner from '../../components/loading-indicators/spinner';\n\nconst LoadingScreen = (): JSX.Element => {\n return (\n
\n \n
\n );\n};\n\nexport default LoadingScreen;\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { IStore } from '../IStore';\n\nexport const getCurrentLocation = (state: IStore): string => state.router.location.pathname;\nexport const getCurrentLocationState = (state: IStore) => state.router.location.state;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route, RouteProps } from 'react-router-dom';\nimport Auth from '../../logic/redux/auth';\nimport { getCurrentLocation } from '../../logic/redux/router/router-selectors';\nimport { Paths } from '../../navigation/paths';\n\nconst PrivateRoute = (props: RouteProps): JSX.Element => {\n const dispatch = useDispatch();\n const loggedIn = useSelector(Auth.select.selectLoggedIn);\n const location = useSelector(getCurrentLocation);\n\n if (loggedIn) {\n return ;\n } else {\n dispatch(Auth.actions.setLoginRedirectPath(location));\n const redirect = (): JSX.Element => ;\n return ;\n }\n};\n\nexport default PrivateRoute;\n","import styled from 'styled-components';\n\nexport const ScreenContainer = styled.div`\n position: relative;\n width: 100%;\n min-height: 100%;\n padding: 32px 42px;\n @media (max-width: 1280px) {\n padding: 30px 30px;\n }\n @media (max-width: 639px) {\n padding: 20px 10px;\n }\n`;\n\nexport const BlurredContainer = styled.section`\n width: 100%;\n background: var(--blur-bg-color);\n backdrop-filter: blur(20px);\n border-radius: 2px;\n padding: 40px 50px;\n @media (max-width: 1280px) {\n padding: 20px 20px;\n }\n @media (max-width: 639px) {\n padding: 10px 10px;\n }\n`;\n\nexport const BlurredContainerM2030 = styled(BlurredContainer)`\n padding: 20px 30px;\n`;\n\nexport const BlurredContainerM3030 = styled(BlurredContainer)`\n padding: 30px 30px;\n`;\n\nexport const MattContainer = styled.section`\n background: var(--matt-bg-color);\n padding: 20px 30px;\n`;\n\nexport const MattRow = styled.div`\n background: var(--matt-bg-color);\n width: 100%;\n padding: 20px 30px;\n border-radius: 2px;\n`;\n\nexport const ImageCircleBig = styled.img`\n width: 128px;\n height: 128px;\n box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.6);\n object-fit: contain;\n border-radius: 64px;\n flex: none;\n @media (max-width: 1280px) {\n align-self: center;\n margin-bottom: 10px;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Spinner from './spinner';\n\nconst SpinnerWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst CenteredSpinner = (props: React.HTMLAttributes): JSX.Element => (\n \n \n \n);\n\nexport default CenteredSpinner;\n","import * as React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { assets } from '../../../assets';\nimport {FormattedMessage} from \"react-intl\";\n\nconst Wrapper = styled.header`\n height: 56px;\n width: 56px;\n border: 2px solid #ffffff;\n border-radius: 2px;\n background: #161616;\n margin-right: 20px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex: none;\n`;\n\nconst BackIcon = styled.img`\n width: 16px;\n height: 16px;\n object-fit: contain;\n margin-bottom: 2px;\n`;\n\nconst HeaderBackButton = (props: { url?: string; onClick?: () => void }): JSX.Element => {\n const history = useHistory();\n\n const handleOnClick = (): void => {\n if (props.url) {\n history.push(props.url);\n } else if (props.onClick) {\n props.onClick();\n }\n };\n\n return (\n \n \n
\n \n \n \n
\n
\n );\n};\n\nexport default HeaderBackButton;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { FormattedMessage } from 'react-intl';\n\nconst UpdatedAtText = styled.p`\n @media (max-width: 1280px) {\n color: var(--primary-text-color);\n }\n`;\n\nconst ScreenHeader = (props: { title: string; lastUpdate?: string }): JSX.Element => (\n
\n

{props.title}

\n {props.lastUpdate ? (\n \n {props.lastUpdate}\n \n ) : null}\n
\n);\n\nexport default ScreenHeader;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { ScreenContainer } from '../../components/containers/containers';\nimport CenteredSpinner from '../../components/loading-indicators/centered-spinner';\nimport HeaderBackButton from '../../components/ui-utils/screen-header/header-back-button';\nimport ScreenHeader from '../../components/ui-utils/screen-header/screen-header';\n\nconst StepsContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n justify-content: space-around;\n @media (min-width: 1280px) {\n width: unset;\n justify-content: unset;\n }\n`;\n\nconst StepItemContainer = styled.div`\n display: flex;\n align-items: center;\n max-width: 160px;\n flex-direction: column;\n margin-right: 0px;\n flex: 1;\n &:last-child {\n margin-right: 0px;\n }\n @media (min-width: 1280px) {\n flex-direction: row;\n margin-right: 50px;\n height: 56px;\n flex: unset;\n }\n`;\n\nconst HeaderContainer = styled.header`\n margin-bottom: 20px;\n position: relative;\n @media (min-width: 1280px) {\n margin-bottom: 30px;\n }\n`;\n\nconst StepIndexContainer = styled.div.attrs(() => ({}))<{\n color: string;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n background-color: var(--matt-bg-color);\n height: 56px;\n width: 56px;\n margin-bottom: 10px;\n border: 2px solid ${(props) => props.color};\n border-radius: 2px;\n @media (min-width: 1280px) {\n margin-right: 16px;\n margin-bottom: 0px;\n }\n`;\n\nconst StepItem = (props: {\n index: number;\n label: string;\n status: 'active' | 'next' | 'done';\n}): JSX.Element => {\n let color = 'var(--gray-text-color)';\n switch (props.status) {\n case 'done':\n color = 'var(--success-color)';\n break;\n case 'active':\n color = 'var(--primary-color)';\n break;\n case 'next':\n color = 'var(--gray-text-color)';\n break;\n }\n return (\n \n \n

{props.index}

\n
\n

{props.label}

\n
\n );\n};\n\nconst getStepStatus = (index: number, currentIndex: number): 'active' | 'next' | 'done' => {\n if (index < currentIndex) {\n return 'done';\n } else if (index > currentIndex) {\n return 'next';\n } else {\n return 'active';\n }\n};\n\nconst ImageBackground = styled.img`\n height: 150px;\n width: 100%;\n object-fit: cover;\n position: absolute;\n top: 0px;\n left: 0px;\n`;\n\nconst DefaultScreen = (props: {\n children: React.ReactNode;\n loading?: boolean;\n background: string;\n title: string;\n updatedAt?: string;\n backUrl?: string;\n onBackClick?: () => void;\n id?: string;\n steps?: string[];\n currentStep?: number;\n rightContent?: JSX.Element;\n}): JSX.Element => {\n return (\n \n \n \n
\n {props.backUrl || props.onBackClick ? (\n \n ) : null}\n \n
\n {props.rightContent}\n {props.steps ? (\n \n {props.steps.map((step: string, index: number) => (\n \n ))}\n \n ) : null}\n
\n
\n {props.loading ? : props.children}\n
\n
\n );\n};\n\nexport default DefaultScreen;\n","import React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { assets } from '../../assets';\n\nconst ErrorIcon = styled.img`\n width: 14px;\n height: 14px;\n margin-right: 4px;\n`;\n\nconst growAnimation = keyframes`\n from {\n max-height: 0px;\n }\n\n to {\n max-height: 100px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n animation: ${growAnimation} 1.5s ease-out 0s 1;\n`;\n\nconst ErrorShower = (props: {\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n bigger?: boolean;\n}): JSX.Element | null => {\n if (!props.error) {\n return null;\n }\n\n return (\n \n \n

{props.error}

\n \n );\n};\n\nexport default ErrorShower;\n","import React from 'react';\nimport Select, {\n components,\n GroupedOptionsType,\n IndicatorProps,\n OptionsType,\n ValueType,\n createFilter,\n} from 'react-select';\nimport styled from 'styled-components';\nimport ErrorShower from '../ui-utils/error-shower';\nimport {useIntl} from \"react-intl\";\n\nconst Wrapper = styled.div``;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nconst BoldSingleValue = ({ children, ...props }: any): any => {\n return (\n \n {children}\n \n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DropdownIndicatorBlack = (props: IndicatorProps): any => {\n return (\n \n \n \n \n \n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DropdownIndicatorWhite = (props: IndicatorProps): any => {\n return (\n \n \n \n \n \n );\n};\n\n// this one below fixes slow large list\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst Option = ({ children, ...props }: any): any => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onMouseMove, onMouseOver, ...rest } = props.innerProps;\n const newProps = Object.assign(props, { innerProps: rest });\n return {children};\n};\n\nconst StyledReactSelect = (props: {\n options?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n OptionsType<{ value: any; label: string }> | GroupedOptionsType<{ value: string; label: string }>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: (selectedValue: any) => void;\n className?: string;\n isMulti?: boolean;\n type?: 'blur' | 'thin-ice' | 'matt';\n searchable?: boolean;\n defaultValue?: ValueType<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n label: string;\n }>;\n disabled?: boolean;\n error?: string;\n placeholder?: string;\n bold?: boolean;\n isLoading?: boolean;\n value?: ValueType<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n label: string;\n }>;\n}): JSX.Element => {\n const intl = useIntl()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleChange = (selected: ValueType<{ value: any; label: string }>): void => {\n if (props.isMulti) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = (selected as { value: any; label: string }[])?.map((o) => o.value) as\n | string[]\n | number[];\n props.onChange(value !== undefined ? value : []);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = (selected as any)?.value;\n props.onChange(value !== undefined ? value : '');\n }\n };\n\n let typeClassName: string;\n let mattExtraClasses = '';\n\n switch (props.type) {\n case 'blur':\n typeClassName = 'react-select-container-blur';\n break;\n case 'thin-ice':\n typeClassName = 'react-select-container-light';\n break;\n default:\n typeClassName = 'react-select-container';\n mattExtraClasses = 'w-1/1 mb-3';\n }\n\n return (\n \n intl.formatMessage({ id: 'common.noOptions' })}\n classNamePrefix=\"react-select\"\n className={typeClassName}\n filterOption={createFilter({ ignoreAccents: false })}\n isLoading={props.isLoading}\n components={{\n DropdownIndicator:\n props.type === 'thin-ice' ? DropdownIndicatorBlack : DropdownIndicatorWhite,\n IndicatorSeparator: () => null,\n SingleValue: props.bold ? BoldSingleValue : components.SingleValue,\n Option,\n }}\n isDisabled={props.disabled}\n />\n \n \n );\n};\n\nexport default StyledReactSelect;\n","import moment from \"moment\";\n\nexport const formatDate = (dateString: string | undefined): string => {\n if (!dateString) {\n return '';\n }\n\n const momentLocale = moment.locale()\n if (momentLocale === 'en') {\n return moment(dateString).format('MM/DD/YYYY');\n }\n return moment(dateString).format('YYYY.MM.DD');\n\n // const date = new Date(dateString);\n //\n // const y = date.getFullYear();\n // const m = date.getMonth() + 1;\n // const d = date.getDate();\n //\n // return y + '.' + (m <= 9 ? '0' + m : m) + '.' + (d <= 9 ? '0' + d : d);\n};\n\nexport const formatDateTime = (dateString: string | undefined): string => {\n if (!dateString) {\n return '';\n }\n\n // Format usa\n const momentLocale = moment.locale()\n if (momentLocale === 'en') {\n return moment(dateString).format('MM/DD/YYYY HH:mm');\n }\n\n return moment(dateString).format('YYYY.MM.DD HH:mm');\n\n // const date = new Date(dateString);\n // const y = date.getFullYear();\n // const m = date.getMonth() + 1;\n // const d = date.getDate();\n // const h = date.getHours();\n // const min = date.getMinutes();\n //\n // return (\n // y +\n // '.' +\n // (m <= 9 ? '0' + m : m) +\n // '.' +\n // (d <= 9 ? '0' + d : d) +\n // ' ' +\n // (h <= 9 ? '0' + h : h) +\n // ':' +\n // (min <= 9 ? '0' + min : min)\n // );\n};\n","export const formatNumber = (\n num?: number | null,\n postfix?: string,\n maximumFractionDigits?: number,\n): string => {\n if (num === undefined || num === null) return '';\n return num.toLocaleString(undefined, { maximumFractionDigits }).replace(',', '.') + (postfix ? ' ' + postfix : '');\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\n\nexport const ChartContainer = styled.div`\n position: relative;\n width: 100%;\n height: 40vh;\n font-size: 12px;\n`;\n\nconst TooltipContainer = styled.div`\n background-color: #fff;\n color: #111;\n border-radius: 2px;\n text-align: center;\n padding: 2px 6px;\n font-size: 10px;\n display: flex;\n flex-direction: column;\n transform: translate(-50%, 0);\n white-space: nowrap;\n`;\n\nexport const Dot = (props: any): JSX.Element => {\n const { cx, cy } = props;\n return (\n \n \n \n \n );\n};\n\nexport const ActiveDot = (props: any): JSX.Element => {\n const { cx, cy } = props;\n return (\n \n );\n};\n\nexport const CustomTooltip = (props: any): ReactElement | null => {\n if (!props || !props.payload || !props.payload.length || !props.payload[0].value) {\n return null;\n }\n const value = props.payload[0]?.value;\n const date = props.payload[0]?.payload?.time;\n return (\n \n {formatDate(date)}\n \n {formatNumber(value)} HUF\n \n \n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { createRef, useState } from 'react';\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n Coordinate,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { GraphPoint } from '../../../../logic/graphql/types/types';\nimport { ActiveDot, ChartContainer, CustomTooltip, Dot } from './components';\nimport { calculateGraphRangeData, calculateXAxisProperties } from './helpers';\nimport { useSelector } from 'react-redux';\nimport Presentation from '../../../../logic/redux/presentation';\n\nconst MyAreaChart = (props: { data: GraphPoint[] }): JSX.Element => {\n const screenSize = useSelector(Presentation.select.selectScreenSize);\n\n const calculatedXAxisProperties = calculateXAxisProperties(screenSize, props.data.length);\n\n const [tooltipCoordinate, setTooltipCoordinate] = useState(undefined);\n const areaRef = createRef();\n const { rangeMin, rangeMax, ticks } = calculateGraphRangeData(props.data);\n\n const onChartMouseMove = (chart: any): void => {\n if (chart && chart.isTooltipActive) {\n const chartPoints = areaRef?.current?.props?.points;\n const point = (chartPoints || [])[chart.activeTooltipIndex];\n if (point && point.x && point.y && point !== tooltipCoordinate) {\n setTooltipCoordinate({ x: point.x - 0, y: point.y - 51 });\n }\n }\n };\n\n const onChartMouseLeave = (): void => {\n setTooltipCoordinate(undefined);\n };\n\n const renderChart = (): JSX.Element => {\n return (\n \n \n \n \n \n \n \n \n \n formatDate(t)}\n {...calculatedXAxisProperties}\n />\n formatNumber(Math.floor(num / 1000))}\n dx={-10}\n domain={[rangeMin, rangeMax]}\n ticks={ticks}\n axisLine={false}\n tickLine={false}\n unit={'e'}\n type=\"number\"\n width={30}\n />\n \n 32 ? false : Dot}\n activeDot={ActiveDot}\n />\n \n \n );\n };\n\n return {renderChart()};\n};\n\nexport default MyAreaChart;\n","import { GraphPoint } from './../../../../logic/graphql/types/types.d';\nimport { ScreenSize } from '../../../../styles/screen-sizes';\n\nexport const calculateGraphRangeData = (\n points: GraphPoint[],\n): { rangeMin: number; rangeMax: number; ticks: number[] } => {\n let min = Infinity;\n let max = 0;\n points.forEach((d) => {\n if (d.value < min) {\n min = d.value;\n }\n if (d.value > max) {\n max = d.value;\n }\n });\n\n const extension = (max - min) * 0.2;\n const rangeMin = min - extension;\n const rangeMax = max + extension;\n\n const ticks: number[] = [];\n ticks.push(min);\n for (let i = 1; i < 5; i++) {\n ticks.push(min + ((max - min) * i) / 5);\n }\n ticks.push(max);\n\n return { rangeMin, rangeMax, ticks };\n};\n\nexport const calculateXAxisProperties = (\n screenSize: ScreenSize,\n numberOfPoints: number,\n): {\n textAnchor?: string;\n tick?: { angle: number };\n interval?: number;\n dy?: number;\n} => {\n if (screenSize === ScreenSize.XS) {\n return {\n textAnchor: 'start',\n tick: { angle: 45 },\n interval: Math.min(numberOfPoints, Math.floor(numberOfPoints / 8)),\n };\n } else if (screenSize === ScreenSize.SM) {\n return {\n textAnchor: 'start',\n tick: { angle: 45 },\n interval: Math.min(numberOfPoints, Math.floor(numberOfPoints / 14)),\n };\n }\n\n return {\n dy: 10,\n };\n};\n","import styled from 'styled-components';\n\nexport const Percentage = styled.span.attrs(() => ({}))<{\n isPositive: boolean;\n}>`\n border-radius: 2px;\n background: ${(props) => (props.isPositive ? 'var(--success-color)' : 'var(--error-color)')};\n padding: 2px 4px;\n font-size: 10px;\n`;\n","import React from 'react';\nimport { BlurredContainerM3030 } from '../../../../components/containers/containers';\nimport MyAreaChart from '../../../../components/data-viewers/charts/area-chart/area-chart';\nimport StyledReactSelect from '../../../../components/inputs/styled-react-select';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { HistoryGraph } from '../../../../logic/graphql/types/types';\nimport { Percentage } from './components';\nimport CenteredSpinner from '../../../../components/loading-indicators/centered-spinner';\nimport styled from 'styled-components';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../../../components/utils/error-boundary';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst ValueLabel = styled.span`\n font-size: 14px;\n @media (min-width: 1280px) {\n font-size: 18px;\n }\n`;\n\nconst TitleCol = styled.div`\n @media (max-width: 1280px) {\n max-width: 160px;\n }\n`;\n\nconst History = (props: {\n data?: HistoryGraph;\n account?: string;\n onChangeInterval: (interval: number) => void;\n loading?: boolean;\n}): JSX.Element => {\n const intl = useIntl();\n if (props.loading) {\n return (\n \n \n \n );\n }\n\n return (\n \n
\n \n

\n \n

\n props.onChangeInterval(value as number)}\n placeholder={intl.formatMessage({\n id: 'dashboardPage.history.intervalSelect.placeholder',\n })}\n defaultValue={{\n value: 1,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.1' }),\n }}\n options={[\n {\n value: 1,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.1' }),\n },\n {\n value: 3,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.3' }),\n },\n {\n value: 6,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.6' }),\n },\n {\n value: 12,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.12' }),\n },\n {\n value: 0,\n label: intl.formatMessage({ id: 'dashboardPage.history.intervalSelect.options.0' }),\n },\n ]}\n type=\"thin-ice\"\n />\n
\n
\n \n {formatNumber(props.data?.value)} HUF\n \n {props.data ? (\n = 0}>\n {props.data.percent >= 0 ? '+' : ''}\n {props.data.percent}%\n \n ) : null}\n
\n
\n
\n {props.data ? : null}\n
\n
\n );\n};\n\nexport default withErrorBoundary(History, { fallback: Fallback });\n","import styled from 'styled-components';\n\nexport const InfoIcon = styled.img`\n height: 12px;\n width: 12px;\n cursor: pointer;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nexport const InfoContainer = styled.div.attrs(() => ({}))<{ visible: boolean }>`\n max-height: ${(props) => (props.visible ? '500px' : '0px')};\n opacity: ${(props) => (props.visible ? '1' : '0')};\n transition: 0.5s;\n width: 100%;\n font-size: 12px;\n margin-bottom: ${(props) => (props.visible ? '20px' : '10px')};\n overflow: hidden;\n`;\n\nexport const InfoContent = (): JSX.Element => {\n const intl = useIntl();\n return (\n <>\n \n \n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { assets } from '../../../../assets';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport {\n PortfolioFinancialInstrument,\n PortfolioFunds,\n SecurityType,\n} from '../../../../logic/graphql/types/types.d';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst DataBlock = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n padding: 0px 5px;\n`;\n\nconst HalfDataBlock = styled.div`\n flex: 0.5;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n padding: 0px 5px;\n`;\n\nconst Row = styled.div`\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n margin-bottom: 5px;\n`;\n\nconst Icon = styled.img`\n width: 40px;\n height: 40px;\n`;\n\nconst MiniIcon = styled.img`\n width: 10px;\n height: 10px;\n`;\n\nconst MobileValueWrapper = styled.header`\n display: flex;\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 2px;\n`;\n\nconst MobileValue = styled.span`\n text-align: right;\n font-weight: bold;\n`;\n\nconst MobileDataRow = (props: {\n label: string;\n value?: string | number;\n valueClassName?: string;\n}): JSX.Element => {\n return (\n \n {props.label}\n {props.value || 'n.a.'}\n \n );\n};\n\nconst MobilePercentDataRow = (props: { value: number }): JSX.Element => {\n const intl = useIntl();\n return (\n \n \n \n \n
\n \n \n {formatNumber(props.value)} %\n \n
\n
\n );\n};\n\nexport const FinancialInstrumentContent = ({\n instrument,\n}: {\n instrument: PortfolioFinancialInstrument;\n}): JSX.Element => {\n const intl = useIntl();\n return (\n <>\n
\n \n
\n \n \n {instrument.name}{' '}\n {\n instrument.type /*instrument.security_type === SecurityType.UnitOrder ? 'befektetési jegy' : 'részvény'*/\n }\n \n \n {formatNumber(instrument.count)}{' '}\n \n \n \n \n \n {formatNumber(instrument.value, 'HUF')}{' '}\n \n \n \n \n \n \n {formatNumber(instrument.investable)}{' '}\n \n {' '}\n \n \n \n \n {formatNumber(instrument.payable)}{' '}\n \n {' '}\n \n \n \n \n {formatNumber(instrument.reserved)}{' '}\n \n {' '}\n \n \n \n \n
\n \n \n \n
\n
\n \n \n {formatNumber(instrument.percent)} %\n \n
\n
\n \n \n {' '}\n \n {formatNumber(instrument.last_closing_price, instrument.security.currency.currency, 6)}\n \n \n \n {' '}\n {formatNumber(instrument.market_price, instrument.security.currency.currency, 6)}\n \n \n {' '}\n {formatNumber(instrument.exchange_rate)} HUF\n \n \n \n );\n};\n\nexport const FinancialInstrumentMobileContent = ({\n instrument,\n}: {\n instrument: PortfolioFinancialInstrument;\n}): JSX.Element => {\n const intl = useIntl();\n return (\n <>\n \n
\n \n {instrument.name}{' '}\n {\n instrument.type /*instrument.security_type === SecurityType.UnitOrder ? 'befektetési jegy' : 'részvény'*/\n }\n \n \n {formatNumber(instrument.count)}{' '}\n \n \n
\n
\n \n
\n
\n \n \n {formatNumber(instrument.value, 'HUF')}{' '}\n \n \n \n
\n \n \n \n
\n
\n \n
\n
\n \n \n \n
\n \n );\n};\n\nexport const FundsContent = ({ funds }: { funds: PortfolioFunds }): JSX.Element => {\n return (\n <>\n
\n \n
\n \n \n {funds.name}\n \n \n {' '}\n {formatNumber(funds.balance)} {funds.name}\n \n \n \n \n {formatNumber(funds.value, 'HUF')}{' '}\n \n \n \n \n \n \n {formatNumber(funds.investable)} {funds.name}\n {' '}\n \n \n \n \n {formatNumber(funds.payable)} {funds.name}\n {' '}\n \n \n \n \n {formatNumber(funds.reserved)} {funds.name}\n {' '}\n \n \n \n \n \n {' '}\n {formatNumber(funds.exchange_rate)} HUF\n \n \n \n );\n};\n\nexport const FundsMobileContent = ({ funds }: { funds: PortfolioFunds }): JSX.Element => {\n const intl = useIntl();\n return (\n <>\n \n
\n \n {funds.name}\n \n \n {' '}\n {formatNumber(funds.balance)} {funds.name}\n \n
\n
\n \n
\n
\n \n \n {formatNumber(funds.value, 'HUF')}{' '}\n \n \n \n
\n \n \n \n
\n
\n \n
\n \n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { MattRow } from '../../../../components/containers/containers';\nimport {\n Direction,\n PortfolioFinancialInstrument,\n PortfolioFundamental,\n PortfolioFunds,\n} from '../../../../logic/graphql/types/types.d';\nimport ExchangeOrders from '../../../../logic/redux/exchange-orders';\nimport { Paths } from '../../../../navigation/paths';\nimport {\n FinancialInstrumentContent,\n FinancialInstrumentMobileContent,\n FundsContent,\n FundsMobileContent,\n} from './components';\n\nconst Container = styled(MattRow)`\n display: none;\n padding: 0px 30px;\n cursor: pointer;\n height: 84px;\n width: 100%;\n background: var(--blur-bg-color);\n margin-bottom: 10px;\n flex-direction: row;\n align-items: center;\n @media (min-width: 768px) {\n display: flex;\n }\n`;\n\nconst MobileContainer = styled(MattRow)`\n flex-direction: column;\n align-items: flex-start;\n padding: 10px 10px;\n cursor: pointer;\n width: 100%;\n background: var(--blur-bg-color);\n margin-bottom: 10px;\n display: flex;\n @media (min-width: 768px) {\n display: none;\n }\n`;\n\nconst InstrumentListItem = (props: { fundamental: PortfolioFundamental }): JSX.Element => {\n const history = useHistory();\n const dispatch = useDispatch();\n const typeName = (props.fundamental as PortfolioFundamental & { __typename: string })?.__typename;\n\n const handleOnClick = (): void => {\n switch (typeName) {\n case 'PortfolioFinancialInstrument': {\n const financialInstrument = props.fundamental as PortfolioFinancialInstrument;\n if (financialInstrument.tradable_stock_exchange) {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n direction: Direction.Sell,\n security: financialInstrument.security.short_name,\n securityDetails: financialInstrument.security,\n account: financialInstrument.accounts[0]?.number,\n accountDetails: financialInstrument.accounts[0],\n }),\n );\n history.push(Paths.new_exchange_order);\n } else {\n history.push(Paths.contact);\n }\n break;\n }\n case 'PortfolioFunds': {\n const funds = props.fundamental as PortfolioFunds;\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n direction: Direction.Buy,\n account: funds.accounts[0]?.number,\n accountDetails: funds.accounts[0],\n }),\n );\n history.push(Paths.new_exchange_order);\n break;\n }\n default:\n return;\n }\n };\n\n const renderContent = (): JSX.Element | null => {\n switch (typeName) {\n case 'PortfolioFinancialInstrument':\n return (\n \n );\n case 'PortfolioFunds':\n return ;\n default:\n return null;\n }\n };\n\n const renderMobileContent = (): JSX.Element | null => {\n switch (typeName) {\n case 'PortfolioFinancialInstrument':\n return (\n \n );\n case 'PortfolioFunds':\n return ;\n default:\n return null;\n }\n };\n\n return (\n <>\n {renderContent()}\n {renderMobileContent()}\n \n );\n};\n\nexport default InstrumentListItem;\n","import React, { useState } from 'react';\nimport { assets } from '../../../../assets';\nimport { InfoIcon } from '../../../../components/ui-utils/info-icon';\nimport { PortfolioFundamental } from '../../../../logic/graphql/types/types';\nimport { InfoContainer, InfoContent } from '../components';\nimport InstrumentListItem from './instrument-list-item';\nimport CenteredSpinner from '../../../../components/loading-indicators/centered-spinner';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../../../components/utils/error-boundary';\nimport { FormattedMessage } from 'react-intl';\n\nconst InstrumentList = (props: {\n data: PortfolioFundamental[];\n loading?: boolean;\n}): JSX.Element => {\n const [isShowingInfo, setShowingInfo] = useState(false);\n\n return (\n
\n
\n

\n \n

\n setShowingInfo(!isShowingInfo)}\n />\n
\n \n \n \n {props.loading ? (\n \n ) : (\n props.data.map((f: PortfolioFundamental, index: number) => (\n \n ))\n )}\n
\n );\n};\n\nexport default withErrorBoundary(InstrumentList, { fallback: Fallback });\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport { Sector } from 'recharts';\nimport { formatNumber } from '../../../../helpers/number-formatters';\n\nconst constants = {\n TOOLTIP_TITLE_FONTSIZE: 12,\n TOOLTIP_DESCRIPTION_FONTSIZE: 10,\n TEXT_OFFSET: 12,\n START_OFFSET: 10,\n MIDDLE_OFFSET: 30,\n END_OFFSET: 15,\n OUTER_EXTRA_RADIUS: 15,\n INNER_EXTRA_RADIUS: 10,\n};\n\nconst mobileConstants = {\n TOOLTIP_TITLE_FONTSIZE: 10,\n TOOLTIP_DESCRIPTION_FONTSIZE: 8,\n TEXT_OFFSET: 8,\n START_OFFSET: 5,\n MIDDLE_OFFSET: 20,\n END_OFFSET: 8,\n OUTER_EXTRA_RADIUS: 10,\n INNER_EXTRA_RADIUS: 5,\n};\n\nexport const ActiveShape = (props: any): JSX.Element => {\n const RADIAN = Math.PI / 180;\n const {\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n fill,\n payload,\n value,\n data,\n activeIndex,\n small,\n } = props;\n const values = small ? mobileConstants : constants;\n\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n const sx = cx + (outerRadius + values.START_OFFSET) * cos;\n const sy = cy + (outerRadius + values.START_OFFSET) * sin;\n const mx = cx + (outerRadius + values.MIDDLE_OFFSET) * cos;\n const my = cy + (outerRadius + values.MIDDLE_OFFSET) * sin;\n const ex = mx + (cos >= 0 ? 1 : -1) * values.END_OFFSET;\n const ey = my;\n const textAnchor = cos >= 0 ? 'start' : 'end';\n\n const tipWidth = 7;\n const sinTip1 = Math.sin(-RADIAN * (midAngle - tipWidth));\n const cosTip1 = Math.cos(-RADIAN * (midAngle - tipWidth));\n const xTip1 = cx + (outerRadius + values.OUTER_EXTRA_RADIUS) * cosTip1;\n const yTip1 = cy + (outerRadius + values.OUTER_EXTRA_RADIUS) * sinTip1;\n\n const sinTip2 = Math.sin(-RADIAN * (midAngle + tipWidth));\n const cosTip2 = Math.cos(-RADIAN * (midAngle + tipWidth));\n const xTip2 = cx + (outerRadius + values.OUTER_EXTRA_RADIUS) * cosTip2;\n const yTip2 = cy + (outerRadius + values.OUTER_EXTRA_RADIUS) * sinTip2;\n\n const xTip3 = cx + (outerRadius + values.OUTER_EXTRA_RADIUS + 7) * cos;\n const yTip3 = cy + (outerRadius + values.OUTER_EXTRA_RADIUS + 7) * sin;\n\n return (\n \n \n {/*payload.name*/ ''}\n \n \n \n \n \n = 0 ? 1 : -1) * values.TEXT_OFFSET}\n y={ey}\n textAnchor={textAnchor}\n fontSize={values.TOOLTIP_TITLE_FONTSIZE}\n fontWeight=\"bold\"\n fill=\"var(--primary-text-color)\"\n >\n {payload.name}\n \n = 0 ? 1 : -1) * values.TEXT_OFFSET}\n y={ey}\n dy={18}\n textAnchor={textAnchor}\n fontSize={values.TOOLTIP_DESCRIPTION_FONTSIZE}\n fontWeight=\"bold\"\n fill=\"var(--primary-text-color)\"\n >\n {`${data[activeIndex].percent.toFixed(2)}%`}\n \n = 0 ? 1 : -1) * values.TEXT_OFFSET}\n y={ey}\n dy={36}\n textAnchor={textAnchor}\n fontSize={values.TOOLTIP_DESCRIPTION_FONTSIZE}\n fontWeight=\"bold\"\n fill=\"var(--gray-text-color)\"\n >\n {formatNumber(value, 'HUF')}\n \n \n );\n};\n\nexport const InnerActiveShape = (props: any): JSX.Element => {\n const RADIAN = Math.PI / 180;\n const { cx, cy, midAngle, innerRadius, outerRadius, startAngle, endAngle, fill, small } = props;\n const values = small ? mobileConstants : constants;\n\n return (\n \n \n \n );\n};\n\nconst RADIAN = Math.PI / 180;\nexport const CustomizedLabel = ({\n cx,\n cy,\n midAngle,\n outerRadius,\n index,\n activeIndex,\n data,\n fill,\n small,\n}: any): JSX.Element | null => {\n if (index === activeIndex) {\n return null;\n }\n const values = small ? mobileConstants : constants;\n\n const radius = outerRadius + values.OUTER_EXTRA_RADIUS;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n\n const tipWidth = 7;\n const sinTip1 = Math.sin(-RADIAN * (midAngle - tipWidth));\n const cosTip1 = Math.cos(-RADIAN * (midAngle - tipWidth));\n const xTip1 = cx + outerRadius * cosTip1;\n const yTip1 = cy + outerRadius * sinTip1;\n\n const sinTip2 = Math.sin(-RADIAN * (midAngle + tipWidth));\n const cosTip2 = Math.cos(-RADIAN * (midAngle + tipWidth));\n const xTip2 = cx + outerRadius * cosTip2;\n const yTip2 = cy + outerRadius * sinTip2;\n\n const xTip3 = cx + (outerRadius + 7) * cos;\n const yTip3 = cy + (outerRadius + 7) * sin;\n\n const percentage = data[index].percent;\n\n return (\n \n \n cx ? 'start' : 'end'}\n dominantBaseline=\"central\"\n fontSize={10}\n fontWeight=\"bold\"\n fill=\"var(--primary-text-color)\"\n >\n {`${percentage.toFixed(2)}%`}\n \n \n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { useState } from 'react';\nimport { Cell, Pie, PieChart, ResponsiveContainer } from 'recharts';\nimport { ActiveShape, CustomizedLabel, InnerActiveShape } from './components';\n\nconst RADII = {\n inner: '30%',\n middleOverlap: '41%',\n middle: '40%',\n outer: '70%',\n};\n\nconst SMALL_RADII = {\n inner: '20%',\n middleOverlap: '31%',\n middle: '30%',\n outer: '50%',\n};\n\nexport type DonutChartDataInput = {\n name: string;\n value: number;\n percent: number;\n}[];\n\nconst DonutChart = (props: {\n data: DonutChartDataInput;\n colors: string[];\n innerColors: string[];\n small?: boolean;\n}): JSX.Element => {\n const [activeIndex, setActiveIndex] = useState(0);\n\n const onPieEnter = (data: any, index: number): void => {\n setActiveIndex(index);\n };\n\n const radii = props.small ? SMALL_RADII : RADII;\n\n const renderChart = (): JSX.Element => {\n return (\n \n \n InnerActiveShape({ ...p, small: props.small })}\n data={props.data}\n innerRadius={radii.inner}\n outerRadius={radii.middleOverlap}\n fill=\"#8884d8\"\n dataKey=\"value\"\n onMouseEnter={onPieEnter}\n isAnimationActive={false}\n >\n {props.data.map((entry, index) => (\n \n ))}\n \n \n ActiveShape({ ...p, data: props.data, activeIndex, small: props.small })\n }\n data={props.data}\n innerRadius={radii.middle}\n outerRadius={radii.outer}\n fill=\"#8884d8\"\n dataKey=\"value\"\n onMouseEnter={onPieEnter}\n isAnimationActive={false}\n label={(p: any) =>\n CustomizedLabel({ ...p, activeIndex, data: props.data, small: props.small })\n }\n >\n {props.data.map((entry, index) => (\n \n ))}\n \n \n \n );\n };\n\n return
{renderChart()}
;\n};\n\nexport default DonutChart;\n","import styled from 'styled-components';\n\nexport const VerticalSeparator = styled.div`\n width: 0px;\n border: 1px solid #2e2e2e;\n`;\n\nexport const HorizontalSeparator = styled.div`\n height: 0.5px;\n background-color: var(--dark-text-color);\n width: 100%;\n`;\n\nexport const HorizontalSeparatorGray = styled.div`\n height: 0.5px;\n background-color: var(--gray-text-color);\n width: 100%;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { Slice } from '../../../../logic/graphql/types/types';\n\nexport const COLORS = ['#FAD28C', '#5C9A75', '#429AB2', '#98D7E9'];\nexport const INNER_COLORS = ['#EEBC64', '#3D855A', '#20829C', '#7AC4DA'];\n\nexport const ChartWrapper = styled.div`\n min-width: 400px;\n max-width: 500px;\n`;\n\nconst Container = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: center;\n font-size: 11px;\n @media (max-width: 1400px) {\n font-size: 10px;\n }\n`;\n\nconst Circle = styled.div.attrs(() => ({})) <{ color: string }>`\n width: 24px;\n height: 24px;\n border-radius: 12px;\n background: ${(props) => props.color};\n margin-right: 10px;\n flex: none;\n @media (min-width: 768px) {\n margin-right: 20px;\n }\n`;\n\nconst LabelContainer = styled.div`\n max-width: 70px;\n @media (min-width: 640px) {\n max-width: 100px;\n }\n @media (min-width: 768px) {\n max-width: unset;\n }\n @media (min-width: 1280px) {\n max-width: 100px;\n }\n`;\n\nconst PercentContainer = styled.div`\n max-width: 60px;\n @media (min-width: 640px) {\n max-width: 80px;\n }\n @media (min-width: 768px) {\n max-width: unset;\n }\n @media (min-width: 1280px) {\n max-width: 60px;\n }\n`;\n\nexport const Legend = (props: { sumPortfolioSlices?: Slice[] }): JSX.Element => {\n return (\n \n {props.sumPortfolioSlices?.map((s: Slice, index: number) => (\n
\n \n \n \n {s.name}\n \n \n \n \n {s.percent}%\n \n \n
\n {formatNumber(s.value, 'HUF')}\n
\n
\n ))}\n
\n );\n};\n","import React from 'react';\nimport { BlurredContainerM3030 } from '../../../../components/containers/containers';\nimport DonutChart from '../../../../components/data-viewers/charts/donut-chart/donut-chart';\nimport { HorizontalSeparator, VerticalSeparator } from '../../../../components/ui-utils/separators';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { Slice } from '../../../../logic/graphql/types/types';\nimport { ChartWrapper, COLORS, INNER_COLORS, Legend } from './components';\nimport CenteredSpinner from '../../../../components/loading-indicators/centered-spinner';\nimport { useSelector } from 'react-redux';\nimport Presentation from '../../../../logic/redux/presentation';\nimport { ScreenSize } from '../../../../styles/screen-sizes';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../../../components/utils/error-boundary';\nimport styled from 'styled-components';\nimport { FormattedMessage } from 'react-intl';\n\nconst FlexContainer = styled.div`\n flex-direction: row;\n @media (max-width: 1400px) {\n flex-direction: column;\n }\n`;\n\nconst SumPortfolio = (props: {\n sumPortfolioSlices?: Slice[];\n sum?: number;\n loading?: boolean;\n}): JSX.Element => {\n const screenSize = useSelector(Presentation.select.selectScreenSize);\n const isMobile = screenSize === ScreenSize.XS;\n\n if (props.loading) {\n return (\n \n \n \n );\n }\n return (\n \n
\n

\n \n

\n
\n \n {formatNumber(props.sum)} HUF\n \n \n \n \n
\n
\n \n
\n \n {props.sumPortfolioSlices ? (\n s.value > 0)}\n colors={COLORS}\n innerColors={INNER_COLORS}\n small={isMobile}\n />\n ) : null}\n \n
\n
\n
\n );\n};\n\nexport default withErrorBoundary(SumPortfolio, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { Redirect, useLocation } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport StyledReactSelect from '../../components/inputs/styled-react-select';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n Account,\n HistoryGraph,\n Portfolio,\n PortfolioFundamental,\n Query,\n Subscription,\n} from '../../logic/graphql/types/types';\nimport { Paths } from '../../navigation/paths';\nimport History from './components/history/history';\nimport InstrumentList from './components/instrument-list/instrument-list';\nimport SumPortfolio from './components/sum-portfolio/sum-portfolio';\nimport { useIntl } from 'react-intl';\n\nconst Dashboard = (): JSX.Element => {\n const location = useLocation();\n const intl = useIntl();\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [sumPortfolio, setSumPortfolio] = useState(undefined);\n const [portfolioHistoryGraph, setPortfolioHistoryGraph] = useState(\n undefined,\n );\n const [portfolioFundamentals, setPortfolioFundamentals] = useState<\n PortfolioFundamental[] | undefined\n >(undefined);\n const [historyInterval, setHistoryInterval] = useState(1);\n\n // MARK: - Queries\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const sumPortfolioQueryResult = useQuery({\n query: GraphqlOperations.queries.sum_portfolio.queryString,\n requestPolicy: 'cache-and-network',\n })[0];\n\n const [portfolioHistoryGraphQueryResult, reexecutePortfolioHistoryGraphQuery] = useQuery({\n query: GraphqlOperations.queries.portfolio_history_graph.queryString,\n variables: GraphqlOperations.queries.portfolio_history_graph.createVars(\n selectedAccount,\n historyInterval,\n ),\n requestPolicy: 'network-only',\n });\n\n const [portfolioFundamentalsQueryResult, reexecutePortfolioFundamentalsQuery] = useQuery({\n query: GraphqlOperations.queries.portfolio_fundamentals.queryString,\n variables: GraphqlOperations.queries.portfolio_fundamentals.createVars(selectedAccount),\n requestPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (sumPortfolioQueryResult.data?.sum_portfolio) {\n setSumPortfolio(sumPortfolioQueryResult.data?.sum_portfolio);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sumPortfolioQueryResult.data]);\n\n useEffect(() => {\n if (portfolioHistoryGraphQueryResult.data?.portfolio_history_graph) {\n setPortfolioHistoryGraph(portfolioHistoryGraphQueryResult.data?.portfolio_history_graph);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [portfolioHistoryGraphQueryResult.data]);\n\n useEffect(() => {\n if (portfolioFundamentalsQueryResult.data?.portfolio_fundamentals) {\n setPortfolioFundamentals(portfolioFundamentalsQueryResult.data?.portfolio_fundamentals);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [portfolioFundamentalsQueryResult.data]);\n\n // MARK: - Subscriptions\n\n const handleSumPortfolioSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _subscriptionPortfolios: Portfolio[] = [],\n response: Subscription,\n ): Portfolio[] => {\n if (response && response.sum_portfolio) {\n setSumPortfolio(response.sum_portfolio);\n // refetch portfolio history & fundamentals data\n reexecutePortfolioFundamentalsQuery();\n reexecutePortfolioHistoryGraphQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.sum_portfolio.subscriptionString,\n },\n handleSumPortfolioSubscription,\n );\n\n // handling unknown pathnames ~ 404 error\n if (location.pathname !== Paths.dashboard) {\n return ;\n }\n\n return (\n \n \n
\n ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || []),\n ]}\n defaultValue={{\n value: '',\n label: intl.formatMessage({ id: 'dashboardPage.accountSelect.all' }),\n }}\n bold\n onChange={(value) => setSelectedAccount(value as string)}\n />\n setHistoryInterval(i)}\n loading={portfolioHistoryGraphQueryResult.fetching && !portfolioHistoryGraph}\n />\n \n
\n \n );\n};\n\nexport default withErrorBoundary(Dashboard, { fallback: Fallback });\n","import React, { ReactNode, useState } from 'react';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--primary-text-color);\n font-size: 12px;\n`;\n\nconst Checkbox = styled.div.attrs(() => ({}))<{ checked: boolean; inactive: boolean }>`\n height: 24px;\n width: 24px;\n margin-right: 8px;\n background: ${(props) => (props.checked ? 'var(--primary-color)' : 'var(--primary-text-color)')};\n border-radius: 2px;\n border: 2px solid var(--primary-color);\n display: flex;\n opacity: ${(props) => (props.inactive ? '0.5' : '1')};\n align-items: center;\n justify-content: center;\n cursor: ${(props) => (props.inactive ? 'not-allowed' : 'pointer')};\n flex: none;\n`;\n\nconst CheckIcon = styled.img`\n width: 12px;\n height: 12px;\n object-fit: contain;\n`;\n\nconst StyledCheckbox = (props: {\n onChange: (checked: boolean) => void;\n checked: boolean;\n inactive?: boolean;\n children?: ReactNode;\n}): JSX.Element => {\n const [value, setValue] = useState(props.checked || false);\n\n const handleChange = (event: React.MouseEvent): void => {\n event.stopPropagation();\n if (!props.inactive) {\n props.onChange(!value);\n setValue(!value);\n }\n };\n\n return (\n \n \n {value && }\n \n
{props.children}
\n
\n );\n};\n\nexport default StyledCheckbox;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport ErrorShower from '../ui-utils/error-shower';\n\nconst Wrapper = styled.div`\n width: 100%;\n overflow: visible;\n margin-bottom: 16px;\n position: relative;\n max-width: 360px;\n &:focus-within::after {\n content: '';\n position: absolute;\n top: 0px;\n height: 56px;\n left: 0px;\n width: 2px;\n background: var(--primary-color);\n box-shadow: 0px 0px 10px rgba(0, 102, 255, 0.35);\n border-radius: 2px 0px 0px 2px;\n }\n`;\n\nconst Input = styled.input.attrs(() => ({})) <{ paddingTop: string; blurred: boolean }>`\n width: 100%;\n height: 56px;\n background: ${(props) => (props.blurred ? 'rgba(255, 255, 255, 0.1)' : 'var(--matt-bg-color)')};\n backdrop-filter: ${(props) => (props.blurred ? 'blur(20px)' : 'initial')};\n border-radius: 2px;\n color: var(--primary-text-color);\n font-size: 12px;\n font-weight: bold;\n font-feature-settings: 'ordn' on;\n padding-left: 16px;\n padding-top: ${(props) => props.paddingTop};\n &:focus {\n box-shadow: 0px 0px 30px 10px rgba(0, 102, 255, 0.1);\n background: ${(props) => (props.blurred ? '#313946' : 'var(--matt-bg-color)')};\n border-width: 0px;\n outline: unset;\n }\n &:disabled {\n color: var(--gray-text-color);\n background: var(--matt-bg-color);\n backdrop-filter: unset;\n cursor: not-allowed;\n }\n`;\n\nconst Placeholder = styled.span.attrs((props: { top: string; fontSize: string }) => ({\n top: props.top,\n fontSize: props.fontSize,\n}))`\n position: absolute;\n left: 16px;\n top: ${(props) => props.top};\n color: var(--gray-text-color);\n font-weight: 500;\n font-size: ${(props) => props.fontSize};\n font-feature-settings: 'ordn' on;\n transition: 0.2s;\n pointer-events: none;\n`;\n\nconst StyledInput = (props: {\n onChange?: (event: React.ChangeEvent) => void;\n onEnterPress?: () => void;\n placeholder?: string;\n type?: 'text' | 'password' | 'email' | 'number' | 'tel';\n id?: string;\n error?: string;\n value?: string;\n disabled?: boolean;\n blurred?: boolean;\n style?: React.CSSProperties;\n min?: number;\n step?: number | string;\n autoComplete?: 'on' | 'off' | 'current-password' | 'new-password' | 'username' | 'one-time-code';\n inputMode?: 'numeric' | 'decimal';\n autoFocus?: boolean;\n uncontrolled?: boolean;\n}): JSX.Element => {\n const [value, setValue] = useState(props.value || '');\n\n const handleChange = (event: React.ChangeEvent): void => {\n // decimal point numbers behave wierd on different browsers, '.', '123.' fires onchange with ''\n if (props.type !== 'number' || !props.uncontrolled || (props.uncontrolled && event.currentTarget.value)) {\n setValue(event.currentTarget.value);\n }\n if (props.onChange) {\n props.onChange(event);\n }\n };\n\n const handleKeyPress = (event: React.KeyboardEvent): void => {\n if (event.key === 'Enter') {\n if (props.onEnterPress) {\n props.onEnterPress();\n }\n event.preventDefault();\n }\n };\n\n return (\n \n \n \n {props.placeholder}\n \n \n \n );\n};\n\nexport default StyledInput;\n","import { Cookies } from 'react-cookie';\n\nexport const ACCEPTED_COOKIES_KEY = 'DNET_ACCEPTED_COOKIES';\n\nconst cookies = new Cookies();\nexport const CookieDAO = cookies;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport Button from '../../components/buttons/button';\nimport { ACCEPTED_COOKIES_KEY, CookieDAO } from '../../logic/cookies/cookie-dao';\nimport { FormattedMessage } from 'react-intl';\n\nconst CookieBarContainer = styled.div`\n position: absolute;\n left: 0px;\n right: 0px;\n bottom: 0px;\n padding: 20px 40px;\n background-color var(--matt-lighter-bg-color);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst CookieBar = (): JSX.Element | null => {\n const [isShowing, setIsShowing] = useState(!CookieDAO.get(ACCEPTED_COOKIES_KEY));\n\n const handleAcceptCookies = (): void => {\n CookieDAO.set(ACCEPTED_COOKIES_KEY, true);\n setIsShowing(false);\n };\n\n const handleLinkClick = (): void => {\n window.open('https://ertektar.hu/adatvedelmi-tajekoztato-a-weboldalhoz/', '_blank');\n };\n\n if (!isShowing) {\n return null;\n }\n\n return (\n \n

\n \n \n \n \n \n \n \n

\n \n
\n );\n};\n\nexport default CookieBar;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\nimport Presentation from '../../logic/redux/presentation';\nimport Button from '../buttons/button';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport TermsOfUseModalContent from './terms-of-use';\n\nconst Wrapper = styled.div`\n width: 100%;\n`;\n\nconst WrapperHorizontal = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst InfoText = styled.div`\n font-size: 10px;\n line-height: 12px;\n letter-spacing: -0.01em;\n color: #767676;\n`;\n\nconst KonstruktorIcon = styled.img`\n height: 16px;\n`;\n\nconst LegalLink = styled.span`\n font-size: 8px;\n line-height: 12px;\n letter-spacing: -0.01em;\n color: #767676;\n margin-right: 20px;\n text-decoration-line: underline;\n cursor: pointer;\n flex-wrap: nowrap;\n &:last-child {\n margin-right: 0px;\n }\n`;\n\nconst ImpressumModalContent = (): JSX.Element => {\n const dispatch = useDispatch();\n const intl = useIntl();\n\n const handleOkClick = (): void => {\n dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n return (\n
\n

\n \n

\n
\n

\n \n \n \n

\n

\n CODEX Értéktár Zrt.\n

\n

\n 2092 Budakeszi, Szüret utca\n 5.\n

\n

\n +36 23 885 430\n

\n

\n 13 10 041615{' '}\n

\n

\n 11033223-2-13\n

\n
\n
\n

\n \n \n \n

\n

\n \n

\n \n \n
\n\n \n
\n );\n};\n\nconst LegalInformation = (): JSX.Element => {\n const dispatch = useDispatch();\n\n const handleImpressumClick = (): void => {\n dispatch(Presentation.actions.setShowModal());\n };\n\n return (\n \n \n © {new Date().getFullYear()} CODEX Értéktár Zrt. -{' '}\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default LegalInformation;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n//import styled from 'styled-components';\n//import { assets } from '../../assets';\nimport Presentation from '../../logic/redux/presentation';\nimport Button from '../buttons/button';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Document, pdfjs, Page } from 'react-pdf';\nimport config from '../../../config';\nimport './terms-of-use.css';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\n//import { accept_terms_of_use } from '../../logic/graphql/generated-operations/mutations/accept_terms_of_use';\nimport { useMutation } from 'urql';\nimport Auth from '../../logic/redux/auth';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nconst TermsOfUseModalContent = (props: { id: number; onClose: () => void }): JSX.Element => {\n const dispatch = useDispatch();\n const intl = useIntl();\n const [numPages, setNumPages] = useState();\n const [eventListener, setEventListener] = useState(false);\n const authToken = useSelector(Auth.select.selectAuthToken);\n //const [pageNumber, setPageNumber] = useState(1);\n const [scroll, setScroll] = useState<{\n offsetHeight: number;\n scrollHeight: number;\n scrollTop: number;\n }>({ offsetHeight: 0, scrollHeight: 1, scrollTop: 0 });\n let pdf: HTMLDivElement | null = null;\n\n const acceptTermsOfUse = useMutation(\n GraphqlOperations.mutations.accept_terms_of_use.mutationString,\n )[1];\n\n const handleOkClick = (): void => {\n const variables = GraphqlOperations.mutations.accept_terms_of_use.createVars(props.id);\n acceptTermsOfUse(variables)\n .then((result) => {\n if (result && !result.error) {\n dispatch(Auth.actions.setAuthTokenAcceptTerms());\n dispatch(Presentation.actions.setShowModal(undefined));\n if (!authToken?.need_password_update) {\n dispatch(Auth.actions.setUserLoggedIn());\n }\n\n /*addToast(intl.formatMessage({ id: 'loginPage.toastMessages.changePasswordSuccess' }), {\n appearance: 'success',\n autoDismiss: true,\n });*/\n }\n return true;\n })\n .catch((err) => console.log(err));\n //dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n useEffect(\n () => () => {\n if (pdf) {\n pdf.removeEventListener('scroll', handleScroll);\n }\n },\n [],\n );\n\n /*const handleCancelClick = (): void => {\n dispatch(Presentation.actions.setShowModal(undefined));\n };*/\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {\n //setNumPages(numPages);\n const pages = [];\n for (let i = 0; i < numPages; i++) {\n const item = i + 1;\n pages.push(item);\n }\n setNumPages(pages);\n console.log(pages);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const handleScroll = (ev: any) => {\n console.log(ev.target.offsetHeight, ev.target.scrollHeight, ev.target.scrollTop);\n setScroll({\n offsetHeight: ev.target.offsetHeight,\n scrollHeight: ev.target.scrollHeight,\n scrollTop: ev.target.scrollTop,\n });\n };\n\n const inputRef = (e: HTMLDivElement): void => {\n pdf = e;\n if (pdf && !eventListener) {\n setEventListener(true);\n pdf.addEventListener('scroll', handleScroll);\n }\n };\n\n return (\n
\n

\n \n

\n
\n {\n \n {numPages &&\n numPages.map((value, index) => {\n return ;\n })}\n \n }\n {/*

\n \n \n \n

*/}\n
\n {/*
\n

\n \n \n \n

\n
*/}\n
\n \n \n \n \n
\n
\n );\n};\n\nexport default TermsOfUseModalContent;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport StyledCheckbox from '../../components/inputs/styled-checkbox';\nimport StyledInput from '../../components/inputs/styled-input';\nimport CookieBar from '../../components/ui-utils/cookie-bar';\nimport LegalInformation from '../../components/ui-utils/legal-information';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { ACCEPTED_COOKIES_KEY, CookieDAO } from '../../logic/cookies/cookie-dao';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport Auth from '../../logic/redux/auth';\nimport Presentation from '../../logic/redux/presentation';\nimport { Paths } from '../../navigation/paths';\nimport config from '../../../config';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport TermsOfUseModalContent from '../../components/ui-utils/terms-of-use';\nimport { useHistory } from 'react-router-dom';\n\nconst UnableToLoginModalContent = (): JSX.Element => {\n const dispatch = useDispatch();\n\n const handleOkClick = (): void => {\n dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n return (\n
\n

\n \n

\n

\n \n

\n

\n \n \n \n

\n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
\n \n
\n );\n};\n\nconst Login = (): JSX.Element => {\n const history = useHistory();\n // MARK: - Resources\n const intl = useIntl();\n const dispatch = useDispatch();\n const { addToast } = useToasts();\n const firstToken = useSelector(Auth.select.selectFirstToken);\n const authToken = useSelector(Auth.select.selectAuthToken);\n const finishedConfirmation = useSelector(Auth.select.selectFinishedConfirmation);\n const loggedIn = useSelector(Auth.select.selectLoggedIn);\n const loginErrors = useSelector(Auth.select.selectLoginErrors);\n const redirectPath = useSelector(Auth.select.selectLoginRedirectPath);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [secondPassword, setSecondPassword] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [newPasswordConfirmation, setNewPasswordConfirmation] = useState('');\n const changePassword = useMutation(\n GraphqlOperations.mutations.update_user_password.mutationString,\n )[1];\n const [newPasswordError, setNewPasswordError] = useState('');\n const [newPasswordConfirmationError, setNewPasswordConfirmationError] = useState('');\n const [shouldValidateNewPassword, setShouldValidateNewPassword] = useState(false);\n const [acceptedPrivacyPolicy, setAcceptedPrivacyPolicy] = useState(false);\n\n const handleLanguageSelect = (language: string): void => {\n dispatch(Auth.actions.setLanguage(language));\n };\n\n const language = useSelector(Auth.select.selectLanguage) ?? 'hu';\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n return () => {\n dispatch(Auth.actions.setLoginRedirectPath(undefined));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (shouldValidateNewPassword) {\n if (newPassword.length < 8) {\n setNewPasswordError(intl.formatMessage({ id: 'loginPage.errors.passwordLength' }));\n } else if (newPassword === password) {\n setNewPasswordError(intl.formatMessage({ id: 'loginPage.errors.samePassword' }));\n } else {\n setNewPasswordError('');\n }\n\n if (newPassword !== newPasswordConfirmation) {\n setNewPasswordConfirmationError(\n intl.formatMessage({ id: 'loginPage.errors.passwordsNotMatch' }),\n );\n } else {\n setNewPasswordConfirmationError('');\n }\n }\n }, [intl, password, newPassword, newPasswordConfirmation, shouldValidateNewPassword]);\n\n // MARK: - Helper methods\n\n const areNewPasswordFieldsValid = (): boolean => {\n return (\n newPassword.length > 7 && newPassword !== password && newPassword === newPasswordConfirmation\n );\n };\n\n // MARK: - Event handlers\n const handleLoginFirstClick = (): void => {\n const acceptedCookies = CookieDAO.get(ACCEPTED_COOKIES_KEY);\n if (acceptedCookies) {\n if (acceptedPrivacyPolicy) {\n dispatch(Auth.actions.doLoginFirst(email, password));\n }\n } else {\n addToast(intl.formatMessage({ id: 'loginPage.toastMessages.acceptCookies' }), {\n appearance: 'error',\n autoDismiss: false,\n });\n }\n };\n\n const handleLoginSecondClick = (): void => {\n dispatch(Auth.actions.doLoginSecond(secondPassword));\n };\n\n const handleSetNewPasswordClick = (): void => {\n if (areNewPasswordFieldsValid()) {\n const variables = GraphqlOperations.mutations.update_user_password.createVars(\n password,\n newPassword,\n );\n changePassword(variables)\n .then((result) => {\n if (result && !result.error) {\n dispatch(Auth.actions.setUserLoggedIn());\n addToast(intl.formatMessage({ id: 'loginPage.toastMessages.changePasswordSuccess' }), {\n appearance: 'success',\n autoDismiss: true,\n });\n }\n return true;\n })\n .catch((err) => console.log(err));\n } else {\n setShouldValidateNewPassword(true);\n }\n };\n\n const handleEmailChange = (event: React.ChangeEvent): void => {\n setEmail(event.currentTarget.value);\n };\n\n const handlePasswordChange = (event: React.ChangeEvent): void => {\n setPassword(event.currentTarget.value);\n };\n\n const handleSecondPasswordChange = (event: React.ChangeEvent): void => {\n setSecondPassword(event.currentTarget.value);\n };\n\n const handleNewPasswordChange = (event: React.ChangeEvent): void => {\n setNewPassword(event.currentTarget.value);\n };\n\n const handleNewPasswordConfirmationChange = (\n event: React.ChangeEvent,\n ): void => {\n setNewPasswordConfirmation(event.currentTarget.value);\n };\n\n const handleHelpClick = (): void => {\n dispatch(Presentation.actions.setShowModal());\n };\n\n // MARK: - Misc\n if (loggedIn && redirectPath) {\n return ;\n } else if (loggedIn) {\n return ;\n }\n\n // MARK: - UI Functions\n\n const firstLoginStepContent = (\n <>\n

\n \n

\n \n \n \n \n \n \n handleLanguageSelect(language === 'hu' ? 'en' : 'hu')}\n >\n \n \n\n {\n setAcceptedPrivacyPolicy(!acceptedPrivacyPolicy);\n }}\n checked={acceptedPrivacyPolicy}\n >\n \n : \n \n \n \n \n \n );\n\n const secondLoginStepContent = (\n <>\n

\n \n

\n\n

\n \n

\n \n \n \n \n
\n dispatch(Auth.actions.setFirstToken(undefined))}\n secondary\n >\n \n \n \n
\n \n );\n\n const passwordChangeStepContent = (\n <>\n

\n \n

\n

\n \n

\n \n \n \n \n \n );\n\n const termsOfUseStepContent = (\n <>\n /*\n Ok\n ,\n ]}\n >\n {\n \n {this.state.numPages.map((value, index) => {\n return ;\n })}\n \n }\n\n {this.state.file !== '' ||\n this.state.scroll.scrollTop + this.state.scroll.offsetHeight <\n this.state.scroll.scrollHeight ? null : this.props.type === 'inet' ? (\n \n Az MMSZ munkavállalóira vonatkozó adatvédelmi tájékoztatóban foglaltakat elolvastam,\n megértettem és tudomásul vettem.\n \n ) : (\n \n A konzorciumi partnerek munkavállalóira vonatkozó adatvédelmi tájékoztatóban foglaltakat\n elolvastam, megértettem és tudomásul vettem.\n \n )}\n */\n );\n\n const renderCurrentStepContent = (): JSX.Element => {\n console.error(authToken?.terms_of_use);\n if (!firstToken) {\n return firstLoginStepContent;\n } else if (\n authToken?.terms_of_use !== undefined &&\n authToken?.terms_of_use !== null &&\n finishedConfirmation\n ) {\n dispatch(\n Presentation.actions.setShowModal(\n {\n dispatch(Auth.actions.setFirstToken(undefined));\n dispatch(Auth.actions.setAuthToken(undefined));\n dispatch(Presentation.actions.setShowModal(undefined));\n history.push(Paths.dashboard);\n }}\n />,\n () => {\n dispatch(Auth.actions.setFirstToken(undefined));\n dispatch(Auth.actions.setAuthToken(undefined));\n dispatch(Presentation.actions.setShowModal(undefined));\n history.push(Paths.dashboard);\n },\n ),\n );\n return termsOfUseStepContent;\n } else if (authToken?.need_password_update && finishedConfirmation) {\n return passwordChangeStepContent;\n } else {\n return secondLoginStepContent;\n }\n };\n\n return (\n <>\n
\n
\n
\n
\n
\n
\n
\n \n

\n {config.version}\n

\n
\n\n {renderCurrentStepContent()}\n
\n \n
\n
\n \n \n );\n};\n\nexport default withErrorBoundary(Login, { fallback: Fallback });\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useQuery } from 'urql';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport { Query } from '../../../logic/graphql/types/types';\nimport Auth from '../../../logic/redux/auth';\nimport { Paths } from '../../../navigation/paths';\nimport ProfileCircle from './components/profile-circle';\nimport './profile-menu.css';\nimport {FormattedMessage} from \"react-intl\";\n\nconst subroutes = [\n Paths.profile,\n Paths.notifications,\n Paths.personal_data,\n Paths.settings,\n Paths.login_settings,\n Paths.logout_settings,\n Paths.password_change,\n];\n\nconst ProfileMenu = (): JSX.Element => {\n const location = useLocation();\n const history = useHistory();\n const dispatch = useDispatch();\n\n const result = useQuery({\n query: GraphqlOperations.queries.getUserName.queryString,\n })[0];\n\n const { data } = result;\n\n const user = data?.getUser;\n\n const isActive = subroutes.some((r) => r === location.pathname);\n\n const handleItemClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n history.push(Paths.profile);\n };\n\n const handleLogoutClick = (event: React.MouseEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n dispatch(Auth.actions.doLogout());\n };\n\n return (\n
\n
\n
\n \n
\n
{user && user.name}
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default ProfileMenu;\n","import * as React from 'react';\nimport { assets } from '../../../assets';\nimport LegalInformation from '../../ui-utils/legal-information';\nimport CustomMenu from './custom-menu';\nimport ProfileMenu from './profile-menu';\nimport ErrorBoundary from '../../utils/error-boundary';\nimport config from '../../../../config';\n\nconst MenuSidebar = (): JSX.Element => (\n
\n \n \n
\n \n
\n \"TradeBull\n

\n {config.version}\n

\n
\n\n
\n \n
\n
\n
\n
\n);\n\nexport default MenuSidebar;\n","import { assets } from '../../assets';\nimport { Direction } from '../../logic/graphql/types/types.d';\n\nexport const getDirectionText = (direction?: Direction | null) => {\n switch (direction) {\n case Direction.Buy:\n return 'buy';\n case Direction.Sell:\n return 'sell';\n default:\n return 'notification';\n }\n};\n\nexport const getDirectionIcon = (direction?: Direction | null) => {\n switch (direction) {\n case Direction.Buy:\n return assets.icons.notification_buy;\n case Direction.Sell:\n return assets.icons.notification_sell;\n default:\n return assets.icons.notification;\n }\n};\n","import React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { assets } from '../../../assets';\nimport { MattRow } from '../../../components/containers/containers';\nimport { HorizontalSeparator } from '../../../components/ui-utils/separators';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport { Notification } from '../../../logic/graphql/types/types';\nimport { getDirectionIcon, getDirectionText } from '../../utils/direction-utils';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst growAnimation = keyframes`\n from {\n max-height: 0px;\n }\n\n to {\n max-height: 300px;\n }\n`;\n\nconst borderAnimation = keyframes`\n 0% {\n border: 1px solid var(--primary-text-color);\n }\n\n 80% {\n border: 1px solid var(--primary-text-color);\n }\n\n 100% {\n border: 1px solid var(--matt-bg-color);\n }\n`;\n\nconst newLabelAnimation = keyframes`\n0% {\n opacity: 1;\n}\n\n80% {\n opacity: 1;\n}\n\n100% {\n opacity: 0;\n}\n`;\n\nconst NotificationCardWrapper = styled(MattRow).attrs(() => ({}))<{\n animated: boolean;\n}>`\n margin-bottom: 20px;\n padding: 10px 14px;\n width: 200px;\n border: 1px solid var(--matt-bg-color);\n animation: ${growAnimation}\n ${(props) => (props.animated ? `1s ease-out 0s 1` : '0s ease-out 0s 1')},\n ${borderAnimation} ${(props) => (props.animated ? `4s linear 0s 1` : '0s linear 0s 1')};\n overflow: hidden;\n &:last-of-type {\n margin-bottom: 0px;\n }\n`;\n\nconst ClockIcon = styled.img`\n width: 15px;\n height: 15px;\n margin-right: 4px;\n`;\n\nconst DirectionIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-right: 4px;\n`;\n\nconst NewLabel = styled.span.attrs(() => ({}))<{\n animated: boolean;\n}>`\n background-color: var(--success-color);\n border-radius: 2px;\n padding: 2px 4px;\n opacity: 0;\n animation: ${newLabelAnimation}\n ${(props) => (props.animated ? `4s linear 0s 1` : '0s linear 0s 1')};\n`;\n\nconst NotificationListItem = (props: {\n notification: Notification;\n new?: boolean;\n style?: React.CSSProperties | undefined;\n}): JSX.Element => {\n const intl = useIntl();\n return (\n \n
\n
\n \n \n {intl.formatMessage({\n id: `notification.type.${getDirectionText(props.notification.direction)}`,\n })}\n \n
\n
\n \n\n

{props.notification.text}

\n \n\n
\n
\n \n {formatDateTime(props.notification.time)}\n
\n {props.new && (\n \n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default NotificationListItem;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useQuery, useSubscription } from 'urql';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport { Notification, Query, Subscription } from '../../../logic/graphql/types/types';\nimport NotificationListItem from './notification-list-item';\n\nconst ListContainer = styled.div`\n margin: 0px 8px 0px 8px;\n height: calc(100% - 66px);\n overflow-y: auto;\n scroll-margin-right: 8px;\n`;\n\nconst List = styled.ul`\n padding: 0px 12px 0px 12px;\n display: flex;\n flex-direction: column;\n`;\n\nconst NotificationsList = (): JSX.Element => {\n const [notifications, setNotifications] = useState([]);\n const [subscriptionNotifications, setSubsciptionNotifications] = useState([]);\n const result = useQuery({\n query: GraphqlOperations.queries.get_notifications.queryString,\n variables: GraphqlOperations.queries.get_notifications.createVars(1, 15),\n requestPolicy: 'network-only',\n })[0];\n const { data } = result;\n\n useEffect(() => {\n if (data?.get_notifications?.notifications) {\n setNotifications([...notifications, ...data.get_notifications.notifications]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n const handleSubscription = (\n subscriptionNotifs: Notification[] = [],\n response: Subscription,\n ): Notification[] => {\n if (response && response.new_notification) {\n setSubsciptionNotifications([response.new_notification, ...subscriptionNotifications]);\n return [response.new_notification, ...subscriptionNotifs];\n }\n return subscriptionNotifs;\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_notification.subscriptionString,\n },\n handleSubscription,\n );\n\n const handleAutoReadSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoReads: boolean[] = [],\n response: Subscription,\n ): boolean[] => {\n if (response && response.auto_read_notification !== undefined) {\n return [];\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.auto_read_notification.subscriptionString,\n },\n handleAutoReadSubscription,\n );\n\n return (\n \n \n {subscriptionNotifications.map((n) => (\n \n ))}\n {notifications.map((n) => (\n \n ))}\n \n \n );\n};\n\nexport default NotificationsList;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { Paths } from '../../../navigation/paths';\nimport ErrorBoundary from '../../utils/error-boundary';\nimport NotificationsList from './notification-list';\nimport { FormattedMessage } from 'react-intl';\n\nconst SidebarRight = styled.div`\n flex: none;\n height: 100%;\n width: 240px;\n overflow-x: visible;\n overflow-y: auto;\n background-color: var(--matt-darker-bg-color);\n`;\n\nconst Header = styled.header`\n padding: 20px 20px 10px 20px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst NotificationsSidebar = (): JSX.Element => {\n const history = useHistory();\n\n const handleAllNotificationClick = (): void => {\n history.push(Paths.notifications);\n };\n\n return (\n \n \n
\n \n \n \n \n \n \n \n \n
\n \n
\n
\n );\n};\n\nexport default NotificationsSidebar;\n","import { useEffect, useRef } from 'react';\n\nconst useInterval = (callback: () => void, delay: number): void => {\n const savedCallback = useRef<() => void>(callback);\n\n // remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // set up the interval.\n useEffect(() => {\n const tick = (): void => {\n if (savedCallback) {\n savedCallback.current();\n }\n };\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n};\n\nexport default useInterval;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport useInterval from '../../helpers/use-interval';\nimport Auth from '../../logic/redux/auth';\nimport Button from '../buttons/button';\nimport Presentation from '../../logic/redux/presentation';\nimport { FormattedMessage } from 'react-intl';\n\nconst TimeoutModalContent = (): JSX.Element => {\n const dispatch = useDispatch();\n const remainingSecs = useSelector(Auth.select.selectRemainingTime);\n\n const handleContinueClick = (): void => {\n dispatch(Auth.actions.doPostponeTimeout());\n dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n return (\n
\n

\n {Math.floor(remainingSecs || 0)}{' '}\n \n

\n

\n \n

\n \n
\n );\n};\n\nconst Timeout = (): null => {\n const dispatch = useDispatch();\n const authToken = useSelector(Auth.select.selectAuthToken);\n const timeoutTimestamp = useSelector(Auth.select.selectTimeoutTimestamp);\n\n const refreshRemainingTime = (): void => {\n if (authToken && authToken.expiry && timeoutTimestamp) {\n const remainingSecs =\n (timeoutTimestamp.getTime() + authToken.expiry * 60000 - new Date().getTime()) / 1000;\n if (remainingSecs > 60 && remainingSecs <= 61) {\n dispatch(Presentation.actions.setShowModal());\n }\n if (remainingSecs <= 0) {\n dispatch(Auth.actions.doLogout());\n dispatch(Auth.actions.setRemainingTime(undefined));\n dispatch(Presentation.actions.setShowModal(undefined));\n } else {\n dispatch(Auth.actions.setRemainingTime(remainingSecs));\n }\n }\n };\n\n useInterval(refreshRemainingTime, 1000);\n\n return null;\n};\n\nexport default Timeout;\n","import React, { useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { InnerRoutes } from '../../navigation/routes';\n\nconst MainFrame = (): JSX.Element => {\n const location = useLocation();\n const scrollContainerRef = useRef(null);\n\n useEffect(() => {\n scrollContainerRef.current?.scrollTo({ top: 0, left: 0 });\n }, [location]);\n\n return (\n
\n \n
\n );\n};\n\nexport default MainFrame;\n","import { withErrorBoundary } from '@sentry/react';\nimport * as React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { useSubscription } from 'urql';\nimport MenuSidebar from '../../components/navigation/menu-sidebar/menu-sidebar';\nimport NotificationsSidebar from '../../components/ui-utils/notifications-sidebar/notifications-sidebar';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport HideableComponent from '../../components/utils/hideable-component';\nimport Timeout from '../../components/utils/timeout';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { AuthToken, Subscription } from '../../logic/graphql/types/types';\nimport Auth from '../../logic/redux/auth';\nimport { Paths } from '../../navigation/paths';\nimport { ScreenSizeFloor } from '../../styles/screen-sizes';\nimport MainFrame from '../main-frame/main-frame';\n\nconst MainScreen = (): JSX.Element => {\n const dispatch = useDispatch();\n const location = useLocation();\n const handleSubscription = (tokens: AuthToken[] = [], response: Subscription): AuthToken[] => {\n if (response && response.new_token) {\n if (response.new_token.expiry === 0) {\n dispatch(Auth.actions.doLogout());\n } else {\n dispatch(Auth.actions.doSetAuthenticationToken(response.new_token));\n }\n return [response.new_token, ...tokens];\n }\n return tokens;\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_token.subscriptionString,\n },\n handleSubscription,\n );\n\n const showNotificationsSideMenu = location.pathname === Paths.dashboard;\n\n return (\n <>\n
\n
\n \n \n \n \n {showNotificationsSideMenu && (\n \n \n \n )}\n
\n
\n \n \n );\n};\n\nexport default withErrorBoundary(MainScreen, { fallback: Fallback });\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.header`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n`;\n\nconst Value = styled.span`\n text-align: right;\n font-weight: bold;\n`;\n\nconst DataRow = (props: {\n label: string;\n value?: string | number;\n valueClassName?: string;\n}): JSX.Element => {\n return (\n \n {props.label}\n {props.value || 'n.a.'}\n \n );\n};\n\nexport default DataRow;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst IDCardBody = styled.div.attrs(() => ({}))<{\n backgroundGradient: string;\n}>`\n height: 120px;\n border-radius: 10px;\n padding: 16px 18px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 210px;\n background: ${(props) => props.backgroundGradient};\n`;\n\nconst IDCartNumberWrapper = styled.div`\n padding: 4px 8px;\n background: #2e2e2e;\n border-radius: 4px;\n`;\n\nconst IDNumberText = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n word-wrap: no-wrap;\n`;\n\nconst colors = [\n 'linear-gradient(59.66deg, #DBCF9E 0%, #CFE5D8 100%)',\n 'linear-gradient(59.66deg, #E6B6C6 0%, #E8CFDC 100%)',\n 'linear-gradient(59.66deg, #4F2E39 0%, #773B50 100%)',\n];\n\nconst IDCard = (props: {\n number: string;\n expiry: string;\n type: string;\n index: number;\n}): JSX.Element => {\n return (\n \n \n \n {props.number}\n \n \n
\n
\n {props.expiry}\n
\n
\n {props.type}\n
\n
\n
\n );\n};\nexport default IDCard;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { useQuery } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainer, MattRow } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport IDCard from '../../components/data-viewers/id-card';\nimport { formatDate, formatDateTime } from '../../helpers/date-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n User,\n PersonalDocument,\n Query,\n Account,\n Address,\n TermsAndConditions,\n PersonalContract,\n} from '../../logic/graphql/types/types';\nimport { Paths } from '../../navigation/paths';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport config from '../../../config';\n\nconst CardTitleContainer = styled.title`\n height: 32px;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 30px;\n`;\n\nconst CardTitle = styled.h2`\n margin-bottom: 0px;\n`;\n\nconst TitleIcon = styled.img`\n height: 18px;\n width: 18px;\n object-fit: contain;\n margin-right: 18px;\n`;\n\nconst AccountRow = styled(MattRow)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n margin-bottom: 30px;\n &:last-of-type {\n margin-bottom: 0px;\n }\n`;\n\nconst PdfIcon = styled.img`\n width: 14px;\n height: 18px;\n margin-right: 8px;\n`;\n\nconst LangLink = styled.b.attrs(() => ({}))<{ display: boolean }>`\n font-size: 12px;\n letter-spacing: -0.01em;\n margin-left: 10px;\n cursor: pointer;\n width: 20px;\n display: ${(props) => (props.display ? '' : 'none')};\n`;\n\nconst AttachmentContainer = styled.section`\n padding: 20px 30px;\n background: var(--matt-lighter-bg-color);\n border-radius: 2px;\n width: 100%;\n`;\n\nconst PersonalData = (): JSX.Element => {\n const intl = useIntl();\n const result = useQuery({\n query: GraphqlOperations.queries.getUserAllDetails.queryString,\n requestPolicy: 'network-only',\n })[0];\n const history = useHistory();\n\n const { data, fetching } = result;\n const user = data?.getUser;\n\n const handleEditClick = (): void => {\n history.push(Paths.contact);\n };\n\n const formatAddress = (addr: Address | undefined): string => {\n if (addr === undefined) {\n return '';\n }\n return addr.country.concat(' ', addr.zip_code, ' ', addr.city, ' ', addr.address);\n };\n\n const openAttahcment = (id: number, locale: string): void => {\n window.open(config.backend_url + '/termsofuse/' + id + '/' + locale, '_blank');\n };\n\n const renderUserContent = (user: User | undefined): JSX.Element => (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {user?.is_company === false ? (\n \n ) : null}\n \n {user?.is_company ? (\n \n \n \n \n \n \n \n \n \n \n \n ) : null}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {user?.accounts?.map((account: Account, index: number) => {\n return (\n \n \n {account.type}: {account.number}\n \n \n );\n })}\n \n {user?.personal_documents && user.personal_documents.length > 0 ? (\n \n \n \n \n \n \n \n
\n {user?.personal_documents?.map((doc: PersonalDocument, index: number) => (\n
\n \n
\n ))}\n
\n
\n ) : null}\n {user?.terms_and_conditions && user.terms_and_conditions.length > 0 ? (\n \n \n \n \n \n \n \n
\n {user?.terms_and_conditions?.map((term: TermsAndConditions, index: number) => (\n
\n \n
\n \n \n \n {intl.locale === 'en' && term.name_en !== '' ? term.name_en : term.name}\n \n \n openAttahcment(term.id, 'hu')}\n >\n hu\n \n openAttahcment(term.id, 'en')}\n >\n en\n \n
\n {formatDateTime(term.time)}\n
\n
\n ))}\n
\n
\n ) : null}\n {user?.personal_contracts && user.personal_contracts.length > 0 ? (\n \n \n \n \n \n \n \n
\n {user?.personal_contracts?.map((term: PersonalContract, index: number) => (\n
\n \n
\n \n \n \n {intl.locale === 'en' && term.name_en !== '' ? term.name_en : term.name}\n \n \n openAttahcment(term.id, 'hu')}\n >\n hu\n \n openAttahcment(term.id, 'en')}\n >\n en\n \n
\n {formatDateTime(term.time)}\n
\n
\n ))}\n
\n
\n ) : null}\n \n );\n\n return (\n \n
\n {user ? renderUserContent(user) : null}\n
\n \n \n );\n};\n\nexport default withErrorBoundary(PersonalData, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\nimport { BlurredContainer, ImageCircleBig } from '../containers/containers';\nimport { VerticalSeparator } from '../ui-utils/separators';\n\nconst TextContainer = styled.div``;\n\nconst ForwardIcon = styled.img`\n width: 18px;\n height: 18px;\n object-fit: contain;\n`;\n\nconst TitleContainer = styled.title`\n display: flex;\n flex-direction: row;\n align-items: center;\n & > h2 {\n margin-right: 10px;\n }\n`;\n\nconst MenuCard = (props: {\n image: string;\n title: string;\n description: string;\n url: string;\n}): JSX.Element => {\n const history = useHistory();\n\n const handleOnClick = (): void => {\n history.push(props.url);\n };\n\n return (\n \n \n
\n \n \n ),\n );\n\n return (\n \n
\n \n
\n \n \n \n \n \n

\n \n

\n
\n

\n \n

\n
\n
\n
{brokerCards}
\n \n );\n};\n\nexport default withErrorBoundary(Contact, { fallback: Fallback });\n","import InfiniteList from './infinite-list';\nexport default InfiniteList;\n","import React from 'react';\nimport { FixedSizeList as List, ListChildComponentProps } from 'react-window';\nimport InfiniteLoader from 'react-window-infinite-loader';\nimport CenteredSpinner from '../../loading-indicators/centered-spinner';\nimport { useSelector } from 'react-redux';\nimport Presentation from '../../../logic/redux/presentation';\nimport { ScreenSize } from '../../../styles/screen-sizes';\n\ninterface ListItemProps {\n listItem: ListItemType;\n mobileHeight: number;\n onClick?: (item: ListItemType) => void;\n}\n\ninterface InfinitListProps {\n hasNextPage: boolean;\n isNextPageLoading: boolean;\n items: readonly ListItemType[];\n desktopItemHeight: number;\n mobileItemHeight: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadNextPage: (startIndex: number, stopIndex: number) => Promise | null;\n listItem: React.FunctionComponent>;\n onClickItem?: (item: ListItemType) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst InfiniteList = (\n props: InfinitListProps,\n): JSX.Element => {\n const screenSize = useSelector(Presentation.select.selectScreenSize);\n const itemHeight = screenSize <= ScreenSize.SM ? props.mobileItemHeight : props.desktopItemHeight;\n\n const {\n hasNextPage,\n isNextPageLoading,\n items,\n loadNextPage,\n mobileItemHeight,\n listItem,\n onClickItem,\n } = props;\n const itemCount = hasNextPage ? items.length + 1 : items.length;\n const loadMoreItems = isNextPageLoading\n ? () => {\n return null;\n }\n : loadNextPage;\n\n const isItemLoaded = (index: number): boolean => !hasNextPage || index < items.length;\n\n const Item = (props: ListChildComponentProps): JSX.Element => {\n // eslint-disable-next-line react/prop-types\n const { index, style } = props;\n\n if (!isItemLoaded(index)) {\n return ;\n } else {\n return (\n
\n {listItem({\n listItem: items[index],\n mobileHeight: mobileItemHeight,\n onClick: onClickItem,\n })}\n
\n );\n }\n };\n\n return (\n \n {({ onItemsRendered, ref }) => (\n \n {Item}\n \n )}\n \n );\n};\n\nexport default InfiniteList;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\nimport { MattRow } from '../../components/containers/containers';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { Notification } from '../../logic/graphql/types/types';\nimport { getDirectionIcon, getDirectionText } from '../../components/utils/direction-utils';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst NotificationCardWrapper = styled(MattRow).attrs(() => ({}))<{\n unread: boolean;\n mobileHeight: number;\n}>`\n border: ${(props) => (props.unread ? '1px solid #ffffff' : '0px solid #ffffff')};\n margin-bottom: 10px;\n padding: 10px 15px;\n cursor: ${(props) => (props.unread ? 'pointer' : 'auto')};\n height: ${(props) => props.mobileHeight || 84}px;\n width: calc(100% - 8px);\n overflow: hidden;\n &:last-of-type {\n margin-bottom: 0px;\n }\n @media (min-width: 768px) {\n height: 104px;\n }\n`;\n\nconst ClockIcon = styled.img`\n width: 15px;\n height: 15px;\n margin-right: 4px;\n`;\n\nconst DirectionIcon = styled.img`\n width: 28px;\n height: 28px;\n margin-left: 7px;\n`;\n\nconst NewLabel = styled.span`\n background-color: var(--success-color);\n border-radius: 2px;\n padding: 1.5px 4px;\n margin-right: 10px;\n`;\n\nconst TextWrapper = styled.div`\n width: 100%;\n height: 210px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n @media (min-width: 768px) {\n height: 54px;\n }\n`;\n\nconst Text = styled.p`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 11;\n overflow: hidden;\n @media (min-width: 768px) {\n -webkit-line-clamp: 3;\n }\n`;\n\nconst NotificationCard = (props: {\n listItem: Notification;\n onClick?: (notification: Notification) => void;\n mobileHeight: number;\n}): JSX.Element => {\n const intl = useIntl();\n const handleOnClick = (): void => {\n if (props.onClick) {\n props.onClick(props.listItem);\n }\n };\n\n return (\n \n
\n \n
\n \n {intl.formatMessage({\n id: `notification.type.${getDirectionText(props.listItem.direction)}`,\n })}\n \n \n
\n
\n \n \n {intl.locale === 'en' && props.listItem.text_en !== ''\n ? props.listItem.text_en\n : props.listItem.text}\n \n \n
\n {props.listItem.unread ? (\n \n \n \n \n \n ) : (\n
\n )}\n
\n \n {formatDateTime(props.listItem.time)}\n
\n
\n \n );\n};\n\nexport default NotificationCard;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { useMutation, useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport InfiniteList from '../../components/lists/infinite-list';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { Notification, Query, Subscription } from '../../logic/graphql/types/types';\nimport NotificationCard from './notification-card';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst Container = styled(BlurredContainerM2030)`\n @media (max-width: 1280px) {\n padding: 20px 5px 10px 10px;\n }\n`;\n\nconst Notifications = (): JSX.Element => {\n const intl = useIntl();\n const history = useHistory();\n\n const [notifications, setNotifications] = useState([]);\n const [currentPage, setCurrentPage] = useState(1);\n\n const result = useQuery({\n query: GraphqlOperations.queries.get_notifications.queryString,\n variables: GraphqlOperations.queries.get_notifications.createVars(currentPage, 10),\n requestPolicy: 'network-only',\n })[0];\n const { data, fetching } = result;\n\n useEffect(() => {\n if (\n data?.get_notifications?.page_count !== undefined &&\n data.get_notifications.page === currentPage\n ) {\n setNotifications([...notifications.concat(data.get_notifications.notifications)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n const readNotification = useMutation(\n GraphqlOperations.mutations.read_notification.mutationString,\n )[1];\n\n const handleSubscription = (\n subscriptionNotifications: Notification[] = [],\n response: Subscription,\n ): Notification[] => {\n if (response && response.new_notification) {\n setNotifications([response.new_notification].concat(notifications));\n return [response.new_notification, ...subscriptionNotifications];\n }\n return subscriptionNotifications;\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_notification.subscriptionString,\n },\n handleSubscription,\n );\n\n const handleReadAllClick = (): void => {\n const variables = GraphqlOperations.mutations.read_notification.createVars(0);\n readNotification(variables)\n .then((result) => {\n if (result && !result.error) {\n const notifs = [...notifications];\n notifs.forEach((n) => {\n n.unread = false;\n });\n setNotifications(notifs);\n }\n return true;\n })\n .catch((err) => console.log(err));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const handleReadClick = (notification: Notification): void => {\n const variables = GraphqlOperations.mutations.read_notification.createVars(notification.id);\n readNotification(variables)\n .then((result) => {\n if (result && !result.error) {\n const notifs = [...notifications];\n const notif = notifs.find((n) => n.id === notification.id);\n if (notif) {\n notif.unread = false;\n }\n setNotifications(notifs);\n }\n return true;\n })\n .catch((err) => console.log(err));\n };\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const hasNextPage =\n result.data?.get_notifications?.page_count !== undefined &&\n result.data?.get_notifications?.page !== undefined &&\n result.data.get_notifications.page_count > result.data.get_notifications.page;\n\n return (\n \n \n
\n \n \n \n \n \n
\n\n \n
\n \n );\n};\n\nexport default withErrorBoundary(Notifications, { fallback: Fallback });\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.div`\n position: relative;\n height: 56px;\n width: 100%;\n max-width: 360px;\n &:focus-within::after {\n content: '';\n position: absolute;\n top: 0px;\n height: 56px;\n left: 0px;\n width: 2px;\n background: var(--primary-color);\n box-shadow: 0px 0px 10px rgba(0, 102, 255, 0.35);\n border-radius: 2px 0px 0px 2px;\n }\n`;\n\nconst Select = styled.select`\n height: 100%;\n width: 100%;\n background: var(--matt-bg-color);\n border-radius: 2px;\n color: var(--primary-text-color);\n font-size: 12px;\n padding: 20px 16px;\n appearance: none;\n &:focus {\n box-shadow: 0px 0px 30px 10px rgba(0, 102, 255, 0.1);\n border-width: 0px;\n outline: unset;\n }\n &:disabled {\n color: var(--gray-text-color);\n background: var(--matt-bg-color);\n backdrop-filter: unset;\n }\n`;\n\nconst TriangleWrapper = styled.div`\n position: absolute;\n height: 56px;\n right: 20px;\n pointer-events: none;\n top: 0px;\n bottom: 0px;\n display: flex;\n align-items: center;\n`;\n\nexport type SelectOption = {\n label: string;\n value: string | number | readonly string[] | undefined;\n};\n\nconst StyledSelect = (props: {\n options: SelectOption[];\n onChange: (option: SelectOption) => void;\n initialValue?: string | number | readonly string[] | undefined;\n className?: string;\n}): JSX.Element => {\n const [selected, setSelected] = useState(\n props.options.find((o) => o.value === props.initialValue) || props.options[0],\n );\n\n const handleOnChange = (event: React.ChangeEvent): void => {\n const selectedOption = props.options.find(\n (o) => o.value?.toString() === event.currentTarget.value,\n );\n setSelected(selectedOption);\n\n if (selectedOption) {\n props.onChange(selectedOption);\n }\n };\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default StyledSelect;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainer } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport StyledSelect, { SelectOption } from '../../components/inputs/styled-select';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport Auth from '../../logic/redux/auth';\nimport { Paths } from '../../navigation/paths';\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nconst LogoutSettings = (): JSX.Element => {\n const intl = useIntl();\n const [selectedTimeout, setSelectedTimeout] = useState(undefined);\n\n const changeTimeout = useMutation(\n GraphqlOperations.mutations.update_user_timeout.mutationString,\n )[1];\n const { addToast } = useToasts();\n\n const timeout = useSelector(Auth.select.selectAuthToken)?.expiry;\n\n const handleTimeoutSelectionChange = (option: SelectOption): void => {\n setSelectedTimeout(option.value as number);\n };\n const handleChangeClick = (): void => {\n if (selectedTimeout) {\n const variables = GraphqlOperations.mutations.update_user_timeout.createVars(selectedTimeout);\n changeTimeout(variables)\n .then((result) => {\n if (result && !result.error) {\n setSelectedTimeout(undefined);\n addToast(\n intl.formatMessage({ id: 'profilePage.settings.logoutSettings.toast.success' }),\n {\n appearance: 'success',\n autoDismiss: true,\n },\n );\n } else {\n addToast(\n intl.formatMessage({ id: 'profilePage.settings.logoutSettings.toast.error' }),\n {\n appearance: 'error',\n autoDismiss: false,\n },\n );\n }\n return true;\n })\n .catch(() => {\n addToast(intl.formatMessage({ id: 'profilePage.settings.logoutSettings.toast.error' }), {\n appearance: 'error',\n autoDismiss: false,\n });\n });\n }\n };\n\n return (\n \n \n

\n \n

\n \n \n
\n \n );\n};\n\nexport default withErrorBoundary(LogoutSettings, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainer } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport StyledInput from '../../components/inputs/styled-input';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { Query } from '../../logic/graphql/types/types';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst LoginSettings = (): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n const result = useQuery({\n query: GraphqlOperations.queries.getUserName.queryString,\n })[0];\n const { data } = result;\n const user = data?.getUser;\n\n const handleChangeClick = (): void => {\n history.push(Paths.password_change);\n };\n\n const handleContactClick = (): void => {\n history.push(Paths.contact);\n };\n\n return (\n \n \n

\n \n \n \n \n

\n \n \n \n
\n \n );\n};\n\nexport default withErrorBoundary(LoginSettings, { fallback: Fallback });\n","import { CombinedError, useQuery } from 'urql';\nimport { GraphqlOperations } from './../operations';\nimport { Query, User } from './../types/types.d';\n\nexport const useUserPhoneNumber = (): {\n phoneNumber?: string;\n fetching: boolean;\n error?: CombinedError;\n} => {\n const result = useQuery({\n query: GraphqlOperations.queries.getUserPhoneNumber.queryString,\n })[0];\n\n const { data, fetching, error } = result;\n const user = data?.getUser as User;\n const phoneNumber = user?.phone;\n\n return {\n phoneNumber,\n fetching,\n error,\n };\n};\n","import React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation, useQuery } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainer } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport StyledInput from '../../components/inputs/styled-input';\nimport graphqlClient from '../../logic/graphql/graphql-client';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { Mutation, Query } from '../../logic/graphql/types/types';\nimport { Paths } from '../../navigation/paths';\nimport { useUserPhoneNumber } from '../../logic/graphql/hooks';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst PasswordChange = (): JSX.Element => {\n const intl = useIntl();\n const [currentStep, setCurrentStep] = useState(0);\n const [currentPassword, setCurrentPassword] = useState('');\n const [firstToken, setFirstToken] = useState(undefined);\n\n const [shouldValidateNewPassword, setShouldValidateNewPassword] = useState(false);\n const [smsCode, setSMSCode] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [newPasswordConfirmation, setNewPasswordConfirmation] = useState('');\n\n const [passwordError, setPasswordError] = useState('');\n const [newPasswordError, setNewPasswordError] = useState('');\n const [newPasswordConfirmationError, setNewPasswordConfirmationError] = useState('');\n const [smsCodeError, setSMSCodeError] = useState('');\n\n const { phoneNumber } = useUserPhoneNumber();\n\n const changePassword = useMutation(\n GraphqlOperations.mutations.update_user_password_with_confirm.mutationString,\n )[1];\n\n const confirmPassword = useMutation(\n GraphqlOperations.mutations.confirm_password_update.mutationString,\n )[1];\n\n const result = useQuery({\n query: GraphqlOperations.queries.getUserAllDetails.queryString,\n requestPolicy: 'cache-first',\n })[0];\n const { data } = result;\n const user = data?.getUser;\n\n const history = useHistory();\n const { addToast } = useToasts();\n\n const areNewPasswordFieldsValid = (): boolean => {\n return (\n newPassword.length > 7 &&\n newPassword !== currentPassword &&\n newPassword === newPasswordConfirmation\n );\n };\n\n useEffect(() => {\n if (shouldValidateNewPassword) {\n if (newPassword.length < 8) {\n setNewPasswordError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.passwordLength' }),\n );\n } else if (newPassword === currentPassword) {\n setNewPasswordError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.samePassword' }),\n );\n } else {\n setNewPasswordError('');\n }\n\n if (newPassword !== newPasswordConfirmation) {\n setNewPasswordConfirmationError(\n intl.formatMessage({\n id: 'profilePage.settings.passwordChange.errors.passwordsNotMatch',\n }),\n );\n } else {\n setNewPasswordConfirmationError('');\n }\n }\n }, [currentPassword, newPassword, newPasswordConfirmation, shouldValidateNewPassword]);\n\n const handleNext1Click = async (): Promise => {\n try {\n const result = await graphqlClient\n .query(\n GraphqlOperations.queries.validate_password.queryString,\n GraphqlOperations.queries.validate_password.createVars(currentPassword),\n { requestPolicy: 'network-only' },\n )\n .toPromise();\n if (!result.error && (result.data as Query).validate_password) {\n setCurrentStep(1);\n } else {\n setPasswordError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.invalidPassword' }),\n );\n }\n } catch (err) {\n setPasswordError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.errorCheckOccurred' }),\n );\n }\n };\n\n const handleNext2Click = (): void => {\n if (areNewPasswordFieldsValid()) {\n const variables = GraphqlOperations.mutations.update_user_password_with_confirm.createVars(\n currentPassword,\n newPassword,\n );\n changePassword(variables)\n .then((result) => {\n if (result && !result.error) {\n setFirstToken((result.data as Mutation)?.update_user_password_with_confirm?.token);\n setCurrentStep(2);\n } else if (result.error && result.error.message === '[GraphQL] duplicate_new_password') {\n setNewPasswordError(\n intl.formatMessage({\n id: 'profilePage.settings.passwordChange.errors.sameContract',\n }),\n );\n } else {\n setNewPasswordError(\n intl.formatMessage({\n id: 'profilePage.settings.passwordChange.errors.invalidPassword',\n }),\n );\n }\n return true;\n })\n .catch(() =>\n setNewPasswordError(\n intl.formatMessage({\n id: 'profilePage.settings.passwordChange.errors.generalError',\n }),\n ),\n );\n } else {\n setShouldValidateNewPassword(true);\n }\n };\n\n const handleNext3Click = (): void => {\n if (!firstToken) {\n setCurrentStep(0);\n return;\n }\n const variables = GraphqlOperations.mutations.confirm_password_update.createVars(\n firstToken,\n smsCode,\n );\n confirmPassword(variables)\n .then((result) => {\n if (result && !result.error) {\n history.push(Paths.login_settings);\n addToast(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.toast.success' }),\n {\n appearance: 'success',\n autoDismiss: true,\n },\n );\n } else {\n setSMSCodeError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.invalidSmsCode' }),\n );\n }\n return true;\n })\n .catch(() =>\n setSMSCodeError(\n intl.formatMessage({ id: 'profilePage.settings.passwordChange.errors.invalidSmsCode' }),\n ),\n );\n };\n\n const handleCurrentPasswordChange = (event: React.ChangeEvent): void => {\n setCurrentPassword(event.currentTarget.value);\n };\n\n const handleNewPasswordChange = (event: React.ChangeEvent): void => {\n setNewPassword(event.currentTarget.value);\n };\n\n const handleNewPasswordConfirmationChange = (\n event: React.ChangeEvent,\n ): void => {\n setNewPasswordConfirmation(event.currentTarget.value);\n };\n\n const handleSMSChange = (event: React.ChangeEvent): void => {\n setSMSCode(event.currentTarget.value);\n };\n\n const step1Content = (\n <>\n

\n \n

\n

\n \n

\n \n \n \n );\n\n const step2Content = (\n <>\n

\n \n

\n

\n \n

\n \n \n \n \n \n );\n\n // új kódot kérek ?\n const step3Content = (\n <>\n

\n \n

\n

\n \n {phoneNumber}\n \n

\n \n \n \n );\n\n const renderCurrentStepContent = (): JSX.Element | null => {\n switch (currentStep) {\n case 0:\n return step1Content;\n case 1:\n return step2Content;\n case 2:\n return step3Content;\n default:\n return null;\n }\n };\n\n return (\n \n {renderCurrentStepContent()}\n \n );\n};\n\nexport default withErrorBoundary(PasswordChange, { fallback: Fallback });\n","import React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { MattRow } from '../../components/containers/containers';\nimport CenteredSpinner from '../../components/loading-indicators/centered-spinner';\nimport { HorizontalSeparatorGray } from '../../components/ui-utils/separators';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { MessageListItem, Query } from '../../logic/graphql/types/types';\nimport { useQuery, useMutation } from 'urql';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { useToasts } from 'react-toast-notifications';\nimport config from '../../../config';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst MessageDetailWrapper = styled(MattRow)`\n padding: 50px 50px;\n width: 100%;\n height: 100%;\n position: relative;\n @media (max-width: 1280px) {\n padding: 20px 20px;\n height: unset;\n }\n`;\n\nconst ClockIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 4px;\n`;\n\nconst AttachmentIcon = styled.img`\n width: 15px;\n height: 18px;\n margin-right: 8px;\n`;\n\nconst AttachmentContainer = styled.section`\n padding: 20px 30px;\n background: var(--matt-lighter-bg-color);\n border-radius: 2px;\n`;\n\nconst PdfIcon = styled.img`\n width: 14px;\n height: 18px;\n margin-right: 8px;\n`;\n\nconst MessageBody = styled.p`\n white-space: pre-wrap;\n`;\n\nconst MessageDetails = (props: { message: MessageListItem }): JSX.Element => {\n const { addToast } = useToasts();\n const acceptMessage = useMutation(GraphqlOperations.mutations.accept_message.mutationString)[1];\n const intl = useIntl();\n\n const [result, refetchMessage] = useQuery({\n query: GraphqlOperations.queries.get_message.queryString,\n variables: GraphqlOperations.queries.get_message.createVars(props.message.id),\n });\n const { data, fetching, error } = result;\n const message = data?.get_message;\n\n useEffect(() => {\n if (error) {\n addToast(intl.formatMessage({ id: 'messages.details.toast.error' }), {\n appearance: 'error',\n autoDismiss: true,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [error]);\n\n if (fetching || !message) {\n return (\n \n \n \n );\n }\n const handleAcceptClick = (): void => {\n const variables = GraphqlOperations.mutations.accept_message.createVars(props.message.id);\n acceptMessage(variables)\n .then((result) => {\n if (result && !result.error) {\n refetchMessage({ requestPolicy: 'network-only' });\n addToast(intl.formatMessage({ id: 'messages.details.toast.acceptSuccess' }), {\n appearance: 'success',\n autoDismiss: true,\n });\n } else {\n addToast(intl.formatMessage({ id: 'messages.details.toast.acceptError' }), {\n appearance: 'error',\n autoDismiss: true,\n });\n }\n return true;\n })\n .catch((err) => console.log(err));\n };\n const openAttahcment = (fileName: string): void => {\n window.open(config.backend_url + '/attachments/' + message.id + '/' + fileName, '_blank');\n };\n\n return (\n \n
\n {message.attachments.length ? : null}\n

\n {intl.locale === 'en' && message.subject_en !== '' ? message.subject_en : message.subject}\n

\n
\n \n
\n \n {formatDateTime(message.time)}\n
\n \n {intl.locale === 'en' && message.text_en !== '' ? message.text_en : message.text}\n \n {message.awaiting_acception ? (\n
\n {message.accepted ? (\n \n \n ✓ \n \n \n ) : (\n \n )}\n
\n ) : null}\n {message.attachments.length ? (\n \n {message.attachments.map((attachment: string, index: number) => (\n openAttahcment(attachment)}\n className=\"flex flex-row items-center mb-4 cursor-pointer\"\n >\n \n \n {attachment}\n \n
\n ))}\n \n ) : null}\n \n );\n};\n\nexport default MessageDetails;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { assets } from '../../assets';\nimport { MattRow } from '../../components/containers/containers';\nimport { HorizontalSeparator } from '../../components/ui-utils/separators';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { MessageListItem } from '../../logic/graphql/types/types';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst MessageCardWrapper = styled(MattRow).attrs(() => ({}))<{\n borderColor: string;\n}>`\n border: ${(props) => `1px solid ${props.borderColor}`};\n margin-bottom: 10px;\n padding: 16px 20px;\n width: calc(100% - 5px);\n height: 132px;\n cursor: pointer;\n position: relative;\n &:last-of-type {\n margin-bottom: 0px;\n }\n`;\n\nconst AttachmentIcon = styled.img`\n width: 15px;\n height: 18px;\n margin-right: 4px;\n`;\n\nconst UrgentIcon = styled.img`\n width: 28px;\n height: 28px;\n position: absolute;\n top: 10px;\n right: 10px;\n`;\n\nconst ClockIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 4px;\n`;\n\nconst NewLabel = styled.span`\n background-color: var(--success-color);\n border-radius: 2px;\n padding: 2px 4px;\n`;\n\nconst TextPreview = styled.p`\n display: block;\n display: -webkit-box;\n max-width: 100%;\n height: 42px;\n margin: 0 auto;\n line-height: 14px;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 8px;\n`;\n\nconst TitleWrapper = styled.div`\n max-width: calc(100% - 20px);\n`;\n\nconst MessageCard = (props: {\n message: MessageListItem;\n onClick?: (message: MessageListItem) => void;\n style?: React.CSSProperties | undefined;\n current?: boolean;\n}): JSX.Element => {\n const intl = useIntl();\n const handleOnClick = (): void => {\n if (props.onClick) {\n props.onClick(props.message);\n }\n };\n\n const borderColor = props.current\n ? 'var(--primary-color)'\n : props.message.unread\n ? 'var(--gray-text-color)'\n : 'unset';\n\n return (\n \n \n {props.message.has_attachment ? : null}\n \n \n {intl.locale === 'en' && props.message.subject_en !== ''\n ? props.message.subject_en\n : props.message.subject}\n \n \n {props.message.type === 'important' ? (\n \n ) : null}\n \n \n {intl.locale === 'en' && props.message.text_en !== ''\n ? props.message.text_en\n : props.message.text}\n \n \n
\n
\n \n {formatDateTime(props.message.time)}\n
\n {props.message.unread && (\n \n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default MessageCard;\n","import React, { useEffect } from 'react';\nimport { FixedSizeList as List, ListChildComponentProps } from 'react-window';\nimport InfiniteLoader from 'react-window-infinite-loader';\nimport CenteredSpinner from '../../components/loading-indicators/centered-spinner';\nimport { MessageListItem } from '../../logic/graphql/types/types';\nimport MessageCard from './message-card';\n\nconst MessageInfiniteList = (props: {\n hasNextPage: boolean;\n isNextPageLoading: boolean;\n items: MessageListItem[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadNextPage: (startIndex: number, stopIndex: number) => Promise | null;\n handleMessageClick: (message: MessageListItem) => void;\n selectedMessage?: MessageListItem;\n}): JSX.Element => {\n const {\n hasNextPage,\n isNextPageLoading,\n items,\n loadNextPage,\n handleMessageClick,\n selectedMessage,\n } = props;\n\n // If there are more items to be loaded then add an extra row to hold a loading indicator.\n const itemCount = hasNextPage ? items.length + 1 : items.length;\n\n // Only load 1 page of items at a time.\n // Pass an empty callback to InfiniteLoader in case it asks us to load more than once.\n const loadMoreItems = isNextPageLoading\n ? () => {\n return null;\n }\n : loadNextPage;\n\n // Every row is loaded except for our loading indicator row.\n const isItemLoaded = (index: number): boolean => !hasNextPage || index < items.length;\n\n // Render an item or a loading indicator.\n const Item = (props: ListChildComponentProps): JSX.Element => {\n // eslint-disable-next-line react/prop-types\n const { index, style } = props;\n useEffect(() => {\n if (items[index]) {\n if (items[index].unread) {\n // handleReadClick(items[index]);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!isItemLoaded(index)) {\n // content = 'Loading...';\n return ;\n } else {\n return (\n
\n \n
\n );\n }\n };\n\n return (\n \n {({ onItemsRendered, ref }) => (\n \n {Item}\n \n )}\n \n );\n};\n\nexport default MessageInfiniteList;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport styled from 'styled-components';\nimport { useMutation, useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport { BlurredContainerM3030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport HideableComponent from '../../components/utils/hideable-component';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { MessageListItem, Query, Subscription } from '../../logic/graphql/types/types';\nimport Presentation from '../../logic/redux/presentation';\nimport { ScreenSize, ScreenSizeFloor } from '../../styles/screen-sizes';\nimport MessageDetails from './message-details';\nimport MessageInfiniteList from './message-infinite-list';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst Container = styled(BlurredContainerM3030)`\n @media (max-width: 1280px) {\n padding: 20px 5px 10px 10px;\n }\n`;\n\nconst MessageListContainer = styled.div`\n width: 290px;\n height: 100%;\n overflow: visible;\n display: flex;\n align-items: flex-start;\n @media (max-width: 1024px) {\n width: 100%;\n }\n`;\n\nconst DetailsContainer = styled.div`\n margin-left: 15px;\n`;\n\nconst Messages = (): JSX.Element => {\n const intl = useIntl();\n const [messages, setMessages] = useState([]);\n const [currentPage, setCurrentPage] = useState(1);\n const [selectedMessage, setSelectedMessage] = useState(undefined);\n const [hasSetFirst, setHadSetFirst] = useState(false);\n const [mobileSelected, setMobileSelected] = useState(false);\n\n const screenSize = useSelector(Presentation.select.selectScreenSize);\n const isMobileMode = screenSize <= ScreenSize.MD;\n\n const result = useQuery({\n query: GraphqlOperations.queries.get_messages.queryString,\n variables: GraphqlOperations.queries.get_messages.createVars(currentPage, 10),\n requestPolicy: 'network-only',\n })[0];\n const { data, fetching } = result;\n\n useEffect(() => {\n if (data?.get_messages?.page_count !== undefined && data.get_messages.page === currentPage) {\n setMessages([...messages.concat(data.get_messages.messages)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n const readMessage = useMutation(GraphqlOperations.mutations.read_message.mutationString)[1];\n\n useEffect(() => {\n if (!hasSetFirst && messages && messages.length && currentPage === 1) {\n setHadSetFirst(true);\n const initialMessage = messages[0];\n setSelectedMessage(initialMessage);\n if (initialMessage.unread) {\n const variables = GraphqlOperations.mutations.read_message.createVars(initialMessage.id);\n readMessage(variables)\n .then((result) => {\n if (result && !result.error) {\n const notifs = [...messages];\n const notif = notifs.find((n) => n.id === initialMessage.id);\n if (notif) {\n notif.unread = false;\n }\n setMessages(notifs);\n }\n return true;\n })\n .catch((err) => console.log(err));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messages, hasSetFirst, currentPage]);\n\n const handleSubscription = (\n subscriptionMessages: MessageListItem[] = [],\n response: Subscription,\n ): MessageListItem[] => {\n if (response && response.new_message) {\n setMessages([response.new_message].concat(messages));\n return [response.new_message, ...subscriptionMessages];\n }\n return subscriptionMessages;\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_message.subscriptionString,\n },\n handleSubscription,\n );\n\n const handleReadAllClick = (): void => {\n const variables = GraphqlOperations.mutations.read_message.createVars(0);\n readMessage(variables)\n .then((result) => {\n if (result && !result.error) {\n const notifs = [...messages];\n notifs.forEach((n) => {\n n.unread = false;\n });\n setMessages(notifs);\n }\n return true;\n })\n .catch((err) => console.log(err));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const handleMessageClick = (message: MessageListItem): void => {\n setSelectedMessage(message);\n if (isMobileMode) {\n setMobileSelected(true);\n }\n if (message.unread) {\n const variables = GraphqlOperations.mutations.read_message.createVars(message.id);\n readMessage(variables)\n .then((result) => {\n if (result && !result.error) {\n const notifs = [...messages];\n const notif = notifs.find((n) => n.id === message.id);\n if (notif) {\n notif.unread = false;\n }\n setMessages(notifs);\n }\n return true;\n })\n .catch((err) => console.log(err));\n }\n };\n\n const handleMobileBackClick = (): void => {\n setMobileSelected(false);\n };\n\n const hasNextPage =\n result.data?.get_messages?.page_count !== undefined &&\n result.data?.get_messages?.page !== undefined &&\n result.data.get_messages.page_count > result.data.get_messages.page;\n\n const noContent = (\n \n

\n \n

\n
\n );\n\n const hasZeroItems =\n !result.fetching && !!result.data?.get_messages?.messages && messages.length === 0;\n\n const isShowingMobileDetails = selectedMessage && mobileSelected && isMobileMode;\n\n return (\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n
\n \n \n \n \n \n
\n
\n \n \n \n \n \n {selectedMessage ? : null}\n \n \n
\n
\n )}\n {isShowingMobileDetails && selectedMessage ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(Messages, { fallback: Fallback });\n","import React from 'react';\nimport { Status, DaytradeType, ExchangeRateType, Direction } from '../logic/graphql/types/types.d';\nimport { assets } from '../assets';\nimport { IntlShape } from 'react-intl';\n\nexport const stringifyStatus = (status: Status | undefined, intl: IntlShape): string => {\n if (!status) return '';\n return intl.formatMessage({ id: `order.status.${status}` });\n};\n\nexport const stringifyDaytradeType = (type?: DaytradeType | null): string => {\n if (!type) return '';\n\n switch (type) {\n case DaytradeType.Close:\n return 'Zárás';\n case DaytradeType.Open:\n return 'Nyitás';\n }\n};\n\nexport const stringifyExchangeRateType = (\n type: ExchangeRateType | undefined,\n intl: IntlShape,\n): string => {\n if (!type) return '';\n return intl.formatMessage({ id: `order.exchangeRateType.${type}` });\n};\n\nexport const StatusIcon = (props: { status?: Status }): JSX.Element | null => {\n if (!props.status) return null;\n let icon: string;\n\n switch (props.status) {\n case Status.Active:\n icon = assets.icons.status_active;\n break;\n case Status.CancelRequested:\n icon = assets.icons.status_canceled;\n break;\n case Status.Canceled:\n icon = assets.icons.status_canceled;\n break;\n case Status.Completed:\n icon = assets.icons.status_completed;\n break;\n case Status.Expired:\n icon = assets.icons.status_expired;\n break;\n case Status.Partial:\n icon = assets.icons.status_partial;\n break;\n case Status.Pending:\n icon = assets.icons.status_pending;\n break;\n case Status.Rejected:\n icon = assets.icons.status_rejected;\n break;\n }\n\n return ;\n};\n\nexport const statusColor = (status?: Status): string => {\n if (!status) return '';\n switch (status) {\n case Status.Active:\n return 'var(--primary-color)';\n case Status.CancelRequested:\n return 'var(--error-color)';\n case Status.Canceled:\n return 'var(--error-color)';\n case Status.Completed:\n return 'var(--success-color)';\n case Status.Expired:\n return 'var(--light-blue-color)';\n case Status.Partial:\n return 'var(--yellow-color)';\n case Status.Pending:\n return 'var(--light-gray-text-color)';\n case Status.Rejected:\n return 'var(--rejected-color)';\n }\n};\n","import ListControls from './list-controls';\nexport default ListControls;\n","import React, { useCallback } from 'react';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport { stringifyStatus } from '../../../helpers/type-formatters';\nimport { OrderingDirection, OrderingType, Status } from '../../../logic/graphql/types/types.d';\nimport { useIntl } from 'react-intl';\n\ntype ListControlsProps = {\n resetList: () => void;\n statusOptions: {\n value: string;\n label: string;\n }[];\n selectedStatus: Status | 'all';\n setSelectedStatus: (status: Status | 'all') => void;\n orderingOptions: {\n value: { direction: OrderingDirection; type: OrderingType };\n label: string;\n }[];\n selectedOrderingType: OrderingType;\n selectedOrderingDirection: OrderingDirection;\n istrumentPlaceholder: string;\n instrumentOptions: {\n value: string;\n label: string;\n }[];\n selectedInstruments?: string[];\n setSelectedInstruments: (instuments: string[]) => void;\n setSelectedOrderingType: (type: OrderingType) => void;\n setSelectedOrderingDirection: (direction: OrderingDirection) => void;\n};\n\nconst ListControls = (props: ListControlsProps): JSX.Element => {\n const intl = useIntl();\n const {\n selectedStatus,\n setSelectedStatus,\n selectedOrderingType,\n selectedOrderingDirection,\n setSelectedOrderingDirection,\n setSelectedOrderingType,\n selectedInstruments,\n setSelectedInstruments,\n resetList,\n } = props;\n\n const handleStatusChange = useCallback(\n (value) => {\n if ((value as Status | 'all') !== selectedStatus) {\n resetList();\n setSelectedStatus(value as Status | 'all');\n }\n },\n [selectedStatus, setSelectedStatus, resetList],\n );\n\n const handleOrderingChange = useCallback(\n (value) => {\n const selected = value as { direction: OrderingDirection; type: OrderingType };\n if (\n selected.type !== selectedOrderingType ||\n selected.direction !== selectedOrderingDirection\n ) {\n resetList();\n setSelectedOrderingType(selected.type);\n setSelectedOrderingDirection(selected.direction);\n }\n },\n [\n selectedOrderingType,\n selectedOrderingDirection,\n setSelectedOrderingType,\n setSelectedOrderingDirection,\n resetList,\n ],\n );\n\n const handleInstrumentChange = useCallback(\n (instruments) => {\n resetList();\n setSelectedInstruments(instruments as string[]);\n },\n [setSelectedInstruments, resetList],\n );\n\n return (\n <>\n \n \n \n \n );\n};\n\nexport default ListControls;\n","import styled from 'styled-components';\n\nexport const HeaderContainer = styled.div`\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 10px;\n @media (min-width: 1100px) {\n flex-direction: row;\n align-items: center;\n }\n`;\n\nexport const ButtonContainer = styled.div`\n margin-bottom: 8px;\n @media (min-width: 1100px) {\n margin-bottom: 0px;\n }\n`;\n\nexport const ControlsContainer = styled.div.attrs(() => ({}))<{ visible: boolean }>`\n max-height: ${(props) => (props.visible ? '200px' : '0px')};\n opacity: ${(props) => (props.visible ? '1' : '0')};\n transition: 0.5s;\n overflow: ${(props) => (props.visible ? 'visible' : 'hidden')};\n width: 100%;\n @media (min-width: 640px) {\n max-height: unset;\n opacity: 1;\n overflow: visible;\n }\n`;\n\nexport const FilterIcon = styled.img`\n width: 32px;\n height: 32px;\n flex: none;\n margin: 10px 0px;\n`;\n","import { Direction } from './../../../logic/graphql/types/types.d';\nimport { Status } from '../../../logic/graphql/types/types';\n\nexport enum DataVariant {\n default,\n highlighted,\n gray,\n descriptive_highlighted,\n}\n\nexport type ListItemDataRow = {\n label: string;\n value: string;\n variant?: DataVariant;\n};\n\nexport type ListItemDataBlock = {\n dataLines: readonly ListItemDataRow[];\n};\n\nexport type ListItemData = {\n status: Status;\n iconVisible?: boolean;\n title: string;\n titleExtension?: string;\n transactionCode?: string;\n detailBlocks: readonly ListItemDataBlock[];\n date: string;\n direction?: Direction;\n};\n","import { useState } from 'react';\n\nconst useListHeader = (): { filtersVisible: boolean; handleFilterClick: () => void } => {\n const [filtersVisible, setFiltersVisible] = useState(false);\n\n const handleFilterClick = (): void => {\n setFiltersVisible(!filtersVisible);\n };\n\n return {\n filtersVisible,\n handleFilterClick,\n };\n};\n\nexport default useListHeader;\n","import ListHeader from './list-header';\nexport default ListHeader;\n","import React from 'react';\nimport { assets } from '../../../assets';\nimport Button from '../../buttons/button';\nimport { ControlsContainer, FilterIcon, HeaderContainer, ButtonContainer } from './components';\nimport useListHeader from './hooks';\n\nconst ListHeader = (props: {\n onCreateClick: () => void;\n createButtonLabel: string;\n children?: React.ReactNode;\n}): JSX.Element => {\n const { filtersVisible, handleFilterClick } = useListHeader();\n\n return (\n \n \n {props.children}\n \n \n \n \n \n \n );\n};\n\nexport default ListHeader;\n","import { OrderingDirection, OrderingType, Status } from '../logic/graphql/types/types.d';\nimport { stringifyStatus } from './type-formatters';\nimport { IntlShape } from 'react-intl';\n\ntype StatusOptionsFilters = 'nopartialorexpired' | 'nopartial';\n\ntype OptionType = {\n value: any;\n label: string;\n};\n\nexport const getStatusOptions = (\n intl: IntlShape,\n filter?: StatusOptionsFilters,\n): Array => {\n const options: Array = [\n { value: 'all', label: intl.formatMessage({ id: 'order.status.all' }) },\n { value: Status.Active, label: stringifyStatus(Status.Active, intl) },\n { value: Status.Partial, label: stringifyStatus(Status.Partial, intl) },\n { value: Status.Completed, label: stringifyStatus(Status.Completed, intl) },\n { value: Status.Canceled, label: stringifyStatus(Status.Canceled, intl) },\n { value: Status.Expired, label: stringifyStatus(Status.Expired, intl) },\n { value: Status.Pending, label: stringifyStatus(Status.Pending, intl) },\n { value: Status.Rejected, label: stringifyStatus(Status.Rejected, intl) },\n ];\n\n if (filter === 'nopartial') {\n return options.filter((o) => o.value !== Status.Partial);\n }\n if (filter === 'nopartialorexpired') {\n return options.filter((o) => o.value !== Status.Partial && o.value !== Status.Expired);\n }\n return options;\n};\n\nexport type OrderingOptionsType = {\n value: { direction: OrderingDirection; type: OrderingType };\n label: string;\n};\n\nexport const getOrderingOptions = (intl: IntlShape): Array => {\n return [\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.TransferDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.transfer_date_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.TransferDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.transfer_date_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.TransitionDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.transition_date_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.TransitionDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.transition_date_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.ValidityStart },\n label: intl.formatMessage({ id: 'sortOrderOptions.validity_start_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.ValidityStart },\n label: intl.formatMessage({ id: 'sortOrderOptions.validity_start_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.ValidityEnd },\n label: intl.formatMessage({ id: 'sortOrderOptions.validity_end_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.ValidityEnd },\n label: intl.formatMessage({ id: 'sortOrderOptions.validity_end_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.OrderDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.order_date_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.OrderDate },\n label: intl.formatMessage({ id: 'sortOrderOptions.order_date_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.FromValue },\n label: intl.formatMessage({ id: 'sortOrderOptions.from_value_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.FromValue },\n label: intl.formatMessage({ id: 'sortOrderOptions.from_value_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Security },\n label: intl.formatMessage({ id: 'sortOrderOptions.security_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Security },\n label: intl.formatMessage({ id: 'sortOrderOptions.security_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Status },\n label: intl.formatMessage({ id: 'sortOrderOptions.status_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Status },\n label: intl.formatMessage({ id: 'sortOrderOptions.status_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.TransactionCode },\n label: intl.formatMessage({ id: 'sortOrderOptions.transaction_code_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.TransactionCode },\n label: intl.formatMessage({ id: 'sortOrderOptions.transaction_code_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Currency },\n label: intl.formatMessage({ id: 'sortOrderOptions.currency_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Currency },\n label: intl.formatMessage({ id: 'sortOrderOptions.currency_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Direction },\n label: intl.formatMessage({ id: 'sortOrderOptions.direction_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Direction },\n label: intl.formatMessage({ id: 'sortOrderOptions.direction_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Count },\n label: intl.formatMessage({ id: 'sortOrderOptions.count_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Count },\n label: intl.formatMessage({ id: 'sortOrderOptions.count_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.LimitPrice },\n label: intl.formatMessage({ id: 'sortOrderOptions.limit_price_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.LimitPrice },\n label: intl.formatMessage({ id: 'sortOrderOptions.limit_price_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.ActivationPrice },\n label: intl.formatMessage({ id: 'sortOrderOptions.activation_price_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.ActivationPrice },\n label: intl.formatMessage({ id: 'sortOrderOptions.activation_price_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.Value },\n label: intl.formatMessage({ id: 'sortOrderOptions.value_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.Value },\n label: intl.formatMessage({ id: 'sortOrderOptions.value_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.FromAccount },\n label: intl.formatMessage({ id: 'sortOrderOptions.from_account_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.FromAccount },\n label: intl.formatMessage({ id: 'sortOrderOptions.from_account_asc' }),\n },\n {\n value: { direction: OrderingDirection.Desc, type: OrderingType.ToAccount },\n label: intl.formatMessage({ id: 'sortOrderOptions.to_account_desc' }),\n },\n {\n value: { direction: OrderingDirection.Asc, type: OrderingType.ToAccount },\n label: intl.formatMessage({ id: 'sortOrderOptions.to_account_asc' }),\n },\n ];\n};\n\nconst ExchangeOrderOrderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.Security,\n OrderingType.Direction,\n OrderingType.Count,\n OrderingType.LimitPrice,\n OrderingType.ActivationPrice,\n OrderingType.Value,\n OrderingType.ValidityStart,\n OrderingType.ValidityEnd,\n];\n\nexport const getExchangeOrderOrderingOptions = (intl: IntlShape): Array => {\n return getOrderingOptions(intl).filter((o) =>\n ExchangeOrderOrderingTypes.some((t) => t === o.value.type),\n );\n};\n\nconst UnitOrderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.Security,\n OrderingType.Direction,\n OrderingType.Count,\n OrderingType.ValidityStart,\n OrderingType.ValidityEnd,\n];\n\nexport const getUnitOrderingOptions = (intl: IntlShape): Array => {\n return getOrderingOptions(intl).filter((o) => UnitOrderingTypes.some((t) => t === o.value.type));\n};\n\nconst MoneyTransitionOrderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.FromAccount,\n OrderingType.ToAccount,\n OrderingType.Value,\n OrderingType.Currency,\n OrderingType.OrderDate,\n];\n\nexport const getMoneyTransitionOrderingOptions = (intl: IntlShape): Array => {\n return getOrderingOptions(intl).filter((o) =>\n MoneyTransitionOrderingTypes.some((t) => t === o.value.type),\n );\n};\n\nconst SecurityTransitionsOrderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.FromAccount,\n OrderingType.ToAccount,\n OrderingType.Security,\n OrderingType.Count,\n OrderingType.OrderDate,\n];\n\nexport const getSecurityTransitionsOrderingOptions = (\n intl: IntlShape,\n): Array => {\n return getOrderingOptions(intl).filter((o) =>\n SecurityTransitionsOrderingTypes.some((t) => t === o.value.type),\n );\n};\n\nconst MoneyTransfersOderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.FromAccount,\n OrderingType.Value,\n OrderingType.Currency,\n OrderingType.TransferDate,\n];\n\nexport const getMoneyTransfersOrderingOptions = (intl: IntlShape): Array => {\n return getOrderingOptions(intl).filter((o) =>\n MoneyTransfersOderingTypes.some((t) => t === o.value.type),\n );\n};\n\nconst SecurityTransfersOrderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.FromAccount,\n OrderingType.Security,\n OrderingType.Count,\n OrderingType.TransferDate,\n];\n\nexport const getSecurityTransfersOrderingOptions = (\n intl: IntlShape,\n): Array => {\n return getOrderingOptions(intl).filter((o) =>\n SecurityTransfersOrderingTypes.some((t) => t === o.value.type),\n );\n};\n\nconst CurrencyConversionsOderingTypes = [\n OrderingType.Status,\n OrderingType.TransactionCode,\n OrderingType.FromValue,\n OrderingType.Currency,\n OrderingType.OrderDate,\n];\n\nexport const getCurrencyConversionsOrderingOptions = (\n intl: IntlShape,\n): Array => {\n return getOrderingOptions(intl).filter((o) =>\n CurrencyConversionsOderingTypes.some((t) => t === o.value.type),\n );\n};","import React from 'react';\nimport styled from 'styled-components';\nimport { MattRow } from '../../containers/containers';\nimport { DataVariant, ListItemDataBlock, ListItemDataRow } from './types';\n\nexport const Container = styled(MattRow).attrs(() => ({}))<{\n decorationColor: string;\n decorationShadowColor: string;\n mobileHeight?: number;\n}>`\n height: ${(props) => props.mobileHeight || 84}px;\n padding: 15px 20px;\n cursor: pointer;\n width: calc(100% - 8px);\n overflow: hidden;\n &::after {\n content: '';\n position: absolute;\n top: 0px;\n height: ${(props) => props.mobileHeight || 84}px;\n left: 0px;\n width: 2px;\n background: ${(props) => props.decorationColor};\n box-shadow: 0px 0px 10px ${(props) => props.decorationShadowColor};\n border-radius: 2px 0px 0px 2px;\n }\n @media (min-width: 768px) {\n padding: 0px 30px;\n height: 84px;\n &::after {\n height: 84px;\n }\n }\n`;\nexport const StatusLabelContainer = styled.div`\n flex: none;\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-right: 20px;\n width: 90px;\n @media (min-width: 1280px) {\n width: 110px;\n }\n`;\n\nexport const ClockIcon = styled.img`\n width: 10px;\n height: 10px;\n margin-right: 4px;\n`;\n\nexport const DateContainer = styled.div`\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n width: 80px;\n @media (min-width: 1280px) {\n width: 130px;\n }\n`;\n\nexport const Icon = styled.img`\n width: 40px;\n height: 40px;\n`;\n\nconst DefaultRow = ({ value, label }: { value: string; label: string }): JSX.Element => (\n \n {label}: {value}\n \n);\n\nconst HighlightedRow = ({ value, label }: { value: string; label: string }): JSX.Element => (\n \n {label}: {value}\n \n);\n\nconst GrayRow = ({ value, label }: { value: string; label: string }): JSX.Element => (\n \n {value ? {value} : ''}\n {label}\n \n);\n\nconst DescriptiveHighlightedRow = ({\n value,\n label,\n}: {\n value: string;\n label: string;\n}): JSX.Element => (\n \n {value} {label}\n \n);\n\nexport const DataRow = ({ data }: { data: ListItemDataRow }): JSX.Element | null => {\n const { variant, value, label } = data;\n if (value === '') {\n return null;\n }\n\n switch (variant) {\n case DataVariant.highlighted:\n return ;\n case DataVariant.gray:\n return ;\n case DataVariant.descriptive_highlighted:\n return ;\n default:\n return ;\n }\n};\n\nexport const DataBlock = ({ data }: { data: ListItemDataBlock }): JSX.Element => (\n
\n {data.dataLines.map((lineData, index) => (\n \n ))}\n
\n);\n","import React from 'react';\nimport { assets } from '../../../assets';\nimport { statusColor, StatusIcon, stringifyStatus } from '../../../helpers/type-formatters';\nimport {\n ClockIcon,\n Container,\n DataBlock,\n DateContainer,\n Icon,\n StatusLabelContainer,\n} from './components';\nimport { ListItemData } from './types';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst ListItemContent = (props: { data: ListItemData }): JSX.Element => {\n const intl = useIntl();\n return (\n \n );\n};\n\nconst ListItemMobileContent = (props: { data: ListItemData }): JSX.Element => {\n const intl = useIntl();\n return (\n
\n
\n
\n \n
\n
\n
\n \n {stringifyStatus(props.data.status, intl)}\n \n {props.data.direction ? (\n \n {intl.formatMessage({ id: `order.direction.${props.data.direction}` })}\n \n ) : null}\n
\n
\n \n {props.data.date}\n
\n
\n
\n
\n {props.data.iconVisible ? (\n
\n \n
\n ) : null}\n
\n \n {props.data.title} {props.data.titleExtension || null}\n \n {props.data.transactionCode ? (\n \n Azonosító: {props.data.transactionCode}\n \n ) : null}\n
\n
\n {props.data.detailBlocks.map((blockData, index) => (\n \n ))}\n
\n );\n};\n\nconst ListItem = (props: {\n data: ListItemData;\n onClick: () => void;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const handleOnClick = (): void => {\n props.onClick();\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default ListItem;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../../helpers/number-formatters';\nimport {\n ExchangeOrderListItem as ListItemDataInput,\n ExchangeRateType,\n Status,\n} from '../../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst ExchangeOrderListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n const handleOnClick = (): void => {\n history.push(Paths.exchange_orders + '/' + props.listItem.id);\n };\n\n const value =\n props.listItem.type === ExchangeRateType.StopMarket\n ? (props.listItem.activation_price || 0) * props.listItem.count\n : (props.listItem.limit_price || 0) * props.listItem.count;\n\n const pricesDataLines = [\n {\n label: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.limitPrice' }),\n value: formatNumber(props.listItem.limit_price, props.listItem.security.currency.currency),\n },\n {\n label: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.activationPrice' }),\n value: formatNumber(\n props.listItem.activation_price,\n props.listItem.security.currency.currency,\n ),\n },\n ];\n\n if (props.listItem.status === Status.Completed || props.listItem.status === Status.Partial) {\n pricesDataLines.push({\n label: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.dealPrice' }),\n value: formatNumber(props.listItem.deal_price, props.listItem.security.currency.currency, 6),\n });\n }\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: true,\n title: props.listItem.security.name,\n titleExtension: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.extensionLabel' }),\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.valueLabel' }),\n value: formatNumber(value, props.listItem.security.currency.currency),\n variant: DataVariant.descriptive_highlighted,\n },\n\n {\n label: intl.formatMessage({ id: 'exchangeOrderListPage.listItem.countLabel' }),\n value: props.listItem.count.toString(),\n variant: DataVariant.gray,\n },\n ],\n },\n {\n dataLines: pricesDataLines,\n },\n ],\n date: props.listItem.validity_end\n ? formatDate(props.listItem.validity_start) + ' - ' + formatDate(props.listItem.validity_end)\n : intl.formatMessage({ id: 'exchangeOrderListPage.listItem.toCancellation' }),\n direction: props.listItem.direction,\n };\n\n return (\n \n );\n};\n\nexport default ExchangeOrderListItem;\n","import { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, UseQueryState, useSubscription } from 'urql';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport {\n Account,\n ExchangeOrderListItem,\n OrderingDirection,\n OrderingType,\n Query,\n SecurityListType,\n SecurityType,\n Status,\n Subscription,\n} from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\n\ntype UseExchangeOrderType = {\n controls: {\n handleCreateClick: () => void;\n selectedStatus: Status | 'all';\n resetList: () => void;\n setSelectedStatus: (status: Status | 'all') => void;\n selectedOrderingType: OrderingType;\n selectedOrderingDirection: OrderingDirection;\n securitiesQueryResult: UseQueryState;\n selectedSecurities: string[];\n setSelectedInstruments: (instuments: string[]) => void;\n setSelectedOrderingType: (type: OrderingType) => void;\n setSelectedOrderingDirection: (direction: OrderingDirection) => void;\n };\n list: {\n sumPortfolioLastUpdateQueryResult: UseQueryState;\n hasZeroItems: boolean;\n hasNextPage: boolean;\n itemsResultQuery: UseQueryState;\n items: readonly ExchangeOrderListItem[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchNextPage: (startIndex: number, stopIndex: number) => any;\n };\n account: {\n userAccountsQueryResult: UseQueryState;\n userAccountOptions: readonly { value: string; label: string }[];\n selectedAccount: string;\n setSelectedAccount: (account: string) => void;\n };\n};\n\nconst useListHeader = (): UseExchangeOrderType => {\n // MARK: - Resources\n const history = useHistory();\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedSecurities, setSelectedInstruments] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.ValidityStart,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_exchange_orders.queryString,\n variables: GraphqlOperations.queries.get_exchange_orders.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedSecurities,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const securitiesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_securities.queryString,\n variables: GraphqlOperations.queries.get_securities.createVars(\n SecurityType.ExchangeOrder,\n SecurityListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewExchangeOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionExchangeOrders: ExchangeOrderListItem[] = [],\n response: Subscription,\n ): ExchangeOrderListItem[] => {\n if (response && response.new_exchange_order) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_exchange_order.subscriptionString,\n },\n handleNewExchangeOrderSubscription,\n );\n\n const handleUpdateExchangeOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionExchangeOrders: ExchangeOrderListItem[] = [],\n response: Subscription,\n ): ExchangeOrderListItem[] => {\n if (response && response.update_exchange_order) {\n const item = response.update_exchange_order;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex((i) => i.id === item.id);\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_exchange_order.subscriptionString,\n },\n handleUpdateExchangeOrderSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_exchange_orders?.page_count !== undefined &&\n itemsResultQuery.data.get_exchange_orders.page === currentPage\n ) {\n setItems([...items.concat(itemsResultQuery.data.get_exchange_orders.exchange_orders)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.new_exchange_order);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n !!itemsResultQuery.data?.get_exchange_orders?.exchange_orders &&\n items.length === 0;\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_exchange_orders?.page_count !== undefined &&\n itemsResultQuery.data?.get_exchange_orders?.page !== undefined &&\n itemsResultQuery.data.get_exchange_orders.page_count >\n itemsResultQuery.data.get_exchange_orders.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return {\n controls: {\n handleCreateClick,\n selectedStatus,\n resetList,\n setSelectedStatus,\n selectedOrderingType,\n selectedOrderingDirection,\n securitiesQueryResult,\n selectedSecurities,\n setSelectedInstruments,\n setSelectedOrderingType,\n setSelectedOrderingDirection,\n },\n list: {\n sumPortfolioLastUpdateQueryResult,\n hasZeroItems,\n hasNextPage,\n itemsResultQuery,\n items,\n fetchNextPage,\n },\n account: {\n userAccountsQueryResult,\n userAccountOptions,\n selectedAccount,\n setSelectedAccount,\n },\n };\n};\n\nexport default useListHeader;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useMemo } from 'react';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport { getStatusOptions, getExchangeOrderOrderingOptions } from '../../../helpers/type-options';\nimport ListItem from './components/exchange-order-list-item/exchange-order-list-item';\nimport useExchangeOrders from './hooks';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst ExchangeOrders = (): JSX.Element => {\n const intl = useIntl();\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl);\n }, [intl]);\n const exchangeOrderOrderingOptions = useMemo(() => {\n return getExchangeOrderOrderingOptions(intl);\n }, [intl]);\n const { controls, list, account } = useExchangeOrders();\n const {\n itemsResultQuery,\n items,\n hasZeroItems,\n hasNextPage,\n fetchNextPage,\n sumPortfolioLastUpdateQueryResult,\n } = list;\n\n const {\n userAccountsQueryResult,\n userAccountOptions,\n selectedAccount,\n setSelectedAccount,\n } = account;\n\n const noContent = (\n

\n \n

\n );\n\n return (\n {\n if (value !== selectedAccount) {\n controls.resetList();\n setSelectedAccount(value as string);\n controls.setSelectedInstruments([]);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: s.short_name,\n label: s.name,\n })) || []\n }\n />\n \n\n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(ExchangeOrders, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation, useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport StyledInput from '../../components/inputs/styled-input';\nimport CenteredSpinner from '../../components/loading-indicators/centered-spinner';\nimport ErrorShower from '../../components/ui-utils/error-shower';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDate } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport {\n StatusIcon,\n stringifyExchangeRateType,\n stringifyStatus,\n} from '../../helpers/type-formatters';\nimport { useUserPhoneNumber } from '../../logic/graphql/hooks';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n ExchangeOrder,\n ExchangeOrderListItem,\n Query,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport ExchangeOrders from '../../logic/redux/exchange-orders';\nimport { EditedCreateExchangeOrder } from '../../logic/redux/exchange-orders/exchange-orders-models';\nimport Presentation from '../../logic/redux/presentation';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst CloseConfirmModalContent = (props: {\n exchangeOrder: ExchangeOrder;\n onCancellationSuccess: () => void;\n}): JSX.Element => {\n const dispatch = useDispatch();\n const { addToast } = useToasts();\n const { phoneNumber } = useUserPhoneNumber();\n const intl = useIntl();\n const [smsCode, setSMSCode] = useState('');\n const [smsCodeError, setSMSCodeError] = useState('');\n const [token, setToken] = useState(undefined);\n\n const getUserNeedTransactionSecondConfirmationQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserNeedTransactionSecondConfirmation.queryString,\n })[0];\n const needsConfirmation =\n getUserNeedTransactionSecondConfirmationQueryResult.data?.getUser\n ?.need_transaction_second_confirmation;\n\n const [cancelResult, cancelExchangeOrder] = useMutation(\n GraphqlOperations.mutations.cancel_exchange_order.mutationString,\n );\n\n const [cancelConfirmResult, cancelExchangeOrderConfirm] = useMutation(\n GraphqlOperations.mutations.cancel_exchange_order_confirm.mutationString,\n );\n\n const handleConfirmedCancellation = (): void => {\n if (!token || !cancelResult.data) {\n return;\n }\n const variables = GraphqlOperations.mutations.cancel_exchange_order_confirm.createVars(\n smsCode,\n token,\n );\n cancelExchangeOrderConfirm(variables)\n .then((result) => {\n if (result && !result.error) {\n addToast(\n intl.formatMessage({ id: 'exchangeOrderDetails.cancelConfirmation.toast.success' }),\n {\n appearance: 'success',\n autoDismiss: true,\n },\n );\n props.onCancellationSuccess();\n dispatch(Presentation.actions.setShowModal(undefined));\n } else {\n if (needsConfirmation) {\n setSMSCodeError(\n intl.formatMessage({\n id: 'exchangeOrderDetails.cancelConfirmation.errors.invalidPassword',\n }),\n );\n }\n }\n return true;\n })\n .catch(() =>\n addToast(\n intl.formatMessage({ id: 'exchangeOrderDetails.cancelConfirmation.toast.error' }),\n {\n appearance: 'error',\n autoDismiss: true,\n },\n ),\n );\n };\n\n useEffect(() => {\n const variables = GraphqlOperations.mutations.cancel_exchange_order.createVars(\n props.exchangeOrder.id,\n );\n cancelExchangeOrder(variables)\n .then((result) => {\n if (result && !result.error) {\n setToken(result.data.cancel_exchange_order);\n } else {\n addToast(\n intl.formatMessage({ id: 'exchangeOrderDetails.cancelConfirmation.toast.error' }),\n {\n appearance: 'error',\n autoDismiss: true,\n },\n );\n }\n return true;\n })\n .catch(() =>\n addToast(\n intl.formatMessage({ id: 'exchangeOrderDetails.cancelConfirmation.toast.error' }),\n {\n appearance: 'error',\n autoDismiss: true,\n },\n ),\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleSMSChange = (event: React.ChangeEvent): void => {\n setSMSCode(event.currentTarget.value);\n };\n\n const handleCancelClick = (): void => {\n dispatch(Presentation.actions.setShowModal(undefined));\n };\n\n const confirmationDependentContent = needsConfirmation ? (\n <>\n \n \n \n ) : (\n

\n \n

\n );\n\n return (\n
\n

\n \n

\n {getUserNeedTransactionSecondConfirmationQueryResult.fetching ? (\n \n ) : (\n confirmationDependentContent\n )}\n
\n \n \n \n \n
\n
\n );\n};\n\nconst ExchangeOrderDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const dispatch = useDispatch();\n const intl = useIntl();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string | undefined = (match.params as any).id;\n const idNum = id ? Number.parseInt(id) : NaN;\n\n const [exchangeOrderQueryResult, reexecuteExchangeOrderQuery] = useQuery({\n query: GraphqlOperations.queries.get_exchange_order.queryString,\n variables: GraphqlOperations.queries.get_exchange_order.createVars(\n !isNaN(idNum) ? idNum.valueOf() : 0,\n ),\n pause: isNaN(idNum),\n requestPolicy: 'network-only',\n });\n const exchangeOrder = exchangeOrderQueryResult.data?.get_exchange_order;\n\n // Needed to set account details for edited rejected exchange order\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n // requestPolicy: 'network-only',\n pause: !exchangeOrder || exchangeOrder.status !== Status.Rejected,\n })[0];\n\n const handleUpdateExchangeOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionExchangeOrders: ExchangeOrderListItem[] = [],\n response: Subscription,\n ): ExchangeOrderListItem[] => {\n if (response && response.update_exchange_order) {\n if (\n response.update_exchange_order.id === exchangeOrderQueryResult.data?.get_exchange_order.id\n ) {\n reexecuteExchangeOrderQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_exchange_order.subscriptionString,\n },\n handleUpdateExchangeOrderSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancellationSuccess = (): void => {\n reexecuteExchangeOrderQuery();\n };\n\n const handleCancelClick = (): void => {\n if (!exchangeOrder) return;\n dispatch(\n Presentation.actions.setShowModal(\n ,\n ),\n );\n };\n\n const handleEditClick = (): void => {\n const accountDetails = userAccountsQueryResult.data?.getUser?.accounts?.find(\n (a) => a.number === exchangeOrder?.account,\n );\n if (!exchangeOrder || !accountDetails) return;\n const editedExchangeOrder: EditedCreateExchangeOrder = {\n edited_id: exchangeOrder.id,\n direction: exchangeOrder.direction,\n account: exchangeOrder.account,\n security: exchangeOrder.security.short_name,\n count: exchangeOrder.count,\n daytrade: !!exchangeOrder.daytrade,\n daytrade_type: exchangeOrder.daytrade_type || undefined,\n type: exchangeOrder.type,\n limit_price: exchangeOrder.limit_price || undefined,\n activation_price: exchangeOrder.activation_price || undefined,\n outside_trading_hours: !!exchangeOrder.outside_trading_hours,\n validity_start: exchangeOrder.validity_start,\n validity_end: exchangeOrder.validity_end,\n accountDetails,\n securityDetails: exchangeOrder.security,\n };\n dispatch(ExchangeOrders.actions.setEditedExchangeOrder(editedExchangeOrder));\n history.push(Paths.new_exchange_order);\n };\n\n if (isNaN(idNum)) {\n return ;\n }\n\n const title = exchangeOrder?.security.name\n ? exchangeOrder?.security.name +\n intl.formatMessage({ id: 'exchangeOrderDetails.titleExtension' })\n : intl.formatMessage({ id: 'exchangeOrderDetails.defaultTitle' });\n const titleWithTransactionCode = exchangeOrder?.transaction_code\n ? title + ' - ' + exchangeOrder.transaction_code\n : title;\n\n const isShowingCancelButton =\n (exchangeOrder?.status === Status.Active || exchangeOrder?.status === Status.Partial) &&\n (exchangeOrder?.cancel_accepted === null || exchangeOrder?.cancel_accepted === undefined);\n\n const isShowingCancelRejectedContent =\n (exchangeOrder?.status === Status.Active || exchangeOrder?.status === Status.Partial) &&\n exchangeOrder?.cancel_accepted === false;\n\n return (\n \n \n

{stringifyStatus(exchangeOrder?.status, intl)}

\n \n }\n >\n {isShowingCancelRejectedContent ? (\n \n ) : null}\n {exchangeOrder?.status === Status.Rejected ? (\n \n ) : null}\n
\n
\n \n

\n \n

\n \n \n \n {exchangeOrder?.daytrade ? (\n
\n \n \n
\n ) : null}\n \n
\n \n

\n \n

\n \n \n
\n
\n \n

\n \n

\n \n \n \n \n \n \n
\n
\n {isShowingCancelButton ? (\n \n ) : null}\n {exchangeOrder?.status === Status.Rejected ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(ExchangeOrderDetails, { fallback: Fallback });\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport ErrorShower from '../ui-utils/error-shower';\n\nconst Wrapper = styled.div`\n width: 100%;\n`;\n\nconst ButtonCard = styled.div.attrs(() => ({}))<{ selected: boolean; inactive: boolean }>`\n width: 100%;\n height: 56px;\n cursor: ${(props) => (props.inactive ? 'not-allowed' : 'pointer')};\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 2px;\n background: var(--matt-bg-color);\n font-weight: ${(props) => (props.selected ? 'bold' : 'initial')};\n border: ${(props) =>\n props.selected ? '2px solid var(--primary-color)' : '0px solid var(--matt-bg-color)'};\n box-shadow: ${(props) => (props.selected ? '0px 0px 20px rgba(0, 102, 255, 0.4)' : 'initial')};\n &:hover {\n background: ${(props) =>\n props.inactive ? 'var(--matt-bg-color)' : 'var(--matt-bg-color-bluish)'};\n }\n & > * {\n cursor: ${(props) => (props.inactive ? 'not-allowed' : 'pointer')};\n color: ${(props) => (props.inactive ? 'var(--gray-text-color)' : '')};\n }\n`;\n\nexport type ButtonSelectOption = {\n label: string;\n value: string;\n};\n\nconst ButtonSelect = (props: {\n options: ButtonSelectOption[];\n onSelect: (option: ButtonSelectOption) => void;\n initialValue?: string;\n className?: string;\n inactive?: boolean;\n error?: string;\n}): JSX.Element => {\n const [selected, setSelected] = useState(\n props.options.find((o) => o.value === props.initialValue),\n );\n\n useEffect(() => {\n if (props.initialValue !== selected?.value) {\n setSelected(props.options.find((o) => o.value === props.initialValue));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.initialValue]);\n\n const handleSelect = (option: ButtonSelectOption): void => {\n if (!props.inactive) {\n setSelected(option);\n if (props.onSelect) {\n props.onSelect(option);\n }\n }\n };\n return (\n \n
\n {props.options.map((o: ButtonSelectOption, index: number) => (\n handleSelect(o)}\n inactive={!!props.inactive}\n >\n \n \n ))}\n
\n \n
\n );\n};\n\nexport default ButtonSelect;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport Presentation from '../../../../../logic/redux/presentation';\nimport { ScreenSize } from '../../../../../styles/screen-sizes';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst MobileContainer = styled.div.attrs(() => ({}))<{ visible: boolean }>`\n max-height: ${(props) => (props.visible ? '500px' : '0px')};\n opacity: ${(props) => (props.visible ? '1' : '0')};\n transition: 0.5s;\n width: 100%;\n font-size: 12px;\n overflow: hidden;\n margin: ${(props) => (props.visible ? '10px' : '0px')}; 0px;\n`;\n\nconst Anchor = styled.div`\n height: 0px;\n width: 100%;\n overflow: visible;\n`;\n\nconst Container = styled.aside.attrs(() => ({}))<{ visible: boolean; yOffset: number }>`\n width: calc(100% - 40px);\n opacity: ${(props) => (props.visible ? '1' : '0')};\n transition: 0.5s;\n font-size: 12px;\n overflow: hidden;\n transform: translate(calc(100% + 80px), ${(props) => props.yOffset}px);\n background: var(--matt-bg-color);\n padding: 20px 30px;\n`;\n\nconst ExchangeOrderFieldInfo = (props: {\n visible: boolean;\n children: JSX.Element | null;\n yOffset?: number;\n}): JSX.Element => {\n const screenSize = useSelector(Presentation.select.selectScreenSize);\n const isInMobileMode = screenSize <= ScreenSize.SM;\n\n if (isInMobileMode) {\n return {props.children};\n }\n\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport default ExchangeOrderFieldInfo;\n","import moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { DateRangePicker } from 'react-dates';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { useQuery } from 'urql';\nimport { assets } from '../../../../assets';\nimport Button from '../../../../components/buttons/button';\nimport { BlurredContainerM3030 } from '../../../../components/containers/containers';\nimport DataRow from '../../../../components/data-viewers/data-row/data-row';\nimport ButtonSelect, { ButtonSelectOption } from '../../../../components/inputs/button-select';\nimport StyledCheckbox from '../../../../components/inputs/styled-checkbox';\nimport StyledInput from '../../../../components/inputs/styled-input';\nimport StyledReactSelect from '../../../../components/inputs/styled-react-select';\nimport ErrorShower from '../../../../components/ui-utils/error-shower';\nimport { InfoIcon } from '../../../../components/ui-utils/info-icon';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport {\n Account,\n DaytradeType,\n Direction,\n ExchangeRateType,\n Query,\n Security,\n SecurityListType,\n SecurityType,\n} from '../../../../logic/graphql/types/types.d';\nimport ExchangeOrders from '../../../../logic/redux/exchange-orders';\nimport { EXCHANGE_ORDER_MAX_INTERVAL } from '../../../../logic/redux/exchange-orders/constants';\nimport { diffInDays, isDateInDates } from '../../../../logic/redux/exchange-orders/helpers';\nimport Presentation from '../../../../logic/redux/presentation';\nimport { Paths } from '../../../../navigation/paths';\nimport ExchangeOrderFieldInfo from '../components/exchange-order-field-info/exchange-order-field-info';\nimport { FormattedMessage, IntlShape, useIntl } from 'react-intl';\n\nconst FormContainer = styled.div`\n width: 100%;\n margin-bottom: 40px;\n @media (min-width: 768px) {\n width: 50%;\n }\n`;\n\nconst FormBlockContainer = styled.section`\n width: 100%;\n margin-bottom: 40px;\n`;\n\ntype InfoType = 'validity' | 'stock-market-time' | 'type' | 'daytrade';\n\nconst getSecurityListType = (direction?: Direction, isDaytrade?: boolean): SecurityListType => {\n if (direction === Direction.Sell && !!isDaytrade) {\n return SecurityListType.All;\n } else if (direction === Direction.Sell) {\n return SecurityListType.OwnActual;\n }\n return SecurityListType.All;\n};\n\nconst getExchangeTypeOptions = (\n intl: IntlShape,\n direction?: Direction,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n security?: Security,\n): { label: string; value: ExchangeRateType }[] => {\n const typeOptions: { label: string; value: ExchangeRateType }[] = [\n {\n label: intl.formatMessage({ id: 'order.exchangeRateType.limit_price' }),\n value: ExchangeRateType.LimitPrice,\n },\n ];\n if (direction === Direction.Sell) {\n typeOptions.push({\n label: intl.formatMessage({ id: 'order.exchangeRateType.stop_market' }),\n value: ExchangeRateType.StopMarket,\n });\n }\n\n typeOptions.push({\n label: intl.formatMessage({ id: 'order.exchangeRateType.stop_limit' }),\n value: ExchangeRateType.StopLimit,\n });\n\n return typeOptions;\n};\n\nconst NewExchangeOrderForm = (props: { onFinishedEditing: () => void }): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const dispatch = useDispatch();\n const intl = useIntl();\n\n const exchangeOrder = useSelector(ExchangeOrders.select.selectEditedExchangeOrder);\n const isValidating = useSelector(ExchangeOrders.select.selectShouldValidate);\n const validationErrors = useSelector(ExchangeOrders.select.selectExchangeOrderValidationErrors);\n const isValid = useSelector(ExchangeOrders.select.selectExchangeOrderIsValid);\n const currentValidDays = useSelector(ExchangeOrders.select.selectValidDates);\n const isMobile = useSelector(Presentation.select.selectIsMobileSize);\n const { selectableStartDates, selectableEndDates } = useSelector(\n ExchangeOrders.select.selectSelectableDates,\n );\n\n // MARK: - State\n const [openInfo, setOpenInfo] = useState(undefined);\n const [datePickerFocusedInput, setDatePickerFocusedInput] = useState<\n 'startDate' | 'endDate' | null\n >(null);\n const selectableDays =\n datePickerFocusedInput === 'startDate'\n ? selectableStartDates\n : datePickerFocusedInput === 'endDate'\n ? selectableEndDates\n : [];\n // MARK: - Graphql operations\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const getAccountBalanceQueryResult = useQuery({\n query: GraphqlOperations.queries.get_account_balance.queryString,\n variables: GraphqlOperations.queries.get_account_balance.createVars(\n exchangeOrder?.account || '',\n exchangeOrder?.securityDetails?.currency?.currency || '',\n ),\n pause: !exchangeOrder?.account || !exchangeOrder?.securityDetails?.currency?.currency,\n requestPolicy: 'network-only',\n })[0];\n\n useEffect(() => {\n if (getAccountBalanceQueryResult.fetching) {\n dispatch(ExchangeOrders.actions.setInvestableAccountBalance(undefined));\n return;\n }\n const investableBalance = getAccountBalanceQueryResult.data?.get_account_balance?.investable;\n dispatch(ExchangeOrders.actions.setInvestableAccountBalance(investableBalance));\n }, [getAccountBalanceQueryResult.data, getAccountBalanceQueryResult.fetching, dispatch]);\n\n const getSecurityAmountQueryResult = useQuery({\n query: GraphqlOperations.queries.get_security_amount.queryString,\n variables: GraphqlOperations.queries.get_security_amount.createVars(\n exchangeOrder?.account || '',\n exchangeOrder?.security || '',\n ),\n pause: !exchangeOrder?.account || !exchangeOrder?.security,\n requestPolicy: 'network-only',\n })[0];\n\n useEffect(() => {\n if (getSecurityAmountQueryResult.fetching) {\n dispatch(ExchangeOrders.actions.setInvestableSecurityAmount(undefined));\n return;\n }\n const investableBalance = getSecurityAmountQueryResult.data?.get_security_amount?.investable;\n dispatch(ExchangeOrders.actions.setInvestableSecurityAmount(investableBalance));\n }, [getSecurityAmountQueryResult.data, getSecurityAmountQueryResult.fetching, dispatch]);\n\n const getSecuritiesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_securities.queryString,\n variables: GraphqlOperations.queries.get_securities.createVars(\n SecurityType.ExchangeOrder,\n getSecurityListType(exchangeOrder?.direction, exchangeOrder?.daytrade),\n exchangeOrder?.account || '',\n ),\n pause: !exchangeOrder?.account || !exchangeOrder?.direction,\n requestPolicy: 'network-only',\n })[0];\n\n const getValidTradingDaysQueryResult = useQuery({\n query: GraphqlOperations.queries.get_valid_trading_days.queryString,\n requestPolicy: 'network-only',\n })[0];\n const allValidDays: string[] = getValidTradingDaysQueryResult.data?.get_valid_trading_days || [];\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (currentValidDays.length === 0 && allValidDays.length > 0) {\n dispatch(ExchangeOrders.actions.setValidDates(allValidDays));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allValidDays]);\n\n useEffect(() => {\n return () => {\n dispatch(ExchangeOrders.actions.setValidDates([]));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // emptying invalid security if it is not in the list\n if (exchangeOrder?.security) {\n const selectableSecurities = getSecuritiesQueryResult.data?.get_securities;\n if (selectableSecurities !== undefined) {\n // act when have data\n const contains = !!selectableSecurities.find(\n (sec) => sec.short_name === exchangeOrder.security,\n );\n if (!contains) {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n security: undefined,\n securityDetails: undefined,\n }),\n );\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getSecuritiesQueryResult.data]);\n\n // MARK: - Event handlers\n\n const handleNext1Click = (): void => {\n if (!isValid) {\n if (!isValidating) {\n dispatch(ExchangeOrders.actions.setShouldValidate(true));\n }\n return;\n }\n\n props.onFinishedEditing();\n };\n\n const handleDirectionChange = (option: ButtonSelectOption): void => {\n // stop piaci csak eladási műveletnél\n if (\n (option.value as Direction) === Direction.Buy &&\n exchangeOrder?.type === ExchangeRateType.StopMarket\n ) {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n direction: option.value as Direction,\n type: undefined,\n }),\n );\n } else {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n direction: option.value as Direction,\n }),\n );\n }\n };\n const handleAccountChange = (value: string | number | number[] | string[]): void => {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n account: value as string,\n accountDetails: userAccountsQueryResult.data?.getUser?.accounts?.find(\n (a) => a.number === value,\n ),\n }),\n );\n };\n const handleSecurityChange = (value: string | number | number[] | string[]): void => {\n const security = getSecuritiesQueryResult.data?.get_securities.find(\n (s) => s.short_name === value,\n );\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n security: value as string,\n securityDetails: security,\n }),\n );\n };\n\n const handleDaytradeChange = (value: boolean): void => {\n if (value) {\n const today = new Date().toISOString();\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n daytrade: value,\n validity_start: today, // daytradeValidDay,\n validity_end: today, // daytradeValidDay,\n }),\n );\n } else {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n daytrade: value,\n validity_start: undefined,\n validity_end: undefined,\n daytrade_type: undefined,\n }),\n );\n }\n };\n\n const handleDaytradeTypeChange = (option: ButtonSelectOption): void => {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n daytrade_type: option.value as DaytradeType,\n }),\n );\n };\n\n const handleExchangeTypeChange = (option: ButtonSelectOption): void => {\n const type = option.value as ExchangeRateType;\n switch (type) {\n case ExchangeRateType.LimitPrice:\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n type,\n activation_price: undefined,\n }),\n );\n break;\n case ExchangeRateType.StopLimit:\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n type,\n }),\n );\n break;\n case ExchangeRateType.StopMarket:\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n type,\n limit_price: undefined,\n }),\n );\n break;\n }\n };\n\n const handleCountChange = (event: React.ChangeEvent): void => {\n const count = parseInt(event.currentTarget.value);\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n count: Math.abs(count),\n }),\n );\n };\n\n const handleActivationPriceChange = (event: React.ChangeEvent): void => {\n const parsedActivationPrice = parseFloat(event.currentTarget.value);\n const activation_price =\n parsedActivationPrice || parsedActivationPrice === 0\n ? Math.abs(parsedActivationPrice)\n : undefined;\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n activation_price,\n }),\n );\n };\n\n const handleLimitPriceChange = (event: React.ChangeEvent): void => {\n const parsedLimitPrice = parseFloat(event.currentTarget.value);\n const limit_price =\n parsedLimitPrice || parsedLimitPrice === 0 ? Math.abs(parsedLimitPrice) : undefined;\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n limit_price,\n }),\n );\n };\n\n const handleOutsideTradingHoursChange = (value: boolean): void => {\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n outside_trading_hours: value,\n }),\n );\n };\n\n const handleDatesChange = ({\n startDate,\n endDate,\n }: {\n startDate: moment.Moment | null;\n endDate: moment.Moment | null;\n }): void => {\n if (startDate && endDate && diffInDays(startDate, endDate) >= EXCHANGE_ORDER_MAX_INTERVAL) {\n const validity_start = startDate?.toISOString();\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n validity_start,\n validity_end: undefined,\n }),\n );\n } else {\n const validity_start = startDate?.toISOString();\n const validity_end = endDate?.toISOString();\n dispatch(\n ExchangeOrders.actions.setEditedExchangeOrder({\n ...exchangeOrder,\n validity_start,\n validity_end,\n }),\n );\n }\n };\n\n // MARK: - Form subparts\n\n const directionSelect = (\n \n );\n\n const accountSelect = (\n ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || []),\n ]}\n isLoading={userAccountsQueryResult.fetching}\n onChange={handleAccountChange}\n defaultValue={\n exchangeOrder?.accountDetails\n ? {\n value: exchangeOrder.accountDetails.number,\n label: `${exchangeOrder.accountDetails.type}: ${exchangeOrder.accountDetails.number}`,\n }\n : undefined\n }\n disabled={!exchangeOrder?.direction}\n error={validationErrors.account && intl.formatMessage({ id: validationErrors.account })}\n />\n );\n\n const observedBalance =\n exchangeOrder?.direction === Direction.Buy\n ? getAccountBalanceQueryResult?.data?.get_account_balance\n : getSecurityAmountQueryResult?.data?.get_security_amount;\n const balanceUnit =\n exchangeOrder?.direction === Direction.Buy\n ? exchangeOrder.securityDetails?.currency.currency\n : intl.formatMessage({ id: 'exchangeOrderFormPage.form.pcs' });\n const summary = (\n <>\n {exchangeOrder?.direction && exchangeOrder?.account ? (\n \n ) : null}\n {exchangeOrder?.direction && exchangeOrder?.account ? (\n \n ) : null}\n \n );\n\n const securitySelect = (\n ({\n value: s.short_name,\n label: s.name + ` (${s.currency.currency})`,\n })) || []\n }\n searchable\n onChange={handleSecurityChange}\n isLoading={getSecuritiesQueryResult.fetching}\n defaultValue={\n exchangeOrder?.securityDetails\n ? {\n value: exchangeOrder.securityDetails.short_name,\n label: exchangeOrder?.securityDetails.name,\n }\n : undefined\n }\n value={\n exchangeOrder?.securityDetails\n ? {\n value: exchangeOrder.securityDetails.short_name,\n label: exchangeOrder.securityDetails.name,\n }\n : null\n }\n disabled={!exchangeOrder?.direction || !exchangeOrder?.account}\n error={validationErrors.security && intl.formatMessage({ id: validationErrors.security })}\n />\n );\n\n const stockExchangeLocality =\n exchangeOrder?.securityDetails !== undefined ? (\n \n ) : null;\n\n const daytradeCheckbox = (\n <>\n
\n \n \n \n \n openInfo === 'daytrade' ? setOpenInfo(undefined) : setOpenInfo('daytrade')\n }\n />\n
\n \n

\n \n \n {' '}\n \n

\n
\n \n );\n\n const daytradeTypeSelect = exchangeOrder?.daytrade ? (\n <>\n
\n \n \n \n
\n \n \n ) : null;\n\n const exchangeTypeSelect = (\n <>\n
\n
\n \n \n \n
\n (openInfo === 'type' ? setOpenInfo(undefined) : setOpenInfo('type'))}\n />\n
\n \n \n \n\n \n \n );\n\n const activationPriceInput =\n exchangeOrder?.type === ExchangeRateType.StopLimit ||\n exchangeOrder?.type === ExchangeRateType.StopMarket ? (\n \n ) : null;\n\n const limitPriceInput =\n exchangeOrder?.type === ExchangeRateType.StopLimit ||\n exchangeOrder?.type === ExchangeRateType.LimitPrice ? (\n \n ) : null;\n\n const countInput = (\n \n );\n\n const outsideTradingHoursCheckbox = (\n <>\n
\n \n \n \n \n openInfo === 'stock-market-time'\n ? setOpenInfo(undefined)\n : setOpenInfo('stock-market-time')\n }\n />\n
\n \n \n \n \n );\n\n const datePicker = (\n setDatePickerFocusedInput(focusedInput)}\n small\n hideKeyboardShortcutsPanel\n daySize={30}\n minimumNights={0}\n startDatePlaceholderText={intl.formatMessage({\n id: 'exchangeOrderFormPage.form.dateRangeStartLabel',\n })}\n endDatePlaceholderText={intl.formatMessage({\n id: 'exchangeOrderFormPage.form.dateRangeEndLabel',\n })}\n disabled={!exchangeOrder?.direction || exchangeOrder?.daytrade}\n isDayBlocked={(day: moment.Moment) => {\n return !isDateInDates(day.toISOString(), selectableDays);\n }}\n orientation={isMobile ? 'vertical' : 'horizontal'}\n />\n );\n\n const validityDatePicker = (\n <>\n
\n \n \n \n
\n \n handleDatesChange({\n startDate: moment(),\n endDate: e.value === String(true) ? moment() : null,\n })\n }\n initialValue={\n exchangeOrder?.validity_start ? String(!!exchangeOrder?.validity_end) : undefined\n }\n className=\"mb-3\"\n inactive={exchangeOrder?.daytrade || !exchangeOrder?.direction}\n error={validationErrors.dates && intl.formatMessage({ id: validationErrors.dates })}\n />\n \n );\n\n /*const validityDatePicker = (\n <>\n
\n
\n Érvényesség\n
\n \n openInfo === 'validity' ? setOpenInfo(undefined) : setOpenInfo('validity')\n }\n />\n
\n \n

\n Érvényesség: A megbízás érvényességi ideje maximum 30 nap lehet.\n

\n
\n
\n {datePicker}\n
\n \n \n );*/\n\n const navigationButtons = (\n
\n \n \n \n \n
\n );\n\n return (\n \n \n

\n \n

\n \n {directionSelect}\n {accountSelect}\n {securitySelect}\n {stockExchangeLocality}\n {summary}\n \n {/*\n {daytradeCheckbox}\n {daytradeTypeSelect}\n */}\n \n {exchangeTypeSelect}\n {activationPriceInput}\n {limitPriceInput}\n {countInput}\n {outsideTradingHoursCheckbox}\n \n {validityDatePicker}\n
\n {navigationButtons}\n
\n );\n};\n\nexport default NewExchangeOrderForm;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery } from 'urql';\nimport { assets } from '../../../assets';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport { Query } from '../../../logic/graphql/types/types';\nimport ExchangeOrders from '../../../logic/redux/exchange-orders';\nimport { Paths } from '../../../navigation/paths';\nimport NewExchangeOrderForm from './step-1-form/new-exchange-order-form';\nimport NewExchangeOrderDetails from './step-2-details/new-exchange-order-details';\nimport NewExchangeOrderConfirmation from './step-3-confirmation/new-exchange-order-confirmation';\nimport { useIntl } from 'react-intl';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet unregisterHistoryBlock: any;\n\nconst NewExchangeOrder = (): JSX.Element => {\n const dispatch = useDispatch();\n const history = useHistory();\n const intl = useIntl();\n\n const exchangeOrder = useSelector(ExchangeOrders.select.selectEditedExchangeOrder);\n\n const [currentStep, setCurrentStep] = useState(0);\n const [token, setToken] = useState('');\n\n const getUserNeedTransactionSecondConfirmationQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserNeedTransactionSecondConfirmation.queryString,\n })[0];\n\n // navigation blocking: https://medium.com/@jozollo/blocking-navigation-with-react-router-v4-a3f2e359d096,\n // https://github.com/szymonkaliski/react-window-mixins/issues/2\n\n useEffect(() => {\n return () => {\n dispatch(ExchangeOrders.actions.setEditedExchangeOrder(undefined));\n dispatch(ExchangeOrders.actions.setInvestableAccountBalance(undefined));\n dispatch(ExchangeOrders.actions.setInvestableSecurityAmount(undefined));\n dispatch(ExchangeOrders.actions.setShouldValidate(false));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // blocking browser navigation\n const handler = (event: BeforeUnloadEvent): string | null => {\n const confirmationMessage = 'Biztosan bezárod';\n (event || window.event).returnValue = confirmationMessage; //Gecko + IE\n return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.\n };\n window.addEventListener('beforeunload', handler);\n\n return () => {\n window.removeEventListener('beforeunload', handler);\n if (unregisterHistoryBlock) {\n unregisterHistoryBlock();\n unregisterHistoryBlock = null;\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (exchangeOrder && !unregisterHistoryBlock) {\n // blocking router\n unregisterHistoryBlock = history.block(() => {\n return 'Biztosan bezárod?';\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [exchangeOrder]);\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleSuccesfulConfirmation = (): void => {\n if (unregisterHistoryBlock) {\n unregisterHistoryBlock();\n unregisterHistoryBlock = null;\n }\n dispatch(ExchangeOrders.actions.setEditedExchangeOrder(undefined));\n dispatch(ExchangeOrders.actions.setInvestableAccountBalance(undefined));\n dispatch(ExchangeOrders.actions.setInvestableSecurityAmount(undefined));\n dispatch(ExchangeOrders.actions.setShouldValidate(false));\n history.push(Paths.exchange_orders);\n };\n\n const renderCurrentStepContent = (): JSX.Element | null => {\n switch (currentStep) {\n case 0:\n return (\n {\n setCurrentStep(1);\n }}\n />\n );\n case 1:\n return (\n {\n setToken(t);\n setCurrentStep(2);\n }}\n onBackClick={() => setCurrentStep(0)}\n />\n );\n case 2:\n return (\n setCurrentStep(1)}\n needsConfirmation={\n getUserNeedTransactionSecondConfirmationQueryResult.data?.getUser\n ?.need_transaction_second_confirmation\n }\n token={token}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n \n {renderCurrentStepContent()}\n \n );\n};\n\nexport default withErrorBoundary(NewExchangeOrder, { fallback: Fallback });\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation } from 'urql';\nimport Button from '../../../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../../../components/containers/containers';\nimport DataRow from '../../../../components/data-viewers/data-row/data-row';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport { CreateExchangeOrder } from '../../../../logic/graphql/types/types';\nimport ExchangeOrders from '../../../../logic/redux/exchange-orders';\nimport { stringifyExchangeRateType } from '../../../../helpers/type-formatters';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst NewExchangeOrderDetails = (props: {\n onCreationSuccess: (token: string) => void;\n onBackClick: () => void;\n}): JSX.Element | null => {\n const intl = useIntl();\n const { addToast } = useToasts();\n const exchangeOrder = useSelector(ExchangeOrders.select.selectEditedExchangeOrder);\n\n const [creationResult, createExchangeOrder] = useMutation(\n GraphqlOperations.mutations.create_exchange_order.mutationString,\n );\n\n if (!exchangeOrder || !exchangeOrder.securityDetails) {\n return null;\n }\n\n const handleCreateClick = (): void => {\n if (\n exchangeOrder &&\n exchangeOrder.direction &&\n exchangeOrder.account &&\n exchangeOrder.security !== undefined &&\n exchangeOrder.count !== undefined &&\n exchangeOrder.type &&\n exchangeOrder.validity_start\n ) {\n const createdExchangeOrder: CreateExchangeOrder = {\n edited_id: exchangeOrder.edited_id,\n direction: exchangeOrder.direction,\n account: exchangeOrder.account,\n security: exchangeOrder.security,\n count: exchangeOrder.count,\n daytrade: !!exchangeOrder.daytrade,\n daytrade_type: exchangeOrder.daytrade_type,\n type: exchangeOrder.type,\n limit_price: exchangeOrder.limit_price,\n activation_price: exchangeOrder.activation_price,\n outside_trading_hours: !!exchangeOrder.outside_trading_hours,\n validity_start: exchangeOrder.validity_start,\n validity_end: exchangeOrder.validity_end ? exchangeOrder.validity_end : null,\n };\n const variables = GraphqlOperations.mutations.create_exchange_order.createVars(\n createdExchangeOrder,\n );\n createExchangeOrder(variables)\n .then((result) => {\n if (result && !result.error && result.data?.create_exchange_order) {\n props.onCreationSuccess(result.data.create_exchange_order);\n } else {\n addToast(intl.formatMessage({ id: 'exchangeOrderFormPage.overview.toast.error' }), {\n appearance: 'error',\n autoDismiss: true,\n });\n }\n return true;\n })\n .catch(() =>\n addToast(intl.formatMessage({ id: 'exchangeOrderFormPage.overview.toast.error' }), {\n appearance: 'error',\n autoDismiss: true,\n }),\n );\n }\n };\n\n return (\n <>\n
\n
\n \n

\n \n

\n \n \n {/*\n */}\n \n
\n \n

\n \n

\n \n \n\n \n
\n
\n \n

\n \n

\n \n \n \n \n \n
\n
\n
\n \n \n
\n \n );\n};\n\nexport default NewExchangeOrderDetails;\n","import React, { useState } from 'react';\nimport { useToasts } from 'react-toast-notifications';\nimport { useMutation } from 'urql';\nimport Button from '../../../../components/buttons/button';\nimport { BlurredContainerM3030 } from '../../../../components/containers/containers';\nimport StyledInput from '../../../../components/inputs/styled-input';\nimport { GraphqlOperations } from '../../../../logic/graphql/operations';\nimport { useUserPhoneNumber } from '../../../../logic/graphql/hooks';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst NewExchangeOrderConfirmation = (props: {\n onSuccess: () => void;\n onBackClick: () => void;\n token?: string;\n needsConfirmation?: boolean;\n}): JSX.Element => {\n const { addToast } = useToasts();\n const { phoneNumber } = useUserPhoneNumber();\n const intl = useIntl();\n const [smsCode, setSMSCode] = useState('');\n const [smsCodeError, setSMSCodeError] = useState('');\n\n const confirmPassword = useMutation(\n GraphqlOperations.mutations.create_exchange_order_confirm.mutationString,\n )[1];\n\n const handleNext3Click = (): void => {\n if (props.token) {\n const variables = GraphqlOperations.mutations.create_exchange_order_confirm.createVars(\n smsCode,\n props.token,\n );\n confirmPassword(variables)\n .then((result) => {\n if (result && !result.error) {\n addToast(\n intl.formatMessage({ id: 'exchangeOrderFormPage.confirmation.toast.success' }),\n {\n appearance: 'success',\n autoDismiss: true,\n },\n );\n props.onSuccess();\n } else {\n if (props.needsConfirmation) {\n setSMSCodeError(\n intl.formatMessage({\n id: 'exchangeOrderFormPage.confirmation.toast.invalidPassword',\n }),\n );\n }\n }\n return true;\n })\n .catch(() =>\n setSMSCodeError(\n intl.formatMessage({ id: 'exchangeOrderFormPage.confirmation.toast.invalidPassword' }),\n ),\n );\n }\n };\n\n const handleSMSChange = (event: React.ChangeEvent): void => {\n setSMSCode(event.currentTarget.value);\n };\n\n const confirmationContent = (\n <>\n

\n \n

\n \n \n \n );\n\n const infoContent = (\n <>\n

\n \n

\n

\n \n

\n \n );\n\n const content = props.needsConfirmation ? confirmationContent : infoContent;\n\n return (\n \n {content}\n
\n \n \n
\n
\n );\n};\n\nexport default NewExchangeOrderConfirmation;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport {\n DataVariant,\n ListItemData,\n ListItemDataRow,\n} from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport {\n Direction,\n Status,\n UnitOrderListItem as ListItemDataInput,\n} from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst UnitOrderListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const intl = useIntl();\n const history = useHistory();\n\n const handleOnClick = (): void => {\n history.push(Paths.unit_orders + '/' + props.listItem.transaction_code);\n };\n\n const dataLines1: ListItemDataRow[] = [\n {\n label: intl.formatMessage({ id: 'unitOrders.listItem.pcs' }),\n value: props.listItem.count.toString(),\n variant: DataVariant.gray,\n },\n ];\n if (props.listItem.direction === Direction.Buy) {\n dataLines1.push({\n label: intl.formatMessage({ id: 'unitOrders.listItem.purchaseValue' }),\n value: formatNumber(props.listItem.purchase_value, props.listItem.security.currency.currency),\n });\n }\n\n const dataLines2: ListItemDataRow[] = [\n {\n label: intl.formatMessage({ id: 'unitOrders.listItem.completedCount' }),\n value: props.listItem.fulfilled_count.toString(),\n variant: DataVariant.gray,\n },\n {\n label: intl.formatMessage({ id: 'unitOrders.listItem.dealPrice' }),\n value: formatNumber(\n props.listItem.deal_price,\n `${props.listItem.security.currency.currency} / db`,\n 6,\n ),\n },\n ];\n\n const detailBlocks = [\n {\n dataLines: dataLines1,\n },\n ];\n\n if (props.listItem.status === Status.Completed || props.listItem.status === Status.Partial) {\n detailBlocks.push({\n dataLines: dataLines2,\n });\n } else {\n detailBlocks.push({ dataLines: [] });\n }\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: false,\n title: props.listItem.security.name,\n titleExtension: intl.formatMessage({ id: 'unitOrders.listItem.securityExtension' }),\n transactionCode: props.listItem.transaction_code,\n detailBlocks,\n date:\n formatDate(props.listItem.validity_start) + ' - ' + formatDate(props.listItem.validity_end),\n direction: props.listItem.direction,\n };\n\n return (\n \n );\n};\n\nexport default UnitOrderListItem;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport { getStatusOptions, getUnitOrderingOptions } from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n OrderingDirection,\n OrderingType,\n Query,\n SecurityListType,\n SecurityType,\n Status,\n Subscription,\n UnitOrderListItem,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/unit-order-list-item';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst UnitOrders = (): JSX.Element => {\n const intl = useIntl();\n // MARK: - Resources\n const history = useHistory();\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl);\n }, [intl]);\n\n const unitOrderingOptions = useMemo(() => {\n return getUnitOrderingOptions(intl);\n }, [intl]);\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedSecurities, setSelectedInstruments] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.ValidityStart,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_unit_orders.queryString,\n variables: GraphqlOperations.queries.get_unit_orders.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedSecurities,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const securitiesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_securities.queryString,\n variables: GraphqlOperations.queries.get_securities.createVars(\n SecurityType.UnitOrder,\n SecurityListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewUnitOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionUnitOrders: UnitOrderListItem[] = [],\n response: Subscription,\n ): UnitOrderListItem[] => {\n if (response && response.new_unit_order) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_unit_order.subscriptionString,\n },\n handleNewUnitOrderSubscription,\n );\n\n const handleUpdateUnitOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionUnitOrders: UnitOrderListItem[] = [],\n response: Subscription,\n ): UnitOrderListItem[] => {\n if (response && response.update_unit_order) {\n const item = response.update_unit_order;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_unit_order.subscriptionString,\n },\n handleUpdateUnitOrderSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_unit_orders?.page_count !== undefined &&\n itemsResultQuery.data.get_unit_orders.page === currentPage\n ) {\n setItems([...items.concat(itemsResultQuery.data.get_unit_orders.unit_orders)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_unit_orders?.unit_orders &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_unit_orders?.page_count !== undefined &&\n itemsResultQuery.data?.get_unit_orders?.page !== undefined &&\n itemsResultQuery.data.get_unit_orders.page_count >\n itemsResultQuery.data.get_unit_orders.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n setSelectedInstruments([]);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: s.short_name,\n label: s.name,\n })) || []\n }\n />\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(UnitOrders, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDate } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport { Query, Status, Subscription, UnitOrderListItem } from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst UnitOrderDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [unitOrderQueryResult, reexecuteUnitOrderQuery] = useQuery({\n query: GraphqlOperations.queries.get_unit_order.queryString,\n variables: GraphqlOperations.queries.get_unit_order.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const unitOrder = unitOrderQueryResult.data?.get_unit_order;\n\n const handleUpdateUnitOrderSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionUnitOrders: UnitOrderListItem[] = [],\n response: Subscription,\n ): UnitOrderListItem[] => {\n if (response && response.update_unit_order) {\n if (\n response.update_unit_order.transaction_code ===\n unitOrderQueryResult.data?.get_unit_order.transaction_code\n ) {\n reexecuteUnitOrderQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_unit_order.subscriptionString,\n },\n handleUpdateUnitOrderSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const title = unitOrder?.security.name\n ? unitOrder?.security.name +\n intl.formatMessage({ id: 'unitOrders.details.titleSecurityExtension' })\n : intl.formatMessage({ id: 'unitOrders.details.defaultTitle' });\n const titleWithTransactionCode = unitOrder?.transaction_code\n ? title + ' - ' + unitOrder.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(unitOrder?.status, intl)}

\n \n }\n >\n
\n
\n \n

\n \n

\n \n \n
\n \n

\n \n

\n \n \n
\n
\n \n

\n \n

\n \n \n \n \n \n \n
\n
\n {unitOrder?.status === Status.Active || unitOrder?.status === Status.Partial ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(UnitOrderDetails, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { MoneyTransitionListItem as ListItemDataInput } from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst MoneyTransitionListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n const handleOnClick = (): void => {\n history.push(Paths.money_transitions + '/' + props.listItem.transaction_code);\n };\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: true,\n title: props.listItem.currency,\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'moneyTransitions.listItem.fromAccount' }),\n value: props.listItem.from_account,\n },\n {\n label: intl.formatMessage({ id: 'moneyTransitions.listItem.toAccount' }),\n value: props.listItem.to_account,\n },\n ],\n },\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'moneyTransitions.listItem.amount' }),\n value: formatNumber(props.listItem.amount, props.listItem.currency),\n variant: DataVariant.highlighted,\n },\n ],\n },\n ],\n date: formatDate(props.listItem.transfer_date),\n };\n\n return (\n \n );\n};\n\nexport default MoneyTransitionListItem;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport { getStatusOptions, getMoneyTransitionOrderingOptions } from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n CurrencyListType,\n CurrencyType,\n MoneyTransitionListItem,\n OrderingDirection,\n OrderingType,\n Query,\n Status,\n Subscription,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/money-transition-list-item';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst MoneyTransitions = (): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const intl = useIntl();\n\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl, 'nopartialorexpired');\n }, [intl]);\n\n const moneyTransitionOrderingOptions = useMemo(() => {\n return getMoneyTransitionOrderingOptions(intl);\n }, [intl]);\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedCurrencies, setSelectedCurrencies] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.OrderDate,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_money_transitions.queryString,\n variables: GraphqlOperations.queries.get_money_transitions.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedCurrencies,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const currenciesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_currencies.queryString,\n variables: GraphqlOperations.queries.get_currencies.createVars(\n CurrencyType.Transition,\n CurrencyListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewMoneyTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransitions: MoneyTransitionListItem[] = [],\n response: Subscription,\n ): MoneyTransitionListItem[] => {\n if (response && response.new_money_transition) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_money_transition.subscriptionString,\n },\n handleNewMoneyTransitionSubscription,\n );\n\n const handleUpdateMoneyTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransitions: MoneyTransitionListItem[] = [],\n response: Subscription,\n ): MoneyTransitionListItem[] => {\n if (response && response.update_money_transition) {\n const item = response.update_money_transition;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_money_transition.subscriptionString,\n },\n handleUpdateMoneyTransitionSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_money_transitions?.page_count !== undefined &&\n itemsResultQuery.data.get_money_transitions.page === currentPage\n ) {\n setItems([...items.concat(itemsResultQuery.data.get_money_transitions.money_transitions)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n // MARK: - UI Methods\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_money_transitions?.money_transitions &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_money_transitions?.page_count !== undefined &&\n itemsResultQuery.data?.get_money_transitions?.page !== undefined &&\n itemsResultQuery.data.get_money_transitions.page_count >\n itemsResultQuery.data.get_money_transitions.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: c.currency,\n label: c.currency,\n })) || []\n }\n />\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(MoneyTransitions, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n MoneyTransitionListItem,\n Query,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst MoneyTransitionDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [moneyTransitionQueryResult, reexecuteMoneyTransitionQuery] = useQuery({\n query: GraphqlOperations.queries.get_money_transition.queryString,\n variables: GraphqlOperations.queries.get_money_transition.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const moneyTransition = moneyTransitionQueryResult.data?.get_money_transition;\n\n const handleUpdateMoneyTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransitions: MoneyTransitionListItem[] = [],\n response: Subscription,\n ): MoneyTransitionListItem[] => {\n if (response && response.update_money_transition) {\n if (\n response.update_money_transition.transaction_code ===\n moneyTransitionQueryResult.data?.get_money_transition.transaction_code\n ) {\n reexecuteMoneyTransitionQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_money_transition.subscriptionString,\n },\n handleUpdateMoneyTransitionSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const title = moneyTransition?.currency\n ? moneyTransition.currency +\n intl.formatMessage({ id: 'moneyTransitions.details.titleCurrencyExtension' })\n : intl.formatMessage({ id: 'moneyTransitions.details.defaultTitle' });\n const titleWithTransactionCode = moneyTransition?.transaction_code\n ? title + ' - ' + moneyTransition.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(moneyTransition?.status, intl)}

\n \n }\n >\n
\n \n

\n \n

\n \n \n \n \n \n \n
\n
\n {moneyTransition?.status === Status.Active ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(MoneyTransitionDetails, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { SecurityTransitionListItem as ListItemDataInput } from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst SecurityTransitionListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n\n const handleOnClick = (): void => {\n history.push(Paths.security_transitions + '/' + props.listItem.transaction_code);\n };\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: false,\n title: props.listItem.security.name,\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'securityTransitions.listItem.fromAccount' }),\n value: props.listItem.from_account,\n },\n {\n label: intl.formatMessage({ id: 'securityTransitions.listItem.toAccount' }),\n value: props.listItem.to_account,\n },\n ],\n },\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'securityTransitions.listItem.count' }),\n value: formatNumber(\n props.listItem.amount,\n intl.formatMessage({ id: 'securityTransitions.listItem.pcs' }),\n ),\n variant: DataVariant.highlighted,\n },\n ],\n },\n ],\n date: formatDate(props.listItem.transfer_date),\n };\n\n return (\n \n );\n};\n\nexport default SecurityTransitionListItem;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport {\n getStatusOptions,\n getSecurityTransitionsOrderingOptions,\n} from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n OrderingDirection,\n OrderingType,\n Query,\n SecurityListType,\n SecurityTransitionListItem,\n SecurityType,\n Status,\n Subscription,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/security-transition-list-item';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst SecurityTransitions = (): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const intl = useIntl();\n\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl, 'nopartialorexpired');\n }, [intl]);\n\n const securityTransitionsOrderingOptions = useMemo(() => {\n return getSecurityTransitionsOrderingOptions(intl);\n }, [intl]);\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedSecurities, setSelectedInstruments] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.OrderDate,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_security_transitions.queryString,\n variables: GraphqlOperations.queries.get_security_transitions.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedSecurities,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const securitiesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_securities.queryString,\n variables: GraphqlOperations.queries.get_securities.createVars(\n SecurityType.Transition,\n SecurityListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewSecurityTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransitions: SecurityTransitionListItem[] = [],\n response: Subscription,\n ): SecurityTransitionListItem[] => {\n if (response && response.new_security_transition) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_security_transition.subscriptionString,\n },\n handleNewSecurityTransitionSubscription,\n );\n\n const handleUpdateSecurityTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransitions: SecurityTransitionListItem[] = [],\n response: Subscription,\n ): SecurityTransitionListItem[] => {\n if (response && response.update_security_transition) {\n const item = response.update_security_transition;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_security_transition.subscriptionString,\n },\n handleUpdateSecurityTransitionSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_security_transitions?.page_count !== undefined &&\n itemsResultQuery.data.get_security_transitions.page === currentPage\n ) {\n setItems([\n ...items.concat(itemsResultQuery.data.get_security_transitions.security_transitions),\n ]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_security_transitions?.security_transitions &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_security_transitions?.page_count !== undefined &&\n itemsResultQuery.data?.get_security_transitions?.page !== undefined &&\n itemsResultQuery.data.get_security_transitions.page_count >\n itemsResultQuery.data.get_security_transitions.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n setSelectedInstruments([]);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: s.short_name,\n label: s.name,\n })) || []\n }\n />\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(SecurityTransitions, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n Query,\n SecurityTransitionListItem,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst SecurityTransitionDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [securityTransitionQueryResult, reexecuteSecurityTransitionQuery] = useQuery({\n query: GraphqlOperations.queries.get_security_transition.queryString,\n variables: GraphqlOperations.queries.get_security_transition.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const securityTransition = securityTransitionQueryResult.data?.get_security_transition;\n\n const handleUpdateSecurityTransitionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransitions: SecurityTransitionListItem[] = [],\n response: Subscription,\n ): SecurityTransitionListItem[] => {\n if (response && response.update_security_transition) {\n if (\n response.update_security_transition.transaction_code ===\n securityTransitionQueryResult.data?.get_security_transition.transaction_code\n ) {\n reexecuteSecurityTransitionQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_security_transition.subscriptionString,\n },\n handleUpdateSecurityTransitionSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const title = securityTransition?.security.name\n ? securityTransition?.security.name +\n intl.formatMessage({ id: 'securityTransitions.details.titleSecurityExtension' })\n : intl.formatMessage({ id: 'securityTransitions.details.defaultTitle' });\n const titleWithTransactionCode = securityTransition?.transaction_code\n ? title + ' - ' + securityTransition.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(securityTransition?.status, intl)}

\n \n }\n >\n
\n \n

\n \n

\n \n \n \n \n \n
\n
\n {securityTransition?.status === Status.Active ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(SecurityTransitionDetails, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { CurrencyConversionListItem as ListItemDataInput } from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst CurrencyConversionListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n\n const handleOnClick = (): void => {\n history.push(Paths.currency_conversions + '/' + props.listItem.transaction_code);\n };\n\n const exchangeRateDescriptor =\n (props.listItem.from_currency.currency || '') +\n ' / ' +\n (props.listItem.to_currency.currency || '');\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: true,\n title: props.listItem.from_currency.currency + ' - ' + props.listItem.to_currency.currency,\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'currencyConversions.listItem.fromAmount' }),\n value: formatNumber(props.listItem.from_amount, props.listItem.from_currency.currency),\n variant: DataVariant.highlighted,\n },\n ],\n },\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'currencyConversions.listItem.toAmount' }),\n value: formatNumber(props.listItem.to_amount, props.listItem.to_currency.currency),\n },\n {\n label: intl.formatMessage({ id: 'currencyConversions.listItem.exchangeRate' }),\n value: formatNumber(props.listItem.exchange_rate, exchangeRateDescriptor),\n },\n ],\n },\n ],\n date: formatDate(props.listItem.order_date),\n };\n\n return (\n \n );\n};\n\nexport default CurrencyConversionListItem;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport {\n getCurrencyConversionsOrderingOptions,\n getStatusOptions,\n} from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n CurrencyConversionListItem,\n CurrencyListType,\n CurrencyType,\n OrderingDirection,\n OrderingType,\n Query,\n Status,\n Subscription,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/currency-conversion-list-item';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst CurrencyConversions = (): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const intl = useIntl();\n\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl, 'nopartialorexpired');\n }, [intl]);\n\n const currencyConversionsOrderingOptions = useMemo(() => {\n return getCurrencyConversionsOrderingOptions(intl);\n }, [intl]);\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedCurrencies, setSelectedCurrencies] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.OrderDate,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_currency_conversions.queryString,\n variables: GraphqlOperations.queries.get_currency_conversions.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedCurrencies,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const currenciesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_currencies.queryString,\n variables: GraphqlOperations.queries.get_currencies.createVars(\n CurrencyType.Conversion,\n CurrencyListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewCurrencyConversionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionCurrencyConversions: CurrencyConversionListItem[] = [],\n response: Subscription,\n ): CurrencyConversionListItem[] => {\n if (response && response.new_currency_conversion) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_currency_conversion.subscriptionString,\n },\n handleNewCurrencyConversionSubscription,\n );\n\n const handleUpdateCurrencyConversionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionCurrencyConversions: CurrencyConversionListItem[] = [],\n response: Subscription,\n ): CurrencyConversionListItem[] => {\n if (response && response.update_currency_conversion) {\n const item = response.update_currency_conversion;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_currency_conversion.subscriptionString,\n },\n handleUpdateCurrencyConversionSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_currency_conversions?.page_count !== undefined &&\n itemsResultQuery.data.get_currency_conversions.page === currentPage\n ) {\n setItems([\n ...items.concat(itemsResultQuery.data.get_currency_conversions.currency_conversions),\n ]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_currency_conversions?.currency_conversions &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_currency_conversions?.page_count !== undefined &&\n itemsResultQuery.data?.get_currency_conversions?.page !== undefined &&\n itemsResultQuery.data.get_currency_conversions.page_count >\n itemsResultQuery.data.get_currency_conversions.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: c.currency,\n label: c.currency,\n })) || []\n }\n />\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(CurrencyConversions, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n CurrencyConversionListItem,\n Query,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst CurrencyConversionDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [currencyConversionQueryResult, reexecuteCurrencyConversionQuery] = useQuery({\n query: GraphqlOperations.queries.get_currency_conversion.queryString,\n variables: GraphqlOperations.queries.get_currency_conversion.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const currencyConversion = currencyConversionQueryResult.data?.get_currency_conversion;\n\n const handleUpdateCurrencyConversionSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionCurrencyConversions: CurrencyConversionListItem[] = [],\n response: Subscription,\n ): CurrencyConversionListItem[] => {\n if (response && response.update_currency_conversion) {\n if (\n response.update_currency_conversion.transaction_code ===\n currencyConversionQueryResult.data?.get_currency_conversion.transaction_code\n ) {\n reexecuteCurrencyConversionQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_currency_conversion.subscriptionString,\n },\n handleUpdateCurrencyConversionSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const exchangeRateDescriptor =\n (currencyConversion?.from_currency.currency || '') +\n ' / ' +\n (currencyConversion?.to_currency.currency || '');\n\n const title =\n currencyConversion?.from_currency.currency && currencyConversion?.to_currency.currency\n ? currencyConversion.from_currency.currency +\n ' - ' +\n currencyConversion.to_currency.currency +\n intl.formatMessage({ id: 'currencyConversions.details.titleCurrencyExtension' })\n : intl.formatMessage({ id: 'currencyConversions.details.defaultTitle' });\n const titleWithTransactionCode = currencyConversion?.transaction_code\n ? title + ' - ' + currencyConversion.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(currencyConversion?.status, intl)}

\n \n }\n >\n
\n \n

\n \n

\n \n \n \n \n
\n \n

\n \n

\n\n \n \n \n
\n
\n {currencyConversion?.status === Status.Active ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(CurrencyConversionDetails, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { SecurityTransferListItem as ListItemDataInput } from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst SecurityTransferListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const history = useHistory();\n const intl = useIntl();\n const handleOnClick = (): void => {\n history.push(Paths.security_transfers + '/' + props.listItem.transaction_code);\n };\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: true,\n title: props.listItem.security.name,\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'securityTransfers.listItem.fromAccount' }),\n value: props.listItem.account,\n },\n ],\n },\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'securityTransfers.listItem.count' }),\n value: formatNumber(\n props.listItem.amount,\n intl.formatMessage({ id: 'securityTransfers.listItem.pcs' }),\n ),\n variant: DataVariant.highlighted,\n },\n ],\n },\n ],\n date: formatDate(props.listItem.order_date),\n };\n\n return (\n \n );\n};\n\nexport default SecurityTransferListItem;\n","import { withErrorBoundary } from '@sentry/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport {\n getStatusOptions,\n getSecurityTransfersOrderingOptions,\n} from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n OrderingDirection,\n OrderingType,\n Query,\n SecurityListType,\n SecurityTransferListItem,\n SecurityType,\n Status,\n Subscription,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/security-transfer-list-item';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst SecurityTransfers = (): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const intl = useIntl();\n\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl, 'nopartialorexpired');\n }, [intl]);\n\n const securityTransfersOrderingOptions = useMemo(() => {\n return getSecurityTransfersOrderingOptions(intl);\n }, [intl]);\n\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedSecurities, setSelectedInstruments] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.TransferDate,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_security_transfers.queryString,\n variables: GraphqlOperations.queries.get_security_transfers.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedSecurities,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const securitiesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_securities.queryString,\n variables: GraphqlOperations.queries.get_securities.createVars(\n SecurityType.Transfer,\n SecurityListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewSecurityTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransfers: SecurityTransferListItem[] = [],\n response: Subscription,\n ): SecurityTransferListItem[] => {\n if (response && response.new_security_transfer) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_security_transfer.subscriptionString,\n },\n handleNewSecurityTransferSubscription,\n );\n\n const handleUpdateSecurityTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransfers: SecurityTransferListItem[] = [],\n response: Subscription,\n ): SecurityTransferListItem[] => {\n if (response && response.update_security_transfer) {\n const item = response.update_security_transfer;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_security_transfer.subscriptionString,\n },\n handleUpdateSecurityTransferSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_security_transfers?.page_count !== undefined &&\n itemsResultQuery.data.get_security_transfers.page === currentPage\n ) {\n setItems([...items.concat(itemsResultQuery.data.get_security_transfers.security_transfers)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_security_transfers?.security_transfers &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_security_transfers?.page_count !== undefined &&\n itemsResultQuery.data?.get_security_transfers?.page !== undefined &&\n itemsResultQuery.data.get_security_transfers.page_count >\n itemsResultQuery.data.get_security_transfers.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n setSelectedInstruments([]);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: s.short_name,\n label: s.name,\n })) || []\n }\n />\n {' '}\n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(SecurityTransfers, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n Query,\n SecurityTransferListItem,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst SecurityTransferDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [securityTransferQueryResult, reexecuteSecurityTransferQuery] = useQuery({\n query: GraphqlOperations.queries.get_security_transfer.queryString,\n variables: GraphqlOperations.queries.get_security_transfer.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const securityTransfer = securityTransferQueryResult.data?.get_security_transfer;\n\n const handleUpdateSecurityTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionSecurityTransfers: SecurityTransferListItem[] = [],\n response: Subscription,\n ): SecurityTransferListItem[] => {\n if (response && response.update_security_transfer) {\n if (\n response.update_security_transfer.transaction_code ===\n securityTransferQueryResult.data?.get_security_transfer.transaction_code\n ) {\n reexecuteSecurityTransferQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_security_transfer.subscriptionString,\n },\n handleUpdateSecurityTransferSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const title = securityTransfer?.security.name\n ? securityTransfer?.security.name +\n intl.formatMessage({ id: 'securityTransfers.details.titleSecurityExtension' })\n : intl.formatMessage({ id: 'securityTransfers.details.defaultTitle' });\n const titleWithTransactionCode = securityTransfer?.transaction_code\n ? title + ' - ' + securityTransfer.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(securityTransfer?.status, intl)}

\n \n }\n >\n
\n \n

\n \n

\n \n \n \n \n \n
\n
\n {securityTransfer?.status === Status.Active ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(SecurityTransferDetails, { fallback: Fallback });\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListItem from '../../../../components/lists/list-item/list-item';\nimport { DataVariant, ListItemData } from '../../../../components/lists/list-item/types';\nimport { formatDate } from '../../../../helpers/date-formatters';\nimport { formatNumber } from '../../../../helpers/number-formatters';\nimport { MoneyTransferListItem as ListItemDataInput } from '../../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../../navigation/paths';\nimport { useIntl } from 'react-intl';\n\nconst MoneyTransferListItem = (props: {\n listItem: ListItemDataInput;\n style?: React.CSSProperties | undefined;\n mobileHeight?: number;\n}): JSX.Element => {\n const intl = useIntl();\n const history = useHistory();\n\n const handleOnClick = (): void => {\n history.push(Paths.money_transfers + '/' + props.listItem.transaction_code);\n };\n\n const data: ListItemData = {\n status: props.listItem.status,\n iconVisible: true,\n title: props.listItem.currency.currency,\n transactionCode: props.listItem.transaction_code,\n detailBlocks: [\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'moneyTransfers.listItem.fromAccountLabel' }),\n value: props.listItem.from_account,\n },\n ],\n },\n {\n dataLines: [\n {\n label: intl.formatMessage({ id: 'moneyTransfers.listItem.amountLabel' }),\n value: formatNumber(props.listItem.amount, props.listItem.currency.currency),\n variant: DataVariant.highlighted,\n },\n ],\n },\n ],\n date: formatDate(props.listItem.order_date),\n };\n\n return (\n \n );\n};\n\nexport default MoneyTransferListItem;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../../assets';\nimport { BlurredContainerM2030 } from '../../../components/containers/containers';\nimport DefaultScreen from '../../../components/containers/default-screen';\nimport StyledReactSelect from '../../../components/inputs/styled-react-select';\nimport InfiniteList from '../../../components/lists/infinite-list';\nimport ListControls from '../../../components/lists/list-controls';\nimport ListHeader from '../../../components/lists/list-header';\nimport { formatDateTime } from '../../../helpers/date-formatters';\nimport { getStatusOptions, getMoneyTransfersOrderingOptions } from '../../../helpers/type-options';\nimport { GraphqlOperations } from '../../../logic/graphql/operations';\nimport {\n Account,\n CurrencyListType,\n CurrencyType,\n MoneyTransferListItem,\n OrderingDirection,\n OrderingType,\n Query,\n Status,\n Subscription,\n} from '../../../logic/graphql/types/types.d';\nimport { Paths } from '../../../navigation/paths';\nimport ListItem from './components/money-transfer-list-item';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../../components/utils/error-boundary';\nimport {FormattedMessage, useIntl} from 'react-intl';\n\nconst MoneyTransfers = (): JSX.Element => {\n // MARK: - Resources\n const history = useHistory();\n const intl = useIntl();\n\n const statusOptions = useMemo(() => {\n return getStatusOptions(intl, 'nopartialorexpired');\n }, [intl]);\n const moneyTransfersOrderingOptions = useMemo(() => {\n return getMoneyTransfersOrderingOptions(intl);\n }, [intl]);\n // MARK: - State\n const [selectedAccount, setSelectedAccount] = useState('');\n const [selectedCurrencies, setSelectedCurrencies] = useState([]);\n const [selectedOrderingType, setSelectedOrderingType] = useState(\n OrderingType.TransferDate,\n );\n const [selectedOrderingDirection, setSelectedOrderingDirection] = useState(\n OrderingDirection.Desc,\n );\n const [selectedStatus, setSelectedStatus] = useState(Status.Active);\n const [currentPage, setCurrentPage] = useState(1);\n const [items, setItems] = useState([]);\n\n // MARK: - Queries\n const [sumPortfolioLastUpdateQueryResult, reexecuteSumPortfolioLastUpdateQuery] = useQuery(\n {\n query: GraphqlOperations.queries.sum_portfolioLastUpdate.queryString,\n requestPolicy: 'cache-and-network',\n },\n );\n\n const [itemsResultQuery, reexecuteItemsResultQuery] = useQuery({\n query: GraphqlOperations.queries.get_money_transfers.queryString,\n variables: GraphqlOperations.queries.get_money_transfers.createVars(\n currentPage,\n 10,\n selectedOrderingType,\n selectedOrderingDirection,\n selectedStatus,\n selectedCurrencies,\n selectedAccount,\n ),\n requestPolicy: 'network-only',\n pause: selectedAccount === '',\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const fetchNextPage = (startIndex: number, stopIndex: number): any => {\n if (startIndex / 10 >= currentPage) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const userAccountsQueryResult = useQuery({\n query: GraphqlOperations.queries.getUserAccounts.queryString,\n })[0];\n\n const currenciesQueryResult = useQuery({\n query: GraphqlOperations.queries.get_currencies.queryString,\n variables: GraphqlOperations.queries.get_currencies.createVars(\n CurrencyType.Transfer,\n CurrencyListType.OwnHistory,\n selectedAccount,\n ),\n pause: selectedAccount === '',\n requestPolicy: 'network-only',\n })[0];\n\n // MARK: - Subscriptions\n\n const handleNewMoneyTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransfers: MoneyTransferListItem[] = [],\n response: Subscription,\n ): MoneyTransferListItem[] => {\n if (response && response.new_money_transfer) {\n resetList();\n reexecuteItemsResultQuery();\n reexecuteSumPortfolioLastUpdateQuery();\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.new_money_transfer.subscriptionString,\n },\n handleNewMoneyTransferSubscription,\n );\n\n const handleUpdateMoneyTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransfers: MoneyTransferListItem[] = [],\n response: Subscription,\n ): MoneyTransferListItem[] => {\n if (response && response.update_money_transfer) {\n const item = response.update_money_transfer;\n const itemsCopy = [...items];\n const itemToChangeIndex = itemsCopy.findIndex(\n (i) => i.transaction_code === item.transaction_code,\n );\n if (itemToChangeIndex >= 0) {\n itemsCopy[itemToChangeIndex] = item;\n }\n setItems(itemsCopy);\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_money_transfer.subscriptionString,\n },\n handleUpdateMoneyTransferSubscription,\n );\n\n // MARK: - Lifecycle methods\n\n useEffect(() => {\n if (\n itemsResultQuery.data?.get_money_transfers?.page_count !== undefined &&\n itemsResultQuery.data.get_money_transfers.page === currentPage\n ) {\n setItems([...items.concat(itemsResultQuery.data.get_money_transfers.money_transfers)]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsResultQuery.data]);\n\n useEffect(() => {\n const accounts = userAccountsQueryResult.data?.getUser?.accounts;\n if (accounts && accounts[0]) {\n setSelectedAccount(accounts[0].number);\n }\n }, [userAccountsQueryResult]);\n\n // MARK: - Event handlers\n\n const handleCreateClick = (): void => {\n history.push(Paths.contact);\n };\n\n // MARK: - Helpers\n\n const resetList = (): void => {\n setCurrentPage(1);\n setItems([]);\n };\n\n const hasZeroItems =\n !itemsResultQuery.fetching &&\n itemsResultQuery.data?.get_money_transfers?.money_transfers &&\n items.length === 0;\n\n const noContent = (\n

\n \n

\n );\n\n const hasNextPage =\n itemsResultQuery.fetching ||\n (itemsResultQuery.data?.get_money_transfers?.page_count !== undefined &&\n itemsResultQuery.data?.get_money_transfers?.page !== undefined &&\n itemsResultQuery.data.get_money_transfers.page_count >\n itemsResultQuery.data.get_money_transfers.page);\n\n const userAccountOptions =\n userAccountsQueryResult.data?.getUser?.accounts?.map((account: Account) => ({\n value: account.number,\n label: `${account.type}: ${account.number}`,\n })) || [];\n\n return (\n {\n if (value !== selectedAccount) {\n resetList();\n setSelectedAccount(value as string);\n }\n }}\n />\n ) : undefined\n }\n >\n \n \n ({\n value: c.currency,\n label: c.currency,\n })) || []\n }\n />\n \n {hasZeroItems ? (\n noContent\n ) : (\n \n )}\n \n \n );\n};\n\nexport default withErrorBoundary(MoneyTransfers, { fallback: Fallback });\n","import { withErrorBoundary } from '@sentry/react';\nimport React from 'react';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport { useQuery, useSubscription } from 'urql';\nimport { assets } from '../../assets';\nimport Button from '../../components/buttons/button';\nimport { BlurredContainerM2030 } from '../../components/containers/containers';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport DataRow from '../../components/data-viewers/data-row/data-row';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport { formatDateTime } from '../../helpers/date-formatters';\nimport { formatNumber } from '../../helpers/number-formatters';\nimport { StatusIcon, stringifyStatus } from '../../helpers/type-formatters';\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {\n MoneyTransferListItem,\n Query,\n Status,\n Subscription,\n} from '../../logic/graphql/types/types.d';\nimport { Paths } from '../../navigation/paths';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nconst MoneyTransferDetails = (): JSX.Element => {\n const history = useHistory();\n const match = useRouteMatch();\n const intl = useIntl();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const id: string = (match.params as any).id || '';\n\n const [moneyTransferQueryResult, reexecuteMoneyTransferQuery] = useQuery({\n query: GraphqlOperations.queries.get_money_transfer.queryString,\n variables: GraphqlOperations.queries.get_money_transfer.createVars(id),\n pause: id === '',\n requestPolicy: 'network-only',\n });\n const moneyTransfer = moneyTransferQueryResult.data?.get_money_transfer;\n\n const handleUpdateMoneyTransferSubscription = (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n subscriptionMoneyTransfers: MoneyTransferListItem[] = [],\n response: Subscription,\n ): MoneyTransferListItem[] => {\n if (response && response.update_money_transfer) {\n if (\n response.update_money_transfer.transaction_code ===\n moneyTransferQueryResult.data?.get_money_transfer.transaction_code\n ) {\n reexecuteMoneyTransferQuery();\n }\n }\n return [];\n };\n\n useSubscription(\n {\n query: GraphqlOperations.subscriptions.update_money_transfer.subscriptionString,\n },\n handleUpdateMoneyTransferSubscription,\n );\n\n const handleBackClick = (): void => {\n history.goBack();\n };\n\n const handleCancelClick = (): void => {\n history.push(Paths.contact);\n };\n\n if (id === '') {\n return ;\n }\n\n const title = moneyTransfer?.currency.currency\n ? moneyTransfer.currency.currency +\n intl.formatMessage({ id: 'moneyTransfers.details.titleTransferExtension' })\n : intl.formatMessage({ id: 'moneyTransfers.details.defaultTitle' });\n const titleWithTransactionCode = moneyTransfer?.transaction_code\n ? title + ' - ' + moneyTransfer.transaction_code\n : title;\n\n return (\n \n \n

{stringifyStatus(moneyTransfer?.status, intl)}

\n \n }\n >\n
\n \n

\n \n

\n \n \n \n \n \n \n
\n
\n {moneyTransfer?.status === Status.Active ? (\n \n ) : null}\n \n );\n};\n\nexport default withErrorBoundary(MoneyTransferDetails, { fallback: Fallback });\n","import {FormattedMessage, useIntl} from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport Auth from '../../logic/redux/auth';\nimport { withErrorBoundary } from '@sentry/react';\nimport { Fallback } from '../../components/utils/error-boundary';\nimport DefaultScreen from '../../components/containers/default-screen';\nimport { Paths } from '../../navigation/paths';\nimport { assets } from '../../assets';\nimport React, {useState} from 'react';\nimport { BlurredContainer } from '../../components/containers/containers';\nimport StyledSelect, {SelectOption} from '../../components/inputs/styled-select';\nimport {useToasts} from \"react-toast-notifications\";\nimport { GraphqlOperations } from '../../logic/graphql/operations';\nimport {useMutation} from \"urql\";\nimport Button from \"../../components/buttons/button\";\n\nconst LocaleSettings = (): JSX.Element => {\n const intl = useIntl();\n const language = useSelector(Auth.select.selectAuthToken)?.language;\n const { addToast } = useToasts();\n\n const changeLanguage = useMutation(\n GraphqlOperations.mutations.update_user_language.mutationString,\n )[1];\n\n const [selectedLanguage, setSelectedLanguage] = useState(undefined);\n\n const handleTimeoutSelectionChange = (option: SelectOption): void => {\n setSelectedLanguage(option.value as string)\n };\n\n const handleChangeClick = (): void => {\n if (selectedLanguage) {\n const variables = GraphqlOperations.mutations.update_user_language.createVars(selectedLanguage);\n changeLanguage(variables)\n .then((result) => {\n if (result && !result.error) {\n setSelectedLanguage(undefined);\n addToast(\n intl.formatMessage({ id: 'profilePage.settings.localeSettings.toast.success' }),\n {\n appearance: 'success',\n autoDismiss: true,\n },\n );\n } else {\n addToast(\n intl.formatMessage({ id: 'profilePage.settings.localeSettings.toast.error' }),\n {\n appearance: 'error',\n autoDismiss: false,\n },\n );\n }\n return true;\n })\n .catch(() => {\n addToast(intl.formatMessage({ id: 'profilePage.settings.localeSettings.toast.error' }), {\n appearance: 'error',\n autoDismiss: false,\n });\n });\n }\n }\n\n return (\n \n \n

\n \n

\n \n \n
\n \n );\n};\n\nexport default withErrorBoundary(LocaleSettings, {fallback: Fallback});\n","import Dashboard from './dashboard/dashboard';\nimport Login from './login/login';\nimport MainScreen from './main-screen/main-screen';\nimport PersonalData from './personal-data/personal-data';\nimport LoadingScreen from './loading-screen/loading-screen';\nimport Profile from './profile/profile';\nimport Settings from './settings/settings';\nimport Contact from './contact/contact';\nimport Notifications from './notifications/notifications';\nimport LogoutSettings from './logout-settings/logout-settings';\nimport LoginSettings from './login-settings/login-settings';\nimport PasswordChange from './password-change/password-change';\nimport Messages from './messages/messages';\nimport ExchangeOrders from './exchange-orders/exchange-orders/exchange-orders';\nimport ExchangeOrderDetails from './exchange-orders/exchange-order-details';\nimport NewExchangeOrder from './exchange-orders/new-exchange-order/new-exchange-order';\nimport UnitOrders from './unit-orders/unit-orders/unit-orders';\nimport UnitOrderDetails from './unit-orders/unit-order-details';\nimport MoneyTransitions from './money-transition/money-transitions/money-transitions';\nimport MoneyTransitionDetails from './money-transition/money-transition-details';\nimport SecurityTransitions from './security-transition/security-transitions/security-transitions';\nimport SecurityTransitionDetails from './security-transition/security-transition-details';\nimport CurrencyConversions from './currency-conversion/currency-conversions/currency-conversions';\nimport CurrencyConversionDetails from './currency-conversion/currency-conversion-details';\nimport SecurityTransfers from './security-transfer/security-transfers/security-transfers';\nimport SecurityTransferDetails from './security-transfer/security-transfer-details';\nimport MoneyTransfers from './money-transfer/money-transfers/money-transfers';\nimport MoneyTransferDetails from './money-transfer/money-transfer-details';\nimport LocaleSettings from \"./locale-settings/locale-settings\";\n\nexport const Screens = {\n MainScreen,\n Dashboard,\n Login,\n Profile,\n PersonalData,\n Settings,\n LoadingScreen,\n Contact,\n Notifications,\n LoginSettings,\n LogoutSettings,\n LocaleSettings,\n PasswordChange,\n Messages,\n ExchangeOrders,\n ExchangeOrderDetails,\n NewExchangeOrder,\n UnitOrders,\n UnitOrderDetails,\n MoneyTransitions,\n MoneyTransitionDetails,\n SecurityTransitions,\n SecurityTransitionDetails,\n CurrencyConversions,\n CurrencyConversionDetails,\n SecurityTransfers,\n SecurityTransferDetails,\n MoneyTransfers,\n MoneyTransferDetails,\n};\n","import * as React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport PrivateRoute from '../components/utils/private-route';\nimport { Screens } from '../screens';\nimport { Paths } from './paths';\n\nexport const Routes = (): JSX.Element => (\n \n \n \n \n);\n\nexport const InnerRoutes = (): JSX.Element => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n);\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport Menu from '../components/navigation/mobile-menu';\nimport HideableComponent from '../components/utils/hideable-component';\nimport Auth from '../logic/redux/auth';\nimport LoadingScreen from '../screens/loading-screen/loading-screen';\nimport { ScreenSizeFloor } from '../styles/screen-sizes';\nimport { Routes } from './routes';\nimport ErrorBoundary from '../components/utils/error-boundary';\n\nconst Navigation = (): JSX.Element => {\n const loggedIn = useSelector(Auth.select.selectLoggedIn);\n if (loggedIn === undefined) {\n return ;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default Navigation;\n","import React from 'react';\nimport Helmet from 'react-helmet';\nimport { useLocation } from 'react-router-dom';\n\nconst tabNamesByPath: { [key: string]: string } = {\n '/login': 'Bejelentkezés',\n '/profil/szemelyesadatok': 'Saját adatok',\n '/kapcsolat': 'Kapcsolat',\n '/profil/ertesitesek': 'Értesítések',\n '/profil/beallitasok/belepesi-adatok': 'Belépési adatok',\n '/profil/beallitasok/kilepesi-adatok': 'Kilépési adatok',\n '/profil/beallitasok/jelszo-modositas': 'Jelszó módosítás',\n '/profil/beallitasok': 'Beállítások',\n '/profil': 'Profil',\n '/uzenetek': 'Üzenetek',\n '/megbizasok/tozsdei': 'Tőzsdei megbízás',\n '/megbizasok/tozsdei/uj': 'Új tőzsdei megbízás',\n '/megbizasok/tozsdei/:id': 'Tőzsdei megbízás',\n '/megbizasok/befektetesijegy': 'Befektetési jegy megbízás',\n '/megbizasok/befektetesijegy/:id': 'Befektetési jegy megbízás',\n '/rendelkezesek/penz-atvezetes': 'Pénz átvezetés',\n '/rendelkezesek/penz-atvezetes/:id': 'Pénz átvezetés',\n '/rendelkezesek/ertekpapir-atvezetes': 'Értékpapír átvezetés',\n '/rendelkezesek/ertekpapir-atvezetes/:id': 'Értékpapír átvezetés',\n '/rendelkezesek/devizakonverzio': 'Devizakonverzió',\n '/rendelkezesek/devizakonverzio/:id': 'Devizakonverzió',\n '/rendelkezesek/ertekpapir-transzfer': 'Értékpapír transzfer',\n '/rendelkezesek/ertekpapir-transzfer/:id': 'Értékpapír transzfer',\n '/atutalasok': 'Átutalások',\n '/atutalasok/:id': 'Átutalások',\n '/': 'Áttekintés',\n};\n\nconst renderTitleComponent = (title: string, favIcon: string): JSX.Element => {\n return (\n \n \n {title}\n \n \n );\n};\n\nconst pickTitle = (pathName: string, tabNames: { [key: string]: string }): string => {\n const pathKey = Object.keys(tabNames).find((key) => pathName.includes(key));\n return pathKey ? tabNames[pathKey] : 'TradeBull';\n};\n\nconst BrowserTabLabel = (): JSX.Element => {\n const location = useLocation();\n const title = pickTitle(location.pathname, tabNamesByPath);\n\n return renderTitleComponent(title, 'favicon.ico');\n};\n\nexport default BrowserTabLabel;\n","import { useState, useEffect } from 'react';\nimport { ScreenSize, ScreenSizeFloor } from '../../styles/screen-sizes';\nimport { useDispatch } from 'react-redux';\nimport Presentation from '../../logic/redux/presentation';\n\nconst getScreenSize = (): ScreenSize => {\n const windowWidth = window.innerWidth;\n\n if (windowWidth < ScreenSizeFloor.SM) {\n return ScreenSize.XS;\n } else if (windowWidth < ScreenSizeFloor.MD) {\n return ScreenSize.SM;\n } else if (windowWidth < ScreenSizeFloor.LG) {\n return ScreenSize.MD;\n } else if (windowWidth < ScreenSizeFloor.XL) {\n return ScreenSize.LG;\n } else {\n return ScreenSize.XL;\n }\n};\n\nconst useScreenWidthObserver = (): void => {\n const dispatch = useDispatch();\n\n const mediaSMBoundaryMinQuery = useState(\n window.matchMedia(`(min-width: ${ScreenSizeFloor.SM}px)`),\n )[0];\n\n const mediaMDBoundaryMinQuery = useState(\n window.matchMedia(`(min-width: ${ScreenSizeFloor.MD}px)`),\n )[0];\n\n const mediaLGBoundaryMinQuery = useState(\n window.matchMedia(`(min-width: ${ScreenSizeFloor.LG}px)`),\n )[0];\n\n const mediaXLBoundaryMinQuery = useState(\n window.matchMedia(`(min-width: ${ScreenSizeFloor.XL}px)`),\n )[0];\n\n useEffect(() => {\n dispatch(Presentation.actions.setScreenSize(getScreenSize()));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const mediaQueryChanged = (): void => {\n dispatch(Presentation.actions.setScreenSize(getScreenSize()));\n };\n\n useEffect(() => {\n mediaSMBoundaryMinQuery?.addListener(mediaQueryChanged);\n mediaMDBoundaryMinQuery?.addListener(mediaQueryChanged);\n mediaLGBoundaryMinQuery?.addListener(mediaQueryChanged);\n mediaXLBoundaryMinQuery?.addListener(mediaQueryChanged);\n return () => {\n mediaSMBoundaryMinQuery?.removeListener(mediaQueryChanged);\n mediaMDBoundaryMinQuery?.removeListener(mediaQueryChanged);\n mediaLGBoundaryMinQuery?.removeListener(mediaQueryChanged);\n mediaXLBoundaryMinQuery?.removeListener(mediaQueryChanged);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n};\n\nconst ScreenWidthObserver = (): null => {\n useScreenWidthObserver();\n return null;\n};\n\nexport default ScreenWidthObserver;\n","import { ConnectedRouter } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport {Provider as ReduxProvider, useSelector} from 'react-redux';\nimport ResetableUrqlProvider from './components/utils/resetable-urql-provider';\nimport { ToastProvider } from 'react-toast-notifications';\nimport { IntlProvider } from 'react-intl';\nimport ModalPresenter from './components/ui-utils/modal-presenter';\nimport ToastPresenter from './components/utils/toast-presenter';\nimport Auth from './logic/redux/auth';\nimport store, { history } from './logic/redux/store';\nimport Navigation from './navigation/navigation';\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\nimport './styles/generated.css';\nimport './styles/main.css'; // -> during build, postcss generates the file below from main.css, including the tailwindcss classes, now importing for development purposes only\nimport moment from 'moment';\nimport 'moment/locale/hu';\nimport BrowserTabLabel from './navigation/browser-tab-label';\nimport ScreenWidthObserver from './components/utils/screen-width-observer';\nimport hu from '../locales/hu.json';\nimport en from '../locales/en.json';\n\nmoment.locale('hu');\n\n// Egymásba ágyazott fordítások átalakítása\nfunction flattenMessages(\n nestedMessages: Record,\n prefix = '',\n): Record {\n return Object.keys(nestedMessages).reduce((messages: Record, key) => {\n const value = nestedMessages[key];\n const prefixedKey = prefix !== '' ? `${prefix}.${key}` : key;\n\n if (typeof value === 'string') {\n messages[prefixedKey] = value;\n } else {\n Object.assign(messages, flattenMessages(value as Record, prefixedKey));\n }\n\n return messages;\n }, {});\n}\n\n/*\ndispatch(Auth.actions.doLogout());\n*/\n\nconst messages = {\n hu: flattenMessages(hu),\n en: flattenMessages(en),\n};\n\nconst App = (): JSX.Element => {\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleTabClose = (event: Event): boolean => {\n if (store.getState().auth.loggedIn !== undefined && store.getState().auth.loggedIn) {\n console.error('LOGOUT');\n store.dispatch(Auth.actions.doLogout());\n }\n\n return true;\n //event.preventDefault();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n //console.log('beforeunload event triggered');\n\n //event.returnValue = '';\n //return true;\n //(event.returnValue = 'Are you sure you want to exit?');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n store.dispatch(Auth.actions.doHandleApplicationStarted());\n\n window.addEventListener('beforeunload', handleTabClose);\n\n return () => {\n console.log('App unmounting');\n //store.dispatch(Auth.actions.doLogout());\n window.removeEventListener('beforeunload', handleTabClose);\n };\n }, []);\n const userLanguage = useSelector(Auth.select.selectAuthToken)?.language;\n const loginLanguage = useSelector(Auth.select.selectLanguage)\n\n const lang = (userLanguage || loginLanguage || 'hu') as 'hu' | 'en' ;\n\n useEffect(() => {\n moment.locale(lang);\n }, [lang]);\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as Sentry from '@sentry/react';\nimport './index.css';\nimport App from './app/app';\nimport * as serviceWorker from './serviceWorker';\nimport ErrorBoundary from './app/components/utils/error-boundary';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport store from \"./app/logic/redux/store\";\n\n// console.log('PROCESS.ENV: ', process.env);\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n dsn: 'https://398f9602fba4470d8f88de96c6d9bbff@o18351.ingest.sentry.io/5415201',\n environment: process.env.REACT_APP_DEPLOYMENT\n ? process.env.REACT_APP_DEPLOYMENT\n : 'local-build',\n release: process.env.REACT_APP_RELEASE_VERSION,\n });\n}\n\nReactDOM.render(\n <>\n \n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}