{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////app/app/client/src/helpers/style/index.js","webpack:////app/app/client/src/components/ButtonAction/index.jsx","webpack:////app/app/client/src/components/ButtonSubmit/index.jsx","webpack:////app/app/client/src/components/Confirmation/index.jsx","webpack:////app/app/client/src/components/Comments/actionButtons.jsx","webpack:////app/app/client/src/components/Comments/Edit.jsx","webpack:////app/app/client/src/components/Comments/Static.jsx","webpack:////app/app/client/src/components/Comments/Comment.jsx","webpack:////app/app/client/src/components/Comments/integration.js","webpack:////app/app/client/src/services/navigation/options.js","webpack:////app/app/client/src/helpers/location/index.js","webpack:////app/app/client/src/services/navigation/routeMapping.js","webpack:////app/app/client/src/external/segment/helpers.js","webpack:////app/app/client/src/external/segment/eventNames.js","webpack:////app/app/client/src/external/segment/index.js","webpack:////app/app/client/src/components/Comments/actionTypes.js","webpack:////app/app/client/src/components/Comments/actions.js","webpack:////app/app/client/src/components/Comments/index.jsx","webpack:////app/app/client/src/components/App/actionTypes.js","webpack:////app/app/client/src/components/App/actions.js","webpack:////app/app/client/src/components/Header/types.js","webpack:////app/app/client/src/components/Header/LanguageSelector.jsx","webpack:////app/app/client/src/services/localStorage/index.js","webpack:////app/app/client/src/helpers/constants/integrations.js","webpack:////app/app/client/src/helpers/constants/features.js","webpack:////app/app/client/src/components/Header/UserOptions.jsx","webpack:////app/app/client/src/components/Header/index.jsx","webpack:////app/app/client/src/components/Footer/index.jsx","webpack:////app/app/client/src/helpers/translations/vatinLabel.js","webpack:////app/app/client/src/components/Screen/NavigationBar/LeftSide/index.jsx","webpack:////app/app/client/src/helpers/constants/index.js","webpack:////app/app/client/src/components/PrintButton/integration.js","webpack:////app/app/client/src/components/PrintButton/helpers.js","webpack:////app/app/client/src/components/PrintButton/index.jsx","webpack:////app/app/client/src/components/Screen/NavigationBar/RightSide/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/actionTypes.js","webpack:////app/app/client/src/components/BurgerMenu/actions.js","webpack:////app/app/client/src/components/BurgerMenu/types/index.js","webpack:////app/app/client/src/components/BurgerMenu/BurgerButton/index.jsx","webpack:////app/app/client/src/components/Screen/NavigationBar/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/Menu/Navigation/helpers/index.js","webpack:////app/app/client/src/components/BurgerMenu/Menu/Navigation/Section/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/Menu/Navigation/Subsection/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/Menu/Navigation/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/navigationOptions.js","webpack:////app/app/client/src/components/BurgerMenu/Menu/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/Container/helpers/index.js","webpack:////app/app/client/src/components/BurgerMenu/helpers/index.js","webpack:////app/app/client/src/components/Sticky/context.jsx","webpack:////app/app/client/src/components/Sticky/helpers/index.js","webpack:////app/app/client/src/components/Sticky/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/Container/index.jsx","webpack:////app/app/client/src/components/BurgerMenu/index.jsx","webpack:////app/app/client/src/components/Screen/constants/index.js","webpack:////app/app/client/src/components/Screen/index.jsx","webpack:////app/app/client/src/screens/Client/Create/constants.js","webpack:////app/app/client/src/screens/Client/Create/integrations.js","webpack:////app/app/client/src/screens/Client/Create/actionTypes.js","webpack:////app/app/client/src/screens/Client/Create/actions.js","webpack:////app/app/client/src/screens/Client/Create/Search/index.jsx","webpack:////app/app/client/src/screens/Client/Edit/Integrations.js","webpack:////app/app/client/src/screens/Client/Edit/actions.js","webpack:////app/app/client/src/components/Settings/constants.js","webpack:////app/app/client/src/components/Settings/Dropdown.jsx","webpack:////app/app/client/src/components/Settings/SelectNumberFormat.jsx","webpack:////app/app/client/src/components/Settings/index.jsx","webpack:////app/app/client/src/helpers/translations/index.js","webpack:////app/app/client/src/components/ButtonRedirect/index.jsx","webpack:////app/app/client/src/components/LoadingSpinner/index.jsx","webpack:////app/app/client/src/components/InfoCard/index.jsx","webpack:////app/app/client/src/components/Tooltip/index.jsx","webpack:////app/app/client/src/components/InfoBox/index.jsx","webpack:////app/app/client/src/components/InfoBanner/index.jsx","webpack:////app/app/client/src/components/CardTitle/index.jsx","webpack:////app/app/client/src/components/Table/helpers/performance.jsx","webpack:////app/app/client/src/components/Table/types.jsx","webpack:////app/app/client/src/components/Table/TableHeader/index.jsx","webpack:////app/app/client/src/components/Cell/userInputValidations.js","webpack:////app/app/client/src/components/Cell/validations.js","webpack:////app/app/client/src/components/Cell/exceptions.js","webpack:////app/app/client/src/components/Cell/conversions.js","webpack:////app/app/client/src/components/Table/TableRow/TableRowNameSubLabel.jsx","webpack:////app/app/client/src/components/Table/TableRow/TableRowName.jsx","webpack:////app/app/client/src/components/IconPerformance/index.jsx","webpack:////app/app/client/src/components/Cell/styling.js","webpack:////app/app/client/src/components/Cell/ReadOnlyCell.jsx","webpack:////app/app/client/src/components/Cell/ExceptionCell.jsx","webpack:////app/app/client/src/components/Cell/IconArea.jsx","webpack:////app/app/client/src/helpers/conversions/formatNumber.js","webpack:////app/app/client/src/screens/Analysis/Simulation/actions.js","webpack:////app/app/client/src/screens/Analysis/Simulation/integrations.js","webpack:////app/app/client/src/helpers/conversions/formatText.js","webpack:////app/app/client/src/screens/Analysis/Forecast/actions.js","webpack:////app/app/client/src/screens/Analysis/Forecast/integration.js","webpack:////app/app/client/src/screens/Input/actionTypes.js","webpack:////app/app/client/src/screens/Input/actions.js","webpack:////app/app/client/src/screens/Input/api/responses.js","webpack:////app/app/client/src/screens/Input/helpers/index.js","webpack:////app/app/client/src/helpers/style/images.js","webpack:////app/app/client/src/screens/Input/api/requests.js","webpack:////app/app/client/src/components/Cell/integration.js","webpack:////app/app/client/src/components/Cell/actions.js","webpack:////app/app/client/src/components/Cell/events.js","webpack:////app/app/client/src/components/Cell/index.jsx","webpack:////app/app/client/src/components/Cell/Dispatcher.jsx","webpack:////app/app/client/src/components/Table/TableRow/TableRowCells.jsx","webpack:////app/app/client/src/components/Table/TableRow/index.jsx","webpack:////app/app/client/src/components/Table/TableDivider/index.jsx","webpack:////app/app/client/src/components/Table/TableBody/TableRowDispatcher.jsx","webpack:////app/app/client/src/components/Table/TableBody/index.jsx","webpack:////app/app/client/src/components/Table/TableTitle/index.jsx","webpack:////app/app/client/src/components/Table/SimpleTable/index.jsx","webpack:////app/app/client/src/components/Table/index.jsx","webpack:////app/app/client/src/components/ModalConfirmation/index.jsx","webpack:////app/app/client/src/screens/Client/Create/TextInput/index.jsx","webpack:////app/app/client/src/screens/Client/Create/Buttons/index.jsx","webpack:////app/app/client/src/screens/Client/Create/DatePicker/index.jsx","webpack:////app/app/client/src/screens/Client/Create/Form/index.jsx","webpack:////app/app/client/src/screens/Client/Create/index.jsx","webpack:////app/app/client/src/screens/Analysis/Management/integration.js","webpack:////app/app/client/src/screens/Analysis/Management/actions.js","webpack:////app/app/client/src/screens/Analysis/Valuation/actionsValuation.js","webpack:////app/app/client/src/screens/Analysis/Valuation/integrationValuation.js","webpack:////app/app/client/src/components/Error/ReportUnavailable.jsx","webpack:////app/app/client/src/components/InfoCardDetailed/InfoSection.jsx","webpack:////app/app/client/src/components/InfoCardDetailed/AccessSection.jsx","webpack:////app/app/client/src/components/InfoCardDetailed/index.jsx","webpack:////app/app/client/src/components/TrialPromotion/index.jsx","webpack:////app/app/client/src/components/UnauthorizedCard/index.jsx","webpack:////app/app/client/src/screens/Analysis/ScreenDispatcher.jsx","webpack:////app/app/client/src/screens/Analysis/index.jsx","webpack:////app/app/client/src/components/TitleArea/types.jsx","webpack:////app/app/client/src/components/TitleArea/Title.jsx","webpack:////app/app/client/src/components/TitleArea/ButtonImportData.jsx","webpack:////app/app/client/src/components/TitleArea/CurrentFiscalYear.jsx","webpack:////app/app/client/src/components/TitleArea/helpers.js","webpack:////app/app/client/src/components/TitleArea/SelectYear.jsx","webpack:////app/app/client/src/components/TitleArea/index.jsx","webpack:////app/app/client/src/screens/Analysis/Forecast/Main.jsx","webpack:////app/app/client/src/screens/Analysis/Forecast/index.jsx","webpack:////app/app/client/src/components/Pyramid/BoxContent.jsx","webpack:////app/app/client/src/components/Pyramid/styling.js","webpack:////app/app/client/src/components/Pyramid/BoxWrapper.jsx","webpack:////app/app/client/src/components/Pyramid/index.jsx","webpack:////app/app/client/src/screens/Analysis/Management/KPIs.jsx","webpack:////app/app/client/src/components/Charts/LineChart/ChartLegends/helpers.js","webpack:////app/app/client/src/components/Charts/LineChart/ChartLegends/index.jsx","webpack:////app/app/client/src/components/Charts/options.js","webpack:////app/app/client/src/components/Charts/conversions.js","webpack:////app/app/client/src/components/Charts/LineChart/options.js","webpack:////app/app/client/src/components/Charts/LineChart/helpers.js","webpack:////app/app/client/src/components/Charts/propTypes.jsx","webpack:////app/app/client/src/components/Charts/LineChart/index.jsx","webpack:////app/app/client/src/components/Charts/LineChartWrapper/index.jsx","webpack:////app/app/client/src/screens/Analysis/Management/Section.jsx","webpack:////app/app/client/src/screens/Analysis/Management/Main.jsx","webpack:////app/app/client/src/screens/Analysis/Management/index.jsx","webpack:////app/app/client/src/screens/Analysis/Budget/index.jsx","webpack:////app/app/client/src/screens/Analysis/Simulation/types/index.jsx","webpack:////app/app/client/src/components/Charts/BarChart/options.js","webpack:////app/app/client/src/components/Charts/BarChart/index.jsx","webpack:////app/app/client/src/screens/Analysis/Simulation/Sections/index.jsx","webpack:////app/app/client/src/screens/Analysis/Simulation/Main.jsx","webpack:////app/app/client/src/screens/Analysis/Simulation/index.jsx","webpack:////app/app/client/src/services/auth/actionTypes.js","webpack:////app/app/client/src/services/auth/helpers.js","webpack:////app/app/client/src/services/auth/reducer.js","webpack:////app/app/client/src/components/Cell/reducer.js","webpack:////app/app/client/src/screens/Client/Edit/reducer.js","webpack:////app/app/client/src/components/App/reducer.js","webpack:////app/app/client/src/components/Comments/reducer.js","webpack:////app/app/client/src/screens/Client/Create/reducer.js","webpack:////app/app/client/src/screens/Integrations/actionTypes.js","webpack:////app/app/client/src/screens/Integrations/reducer.js","webpack:////app/app/client/src/screens/Analysis/Forecast/reducer.js","webpack:////app/app/client/src/screens/Input/reducer.js","webpack:////app/app/client/src/screens/Client/List/actionTypes.js","webpack:////app/app/client/src/screens/Client/List/reducer.js","webpack:////app/app/client/src/components/BurgerMenu/reducer.js","webpack:////app/app/client/src/screens/Analysis/Management/reducer.js","webpack:////app/app/client/src/screens/Analysis/Simulation/reducer.js","webpack:////app/app/client/src/screens/Analysis/Valuation/reducer.js","webpack:////app/app/client/src/store/reducers.js","webpack:////app/app/client/src/store/store.js","webpack:////app/app/client/src/store/middlewares.js","webpack:////app/app/client/src/services/middlewares/onRouteChange/definitionsPanel.js","webpack:////app/app/client/src/services/middlewares/segment/index.js","webpack:////app/app/client/src/services/middlewares/segment/options.js","webpack:////app/app/client/src/store/index.js","webpack:////app/app/client/src/screens/Analysis/Valuation/integration.js","webpack:////app/app/client/src/screens/Analysis/Valuation/actions.js","webpack:////app/app/client/src/screens/Analysis/Valuation/Table.jsx","webpack:////app/app/client/src/screens/Analysis/Valuation/SensitivityAnalysis.jsx","webpack:////app/app/client/src/screens/Analysis/Valuation/Main.jsx","webpack:////app/app/client/src/screens/Analysis/Valuation/index.jsx","webpack:////app/app/client/src/services/sessionStorage/index.js","webpack:////app/app/client/src/components/Root/index.jsx","webpack:////app/app/client/src/components/TopRow/index.jsx","webpack:////app/app/client/src/screens/Static/TrialExpired/index.jsx","webpack:////app/app/client/src/screens/Integrations/helpers/conversions.js","webpack:////app/app/client/src/screens/Integrations/backend/requests.js","webpack:////app/app/client/src/screens/Integrations/actions.js","webpack:////app/app/client/src/screens/Integrations/container.jsx","webpack:////app/app/client/src/screens/Integrations/backend/responses.js","webpack:////app/app/client/src/screens/Integrations/GenerateToken/DeleteToken.jsx","webpack:////app/app/client/src/screens/Integrations/GenerateToken/DisplayToken.jsx","webpack:////app/app/client/src/screens/Integrations/GenerateToken/Main.jsx","webpack:////app/app/client/src/screens/Integrations/GenerateToken/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/SkipImport/index.jsx","webpack:////app/app/client/src/screens/Integrations/helpers/integration.js","webpack:////app/app/client/src/screens/Integrations/List/Cards/Economic/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/Cards/Virk/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/Cards/Caseware/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/Cards/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/Title/index.jsx","webpack:////app/app/client/src/screens/Integrations/List/index.jsx","webpack:////app/app/client/src/screens/Integrations/helpers/extractions.js","webpack:////app/app/client/src/screens/Integrations/Map/context/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Main/Tabs/constants.js","webpack:////app/app/client/src/screens/Integrations/Map/Main/Tabs/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/backend/requests.js","webpack:////app/app/client/src/screens/Integrations/Map/backend/responses.js","webpack:////app/app/client/src/screens/Integrations/Overview/types/index.jsx","webpack:////app/app/client/src/screens/Integrations/Overview/Table/index.jsx","webpack:////app/app/client/src/screens/Integrations/Overview/Buttons/ActionButtons/index.jsx","webpack:////app/app/client/src/screens/Integrations/Overview/Buttons/index.jsx","webpack:////app/app/client/src/screens/Integrations/Overview/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/ButtonsArea/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/types/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/types.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/SelectorItem/ChildItem.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/SelectorItem/ParentItem.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/Panels/ChildPanel/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/Panels/ParentPanel/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/Selector/Header.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/Selector/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/static/index.js","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Right/Value.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Right/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Left/UndoButton.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/Left/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Row/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Group/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Main/Title/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Main/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Notification/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/Content/index.jsx","webpack:////app/app/client/src/screens/Integrations/Map/index.jsx","webpack:////app/app/client/src/screens/Integrations/SelectPlan/Dropdown/index.jsx","webpack:////app/app/client/src/screens/Integrations/SelectPlan/index.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/types.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/Years/helpers.js","webpack:////app/app/client/src/screens/Integrations/SelectYears/Years/types.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/Years/CheckboxYear.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/Years/index.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/NoYears/index.jsx","webpack:////app/app/client/src/screens/Integrations/SelectYears/index.jsx","webpack:////app/app/client/src/screens/Integrations/Success/index.jsx","webpack:////app/app/client/src/screens/Client/Settings/Main.jsx","webpack:////app/app/client/src/screens/Client/Settings/index.jsx","webpack:////app/app/client/src/screens/Client/Edit/TextInput.jsx","webpack:////app/app/client/src/screens/Client/Edit/Main.jsx","webpack:////app/app/client/src/screens/Client/Edit/index.jsx","webpack:////app/app/client/src/screens/Client/List/actions.js","webpack:////app/app/client/src/screens/Client/List/helpers.js","webpack:////app/app/client/src/screens/Client/List/Table.jsx","webpack:////app/app/client/src/screens/Client/List/index.jsx","webpack:////app/app/client/src/screens/Client/Init/Content.jsx","webpack:////app/app/client/src/screens/Client/Init/index.jsx","webpack:////app/app/client/src/screens/Input/Sections.jsx","webpack:////app/app/client/src/screens/Input/BottomButton/index.jsx","webpack:////app/app/client/src/screens/Input/types.js","webpack:////app/app/client/src/screens/Input/index.jsx","webpack:////app/app/client/src/screens/Static/Unauthenticated/index.jsx","webpack:////app/app/client/src/screens/Static/Unauthorized/index.jsx","webpack:////app/app/client/src/screens/Static/404/index.jsx","webpack:////app/app/client/src/screens/Static/424/types.js","webpack:////app/app/client/src/screens/Static/424/Main.jsx","webpack:////app/app/client/src/screens/Static/424/index.jsx","webpack:////app/app/client/src/screens/Static/Error/index.jsx","webpack:////app/app/client/src/external/rollbar/index.js","webpack:////app/app/client/src/services/navigation/Routes/index.jsx","webpack:////app/app/client/src/services/navigation/index.js","webpack:////app/app/client/src/components/Notifications/index.style.js","webpack:////app/app/client/src/components/Notifications/index.jsx","webpack:////app/app/client/src/components/FeedbackPanel/types.jsx","webpack:////app/app/client/src/components/FeedbackPanel/FeedbackButton.jsx","webpack:////app/app/client/src/components/FeedbackPanel/api.js","webpack:////app/app/client/src/components/FeedbackPanel/FeedbackMain.jsx","webpack:////app/app/client/src/components/FeedbackPanel/locale.js","webpack:////app/app/client/src/components/FeedbackPanel/index.jsx","webpack:////app/app/client/src/components/SidePanel/helpers.js","webpack:////app/app/client/src/components/SidePanel/types.jsx","webpack:////app/app/client/src/components/SidePanel/SidePanelTitle.jsx","webpack:////app/app/client/src/components/SidePanel/SidePanelModuleItemContent.jsx","webpack:////app/app/client/src/components/SidePanel/SidePanelModuleItem.jsx","webpack:////app/app/client/src/components/SidePanel/SidePanelModules.jsx","webpack:////app/app/client/src/components/SidePanel/SidePanelContent.jsx","webpack:////app/app/client/src/components/SidePanel/index.jsx","webpack:////app/app/client/src/components/App/index.jsx","webpack:////app/app/client/src/services/auth/actions.js","webpack:////app/app/client/src/services/interceptors/request/index.js","webpack:////app/app/client/src/services/interceptors/response/index.js","webpack:////app/app/client/src/services/interceptors/response/errorCodeDispatcher.js","webpack:////app/app/client/src/screens/Static/424/api/response.js","webpack:////app/app/client/src/services/initializers/index.js","webpack:////app/app/client/src/helpers/conversions/language.js","webpack:////app/app/client/src/index.jsx","webpack:////app/app/client/src/shared/images/loader_tiny.svg","webpack:////app/app/client/src/shared/images/plainTriangleSmall.svg","webpack:////app/app/client/src/shared/images/economicLogo.svg","webpack:////app/app/client/src/shared/images/virkLogo.svg","webpack:////app/app/client/src/components/Header/logo_k.svg","webpack:////app/app/client/src/components/IconPerformance/icon_irrelevant.svg","webpack:////app/app/client/src/shared/images/loader_large.svg","webpack:////app/app/client/src/shared/images/loader_medium.svg","webpack:////app/app/client/src/components/Footer/logo_karnov.svg","webpack:////app/app/client/src/components/BurgerMenu/burger.svg","webpack:////app/app/client/src/components/InfoCard/icon-newcompany.svg","webpack:////app/app/client/src/components/Tooltip/questionMark.svg","webpack:////app/app/client/src/components/IconPerformance/icon_down.svg","webpack:////app/app/client/src/components/IconPerformance/icon_up.svg","webpack:////app/app/client/src/components/IconPerformance/icon_blank.svg","webpack:////app/app/client/src/components/ModalConfirmation/triangle.svg","webpack:////app/app/client/src/components/ModalConfirmation/close.svg","webpack:////app/app/client/src/components/Error/icon-missing_data.svg","webpack:////app/app/client/src/components/InfoCardDetailed/circle_lock.svg","webpack:////app/app/client/src/screens/Static/TrialExpired/circle_calendar.svg","webpack:////app/app/client/src/screens/Integrations/GenerateToken/token_empty.svg","webpack:////app/app/client/src/screens/Integrations/GenerateToken/token_full.svg","webpack:////app/app/client/src/screens/Integrations/GenerateToken/token_copied.svg","webpack:////app/app/client/src/shared/images/casewareLogo.png","webpack:////app/app/client/src/screens/Integrations/Map/Row/Dropdown/Selector/closeIcon.svg","webpack:////app/app/client/src/screens/Integrations/Map/Row/Left/plus.svg","webpack:////app/app/client/src/screens/Integrations/Map/Row/Left/minus.svg","webpack:////app/app/client/src/shared/images/circleExclamation.svg","webpack:////app/app/client/src/shared/images/closeIcon.svg","webpack:////app/app/client/src/shared/images/successIcon.svg","webpack:////app/app/client/src/screens/Integrations/Success/complete.svg","webpack:////app/app/client/src/screens/Client/Init/icon-newcompany.svg","webpack:////app/app/client/src/screens/Static/Unauthenticated/icon-locked.svg","webpack:////app/node_modules/moment/locale sync ^\\.\\/.*$"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","getClassNames","classes","toString","split","join","CommonWhiteButton","translate","props","className","disabled","isEnabled","id","loading","isLoading","type","onClick","handleClick","text","propTypes","PropTypes","string","bool","func","isRequired","arrayOf","defaultProps","localize","ButtonSubmit","undefined","Confirmation","Modal","basic","open","this","isModalOpen","size","trigger","onClose","handleCancelButton","content","title","icon","Content","message","Actions","inverted","color","Icon","cancelButtonText","handleOkButton","okButtonText","React","PureComponent","ActionButtons","edit","createdAt","createdAtDate","Date","format","handleEdit","toggleModal","handleDelete","hasComment","number","EditComment","comment","printable","event","setState","target","toggleEdit","handleCancel","prevState","e","preventDefault","state","handleSubmit","then","placeholder","onSubmit","TextArea","ref","textarea","editTextArea","autoFocus","autoHeight","rows","onChange","Checkbox","checked","label","togglePrint","onCancel","Component","StaticComment","Comment","addHiddenClass","Edit","Static","preparePayload","payload","Error","normalizeUpdatedResponse","response","created_at","generateEmptyComment","now","toISOString","NAVIGATION_OPTIONS","section","OPTIONS","SECTION_REPORTS","link","routeWithClientId","MANAGEMENT_REPORT_ROUTE_NAME","page","BUDGET_REPORT_ROUTE_NAME","SIMULATION_REPORT_ROUTE_NAME","FORECAST_ROUTE_NAME","VALUATION_REPORT_ROUTE_NAME","SECTION_INPUTS","INPUT_DATA_ROUTE_NAME","INPUT_BUDGET_ROUTE_NAME","SECTION_CLIENT_DATA","CLIENT_DATA_COMPANY_ROUTE_NAME","CLIENT_DATA_SETTINGS_ROUTE_NAME","flatNavigationOptions","values","reduce","acc","concat","find","getNavigationOptionsByLocation","pathname","paramFromLocation","param","location","search","regex","RegExp","matchedParam","match","pathnameFromRoute","route","clientId","getClientId","getURLParams","queryParams","queryString","parse","findOption","options","option","getNavOption","navOptions","foundOption","sections","keys","currentSection","deepEqual","getModuleId","extractYearFromURL","params","selectedYear","parseInt","ROUTE_MAPPINGS","mgt_report","budget_report","simulation","input_data","input_budget","mappedRoute","router","keyFromState","convertCategoryName","source","accountPlan","capitalizedIntegration","charAt","toUpperCase","sanitizedAccountPlanName","eventUserId","pspId","perId","DATA_IMPORTED_TRACKING","triggerActionAndSubmitToSegment","eventName","eventPayload","analyticsPayload","client_id","analytics","track","trackSaveButtonClick","inputData","trackDataImportSuccess","cvr","data_source","status","vatin","trackDataImportCancelled","REPORT_COMMENTS_GET_SUCCESS","REPORT_COMMENT_POST_SUCCESS","REPORT_COMMENT_DELETE_SUCCESS","REPORT_COMMENT_PUT_SUCCESS","showSuccessNotification","dispatch","locale","getTranslate","success","position","commentsApiUrl","apiUrl","viewName","url","initRequest","getCommentsData","getState","API_URL","axios","types","comments","map","catch","successUpdateComment","postComment","client","post","trackCommentAdded","error","updateComment","put","deleteComment","delete","ReportComments","filter","commentNew","some","addComment","hasEmptyComment","shape","connect","actions","APP_INIT_FETCHING_INITIAL_DATA","APP_STOP_FETCHING_INITIAL_DATA","APP_HAS_ERROR","APP_CLIENT_DATA_STATE_UPDATE","APP_TOGGLE_DEFINITIONS_PANEL","updateUserLanguage","auth","sub","setActiveLanguage","user","language","en","da","err","updateClientData","appHasErrorAfterFetch","errors","toggleDefinitionsPanel","sidePanelId","company_name","headerType","notifications","array","LanguageSelectorType","setLocale","currentLocale","userOptionsType","LanguageSelector","Menu","Item","flag","AUTH_ID","KBO_STORAGE_KEY_PREFIX","getLocalStorageKey","normalizedKey","ENV","setInLocalStorage","kboKey","localStorage","setItem","ECONOMIC","VIRK","CASEWARE","FEATURE_FSR_CW","FEATURES","includes","FEATURE_CAP","logout","clear","UserOptions","Divider","as","Link","to","INTEGRATION_CASEWARE_GENERATE_TOKEN","trial_access_token","href","profile_url","rel","KG_PRO_URL","Header","level","showNotificationClass","INIT_ROUTE_NAME","alt","src","logo","getActiveLanguage","code","Footer","WWW_URL","vatinAsLabel","LeftSideNavigation","clientName","clientVatin","INPUT_DATA_START_YEAR","paramsFromLocation","year","trackDownload","trackReportDownloaded","determineApiUrlToGenerateReport","inputYear","prefix","environment","chartLocationSearchParams","forEach","toLowerCase","extractedChartIDFromStorageKey","getItem","getChartLocationSearchParams","print","currentTime","responseType","headers","Accept","getResponse","blob","Blob","FileSaver","saveAs","PrintButton","nextProps","onClickPrintButton","currentFiscalYear","app","RightSide","showDownloadButton","TOGGLE_MENU","OPEN_MENU","CLOSE_MENU","removeStyleToBody","innerWidth","document","body","style","overflow","addStyleToBody","toggleMenu","menu","isOpen","BurgerMenuTypes","currentLocation","ContainerTypes","isClean","openMenu","closeMenu","MenuTypes","BurgerButtonTypes","SectionTypes","subsections","index","renderSubsection","SubsectionTypes","subsection","BurgerButtonComponent","burgerIcon","BurgerButton","NavigationBar","showRightSideNavigation","LeftSide","determineActiveLink","routeName","determineActiveSection","activeSection","Section","Subsection","Navigation","routes","ROUTES","navigationOptions","renderSection","BASE_OVERLAY_CLASS","HIDDEN_OVERLAY_CLASS","CLEAN_OVERLAY_CLASS","generateClassNameForOverlay","isWideEnough","defaultContextProperties","StickyContext","createContext","topState","bottom","top","stickyToTop","distanceToTop","distanceToTopFromBottom","viewableHeight","stickyElementHeight","offset","bottomElement","getScrollableStickyness","hasDirectionChanged","direction","windowHeight","distanceToTopFromElementBottom","distanceToTopFromSticky","distanceToBottomFromSticky","isStatic","setStatic","stickyToBottom","setPosition","Sticky","placeholderHeight","stickyElement","offsetHeight","setPlaceholderHeight","setSticky","setDirection","setProperties","element","scroll","getCurrentScroll","currentDirection","setScroll","documentElement","scrollTop","innerHeight","getBoundingClientRect","getPositionalParameters","addEventListener","setPropertiesWithScroll","nextState","isEqual","children","removeEventListener","Provider","setStickyElement","setPlaceholder","height","node","instanceOf","Element","ContainerComponent","canShowMenu","handleResize","role","containerRender","setBottomElement","Container","BurgerMenuComponent","BurgerMenu","SECONDARY_BACKGROUND","TranslateContext","Screen","showComments","isFetchingInitialData","translation","ScreenLocale","addTranslation","hasNewTranslation","hasNewChildren","hideNavigation","background","shouldShowCommets","oneOf","NAME","CVR_NUMBER","CUSTOMER_ID","ADDRESS","CITY","ZIP_CODE","COUNTRY","FISCAL_YEAR_START","NUMBER_FORMAT","CURRENCY","countryOptions","sanitizeErrorResponseForDisplay","fieldsWithErrors","details","accumulator","currentValue","isInvalid","CLEAR_CLIENT_DATA","CLEAR_FORM_DATA","CLICK_SUBMIT_BUTTON","ERROR_FETCH_DATAFROMCVR","ERROR_INPUT_VALIDATION","ERROR_POST_FORM","INIT_FETCH_DATAFROMCVR","INPUT_UPDATE_CLIENTDATA","SUCCESS_FETCH_DATAFROMCVR","SUCCESS_POST_CREATE_CLIENT","UPDATE_CVR_NUMBER","fetchDataFromCVR","CVRnumber","country","sanitizedResponse","hits","_source","Vrvirksomhed","virksomhedMetadata","nyesteNavn","navn","cvrNummer","nyesteBeliggenhedsadresse","vejnavn","husnummerFra","etage","postnummer","postdistrikt","sanitizeResponseFromCVRDataFetch","errorResponse","errorFetchDataFromCVR","inputValidationError","scrollTo","successCreateCompany","statusCode","CREATE_CLIENT_ROUTE_NAME","trackClientCreated","INTEGRATION_LIST","postCallToSubmit","endpoint","ENDPOINT_DASHBOARD_CLIENT","createClient","fiscalDateWithAddedYear","onSubmitCreateClient","isNameEmpty","updateClientDataOnInput","inputName","inputValue","form","isTouched","Search","requestCVRdata","handleChange","sanitizeResponseData","companyName","cvrNumber","customerId","customer_id","address","city","postNumber","zip_code","fiscalYearStart","fiscal_year_start","currency","numberFormat","number_format","CLIENT_DATA_NUMBERFORMAT_UPDATE","CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION","DELETE_SUCCESS_CLIENT_DATA","DROPDOWN_VALUE_UPDATED_CLIENT_DATA","INIT_FETCH_CLIENT_DATA","INIT_SUBMIT_CLIENT_DATA","RESET_FORM_CLIENT_DATA","SUCCESS_FETCH_CLIENT_DATA","SUCCESS_POST_CLIENT_DATA","toggleConfirmationModal","fetchClientData","urlOfGetCall","submitDataChanges","localState","urlOfPostCall","method","resetForm","deleteCompany","urlOfDeleteCall","trackClientDeleted","handleDropDownValueChange","handleDropDownNumberFormatChange","numberFormatOptions","currencyOptions","currencyFormatOptions","DropdownInput","updatedData","assign","subLabelText","labelText","htmlFor","selection","clientData","bindActionCreators","actionsCreateClient","actionsClientDataCompany","SelectNumberFormat","Settings","defaultValue","typeSanitizer","scope","indexOf","String","startsWith","ButtonRedirect","redirect","LoadingSpinner","centered","loadingImage","Consumer","MainButton","buttonText","InfoCard","defaultIcon","showErrorMessages","Tooltip","Popup","header","on","padding","borderRadius","boxShadow","border","fontSize","width","wordBreak","zIndex","questionMarkImage","InfoBoxComponent","InfoBox","InfoBanner","integration","subtitle","plainTriangleSmall","CardTitle","optimizedTypeSanitizer","sectionName","useMemo","TableCommonPropTypes","TableHeaderPropTypes","headings","subheadings","TableBodyPropTypes","row","TableRowPropTypes","rowIndex","TableRowNamePropTypes","hasDefinition","TableRowCellsPropTypes","cells","display","TableTitlePropTypes","sectioName","readMoreIdKey","showBottomBorder","TableHeader","Row","HeaderCell","headerValue","userInputValidationErrorType","hasValidTypes","hasValidTypesForStringValues","hasValidTypesForNumberValues","errorHandlerForStringValues","errorIdentifier","isDecimalMinusZero","is","isPercentageMinusZero","addMinusToDisplayValue","localizeNumber","rawValue","localizedValue","displayValue","rawToPrettyExceptionHandler","exception","isSimulationException","getNumberFormat","memoizeFormatConstructor","Intl","NumberFormat","throwErrorForRawNumbers","errorHandlerForNumberValues","rawToPretty","args","precision","maximumFractionDigits","exceptionValue","rawToEditing","cellState","useGrouping","minimumFractionDigits","isEmptyCellException","editingToPretty","convertedNumberFromEditToRaw","numeral","editingToRaw","userCantUseEqual","test","isAllowedCharacter","userCantWriteNonAllowedCharacters","localizeNumberWithCustomPrecision","TableRowNameSubLabelAttribute","attribute","TableRowNameSubLabel","attributes","attributeIndex","TableRowName","toggleSidePanel","Cell","IconPerformance","iconUp","iconDown","iconIrrelevant","iconBlank","shouldCellBeStyled","cellStyle","bold","relevance","ReadOnlyCell","styleProperties","ExceptionCell","cellIndex","determineValueToBeRendered","Spinner","Loader","active","inline","IconArea","fromLocalizedStringToRawNumber","parseFloat","replace","CONVERT_RAW_DATA_INTO_GRAPH_DATA","REPORT_SIMULATION_ERROR_FETCH_DATA","REPORT_SIMULATION_ERROR_UPDATE_CELL_VALUE","REPORT_SIMULATION_INIT_FETCH_DATA","REPORT_SIMULATION_INIT_UPDATE_CELL_VALUE","REPORT_SIMULATION_SUCCESS_FETCH_DATA","REPORT_SIMULATION_UPDATE_CELL_VALUE","REPORT_SIMULATION_CLEAR_DATA","determineColorOfBar","successFetchData","fetchSimulationTablesData","simulation_analysis","errorFetchData","fetchSimulationData","Promise","all","updateCellValue","sectionIndex","rowName","initUpdateCellValue","updateSectionsData","convertRawDataIntoGraphData","dataLabels","dataArray","xxLabels","rowData","cell","Math","round","translateRawText","datasets","backgroundColor","labels","FORECAST_FETCH_DATA_INIT","FORECAST_FETCH_DATA_SUCCESS","successFetchForecastData","clientID","forecast_analysis","fiscalYear","fiscal_year","cleanUpResponse","fetchForecastData","baseURL","configForRequestFetchForecastData","errorFetchingData","SUCCESS_FETCH_DATA_INPUT","WIPE_DATA_INPUT","setGlobalState","wipeGlobalState","sanitizeResponseOfGetData","current_fiscal_year","years","convertViewNameToKind","determineImageProperties","virkLogo","economicLogo","getDataApiUrl","isPUT","yearBeingEdited","kind","view","determineIsBudgetScreen","isInputScreen","getCoordX","determineMethodType","reference","determineInputScreenAPIurl","positionOfYearBeingEdited","availableYears","sort","max","determineYearBeingEdited","apiPath","determineAPIurlForCellSubmitValue","CELL_EVENT_END_SUBMIT","CELL_EVENT_INIT_SUBMIT","CELL_EVENT_SIMULATION_SUCCESS_PUT","CELL_EVENT_TOGGLE_EDITING","CELL_EVENT_UNTOGGLE_EDITING","CELL_EVENT_NOTHING_TO_UPDATE","CELL_EVENT_UPDATE_POSITION","CELL_EVENT_REMOVE_HIGHTLIGHT","startLoading","successResponseHandler","currentRoute","stopLoading","triggerCellSubmit","Number","cell_value","negative_zero","row_name","updateEditedCellPosition","cellBeingEdited","sectionBeingEdited","rowBeingEdited","handleTabKeyPress","currentPosition","newPosition","coordXX","coordYY","moveToCellOnTheRight","getElementById","cellOnFirstPositionOfRowBelow","moveToRowBelowWhenEndWasReached","focus","blur","handleShiftTabKeyPress","moveToCellOnTheLeft","moveCell","shiftKey","keyCode","moveToCellBelow","moveToCellAbove","prettyfiedFormat","isFocused","hasDisplayValueChanged","isCellHighlighted","hasChangedLoadingState","hasNewErrors","persist","editingFormat","updatedStateOnFocus","select","editToPrettyFormat","updatedStateOnBlur","shiftTabCombination","shouldCellMovePlace","shouldValueBeRevertedToOriginal","onBlur","onFocus","onKeyDown","CellDispatcher","grid_position","style_properties","TableRowCells","TableRow","TableDivider","TableRowDispatcher","TableBody","Body","TableTitle","definition","console","warn","SimpleTable","unstackable","TableCommon","subheader","Table","ModalConfirmation","showLoading","onClickSubmitButton","toggleLoading","contentTitle","contentDescription","accountName","onModalClose","onClickCancelButton","buttonCancelText","buttonSubmitText","isWarning","close","triangle","TextInput","subLabel","showTooltip","showErrorMessage","optionalTranslation","Buttons","Datepicker","currentLanguage","date","dateFormatCalendar","getLocale","Form","searchText","searchQuery","innerText","list","toLocaleLowerCase","countryOptionsFromState","searchCountry","handleChangeCountry","onOpen","onSearchChange","CreateClient","ClientDataLocale","sanitizePyramidAndKPIResponse","pyramidData","dupont_pyramid","pyramid","kpiData","kpi","ERROR_FETCH_DATA","INIT_FETCH_DATA","SUCCESS_FETCH_DATA","SUCCESS_FETCH_PYRAMID_DATA","errorDispatch","fetchPyramidData","successFetchPyramidData","fetchTablesData","fetchReportsData","initFetchData","VALUATION_FETCH_DATA_INIT","VALUATION_FETCH_DATA_SUCCESS","fetchValuationData","configForRequestFetchValuationData","valuation_report","successFetchValuationData","ReportUnavailable","ErrorCardLocale","InfoSection","buttons","button","primary","AccessSection","accessFooter","accessTitle","accessText","accessFeatureTitle","feature","InfoCardDetailedComponent","TrialLocale","footer","lock","InfoCardDetailed","TrialPromotion","UnauthorizedCard","isTrial","PromotionLocale","ScreenDispatcher","trial_user","analysisModuleDispatcher","WrappedComponent","AnalysisModuleDispatcher","fetchData","nextLocation","nextSections","nextIsFetchingInitialData","currentSections","actionsSimulation","actionsReport","actionsValuation","actionsForecast","TitleAreaPropTypes","showImportButton","showCurrentFiscalYear","showDropDown","allYears","importButtonText","showDescription","descriptionText","SelectYearPropTypes","TitlePropTypes","Description","Title","ButtonImportData","CurrentFiscalYear","convertOptionsToDropdownOptionsFormat","a","b","SelectYear","selectOnBlur","TitleArea","ForecastMain","sticky","Forecast","CellsLocale","ForecastLocale","AnalysisLocale","generateLocales","forecast","BoxContent","isNaN","shouldTopConnectorBeHidden","shouldBottomConnectorBeHidden","BoxWrapper","showLeftSideConnector","showRightSideConnector","determinePosition","Pyramid","number_heading","number_heading_year","subvalue","subvalueIndex","subArray","reportManagement","KPIs","reportName","entries","difference","mergeActiveIndexes","legend","hidden","ChartLegends","chart","legends","chartID","useState","activeLegends","setActiveLegends","setLegendHidden","selectedIndex","useEffect","Array","isArray","getActiveLegendsIndexes","selectedLegend","meta","getDatasetMeta","update","tooltipCallbacks","units","isBarChart","item","yLabel","formatLabel","xLabel","indexOfLabel","datasetIndex","footerOfTooltip","determineColorOfLine","chartOptions","layout","left","right","responsive","maintainAspectRatio","tooltips","callbacks","caretSize","caretPadding","intersect","displayColors","xPadding","yPadding","cornerRadius","titleFontColor","titleFontSize","titleFontStyle","bodyFontColor","bodyFontSize","bodyFontStyle","borderColor","footerFontColor","footerFontStyle","footerFontSize","borderWidth","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","hover","scales","yAxes","gridLines","offsetGridLines","zeroLineBorderDashOffset","drawBorder","zeroLineColor","ticks","drawTicks","fontFamily","xAxes","tickMarkLength","scaleStartValue","removeEmptyRows","determineHiddenStatus","enabledLegendsIndexArray","hiddenStatus","rawDataToChartData","labelRaw","fill","lineTension","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","radius","pointHitRadius","pointHoverRadius","pointBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","chartData","generateLegends","chartDataProps","ChartComponent","shouldDisplayChartsSideBySide","setChart","chartTitle","unitsForDisplay","chartMetadataInURL","chart_instance","defaults","global","defaultFontColor","defaultFontFamily","defaultFontSize","hasTwoCharts","hasChart","ChartWrapper","chartPositionClassName","getClassForSideBySideChart","Main","fetchDataOnChangeYear","importButton","moduleSection","chart_subtitle","ReportManagement","ReportManagementLocale","ReportBudget","ChartTypes","chartsData","BarChartComponentTypes","barChartOptions","defaultColor","barPercentage","categoryPercentage","Chart","BarChartComponent","fontRoboto","isFirstLoad","hasReceivedNewData","languages","lang","simulationReport","Sections","moduleBottom","span","ReportSimulation","ReportSimulationLocale","APP_AUTH_TOKEN_STORED","decodeToken","token","jwtDecode","initialState","clientReducerInitialState","appReducerInitialState","defaultForm","defaultClient","SAVE_DATA_IMPORT_SESSION","accountPlans","overview","dataImportSessionReducer","action","INIT_FETCH_CLIENTS_LIST","SUCCESS_FETCH_CLIENTS_LIST","ERROR_FETCH_CLIENTS_LIST","SORTING_DASHBOARD_LIST","LOOKUP_DASHBOARD_LIST","SORT_ORDER_ASC","clients","updated_at","visible","sortKey","sortOrder","selected","menuReducer","view_name","valuation","sensitivityAnalysis","valueDriversOptions","table1","valueDriverX","valueDriverY","table2","reducers","dataImportSession","listClients","localeReducer","statusText","routerReducer","$set","valuationReport","SENSITIVITY_ANALYSIS_INIT_FETCH_DATA","table","SENSITIVITY_ANALYSIS_VALUE_DRIVER_CHANGE","axis","SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA","tableData","history","createBrowserHistory","middlewares","routerMiddleware","thunk","store","next","determineOptions","navOption","trackPage","clientInfo","per_id","psp_id","email","userId","identify","redirectToErrorView","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","connectRouter","combineReducers","applyMiddleware","isValueDriverRepeated","driverX","driverY","convertResponseOptionsToDropdownOptionsFormat","valueDrivers","initFetchSensitivityAnalysisData","parameters","prepareURLParameters","prepareURL","sensitivity_analysis","value_drivers","value_driver_x","value_driver_y","prepareResponse","onDropdownChange","TableLoadingData","TableSensitivityAnalysis","fixed","padded","SensitivityAnalysis","ValuationMain","Valuation","ValuationLocale","RETURN_URL_PATH","RETURN_URL_SEARCH","DATA_SESSION_IMPORT_ID","getSessionStorageKey","setInSessionStorage","sessionStorage","getFromSessionStorage","removeFromSessionStorage","removeItem","Root","returnPathname","returnSearch","LIST_CLIENT_ROUTE_NAME","DASHBOARD_INIT_ROUTE_NAME","Redirect","TopRow","hasCreateClientButton","renderCreateClientButton","TrialExpiredComponent","TopRowLocale","TrialExpiredLocale","FooterLocale","calendar","TrialExpired","convertYearsFormatForDropdown","contains_data","filterSelectedYears","convertYearsToBackendFormat","sanitizedIntegrationName","translateTotals","totals","namespace","total","getIntegrationsListURL","createDataImportSession","integration_module_id","data_import_session","configuration","agreement_token","generatePostPayload","createDataImportSessionURL","getDataImportSession","updateDataImportSessionURL","updateDataImportSession","account_plan","prepareImportDataForBackend","updateDataImportSessionRequestBody","confirmDataImportSession","agreementTokenURL","generateNewToken","deleteToken","axiosDelete","deleteTokenURL","saveDataImportSession","account_plans","parsedData","IntegrationsContainerComponent","goTo","generateDataImportSession","storeSession","idFromProps","shouldGenerateDataImportSession","isList","idFromStorage","bgColor","render","additionalLocale","IntegrationsContainer","saveData","sanitizeCasewareResponse","tokenID","disabledInput","sanitizeCasewareNewTokenResponse","DeleteToken","onClickConfirmDeleteTokenButton","openModal","DisplayToken","GenerateToken","copyToken","execCommand","logoTokenImg","copiedTokenImg","logoNoTokenImg","updateStateOnDataFetched","determineLogo","SkipImport","economicURL","determineLanguageForTheCallBackURL","callbackURL","encodeURIComponent","origin","economicURLParams","Economic","Virk","virkURLParams","Caseware","casewareLogo","Cards","integrations","ListComponent","getIntegrationList","shouldShowBottomButton","List","getSelectedAccountPlan","RowContext","SelectorContext","onClickChildItem","onClickParentItem","onClickBackButton","visiblePanel","selectedOption","MapScreenContext","isTabAreaLoading","selectedPanel","selectedTab","toggleNotification","toggleSelectedTab","unmappedCount","MAPPED","UNMAPPED","determineSelectedTabClass","panel","Tabs","API_DATA_PATH","apiMapURL","path","dataSessionId","mergeSourceMappingData","sourceMappingData","account","source_mapping_key","preparePayloadForUpdate","mapping_updates","requestUpdateData","sanitizeMappableDataResponse","mappable","unmapped_count","mappingCompleted","mapping_completed","request","responseURL","integrationType","rowsType","yearsType","integer","OverviewTypes","float","TableTypes","onSelectYear","onClickMapButton","reverse","ButtonsOverview","OverviewComponent","loadingDropdown","selectedAccountPlan","goToInput","toggleLoadingDropdown","hasError","balanceTotal","isBalanceZero","fetchDataImportSessionOnYearChange","Overview","saveSession","ButtonsArea","GroupType","isRoot","LeftTextType","LeftType","toggleChildren","isExpanded","hasOriginalValueChanged","ExpandButtonType","RowType","source_mapping_label","MapScreenTypes","MapScreenContentTypes","isNotificationOpen","getData","isConfimationModalOpen","overviewYear","importSessionSelectedYears","MainTypes","undoButtonTypes","updateData","DiscrepancyNotificationTypes","parentName","childName","changed","kbo_account","child_name","parent_name","DropdownTypes","sharedPanelType","childPanelType","parentPanelType","sharedSelectorType","closeModal","selectorType","selectorHeaderType","selectorItemType","RightComponentTypes","ChildItem","onSelectNewKboAccountItem","hasChildren","closeDropdown","toggleInnerLoading","ParentItem","ChildPanel","ResetOptionContent","ParentPanel","SelectorHeader","closeIcon","isVirk","Selector","onClickCloseModal","renderPanel","dropdownData","Dropdown","hasAccountNameChanged","hasModalOpenStatusChange","Value","Right","Button","UndoButton","LeftText","label1","label2","ExpandButton","minusIcon","plusIcon","Left","kboAccount","childrenData","sanitizeAccountName","isContainer","Group","hasNoDiscrepancy","circleExclamation","MainInner","DiscrepancyNotification","successIcon","MapScreenContent","currentlySelectedAccountItem","onCancelParentItemChange","onConfirmParentItemChange","overviewRows","MapComponent","hasLanguageChanged","hasSessionIdChanged","shouldCloseModals","onSelectParentItem","toggleLoadingState","selectedTabFromState","updateStateAfterDataFetch","responseFromDataUpdate","checkBalance","shouldShowContent","Map","SelectPlanDropdown","onSelectOption","fluid","SelectPlanComponent","plan","translatedAccountPlans","localizeAccountPlans","onClickSelectPlanButton","SelectPlan","SelectYearsComponentPropTypes","areAllYearsSelected","every","areSomeYearsSelected","isIndeterminate","onlyEnabledYears","selectAllYears","YearsComponentPropTypes","submitYears","CheckBoxYearComponentPropTypes","clickYearCheckBox","hasData","CheckboxYear","prevProps","tabIndex","Years","indeterminate","clickAllYearsCheckBox","NoYears","SelectYearsComponent","isComponentLoading","saveDataImportSessionFromProps","toggleComponentLoading","sanitizedYears","containsData","SelectYears","SuccessComponent","successImage","Success","onChangeDatePicker","fetchClientsList","successFetchClientsList","errorFetchClientsList","handleSort","newSortOrder","sortedClients","localeCompare","clientForLookup","handleLookup","query","headerRows","sortBy","TableCell","DemoLabel","maxWidth","Label","TableLinkedCell","subValue","demo","updatedAtDate","updatedAtValue","getDate","sorted","order","TableListClients","iconPosition","selectable","sortable","ListClients","HeaderLocale","contextTypes","Init","BottomButton","InputPropTypes","Input","apiURL","updateStateAfterDataReceived","setTimeout","InputDataLocale","Unauthenticated","Unauthorized","Locale","PageNotFound","localeTopRow","localeFooter","errorMessage","errorTitle","Error424","taxonomy","trackDataImportFail","secondaryBackground","ServerErrorCard","Rollbar","rollbar","accessToken","captureUncaught","captureUnhandledRejections","enabled","autoInstrument","network","log","dom","navigation","connectivity","init","hashedError","dehashedError","JSON","atob","stringify","configure","context","person","rollbarPayload","critical","GoTo404","from","Routes","fallback","Switch","Route","exact","component","DashboardInit","ClientEdit","ClientDataSettings","ValuationReport","routeProps","CONTAINER_STATIC_404","STATIC_ERROR_424","ERROR_SERVER_DOWN","TRIAL_EXPIRED_ROUTE_NAME","TRIAL_ROUTE_NAME","UNAUTHENTICATED_CARD_ROUTE_NAME","UNAUTHORIZED_CARD_ROUTE_NAME","INTEGRATION_IMPORT_SUCCESS","INTEGRATION_SELECT_YEARS","CAP_INTEGRATION_SELECT_ACCOUNT_PLAN","CAP_INTEGRATION_OVERVIEW","CAP_INTEGRATION_MAP","isErrorPage","isErrorRoute","btoa","styleJS","Containers","DefaultStyle","minHeight","marginRight","marginLeft","NotificationItem","margin","borderTop","fontWeight","info","MessageWrapper","paddingLeft","ActionWrapper","paddingRight","Action","textDecoration","Dismiss","NotificationsComponent","showFeedbackPanel","FeedbackPanelContentPropTypes","FeedbackPanelMainPropTypes","panelMainDescription","panelMainTitle","panelSubmitButton","FeedbackPanelButtonPropTypes","FeedbackButton","getRequestBody","orgid","company","phone","subject","reason","retURL","utf8","description","submitFeedback","requestBody","feedback","FeedbackMain","panelTextArea","userName","userEmail","setLoading","setText","hasResolved","setHasResolved","buttonOpen","panelCloseButton","FeedbackPanelContent","isPanelOpen","FeedbackPanel","handleNewDefinition","newDefinition","definitions","current","ContentType","TitleType","TypeType","SidePanelTitleTypes","SidePanelModuleItemTypes","imageUrl","SidePanelModuleItemContentTypes","SidePanelModulesTypes","SidePanelContainerPropTypes","SidePanelTypes","isVisible","onClickCloseButton","DefinitionType","SidePanelContentTypes","old","SidePanelTitle","dangerouslySetInnerHTML","__html","SidePanelModuleItemContent","SidePanelModuleItem","SidePanelModules","SidePanelContent","toggleClass","setToggleClass","currentClassName","oldClassName","SidePanelComponent","setDefinitions","fetchDefinitionData","unmountOnExit","classNames","in","timeout","SidePanelContainer","Boolean","SidePanel","App","actionStoreToken","handleAuthToken","newToken","existingToken","getFromLocalStorage","decodedExistingToken","decodedNewToken","iat","requestHandler","interceptors","use","config","newConfig","Authorization","reject","responseHandler","isWalkmeEnabled","decoder","permissions","splitLocale","variables","user_id","product_keys","walkme_segments","setWalkmeVariables","authorization","redirect_to","urlForbidden","containsCVRLookupPath","addCompanyPath","responseSanitizer","errorCodeResponseHandler","initialize","defaultLanguage","register","delimiters","thousands","decimal","abbreviations","thousand","million","billion","trillion","symbol","registerLocale","enUS","Application","withRouter","ReactDOM","webpackContext","req","webpackContextResolve","resolve"],"mappings":"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AAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,0BAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,kBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,kBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,4BAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,qBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,kBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,sBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,qBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,kBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,sBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,0BAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,wBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,kBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,4BAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,yBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,iBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,oBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,mBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,aAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,eAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,cAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,QAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,SAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,YAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,WAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,gBAER,CACE3B,IAAK,KACLN,MAAO,KACPgS,KAAM,KACN/P,KAAM,UAER,CACE3B,IAAK,KACLN,MAAO,KACP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","file":"bundle-20250204101104-825ddafa8e10ac6c812f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"javascripts/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([673,2,1,3]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const getClassNames = classes => {\n if (!classes) {\n return '';\n }\n // in case numbers or booleans are passed as classes\n const stringifyClasses = classes.toString();\n\n return stringifyClasses.split(',').join(' ');\n};\n\nexport default getClassNames;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'semantic-ui-react';\nimport { localize } from 'react-localize-redux';\nimport getClassNames from '../../helpers/style';\n\nimport './index.css';\n\n/**\n * Button used for actions (and not submissions).\n * @param {func} translate\n * @param {object} props\n */\nconst CommonWhiteButton = ({ translate, ...props }) => (\n \n \n {translate(props.text)}\n \n \n);\n\nCommonWhiteButton.propTypes = {\n // the actual text of the button\n text: PropTypes.string,\n // A spinner is shown when loading\n isLoading: PropTypes.bool,\n // Event handler for when button is clicked\n handleClick: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired,\n isEnabled: PropTypes.bool,\n className: PropTypes.arrayOf(PropTypes.string),\n id: PropTypes.string\n};\n\nCommonWhiteButton.defaultProps = {\n isEnabled: true,\n className: [],\n isLoading: false,\n text: '',\n id: null\n};\n\nexport default localize(CommonWhiteButton, 'locale');\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'semantic-ui-react';\nimport { localize } from 'react-localize-redux';\nimport getClassNames from '../../helpers/style';\nimport './index.css';\n\nexport const ButtonSubmit = ({\n translate,\n disabled,\n isLoading,\n className,\n text\n}) => (\n
\n \n {translate(text)}\n \n
\n);\n\nButtonSubmit.propTypes = {\n text: PropTypes.string,\n isLoading: PropTypes.bool,\n disabled: PropTypes.bool,\n translate: PropTypes.func.isRequired,\n className: PropTypes.arrayOf(PropTypes.string)\n};\n\nButtonSubmit.defaultProps = {\n text: '',\n isLoading: false,\n disabled: false,\n className: undefined\n};\n\nexport default localize(ButtonSubmit, 'locale');\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Header, Icon, Modal } from 'semantic-ui-react';\n\nexport class Confirmation extends React.PureComponent {\n render() {\n return (\n \n
\n \n

{this.props.message}

\n
\n \n \n \n {this.props.cancelButtonText}\n \n \n \n\n {this.props.okButtonText}\n \n \n \n );\n }\n}\n\nConfirmation.propTypes = {\n title: PropTypes.string.isRequired,\n message: PropTypes.string.isRequired,\n handleOkButton: PropTypes.func.isRequired,\n handleCancelButton: PropTypes.func.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n trigger: PropTypes.object.isRequired,\n okButtonText: PropTypes.string.isRequired,\n cancelButtonText: PropTypes.string.isRequired\n};\n\nexport default Confirmation;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport format from 'date-fns/format';\nimport { localize } from 'react-localize-redux';\n\nimport Confirmation from '../Confirmation';\n\nexport const ActionButtons = ({ translate, edit, id, createdAt, ...props }) => {\n const createdAtDate = new Date(createdAt);\n\n return (\n
    \n
  • \n
    \n {format(createdAtDate, 'dd.MM.yy')}\n
    \n
  • \n {!edit && (\n
  • \n \n {translate('comments.actions.edit')}\n \n
  • \n )}\n {id && edit && (\n \n props.handleDelete(id)}\n isModalOpen={props.isModalOpen}\n message={translate('comments.delete.message')}\n okButtonText={translate('comments.delete.yes')}\n title={translate('comments.delete.title')}\n trigger={\n \n {translate('comments.delete.button')}\n \n }\n />\n \n )}\n
\n );\n};\n\nActionButtons.propTypes = {\n hasComment: PropTypes.bool.isRequired,\n createdAt: PropTypes.string.isRequired,\n id: PropTypes.number,\n edit: PropTypes.bool,\n handleEdit: PropTypes.func,\n handleDelete: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired,\n toggleModal: PropTypes.func,\n isModalOpen: PropTypes.bool\n};\n\nActionButtons.defaultProps = {\n id: null,\n edit: false,\n handleEdit: undefined,\n isModalOpen: false,\n toggleModal: undefined\n};\n\nexport default localize(ActionButtons, 'locale');\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Checkbox, TextArea } from 'semantic-ui-react';\n\nimport ButtonAction from '../ButtonAction';\nimport ButtonSubmit from '../ButtonSubmit';\nimport CommentActions from './actionButtons';\n\nclass EditComment extends Component {\n static propTypes = {\n id: PropTypes.number,\n comment: PropTypes.string,\n createdAt: PropTypes.string,\n printable: PropTypes.bool,\n placeholder: PropTypes.string,\n translate: PropTypes.func.isRequired,\n toggleEdit: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n handleCancel: PropTypes.func.isRequired,\n handleDelete: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n id: 0,\n comment: undefined,\n createdAt: undefined,\n printable: false,\n placeholder: null\n };\n\n state = {\n id: this.props.id || null,\n comment: this.props.comment,\n printable: this.props.printable,\n isModalOpen: false\n };\n\n onChange = event => this.setState({ comment: event.target.value });\n\n onCancel = () => {\n this.setState({ comment: this.props.comment });\n this.props.toggleEdit();\n if (!this.props.id) this.props.handleCancel();\n };\n\n toggleModal = () => this.setState(prevState => ({ isModalOpen: !prevState.isModalOpen }));\n\n handleSubmit = e => {\n e.preventDefault();\n const { comment, printable, id } = this.state;\n\n this.props\n .handleSubmit({\n id,\n printable,\n comment\n })\n .then(() => {\n if (this.props.id) this.props.toggleEdit();\n });\n\n return {\n comment,\n printable,\n id\n };\n };\n\n togglePrint = () => this.setState(prevState => ({ printable: !prevState.printable }));\n\n render() {\n const { handleDelete, translate, placeholder, id, createdAt } = this.props;\n const { comment, isModalOpen } = this.state;\n\n return (\n \n {\n this.editTextArea = textarea;\n }}\n autoFocus\n autoHeight\n className=\"Comments-textarea\"\n placeholder={translate(placeholder)}\n rows={1}\n value={comment}\n onChange={this.onChange}\n />\n
\n \n
\n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
  • \n \n
  • \n
\n
\n \n );\n }\n}\n\nexport default EditComment;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommentActions from './actionButtons';\n\nconst StaticComment = ({ translate, ...props }) => (\n
\n
{props.comment}
\n
\n \n
\n {!props.printable ? (\n
\n {translate('comments.actions.hidden')}\n
\n ) : null}\n
\n
\n);\n\nStaticComment.propTypes = {\n comment: PropTypes.string.isRequired,\n createdAt: PropTypes.string.isRequired,\n id: PropTypes.number.isRequired,\n printable: PropTypes.bool,\n toggleEdit: PropTypes.func.isRequired,\n handleDelete: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nStaticComment.defaultProps = { printable: true };\n\nexport default StaticComment;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditComment from './Edit';\nimport StaticComment from './Static';\n\nclass Comment extends React.PureComponent {\n static propTypes = {\n printable: PropTypes.bool,\n edit: PropTypes.bool\n };\n\n static defaultProps = {\n printable: true,\n edit: false\n };\n\n state = { edit: this.props.edit };\n\n toggleEdit = () => {\n this.setState(prevState => ({ edit: !prevState.edit }));\n };\n\n addHiddenClass = () =>\n !this.props.printable ? 'Comments-hidden-from-print' : '';\n\n render() {\n return (\n
\n {this.state.edit ? (\n
\n \n
\n ) : (\n
\n \n
\n )}\n
\n );\n }\n}\n\nexport default Comment;\n","/**\n * This file is for extraction/mapping of data received.\n * This is temporary until response is cleaned.\n */\nexport function normalizeGetResponse({ comments }) {\n if (comments && comments.length === 0) {\n return [];\n }\n\n return comments.map(comment => ({\n comment: comment.content,\n id: comment.id,\n printable: comment.printable,\n createdAt: comment.created_at\n }));\n}\n\nexport const preparePayload = payload => {\n if (!payload || (payload && !payload.comment)) {\n throw new Error('Cannot POST or PUT an empty comment');\n }\n\n if (typeof payload.printable !== 'boolean') {\n throw new Error('Printable should be a boolean');\n }\n\n return {\n comment: {\n content: payload.comment,\n printable: payload.printable\n }\n };\n};\n\nexport const normalizeUpdatedResponse = response => ({\n comment: response.comment.content,\n id: response.comment.id,\n printable: response.comment.printable,\n createdAt: response.comment.created_at\n});\n\nexport function generateEmptyComment() {\n return {\n comment: '',\n id: null,\n printable: true,\n edit: true,\n createdAt: new Date(Date.now()).toISOString()\n };\n}\n","import {\n BUDGET_REPORT_ROUTE_NAME,\n CLIENT_DATA_COMPANY_ROUTE_NAME,\n CLIENT_DATA_SETTINGS_ROUTE_NAME,\n INPUT_BUDGET_ROUTE_NAME,\n INPUT_DATA_ROUTE_NAME,\n MANAGEMENT_REPORT_ROUTE_NAME,\n SECTION_CLIENT_DATA,\n SECTION_INPUTS,\n SECTION_REPORTS,\n SIMULATION_REPORT_ROUTE_NAME,\n FORECAST_ROUTE_NAME,\n VALUATION_REPORT_ROUTE_NAME\n} from '.';\nimport { routeWithClientId } from '../../helpers/location';\n\n/**\n * Returns specific options for navigation.\n * Used in inline navigation and segment track methods.\n *\n * id: Alias for the module.\n * page: Name to be displayed in segment for that specific route.\n */\nexport const NAVIGATION_OPTIONS = ({ section } = {}) => {\n const OPTIONS = {\n [SECTION_REPORTS]: [\n {\n link: routeWithClientId(MANAGEMENT_REPORT_ROUTE_NAME),\n name: 'menu.managementReport',\n id: 'management_report',\n page: 'kbo_management_report_page_viewed',\n section: SECTION_REPORTS\n },\n {\n link: routeWithClientId(BUDGET_REPORT_ROUTE_NAME),\n name: 'menu.budgetReport',\n id: 'budget_report',\n page: 'kbo_budget_report_page_viewed',\n section: SECTION_REPORTS\n },\n {\n link: routeWithClientId(SIMULATION_REPORT_ROUTE_NAME),\n name: 'menu.simulation',\n id: 'simulation_analysis',\n page: 'kbo_simulation_page_viewed',\n section: SECTION_REPORTS\n },\n {\n link: routeWithClientId(FORECAST_ROUTE_NAME),\n name: 'menu.forecast',\n id: 'forecast_analysis',\n page: 'kbo_forecast_page_viewed',\n section: SECTION_REPORTS\n },\n {\n link: routeWithClientId(VALUATION_REPORT_ROUTE_NAME),\n name: 'menu.valuationReport',\n id: 'valuation_report',\n page: 'kbo_valuation_page_viewed',\n section: SECTION_REPORTS\n }\n ],\n [SECTION_INPUTS]: [\n {\n link: routeWithClientId(INPUT_DATA_ROUTE_NAME),\n name: 'menu.accountingData',\n id: 'actual',\n section: SECTION_INPUTS\n },\n {\n link: routeWithClientId(INPUT_BUDGET_ROUTE_NAME),\n name: 'menu.budgetData',\n id: 'budget',\n section: SECTION_INPUTS\n }\n ],\n [SECTION_CLIENT_DATA]: [\n {\n link: routeWithClientId(CLIENT_DATA_COMPANY_ROUTE_NAME),\n name: 'menu.company',\n section: SECTION_CLIENT_DATA\n },\n {\n link: routeWithClientId(CLIENT_DATA_SETTINGS_ROUTE_NAME),\n name: 'menu.settings',\n section: SECTION_CLIENT_DATA\n }\n ]\n };\n\n return section ? OPTIONS[section] : OPTIONS;\n};\n\n/**\n * Because the `id` is the universal (used for frontend & backend)\n * name for routes, there is no need for sections when\n * accessing the navigation options.\n *\n * This function returns the details for a specific route.\n * The details include name, link, page and id.\n * @param {*} id\n */\nexport const flatNavigationOptions = id =>\n Object.values(NAVIGATION_OPTIONS())\n .reduce((acc, value) => acc.concat(value))\n .find(value => value.id === id);\n\nexport const getNavigationOptionsByLocation = ({ pathname }) =>\n Object.values(NAVIGATION_OPTIONS())\n .reduce((acc, value) => acc.concat(value))\n .find(value => value.link === routeWithClientId(pathname));\n\nexport const getSectionByLocation = ({ pathname }) =>\n NAVIGATION_OPTIONS(getNavigationOptionsByLocation({ pathname }));\n\nexport default NAVIGATION_OPTIONS;\n","import deepEqual from 'deep-equal';\nimport queryString from 'query-string';\nimport { getClientId } from '../../services/navigation/routeMapping';\nimport navOptions from '../../services/navigation/options';\n\n/**\n * ATTENTION: this function fails on the following cases:\n * example:() the param 'step' and 'ssstep' will return values if they exist.\n *\n * TODO: Improve and write tests.\n * Until this, the getURLParams() will be used for new features.\n *\n * Gets the value of a parameter in a location query\n *\n * @param {String} param [query parameter to be fetch]\n * @param {Object} location [Location from router]\n * @return {String/Null} [Returns a string/number with the value of the requested parameter]\n */\nexport function paramFromLocation(param, location) {\n if (!location.search) return null;\n const regex = new RegExp(`${param}=([^&]+)`);\n const matchedParam = location.search.match(regex);\n return matchedParam && matchedParam[1];\n}\n\n/**\n * Extracts the pathname from a full route\n *\n * @param {String} route [Full route with pathname and query]\n * @return {String} [Returns a string with the pathname of the route]\n */\nexport function pathnameFromRoute(route) {\n const regex = new RegExp('((http|https)://[^/]+)?([^?]+)');\n return route && route.match(regex)[3];\n}\n\n/**\n * Appends a clientId to each route.\n * @param {*} route\n * @param {*} location\n */\nexport function routeWithClientId(route, clientId) {\n const id = clientId || getClientId(window.location);\n\n if (!id) {\n return route;\n }\n\n return `${route}?clientId=${id}`;\n}\n\n/**\n * The 'queryParams' should be location.search\n * @param {String} queryParams\n */\nexport function getURLParams(queryParams) {\n return queryString.parse(queryParams);\n}\n\nconst findOption = (options = [], location) =>\n options.find(\n option => location.pathname === pathnameFromRoute(option.link)\n ) || {};\n\nexport const getNavOption = ({ section, location } = {}) => {\n if (!location.pathname) {\n return {};\n }\n\n const options = navOptions({ section, location });\n\n if (section) {\n return findOption(options, location);\n }\n\n const sections = Object.keys(options);\n let foundOption;\n\n sections.find(currentSection => {\n foundOption = findOption(options[currentSection], location);\n return !deepEqual(foundOption, {});\n });\n\n return foundOption;\n};\n\nexport const getModuleId = ({ section, location } = {}) =>\n getNavOption({ section, location }).id;\n\nexport const routeWithoutAuth = (route, location = {}) => {\n const params = queryString.parse(location.search);\n\n if (deepEqual(params, {})) {\n return route;\n }\n\n delete params.jwt_token;\n const noAuthParams = queryString.stringify(params);\n\n if (!noAuthParams) {\n return route;\n }\n\n return `${route}?${noAuthParams}`;\n};\n\nexport const extractYearFromURL = ({ location }) => {\n const params = queryString.parse(location.search);\n return params.selectedYear ? parseInt(params.selectedYear, 10) : undefined;\n};\n","import { paramFromLocation } from '../../helpers/location';\n\nexport const ROUTE_MAPPINGS = {\n mgt_report: 'management_report',\n budget_report: 'budget_report',\n simulation: 'simulation_analysis',\n input_data: 'accounting',\n input_budget: 'budget'\n};\n\nfunction keyFromState(state) {\n return state.router.location.pathname.match(/^\\/([a-z_]+)/)[1];\n}\n\nexport function mappedRoute(state) {\n return ROUTE_MAPPINGS[keyFromState(state)];\n}\n\nexport function getClientId(location) {\n return paramFromLocation('clientId', location);\n}\n","export const convertCategoryName = ({ source, accountPlan }) => {\n const capitalizedIntegration =\n source.charAt(0).toUpperCase() + source.slice(1);\n const sanitizedAccountPlanName = accountPlan.split('_')[0].toUpperCase();\n\n return `${capitalizedIntegration} ${sanitizedAccountPlanName}`;\n};\nexport const eventUserId = ({ pspId, perId }) => {\n // the country is a placeholder, should be replaced with BA data\n const country = 'DK';\n const userId = `${country}-${pspId}-${perId}`;\n return userId;\n};\n","export const CLIENT_CREATED_NEW_TRACKING = 'kbo_client_created';\nexport const CLIENT_DELETED = 'kbo_client_deleted';\nexport const COMMENT_ADDED = 'kbo_comment_added';\nexport const DATA_IMPORT_CANCELLED = 'kbo_data_import_cancelled';\nexport const DATA_IMPORTED_TRACKING = 'kbo_data_imported';\nexport const INPUT_SAVED = 'kbo_input_saved';\nexport const REPORT_DOWNLOADED = 'kbo_report_downloaded';\nexport const REPORT_DOWNLOADED_NEW_TRACKING = 'kbo_report_downloaded';\n","import { paramFromLocation, getNavOption } from '../../helpers/location';\nimport { convertCategoryName, eventUserId } from './helpers';\nimport * as event from './eventNames';\n\nexport const triggerActionAndSubmitToSegment = ({\n eventName,\n eventPayload\n}) => {\n const analyticsPayload = {\n ...eventPayload,\n client_id:\n eventPayload.client_id || paramFromLocation('clientId', window.location)\n }\n // sending data to segment\n if (ENV === 'integration' || ENV === 'production') {\n /*eslint-disable */\n analytics.track(eventName, analyticsPayload);\n } else {\n console.log('Tracking Event', eventName, 'with Payload', analyticsPayload);\n }\n};\n\nexport const trackSaveButtonClick = ({ clientId, inputData }) =>\n triggerActionAndSubmitToSegment({\n eventName: event.INPUT_SAVED,\n eventPayload: {\n client_id: clientId,\n input_data: inputData\n }\n });\n\nexport const trackClientCreated = ({ clientId }) => {\n triggerActionAndSubmitToSegment({\n eventName: event.CLIENT_CREATED_NEW_TRACKING,\n eventPayload: {\n client_id: clientId\n }\n });\n};\n\nexport const trackClientDeleted = ({ clientId }) =>\n triggerActionAndSubmitToSegment({\n eventName: event.CLIENT_DELETED,\n eventPayload: {\n client_id: clientId\n }\n });\n\nexport const trackCommentAdded = ({ clientId, moduleId }) =>\n triggerActionAndSubmitToSegment({\n eventName: event.COMMENT_ADDED,\n eventPayload: {\n client_id: clientId,\n module: moduleId\n }\n });\n\nexport const trackReportDownloaded = ({ clientId, year, moduleId }) => {\n triggerActionAndSubmitToSegment({\n eventName: event.REPORT_DOWNLOADED_NEW_TRACKING,\n eventPayload: {\n client_id: clientId,\n module: moduleId,\n year: year\n }\n });\n};\n\nexport const trackDataImportFail = ({ clientId, cvr, taxonomy }) =>\n // Tracking the new events.\n triggerActionAndSubmitToSegment({\n eventName: event.DATA_IMPORTED_TRACKING,\n eventPayload: {\n client_id: clientId,\n data_source: taxonomy,\n status: 'fail',\n vatin: cvr\n }\n });\n\nexport const trackDataImportSuccess = ({ clientId, source, cvr, accountPlan }) => {\n // Tracking the new events.\n triggerActionAndSubmitToSegment({\n eventName: event.DATA_IMPORTED_TRACKING,\n eventPayload: {\n client_id: clientId,\n data_source: convertCategoryName({ source, accountPlan }),\n status: 'success',\n vatin: cvr\n }\n });\n};\n\nexport const trackDataImportCancelled = ({ clientId, source }) => {\n triggerActionAndSubmitToSegment({\n eventName: event.DATA_IMPORT_CANCELLED,\n eventPayload: {\n client_id: clientId,\n data_source: source\n }\n });\n};\n\nexport const submitIdentityToSegment = ({ state }) => {\n const clientInfo = state.auth.sub;\n const { language, per_id, psp_id, email } = clientInfo;\n // the country is a placeholder, should be replaced with BA data\n const country = 'DK';\n const userId = eventUserId({\n pspId: psp_id,\n perId: per_id\n });\n const eventName = eventUserId({\n pspId: psp_id,\n perId: per_id\n });\n const eventPayload = {\n userId,\n per_id,\n psp_id,\n email,\n country,\n language\n };\n analytics && analytics.identify(eventName, eventPayload);\n return eventPayload;\n};\n\nexport const trackPage = ({ location, options }) => {\n const navOption = getNavOption({ location });\n // eslint-disable-next-line\n analytics && analytics.page(navOption.page, options);\n};\n","export const REPORT_COMMENTS_GET_INIT = 'REPORT_COMMENTS_GET_INIT';\nexport const REPORT_COMMENTS_GET_SUCCESS = 'REPORT_COMMENTS_GET_SUCCESS';\nexport const REPORT_COMMENTS_GET_ERROR = 'REPORT_COMMENTS_GET_ERROR';\n\nexport const REPORT_COMMENT_POST_INIT = 'REPORT_COMMENT_POST_INIT';\nexport const REPORT_COMMENT_POST_SUCCESS = 'REPORT_COMMENT_POST_SUCCESS';\nexport const REPORT_COMMENT_POST_ERROR = 'REPORT_COMMENT_POST_ERROR';\n\nexport const REPORT_COMMENT_DELETE_INIT = 'REPORT_COMMENT_DELETE_INIT';\nexport const REPORT_COMMENT_DELETE_SUCCESS = 'REPORT_COMMENT_DELETE_SUCCESS';\nexport const REPORT_COMMENT_DELETE_ERROR = 'REPORT_COMMENT_DELETE_ERROR';\n\nexport const REPORT_COMMENT_PUT_INIT = 'REPORT_COMMENTS_PUT_INIT';\nexport const REPORT_COMMENT_PUT_SUCCESS = 'REPORT_COMMENT_PUT_SUCCESS';\nexport const REPORT_COMMENT_PUT_ERROR = 'REPORT_COMMENTS_PUT_ERROR';\n","import axios from 'axios';\nimport { success } from 'react-notification-system-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport {\n mappedRoute,\n getClientId\n} from '../../services/navigation/routeMapping';\nimport {\n normalizeGetResponse,\n normalizeUpdatedResponse,\n preparePayload\n} from './integration';\nimport { trackCommentAdded } from '../../external/segment';\nimport { getModuleId } from '../../helpers/location';\nimport { SECTION_REPORTS } from '../../services/navigation';\n\nimport * as types from './actionTypes';\n\nexport const showSuccessNotification = (dispatch, locale, message) => {\n const translate = getTranslate(locale);\n\n dispatch(\n success({\n title: translate('comments.success.title'),\n message: translate(message),\n position: 'tc'\n })\n );\n};\n\nconst commentsApiUrl = (apiUrl, state, id) => {\n const viewName = mappedRoute(state);\n const clientId = getClientId(state.router.location);\n const url = `${apiUrl}/clients/${clientId}/reports/${viewName}/comments`;\n // when the comments have an id, append that to the url.\n return id ? `${url}/${id}` : url;\n};\n\nconst initRequest = type => ({ type });\n\nexport const getCommentsData = () => (dispatch, getState) => {\n dispatch(initRequest(types.REPORT_COMMENTS_GET_INIT));\n const url = commentsApiUrl(API_URL, getState());\n\n return axios\n .get(url)\n .then(response =>\n dispatch({\n type: types.REPORT_COMMENTS_GET_SUCCESS,\n payload: normalizeGetResponse(response.data)\n })\n )\n .catch(e =>\n dispatch({\n type: types.REPORT_COMMENTS_GET_ERROR,\n payload: e.message\n })\n );\n};\n\nconst successUpdateComment = (response, type) => (dispatch, getState) => {\n const { locale } = getState();\n\n dispatch({\n type,\n payload: normalizeUpdatedResponse(response.data)\n });\n\n showSuccessNotification(dispatch, locale, 'comments.success.message');\n\n return normalizeUpdatedResponse(response.data);\n};\n\nexport const postComment = comment => (dispatch, getState) => {\n dispatch(initRequest(types.REPORT_COMMENT_POST_INIT));\n const state = getState();\n const clientId = state.client.id;\n const { location } = state.router;\n const moduleId = getModuleId({ section: SECTION_REPORTS, location });\n const url = commentsApiUrl(API_URL, state);\n\n return axios\n .post(url, preparePayload(comment))\n .then(response => {\n trackCommentAdded({ clientId, moduleId });\n return dispatch(\n successUpdateComment(response, types.REPORT_COMMENT_POST_SUCCESS)\n );\n })\n .catch(error =>\n dispatch({\n type: types.REPORT_COMMENT_POST_ERROR,\n payload: error.message\n })\n );\n};\n\nexport const updateComment = comment => (dispatch, getState) => {\n dispatch(initRequest(types.REPORT_COMMENT_PUT_INIT));\n const url = commentsApiUrl(API_URL, getState(), comment.id);\n\n return axios\n .put(url, preparePayload(comment))\n .then(response =>\n dispatch(successUpdateComment(response, types.REPORT_COMMENT_PUT_SUCCESS))\n )\n .catch(error =>\n dispatch({\n type: types.REPORT_COMMENT_PUT_ERROR,\n payload: error.message\n })\n );\n};\n\nexport const deleteComment = id => (dispatch, getState) => {\n dispatch(initRequest(types.REPORT_COMMENT_DELETE_INIT));\n const url = commentsApiUrl(API_URL, getState(), id);\n return axios\n .delete(url)\n .then(() => {\n const { locale } = getState();\n\n dispatch({\n type: types.REPORT_COMMENT_DELETE_SUCCESS,\n payload: id\n });\n\n showSuccessNotification(dispatch, locale, 'comments.delete.success');\n })\n .catch(error =>\n dispatch({\n type: types.REPORT_COMMENT_DELETE_ERROR,\n payload: error.message\n })\n );\n};\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport Comment from './Comment';\nimport { generateEmptyComment } from './integration';\n\nimport * as actions from './actions';\nimport './index.css';\n\nexport class ReportComments extends PureComponent {\n static propTypes = {\n comments: PropTypes.arrayOf(\n PropTypes.shape({\n comment: PropTypes.string,\n id: PropTypes.number,\n edit: PropTypes.bool,\n createdAt: PropTypes.string\n })\n ),\n getCommentsData: PropTypes.func.isRequired,\n postComment: PropTypes.func.isRequired,\n updateComment: PropTypes.func.isRequired,\n deleteComment: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n comments: {\n comment: undefined,\n id: 0,\n edit: false\n }\n };\n\n state = {\n comments: this.props.comments,\n placeholder: 'comments.placeholder'\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps({ comments }) {\n this.setState({ comments });\n }\n\n handleSubmit = comment => {\n const { updateComment, postComment } = this.props;\n\n if (comment.id) {\n return updateComment(comment);\n }\n\n return postComment(comment);\n };\n\n handleDelete = id => {\n this.props.deleteComment(id);\n };\n\n handleCancel = () => {\n this.setState(prevState => ({\n ...prevState,\n comments: prevState.comments.filter(comment => !!comment.id)\n }));\n };\n\n addComment = () => {\n const commentNew = generateEmptyComment();\n this.setState(prevState => ({\n comments: [...prevState.comments, commentNew]\n }));\n\n return commentNew;\n };\n\n hasEmptyComment = () => this.state.comments.some(comment => !comment.id);\n\n addHiddenClass = () =>\n this.state.comments.length === 0 ? 'Comments-hidden-from-print' : '';\n\n render() {\n const { comments, placeholder } = this.state;\n const { translate } = this.props;\n\n return (\n
\n
\n

{translate('comments.title')}

\n
\n {comments.length === 0 ? (\n \n
\n {translate(placeholder)}\n
\n \n ) : (\n comments.map(comment => (\n \n ))\n )}\n
\n {comments.length !== 0 && !this.hasEmptyComment() ? (\n \n \n +\n {' '}\n {translate('comments.placeholder')}\n \n ) : null}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n comments: state.comments.comments,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(ReportComments);\n","export const APP_INIT_FETCHING_INITIAL_DATA = 'APP_INIT_FETCHING_INITIAL_DATA';\nexport const APP_STOP_FETCHING_INITIAL_DATA = 'APP_STOP_FETCHING_INITIAL_DATA';\nexport const APP_HAS_ERROR = 'APP_HAS_ERROR';\nexport const APP_CLIENT_DATA_STATE_UPDATE = 'APP_CLIENT_DATA_STATE_UPDATE';\nexport const APP_SET_INITIAL_LANGUAGE_INIT = 'APP_SET_INITIAL_LANGUAGE_INIT';\nexport const APP_UPDATE_LANGUAGE_INIT = 'APP_UPDATE_LANGUAGE_INIT';\nexport const APP_UPDATE_LANGUAGE_SUCCESS = 'APP_UPDATE_LANGUAGE_SUCCESS';\nexport const APP_UPDATE_LANGUAGE_ERROR = 'APP_UPDATE_LANGUAGE_ERROR';\nexport const APP_TOGGLE_DEFINITIONS_PANEL = 'APP_TOGGLE_DEFINITIONS_PANEL';\n","import { put } from 'axios';\nimport { setActiveLanguage } from 'react-localize-redux';\n\nimport * as types from './actionTypes';\n\nexport const updateUserLanguage = locale => (dispatch, getState) => {\n const { auth } = getState();\n const id = auth.sub && auth.sub.id;\n\n // this should be moved to an external file and consumed whenever needed\n const localeWithRegion = {\n en: 'en-GB',\n da: 'da-DK'\n };\n\n dispatch({ type: types.APP_UPDATE_LANGUAGE_INIT });\n dispatch(setActiveLanguage(locale));\n\n return put(`${API_URL}/users/${id}`, {\n user: { language: localeWithRegion[locale] }\n })\n .then(() =>\n dispatch({\n type: types.APP_UPDATE_LANGUAGE_SUCCESS,\n payload: locale\n })\n )\n .catch(err =>\n dispatch({\n type: types.APP_UPDATE_LANGUAGE_ERROR,\n payload: err.message\n })\n );\n};\n/**\n * Fetching the user clients' data,\n * needed on every view of the app.\n */\nexport const updateClientData = client => ({\n type: types.APP_CLIENT_DATA_STATE_UPDATE,\n payload: client\n});\n\n/**\n * For views that depend on the data being validated before rendering any component.\n * For example, 412 on reports and simulation views.\n */\nexport const initFetchData = () => dispatch =>\n dispatch({ type: types.APP_INIT_FETCHING_INITIAL_DATA });\n\nexport const appHasErrorAfterFetch = response => {\n const { data } = response;\n const { errors } = data;\n\n return {\n type: types.APP_HAS_ERROR,\n payload: {\n error: { ...errors, status: response.status }\n }\n };\n};\n\nexport const toggleDefinitionsPanel = ({ sidePanelId }) => ({\n type: types.APP_TOGGLE_DEFINITIONS_PANEL,\n payload: {\n sidePanelId\n }\n});\n","import PropTypes from 'prop-types';\n\n/** Shared props * */\nconst translate = PropTypes.func.isRequired;\nconst auth = PropTypes.shape({\n sub: PropTypes.shape({\n name: PropTypes.string.isRequired,\n company_name: PropTypes.string.isRequired\n })\n}).isRequired;\n\n/** Specific props * */\n// notifications, translate, currentLocale, auth\nexport const headerType = {\n translate,\n auth,\n notifications: PropTypes.array,\n dispatch: PropTypes.func.isRequired\n};\n\n// loading, currentLocale, translate, setLocale\nexport const LanguageSelectorType = {\n translate,\n setLocale: PropTypes.func.isRequired,\n currentLocale: PropTypes.string.isRequired\n};\n\n// translate, auth, loading\nexport const userOptionsType = {\n auth,\n translate\n};\n","import React from 'react';\nimport { Dropdown } from 'semantic-ui-react';\n\nimport { LanguageSelectorType } from './types';\n\nconst LanguageSelector = ({ loading, currentLocale, translate, setLocale }) => (\n
\n \n \n setLocale('da')}\n />\n setLocale('en')}\n />\n \n \n
\n);\n\nLanguageSelector.propTypes = LanguageSelectorType;\n\nexport default LanguageSelector;\n","export const AUTH_ID = 'id';\n\nexport const KBO_STORAGE_KEY_PREFIX = 'KBO_STORAGE';\n\nexport const getLocalStorageKey = key => {\n const normalizedKey = key && key.toUpperCase();\n return `${KBO_STORAGE_KEY_PREFIX}_${normalizedKey}-${ENV}`;\n};\n\nexport const setInLocalStorage = (key, value) => {\n const kboKey = getLocalStorageKey(key);\n\n window.localStorage.setItem(kboKey, value);\n\n return { [kboKey]: value };\n};\n\nexport const getFromLocalStorage = key => {\n const kboKey = getLocalStorageKey(key);\n return window.localStorage.getItem(kboKey);\n};\n\nexport const removeFromLocalStorage = key => {\n const kboKey = getLocalStorageKey(key);\n\n window.localStorage.removeItem(kboKey);\n};\n\nexport const clearLocalStorage = () => window.localStorage.clear();\n","export const ECONOMIC = 'e-conomic';\nexport const VIRK = 'virk';\nexport const CASEWARE = 'caseware';\n","import { CASEWARE, ECONOMIC, VIRK } from './integrations';\n\n/**\n * In order to enable/disable certain features on the frontend,\n * the backend sends data via index.html.erb that defines which\n * features to be toggled.\n *\n *\n * This file lists the features and maps naming.\n *\n * If you want to toggle features, just use (for ex):\n * FEATURES = [];\n * below but never commit it.\n */\n\n// FEATURES = [];\n\nexport const FEATURE_ECONOMIC = FEATURES.includes(ECONOMIC);\nexport const FEATURE_FSR_CW = FEATURES.includes(CASEWARE);\nexport const FEATURE_CAP = FEATURES.includes('cap');\nexport const FEATURE_VIRK = FEATURES.includes(VIRK);\n","import React, { Fragment } from 'react';\nimport { Dropdown } from 'semantic-ui-react';\nimport { Link } from 'react-router-dom';\n\nimport { INTEGRATION_CASEWARE_GENERATE_TOKEN } from '../../services/navigation';\nimport { clearLocalStorage } from '../../services/localStorage';\nimport { routeWithClientId } from '../../helpers/location';\nimport { FEATURE_FSR_CW } from '../../helpers/constants/features';\n\nimport { userOptionsType } from './types';\n\nexport const logout = () => {\n clearLocalStorage();\n\n window.location = `${API_URL}/sign_out`;\n};\nexport const renderUserName = ({ sub }) =>\n sub && sub.name.split(' ')[0].toUpperCase();\n\nconst UserOptions = ({ translate, auth, loading }) => (\n
\n \n \n \n {`${auth.sub.name}`}\n {`${auth.sub.company_name}`}\n \n\n {FEATURE_FSR_CW && (\n \n \n (\n \n {translate('header.token')}\n \n )}\n />\n \n )}\n\n \n {!auth.sub.trial_access_token && (\n \n )}\n\n \n \n \n \n \n \n
\n);\n\nUserOptions.propTypes = userOptionsType;\n\nexport default UserOptions;\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { getTranslate, getActiveLanguage } from 'react-localize-redux';\n\nimport { updateUserLanguage } from '../App/actions';\nimport { INIT_ROUTE_NAME } from '../../services/navigation';\n\nimport LanguageSelector from './LanguageSelector';\nimport UserOptions from './UserOptions';\nimport { headerType } from './types';\n\nimport './index.css';\nimport logo from './logo_k.svg';\n\nexport class Header extends PureComponent {\n setLocale = locale => {\n const { dispatch } = this.props;\n\n dispatch(updateUserLanguage(locale));\n };\n\n /**\n * When a success/error notification is triggered and displayed,\n * it should change the header top border color,\n * depending on the error.\n *\n * Position 0 refers to the most recently displayed notification.\n */\n showNotificationClass = notifications =>\n notifications.length > 0 ? `Header-${notifications[0].level}` : null;\n\n render() {\n const { notifications, translate, auth, currentLocale } = this.props;\n\n return (\n \n
\n
\n \n \"Karnov\n \n
\n
\n
\n \n\n {auth.sub.name && auth.sub.company_name ? (\n \n ) : null}\n
\n
\n );\n }\n}\n\nHeader.propTypes = headerType;\nHeader.defaultProps = {\n auth: {},\n notifications: []\n};\n\nconst mapStateToProps = state => ({\n search: state.router.location.search,\n translate: getTranslate(state.locale),\n currentLocale: getActiveLanguage(state.locale).code,\n auth: state.auth,\n notifications: state.notifications\n});\n\nexport default connect(mapStateToProps)(Header);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localize } from 'react-localize-redux';\n\nimport './index.css';\nimport logo from './logo_karnov.svg';\n\nexport const Footer = ({ translate }) => (\n \n);\n\nFooter.propTypes = {\n translate: PropTypes.func.isRequired\n};\n\nexport default localize(Footer, 'locale');\n","/**\n * Return a missing CVR label if vatin is not available\n *\n * @param {String} vatin\n * @param {Function} translate\n * @returns {String} right label for CVR/Vatin\n */\nexport default function vatinAsLabel(vatin, translate) {\n if (vatin) {\n return `CVR ${vatin}`;\n }\n\n return translate('noVatin');\n}\n","import React from 'react';\nimport { func, string } from 'prop-types';\nimport vatinAsLabel from '../../../../helpers/translations/vatinLabel';\n\nconst LeftSideNavigation = ({ translate, clientName, clientVatin }) => (\n
\n {clientName && (\n
{clientName}
\n )}\n {clientVatin && (\n
\n {`${vatinAsLabel(clientVatin, translate)}`}\n
\n )}\n
\n);\n\nLeftSideNavigation.propTypes = {\n translate: func.isRequired,\n clientName: string,\n clientVatin: string\n};\n\nLeftSideNavigation.defaultProps = {\n clientName: '',\n clientVatin: ''\n};\n\nexport default LeftSideNavigation;\n","export { ECONOMIC, VIRK, CASEWARE } from './integrations';\nexport { FEATURE_FSR_CW, FEATURE_CAP, FEATURE_VIRK } from './features';\n\nexport const INPUT_DATA_START_YEAR = 2022;\n","import FileSaver from 'file-saver';\nimport { get } from 'axios';\nimport format from 'date-fns/format';\nimport { KBO_STORAGE_KEY_PREFIX } from '../../services/localStorage';\nimport { getChartLocationSearchParams } from './helpers';\n\nimport {\n INPUT_BUDGET_ROUTE_NAME,\n INPUT_DATA_ROUTE_NAME\n} from '../../services/navigation';\nimport { getClientId } from '../../services/navigation/routeMapping';\nimport { getNavigationOptionsByLocation } from '../../services/navigation/options';\nimport { extractYearFromURL } from '../../helpers/location';\nimport { INPUT_DATA_START_YEAR } from '../../helpers/constants';\nimport { trackReportDownloaded } from '../../external/segment';\n\nexport const paramsFromLocation = location => ({\n clientId: getClientId(location),\n year: extractYearFromURL({ location }),\n id: (getNavigationOptionsByLocation(location) || {}).id\n});\n\nconst trackDownload = ({ location }) => {\n const { clientId, year, id } = paramsFromLocation(location);\n if (id) {\n trackReportDownloaded({ clientId, year, moduleId: id });\n }\n};\n\nexport const determineApiUrlToGenerateReport = ({ location, localStorage }) => {\n const { pathname } = location;\n const { clientId, year, id } = paramsFromLocation(location);\n\n switch (pathname) {\n case INPUT_BUDGET_ROUTE_NAME:\n case INPUT_DATA_ROUTE_NAME:\n const inputYear = year || INPUT_DATA_START_YEAR;\n return `/clients/${clientId}/accounting_years/${id}/${inputYear}.pdf`;\n default:\n return `/clients/${clientId}/reports/${id}.pdf?year=${year}${getChartLocationSearchParams(\n { localStorage, prefix: KBO_STORAGE_KEY_PREFIX, environment: ENV }\n )}`;\n }\n};\n\nexport const print = () => {\n const url = determineApiUrlToGenerateReport(window);\n const { id } = paramsFromLocation(window.location);\n const currentTime = format(new Date(), 'yyyyMMddHHmmSS');\n\n return get(url, {\n responseType: 'arraybuffer',\n headers: { Accept: 'application/pdf' }\n }).then(async getResponse => {\n const blob = new Blob([getResponse.data], {\n type: 'application/pdf'\n });\n\n await FileSaver.saveAs(blob, `${currentTime}-${id}.pdf`);\n\n trackDownload(window);\n });\n};\n\nexport default print;\n","const extractedChartIDFromStorageKey = ({ prefix, key, environment }) => (\n key\n // remove unnecessary elements from the key\n .slice(prefix.length + 1, key.length - environment.length - 1)\n .toLowerCase()\n );\n\nexport const getChartLocationSearchParams = ({\n localStorage,\n prefix,\n environment\n}) => {\n let chartLocationSearchParams = '';\n\n // read from storage\n if (localStorage && Object.keys(localStorage).length > 0) {\n Object.keys(localStorage).forEach(key => {\n if (key.toLowerCase().includes('chart')) {\n chartLocationSearchParams += `&${extractedChartIDFromStorageKey({\n prefix,\n key,\n environment\n })}=${localStorage.getItem(key)}`;\n }\n });\n }\n\n return chartLocationSearchParams;\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport { Button } from 'semantic-ui-react';\n\nimport print from './integration';\nimport './index.css';\n\nexport class PrintButton extends Component {\n static propTypes = {\n translate: PropTypes.func.isRequired,\n isLoading: PropTypes.bool,\n // eslint-disable-next-line\n currentFiscalYear: PropTypes.number\n };\n\n static defaultProps = {\n isLoading: false,\n currentFiscalYear: null\n };\n\n state = { isLoading: false };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ isLoading: nextProps.isLoading });\n }\n\n onClickPrintButton = async () => {\n this.setState({ isLoading: true });\n await print();\n this.setState({ isLoading: false });\n };\n\n render() {\n const { translate } = this.props;\n const { isLoading } = this.state;\n\n return (\n \n {translate('download')}\n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n isLoading: state.app.isLoading\n});\n\nexport default connect(mapStateToProps)(PrintButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PrintButton from '../../../PrintButton';\n\nconst RightSide = ({ showDownloadButton, translate }) => (\n
\n {showDownloadButton ? : null}\n
\n);\n\nRightSide.propTypes = {\n showDownloadButton: PropTypes.bool,\n translate: PropTypes.func.isRequired\n};\n\nRightSide.defaultProps = {\n showDownloadButton: false\n};\n\nexport default RightSide;\n","export const TOGGLE_MENU = 'TOGGLE_MENU';\nexport const OPEN_MENU = 'OPEN_MENU';\nexport const CLOSE_MENU = 'CLOSE_MENU';\n","import * as types from './actionTypes';\n\nconst removeStyleToBody = () => {\n if (window.innerWidth < 1300) document.body.style.overflow = '';\n};\n\nconst addStyleToBody = () => {\n if (window.innerWidth < 1300) document.body.style.overflow = 'hidden';\n};\n\nexport const toggleMenu = () => (dispatch, getState) => {\n const {\n menu: { isOpen }\n } = getState();\n\n if (isOpen) {\n removeStyleToBody();\n } else {\n addStyleToBody();\n }\n\n return dispatch({\n type: types.TOGGLE_MENU\n });\n};\n\nexport const closeMenu = () => {\n removeStyleToBody();\n\n return {\n type: types.CLOSE_MENU\n };\n};\n\nexport const openMenu = () => {\n addStyleToBody();\n return {\n type: types.OPEN_MENU\n };\n};\n","import { func, string, shape, number, bool, arrayOf } from 'prop-types';\n\nexport const BurgerMenuTypes = {\n translate: func.isRequired,\n currentLocation: shape({\n pathname: string,\n search: string\n }).isRequired\n};\n\nexport const ContainerTypes = {\n ...BurgerMenuTypes,\n isOpen: bool.isRequired,\n isClean: bool.isRequired,\n openMenu: func.isRequired,\n closeMenu: func.isRequired,\n toggleMenu: func.isRequired\n};\n\nexport const MenuTypes = {\n ...BurgerMenuTypes\n};\n\nexport const BurgerButtonTypes = {\n toggleMenu: func.isRequired\n};\n\nexport const SectionTypes = {\n ...BurgerMenuTypes,\n section: shape({\n name: string,\n subsections: arrayOf(\n shape({\n name: string,\n route: string\n })\n ).isRequired\n }),\n index: number.isRequired,\n renderSubsection: func.isRequired\n};\n\nexport const SubsectionTypes = {\n ...BurgerMenuTypes,\n subsection: shape({\n name: string,\n route: string\n }).isRequired\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport * as actions from '../actions';\nimport burgerIcon from '../burger.svg';\nimport { BurgerButtonTypes } from '../types';\n\nconst BurgerButtonComponent = ({ toggleMenu }) => (\n \n);\n\nBurgerButtonComponent.propTypes = BurgerButtonTypes;\n\nconst mapDispatchToProps = dispatch => ({\n toggleMenu: () => dispatch(actions.toggleMenu())\n});\n\nconst BurgerButton = connect(\n null,\n mapDispatchToProps\n)(BurgerButtonComponent);\n\nexport { BurgerButton };\n","import React from 'react';\nimport { shape, object, func, string, bool } from 'prop-types';\n\nimport LeftSide from './LeftSide';\nimport RightSide from './RightSide';\nimport { BurgerButton } from '../../BurgerMenu/BurgerButton';\nimport './index.css';\n\nconst NavigationBar = ({\n translate,\n currentLocation,\n client,\n showDownloadButton,\n showRightSideNavigation\n}) => (\n
\n
\n \n
\n
\n \n\n {showRightSideNavigation && (\n \n )}\n
\n
\n);\n\nNavigationBar.propTypes = {\n translate: func.isRequired,\n currentLocation: object.isRequired,\n client: shape({\n vatin: string,\n name: string\n }),\n showRightSideNavigation: bool,\n showDownloadButton: bool\n};\n\nNavigationBar.defaultProps = {\n client: {\n vatin: undefined,\n name: undefined\n },\n showDownloadButton: false,\n showRightSideNavigation: false\n};\n\nexport default NavigationBar;\n","import { pathnameFromRoute } from '../../../../../helpers/location';\n\n/**\n * Determines if a link should be 'active' (ie, with the yellow bar prepended to it).\n *\n * @param {Object} currentLocation [Location provided by the store]\n * @param {String} routeName [Provided by the navigation routes]\n * @return {String} [If the route and the route name match, add class 'active']\n */\nexport const determineActiveLink = (currentLocation, routeName) =>\n currentLocation.pathname === pathnameFromRoute(routeName) ? 'active' : null;\n\n/**\n * If the section (ie, group of links) has a selected route in its children,\n * then the whole section is highlight (through a gray background).\n *\n * It iterates the 'children' of the section,\n * to check if any of them correspond to the current route.\n *\n * Returns undefined if nothing was found.\n *\n * @param {Object} currentLocation [Location provided by the store]\n * @param {Object} section [contains the children of the section]\n * @return {String}\n */\nexport function determineActiveSection(currentLocation, section) {\n const activeSection = section.subsections.find(\n value => pathnameFromRoute(value.route) === currentLocation.pathname\n );\n\n return activeSection ? activeSection.name : null;\n}\n","import React from 'react';\nimport { determineActiveSection } from '../helpers';\nimport { SectionTypes } from '../../../types';\n\nconst Section = ({\n currentLocation,\n section,\n index,\n translate,\n renderSubsection\n}) => (\n \n
\n {translate(`menu.${section.name}`)}\n
\n
\n {section.subsections.map(renderSubsection)}\n
\n
\n);\n\nSection.propTypes = SectionTypes;\n\nexport { Section };\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { determineActiveLink } from '../helpers';\nimport { SubsectionTypes } from '../../../types';\n\nconst Subsection = ({ subsection, translate, currentLocation }) => (\n \n \n {translate(`menu.${subsection.name}`)}\n \n \n);\n\nSubsection.propTypes = SubsectionTypes;\n\nexport { Subsection };\n","import React, { PureComponent } from 'react';\nimport { object, func } from 'prop-types';\n\nimport { Section } from './Section';\nimport { Subsection } from './Subsection';\nimport navigationOptions from '../../navigationOptions';\n\nexport class Navigation extends PureComponent {\n renderSubsection = subsection => {\n const { translate, currentLocation } = this.props;\n return (\n \n );\n };\n\n renderSection = (section, index) => {\n const { currentLocation, translate } = this.props;\n return (\n \n );\n };\n\n render() {\n const { currentLocation, routes } = this.props;\n return (\n
\n {navigationOptions(currentLocation, routes).map(this.renderSection)}\n
\n );\n }\n}\n\nNavigation.propTypes = {\n // Essential for the 'push-to-the-side' effect of the menu.\n routes: object.isRequired,\n // Allows determining which links are active\n currentLocation: object.isRequired,\n translate: func.isRequired\n};\n","import { getClientId } from '../../services/navigation/routeMapping';\n\n/**\n * BurgerMenu/SideBar navigation options.\n * @param {String} currentLocation\n * @param {Object} Routes\n */\nexport default function navigationOptions(currentLocation, { ...ROUTES }) {\n return [\n {\n name: 'reports',\n subsections: [\n {\n name: 'managementReport',\n route: `${ROUTES.MANAGEMENT_REPORT_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n },\n {\n name: 'budgetReport',\n route: `${ROUTES.BUDGET_REPORT_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n },\n {\n name: 'simulation',\n route: `${ROUTES.SIMULATION_REPORT_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n },\n {\n name: 'forecast',\n route: `${ROUTES.FORECAST_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n },\n {\n name: 'valuationReport',\n route: `${ROUTES.VALUATION_REPORT_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n }\n ]\n },\n {\n name: 'input',\n subsections: [\n {\n name: 'accountingData',\n route: `${ROUTES.INPUT_DATA_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n },\n {\n name: 'budgetData',\n route: `${ROUTES.INPUT_BUDGET_ROUTE_NAME}?clientId=${getClientId(\n currentLocation\n )}`\n }\n ]\n },\n {\n name: 'stamdata',\n subsections: [\n {\n name: 'company',\n route: `${\n ROUTES.CLIENT_DATA_COMPANY_ROUTE_NAME\n }?clientId=${getClientId(currentLocation)}`\n },\n {\n name: 'settings',\n route: `${\n ROUTES.CLIENT_DATA_SETTINGS_ROUTE_NAME\n }?clientId=${getClientId(currentLocation)}`\n }\n ]\n }\n ];\n}\n","import React, { Fragment } from 'react';\n\nimport { Link } from 'react-router-dom';\nimport * as ROUTES from '../../../services/navigation';\nimport { Navigation } from './Navigation';\nimport { MenuTypes } from '../types';\n\nconst Menu = ({ translate, currentLocation }) => (\n \n \n\n
\n \n
\n {translate('menu.back')}\n
\n \n
\n
\n);\n\nMenu.propTypes = MenuTypes;\n\nexport { Menu };\n","export const BASE_OVERLAY_CLASS = 'BurgerMenu__overlay';\nexport const HIDDEN_OVERLAY_CLASS = `${BASE_OVERLAY_CLASS}--hidden`;\nexport const CLEAN_OVERLAY_CLASS = `${BASE_OVERLAY_CLASS}--clean`;\n\nexport const generateClassNameForOverlay = ({\n isOpen,\n isClean,\n isWideEnough\n}) => {\n /* In order to avoid a blink from the overlay animations\n ** when the component mounts, we hide it when the user hasn't touched the menu (mounted).\n ** After the user opens the menu, the animations are the ones that hide/show the side menu and overlay.\n */\n\n if (isClean || isWideEnough) {\n return `${BASE_OVERLAY_CLASS} ${CLEAN_OVERLAY_CLASS}`;\n }\n\n if (!isOpen) {\n return `${BASE_OVERLAY_CLASS} ${HIDDEN_OVERLAY_CLASS}`;\n }\n\n return BASE_OVERLAY_CLASS;\n};\n","export const isWideEnough = () => window.innerWidth >= 1300;\n","import { createContext } from 'react';\n\nconst defaultContextProperties = {\n status: undefined\n};\n\nexport const StickyContext = createContext(defaultContextProperties);\n","/*\n * We check if the element is static in the middle of the scroll.\n * we do nothing till the element reaches the top or bottom of the window\n */\nconst isStatic = ({\n status,\n direction,\n distanceToTopFromSticky,\n distanceToBottomFromSticky,\n windowHeight\n}) =>\n status === 'static' &&\n ((direction === 'up' && distanceToTopFromSticky < 0) ||\n (direction === 'down' && distanceToBottomFromSticky >= windowHeight));\n\nconst topState = {\n status: 'at-top',\n position: 'absolute',\n bottom: '',\n top: 0\n};\n\nconst stickyToTop = ({\n distanceToTop,\n distanceToTopFromBottom,\n viewableHeight,\n stickyElementHeight,\n offset,\n bottomElement\n}) => {\n if (bottomElement && distanceToTopFromBottom - viewableHeight <= 0) {\n return {\n status: 'at-bottom',\n position: 'absolute',\n top: distanceToTopFromBottom - distanceToTop - stickyElementHeight\n };\n }\n\n if (distanceToTop <= -offset) {\n return {\n status: 'sticky',\n position: 'fixed',\n top: 0 - offset,\n bottom: ''\n };\n }\n\n return topState;\n};\n\nconst setStatic = ({\n direction,\n distanceToTop,\n stickyElementHeight,\n windowHeight\n}) => ({\n status: 'static',\n position: 'absolute',\n top:\n direction === 'up'\n ? -distanceToTop - stickyElementHeight + windowHeight\n : -distanceToTop,\n bottom: ''\n});\n\nconst stickyToBottom = ({\n distanceToTopFromBottom,\n windowHeight,\n distanceToTopFromElementBottom,\n distanceToTop,\n stickyElementHeight\n}) => {\n if (distanceToTopFromBottom < windowHeight) {\n return {\n status: 'at-bottom',\n position: 'absolute',\n bottom: '',\n top: distanceToTopFromBottom - distanceToTop - stickyElementHeight\n };\n }\n\n if (distanceToTopFromElementBottom < windowHeight) {\n return {\n status: 'sticky',\n position: 'fixed',\n bottom: 0,\n top: ''\n };\n }\n\n return topState;\n};\n\nconst getScrollableStickyness = ({\n bottomElement,\n offset,\n status,\n hasDirectionChanged,\n direction,\n distanceToTop,\n stickyElementHeight,\n windowHeight,\n distanceToTopFromBottom,\n distanceToTopFromElementBottom,\n viewableHeight,\n distanceToTopFromSticky,\n distanceToBottomFromSticky\n}) => {\n /*\n * We check if the element is static in the middle of the scroll.\n * we do nothing till the element reaches the top or bottom of the window\n */\n\n if (\n isStatic({\n status,\n direction,\n distanceToTopFromSticky,\n distanceToBottomFromSticky,\n windowHeight\n })\n ) {\n return null;\n }\n\n /*\n * When scrolling and changing scrolling direction\n * we need to make the sticky element static\n * so users can scroll through it\n */\n\n if (hasDirectionChanged && status !== 'at-top' && status !== 'at-bottom') {\n return setStatic({\n direction,\n distanceToTop,\n stickyElementHeight,\n windowHeight\n });\n }\n\n /*\n * When we are scrolling down, the sticky element needs to be sticky on the bottom of the window\n */\n\n if (direction === 'down') {\n return stickyToBottom({\n distanceToTopFromBottom,\n windowHeight,\n distanceToTopFromElementBottom,\n distanceToTop,\n stickyElementHeight\n });\n }\n\n /*\n * When scrolling up, it is the normal stick to top behavior\n */\n\n if (direction === 'up' && distanceToTopFromSticky >= 0) {\n return stickyToTop({\n bottomElement,\n offset,\n distanceToTop,\n distanceToTopFromBottom,\n viewableHeight,\n stickyElementHeight\n });\n }\n\n if (distanceToTopFromSticky <= distanceToTop) {\n return topState;\n }\n\n return null;\n};\n\nconst setPosition = params => {\n const { stickyElementHeight, windowHeight } = params;\n\n if (stickyElementHeight > windowHeight) {\n return getScrollableStickyness(params);\n }\n\n return stickyToTop(params);\n};\n\nexport {\n setPosition,\n getScrollableStickyness,\n stickyToTop,\n stickyToBottom,\n isStatic,\n setStatic\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'react-fast-compare';\n\nimport { StickyContext } from './context';\nimport { setPosition } from './helpers';\n\nimport './index.css';\n\nexport class Sticky extends Component {\n static propTypes = {\n children: PropTypes.node.isRequired,\n offset: PropTypes.number,\n bottomElement: PropTypes.instanceOf(Element)\n };\n\n static defaultProps = {\n offset: 0,\n bottomElement: null\n };\n\n state = {\n position: 'absolute',\n status: 'at-top',\n placeholderHeight: this.stickyElement && this.stickyElement.offsetHeight\n };\n\n /*\n ** This means that as default, the scroll is at top.\n ** Gets updated on component did mount.\n */\n scroll = 0;\n\n direction = null;\n\n hasDirectionChanged = false;\n\n stickyElement = null;\n\n placeholder = null;\n\n componentDidMount() {\n window.addEventListener('load', this.setProperties);\n window.addEventListener('scroll', this.setPropertiesWithScroll);\n window.addEventListener('resize', this.setProperties);\n this.setProperties();\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { status, placeholderHeight, top } = this.state;\n\n /* if the sticky element has changed we need to update */\n if (!isEqual(nextProps.children, this.props.children)) {\n return true;\n }\n\n /*\n ** if we resize the window height, we may need to update the sticky position\n */\n if (\n status === 'sticky' &&\n nextState.status === 'sticky' &&\n top !== nextState.top\n ) {\n return true;\n }\n\n if (\n status === nextState.status &&\n placeholderHeight === nextState.placeholderHeight\n ) {\n return false;\n }\n\n return true;\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.setPropertiesWithScroll);\n window.removeEventListener('resize', this.setProperties);\n window.removeEventListener('load', this.setProperties);\n }\n\n setProperties = () => {\n this.setPlaceholderHeight();\n this.setSticky();\n };\n\n setPropertiesWithScroll = () => {\n this.setDirection();\n this.setProperties();\n };\n\n setPlaceholderHeight = () => {\n if (!this.stickyElement) {\n return;\n }\n\n if (this.stickyElement.offsetHeight === this.placeholder.offsetHeight) {\n return;\n }\n\n this.setState({\n placeholderHeight: this.stickyElement.offsetHeight\n });\n };\n\n setStickyElement = element => {\n this.stickyElement = element;\n };\n\n setPlaceholder = element => {\n this.placeholder = element;\n };\n\n setDirection = () => {\n const scroll = this.getCurrentScroll();\n const currentDirection = this.scroll > scroll ? 'up' : 'down';\n\n if (this.direction && currentDirection !== this.direction) {\n this.hasDirectionChanged = true;\n } else {\n this.hasDirectionChanged = false;\n }\n\n this.direction = currentDirection;\n this.setScroll(scroll);\n };\n\n getCurrentScroll = () =>\n document.documentElement.scrollTop || document.body.scrollTop;\n\n setScroll = scroll => {\n this.scroll = scroll;\n };\n\n getPositionalParameters = () => {\n const { direction, hasDirectionChanged } = this;\n const { status } = this.state;\n const windowHeight = window.innerHeight;\n const { offset, bottomElement } = this.props;\n const distanceToTop = this.placeholder.getBoundingClientRect().top;\n const distanceToTopFromBottom =\n bottomElement && bottomElement.getBoundingClientRect().top;\n const stickyElementHeight = this.stickyElement.offsetHeight || 0;\n const viewableHeight = stickyElementHeight - offset;\n const distanceToTopFromElementBottom = this.placeholder.getBoundingClientRect()\n .bottom;\n const distanceToTopFromSticky = this.stickyElement.getBoundingClientRect()\n .top;\n const distanceToBottomFromSticky = this.stickyElement.getBoundingClientRect()\n .bottom;\n\n return {\n bottomElement,\n offset,\n distanceToTop,\n distanceToTopFromBottom,\n stickyElementHeight,\n viewableHeight,\n distanceToTopFromElementBottom,\n distanceToTopFromSticky,\n distanceToBottomFromSticky,\n hasDirectionChanged,\n direction,\n status,\n windowHeight\n };\n };\n\n setSticky = () => {\n if (!this.stickyElement) {\n return null;\n }\n\n const params = this.getPositionalParameters();\n\n return this.setState(setPosition(params));\n };\n\n render() {\n const { top, position, status, bottom, placeholderHeight } = this.state;\n\n return (\n \n
\n \n {this.props.children}\n
\n \n \n
\n );\n }\n}\n\nexport { StickyContext } from './context';\nexport default Sticky;\n","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport * as actions from '../actions';\nimport { generateClassNameForOverlay } from './helpers';\nimport { isWideEnough } from '../helpers';\nimport { ContainerTypes } from '../types';\nimport Sticky from '../../Sticky';\n\nexport class ContainerComponent extends Component {\n static propTypes = ContainerTypes;\n\n componentDidMount() {\n const { openMenu, isClean } = this.props;\n\n if (isWideEnough() && isClean) {\n openMenu();\n }\n\n window.addEventListener('resize', this.handleResize, false);\n }\n\n componentWillUnmount() {\n const { isOpen, closeMenu } = this.props;\n\n if (isOpen && !isWideEnough()) {\n closeMenu();\n document.body.style.overflow = '';\n }\n\n window.removeEventListener('resize', this.handleResize, false);\n }\n\n handleResize = () => {\n const { isOpen, openMenu, closeMenu } = this.props;\n const canShowMenu = isWideEnough();\n\n if (isOpen && !canShowMenu) {\n return closeMenu();\n }\n\n if (!isOpen && canShowMenu) {\n return openMenu();\n }\n\n return null;\n };\n\n setBottomElement = element => {\n this.bottomElement = element;\n };\n\n containerRender = ({\n isOpen,\n canShowMenu,\n children,\n closeMenu,\n currentLocation,\n translate\n }) => (\n \n \n {children({\n isOpen,\n closeMenu,\n currentLocation,\n translate\n })}\n \n \n );\n\n render() {\n const {\n isOpen,\n isClean,\n closeMenu,\n toggleMenu,\n children,\n currentLocation,\n translate\n } = this.props;\n\n const canShowMenu = isWideEnough();\n\n return (\n \n \n
\n
\n {canShowMenu ? (\n \n {this.containerRender({\n isOpen,\n canShowMenu,\n children,\n closeMenu,\n currentLocation,\n translate\n })}\n \n ) : (\n this.containerRender({\n isOpen,\n canShowMenu,\n children,\n closeMenu,\n currentLocation,\n translate\n })\n )}\n
\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({\n locale,\n router: { location },\n menu: { isOpen, isClean }\n}) => ({\n translate: getTranslate(locale),\n currentLocation: location,\n isOpen,\n isClean\n});\n\nconst mapDispatchToProps = dispatch => ({\n toggleMenu: () => dispatch(actions.toggleMenu()),\n closeMenu: () => dispatch(actions.closeMenu()),\n openMenu: () => dispatch(actions.openMenu())\n});\n\nexport const Container = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ContainerComponent);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport { Menu } from './Menu';\nimport { Container } from './Container';\nimport { BurgerMenuTypes } from './types';\nimport './index.css';\n\nexport const BurgerMenuComponent = ({ currentLocation, translate }) => (\n \n {({ closeMenu }) => }\n \n);\n\nBurgerMenuComponent.propTypes = BurgerMenuTypes;\n\nconst mapStateToProps = ({ locale, router: { location } }) => ({\n translate: getTranslate(locale),\n currentLocation: location\n});\n\nconst BurgerMenu = connect(mapStateToProps)(BurgerMenuComponent);\n\nexport default BurgerMenu;\n","const PRIMARY_BACKGROUND = '';\nconst SECONDARY_BACKGROUND = 'screen-main-container--secondary-background';\n\nexport { PRIMARY_BACKGROUND, SECONDARY_BACKGROUND };\n","import React, { Component, createContext } from 'react';\nimport { connect } from 'react-redux';\nimport { addTranslation, getTranslate } from 'react-localize-redux';\nimport { func, element, bool, string, object, shape, oneOf } from 'prop-types';\nimport isEqual from 'react-fast-compare';\n\nimport ReportComments from '../Comments';\nimport Header from '../Header';\nimport Footer from '../Footer';\n\nimport NavigationBar from './NavigationBar';\nimport BurgerMenu from '../BurgerMenu';\nimport ScreenLocale from './locale.json';\nimport './index.css';\nimport { PRIMARY_BACKGROUND, SECONDARY_BACKGROUND } from './constants';\n\nexport const TranslateContext = createContext('');\n\n/**\n * This container will be responsible to load everything related to a screen:\n * header, menu and footer.\n */\nexport class Screen extends Component {\n componentDidMount() {\n const { dispatch, locale } = this.props;\n const translation = { ...ScreenLocale, ...locale };\n dispatch(addTranslation(translation));\n }\n\n shouldComponentUpdate(nextProps) {\n const { translate, children } = this.props;\n const hasNewTranslation = !isEqual(translate, nextProps.translate);\n const hasNewChildren = !isEqual(children, nextProps.children);\n\n return hasNewTranslation || hasNewChildren;\n }\n\n shouldShowCommets = () => {\n const { showComments, isFetchingInitialData, error } = this.props;\n return showComments && !isFetchingInitialData && !error;\n };\n\n render() {\n const {\n hideNavigation,\n showDownloadButton,\n section,\n showRightSideNavigation,\n currentLocation,\n translate,\n client,\n children,\n background\n } = this.props;\n\n return (\n
\n \n
\n {!hideNavigation && (\n \n )}\n
\n {!hideNavigation && }\n
{children}
\n
\n {this.shouldShowCommets() && }\n
\n \n
\n );\n }\n}\n\nScreen.propTypes = {\n /* When consuming Screen Component,\n ** if your screen needs a sepcial background,\n ** you need to create a constant and pass it as a prop.\n ** For an example, you can check Create Company screen.\n */\n background: oneOf([PRIMARY_BACKGROUND, SECONDARY_BACKGROUND]),\n showComments: bool,\n isFetchingInitialData: bool,\n dispatch: func.isRequired,\n children: element.isRequired,\n hideNavigation: bool,\n translate: func.isRequired,\n showDownloadButton: bool,\n section: string,\n showRightSideNavigation: bool,\n currentLocation: object.isRequired,\n locale: object.isRequired,\n client: shape({\n name: string,\n vatin: string\n }),\n error: object\n};\n\nScreen.defaultProps = {\n background: PRIMARY_BACKGROUND,\n isFetchingInitialData: false,\n showComments: false,\n hideNavigation: false,\n showDownloadButton: false,\n showRightSideNavigation: false,\n client: {},\n section: '',\n error: null\n};\n\nconst mapStateToProps = ({\n router: { location },\n client,\n locale,\n app: { isFetchingInitialData, error }\n}) => ({\n currentLocation: location,\n client,\n translate: getTranslate(locale),\n isFetchingInitialData,\n error\n});\n\nexport default connect(mapStateToProps)(Screen);\n","/**\n * The names of the input fields are a 1:1 match with the attributes of the payload\n * sent to the backend.\n *\n * This is why all the naming of those attributes is set here,\n * so when changing the name of an attribute can be as simple as changing here.\n */\n\n// NAME is the client's name.\nexport const NAME = 'name';\nexport const CVR_NUMBER = 'vatin';\nexport const CUSTOMER_ID = 'customer_id';\nexport const ADDRESS = 'address';\nexport const CITY = 'city';\nexport const ZIP_CODE = 'zip_code';\nexport const COUNTRY = 'country';\nexport const FISCAL_YEAR_START = 'fiscal_year_start';\nexport const NUMBER_FORMAT = 'number_format';\nexport const CURRENCY = 'currency';\n\nexport const numberFormatOptions = [\n {\n key: '1.0000,00',\n value: 'da-DK',\n text: '1.0000,00'\n },\n {\n key: '1,0000.00',\n value: 'en-GB',\n text: '1,0000.00'\n }\n];\n\nexport const countryOptions = [\n {\n key: 'dk',\n value: 'dk',\n flag: 'dk',\n text: 'Denmark'\n },\n {\n key: 'se',\n value: 'se',\n flag: 'se',\n text: 'Sweden'\n },\n {\n key: 'no',\n value: 'no',\n flag: 'no',\n text: 'Norway'\n },\n {\n key: 'gb',\n value: 'gb',\n flag: 'gb',\n text: 'England'\n },\n {\n key: 'us',\n value: 'us',\n flag: 'us',\n text: 'United States'\n },\n {\n key: 'af',\n value: 'af',\n flag: 'af',\n text: 'Afghanistan'\n },\n {\n key: 'ax',\n value: 'ax',\n flag: 'ax',\n text: 'Aland Islands'\n },\n {\n key: 'al',\n value: 'al',\n flag: 'al',\n text: 'Albania'\n },\n {\n key: 'dz',\n value: 'dz',\n flag: 'dz',\n text: 'Algeria'\n },\n {\n key: 'as',\n value: 'as',\n flag: 'as',\n text: 'American Samoa'\n },\n {\n key: 'ad',\n value: 'ad',\n flag: 'ad',\n text: 'Andorra'\n },\n {\n key: 'ao',\n value: 'ao',\n flag: 'ao',\n text: 'Angola'\n },\n {\n key: 'ai',\n value: 'ai',\n flag: 'ai',\n text: 'Anguilla'\n },\n {\n key: 'ag',\n value: 'ag',\n flag: 'ag',\n text: 'Antigua'\n },\n {\n key: 'ar',\n value: 'ar',\n flag: 'ar',\n text: 'Argentina'\n },\n {\n key: 'am',\n value: 'am',\n flag: 'am',\n text: 'Armenia'\n },\n {\n key: 'aw',\n value: 'aw',\n flag: 'aw',\n text: 'Aruba'\n },\n {\n key: 'au',\n value: 'au',\n flag: 'au',\n text: 'Australia'\n },\n {\n key: 'at',\n value: 'at',\n flag: 'at',\n text: 'Austria'\n },\n {\n key: 'az',\n value: 'az',\n flag: 'az',\n text: 'Azerbaijan'\n },\n {\n key: 'bs',\n value: 'bs',\n flag: 'bs',\n text: 'Bahamas'\n },\n {\n key: 'bh',\n value: 'bh',\n flag: 'bh',\n text: 'Bahrain'\n },\n {\n key: 'bd',\n value: 'bd',\n flag: 'bd',\n text: 'Bangladesh'\n },\n {\n key: 'bb',\n value: 'bb',\n flag: 'bb',\n text: 'Barbados'\n },\n {\n key: 'by',\n value: 'by',\n flag: 'by',\n text: 'Belarus'\n },\n {\n key: 'be',\n value: 'be',\n flag: 'be',\n text: 'Belgium'\n },\n {\n key: 'bz',\n value: 'bz',\n flag: 'bz',\n text: 'Belize'\n },\n {\n key: 'bj',\n value: 'bj',\n flag: 'bj',\n text: 'Benin'\n },\n {\n key: 'bm',\n value: 'bm',\n flag: 'bm',\n text: 'Bermuda'\n },\n {\n key: 'bt',\n value: 'bt',\n flag: 'bt',\n text: 'Bhutan'\n },\n {\n key: 'bo',\n value: 'bo',\n flag: 'bo',\n text: 'Bolivia'\n },\n {\n key: 'ba',\n value: 'ba',\n flag: 'ba',\n text: 'Bosnia'\n },\n {\n key: 'bw',\n value: 'bw',\n flag: 'bw',\n text: 'Botswana'\n },\n {\n key: 'bv',\n value: 'bv',\n flag: 'bv',\n text: 'Bouvet Island'\n },\n {\n key: 'br',\n value: 'br',\n flag: 'br',\n text: 'Brazil'\n },\n {\n key: 'vg',\n value: 'vg',\n flag: 'vg',\n text: 'British Virgin Islands'\n },\n {\n key: 'bn',\n value: 'bn',\n flag: 'bn',\n text: 'Brunei'\n },\n {\n key: 'bg',\n value: 'bg',\n flag: 'bg',\n text: 'Bulgaria'\n },\n {\n key: 'bf',\n value: 'bf',\n flag: 'bf',\n text: 'Burkina Faso'\n },\n {\n key: 'bi',\n value: 'bi',\n flag: 'bi',\n text: 'Burundi'\n },\n {\n key: 'tc',\n value: 'tc',\n flag: 'tc',\n text: 'Caicos Islands'\n },\n {\n key: 'kh',\n value: 'kh',\n flag: 'kh',\n text: 'Cambodia'\n },\n {\n key: 'cm',\n value: 'cm',\n flag: 'cm',\n text: 'Cameroon'\n },\n {\n key: 'ca',\n value: 'ca',\n flag: 'ca',\n text: 'Canada'\n },\n {\n key: 'cv',\n value: 'cv',\n flag: 'cv',\n text: 'Cape Verde'\n },\n {\n key: 'ky',\n value: 'ky',\n flag: 'ky',\n text: 'Cayman Islands'\n },\n {\n key: 'cf',\n value: 'cf',\n flag: 'cf',\n text: 'Central African Republic'\n },\n {\n key: 'td',\n value: 'td',\n flag: 'td',\n text: 'Chad'\n },\n {\n key: 'cl',\n value: 'cl',\n flag: 'cl',\n text: 'Chile'\n },\n {\n key: 'cn',\n value: 'cn',\n flag: 'cn',\n text: 'China'\n },\n {\n key: 'cx',\n value: 'cx',\n flag: 'cx',\n text: 'Christmas Island'\n },\n {\n key: 'cc',\n value: 'cc',\n flag: 'cc',\n text: 'Cocos Islands'\n },\n {\n key: 'co',\n value: 'co',\n flag: 'co',\n text: 'Colombia'\n },\n {\n key: 'km',\n value: 'km',\n flag: 'km',\n text: 'Comoros'\n },\n {\n key: 'cg',\n value: 'cg',\n flag: 'cg',\n text: 'Congo Brazzaville'\n },\n {\n key: 'cd',\n value: 'cd',\n flag: 'cd',\n text: 'Congo'\n },\n {\n key: 'ck',\n value: 'ck',\n flag: 'ck',\n text: 'Cook Islands'\n },\n {\n key: 'cr',\n value: 'cr',\n flag: 'cr',\n text: 'Costa Rica'\n },\n {\n key: 'ci',\n value: 'ci',\n flag: 'ci',\n text: 'Cote Divoire'\n },\n {\n key: 'hr',\n value: 'hr',\n flag: 'hr',\n text: 'Croatia'\n },\n {\n key: 'cu',\n value: 'cu',\n flag: 'cu',\n text: 'Cuba'\n },\n {\n key: 'cy',\n value: 'cy',\n flag: 'cy',\n text: 'Cyprus'\n },\n {\n key: 'cz',\n value: 'cz',\n flag: 'cz',\n text: 'Czech Republic'\n },\n {\n key: 'dj',\n value: 'dj',\n flag: 'dj',\n text: 'Djibouti'\n },\n {\n key: 'dm',\n value: 'dm',\n flag: 'dm',\n text: 'Dominica'\n },\n {\n key: 'do',\n value: 'do',\n flag: 'do',\n text: 'Dominican Republic'\n },\n {\n key: 'ec',\n value: 'ec',\n flag: 'ec',\n text: 'Ecuador'\n },\n {\n key: 'eg',\n value: 'eg',\n flag: 'eg',\n text: 'Egypt'\n },\n {\n key: 'sv',\n value: 'sv',\n flag: 'sv',\n text: 'El Salvador'\n },\n {\n key: 'gq',\n value: 'gq',\n flag: 'gq',\n text: 'Equatorial Guinea'\n },\n {\n key: 'er',\n value: 'er',\n flag: 'er',\n text: 'Eritrea'\n },\n {\n key: 'ee',\n value: 'ee',\n flag: 'ee',\n text: 'Estonia'\n },\n {\n key: 'et',\n value: 'et',\n flag: 'et',\n text: 'Ethiopia'\n },\n {\n key: 'eu',\n value: 'eu',\n flag: 'eu',\n text: 'European Union'\n },\n {\n key: 'fk',\n value: 'fk',\n flag: 'fk',\n text: 'Falkland Islands'\n },\n {\n key: 'fo',\n value: 'fo',\n flag: 'fo',\n text: 'Faroe Islands'\n },\n {\n key: 'fj',\n value: 'fj',\n flag: 'fj',\n text: 'Fiji'\n },\n {\n key: 'fi',\n value: 'fi',\n flag: 'fi',\n text: 'Finland'\n },\n {\n key: 'fr',\n value: 'fr',\n flag: 'fr',\n text: 'France'\n },\n {\n key: 'gf',\n value: 'gf',\n flag: 'gf',\n text: 'French Guiana'\n },\n {\n key: 'pf',\n value: 'pf',\n flag: 'pf',\n text: 'French Polynesia'\n },\n {\n key: 'tf',\n value: 'tf',\n flag: 'tf',\n text: 'French Territories'\n },\n {\n key: 'ga',\n value: 'ga',\n flag: 'ga',\n text: 'Gabon'\n },\n {\n key: 'gm',\n value: 'gm',\n flag: 'gm',\n text: 'Gambia'\n },\n {\n key: 'ge',\n value: 'ge',\n flag: 'ge',\n text: 'Georgia'\n },\n {\n key: 'de',\n value: 'de',\n flag: 'de',\n text: 'Germany'\n },\n {\n key: 'gh',\n value: 'gh',\n flag: 'gh',\n text: 'Ghana'\n },\n {\n key: 'gi',\n value: 'gi',\n flag: 'gi',\n text: 'Gibraltar'\n },\n {\n key: 'gr',\n value: 'gr',\n flag: 'gr',\n text: 'Greece'\n },\n {\n key: 'gl',\n value: 'gl',\n flag: 'gl',\n text: 'Greenland'\n },\n {\n key: 'gd',\n value: 'gd',\n flag: 'gd',\n text: 'Grenada'\n },\n {\n key: 'gp',\n value: 'gp',\n flag: 'gp',\n text: 'Guadeloupe'\n },\n {\n key: 'gu',\n value: 'gu',\n flag: 'gu',\n text: 'Guam'\n },\n {\n key: 'gt',\n value: 'gt',\n flag: 'gt',\n text: 'Guatemala'\n },\n {\n key: 'gw',\n value: 'gw',\n flag: 'gw',\n text: 'Guinea-Bissau'\n },\n {\n key: 'gn',\n value: 'gn',\n flag: 'gn',\n text: 'Guinea'\n },\n {\n key: 'gy',\n value: 'gy',\n flag: 'gy',\n text: 'Guyana'\n },\n {\n key: 'ht',\n value: 'ht',\n flag: 'ht',\n text: 'Haiti'\n },\n {\n key: 'hm',\n value: 'hm',\n flag: 'hm',\n text: 'Heard Island'\n },\n {\n key: 'hn',\n value: 'hn',\n flag: 'hn',\n text: 'Honduras'\n },\n {\n key: 'hk',\n value: 'hk',\n flag: 'hk',\n text: 'Hong Kong'\n },\n {\n key: 'hu',\n value: 'hu',\n flag: 'hu',\n text: 'Hungary'\n },\n {\n key: 'is',\n value: 'is',\n flag: 'is',\n text: 'Iceland'\n },\n {\n key: 'in',\n value: 'in',\n flag: 'in',\n text: 'India'\n },\n {\n key: 'io',\n value: 'io',\n flag: 'io',\n text: 'Indian Ocean Territory'\n },\n {\n key: 'id',\n value: 'id',\n flag: 'id',\n text: 'Indonesia'\n },\n {\n key: 'ir',\n value: 'ir',\n flag: 'ir',\n text: 'Iran'\n },\n {\n key: 'iq',\n value: 'iq',\n flag: 'iq',\n text: 'Iraq'\n },\n {\n key: 'ie',\n value: 'ie',\n flag: 'ie',\n text: 'Ireland'\n },\n {\n key: 'il',\n value: 'il',\n flag: 'il',\n text: 'Israel'\n },\n {\n key: 'it',\n value: 'it',\n flag: 'it',\n text: 'Italy'\n },\n {\n key: 'jm',\n value: 'jm',\n flag: 'jm',\n text: 'Jamaica'\n },\n {\n key: 'jp',\n value: 'jp',\n flag: 'jp',\n text: 'Japan'\n },\n {\n key: 'jo',\n value: 'jo',\n flag: 'jo',\n text: 'Jordan'\n },\n {\n key: 'kz',\n value: 'kz',\n flag: 'kz',\n text: 'Kazakhstan'\n },\n {\n key: 'ke',\n value: 'ke',\n flag: 'ke',\n text: 'Kenya'\n },\n {\n key: 'ki',\n value: 'ki',\n flag: 'ki',\n text: 'Kiribati'\n },\n {\n key: 'kw',\n value: 'kw',\n flag: 'kw',\n text: 'Kuwait'\n },\n {\n key: 'kg',\n value: 'kg',\n flag: 'kg',\n text: 'Kyrgyzstan'\n },\n {\n key: 'la',\n value: 'la',\n flag: 'la',\n text: 'Laos'\n },\n {\n key: 'lv',\n value: 'lv',\n flag: 'lv',\n text: 'Latvia'\n },\n {\n key: 'lb',\n value: 'lb',\n flag: 'lb',\n text: 'Lebanon'\n },\n {\n key: 'ls',\n value: 'ls',\n flag: 'ls',\n text: 'Lesotho'\n },\n {\n key: 'lr',\n value: 'lr',\n flag: 'lr',\n text: 'Liberia'\n },\n {\n key: 'ly',\n value: 'ly',\n flag: 'ly',\n text: 'Libya'\n },\n {\n key: 'li',\n value: 'li',\n flag: 'li',\n text: 'Liechtenstein'\n },\n {\n key: 'lt',\n value: 'lt',\n flag: 'lt',\n text: 'Lithuania'\n },\n {\n key: 'lu',\n value: 'lu',\n flag: 'lu',\n text: 'Luxembourg'\n },\n {\n key: 'mo',\n value: 'mo',\n flag: 'mo',\n text: 'Macau'\n },\n {\n key: 'mk',\n value: 'mk',\n flag: 'mk',\n text: 'Macedonia'\n },\n {\n key: 'mg',\n value: 'mg',\n flag: 'mg',\n text: 'Madagascar'\n },\n {\n key: 'mw',\n value: 'mw',\n flag: 'mw',\n text: 'Malawi'\n },\n {\n key: 'my',\n value: 'my',\n flag: 'my',\n text: 'Malaysia'\n },\n {\n key: 'mv',\n value: 'mv',\n flag: 'mv',\n text: 'Maldives'\n },\n {\n key: 'ml',\n value: 'ml',\n flag: 'ml',\n text: 'Mali'\n },\n {\n key: 'mt',\n value: 'mt',\n flag: 'mt',\n text: 'Malta'\n },\n {\n key: 'mh',\n value: 'mh',\n flag: 'mh',\n text: 'Marshall Islands'\n },\n {\n key: 'mq',\n value: 'mq',\n flag: 'mq',\n text: 'Martinique'\n },\n {\n key: 'mr',\n value: 'mr',\n flag: 'mr',\n text: 'Mauritania'\n },\n {\n key: 'mu',\n value: 'mu',\n flag: 'mu',\n text: 'Mauritius'\n },\n {\n key: 'yt',\n value: 'yt',\n flag: 'yt',\n text: 'Mayotte'\n },\n {\n key: 'mx',\n value: 'mx',\n flag: 'mx',\n text: 'Mexico'\n },\n {\n key: 'fm',\n value: 'fm',\n flag: 'fm',\n text: 'Micronesia'\n },\n {\n key: 'md',\n value: 'md',\n flag: 'md',\n text: 'Moldova'\n },\n {\n key: 'mc',\n value: 'mc',\n flag: 'mc',\n text: 'Monaco'\n },\n {\n key: 'mn',\n value: 'mn',\n flag: 'mn',\n text: 'Mongolia'\n },\n {\n key: 'me',\n value: 'me',\n flag: 'me',\n text: 'Montenegro'\n },\n {\n key: 'ms',\n value: 'ms',\n flag: 'ms',\n text: 'Montserrat'\n },\n {\n key: 'ma',\n value: 'ma',\n flag: 'ma',\n text: 'Morocco'\n },\n {\n key: 'mz',\n value: 'mz',\n flag: 'mz',\n text: 'Mozambique'\n },\n {\n key: 'na',\n value: 'na',\n flag: 'na',\n text: 'Namibia'\n },\n {\n key: 'nr',\n value: 'nr',\n flag: 'nr',\n text: 'Nauru'\n },\n {\n key: 'np',\n value: 'np',\n flag: 'np',\n text: 'Nepal'\n },\n {\n key: 'an',\n value: 'an',\n flag: 'an',\n text: 'Netherlands Antilles'\n },\n {\n key: 'nl',\n value: 'nl',\n flag: 'nl',\n text: 'Netherlands'\n },\n {\n key: 'nc',\n value: 'nc',\n flag: 'nc',\n text: 'New Caledonia'\n },\n {\n key: 'pg',\n value: 'pg',\n flag: 'pg',\n text: 'New Guinea'\n },\n {\n key: 'nz',\n value: 'nz',\n flag: 'nz',\n text: 'New Zealand'\n },\n {\n key: 'ni',\n value: 'ni',\n flag: 'ni',\n text: 'Nicaragua'\n },\n {\n key: 'ne',\n value: 'ne',\n flag: 'ne',\n text: 'Niger'\n },\n {\n key: 'ng',\n value: 'ng',\n flag: 'ng',\n text: 'Nigeria'\n },\n {\n key: 'nu',\n value: 'nu',\n flag: 'nu',\n text: 'Niue'\n },\n {\n key: 'nf',\n value: 'nf',\n flag: 'nf',\n text: 'Norfolk Island'\n },\n {\n key: 'kp',\n value: 'kp',\n flag: 'kp',\n text: 'North Korea'\n },\n {\n key: 'mp',\n value: 'mp',\n flag: 'mp',\n text: 'Northern Mariana Islands'\n },\n {\n key: 'om',\n value: 'om',\n flag: 'om',\n text: 'Oman'\n },\n {\n key: 'pk',\n value: 'pk',\n flag: 'pk',\n text: 'Pakistan'\n },\n {\n key: 'pw',\n value: 'pw',\n flag: 'pw',\n text: 'Palau'\n },\n {\n key: 'ps',\n value: 'ps',\n flag: 'ps',\n text: 'Palestine'\n },\n {\n key: 'pa',\n value: 'pa',\n flag: 'pa',\n text: 'Panama'\n },\n {\n key: 'py',\n value: 'py',\n flag: 'py',\n text: 'Paraguay'\n },\n {\n key: 'pe',\n value: 'pe',\n flag: 'pe',\n text: 'Peru'\n },\n {\n key: 'ph',\n value: 'ph',\n flag: 'ph',\n text: 'Philippines'\n },\n {\n key: 'pn',\n value: 'pn',\n flag: 'pn',\n text: 'Pitcairn Islands'\n },\n {\n key: 'pl',\n value: 'pl',\n flag: 'pl',\n text: 'Poland'\n },\n {\n key: 'pt',\n value: 'pt',\n flag: 'pt',\n text: 'Portugal'\n },\n {\n key: 'pr',\n value: 'pr',\n flag: 'pr',\n text: 'Puerto Rico'\n },\n {\n key: 'qa',\n value: 'qa',\n flag: 'qa',\n text: 'Qatar'\n },\n {\n key: 're',\n value: 're',\n flag: 're',\n text: 'Reunion'\n },\n {\n key: 'ro',\n value: 'ro',\n flag: 'ro',\n text: 'Romania'\n },\n {\n key: 'ru',\n value: 'ru',\n flag: 'ru',\n text: 'Russia'\n },\n {\n key: 'rw',\n value: 'rw',\n flag: 'rw',\n text: 'Rwanda'\n },\n {\n key: 'sh',\n value: 'sh',\n flag: 'sh',\n text: 'Saint Helena'\n },\n {\n key: 'kn',\n value: 'kn',\n flag: 'kn',\n text: 'Saint Kitts and Nevis'\n },\n {\n key: 'lc',\n value: 'lc',\n flag: 'lc',\n text: 'Saint Lucia'\n },\n {\n key: 'pm',\n value: 'pm',\n flag: 'pm',\n text: 'Saint Pierre'\n },\n {\n key: 'vc',\n value: 'vc',\n flag: 'vc',\n text: 'Saint Vincent'\n },\n {\n key: 'ws',\n value: 'ws',\n flag: 'ws',\n text: 'Samoa'\n },\n {\n key: 'sm',\n value: 'sm',\n flag: 'sm',\n text: 'San Marino'\n },\n {\n key: 'gs',\n value: 'gs',\n flag: 'gs',\n text: 'Sandwich Islands'\n },\n {\n key: 'st',\n value: 'st',\n flag: 'st',\n text: 'Sao Tome'\n },\n {\n key: 'sa',\n value: 'sa',\n flag: 'sa',\n text: 'Saudi Arabia'\n },\n {\n key: 'sn',\n value: 'sn',\n flag: 'sn',\n text: 'Senegal'\n },\n {\n key: 'cs',\n value: 'cs',\n flag: 'cs',\n text: 'Serbia'\n },\n {\n key: 'rs',\n value: 'rs',\n flag: 'rs',\n text: 'Serbia'\n },\n {\n key: 'sc',\n value: 'sc',\n flag: 'sc',\n text: 'Seychelles'\n },\n {\n key: 'sl',\n value: 'sl',\n flag: 'sl',\n text: 'Sierra Leone'\n },\n {\n key: 'sg',\n value: 'sg',\n flag: 'sg',\n text: 'Singapore'\n },\n {\n key: 'sk',\n value: 'sk',\n flag: 'sk',\n text: 'Slovakia'\n },\n {\n key: 'si',\n value: 'si',\n flag: 'si',\n text: 'Slovenia'\n },\n {\n key: 'sb',\n value: 'sb',\n flag: 'sb',\n text: 'Solomon Islands'\n },\n {\n key: 'so',\n value: 'so',\n flag: 'so',\n text: 'Somalia'\n },\n {\n key: 'za',\n value: 'za',\n flag: 'za',\n text: 'South Africa'\n },\n {\n key: 'kr',\n value: 'kr',\n flag: 'kr',\n text: 'South Korea'\n },\n {\n key: 'es',\n value: 'es',\n flag: 'es',\n text: 'Spain'\n },\n {\n key: 'lk',\n value: 'lk',\n flag: 'lk',\n text: 'Sri Lanka'\n },\n {\n key: 'sd',\n value: 'sd',\n flag: 'sd',\n text: 'Sudan'\n },\n {\n key: 'sr',\n value: 'sr',\n flag: 'sr',\n text: 'Suriname'\n },\n {\n key: 'sj',\n value: 'sj',\n flag: 'sj',\n text: 'Svalbard'\n },\n {\n key: 'sz',\n value: 'sz',\n flag: 'sz',\n text: 'Swaziland'\n },\n {\n key: 'ch',\n value: 'ch',\n flag: 'ch',\n text: 'Switzerland'\n },\n {\n key: 'sy',\n value: 'sy',\n flag: 'sy',\n text: 'Syria'\n },\n {\n key: 'tw',\n value: 'tw',\n flag: 'tw',\n text: 'Taiwan'\n },\n {\n key: 'tj',\n value: 'tj',\n flag: 'tj',\n text: 'Tajikistan'\n },\n {\n key: 'tz',\n value: 'tz',\n flag: 'tz',\n text: 'Tanzania'\n },\n {\n key: 'th',\n value: 'th',\n flag: 'th',\n text: 'Thailand'\n },\n {\n key: 'tl',\n value: 'tl',\n flag: 'tl',\n text: 'Timorleste'\n },\n {\n key: 'tg',\n value: 'tg',\n flag: 'tg',\n text: 'Togo'\n },\n {\n key: 'tk',\n value: 'tk',\n flag: 'tk',\n text: 'Tokelau'\n },\n {\n key: 'to',\n value: 'to',\n flag: 'to',\n text: 'Tonga'\n },\n {\n key: 'tt',\n value: 'tt',\n flag: 'tt',\n text: 'Trinidad'\n },\n {\n key: 'tn',\n value: 'tn',\n flag: 'tn',\n text: 'Tunisia'\n },\n {\n key: 'tr',\n value: 'tr',\n flag: 'tr',\n text: 'Turkey'\n },\n {\n key: 'tm',\n value: 'tm',\n flag: 'tm',\n text: 'Turkmenistan'\n },\n {\n key: 'tv',\n value: 'tv',\n flag: 'tv',\n text: 'Tuvalu'\n },\n {\n key: 'ug',\n value: 'ug',\n flag: 'ug',\n text: 'Uganda'\n },\n {\n key: 'ua',\n value: 'ua',\n flag: 'ua',\n text: 'Ukraine'\n },\n {\n key: 'ae',\n value: 'ae',\n flag: 'ae',\n text: 'United Arab Emirates'\n },\n {\n key: 'uy',\n value: 'uy',\n flag: 'uy',\n text: 'Uruguay'\n },\n {\n key: 'um',\n value: 'um',\n flag: 'um',\n text: 'Us Minor Islands'\n },\n {\n key: 'vi',\n value: 'vi',\n flag: 'vi',\n text: 'Us Virgin Islands'\n },\n {\n key: 'uz',\n value: 'uz',\n flag: 'uz',\n text: 'Uzbekistan'\n },\n {\n key: 'vu',\n value: 'vu',\n flag: 'vu',\n text: 'Vanuatu'\n },\n {\n key: 'va',\n value: 'va',\n flag: 'va',\n text: 'Vatican City'\n },\n {\n key: 've',\n value: 've',\n flag: 've',\n text: 'Venezuela'\n },\n {\n key: 'vn',\n value: 'vn',\n flag: 'vn',\n text: 'Vietnam'\n },\n {\n key: 'wf',\n value: 'wf',\n flag: 'wf',\n text: 'Wallis and Futuna'\n },\n {\n key: 'eh',\n value: 'eh',\n flag: 'eh',\n text: 'Western Sahara'\n },\n {\n key: 'ye',\n value: 'ye',\n flag: 'ye',\n text: 'Yemen'\n },\n {\n key: 'zm',\n value: 'zm',\n flag: 'zm',\n text: 'Zambia'\n },\n {\n key: 'zw',\n value: 'zw',\n flag: 'zw',\n text: 'Zimbabwe'\n }\n];\n","import { NAME, CVR_NUMBER, ADDRESS, ZIP_CODE, CITY } from './constants';\n\nexport const urlForFetchingCVRdata = ({ cvr, country }) =>\n `${API_URL}/cvr_lookup/${country}/${cvr}`;\n\n/* eslint-disable */\nexport const sanitizeResponseFromCVRDataFetch = ({ response }) => ({\n [NAME]:\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteNavn.navn,\n [CVR_NUMBER]: response.data.hits.hits[0]._source.Vrvirksomhed.cvrNummer,\n [ADDRESS]: `${\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteBeliggenhedsadresse.vejnavn\n } ${\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteBeliggenhedsadresse.husnummerFra\n }, ${\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteBeliggenhedsadresse.etage\n }`,\n [ZIP_CODE]:\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteBeliggenhedsadresse.postnummer,\n [CITY]:\n response.data.hits.hits[0]._source.Vrvirksomhed.virksomhedMetadata\n .nyesteBeliggenhedsadresse.postdistrikt,\n})\n/* eslint-enable */\n\nexport const sanitizeErrorResponseForDisplay = ({ data }) => {\n const fieldsWithErrors = data.errors.details;\n const reducer = (accumulator, currentValue) =>\n ({[currentValue]: { isInvalid: true }, ...accumulator});\n\n return Object.keys(fieldsWithErrors).reduce(reducer, {});\n};\n","export const CLEAR_CLIENT_DATA = 'CLEAR_CLIENT_DATA';\nexport const CLEAR_FORM_DATA = 'CLEAR_FORM_DATA';\nexport const CLICK_SUBMIT_BUTTON = 'CLICK_SUBMIT_BUTTON';\nexport const ERROR_FETCH_DATAFROMCVR = 'ERROR_FETCH_DATAFROMCVR';\nexport const ERROR_INPUT_VALIDATION = 'ERROR_INPUT_VALIDATION';\nexport const ERROR_POST_CREATE_CLIENT = 'ERROR_POST_CREATE_CLIENT';\nexport const ERROR_POST_FORM = 'ERROR_POST_FORM';\nexport const INIT_FETCH_DATAFROMCVR = 'INIT_FETCH_DATAFROMCVR';\nexport const INIT_POST_FORM = 'INIT_POST_FORM';\nexport const INPUT_UPDATE_CLIENTDATA = 'INPUT_UPDATE_CLIENTDATA';\nexport const SUCCESS_FETCH_DATAFROMCVR = 'SUCCESS_FETCH_DATAFROMCVR';\nexport const SUCCESS_POST_CREATE_CLIENT = 'SUCCESS_POST_CREATE_CLIENT';\nexport const UPDATE_CVR_NUMBER = 'UPDATE_CVR_NUMBER';\n","import { get, post } from 'axios';\nimport { success, error } from 'react-notification-system-redux';\nimport { push } from 'connected-react-router';\nimport { getTranslate } from 'react-localize-redux';\n\nimport {\n urlForFetchingCVRdata,\n sanitizeResponseFromCVRDataFetch,\n sanitizeErrorResponseForDisplay\n} from './integrations';\nimport {\n ENDPOINT_DASHBOARD_CLIENT,\n INTEGRATION_LIST,\n CREATE_CLIENT_ROUTE_NAME\n} from '../../../services/navigation';\n\nimport { routeWithClientId } from '../../../helpers/location';\nimport { trackClientCreated } from '../../../external/segment';\nimport { NAME, FISCAL_YEAR_START } from './constants';\nimport * as types from './actionTypes';\n\n/**\n * Hooks the data fetched from CVRapi.dk to the app state 'createClient'.\n */\nfunction successFetchDataFromCVR(sanitizedResponse) {\n return dispatch => {\n dispatch({ type: types.CLEAR_FORM_DATA });\n return dispatch({\n type: types.SUCCESS_FETCH_DATAFROMCVR,\n payload: sanitizedResponse\n });\n };\n}\n\nconst errorFetchDataFromCVR = errorResponse => (dispatch, getState) => {\n const state = getState();\n const translate = getTranslate(state.locale);\n dispatch(\n error({\n title: translate('searchCvr.noResult.title'),\n message: translate('searchCvr.noResult.message'),\n position: 'tc'\n })\n );\n return dispatch({\n type: types.ERROR_FETCH_DATAFROMCVR,\n payload: errorResponse\n });\n};\n\n/**\n * Flags the init of the request to CVRapi.dk.\n */\nfunction initFetchDataFromCVR() {\n return { type: types.INIT_FETCH_DATAFROMCVR };\n}\n\nexport function fetchDataFromCVR(CVRnumber) {\n return dispatch => {\n dispatch(initFetchDataFromCVR());\n\n return get(urlForFetchingCVRdata({ cvr: CVRnumber, country: 'dk' }))\n .then(response =>\n dispatch(\n successFetchDataFromCVR(\n sanitizeResponseFromCVRDataFetch({ response })\n )\n )\n )\n .catch(errorResponse => dispatch(errorFetchDataFromCVR(errorResponse)));\n };\n}\n\nfunction errorAfterFormSubmit(errorResponse) {\n return {\n type: types.ERROR_POST_FORM,\n payload: errorResponse\n };\n}\n\nfunction inputValidationError(errors) {\n window.scrollTo(0, 0);\n return {\n type: types.ERROR_INPUT_VALIDATION,\n payload: errors\n };\n}\n\nfunction onSubmitButtonClick() {\n return { type: types.CLICK_SUBMIT_BUTTON };\n}\n\nfunction submitFormPostInit(body) {\n return {\n type: types.INIT_POST_FORM,\n payload: {\n isLoading: true,\n body\n }\n };\n}\n\nfunction successCreateCompany(response) {\n const statusCode = response.status;\n\n return (dispatch, getState) => {\n const state = getState();\n const translate = getTranslate(state.locale);\n const location = state.router.location.pathname;\n const clientName = state.client.name;\n const clientId = state.client.id;\n\n if (statusCode === 201 && location === CREATE_CLIENT_ROUTE_NAME) {\n dispatch(\n success({\n title: translate('new.success.title'),\n message: translate('new.success.message', { clientName }),\n position: 'tc'\n })\n );\n trackClientCreated({ clientId });\n dispatch(\n push(\n `${routeWithClientId(\n INTEGRATION_LIST,\n clientId\n )}&from=${CREATE_CLIENT_ROUTE_NAME}`\n )\n );\n return dispatch({ type: types.SUCCESS_POST_CREATE_CLIENT });\n }\n\n return dispatch({ type: types.ERROR_POST_CREATE_CLIENT });\n };\n}\n\n/**\n * Beginning of the actual POST call to submit create client form.\n */\nfunction postCallToSubmit() {\n return (dispatch, getState) => {\n const state = getState();\n const endpoint = ENDPOINT_DASHBOARD_CLIENT;\n const url = `${API_URL}${endpoint}`;\n const { client } = state.createClient;\n // Appending a year to the fiscal year date.\n const fiscalDateWithAddedYear = `${client[FISCAL_YEAR_START]}/2016`;\n const payload = {\n ...client,\n // Updating the value in the payload.\n [FISCAL_YEAR_START]: fiscalDateWithAddedYear\n };\n\n dispatch(submitFormPostInit(payload));\n\n return post(`${url}`, { ...payload })\n .then(response => {\n // error handling on 200 status code.\n if (response.data.errors) {\n dispatch(errorAfterFormSubmit(response.data.errors));\n }\n return dispatch(successCreateCompany(response));\n })\n .catch(errorResponse => {\n if (errorResponse.status === 422) {\n const errors = sanitizeErrorResponseForDisplay(errorResponse);\n dispatch(inputValidationError(errors));\n } else {\n throw new Error(errorResponse);\n }\n });\n };\n}\n\nfunction validateOnSubmitCreateClient() {\n return (dispatch, getState) => {\n const state = getState();\n\n const { client } = state.createClient;\n const isNameEmpty = client[NAME].length === 0;\n\n if (isNameEmpty) {\n const errors = {\n [NAME]: { isInvalid: isNameEmpty }\n };\n return dispatch(inputValidationError(errors));\n }\n return dispatch(postCallToSubmit());\n };\n}\n\nexport function onSubmitCreateClient() {\n return dispatch => {\n dispatch(onSubmitButtonClick());\n return dispatch(validateOnSubmitCreateClient());\n };\n}\n\n/**\n * Updates the store on keydown but before it validates.\n * It also updates the state of the form, allowing for validation.\n * @param {String} inputName\n * @param {String} inputValue\n * @return {Object}\n */\nexport function updateClientDataOnInput(inputName, inputValue) {\n return {\n type: types.INPUT_UPDATE_CLIENTDATA,\n payload: {\n client: { [inputName]: inputValue },\n form: {\n [inputName]: {\n isTouched: true,\n isInvalid: false\n }\n }\n }\n };\n}\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Input } from 'semantic-ui-react';\nimport { getTranslate } from 'react-localize-redux';\n\nimport * as actions from '../actions';\nimport './index.css';\n\nexport class Search extends Component {\n state = { CVRnumber: '' };\n\n handleChange = event => {\n const CVRnumber = event.target.value;\n this.setState({ CVRnumber });\n return this.requestCVRdata(CVRnumber);\n };\n\n /**\n * Requests CVR Data when the length of the input field reaches 8.\n */\n requestCVRdata = CVRnumber => {\n const { fetchDataFromCVR } = this.props;\n return CVRnumber.length === 8 ? fetchDataFromCVR(CVRnumber) : null;\n };\n\n render() {\n const { translate, isLoading } = this.props;\n const { CVRnumber } = this.state;\n\n return (\n
\n
\n
\n

{translate('searchCvr.title')}

\n {translate('searchCvr.message')}\n
\n
\n
\n \n
\n
\n
\n
\n );\n }\n}\n\nSearch.propTypes = {\n fetchDataFromCVR: PropTypes.func.isRequired,\n isLoading: PropTypes.bool,\n translate: PropTypes.func.isRequired\n};\n\nSearch.defaultProps = {\n isLoading: false\n};\n\nconst mapStateToProps = state => ({\n isLoading: state.createClient.isLoading,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Search);\n","import { getClientId } from '../../../services/navigation/routeMapping';\nimport { ENDPOINT_DASHBOARD_CLIENT } from '../../../services/navigation';\n\n/**\n * Generates url to be hit.\n * @param {Object} state\n */\nexport function url(state) {\n // Current location\n const { location } = state.router;\n // so the clientId can be extracted from the URL\n const clientId = getClientId(location);\n // and added to the request URL.\n return `${API_URL}${ENDPOINT_DASHBOARD_CLIENT}${clientId}`;\n}\n\n/**\n * Response sanitizer.\n * @param {Object} data\n */\nexport function sanitizeResponseData(data) {\n return {\n companyName: data.name || '',\n cvrNumber: data.vatin || '',\n customerId: data.customer_id || '',\n address: data.address || '',\n city: data.city || '',\n postNumber: data.zip_code || '',\n country: data.country || '',\n fiscalYearStart: data.fiscal_year_start,\n currency: data.currency || '',\n numberFormat: data.number_format || ''\n };\n}\n\nexport function formatFiscalYear(fiscalYearStart) {\n return `${fiscalYearStart}/2016`;\n}\n\n/**\n * Converts the frontend object format into backend-ready format.\n * Takes the state of the component as a parameter.\n * @param {Object} localState\n */\nexport function preparePayload(localState) {\n return {\n name: localState.companyName,\n vatin: localState.cvrNumber,\n customer_id: localState.customerId,\n address: localState.address,\n city: localState.city,\n zip_code: localState.postNumber,\n country: localState.country,\n fiscal_year_start: formatFiscalYear(localState.fiscalYearStart),\n currency: localState.currency,\n number_format: localState.numberFormat\n };\n}\n","import axios from 'axios';\nimport { success } from 'react-notification-system-redux';\nimport { push } from 'connected-react-router';\nimport { getTranslate } from 'react-localize-redux';\nimport { INIT_ROUTE_NAME } from '../../../services/navigation';\n\nimport { url, sanitizeResponseData, preparePayload } from './Integrations';\nimport { trackClientDeleted } from '../../../external/segment';\n\nexport const CLIENT_DATA_NUMBERFORMAT_UPDATE =\n 'CLIENT_DATA_NUMBERFORMAT_UPDATE';\nexport const CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION =\n 'CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION';\nexport const DELETE_SUCCESS_CLIENT_DATA = 'DELETE_SUCCESS_CLIENT_DATA';\nexport const DROPDOWN_VALUE_UPDATED_CLIENT_DATA =\n 'DROPDOWN_VALUE_UPDATED_CLIENT_DATA';\nexport const INIT_FETCH_CLIENT_DATA = 'INIT_FETCH_CLIENT_DATA';\nexport const INIT_SUBMIT_CLIENT_DATA = 'INIT_SUBMIT_CLIENT_DATA';\nexport const RESET_FORM_CLIENT_DATA = 'RESET_FORM_CLIENT_DATA';\nexport const SUCCESS_FETCH_CLIENT_DATA = 'SUCCESS_FETCH_CLIENT_DATA';\nexport const SUCCESS_POST_CLIENT_DATA = 'SUCCESS_POST_CLIENT_DATA';\n\n/**\n * Open/close confirmation modal.\n * @param {Boolean} value\n */\nexport function toggleConfirmationModal(value) {\n return {\n type: CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION,\n payload: { isModalOpen: value }\n };\n}\n\nfunction initFetchData() {\n return {\n type: INIT_FETCH_CLIENT_DATA,\n payload: { isLoading: true }\n };\n}\n\n/**\n * GET call for client data.\n */\nexport function fetchClientData() {\n return (dispatch, getState) => {\n dispatch(initFetchData());\n const state = getState();\n const { location } = state.router;\n const urlOfGetCall = url(state, location);\n axios.get(urlOfGetCall).then(response => {\n // Mapping backend/frontend data.\n const data = sanitizeResponseData(response.data.client);\n return dispatch({\n type: SUCCESS_FETCH_CLIENT_DATA,\n payload: data\n });\n });\n };\n}\n\nfunction initSubmitData() {\n return {\n type: INIT_SUBMIT_CLIENT_DATA,\n payload: { isLoading: true }\n };\n}\n\n/**\n * Persisting changes to the company\n * @param {Object} localState\n */\nexport function submitDataChanges(localState) {\n return (dispatch, getState) => {\n dispatch(initSubmitData());\n const state = getState();\n const translate = getTranslate(state.locale);\n const urlOfPostCall = url(state);\n const payload = preparePayload(localState);\n\n axios({\n method: 'put',\n url: urlOfPostCall,\n data: payload\n }).then(response => {\n const data = sanitizeResponseData(response.data.client);\n\n dispatch(\n success({\n title: translate('edit.success.title'),\n message: translate('edit.success.message'),\n position: 'tc'\n })\n );\n return dispatch({\n type: SUCCESS_POST_CLIENT_DATA,\n payload: data\n });\n });\n };\n}\n\n/**\n * Clearing the form.\n */\nexport function resetForm() {\n return {\n type: RESET_FORM_CLIENT_DATA,\n payload: {\n companyName: '',\n cvrNumber: '',\n address: '',\n postNumber: '',\n fiscalYearStart: ''\n }\n };\n}\n\n/**\n * Deleting a company.\n */\nexport function deleteCompany() {\n return (dispatch, getState) => {\n const state = getState();\n const translate = getTranslate(state.locale);\n const clientId = state.client.id;\n const urlOfDeleteCall = url(state);\n\n return axios({\n method: 'delete',\n url: urlOfDeleteCall\n }).then(() => {\n dispatch({\n type: DELETE_SUCCESS_CLIENT_DATA,\n payload: resetForm()\n });\n trackClientDeleted({ clientId });\n dispatch(push(INIT_ROUTE_NAME));\n return dispatch(\n success({\n title: translate('delete.success.title'),\n message: translate('delete.success.message'),\n position: 'tc'\n })\n );\n });\n };\n}\n\nexport function handleDropDownValueChange(value) {\n return {\n type: DROPDOWN_VALUE_UPDATED_CLIENT_DATA,\n payload: value\n };\n}\n\nexport function handleDropDownNumberFormatChange(value) {\n return {\n type: CLIENT_DATA_NUMBERFORMAT_UPDATE,\n payload: value\n };\n}\n","/**\n * The names of the input fields are a 1:1 match with the attributes of the payload\n * sent to the backend.\n *\n * This is why all the naming of those attributes is set here,\n * so when changing the name of an attribute can be as simple as changing here.\n */\n\n// Input fields' names\nexport const NAME = 'name';\nexport const CVR_NUMBER = 'vatin';\nexport const CUSTOMER_ID = 'customer_id';\nexport const ADDRESS = 'address';\nexport const CITY = 'city';\nexport const ZIP_CODE = 'zip_code';\nexport const COUNTRY = 'country';\nexport const FISCAL_YEAR_START = 'fiscal_year_start';\nexport const NUMBER_FORMAT = 'number_format';\nexport const CURRENCY = 'currency';\n\n// Select number format dropdown options\nexport const numberFormatOptions = [\n {\n key: '1.000,00',\n value: 'da-DK',\n text: '1.000,00'\n },\n {\n key: '1,000.00',\n value: 'en-GB',\n text: '1,000.00'\n }\n];\n\n// Select currency dropdown options\nexport const currencyOptions = [\n 'DKK',\n \"DKK 1'000\",\n 'DKKm',\n 'EUR',\n \"EUR 1'000\",\n 'EURm',\n 'USD',\n \"USD 1'000\",\n 'USDm'\n];\n\n/**\n * The dropdown input needs the following format:\n * {key: '' , value: '', text: ''}\n */\nfunction currencyOptionsToDropdown() {\n return currencyOptions.map(option => ({\n key: option,\n value: option,\n text: option\n }));\n}\n\nexport const currencyFormatOptions = currencyOptionsToDropdown();\nexport const countryOptions = [\n {\n key: 'dk',\n value: 'dk',\n flag: 'dk',\n text: 'Denmark'\n },\n {\n key: 'af',\n value: 'af',\n flag: 'af',\n text: 'Afghanistan'\n },\n {\n key: 'ax',\n value: 'ax',\n flag: 'ax',\n text: 'Aland Islands'\n },\n {\n key: 'al',\n value: 'al',\n flag: 'al',\n text: 'Albania'\n },\n {\n key: 'dz',\n value: 'dz',\n flag: 'dz',\n text: 'Algeria'\n },\n {\n key: 'as',\n value: 'as',\n flag: 'as',\n text: 'American Samoa'\n },\n {\n key: 'ad',\n value: 'ad',\n flag: 'ad',\n text: 'Andorra'\n },\n {\n key: 'ao',\n value: 'ao',\n flag: 'ao',\n text: 'Angola'\n },\n {\n key: 'ai',\n value: 'ai',\n flag: 'ai',\n text: 'Anguilla'\n },\n {\n key: 'ag',\n value: 'ag',\n flag: 'ag',\n text: 'Antigua'\n },\n {\n key: 'ar',\n value: 'ar',\n flag: 'ar',\n text: 'Argentina'\n },\n {\n key: 'am',\n value: 'am',\n flag: 'am',\n text: 'Armenia'\n },\n {\n key: 'aw',\n value: 'aw',\n flag: 'aw',\n text: 'Aruba'\n },\n {\n key: 'au',\n value: 'au',\n flag: 'au',\n text: 'Australia'\n },\n {\n key: 'at',\n value: 'at',\n flag: 'at',\n text: 'Austria'\n },\n {\n key: 'az',\n value: 'az',\n flag: 'az',\n text: 'Azerbaijan'\n },\n {\n key: 'bs',\n value: 'bs',\n flag: 'bs',\n text: 'Bahamas'\n },\n {\n key: 'bh',\n value: 'bh',\n flag: 'bh',\n text: 'Bahrain'\n },\n {\n key: 'bd',\n value: 'bd',\n flag: 'bd',\n text: 'Bangladesh'\n },\n {\n key: 'bb',\n value: 'bb',\n flag: 'bb',\n text: 'Barbados'\n },\n {\n key: 'by',\n value: 'by',\n flag: 'by',\n text: 'Belarus'\n },\n {\n key: 'be',\n value: 'be',\n flag: 'be',\n text: 'Belgium'\n },\n {\n key: 'bz',\n value: 'bz',\n flag: 'bz',\n text: 'Belize'\n },\n {\n key: 'bj',\n value: 'bj',\n flag: 'bj',\n text: 'Benin'\n },\n {\n key: 'bm',\n value: 'bm',\n flag: 'bm',\n text: 'Bermuda'\n },\n {\n key: 'bt',\n value: 'bt',\n flag: 'bt',\n text: 'Bhutan'\n },\n {\n key: 'bo',\n value: 'bo',\n flag: 'bo',\n text: 'Bolivia'\n },\n {\n key: 'ba',\n value: 'ba',\n flag: 'ba',\n text: 'Bosnia'\n },\n {\n key: 'bw',\n value: 'bw',\n flag: 'bw',\n text: 'Botswana'\n },\n {\n key: 'bv',\n value: 'bv',\n flag: 'bv',\n text: 'Bouvet Island'\n },\n {\n key: 'br',\n value: 'br',\n flag: 'br',\n text: 'Brazil'\n },\n {\n key: 'vg',\n value: 'vg',\n flag: 'vg',\n text: 'British Virgin Islands'\n },\n {\n key: 'bn',\n value: 'bn',\n flag: 'bn',\n text: 'Brunei'\n },\n {\n key: 'bg',\n value: 'bg',\n flag: 'bg',\n text: 'Bulgaria'\n },\n {\n key: 'bf',\n value: 'bf',\n flag: 'bf',\n text: 'Burkina Faso'\n },\n {\n key: 'bi',\n value: 'bi',\n flag: 'bi',\n text: 'Burundi'\n },\n {\n key: 'tc',\n value: 'tc',\n flag: 'tc',\n text: 'Caicos Islands'\n },\n {\n key: 'kh',\n value: 'kh',\n flag: 'kh',\n text: 'Cambodia'\n },\n {\n key: 'cm',\n value: 'cm',\n flag: 'cm',\n text: 'Cameroon'\n },\n {\n key: 'ca',\n value: 'ca',\n flag: 'ca',\n text: 'Canada'\n },\n {\n key: 'cv',\n value: 'cv',\n flag: 'cv',\n text: 'Cape Verde'\n },\n {\n key: 'ky',\n value: 'ky',\n flag: 'ky',\n text: 'Cayman Islands'\n },\n {\n key: 'cf',\n value: 'cf',\n flag: 'cf',\n text: 'Central African Republic'\n },\n {\n key: 'td',\n value: 'td',\n flag: 'td',\n text: 'Chad'\n },\n {\n key: 'cl',\n value: 'cl',\n flag: 'cl',\n text: 'Chile'\n },\n {\n key: 'cn',\n value: 'cn',\n flag: 'cn',\n text: 'China'\n },\n {\n key: 'cx',\n value: 'cx',\n flag: 'cx',\n text: 'Christmas Island'\n },\n {\n key: 'cc',\n value: 'cc',\n flag: 'cc',\n text: 'Cocos Islands'\n },\n {\n key: 'co',\n value: 'co',\n flag: 'co',\n text: 'Colombia'\n },\n {\n key: 'km',\n value: 'km',\n flag: 'km',\n text: 'Comoros'\n },\n {\n key: 'cg',\n value: 'cg',\n flag: 'cg',\n text: 'Congo Brazzaville'\n },\n {\n key: 'cd',\n value: 'cd',\n flag: 'cd',\n text: 'Congo'\n },\n {\n key: 'ck',\n value: 'ck',\n flag: 'ck',\n text: 'Cook Islands'\n },\n {\n key: 'cr',\n value: 'cr',\n flag: 'cr',\n text: 'Costa Rica'\n },\n {\n key: 'ci',\n value: 'ci',\n flag: 'ci',\n text: 'Cote Divoire'\n },\n {\n key: 'hr',\n value: 'hr',\n flag: 'hr',\n text: 'Croatia'\n },\n {\n key: 'cu',\n value: 'cu',\n flag: 'cu',\n text: 'Cuba'\n },\n {\n key: 'cy',\n value: 'cy',\n flag: 'cy',\n text: 'Cyprus'\n },\n {\n key: 'cz',\n value: 'cz',\n flag: 'cz',\n text: 'Czech Republic'\n },\n {\n key: 'dj',\n value: 'dj',\n flag: 'dj',\n text: 'Djibouti'\n },\n {\n key: 'dm',\n value: 'dm',\n flag: 'dm',\n text: 'Dominica'\n },\n {\n key: 'do',\n value: 'do',\n flag: 'do',\n text: 'Dominican Republic'\n },\n {\n key: 'ec',\n value: 'ec',\n flag: 'ec',\n text: 'Ecuador'\n },\n {\n key: 'eg',\n value: 'eg',\n flag: 'eg',\n text: 'Egypt'\n },\n {\n key: 'sv',\n value: 'sv',\n flag: 'sv',\n text: 'El Salvador'\n },\n {\n key: 'gb',\n value: 'gb',\n flag: 'gb',\n text: 'England'\n },\n {\n key: 'gq',\n value: 'gq',\n flag: 'gq',\n text: 'Equatorial Guinea'\n },\n {\n key: 'er',\n value: 'er',\n flag: 'er',\n text: 'Eritrea'\n },\n {\n key: 'ee',\n value: 'ee',\n flag: 'ee',\n text: 'Estonia'\n },\n {\n key: 'et',\n value: 'et',\n flag: 'et',\n text: 'Ethiopia'\n },\n {\n key: 'eu',\n value: 'eu',\n flag: 'eu',\n text: 'European Union'\n },\n {\n key: 'fk',\n value: 'fk',\n flag: 'fk',\n text: 'Falkland Islands'\n },\n {\n key: 'fo',\n value: 'fo',\n flag: 'fo',\n text: 'Faroe Islands'\n },\n {\n key: 'fj',\n value: 'fj',\n flag: 'fj',\n text: 'Fiji'\n },\n {\n key: 'fi',\n value: 'fi',\n flag: 'fi',\n text: 'Finland'\n },\n {\n key: 'fr',\n value: 'fr',\n flag: 'fr',\n text: 'France'\n },\n {\n key: 'gf',\n value: 'gf',\n flag: 'gf',\n text: 'French Guiana'\n },\n {\n key: 'pf',\n value: 'pf',\n flag: 'pf',\n text: 'French Polynesia'\n },\n {\n key: 'tf',\n value: 'tf',\n flag: 'tf',\n text: 'French Territories'\n },\n {\n key: 'ga',\n value: 'ga',\n flag: 'ga',\n text: 'Gabon'\n },\n {\n key: 'gm',\n value: 'gm',\n flag: 'gm',\n text: 'Gambia'\n },\n {\n key: 'ge',\n value: 'ge',\n flag: 'ge',\n text: 'Georgia'\n },\n {\n key: 'de',\n value: 'de',\n flag: 'de',\n text: 'Germany'\n },\n {\n key: 'gh',\n value: 'gh',\n flag: 'gh',\n text: 'Ghana'\n },\n {\n key: 'gi',\n value: 'gi',\n flag: 'gi',\n text: 'Gibraltar'\n },\n {\n key: 'gr',\n value: 'gr',\n flag: 'gr',\n text: 'Greece'\n },\n {\n key: 'gl',\n value: 'gl',\n flag: 'gl',\n text: 'Greenland'\n },\n {\n key: 'gd',\n value: 'gd',\n flag: 'gd',\n text: 'Grenada'\n },\n {\n key: 'gp',\n value: 'gp',\n flag: 'gp',\n text: 'Guadeloupe'\n },\n {\n key: 'gu',\n value: 'gu',\n flag: 'gu',\n text: 'Guam'\n },\n {\n key: 'gt',\n value: 'gt',\n flag: 'gt',\n text: 'Guatemala'\n },\n {\n key: 'gw',\n value: 'gw',\n flag: 'gw',\n text: 'Guinea-Bissau'\n },\n {\n key: 'gn',\n value: 'gn',\n flag: 'gn',\n text: 'Guinea'\n },\n {\n key: 'gy',\n value: 'gy',\n flag: 'gy',\n text: 'Guyana'\n },\n {\n key: 'ht',\n value: 'ht',\n flag: 'ht',\n text: 'Haiti'\n },\n {\n key: 'hm',\n value: 'hm',\n flag: 'hm',\n text: 'Heard Island'\n },\n {\n key: 'hn',\n value: 'hn',\n flag: 'hn',\n text: 'Honduras'\n },\n {\n key: 'hk',\n value: 'hk',\n flag: 'hk',\n text: 'Hong Kong'\n },\n {\n key: 'hu',\n value: 'hu',\n flag: 'hu',\n text: 'Hungary'\n },\n {\n key: 'is',\n value: 'is',\n flag: 'is',\n text: 'Iceland'\n },\n {\n key: 'in',\n value: 'in',\n flag: 'in',\n text: 'India'\n },\n {\n key: 'io',\n value: 'io',\n flag: 'io',\n text: 'Indian Ocean Territory'\n },\n {\n key: 'id',\n value: 'id',\n flag: 'id',\n text: 'Indonesia'\n },\n {\n key: 'ir',\n value: 'ir',\n flag: 'ir',\n text: 'Iran'\n },\n {\n key: 'iq',\n value: 'iq',\n flag: 'iq',\n text: 'Iraq'\n },\n {\n key: 'ie',\n value: 'ie',\n flag: 'ie',\n text: 'Ireland'\n },\n {\n key: 'il',\n value: 'il',\n flag: 'il',\n text: 'Israel'\n },\n {\n key: 'it',\n value: 'it',\n flag: 'it',\n text: 'Italy'\n },\n {\n key: 'jm',\n value: 'jm',\n flag: 'jm',\n text: 'Jamaica'\n },\n {\n key: 'jp',\n value: 'jp',\n flag: 'jp',\n text: 'Japan'\n },\n {\n key: 'jo',\n value: 'jo',\n flag: 'jo',\n text: 'Jordan'\n },\n {\n key: 'kz',\n value: 'kz',\n flag: 'kz',\n text: 'Kazakhstan'\n },\n {\n key: 'ke',\n value: 'ke',\n flag: 'ke',\n text: 'Kenya'\n },\n {\n key: 'ki',\n value: 'ki',\n flag: 'ki',\n text: 'Kiribati'\n },\n {\n key: 'kw',\n value: 'kw',\n flag: 'kw',\n text: 'Kuwait'\n },\n {\n key: 'kg',\n value: 'kg',\n flag: 'kg',\n text: 'Kyrgyzstan'\n },\n {\n key: 'la',\n value: 'la',\n flag: 'la',\n text: 'Laos'\n },\n {\n key: 'lv',\n value: 'lv',\n flag: 'lv',\n text: 'Latvia'\n },\n {\n key: 'lb',\n value: 'lb',\n flag: 'lb',\n text: 'Lebanon'\n },\n {\n key: 'ls',\n value: 'ls',\n flag: 'ls',\n text: 'Lesotho'\n },\n {\n key: 'lr',\n value: 'lr',\n flag: 'lr',\n text: 'Liberia'\n },\n {\n key: 'ly',\n value: 'ly',\n flag: 'ly',\n text: 'Libya'\n },\n {\n key: 'li',\n value: 'li',\n flag: 'li',\n text: 'Liechtenstein'\n },\n {\n key: 'lt',\n value: 'lt',\n flag: 'lt',\n text: 'Lithuania'\n },\n {\n key: 'lu',\n value: 'lu',\n flag: 'lu',\n text: 'Luxembourg'\n },\n {\n key: 'mo',\n value: 'mo',\n flag: 'mo',\n text: 'Macau'\n },\n {\n key: 'mk',\n value: 'mk',\n flag: 'mk',\n text: 'Macedonia'\n },\n {\n key: 'mg',\n value: 'mg',\n flag: 'mg',\n text: 'Madagascar'\n },\n {\n key: 'mw',\n value: 'mw',\n flag: 'mw',\n text: 'Malawi'\n },\n {\n key: 'my',\n value: 'my',\n flag: 'my',\n text: 'Malaysia'\n },\n {\n key: 'mv',\n value: 'mv',\n flag: 'mv',\n text: 'Maldives'\n },\n {\n key: 'ml',\n value: 'ml',\n flag: 'ml',\n text: 'Mali'\n },\n {\n key: 'mt',\n value: 'mt',\n flag: 'mt',\n text: 'Malta'\n },\n {\n key: 'mh',\n value: 'mh',\n flag: 'mh',\n text: 'Marshall Islands'\n },\n {\n key: 'mq',\n value: 'mq',\n flag: 'mq',\n text: 'Martinique'\n },\n {\n key: 'mr',\n value: 'mr',\n flag: 'mr',\n text: 'Mauritania'\n },\n {\n key: 'mu',\n value: 'mu',\n flag: 'mu',\n text: 'Mauritius'\n },\n {\n key: 'yt',\n value: 'yt',\n flag: 'yt',\n text: 'Mayotte'\n },\n {\n key: 'mx',\n value: 'mx',\n flag: 'mx',\n text: 'Mexico'\n },\n {\n key: 'fm',\n value: 'fm',\n flag: 'fm',\n text: 'Micronesia'\n },\n {\n key: 'md',\n value: 'md',\n flag: 'md',\n text: 'Moldova'\n },\n {\n key: 'mc',\n value: 'mc',\n flag: 'mc',\n text: 'Monaco'\n },\n {\n key: 'mn',\n value: 'mn',\n flag: 'mn',\n text: 'Mongolia'\n },\n {\n key: 'me',\n value: 'me',\n flag: 'me',\n text: 'Montenegro'\n },\n {\n key: 'ms',\n value: 'ms',\n flag: 'ms',\n text: 'Montserrat'\n },\n {\n key: 'ma',\n value: 'ma',\n flag: 'ma',\n text: 'Morocco'\n },\n {\n key: 'mz',\n value: 'mz',\n flag: 'mz',\n text: 'Mozambique'\n },\n {\n key: 'na',\n value: 'na',\n flag: 'na',\n text: 'Namibia'\n },\n {\n key: 'nr',\n value: 'nr',\n flag: 'nr',\n text: 'Nauru'\n },\n {\n key: 'np',\n value: 'np',\n flag: 'np',\n text: 'Nepal'\n },\n {\n key: 'an',\n value: 'an',\n flag: 'an',\n text: 'Netherlands Antilles'\n },\n {\n key: 'nl',\n value: 'nl',\n flag: 'nl',\n text: 'Netherlands'\n },\n {\n key: 'nc',\n value: 'nc',\n flag: 'nc',\n text: 'New Caledonia'\n },\n {\n key: 'pg',\n value: 'pg',\n flag: 'pg',\n text: 'New Guinea'\n },\n {\n key: 'nz',\n value: 'nz',\n flag: 'nz',\n text: 'New Zealand'\n },\n {\n key: 'ni',\n value: 'ni',\n flag: 'ni',\n text: 'Nicaragua'\n },\n {\n key: 'ne',\n value: 'ne',\n flag: 'ne',\n text: 'Niger'\n },\n {\n key: 'ng',\n value: 'ng',\n flag: 'ng',\n text: 'Nigeria'\n },\n {\n key: 'nu',\n value: 'nu',\n flag: 'nu',\n text: 'Niue'\n },\n {\n key: 'nf',\n value: 'nf',\n flag: 'nf',\n text: 'Norfolk Island'\n },\n {\n key: 'kp',\n value: 'kp',\n flag: 'kp',\n text: 'North Korea'\n },\n {\n key: 'mp',\n value: 'mp',\n flag: 'mp',\n text: 'Northern Mariana Islands'\n },\n {\n key: 'no',\n value: 'no',\n flag: 'no',\n text: 'Norway'\n },\n {\n key: 'om',\n value: 'om',\n flag: 'om',\n text: 'Oman'\n },\n {\n key: 'pk',\n value: 'pk',\n flag: 'pk',\n text: 'Pakistan'\n },\n {\n key: 'pw',\n value: 'pw',\n flag: 'pw',\n text: 'Palau'\n },\n {\n key: 'ps',\n value: 'ps',\n flag: 'ps',\n text: 'Palestine'\n },\n {\n key: 'pa',\n value: 'pa',\n flag: 'pa',\n text: 'Panama'\n },\n {\n key: 'py',\n value: 'py',\n flag: 'py',\n text: 'Paraguay'\n },\n {\n key: 'pe',\n value: 'pe',\n flag: 'pe',\n text: 'Peru'\n },\n {\n key: 'ph',\n value: 'ph',\n flag: 'ph',\n text: 'Philippines'\n },\n {\n key: 'pn',\n value: 'pn',\n flag: 'pn',\n text: 'Pitcairn Islands'\n },\n {\n key: 'pl',\n value: 'pl',\n flag: 'pl',\n text: 'Poland'\n },\n {\n key: 'pt',\n value: 'pt',\n flag: 'pt',\n text: 'Portugal'\n },\n {\n key: 'pr',\n value: 'pr',\n flag: 'pr',\n text: 'Puerto Rico'\n },\n {\n key: 'qa',\n value: 'qa',\n flag: 'qa',\n text: 'Qatar'\n },\n {\n key: 're',\n value: 're',\n flag: 're',\n text: 'Reunion'\n },\n {\n key: 'ro',\n value: 'ro',\n flag: 'ro',\n text: 'Romania'\n },\n {\n key: 'ru',\n value: 'ru',\n flag: 'ru',\n text: 'Russia'\n },\n {\n key: 'rw',\n value: 'rw',\n flag: 'rw',\n text: 'Rwanda'\n },\n {\n key: 'sh',\n value: 'sh',\n flag: 'sh',\n text: 'Saint Helena'\n },\n {\n key: 'kn',\n value: 'kn',\n flag: 'kn',\n text: 'Saint Kitts and Nevis'\n },\n {\n key: 'lc',\n value: 'lc',\n flag: 'lc',\n text: 'Saint Lucia'\n },\n {\n key: 'pm',\n value: 'pm',\n flag: 'pm',\n text: 'Saint Pierre'\n },\n {\n key: 'vc',\n value: 'vc',\n flag: 'vc',\n text: 'Saint Vincent'\n },\n {\n key: 'ws',\n value: 'ws',\n flag: 'ws',\n text: 'Samoa'\n },\n {\n key: 'sm',\n value: 'sm',\n flag: 'sm',\n text: 'San Marino'\n },\n {\n key: 'gs',\n value: 'gs',\n flag: 'gs',\n text: 'Sandwich Islands'\n },\n {\n key: 'st',\n value: 'st',\n flag: 'st',\n text: 'Sao Tome'\n },\n {\n key: 'sa',\n value: 'sa',\n flag: 'sa',\n text: 'Saudi Arabia'\n },\n {\n key: 'sn',\n value: 'sn',\n flag: 'sn',\n text: 'Senegal'\n },\n {\n key: 'cs',\n value: 'cs',\n flag: 'cs',\n text: 'Serbia'\n },\n {\n key: 'rs',\n value: 'rs',\n flag: 'rs',\n text: 'Serbia'\n },\n {\n key: 'sc',\n value: 'sc',\n flag: 'sc',\n text: 'Seychelles'\n },\n {\n key: 'sl',\n value: 'sl',\n flag: 'sl',\n text: 'Sierra Leone'\n },\n {\n key: 'sg',\n value: 'sg',\n flag: 'sg',\n text: 'Singapore'\n },\n {\n key: 'sk',\n value: 'sk',\n flag: 'sk',\n text: 'Slovakia'\n },\n {\n key: 'si',\n value: 'si',\n flag: 'si',\n text: 'Slovenia'\n },\n {\n key: 'sb',\n value: 'sb',\n flag: 'sb',\n text: 'Solomon Islands'\n },\n {\n key: 'so',\n value: 'so',\n flag: 'so',\n text: 'Somalia'\n },\n {\n key: 'za',\n value: 'za',\n flag: 'za',\n text: 'South Africa'\n },\n {\n key: 'kr',\n value: 'kr',\n flag: 'kr',\n text: 'South Korea'\n },\n {\n key: 'es',\n value: 'es',\n flag: 'es',\n text: 'Spain'\n },\n {\n key: 'lk',\n value: 'lk',\n flag: 'lk',\n text: 'Sri Lanka'\n },\n {\n key: 'sd',\n value: 'sd',\n flag: 'sd',\n text: 'Sudan'\n },\n {\n key: 'sr',\n value: 'sr',\n flag: 'sr',\n text: 'Suriname'\n },\n {\n key: 'sj',\n value: 'sj',\n flag: 'sj',\n text: 'Svalbard'\n },\n {\n key: 'sz',\n value: 'sz',\n flag: 'sz',\n text: 'Swaziland'\n },\n {\n key: 'se',\n value: 'se',\n flag: 'se',\n text: 'Sweden'\n },\n {\n key: 'ch',\n value: 'ch',\n flag: 'ch',\n text: 'Switzerland'\n },\n {\n key: 'sy',\n value: 'sy',\n flag: 'sy',\n text: 'Syria'\n },\n {\n key: 'tw',\n value: 'tw',\n flag: 'tw',\n text: 'Taiwan'\n },\n {\n key: 'tj',\n value: 'tj',\n flag: 'tj',\n text: 'Tajikistan'\n },\n {\n key: 'tz',\n value: 'tz',\n flag: 'tz',\n text: 'Tanzania'\n },\n {\n key: 'th',\n value: 'th',\n flag: 'th',\n text: 'Thailand'\n },\n {\n key: 'tl',\n value: 'tl',\n flag: 'tl',\n text: 'Timorleste'\n },\n {\n key: 'tg',\n value: 'tg',\n flag: 'tg',\n text: 'Togo'\n },\n {\n key: 'tk',\n value: 'tk',\n flag: 'tk',\n text: 'Tokelau'\n },\n {\n key: 'to',\n value: 'to',\n flag: 'to',\n text: 'Tonga'\n },\n {\n key: 'tt',\n value: 'tt',\n flag: 'tt',\n text: 'Trinidad'\n },\n {\n key: 'tn',\n value: 'tn',\n flag: 'tn',\n text: 'Tunisia'\n },\n {\n key: 'tr',\n value: 'tr',\n flag: 'tr',\n text: 'Turkey'\n },\n {\n key: 'tm',\n value: 'tm',\n flag: 'tm',\n text: 'Turkmenistan'\n },\n {\n key: 'tv',\n value: 'tv',\n flag: 'tv',\n text: 'Tuvalu'\n },\n {\n key: 'ug',\n value: 'ug',\n flag: 'ug',\n text: 'Uganda'\n },\n {\n key: 'ua',\n value: 'ua',\n flag: 'ua',\n text: 'Ukraine'\n },\n {\n key: 'ae',\n value: 'ae',\n flag: 'ae',\n text: 'United Arab Emirates'\n },\n {\n key: 'us',\n value: 'us',\n flag: 'us',\n text: 'United States'\n },\n {\n key: 'uy',\n value: 'uy',\n flag: 'uy',\n text: 'Uruguay'\n },\n {\n key: 'um',\n value: 'um',\n flag: 'um',\n text: 'Us Minor Islands'\n },\n {\n key: 'vi',\n value: 'vi',\n flag: 'vi',\n text: 'Us Virgin Islands'\n },\n {\n key: 'uz',\n value: 'uz',\n flag: 'uz',\n text: 'Uzbekistan'\n },\n {\n key: 'vu',\n value: 'vu',\n flag: 'vu',\n text: 'Vanuatu'\n },\n {\n key: 'va',\n value: 'va',\n flag: 'va',\n text: 'Vatican City'\n },\n {\n key: 've',\n value: 've',\n flag: 've',\n text: 'Venezuela'\n },\n {\n key: 'vn',\n value: 'vn',\n flag: 'vn',\n text: 'Vietnam'\n },\n {\n key: 'wf',\n value: 'wf',\n flag: 'wf',\n text: 'Wallis and Futuna'\n },\n {\n key: 'eh',\n value: 'eh',\n flag: 'eh',\n text: 'Western Sahara'\n },\n {\n key: 'ye',\n value: 'ye',\n flag: 'ye',\n text: 'Yemen'\n },\n {\n key: 'zm',\n value: 'zm',\n flag: 'zm',\n text: 'Zambia'\n },\n {\n key: 'zw',\n value: 'zw',\n flag: 'zw',\n text: 'Zimbabwe'\n }\n];\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown } from 'semantic-ui-react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { CLIENT_DATA_SETTINGS_ROUTE_NAME } from '../../services/navigation';\nimport * as actionsCreateClient from '../../screens/Client/Create/actions';\nimport * as actionsClientDataCompany from '../../screens/Client/Edit/actions';\nimport './Dropdown.css';\nimport { COUNTRY } from './constants';\n\nexport class DropdownInput extends React.Component {\n static propTypes = {\n client: PropTypes.object.isRequired,\n handleDropDownValueChange: PropTypes.func.isRequired,\n location: PropTypes.string.isRequired\n };\n\n state = {\n options: this.props.options,\n value: this.props.client[this.props.name]\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n // Update localstate when props have changed\n if (this.state.value !== nextProps.client.currency) {\n this.setState({ value: nextProps.client.currency });\n }\n }\n\n handleChange = (event, { value }) => {\n // Updating the whole object with the input values.\n const updatedData = Object.assign(this.props.client, {\n [this.props.name]: value\n });\n if (this.props.location === CLIENT_DATA_SETTINGS_ROUTE_NAME) {\n this.setState({ value });\n this.props.handleDropDownValueChange(value);\n } else {\n this.props.updateClientDataOnInput(updatedData);\n }\n };\n\n render() {\n const { translate, name, subLabelText, labelText } = this.props;\n const { options, value } = this.state;\n return (\n
\n
\n
\n \n \n
\n {translate(subLabelText)}\n
\n
\n
\n
\n );\n }\n}\n\nDropdownInput.propTypes = {\n // Text above the dropdown.\n labelText: PropTypes.string.isRequired,\n // Options presented in the dropdown.\n options: PropTypes.array.isRequired,\n // Text underneath the dropdown\n subLabelText: PropTypes.string,\n // Name of the dropdown (eg: 'country' or 'numberFormat')\n name: PropTypes.string.isRequired,\n // The actual object with the clients' info.\n client: PropTypes.object.isRequired,\n // action dispatched to update props upon dropdown selection.\n updateClientDataOnInput: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nDropdownInput.defaultProps = {\n subLabelText: ''\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n ...actionsCreateClient,\n ...actionsClientDataCompany\n },\n dispatch\n );\n\nconst mapStateToProps = state => ({\n location: state.router.location.pathname,\n client: state.createClient.client,\n clientData: state.clientData,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(DropdownInput);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Dropdown } from 'semantic-ui-react';\nimport { getTranslate } from 'react-localize-redux';\nimport * as actions from '../../screens/Client/Edit/actions';\nimport { numberFormatOptions, NUMBER_FORMAT } from './constants';\n\nexport class SelectNumberFormat extends React.Component {\n static propTypes = {\n createClient: PropTypes.object,\n clientData: PropTypes.object,\n handleDropDownNumberFormatChange: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n createClient: {},\n clientData: {}\n };\n\n state = {\n options: numberFormatOptions,\n value: this.props.createClient.number_format\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ value: nextProps.clientData.numberFormat });\n }\n\n handleChange(e, target) {\n e.preventDefault(e);\n\n this.setState({ value: target.value });\n this.props.handleDropDownNumberFormatChange(target.value);\n }\n\n render() {\n return (\n
\n
\n
\n \n this.handleChange(e, target)}\n />\n
\n {this.props.translate('settings.numberFormatSubLabelText')}\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n clientData: state.clientData,\n createClient: state.createClient.client\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(SelectNumberFormat);\n","import React from 'react';\n\nimport './index.css';\nimport DropdownInput from './Dropdown';\nimport SelectNumberFormat from './SelectNumberFormat';\nimport { currencyFormatOptions, CURRENCY } from './constants';\n\nexport const Settings = () => (\n
\n
\n \n \n
\n
\n);\n\nexport default Settings;\n","import { currencyOptions } from '../../components/Settings/constants';\n\n/**\n * Translates a label if the label is present.\n *\n * @param {func} translate [getTranslate function]\n * @param {label} string [Key of the translation]\n * @return {String} [Returns the translated string if label is present, otherwise null]\n */\nexport function optionalTranslation(translate, label) {\n return label ? translate(label) : null;\n}\n\n/**\n * This includes sanitization of data due to inconsistent types\n * @param {[type]} translate [description]\n * @param {[type]} value [description]\n * @param {[type]} scope [description]\n * @return {[type]} [description]\n */\nexport function typeSanitizer(translate, value, scope = null) {\n switch (true) {\n // Nothing to be translated\n case !value:\n return null;\n // Don't translate currencies\n case currencyOptions.indexOf(value) >= 0:\n return value;\n // Don't translate numbers\n case typeof value === 'number':\n return value;\n // Don't translate if value matches things like '(value1 = value2)'.\n case String(value).match(/\\([^=)]+=[^)]+\\)/) !== null:\n return value;\n\n // Beginning of dynamic translations. Ex: Budget 2016. 2016 is dynamic.\n case value.toLowerCase().startsWith('budget'):\n return translate('budgetHeader', { year: value.split(' ')[1] });\n\n case value.startsWith('estimate'):\n return translate('forecast_assumptions.estimate', {\n year: value.split(' ')[1]\n });\n case value.startsWith('terminal'):\n return translate('forecast_assumptions.terminal', {\n year: value.split(' ')[1]\n });\n // End of dynamic translations.\n default:\n return !scope ? translate(value) : translate(`${scope}.${value}`);\n }\n}\n\nexport function tryTranslate(translate, value, scope = null) {\n // Don't translate if value matches things like '(value1 = value2)'.\n if (String(value).match(/\\([^=)]+=[^)]+\\)/)) {\n return value;\n }\n const translatedValue = !scope\n ? translate(value)\n : translate(`${scope}.${value}`);\n return translatedValue.startsWith('Missing localized key')\n ? null\n : translatedValue;\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { flatNavigationOptions } from '../../services/navigation/options';\n\nconst ButtonRedirect = ({ redirect, translate }) =>\n redirect.map(value => {\n const { link, name } = flatNavigationOptions(value);\n\n return (\n \n \n
\n {translate(name)}\n
\n \n \n );\n });\n\nexport default ButtonRedirect;\n","import React, { Fragment } from 'react';\nimport { string, bool } from 'prop-types';\nimport loadingImage from '../../shared/images/loader_tiny.svg';\nimport { TranslateContext } from '..';\n\nimport './index.css';\n\nexport const LoadingSpinner = ({ text, title, centered }) => (\n \n \"Loading\n \n {({ translate }) => (\n \n {title ?

{translate(title)}

: null}\n {text ?

{translate(text)}

: null}\n
\n )}\n
\n \n);\n\nLoadingSpinner.propTypes = {\n text: string,\n title: string,\n centered: bool\n};\n\nLoadingSpinner.defaultProps = {\n text: null,\n title: null,\n centered: false\n};\n\nexport default LoadingSpinner;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { getTranslate } from 'react-localize-redux';\nimport ButtonRedirect from '../ButtonRedirect';\n\nimport defaultIcon from './icon-newcompany.svg';\nimport './index.css';\n\nconst MainButton = ({ url, buttonText, translate }) => (\n
\n {url.startsWith('/') ? (\n \n
\n {translate(buttonText)}\n
\n \n ) : (\n \n
\n {translate(buttonText)}\n
\n
\n )}\n
\n);\n\nMainButton.propTypes = {\n url: PropTypes.string.isRequired,\n buttonText: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nexport class InfoCard extends PureComponent {\n static propTypes = {\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n url: PropTypes.string,\n buttonText: PropTypes.string,\n icon: PropTypes.string,\n translate: PropTypes.func.isRequired,\n redirect: PropTypes.array\n };\n\n static defaultProps = {\n url: '',\n buttonText: '',\n icon: defaultIcon,\n showErrorMessages: false,\n redirect: null\n };\n\n render() {\n const {\n url,\n buttonText,\n icon,\n translate,\n text,\n title,\n redirect\n } = this.props;\n\n return (\n
\n
\n
\n \"icon-newcompany\"\n
\n
{translate(title)}
\n
{translate(text)}
\n {redirect ? (\n \n ) : (\n \n )}\n
\n
\n );\n }\n}\n\nexport default connect(state => ({ translate: getTranslate(state.locale) }))(\n InfoCard\n);\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport { Icon, Popup } from 'semantic-ui-react';\nimport { localize } from 'react-localize-redux';\n\nimport './index.css';\n\nimport questionMarkImage from './questionMark.svg';\n\nexport const Tooltip = ({ message, title, type, translate }) => (\n
\n \n {translate(message)}\n
\n ) : (\n \n )\n }\n />\n \n);\n\nTooltip.propTypes = {\n message: string.isRequired,\n title: string,\n type: string.isRequired,\n translate: func.isRequired\n};\n\nTooltip.defaultProps = {\n title: undefined\n};\n\nexport default localize(Tooltip, 'locale');\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localize } from 'react-localize-redux';\n\nimport './index.css';\n\nconst InfoBoxComponent = ({ translate, title, text }) => (\n
\n
{translate(title)}
\n
{translate(text)}
\n
\n);\n\nInfoBoxComponent.propTypes = {\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nexport const InfoBox = localize(InfoBoxComponent, 'locale');\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { Translate } from 'react-localize-redux';\nimport plainTriangleSmall from '../../shared/images/plainTriangleSmall.svg';\n\nimport './index.css';\n\nexport const InfoBanner = ({ integration, title, subtitle }) => (\n
\n
\n \"triangle_warning\"\n
\n\n
\n
\n

\n \n

\n
\n\n
\n

\n \n

\n
\n
\n
\n);\n\nInfoBanner.propTypes = {\n // eslint-disable-next-line\n integration: string.isRequired,\n // eslint-disable-next-line\n title: string.isRequired,\n // eslint-disable-next-line\n subtitle: string.isRequired\n};\n","import React, { Fragment } from 'react';\nimport { string } from 'prop-types';\n\nimport { TranslateContext } from '..';\n\nexport const CardTitle = ({ integration, title, subtitle }) => (\n \n {({ translate }) => (\n \n

{translate(title, { integration })}

\n

{translate(subtitle, { integration })}

\n
\n )}\n
\n);\n\nCardTitle.propTypes = {\n // eslint-disable-next-line\n integration: string.isRequired,\n // eslint-disable-next-line\n title: string.isRequired,\n // eslint-disable-next-line\n subtitle: string.isRequired\n};\n","import { useMemo } from 'react';\nimport { typeSanitizer } from '../../../helpers/translations';\n\nexport const optimizedTypeSanitizer = ({ text, sectionName, translate }) =>\n useMemo(() => typeSanitizer(translate, text, sectionName), [text]);\n","import {\n array,\n arrayOf,\n bool,\n func,\n number,\n object,\n shape,\n string\n} from 'prop-types';\n\nexport const TableCommonPropTypes = {\n name: string,\n section: object.isRequired\n};\n\nexport const TableHeaderPropTypes = {\n headings: array.isRequired,\n sectionName: string,\n subheadings: array,\n subtitle: string,\n translate: func.isRequired\n};\n\nexport const TableBodyPropTypes = {\n row: shape({\n name: string.isRequired,\n type: string.isRequired\n })\n};\n\nexport const TableRowPropTypes = {\n row: object.isRequired,\n rowIndex: number.isRequired,\n style: string,\n translate: func.isRequired,\n numberFormat: string\n};\n\nexport const TableRowNamePropTypes = {\n row: object.isRequired,\n rowIndex: number.isRequired,\n hasDefinition: bool,\n translate: func.isRequired,\n numberFormat: string,\n sidePanelId: string\n};\n\nexport const TableRowCellsPropTypes = {\n row: shape({\n cells: arrayOf(\n shape({\n display: string.isRequired\n })\n )\n }).isRequired,\n rowIndex: number.isRequired\n};\n\nexport const TableTitlePropTypes = {\n sectioName: string,\n translate: func.isRequired,\n section: shape({\n readMoreIdKey: string,\n text: string.isRequired\n }),\n showBottomBorder: shape({\n text: string,\n readMoreIdKey: string\n }),\n hasDefinition: bool,\n sidePanelId: string\n};\n","import React from 'react';\nimport { Table } from 'semantic-ui-react';\n\nimport { optimizedTypeSanitizer } from '../helpers';\nimport { TableHeaderPropTypes } from '../types';\nimport { typeSanitizer } from '../../../helpers/translations';\n\nimport './index.css';\n\nexport function TableHeader({\n translate,\n sectionName,\n subtitle,\n headings,\n subheadings\n}) {\n return (\n \n \n \n {optimizedTypeSanitizer({ translate, text: subtitle, sectionName })}\n \n\n {headings.map((headerValue, index) => (\n \n {typeSanitizer(translate, headerValue, sectionName)}\n\n {subheadings && (\n
\n {typeSanitizer(translate, subheadings[index], sectionName)}\n
\n )}\n \n ))}\n
\n
\n );\n}\n\nTableHeader.defaultProps = {\n subheadings: null,\n subtitle: null\n};\n\nTableHeader.propTypes = TableHeaderPropTypes;\n","const userInputValidationErrorType = 'critical';\n\n/**\n * Error to be displayed when a user precedes the value with a '='.\n * @param {String} displayValue [value added by the user]\n * @return {Object} [error message and type]\n */\nexport function userCantUseEqual(displayValue) {\n return {\n displayValue,\n error: {\n type: userInputValidationErrorType,\n message: 'cellError.notAFormula.message',\n title: 'cellError.notAFormula.title'\n }\n };\n}\n\n/**\n * Error to be displayed when a non-allowed character is inserted in the input field.\n * @param {String} displayValue [value added by the user]\n * @return {Object} [error message and type]\n */\nexport function userCantWriteNonAllowedCharacters(displayValue) {\n return {\n displayValue,\n error: {\n type: userInputValidationErrorType,\n message: 'cellError.textNotAllowed.message',\n title: 'cellError.textNotAllowed.title'\n }\n };\n}\n\n/**\n * Allowed characters in the input text field.\n * @param {String} displayValue [value added by the user]\n * @return {Boolean} [Matching regex]\n */\nexport function isAllowedCharacter(displayValue) {\n return /^$|^([+-]?[\\d\\s.%,]+)$/.test(displayValue);\n}\n","/**\n * Generic types validation.\n * @param {*} value\n * @param {*} numberFormat\n * @param {*} style\n */\nexport function hasValidTypes(value, numberFormat, style) {\n const isValidNumberFormat = value !== null && value !== undefined;\n const isValidStyle = style === 'decimal' || style === 'percent';\n const isValidValue = value !== null && value !== undefined;\n return (\n isValidNumberFormat &&\n isValidStyle &&\n isValidValue &&\n typeof numberFormat === 'string'\n );\n}\n\n/**\n * Specific string values validation.\n * Plus generic.\n *\n * Makes sure the values coming in are strings (typeof string)\n * and that all the arguments are present at all times.\n */\nexport function hasValidTypesForStringValues(value, numberFormat, style) {\n return typeof value === 'string' && hasValidTypes(value, numberFormat, style);\n}\n\n/**\n * Specific number values validation.\n * Plus generic.\n *\n * Makes sure the values coming in are numbers (typeof number)\n * and that all the arguments are present at all times.\n */\nexport function hasValidTypesForNumberValues(value, numberFormat, style) {\n return typeof value === 'number' && hasValidTypes(value, numberFormat, style);\n}\n\nexport function errorHandlerForStringValues(\n value,\n numberFormat,\n style,\n errorIdentifier\n) {\n switch (true) {\n case !value: {\n return {\n error: {\n message: `Error(${errorIdentifier}): value is missing`,\n type: 'debug'\n }\n };\n }\n\n case typeof value !== 'string': {\n return {\n error: {\n message: `Error(${errorIdentifier}): value is not string`,\n type: 'debug'\n }\n };\n }\n\n case !numberFormat: {\n return {\n error: {\n message: `Error(${errorIdentifier}): numberFormat is missing`,\n type: 'debug'\n }\n };\n }\n\n case !style: {\n return {\n error: {\n message: `Error(${errorIdentifier}): style is missing`,\n type: 'debug'\n }\n };\n }\n\n case style !== 'percent':\n case style !== 'decimal': {\n return {\n error: {\n message: `Error(${errorIdentifier}): style has wrong name`,\n type: 'debug'\n }\n };\n }\n\n default:\n return {\n error: {\n message: `Error(${errorIdentifier}): generic error`,\n type: 'debug'\n }\n };\n }\n}\n\nexport function errorHandlerForNumberValues(\n value,\n numberFormat,\n style,\n errorIdentifier\n) {\n switch (true) {\n case !value: {\n return {\n error: {\n message: `Error(${errorIdentifier}): value is missing`,\n type: 'debug'\n }\n };\n }\n\n case typeof value !== 'number': {\n return {\n error: {\n message: `Error(${errorIdentifier}): value is NaN`,\n type: 'debug'\n }\n };\n }\n\n case !numberFormat: {\n return {\n error: {\n message: `Error(${errorIdentifier}): numberFormat is missing`,\n type: 'debug'\n }\n };\n }\n\n case !style: {\n return {\n error: {\n message: `Error(${errorIdentifier}): style is missing`,\n type: 'debug'\n }\n };\n }\n\n case style !== 'percent':\n case style !== 'decimal': {\n return {\n error: {\n message: `Error(${errorIdentifier}): style has wrong name`,\n type: 'debug'\n }\n };\n }\n\n default:\n return {\n error: {\n message: `Error(${errorIdentifier}): generic error`,\n type: 'debug'\n }\n };\n }\n}\n","import { SIMULATION_REPORT_ROUTE_NAME } from '../../services/navigation';\n\n/**\n * In simulation view, the value is null so that the text rendered in\n * the input field is the placeholder text.\n * @param {Number} rawValue\n * @param {String} viewName\n * @return {Boolean}\n */\nexport const isSimulationException = (rawValue, viewName) =>\n rawValue === null && viewName === SIMULATION_REPORT_ROUTE_NAME;\n\n/**\n * Check's if the -0 is really -0, and display decimal.\n * @param {*} value\n */\nexport const isDecimalMinusZero = (value, style) =>\n Object.is(-0, value) && style === 'decimal';\n\n/**\n * Check's if the -0 is really -0, and display percent.\n * @param {*} value\n * @param {*} style\n */\nexport const isPercentageMinusZero = (value, style) =>\n Object.is(-0, value) && style === 'percent';\n\n/**\n * The placeholder text for the input field changes based on the view.\n * For example, the simulation view should display a placeholder of 'Status Quo' when cell is empty.\n * @return {String}\n */\nexport const showCorrectPlaceholder = viewName =>\n viewName && viewName === SIMULATION_REPORT_ROUTE_NAME ? 'Status Quo' : '';\n\n/**\n * Because the localization library (Intl.Number) doesn't localize -0 properly,\n * a '-' needs to be prepended to the displayValue\n * @return {[type]} [description]\n */\nexport function addMinusToDisplayValue(\n localizeNumber,\n rawValue,\n numberFormat,\n options\n) {\n // When editing a number, we don't want the % sign.\n // Hence, the library localizes as a 'decimal' number and doesn't return a % sign.\n // options.style = 'decimal';\n const updatedOptions = {\n ...options,\n style: 'decimal'\n };\n const localizedValue = localizeNumber(rawValue, numberFormat, updatedOptions).displayValue;\n\n return {\n displayValue: localizedValue.startsWith('-') ? localizedValue : `-${localizedValue}`,\n // RawValue is not affected by the disappearing on the '-' signal.\n rawValue\n };\n}\n\nexport const isEmptyCellException = rawValue => rawValue === null;\n\n/**\n * Some views have different UI requirements for 'null' values.\n * Examples: -0, 0, null, etc. handling\n * @return {[type]} [description]\n */\nexport function rawToPrettyExceptionHandler(value, style, viewName, exception) {\n if (isDecimalMinusZero(value, style)) {\n return {\n displayValue: '-0',\n rawValue: -0\n };\n }\n\n if (isPercentageMinusZero(value, style)) {\n return {\n displayValue: '-0 %',\n rawValue: -0\n };\n }\n\n if (isSimulationException(value, viewName)) {\n return {\n displayValue: '',\n rawValue: null\n };\n }\n\n if (exception) {\n return {\n displayValue: exception,\n rawValue: null\n };\n }\n\n if (value === null) {\n return {\n displayValue: '',\n rawValue: null\n };\n }\n\n return false;\n}\n","/**\n * 'Conversions' refers to formatting data.\n * There are 4 types of conversions:\n *\n * 1) From 'raw' to 'pretty'\n * 2) From 'editing' to 'raw;\n * 3) From 'pretty' to 'editing';\n * 4) From 'editing' to 'pretty';\n *\n * 'Raw' format refers to the format that\n * is sent from the backend to the frontend and vice versa.\n * It is an unlocalized format (where there is no\n * thousands separator and the decimals separator is always a dot);\n *\n * 'Editing' format refers to the format when the user is editing a cell.\n * It has restrictions on the amount of decimals and others.\n *\n * 'Pretty' is the format displayed when the cell is not being edited.\n * It is fully localized.\n *\n */\nimport numeral from 'numeral';\nimport memoizeFormatConstructor from 'intl-format-cache';\nimport {\n userCantUseEqual,\n userCantWriteNonAllowedCharacters,\n isAllowedCharacter\n} from './userInputValidations';\nimport {\n errorHandlerForNumberValues,\n errorHandlerForStringValues,\n hasValidTypesForNumberValues,\n hasValidTypesForStringValues\n} from './validations';\nimport {\n addMinusToDisplayValue,\n isDecimalMinusZero,\n isEmptyCellException,\n isPercentageMinusZero,\n rawToPrettyExceptionHandler\n} from './exceptions';\n\nconst getNumberFormat = memoizeFormatConstructor(Intl.NumberFormat);\n\n/**\n * Simple number localization.\n *\n * @param {*} value\n * @param {*} numberFormat\n * @param {*} options\n */\nexport function localizeNumber(value, numberFormat, options) {\n return {\n displayValue: getNumberFormat(numberFormat, options).format(value),\n rawValue: value\n };\n}\n\n/**\n * @param {*} value\n * @param {*} numberFormat\n * @param {*} style\n * @param {*} options\n * @param {*} errorIdentifier\n * @return {Object}\n */\nexport function throwErrorForRawNumbers(\n value,\n numberFormat,\n style,\n options,\n errorIdentifier\n) {\n return errorHandlerForNumberValues(\n value,\n numberFormat,\n style,\n errorIdentifier\n );\n}\n\n/**\n * Usually triggered when cell has new data.\n * Converts from Number to String.\n *\n * It is hooked to the initial rendering state.\n */\nexport function rawToPretty({ ...args }) {\n const { value, style, viewName, numberFormat, precision, exception } = args;\n const errorIdentifier = 'raw2pretty';\n const options = {\n style,\n // Decimal cells should have no decimals.\n maximumFractionDigits: precision || 0\n };\n const exceptionValue = rawToPrettyExceptionHandler(\n value,\n style,\n viewName,\n exception\n );\n\n // Exceptions\n if (exceptionValue) return exceptionValue;\n // Percentages should have 1 decimal by default.\n // Note: 'style' in the frontend, is the 'display' sent from backend.\n if (style === 'percent') options.maximumFractionDigits = precision || 1;\n\n // End of exceptions\n return hasValidTypesForNumberValues(value, numberFormat, style)\n ? localizeNumber(value, numberFormat, options)\n : throwErrorForRawNumbers(\n value,\n numberFormat,\n style,\n options,\n errorIdentifier\n );\n}\n\n/**\n * Converts Number to String (localized but with restrictions).\n * Import: this takes the rawValue (because it contains the decimals)\n * whereas the prettyfied value (string) does not.\n *\n * It is hooked to the onFocus event.\n * @return {String}\n */\nexport function rawToEditing({ ...cellState }) {\n const { rawValue, style, numberFormat, displayValue } = cellState;\n const errorIdentifier = 'raw2edit';\n const options = {\n style,\n // Don't use thousands separator\n useGrouping: false,\n // Set digits back to 3\n minimumFractionDigits: 3\n };\n\n // Exceptions\n if (isEmptyCellException(rawValue)) {\n return {\n ...cellState,\n displayValue\n };\n }\n\n if (isDecimalMinusZero(rawValue, style)) {\n return addMinusToDisplayValue(\n localizeNumber,\n rawValue,\n numberFormat,\n options\n );\n }\n\n if (isPercentageMinusZero(rawValue, style)) {\n return addMinusToDisplayValue(\n localizeNumber,\n rawValue,\n numberFormat,\n options\n );\n }\n // End of exceptions\n\n return hasValidTypesForNumberValues(rawValue, numberFormat, style)\n ? localizeNumber(rawValue, numberFormat, options)\n : throwErrorForRawNumbers(\n rawValue,\n numberFormat,\n style,\n options,\n errorIdentifier\n );\n}\n\n/**\n * So data can be sent to the backend.\n * Usually is not visible to the user.\n * Converts String to Number.\n *\n * @return {Number}\n */\nexport function editingToRaw(args) {\n const { numberFormat, style } = args;\n let { displayValue } = args;\n\n const errorIdentifier = 'edit2raw';\n // Typechecking\n if (!hasValidTypesForStringValues(displayValue, numberFormat, style)) {\n return errorHandlerForStringValues(\n displayValue,\n numberFormat,\n style,\n errorIdentifier\n );\n }\n\n // Setting the right locale\n numeral.locale(numberFormat);\n\n // When converting to RAW a percentage number,\n // we either divide by 100\n // or let the numeral do the conversion.\n // In this case, the latter was preferred.\n if (style === 'percent' && !displayValue.includes('%')) {\n displayValue += '%';\n }\n\n if (style === 'decimal' && displayValue.includes('%')) {\n displayValue = displayValue.split('%', 1).join('');\n }\n\n return numeral(displayValue).value();\n}\n\n/**\n * Editing to Pretty has two steps:\n *\n * 1) Editing -> Raw\n * 2) Raw -> Pretty\n * @param {String} value\n * @param {String} numberFormat\n * @return {String}\n */\nexport function editingToPretty({ ...cellState }) {\n const { displayValue, style, numberFormat } = cellState;\n const errorIdentifier = 'edit2pretty';\n\n // Typechecking;\n if (!hasValidTypesForStringValues(displayValue, numberFormat, style)) {\n return errorHandlerForStringValues(\n displayValue,\n numberFormat,\n style,\n errorIdentifier\n );\n }\n\n // 1) convert to raw before prettyfying (typechecking purposes)\n const convertedNumberFromEditToRaw = editingToRaw({\n displayValue,\n numberFormat,\n style\n });\n\n // 2) User input validation\n // 2.1) Can't type formulas\n if (displayValue.includes('=')) return userCantUseEqual(displayValue);\n // 2.2) Cant type non-allowed characters\n if (!isAllowedCharacter(displayValue)) {\n return userCantWriteNonAllowedCharacters(displayValue);\n }\n // 2) then prettify\n return rawToPretty({\n value: convertedNumberFromEditToRaw,\n numberFormat,\n style\n });\n}\n\n/**\n * Some values are rendered as exceptions,\n * because of a custom precision on the number of decimals.\n * @param {[type]} value [description]\n * @param {[type]} numberFormat [description]\n * @param {[type]} precision [description]\n * @return {String} [description]\n */\nexport function localizeNumberWithCustomPrecision(\n value,\n numberFormat,\n precision,\n display\n) {\n const exception = rawToPrettyExceptionHandler(value, display, null);\n return !exception\n ? localizeNumber(value, numberFormat, {\n minimumFractionDigits: precision,\n style: display\n }).displayValue\n : exception.displayValue;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { rawToPretty } from '../../Cell/conversions';\n\nconst TableRowNameSubLabelAttribute = ({ ...props }) => (\n \n {props.translate(props.attribute.name)}{' '}\n {\n rawToPretty({\n type: props.attribute.type,\n exception: props.attribute.exception,\n value: props.attribute.value,\n style: props.attribute.display,\n numberFormat: props.numberFormat\n }).displayValue\n }\n \n);\n\nTableRowNameSubLabelAttribute.propTypes = {\n translate: PropTypes.func.isRequired,\n attribute: PropTypes.object,\n numberFormat: PropTypes.string\n};\n\nTableRowNameSubLabelAttribute.defaultProps = {\n attribute: '',\n numberFormat: undefined\n};\n\nexport const TableRowNameSubLabel = ({\n row,\n rowIndex,\n numberFormat,\n translate\n}) => (\n
\n {row.label.attributes.map((attribute, attributeIndex) => (\n \n ))}\n
\n);\n\nTableRowNameSubLabel.propTypes = {\n row: PropTypes.object.isRequired,\n numberFormat: PropTypes.string.isRequired,\n rowIndex: PropTypes.number,\n translate: PropTypes.func.isRequired\n};\n\nTableRowNameSubLabel.defaultProps = {\n rowIndex: 0\n};\n","import React from 'react';\nimport { Table } from 'semantic-ui-react';\n\nimport { TableRowNamePropTypes } from '../types';\n\nimport { TableRowNameSubLabel } from './TableRowNameSubLabel';\n\nexport const TableRowName = ({\n row,\n rowIndex,\n hasDefinition,\n numberFormat,\n sidePanelId,\n translate,\n toggleSidePanel\n}) => (\n toggleSidePanel({ sidePanelId })}\n >\n {translate(row.name)}\n {row.label && (\n \n )}\n \n);\n\nTableRowName.propTypes = TableRowNamePropTypes;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.css';\nimport iconDown from './icon_down.svg';\nimport iconUp from './icon_up.svg';\nimport iconIrrelevant from './icon_irrelevant.svg';\nimport iconBlank from './icon_blank.svg';\n\nconst IconPerformance = ({ icon }) => {\n if (icon) {\n switch (icon) {\n case 'up':\n return (\n \n );\n\n case 'down':\n return (\n \n );\n\n case 'irrelevant':\n return (\n \n );\n\n case 'blank':\n return (\n \n );\n\n default:\n return (\n \n );\n }\n }\n return
;\n};\n\nIconPerformance.propTypes = { icon: PropTypes.string };\nIconPerformance.defaultProps = { icon: null };\n\nexport default IconPerformance;\n","/**\n * Placeholder to determine which CSS classes should be enabled,\n * depending on the Cell's state.\n */\nexport function shouldCellBeHighlighted(isFocused) {\n return isFocused ? 'isHighlighted' : null;\n}\n\n/**\n * [shouldCellShowWarningBackground description]\n * @param {[type]} error [description]\n * @return {[type]} [description]\n */\nexport function shouldCellShowErrorBackground(error) {\n return error ? error.type : null;\n}\n\nexport function shouldCellBeStyled(cellStyle) {\n let style = '';\n\n if (cellStyle && cellStyle.bold) style = 'bold';\n if (cellStyle && cellStyle.relevance) {\n style = `${style} ${cellStyle.relevance}`;\n }\n\n return style;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Table } from 'semantic-ui-react';\nimport IconPerformance from '../IconPerformance';\nimport { rawToPretty } from './conversions';\nimport { shouldCellBeStyled } from './styling';\nimport './ReadOnlyCell.css';\nimport Tooltip from '../Tooltip';\n\nexport class ReadOnlyCell extends PureComponent {\n static propTypes = {\n error: PropTypes.object,\n display: PropTypes.string,\n icon: PropTypes.string,\n styleProperties: PropTypes.object,\n numberFormat: PropTypes.string\n };\n\n static defaultProps = {\n display: 'decimal',\n error: null,\n icon: null,\n styleProperties: null,\n numberFormat: 'da-DK'\n };\n\n render() {\n const { styleProperties, error, display, icon, numberFormat } = this.props;\n\n return (\n \n
\n
\n {error ? (\n \n ) : null}\n
\n
\n {\n rawToPretty({\n ...this.props,\n style: display,\n numberFormat\n }).displayValue\n }\n \n
\n
\n \n );\n }\n}\n\nconst mapStateToProps = state => ({ numberFormat: state.client.number_format });\nexport default connect(mapStateToProps)(ReadOnlyCell);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Table } from 'semantic-ui-react';\nimport IconPerformance from '../IconPerformance';\nimport { localizeNumberWithCustomPrecision } from './conversions';\nimport Tooltip from '../Tooltip';\nimport { shouldCellBeStyled } from './styling';\nimport './ExceptionCell.css';\n\n/**\n * There are multiple types of exceptions.\n * Check the components/Cell/README.md\n * @param {[type]} exception [description]\n * @param {[type]} value [description]\n * @return {[type]} [description]\n */\nexport function determineValueToBeRendered(\n exception,\n value,\n numberFormat,\n precision,\n display\n) {\n return exception === 'fullNumber'\n ? // if it is a full number, localize with 4 decimals\n localizeNumberWithCustomPrecision(value, numberFormat, precision, display)\n : exception;\n}\n\nconst ExceptionCell = ({\n cellIndex,\n error,\n styleProperties,\n exception,\n value,\n numberFormat,\n display,\n icon\n}) => (\n \n
\n
{error && }
\n\n
\n {determineValueToBeRendered(exception, value, numberFormat, 4, display)}\n \n
\n
\n \n);\n\nExceptionCell.propTypes = {\n exception: PropTypes.string.isRequired,\n value: PropTypes.number,\n display: PropTypes.string.isRequired,\n cellIndex: PropTypes.number.isRequired,\n error: PropTypes.object,\n icon: PropTypes.string,\n numberFormat: PropTypes.string,\n styleProperties: PropTypes.object\n};\n\nExceptionCell.defaultProps = {\n value: undefined,\n icon: null,\n error: null,\n numberFormat: 'da-DK',\n styleProperties: undefined\n};\n\nconst mapDispatchToProps = state => ({\n numberFormat: state.client.number_format\n});\n\nexport default connect(mapDispatchToProps)(ExceptionCell);\n","import React, { PureComponent } from 'react';\nimport { Loader } from 'semantic-ui-react';\nimport Tooltip from '../Tooltip';\n\nconst Spinner = () => (\n \n);\n\nexport default class IconArea extends PureComponent {\n state = {\n ...this.props\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ ...nextProps });\n }\n\n render() {\n const { error, isLoading } = this.state;\n // Show an error if needed\n if (error && !isLoading) {\n return (\n \n );\n }\n // Show loading icon when Cell component is doing backend API calls\n if (isLoading) return ;\n // Show nothing\n return null;\n }\n}\n","import memoizeFormatConstructor from 'intl-format-cache';\n// We want to memoize the Int.NumberFormat instance, so that the object is\n// not instantiated everytime.\nconst getNumberFormat = memoizeFormatConstructor(Intl.NumberFormat);\n\n// Default values, will be hooked to a store when auth* is in place.\nconst language = 'da-DK';\n\nexport function formatPrecisionDecimal(value, precision) {\n const localOptions = {\n style: 'decimal',\n maximumFractionDigits: precision,\n minimumFractionDigits: 0\n };\n return getNumberFormat(language, localOptions).format(\n value.toFixed(precision)\n );\n}\n\nexport function formatPercentage(value) {\n const localOptions = {\n style: 'percent',\n maximumFractionDigits: 1,\n minimumFractionDigits: 1\n };\n return getNumberFormat(language, localOptions).format(value);\n}\n\n/**\n * Strips values from thousands separators,\n * so it can be parsed in the number format for the FormatNumber function.\n * @param {String} value []\n * @return {String} []\n */\nexport function fromLocalizedStringToRawNumber(value) {\n return value !== 0\n ? parseFloat(value.replace(/[.]/g, '').replace(/[,]/g, '.'))\n : value;\n}\n","import { get, put } from 'axios';\nimport translateRawText from '../../../helpers/conversions/formatText';\nimport { getClientId } from '../../../services/navigation/routeMapping';\nimport { preparePayload } from './integrations';\nimport { appHasErrorAfterFetch } from '../../../components/App/actions';\nimport {\n APP_INIT_FETCHING_INITIAL_DATA,\n APP_STOP_FETCHING_INITIAL_DATA\n} from '../../../components/App/actionTypes';\nimport { getCommentsData } from '../../../components/Comments/actions';\n\nexport const CONVERT_RAW_DATA_INTO_GRAPH_DATA =\n 'SIMULATION_CONVERT_RAW_DATA_INTO_GRAPH_DATA';\nexport const REPORT_SIMULATION_ERROR_FETCH_DATA = 'SIMULATION_ERROR_FETCH_DATA';\nexport const REPORT_SIMULATION_ERROR_UPDATE_CELL_VALUE =\n 'SIMULATION_ERROR_UPDATE_CELL_VALUE';\nexport const REPORT_SIMULATION_INIT_FETCH_DATA = 'SIMULATION_INIT_FETCH_DATA';\nexport const REPORT_SIMULATION_INIT_UPDATE_CELL_VALUE =\n 'SIMULATION_INIT_UPDATE_CELL_VALUE';\nexport const REPORT_SIMULATION_SUCCESS_FETCH_DATA =\n 'SIMULATION_SUCCESS_FETCH_DATA';\nexport const REPORT_SIMULATION_UPDATE_CELL_VALUE =\n 'SIMULATION_UPDATE_CELL_VALUE';\nexport const REPORT_SIMULATION_CLEAR_DATA = 'SIMULATION_CLEAR_DATA';\n\n/**\n * Line colors have specific requirements.\n * For example, the most proeminent color is blue\n * and is assigned to the first row.\n * @param {Number} rowIndex [The index will determine the color]\n * @return {String} [A color code is returned.]\n */\nexport function determineColorOfBar(rowIndex) {\n switch (rowIndex) {\n case 0:\n return '#3b4856';\n case 1:\n return '#FED551';\n default:\n return '#2F2F2B';\n }\n}\n\nfunction initFetchData() {\n return {\n type: REPORT_SIMULATION_INIT_FETCH_DATA,\n payload: {\n sections: [],\n isLoading: true\n }\n };\n}\n\nexport function successFetchData(response) {\n return {\n type: REPORT_SIMULATION_SUCCESS_FETCH_DATA,\n payload: {\n ...response,\n isLoading: false\n }\n };\n}\n\nfunction errorFetchData(error) {\n return {\n type: REPORT_SIMULATION_ERROR_FETCH_DATA,\n payload: { ...error }\n };\n}\n\nexport const fetchSimulationTablesData = () => (dispatch, getState) => {\n dispatch({ type: APP_INIT_FETCHING_INITIAL_DATA });\n dispatch(initFetchData());\n\n const clientId = getClientId(getState().router.location);\n\n get(`${API_URL}/clients/${clientId}/reports/simulation_analysis`)\n .then(response => {\n dispatch({ type: APP_STOP_FETCHING_INITIAL_DATA });\n dispatch(successFetchData(response.data.simulation_analysis));\n })\n .catch(error => {\n // internal error action\n dispatch(errorFetchData(error));\n // global error actions\n dispatch(appHasErrorAfterFetch(error));\n });\n};\n\nexport const fetchSimulationData = () => dispatch =>\n Promise.all([\n dispatch(fetchSimulationTablesData()),\n dispatch(getCommentsData())\n ]);\n\nfunction errorUpdateCellValue(error) {\n return {\n type: REPORT_SIMULATION_ERROR_UPDATE_CELL_VALUE,\n error\n };\n}\n\nfunction initUpdateCellValue(sectionIndex, rowIndex, cellIndex, value) {\n return {\n type: REPORT_SIMULATION_INIT_UPDATE_CELL_VALUE,\n payload: {\n isLoading: true,\n sectionIndex,\n rowIndex,\n cellIndex,\n value\n }\n };\n}\n\nexport function updateCellValue(\n sectionIndex,\n rowIndex,\n cellIndex,\n value,\n sectionName,\n rowName\n) {\n return (dispatch, getState) => {\n dispatch(initUpdateCellValue(sectionIndex, rowIndex, cellIndex, value));\n const payload = preparePayload(sectionName, rowName, value);\n // This is temporary, until the authentication hook is ready,\n // which returns the clientID.\n const clientId = getClientId(getState().router.location);\n\n return put(\n `${API_URL}/clients/${clientId}/reports/simulation_analysis`,\n payload\n )\n .then(response =>\n dispatch(successFetchData(response.data.simulation_analysis))\n )\n .catch(e => dispatch(errorUpdateCellValue(e)));\n };\n}\n\nexport function updateSectionsData(response) {\n return {\n type: REPORT_SIMULATION_UPDATE_CELL_VALUE,\n payload: response\n };\n}\n\n/**\n * The response from the server has a format that needs to\n * be adapted to the format of the bar chart.\n * This chart has a different format than the ones in management/budget report views.\n * @param {Object} section [Contains all the data from the tables and charts]\n * @return {Object} [Sending the payload to the reducer]\n */\nexport function convertRawDataIntoGraphData(section) {\n return (dispatch, getState) => {\n const state = getState();\n const dataLabels = [];\n // New array to store the transposed values.\n const dataArray = [[], []];\n const xxLabels = section.rows.map((rowData, rowIndex) => {\n // Updating the label names.\n dataLabels.push(section.header[rowIndex]);\n // Transposing the array.\n rowData.cells.map((cell, cellIndex) => {\n // Removing the 'afvigelse' column from the array.\n if (cellIndex < 2 && cell) {\n return dataArray[cellIndex].push(Math.round(cell.value));\n }\n return null;\n });\n // ...and return the xLabels.\n return translateRawText(state, rowData.name);\n }, []);\n\n const datasets = dataArray.map(\n (data, index) => ({\n data,\n label: dataLabels[index],\n backgroundColor: determineColorOfBar(index)\n }),\n []\n );\n\n return dispatch({\n type: CONVERT_RAW_DATA_INTO_GRAPH_DATA,\n payload: {\n [section.name]: {\n labels: xxLabels,\n datasets\n }\n }\n });\n };\n}\n","import { fromLocalizedStringToRawNumber } from '../../../helpers/conversions/formatNumber';\n\nexport function preparePayload(sectionName, rowName, value) {\n return {\n simulation_analysis: {\n [sectionName]: {\n [rowName]: fromLocalizedStringToRawNumber(value)\n }\n }\n };\n}\n","import { getTranslate } from 'react-localize-redux';\n\n/**\n * Because we need to directly translate the text and what to use getTranslate,\n * from the react-localize-redux package. But that function translates a React Element,\n * and not a string.\n * This functions translates directly.\n *\n * @param {Object} state\n * @param {String} text\n * @returns {String} text\n */\nexport default function translateRawText(state, text) {\n try {\n if (text) {\n return getTranslate(state.locale)(text);\n }\n } catch (e) {\n return `${e.toString()} Trying to translate: ${text}`;\n }\n\n return null;\n}\n","import axios from 'axios';\nimport { getClientId } from '../../../services/navigation/routeMapping';\nimport { appHasErrorAfterFetch } from '../../../components/App/actions';\nimport {\n APP_INIT_FETCHING_INITIAL_DATA,\n APP_STOP_FETCHING_INITIAL_DATA\n} from '../../../components/App/actionTypes';\nimport {\n configForRequestFetchForecastData,\n cleanUpResponse\n} from './integration';\n\nexport const FORECAST_FETCH_DATA_INIT = 'FORECAST_FETCH_DATA_INIT';\nexport const FORECAST_FETCH_DATA_SUCCESS = 'FORECAST_FETCH_DATA_SUCCESS';\nexport const FORECAST_FETCH_DATA_ERROR = 'FORECAST_FETCH_DATA_ERROR';\n\nexport function errorFetchingData(error) {\n return dispatch => {\n // global error actions\n dispatch(appHasErrorAfterFetch(error));\n\n return { type: FORECAST_FETCH_DATA_ERROR };\n };\n}\n\nexport function successFetchForecastData(response) {\n const sanitizedResponse = cleanUpResponse(response);\n return {\n type: FORECAST_FETCH_DATA_SUCCESS,\n payload: { ...sanitizedResponse }\n };\n}\n\nexport function fetchForecastData() {\n return (dispatch, getState) => {\n const clientID = getClientId(getState().router.location);\n dispatch({ type: APP_INIT_FETCHING_INITIAL_DATA });\n dispatch({ type: FORECAST_FETCH_DATA_INIT });\n\n axios(configForRequestFetchForecastData(clientID))\n .then(response => {\n dispatch({ type: APP_STOP_FETCHING_INITIAL_DATA });\n dispatch(successFetchForecastData(response));\n })\n .catch(error => {\n dispatch(errorFetchingData(error));\n });\n };\n}\n","/**\n * Configuration for the initial request of data in the forecast view.\n * @param {?String/Number} clientID\n */\nexport function configForRequestFetchForecastData(clientID) {\n const url = `/clients/${clientID}/reports/forecast_analysis`;\n return {\n method: 'GET',\n url,\n baseURL: API_URL\n };\n}\n\n/**\n * Response sanitization of data.\n * @param {Object} response\n */\nexport function cleanUpResponse(response) {\n return {\n clientID: response.data.forecast_analysis.client_id,\n fiscalYear: response.data.forecast_analysis.fiscal_year,\n sections: response.data.forecast_analysis.sections\n };\n}\n","export const SUCCESS_FETCH_DATA_INPUT = 'SUCCESS_FETCH_DATA_INPUT';\nexport const WIPE_DATA_INPUT = 'WIPE_DATA_INPUT';\n","import * as types from './actionTypes';\n\nexport const setGlobalState = response => ({\n type: types.SUCCESS_FETCH_DATA_INPUT,\n payload: response\n});\n\nexport const wipeGlobalState = {\n type: types.WIPE_DATA_INPUT\n};\n","export function sanitizeResponseOfGetData(response) {\n const { current_fiscal_year: currentFiscalYear, sections, years } = response[\n 'accounting_year/list'\n ];\n\n return {\n currentFiscalYear,\n years,\n sections\n };\n}\n","export function determineIsBudgetScreen(view) {\n if (view && view.includes('/') === false) {\n throw new Error(\n 'The `view` argument in determineIsBudgetScreen needs to be preceded by a front slash'\n );\n }\n\n switch (view) {\n case '/input_data':\n return false;\n\n case '/input_budget':\n return true;\n\n default:\n return false;\n }\n}\n\nexport const convertViewNameToKind = ({ viewName }) =>\n viewName === '/input_budget' ? 'budget' : 'actual';\n","import { economicLogo, virkLogo } from '../../shared';\nimport { VIRK } from '../constants';\n\nconst determineImageProperties = integration => {\n switch (integration) {\n case VIRK:\n return {\n src: virkLogo,\n width: '100px'\n };\n\n // e-conomic\n default:\n return {\n src: economicLogo,\n width: '200px'\n };\n }\n};\n\nexport { determineImageProperties };\n","import { determineIsBudgetScreen } from '../helpers';\nimport { INPUT_DATA_START_YEAR, extractYearFromURL } from '../../../helpers';\nimport { getClientId } from '../../../services/navigation/routeMapping';\n\nexport function getDataApiUrl(location, isPUT, yearBeingEdited) {\n const { pathname } = location;\n\n if (!location || !location.pathname || !location.search)\n throw new Error(\n 'Missing either location, pathname and/or clientId when generating the api data url'\n );\n\n const kind = determineIsBudgetScreen(pathname) ? 'budget' : 'actual';\n const year = isPUT\n ? yearBeingEdited\n : extractYearFromURL({ location }) || INPUT_DATA_START_YEAR;\n const clientId = getClientId(location);\n\n return `${API_URL}/clients/${clientId}/accounting_years/${kind}/${year}`;\n}\n","/**\n * Placeholder for preparing payloads, preparing responses, and any other data sanitization\n * when communication backend <-> frontend.\n */\nimport {\n INPUT_BUDGET_ROUTE_NAME,\n INPUT_DATA_ROUTE_NAME,\n SIMULATION_REPORT_ROUTE_NAME,\n FORECAST_ROUTE_NAME\n} from '../../services/navigation';\nimport { convertViewNameToKind } from '../../screens/Input/helpers';\nimport { getDataApiUrl } from '../../screens/Input/api/requests';\n\nexport function isInputScreen(viewName) {\n return (\n viewName === INPUT_BUDGET_ROUTE_NAME || viewName === INPUT_DATA_ROUTE_NAME\n );\n}\n\n/**\n * Ensures the backend receives value, id and all needed.\n *\n * Note: when the value is -0, a JSON.stringify() will 'convert' it to 0.\n * Because JSON.stringify is needed on the XHR calls, then the workaround is to flag\n * the payload with a boolean, to cover for the -0 case.\n *\n * @param {Number} value\n * @param {String} id [cell position]\n * @return {Object}\n */\nexport function preparePayload({\n rawValue,\n reference,\n viewName,\n currentFiscalYear,\n clientId,\n rowName\n}) {\n let payload = {\n id: reference,\n client_id: Number.parseInt(clientId, 10),\n cell_value: {\n value: rawValue,\n negative_zero: Object.is(rawValue, -0),\n row_name: rowName\n }\n };\n\n if (isInputScreen(viewName)) {\n payload = {\n ...payload,\n current_fiscal_year: currentFiscalYear,\n year: currentFiscalYear,\n kind: convertViewNameToKind({ viewName })\n };\n }\n\n if (reference) {\n payload = {\n ...payload,\n id: reference\n };\n }\n\n return payload;\n}\n\nexport function getCoordX(id) {\n return parseInt(id.split(',')[0], 10);\n}\n\n/**\n * The API call method depends on the fact if the id of the cell exists.\n * @param {String} id [cell identifier (includes coordinates)]\n * @return {String} [method]\n */\nexport function determineMethodType({ reference, viewName }) {\n return viewName === FORECAST_ROUTE_NAME ||\n viewName === SIMULATION_REPORT_ROUTE_NAME ||\n reference\n ? 'put'\n : 'post';\n}\n\n/**\n * The year being edited refers to the year correspondent\n * of the cell whose value is going to be sent to the backend.\n *\n * Because we only know the full array of years (available years),\n * and the current fiscal year, we need to use the position of the cell\n * to determine which year is being edited.\n *\n */\nexport const determineYearBeingEdited = ({\n currentFiscalYear,\n positionOfYearBeingEdited,\n availableYears,\n viewName\n}) => {\n /**\n * The /input_budget only display one, which then we'll need only\n * the current fiscal year.\n */\n if (viewName === INPUT_BUDGET_ROUTE_NAME) return currentFiscalYear;\n\n /**\n * The /input_screen displays 5 years each time. The last year\n * being displayed is the current fiscal year. So the logic is to\n * slice the available years in an array of 5 years,\n * and use the position to determine which year in the array of 5 years\n * it corresponds to.\n */\n return (\n availableYears\n /**\n * sorting will avoid any mistakes in case the avaiable as another\n * order than expected.\n */\n .sort()\n .slice(\n Math.max(availableYears.indexOf(currentFiscalYear - 4), 0),\n availableYears.indexOf(currentFiscalYear) + 1\n )[positionOfYearBeingEdited]\n );\n};\n\nconst determineInputScreenAPIurl = ({\n viewName,\n reference,\n id,\n years,\n currentFiscalYear\n}) => {\n const yearBeingEdited = determineYearBeingEdited({\n viewName,\n currentFiscalYear,\n availableYears: years,\n positionOfYearBeingEdited: getCoordX(id)\n });\n\n const apiPath = reference\n ? `accounting_values/${reference}`\n : 'accounting_values';\n\n return `${getDataApiUrl(window.location, true, yearBeingEdited)}/${apiPath}`;\n};\n\n/**\n * The API URL changes depending on the view.\n */\nexport function determineAPIurlForCellSubmitValue({\n clientId,\n currentFiscalYear,\n id,\n reference,\n viewName,\n years\n}) {\n if (viewName === SIMULATION_REPORT_ROUTE_NAME) {\n return `${API_URL}/clients/${clientId}/reports/simulation_analysis`;\n }\n\n if (isInputScreen(viewName)) {\n return determineInputScreenAPIurl({\n clientId,\n viewName,\n reference,\n years,\n id,\n currentFiscalYear\n });\n }\n\n if (viewName === FORECAST_ROUTE_NAME) {\n return `${API_URL}/clients/${clientId}/reports/forecast_analysis`;\n }\n\n return null;\n}\n","import axios from 'axios';\nimport { successFetchData } from '../../screens/Analysis/Simulation/actions';\nimport { successFetchForecastData } from '../../screens/Analysis/Forecast/actions';\nimport { setGlobalState } from '../../screens/Input/actions';\nimport { sanitizeResponseOfGetData } from '../../screens/Input/api/responses';\nimport { getClientId } from '../../services/navigation/routeMapping';\nimport {\n preparePayload,\n determineAPIurlForCellSubmitValue,\n determineMethodType,\n isInputScreen\n} from './integration';\nimport {\n SIMULATION_REPORT_ROUTE_NAME,\n FORECAST_ROUTE_NAME\n} from '../../services/navigation';\n\nexport const CELL_EVENT_END_SUBMIT = 'CELL_EVENT_END_SUBMIT';\nexport const CELL_EVENT_INIT_SUBMIT = 'CELL_EVENT_INIT_SUBMIT';\nexport const CELL_EVENT_SIMULATION_SUCCESS_PUT =\n 'CELL_EVENT_SIMULATION_SUCCESS_PUT';\nexport const CELL_EVENT_TOGGLE_EDITING = 'CELL_EVENT_TOGGLE_EDITING';\nexport const CELL_EVENT_UNTOGGLE_EDITING = 'CELL_EVENT_UNTOGGLE_EDITING';\nexport const REPORT_SIMULATION_SUCCESS_FETCH_DATA =\n 'REPORT_SIMULATION_SUCCESS_FETCH_DATA';\nexport const CELL_EVENT_NOTHING_TO_UPDATE = 'CELL_EVENT_NOTHING_TO_UPDATE';\nexport const CELL_EVENT_UPDATE_POSITION = 'CELL_EVENT_UPDATE_POSITION';\nexport const CELL_EVENT_REMOVE_HIGHTLIGHT = 'CELL_EVENT_REMOVE_HIGHTLIGHT';\n\n/**\n * Init\n */\nexport function startLoading({ ...cellState }) {\n return {\n type: CELL_EVENT_INIT_SUBMIT,\n payload: {\n ...cellState,\n isLoading: true\n }\n };\n}\n\nfunction nothingToUpdate() {\n return { type: CELL_EVENT_NOTHING_TO_UPDATE };\n}\n\n/**\n * Re-uses the actions of each view,\n * in order to trigger a specific reducer update.\n */\nexport const successResponseHandler = response => (dispatch, getState) => {\n const state = getState();\n const currentRoute = state.router.location.pathname;\n const { data } = response;\n // eslint-disable-next-line\n const { simulation_analysis } = data;\n\n if (isInputScreen(currentRoute)) {\n return dispatch(setGlobalState(sanitizeResponseOfGetData(data)));\n }\n\n if (currentRoute === SIMULATION_REPORT_ROUTE_NAME) {\n return dispatch(successFetchData(simulation_analysis));\n }\n\n if (currentRoute === FORECAST_ROUTE_NAME) {\n return dispatch(successFetchForecastData(response));\n }\n\n return { type: CELL_EVENT_NOTHING_TO_UPDATE };\n};\n\nexport function stopLoading() {\n return {\n type: CELL_EVENT_END_SUBMIT,\n payload: { isLoading: false }\n };\n}\n\nexport function triggerCellSubmit({ ...cellState }, viewName) {\n // id is the position of the cell.\n const { rawValue, value, id, reference, rowName } = cellState;\n\n return (dispatch, getState) => {\n const { inputData, router } = getState();\n const { years, currentFiscalYear } = inputData;\n\n const clientId = getClientId(router.location);\n dispatch(startLoading(cellState));\n\n // Don't do any updates if the values are the same.\n if (Object.is(rawValue, value)) return dispatch(nothingToUpdate());\n\n // If values are different, prepare payload\n const payload = preparePayload({\n rawValue,\n reference,\n viewName,\n currentFiscalYear,\n clientId,\n rowName\n });\n\n /**\n * For all other screens with cell updates,\n * this is handled in the \"legacy\" way (using actions/reducers to store data).\n */\n return axios({\n method: determineMethodType({ reference, viewName }),\n url: determineAPIurlForCellSubmitValue({\n clientId,\n viewName,\n id,\n years,\n reference,\n currentFiscalYear\n }),\n data: payload\n }).then(response => {\n dispatch(successResponseHandler(response));\n\n return dispatch(stopLoading(cellState));\n });\n };\n}\n\nexport function updateEditedCellPosition(id, sectionIndex, rowIndex) {\n return dispatch =>\n dispatch({\n type: CELL_EVENT_UPDATE_POSITION,\n payload: {\n cellBeingEdited: id,\n sectionBeingEdited: sectionIndex,\n rowBeingEdited: rowIndex\n }\n });\n}\n","/**\n * Keyboard events.\n */\n\n/**\n * [moveToCellBelow description]\n * @param {[type]} id [description]\n * @return {[type]} [description]\n */\nexport function moveToCellBelow(currentPosition) {\n const coordXX = currentPosition.split(',')[0];\n const coordYY = currentPosition.split(',')[1];\n const positionBelow = `${coordXX},${(parseInt(coordYY, 10) + 1).toString()}`;\n\n return positionBelow;\n}\n\n/**\n * [moveToCellAbove description]\n * @param {[type]} currentPosition [description]\n * @return {[type]} [description]\n */\nexport function moveToCellAbove(currentPosition) {\n const coordXX = currentPosition.split(',')[0];\n const coordYY = currentPosition.split(',')[1];\n const positionAbove = `${coordXX},${(parseInt(coordYY, 10) - 1).toString()}`;\n\n return positionAbove;\n}\n\n/**\n * [moveToCellOnTheRight description]\n * @param {[type]} currentPosition [description]\n * @return {[type]} [description]\n */\nexport function moveToCellOnTheRight(currentPosition) {\n const coordXX = currentPosition.split(',')[0];\n const coordYY = currentPosition.split(',')[1];\n const positionOnTheRight = `${(\n parseInt(coordXX, 10) + 1\n ).toString()},${coordYY}`;\n\n return positionOnTheRight;\n}\n\n/**\n *\n * @param {String} currentPosition\n * @returns positionOnTheLeft\n */\nexport function moveToCellOnTheLeft(currentPosition) {\n const coordXX = currentPosition.split(',')[0];\n const coordYY = currentPosition.split(',')[1];\n const positionOnTheLeft = `${(\n parseInt(coordXX, 10) - 1\n ).toString()},${coordYY}`;\n\n return positionOnTheLeft;\n}\n\n/**\n * Mostly useful for the 'Tab' key.\n * When the end of the row is reached,\n * the focused cell should be the first of the next\n * @return {[type]} [description]\n */\nexport function moveToRowBelowWhenEndWasReached(currentPosition) {\n const coordXX = '0';\n const coordYY = currentPosition.split(',')[1];\n\n const cellOnFirstPositionOfRowBelow = `${coordXX},${(\n parseInt(coordYY, 10) + 1\n ).toString()}`;\n return cellOnFirstPositionOfRowBelow;\n}\n\nexport function handleTabKeyPress(e, currentPosition) {\n e.preventDefault();\n const newPosition = moveToCellOnTheRight(currentPosition);\n const cellToTheRight = document.getElementById(newPosition);\n\n // If focus reached end of row\n if (!cellToTheRight) {\n // try to jump to first cell of row underneath\n try {\n const cellOnFirstPositionOfRowBelow = document.getElementById(\n moveToRowBelowWhenEndWasReached(currentPosition)\n );\n\n return cellOnFirstPositionOfRowBelow.focus();\n } catch (error) {\n // otherwise, remove focus.\n return e.target.blur();\n }\n }\n\n return document.getElementById(newPosition).focus();\n}\n\nexport function handleShiftTabKeyPress(e, currentPosition) {\n const newPosition = moveToCellOnTheLeft(currentPosition);\n return document.getElementById(newPosition).focus();\n}\n\n/**\n *\n * @param {[type]} e [description]\n * @param {[type]} currentPosition [description]\n * @return {[type]} [description]\n */\nexport function moveCell(e, currentPosition) {\n e.preventDefault();\n let newPosition;\n // Shift+tab key combination.\n if (e.shiftKey && e.keyCode === 9)\n return handleShiftTabKeyPress(e, currentPosition);\n // Move the cell focus one row down\n if (e.key === 'Enter' || e.key === 'ArrowDown')\n newPosition = moveToCellBelow(currentPosition);\n if (e.key === 'ArrowUp') newPosition = moveToCellAbove(currentPosition);\n // On Tab key press, move to the right or jump row\n if (e.keyCode === 9) return handleTabKeyPress(e, currentPosition);\n\n try {\n // change focus\n document.getElementById(newPosition).focus();\n } catch (error) {\n // if next element doesn't exist, just lose cell focus\n e.target.blur();\n }\n\n return newPosition;\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport IconArea from './IconArea';\nimport * as actions from './actions';\nimport { rawToPretty, rawToEditing, editingToPretty } from './conversions';\nimport {\n shouldCellBeHighlighted,\n shouldCellShowErrorBackground\n} from './styling';\nimport { showCorrectPlaceholder } from './exceptions';\nimport { moveCell } from './events';\nimport './index.css';\n\nexport class Cell extends React.Component {\n static propTypes = {\n error: PropTypes.object,\n id: PropTypes.string,\n triggerCellSubmit: PropTypes.func,\n viewName: PropTypes.string\n };\n\n static defaultProps = {\n error: null,\n id: undefined,\n triggerCellSubmit: undefined,\n viewName: 'input_data'\n };\n\n constructor(props) {\n super(props);\n // Prettify props right away\n const prettyfiedFormat = rawToPretty(props);\n\n this.state = {\n ...props,\n ...prettyfiedFormat,\n error: props.error,\n isLoading: false,\n isFocused: false\n };\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n return this.setState({\n // updating and prettifying the cell value\n ...rawToPretty(nextProps),\n // Backend validation hooked to the view\n error: nextProps.error\n });\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const hasDisplayValueChanged =\n this.state.displayValue !== nextState.displayValue;\n const isCellHighlighted = this.state.isFocused !== nextState.isFocused;\n const hasChangedLoadingState = this.state.isLoading !== nextState.isLoading;\n const hasNewErrors = this.props.error !== nextProps.error;\n\n return (\n hasDisplayValueChanged ||\n isCellHighlighted ||\n hasChangedLoadingState ||\n hasNewErrors\n );\n }\n\n /**\n * Formatting should not happen here.\n * @param {Object} e [event attached to the target]\n * @return {[type]} [description]\n */\n onChange(e) {\n this.setState({ displayValue: e.target.value });\n }\n\n /**\n * Trigger number formating.\n * @param {Object} e\n * @return {Object} [returns the new state object]\n */\n onFocus(e) {\n e.persist();\n\n // 'raw' to 'editing' conversion\n const editingFormat = rawToEditing(this.state);\n const updatedStateOnFocus = {\n // Use the props to update the state.\n ...this.props,\n // Use the return of the rawToEditing function to update the state too.\n ...editingFormat,\n error: null,\n isFocused: true\n };\n\n // Updating state and selecting the text\n this.setState(updatedStateOnFocus, () => e.target.select());\n return updatedStateOnFocus;\n }\n\n /**\n * Triggers number formating with a cell update.\n * @param {Object} e\n * @return {Object} [returns the new state object]\n */\n onBlur(e) {\n // Init request\n e.persist();\n e.preventDefault();\n const editToPrettyFormat = editingToPretty(this.state);\n const updatedStateOnBlur = {\n ...this.props,\n ...editToPrettyFormat,\n isLoading: true\n };\n\n // triggering cell submit using the setState function callback\n this.setState(updatedStateOnBlur, async () => {\n // Persist value in case there were changes\n await this.props.triggerCellSubmit(this.state, this.props.viewName);\n // after request is resolved, stop loading\n await this.setState({\n isLoading: false,\n isFocused: false\n });\n });\n return updatedStateOnBlur;\n }\n\n /**\n * Key event listeners placeholder.\n * @param {Object} e\n */\n onKeyDown(e) {\n e.persist();\n const shiftTabCombination = e.shiftKey && e.keyCode === 9;\n // Checks for the navigational keys determined in the use cases.\n const shouldCellMovePlace =\n e.key === 'Enter' ||\n e.key === 'ArrowDown' ||\n e.key === 'ArrowUp' ||\n e.keyCode === 9 ||\n shiftTabCombination;\n // Pressing 'Esc' support\n const shouldValueBeRevertedToOriginal = e.keyCode === 27;\n // When navigating outside the cell (aka onBlur), trigger a cell update.\n if (shouldCellMovePlace) moveCell(e, this.props.id);\n // When 'Escape' is pressed, only the displayValue has changed in the state.\n // But the value (what is received from props) and rawValue remain the same.\n // Therefore, because rawToEditing takes a rawValue rather then a display value,\n // that function is enough to rollback to the initial value.\n // Return to previous state and select all text in the cell.\n if (shouldValueBeRevertedToOriginal) {\n this.setState(\n prevState => rawToEditing(prevState),\n () => e.target.select()\n );\n }\n }\n\n render() {\n return (\n \n {this.state.error || this.state.isLoading ? (\n \n ) : null}\n\n localizes -> submits.\n placeholder={showCorrectPlaceholder(this.props.viewName)}\n // keyDown moves to cell below\n type=\"string\"\n value={this.state.displayValue}\n onBlur={e => this.onBlur(e)}\n // 'placeholder' varies depending on the view\n onChange={e => this.onChange(e)}\n // When user changes input value\n onFocus={e => this.onFocus(e)}\n // onClick Toggles 'editing' format.\n onKeyDown={e => this.onKeyDown(e)}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n numberFormat: state.client.number_format,\n viewName: state.router.location.pathname,\n cellBeingEdited: state.cell.cellBeingEdited\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Cell);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'semantic-ui-react';\n\nimport ReadOnlyCell from './ReadOnlyCell';\nimport ExceptionCell from './ExceptionCell';\nimport Cell from '.';\n\nconst CellDispatcher = ({ cell, cellIndex, rowIndex, sectionIndex }) => {\n if (!cell) {\n return ;\n }\n switch (cell.type) {\n case 'editable':\n return (\n \n \n \n );\n case 'exception':\n return (\n \n );\n // default or cell.type === 'normal'\n default:\n return (\n \n );\n }\n};\n\nCellDispatcher.propTypes = {\n cell: PropTypes.object,\n cellIndex: PropTypes.number.isRequired,\n rowIndex: PropTypes.number,\n sectionIndex: PropTypes.number\n};\n\nCellDispatcher.defaultProps = {\n cell: {\n type: 'normal'\n },\n rowIndex: 0,\n sectionIndex: 0\n};\n\nexport default CellDispatcher;\n","import React from 'react';\nimport CellDispatcher from '../../Cell/Dispatcher';\nimport { TableRowCellsPropTypes } from '../types';\n\nexport const TableRowCells = ({ row, rowIndex }) =>\n row.cells.map((cell, cellIndex) => (\n \n ));\n\nTableRowCells.propTypes = TableRowCellsPropTypes;\n","import React from 'react';\nimport { Table } from 'semantic-ui-react';\n\nimport { TableRowName } from './TableRowName';\nimport { TableRowCells } from './TableRowCells';\nimport { TableRowPropTypes } from '../types';\n\nimport './index.css';\n\nexport const TableRow = ({\n row,\n rowIndex,\n style,\n translate,\n numberFormat,\n hasDefinition,\n sidePanelId,\n toggleSidePanel\n}) => (\n \n \n \n \n);\n\nTableRow.propTypes = TableRowPropTypes;\nTableRow.defaultProps = {\n style: '',\n numberFormat: undefined\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'semantic-ui-react';\n\nexport const TableDivider = ({ row }) => (\n \n \n
\n \n {row.cells.map((cell, cellIndex) => (\n \n
\n \n ))}\n \n);\n\nTableDivider.propTypes = {\n row: PropTypes.object.isRequired\n};\n","import React from 'react';\nimport { Table } from 'semantic-ui-react';\nimport { TableRow } from '../TableRow';\nimport { TableDivider } from '../TableDivider';\n\nexport const TableRowDispatcher = ({\n rows,\n translate,\n numberFormat,\n toggleSidePanel\n}) =>\n rows.map((row, rowIndex) => {\n let key = `row-${row.name}-${rowIndex}`;\n\n switch (row.type) {\n case 'divider':\n key = `row-divider-${row.name}-${rowIndex}`;\n return ;\n\n case 'label':\n return (\n \n {translate(row.name)}\n \n );\n\n case 'spacer':\n return ;\n\n default:\n return (\n \n );\n }\n });\n","import React from 'react';\nimport { Table } from 'semantic-ui-react';\n\nimport { TableBodyPropTypes } from '../types';\n\nimport { TableRowDispatcher } from './TableRowDispatcher';\nimport './index.css';\n\nexport const TableBody = ({\n rows,\n translate,\n numberFormat,\n toggleSidePanel\n}) => (\n \n \n \n);\n\nTableBody.propTypes = TableBodyPropTypes;\n","import React from 'react';\n\nimport { optimizedTypeSanitizer } from '../helpers';\nimport { typeSanitizer } from '../../../helpers/translations';\n\nimport { TableTitlePropTypes } from '../types';\nimport './index.css';\n\nexport const TableTitle = ({\n sectionName,\n translate,\n definition,\n showBottomBorder,\n hasDefinition,\n sidePanelId,\n toggleSidePanel\n}) => (\n \n

\n {hasDefinition ? (\n toggleSidePanel({ sidePanelId })}\n >\n {typeSanitizer(translate, 'title', sectionName)}\n \n ) : (\n typeSanitizer(translate, 'title', sectionName)\n )}\n

\n\n {definition && (\n

\n {optimizedTypeSanitizer({\n translate,\n text: definition.text,\n sectionName\n })}\n {definition.readMoreIdKey && (\n \n console.warn(definition.readMoreIdKey)}\n type=\"button\"\n >\n Read more\n \n \n )}\n

\n )}\n
\n);\n\nTableTitle.propTypes = TableTitlePropTypes;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'semantic-ui-react';\nimport CellDispatcher from '../../Cell/Dispatcher';\n\nimport './index.css';\n\nconst SimpleTable = ({ rows }) => (\n \n \n {rows.map((row, rowIndex) => (\n \n {row.name}\n\n {row.cells.map((cell, cellIndex) => (\n \n ))}\n \n ))}\n \n
\n);\n\nSimpleTable.propTypes = {\n rows: PropTypes.array.isRequired\n};\n\nexport { SimpleTable };\n","import React, { Fragment } from 'react';\nimport { Table as SemanticUiTable } from 'semantic-ui-react';\nimport { getTranslate } from 'react-localize-redux';\nimport { connect } from 'react-redux';\n\nimport { toggleDefinitionsPanel } from '../App/actions';\n\nimport { TableHeader } from './TableHeader';\nimport { TableBody } from './TableBody';\nimport { TableCommonPropTypes } from './types';\nimport { TableTitle } from './TableTitle';\n\nimport './index.css';\n\nexport function TableCommon({\n name,\n section,\n translate,\n numberFormat,\n toggleSidePanel\n}) {\n const {\n header,\n subtitle,\n subheader,\n rows,\n definition,\n hasDefinition,\n sidePanelId\n } = section;\n\n return (\n \n \n \n \n \n \n \n );\n}\n\nTableCommon.propTypes = TableCommonPropTypes;\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n numberFormat: state.client.number_format\n});\n\nconst mapDispatchToProps = dispatch => ({\n toggleSidePanel: ({ sidePanelId }) =>\n dispatch(toggleDefinitionsPanel({ sidePanelId }))\n});\n\nexport const Table = connect(\n mapStateToProps,\n mapDispatchToProps\n)(TableCommon);\nexport { SimpleTable } from './SimpleTable';\n","/* eslint-disable react/no-typos */\nimport React, { Component } from 'react';\nimport { string, func, bool } from 'prop-types';\nimport { Modal } from 'semantic-ui-react';\nimport { Translate } from 'react-localize-redux';\n\nimport { LoadingSpinner } from '..';\nimport triangle from './triangle.svg';\nimport close from './close.svg';\nimport './index.css';\n\nexport class ModalConfirmation extends Component {\n state = {\n isLoading: false\n };\n\n onClickSubmitButton = async () => {\n const { showLoading, onClickSubmitButton } = this.props;\n if (showLoading) {\n this.toggleLoading();\n }\n\n await onClickSubmitButton();\n };\n\n toggleLoading = () =>\n this.setState(({ isLoading }) => ({ isLoading: !isLoading }));\n\n render() {\n const {\n contentTitle,\n contentDescription,\n accountName,\n onModalClose,\n isModalOpen,\n onClickCancelButton,\n buttonCancelText,\n buttonSubmitText,\n isWarning,\n showLoading\n } = this.props;\n\n const { isLoading } = this.state;\n\n return (\n \n {isLoading && showLoading && }\n \n \n \"close\"\n \n
\n {isWarning === true ? null : (\n
\n \"alert\"\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}\nModalConfirmation.defaultProps = {\n isWarning: false,\n onClickCancelButton: undefined,\n accountName: '',\n showLoading: false\n};\n\nModalConfirmation.propTypes = {\n buttonCancelText: string.isRequired,\n buttonSubmitText: string.isRequired,\n contentDescription: string.isRequired,\n contentTitle: string.isRequired,\n isModalOpen: bool.isRequired,\n isWarning: bool,\n onClickCancelButton: func,\n onClickSubmitButton: func.isRequired,\n onModalClose: func.isRequired,\n accountName: string,\n showLoading: bool\n};\n\nexport default ModalConfirmation;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { string, func, object, bool } from 'prop-types';\nimport { Input } from 'semantic-ui-react';\nimport { optionalTranslation } from '../../../../helpers/translations';\nimport { Tooltip } from '../../../../components';\nimport * as actions from '../actions';\nimport './index.css';\n\nexport class TextInput extends Component {\n static propTypes = {\n // Text above the input field.\n label: string.isRequired,\n // Text below the input field.\n subLabel: string,\n // Name of the input field. ex: postalCode.\n name: string.isRequired,\n // Type of the input field (text or number).\n type: string,\n // Data relating to the company's details.\n client: object.isRequired,\n // action dispatched to update props upon keydown.\n updateClientDataOnInput: func.isRequired,\n // The form status (ie, input fields are valid).\n form: object.isRequired,\n translate: func.isRequired,\n showTooltip: bool\n };\n\n static defaultProps = {\n subLabel: null,\n type: undefined,\n showTooltip: false\n };\n\n handleChange = event => {\n const { updateClientDataOnInput } = this.props;\n // Name of the input field. ex: postalCode.\n const inputName = event.target.name;\n // The actual value of the input field.\n const inputValue = event.target.value;\n // Dispatching an update to the store.\n updateClientDataOnInput(inputName, inputValue);\n };\n\n /**\n * Only certain fields have validation.\n * This method ensures that only these fields have errors displayed.\n */\n showErrorMessage() {\n const { form, name } = this.props;\n // Ensuring the errors in the form (object) exists\n // && mapping to the right input field name while\n // cheking that the size is bigger than zero.\n return form[name].isInvalid;\n }\n\n render() {\n const {\n translate,\n label,\n name,\n client,\n subLabel,\n type,\n showTooltip\n } = this.props;\n return (\n
\n
\n
\n
\n \n {showTooltip && (\n \n )}\n
\n \n
\n {optionalTranslation(translate, subLabel)}\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n client: state.createClient.client,\n form: state.createClient.form,\n createClient: state.createClient\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(TextInput);\n","import React from 'react';\nimport { bool } from 'prop-types';\n\nimport ButtonSubmit from '../../../../components/ButtonSubmit';\n\nimport './index.css';\n\nconst Buttons = ({ isLoading }) => (\n
\n \n
\n);\n\nButtons.propTypes = {\n isLoading: bool\n};\n\nButtons.defaultProps = { isLoading: false };\n\nexport default Buttons;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Input } from 'semantic-ui-react';\nimport format from 'date-fns/format';\nimport ReactDatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { getTranslate, getActiveLanguage } from 'react-localize-redux';\nimport * as actions from '../actions';\nimport './index.css';\n\nexport class Datepicker extends React.Component {\n static propTypes = {\n // Text above the input field.\n label: PropTypes.string.isRequired,\n // Text below the input field.\n subLabel: PropTypes.string,\n // Name of the input field. ex: postalCode.\n name: PropTypes.string.isRequired,\n // Data relating to the company's details.\n client: PropTypes.object.isRequired,\n translate: PropTypes.func.isRequired,\n // action dispatched to update props upon keydown.\n updateClientDataOnInput: PropTypes.func.isRequired,\n currentLanguage: PropTypes.string.isRequired\n };\n\n static defaultProps = {\n subLabel: null\n };\n\n state = { value: this.props.client[this.props.name] };\n\n getLocale = () => {\n const { currentLanguage } = this.props;\n return currentLanguage;\n };\n\n handleChange = date => {\n const { name: inputName, updateClientDataOnInput } = this.props;\n // The date format is required to be DD/MM\n\n const inputValue = format(date, 'dd/MM');\n this.setState({ value: inputValue });\n updateClientDataOnInput(inputName, inputValue);\n };\n\n render() {\n const { translate, label, subLabel } = this.props;\n const { value } = this.state;\n\n return (\n
\n
\n \n \n \n \n
{translate(subLabel)}
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n client: state.createClient.client,\n translate: getTranslate(state.locale),\n currentLanguage: getActiveLanguage(state.locale).code\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Datepicker);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Dropdown } from 'semantic-ui-react';\n// shared\nimport Settings from '../../../../components/Settings';\n// local\nimport TextInput from '../TextInput';\nimport Buttons from '../Buttons';\nimport DatePicker from '../DatePicker';\nimport * as actions from '../actions';\n// styling\nimport './index.css';\nimport {\n NAME,\n CVR_NUMBER,\n CUSTOMER_ID,\n ADDRESS,\n CITY,\n ZIP_CODE,\n COUNTRY,\n FISCAL_YEAR_START,\n countryOptions\n} from '../constants';\n\nexport class Form extends React.Component {\n static propTypes = {\n // Data relating to the company's details.\n client: PropTypes.object,\n // action dispatched to update props upon keydown.\n updateClientDataOnInput: PropTypes.func.isRequired,\n isLoading: PropTypes.bool,\n translate: PropTypes.func.isRequired,\n onSubmitCreateClient: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n client: {},\n isLoading: false\n };\n\n // The country options state is handled locally.\n state = {\n countryOptions: [\n {\n key: 'dk',\n value: 'dk',\n flag: 'dk',\n text: 'Denmark'\n },\n {\n key: 'se',\n value: 'se',\n flag: 'se',\n text: 'Sweden'\n },\n {\n key: 'no',\n value: 'no',\n flag: 'no',\n text: 'Norway'\n },\n {\n key: 'gb',\n value: 'gb',\n flag: 'gb',\n text: 'England'\n },\n {\n key: 'us',\n value: 'us',\n flag: 'us',\n text: 'United States'\n }\n ],\n searchText: ''\n };\n\n onSearchChange = (event, value) =>\n this.setState({\n searchText: value.searchQuery\n });\n\n /**\n * The country list dropdown is long, which causes performance issues.\n * In this method, the countryOptions are updated upon OPEN or CHANGE.\n */\n handleChangeCountry = (event, { value }) => {\n const { client, updateClientDataOnInput } = this.props;\n this.setState({\n countryOptions: [\n {\n key: value,\n value,\n flag: value,\n text: event.target.innerText\n }\n ]\n });\n\n const updatedData = Object.assign(client, { [COUNTRY]: value });\n\n updateClientDataOnInput(updatedData);\n };\n\n searchCountry = list => {\n const { searchText } = this.state;\n\n return list.filter(value =>\n value.text.toLowerCase().startsWith(searchText.toLocaleLowerCase())\n );\n };\n\n handleSubmit = async e => {\n const { onSubmitCreateClient } = this.props;\n e.preventDefault();\n await onSubmitCreateClient();\n };\n\n render() {\n const { translate, isLoading } = this.props;\n const {\n countryOptions: countryOptionsFromState,\n [COUNTRY]: country\n } = this.state;\n return (\n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n this.setState({ countryOptions })}\n onSearchChange={this.onSearchChange}\n />\n
\n
\n\n \n
\n

{translate('settings.sectionTitle')}

\n
\n \n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n client: state.createClient.client,\n isLoading: state.createClient.isLoading\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Form);\n","// Vendors\nimport React from 'react';\nimport { func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport Screen from '../../../components/Screen';\nimport { SECONDARY_BACKGROUND } from '../../../components/Screen/constants';\n\nimport Search from './Search';\nimport Form from './Form';\n\nimport ClientDataLocale from '../locale.json';\n\nimport './index.css';\n\nconst CreateClient = props => {\n const { translate } = props;\n return (\n \n
\n
\n

{translate('new.title')}

\n
\n \n
\n
\n \n );\n};\n\nCreateClient.propTypes = {\n translate: func.isRequired\n};\n\nconst mapStateToProps = state => ({ translate: getTranslate(state.locale) });\n\nexport default connect(mapStateToProps)(CreateClient);\n","const sanitizePyramidAndKPIResponse = response => ({\n pyramidData: response.data.dupont_pyramid.pyramid,\n kpiData: response.data.dupont_pyramid.kpi\n});\n\nexport default sanitizePyramidAndKPIResponse;\n","import { get } from 'axios';\n\nimport {\n mappedRoute,\n getClientId\n} from '../../../services/navigation/routeMapping';\nimport { appHasErrorAfterFetch } from '../../../components/App/actions';\nimport {\n APP_INIT_FETCHING_INITIAL_DATA,\n APP_STOP_FETCHING_INITIAL_DATA\n} from '../../../components/App/actionTypes';\n\nimport sanitizePyramidAndKPIResponse from './integration';\nimport { getCommentsData } from '../../../components/Comments/actions';\n\nexport const CONVERT_RAW_DATA_INTO_GRAPH_DATA =\n 'REPORT_CONVERT_RAW_DATA_INTO_GRAPH_DATA';\nexport const ERROR_FETCH_DATA = 'REPORT_ERROR_FETCH_DATA';\nexport const INIT_FETCH_DATA = 'REPORT_INIT_FETCH_DATA';\nexport const SUCCESS_FETCH_DATA = 'REPORT_SUCCESS_FETCH_DATA';\nexport const SUCCESS_FETCH_PYRAMID_DATA = 'REPORT_SUCCESS_FETCH_PYRAMID_DATA';\n\nfunction initFetchData(selectedYear) {\n return {\n type: INIT_FETCH_DATA,\n payload: {\n isLoading: true,\n year: selectedYear\n }\n };\n}\n\nfunction successFetchPyramidData(sanitizedResponse) {\n return {\n type: SUCCESS_FETCH_PYRAMID_DATA,\n payload: sanitizedResponse\n };\n}\n\n/**\n * Handling the success callback after the fetch.\n * Changing the viewName, will change the destructuring of response.\n * @param {Object} data [Response from server]\n * @param {String} viewName [The viewName is linked to the response object structure]\n * @return {Object} [Payload for the reducer]\n */\nfunction successFetchData(data, viewName) {\n return {\n type: SUCCESS_FETCH_DATA,\n payload: {\n isLoading: false,\n sections: data[viewName].sections,\n fiscal_year: data[viewName].fiscal_year,\n years: data[viewName].years,\n kpi: data[viewName].kpi\n }\n };\n}\n\n/**\n * Handling the error callback after the fetch.\n * @param {Object} error [description]\n * @return {Object} [description]\n */\nexport const errorDispatch = error => dispatch => {\n // global error actions\n dispatch(appHasErrorAfterFetch(error));\n return {\n type: ERROR_FETCH_DATA,\n payload: { ...error }\n };\n};\n\n/**\n * First call being made to populate the dupont pyramid.\n * @param {*} viewName\n * @param {*} clientId\n * @param {*} selectedYear\n */\nexport function fetchPyramidData(viewName, clientId, selectedYear) {\n return dispatch =>\n get(\n `${API_URL}/clients/${clientId}/reports/${viewName}/section/dupont_pyramid?fiscal_year=${selectedYear}`\n )\n .then(response => {\n const sanitizedResponse = sanitizePyramidAndKPIResponse(response);\n dispatch({ type: APP_STOP_FETCHING_INITIAL_DATA });\n\n dispatch(successFetchPyramidData(sanitizedResponse, viewName));\n return response.data;\n })\n .catch(error => dispatch(errorDispatch(error)));\n}\n\n/**\n * Second call to populate the remaining tables.\n * @param {*} viewName\n * @param {*} clientId\n * @param {*} selectedYear\n */\nexport function fetchTablesData(viewName, clientId, selectedYear) {\n return dispatch =>\n get(\n `${API_URL}/clients/${clientId}/reports/${viewName}?fiscal_year=${selectedYear}`\n )\n .then(response => {\n dispatch({ type: APP_STOP_FETCHING_INITIAL_DATA });\n dispatch(successFetchData(response.data, viewName));\n return response.data;\n })\n .catch(error => dispatch(errorDispatch(error)));\n}\n\n/**\n * There are two asynchronous calls in the mgt/budget report view:\n * One for the pyramid and another for the rest of the tables.\n */\nexport function fetchReportsData(year) {\n return (dispatch, getState) => {\n const state = getState();\n const { location } = state.router;\n const viewName = mappedRoute(state);\n const selectedYear = year || null;\n const clientId = getClientId(location);\n\n dispatch({ type: APP_INIT_FETCHING_INITIAL_DATA });\n dispatch(initFetchData(selectedYear));\n // The pyramid call is the first to be made.\n return Promise.all([\n dispatch(fetchPyramidData(viewName, clientId, selectedYear)),\n dispatch(fetchTablesData(viewName, clientId, selectedYear)),\n dispatch(getCommentsData())\n ]);\n };\n}\n","import axios from 'axios';\nimport { getClientId } from '../../../services/navigation/routeMapping';\nimport { appHasErrorAfterFetch } from '../../../components/App/actions';\nimport {\n APP_INIT_FETCHING_INITIAL_DATA,\n APP_STOP_FETCHING_INITIAL_DATA\n} from '../../../components/App/actionTypes';\n\nimport {\n configForRequestFetchValuationData,\n cleanUpResponse\n} from './integrationValuation';\n\nexport const VALUATION_FETCH_DATA_INIT = 'VALUATION_FETCH_DATA_INIT';\nexport const VALUATION_FETCH_DATA_SUCCESS = 'VALUATION_FETCH_DATA_SUCCESS';\nexport const VALUATION_FETCH_DATA_ERROR = 'VALUATION_FETCH_DATA_ERROR';\n\nexport function errorFetchingData(error) {\n return dispatch => {\n dispatch(appHasErrorAfterFetch(error));\n // local actions\n return { type: VALUATION_FETCH_DATA_ERROR };\n };\n}\n\nexport function successFetchValuationData(response) {\n return dispatch => {\n const sanitizedResponse = cleanUpResponse(response);\n dispatch({\n type: VALUATION_FETCH_DATA_SUCCESS,\n payload: { ...sanitizedResponse }\n });\n dispatch({ type: APP_STOP_FETCHING_INITIAL_DATA });\n };\n}\n\nexport function fetchValuationData() {\n return (dispatch, getState) => {\n const clientID = getClientId(getState().router.location);\n dispatch({ type: APP_INIT_FETCHING_INITIAL_DATA });\n dispatch({ type: VALUATION_FETCH_DATA_INIT });\n axios(configForRequestFetchValuationData(clientID))\n .then(response => {\n dispatch(successFetchValuationData(response));\n })\n .catch(error => {\n dispatch(errorFetchingData(error));\n });\n };\n}\n","export function apiURL(clientID, fiscalYear) {\n return `/clients/${clientID}/reports/valuation_report/section/sensitivity_analysis?fiscal_year=${fiscalYear}`;\n}\n\n/**\n * Configuration for the initial request of data in the forecast view.\n * @param {?String/Number} clientID\n */\nexport function configForRequestFetchValuationData(clientID) {\n const url = `/clients/${clientID}/reports/valuation_report`;\n return {\n method: 'GET',\n url,\n baseURL: API_URL\n };\n}\n\n/**\n * Response sanitization of data.\n * @param {Object} response\n */\nexport function cleanUpResponse(response) {\n return {\n clientID: response.data.valuation_report.client_id,\n fiscalYear: response.data.valuation_report.fiscal_year,\n sections: response.data.valuation_report.sections\n };\n}\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getTranslate, addTranslation } from 'react-localize-redux';\n\nimport { INPUT_DATA_ROUTE_NAME } from '../../services/navigation';\nimport icon from './icon-missing_data.svg';\n\nimport ErrorCardLocale from './locale.json';\nimport InfoCard from '../InfoCard';\n\nclass ReportUnavailable extends PureComponent {\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n searchQuery: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired,\n redirect: PropTypes.arrayOf(PropTypes.string)\n };\n\n static defaultProps = {\n redirect: null\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n this.props.dispatch(addTranslation(ErrorCardLocale));\n }\n\n render() {\n const { translate, searchQuery, redirect } = this.props;\n return (\n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n searchQuery: state.router.location.search,\n translate: getTranslate(state.locale),\n location: state.router.location\n});\n\nexport default connect(mapStateToProps)(ReportUnavailable);\n","import React from 'react';\nimport { string, func, arrayOf, shape, bool } from 'prop-types';\n\nconst InfoSection = ({ translate, icon, title, text, buttons }) => (\n
\n \"Unauthorized\"\n

{translate(title)}

\n

{translate(text)}

\n {buttons.length > 0 && (\n
    \n {buttons.map(button => (\n
  • \n \n {translate(button.text)}\n \n
  • \n ))}\n
\n )}\n
\n);\n\nInfoSection.propTypes = {\n translate: func.isRequired,\n icon: string.isRequired,\n title: string.isRequired,\n text: string.isRequired,\n buttons: arrayOf(\n shape({\n text: string.isRequired,\n url: string.isRequired,\n primary: bool\n })\n )\n};\n\nInfoSection.defaultProps = {\n buttons: []\n};\n\nexport { InfoSection };\n","import React, { Fragment } from 'react';\nimport { string, arrayOf, func } from 'prop-types';\n\nconst AccessSection = ({\n accessFooter,\n accessTitle,\n accessText,\n accessFeatureTitle,\n modules,\n translate\n}) => (\n \n
\n
\n

\n {translate(accessTitle)}\n

\n {accessText && (\n

\n {translate(accessText)}\n

\n )}\n {accessFeatureTitle && (\n

\n {translate(accessFeatureTitle)}\n

\n )}\n
    \n {modules.map(feature => (\n
  • \n {translate(feature)}\n
  • \n ))}\n
\n {accessFooter && (\n

\n {translate(accessFooter)}\n

\n )}\n
\n
\n);\n\nAccessSection.propTypes = {\n accessFooter: string,\n accessTitle: string.isRequired,\n accessText: string.isRequired,\n accessFeatureTitle: string.isRequired,\n modules: arrayOf(string),\n translate: func.isRequired\n};\n\nAccessSection.defaultProps = {\n modules: [],\n accessFooter: ''\n};\n\nexport { AccessSection };\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getTranslate, addTranslation } from 'react-localize-redux';\nimport { string, func, arrayOf, shape, bool } from 'prop-types';\n\nimport { InfoSection } from './InfoSection';\nimport { AccessSection } from './AccessSection';\n\nimport './index.css';\n\nimport TrialLocale from './locale.json';\n\nimport lock from './circle_lock.svg';\nimport logo from '../Header/logo_k.svg';\n\nclass InfoCardDetailedComponent extends Component {\n componentDidMount() {\n const { dispatch } = this.props;\n\n dispatch(addTranslation(TrialLocale));\n }\n\n render() {\n const {\n icon,\n title,\n text,\n children,\n buttons,\n translate,\n accessTitle,\n accessText,\n accessFeatureTitle,\n modules,\n accessFooter,\n footer\n } = this.props;\n return (\n
\n
\n \n {children && children({ translate })}\n {modules.length > 0 && (\n \n )}\n\n
\n
\n \n

{translate(footer)}

\n
\n
\n
\n );\n }\n}\n\nInfoCardDetailedComponent.propTypes = {\n dispatch: func.isRequired,\n icon: string,\n translate: func.isRequired,\n title: string,\n text: string,\n buttons: arrayOf(\n shape({\n text: string.isRequired,\n url: string.isRequired,\n primary: bool\n })\n ),\n accessTitle: string,\n accessText: string,\n accessFeatureTitle: string,\n accessFooter: string,\n footer: string,\n modules: arrayOf(string)\n};\n\nInfoCardDetailedComponent.defaultProps = {\n icon: lock,\n text: 'detailed-card.unauthorized.info.text',\n title: 'detailed-card.unauthorized.info.title',\n buttons: [],\n accessTitle: 'detailed-card.unauthorized.access.title',\n accessText: 'detailed-card.unauthorized.access.text',\n accessFeatureTitle: 'detailed-card.unauthorized.access.feature-title',\n accessFooter: '',\n modules: [],\n footer: 'detailed-card.unauthorized.footer'\n};\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale)\n});\n\nconst InfoCardDetailed = connect(mapStateToProps)(InfoCardDetailedComponent);\n\nexport { InfoCardDetailed };\n","import React from 'react';\nimport { func } from 'prop-types';\n\nimport './index.css';\n\nconst TrialPromotion = ({ translate }) => (\n
\n
\n

\n {translate('trial-promotion.image.title')}\n

\n

\n {translate('trial-promotion.image.text')}\n

\n \n {translate('trial-promotion.image.button')}\n \n

\n {translate('trial-promotion.image.footer')}\n

\n
\n
\n);\n\nTrialPromotion.propTypes = {\n translate: func.isRequired\n};\n\nexport { TrialPromotion };\n","import React, { PureComponent } from 'react';\nimport { func, bool } from 'prop-types';\nimport { addTranslation } from 'react-localize-redux';\n\nimport { InfoCardDetailed } from '../InfoCardDetailed';\nimport { TrialPromotion } from '../TrialPromotion';\nimport './index.css';\n\nimport ErrorCardLocale from '../Error/locale.json';\nimport PromotionLocale from '../TrialPromotion/locale.json';\n\nexport default class UnauthorizedCard extends PureComponent {\n static propTypes = {\n dispatch: func.isRequired,\n isTrial: bool\n };\n\n static defaultProps = {\n isTrial: false\n };\n\n componentDidMount() {\n const { dispatch, isTrial } = this.props;\n\n dispatch(addTranslation(ErrorCardLocale));\n\n if (isTrial) {\n dispatch(addTranslation(PromotionLocale));\n }\n }\n\n render() {\n const { isTrial } = this.props;\n\n return (\n
\n {isTrial ? (\n \n {props => }\n \n ) : (\n \n )}\n
\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ReportUnavailable from '../../components/Error/ReportUnavailable';\nimport UnauthorizedCard from '../../components/UnauthorizedCard';\n\nconst ScreenDispatcher = props => {\n const { dispatch, error, Component } = props;\n if (error) {\n const { redirect, trial_user: isTrial } = error.details;\n\n switch (error.status) {\n case 403:\n return (\n \n );\n case 412:\n return ;\n default:\n return null;\n }\n } else {\n return ;\n }\n};\n\nScreenDispatcher.propTypes = {\n dispatch: PropTypes.func.isRequired,\n error: PropTypes.shape({\n details: PropTypes.shape({\n redirect: PropTypes.arrayOf(PropTypes.string).isRequired\n }).isRequired\n }),\n Component: PropTypes.func\n};\n\nScreenDispatcher.defaultProps = {\n error: null,\n Component: null\n};\n\nexport default ScreenDispatcher;\n","import React, { Component } from 'react';\nimport { func, string, bool, object, arrayOf, shape } from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n SIMULATION_REPORT_ROUTE_NAME,\n MANAGEMENT_REPORT_ROUTE_NAME,\n BUDGET_REPORT_ROUTE_NAME,\n VALUATION_REPORT_ROUTE_NAME,\n FORECAST_ROUTE_NAME\n} from '../../services/navigation';\nimport { extractYearFromURL } from '../../helpers/location';\nimport Loading from '../../components/LoadingSpinner';\n\nimport * as actionsReport from './Management/actions';\nimport * as actionsSimulation from './Simulation/actions';\nimport * as actionsForecast from './Forecast/actions';\nimport * as actionsValuation from './Valuation/actionsValuation';\n\nimport ScreenDispatcher from './ScreenDispatcher';\n\nexport default function analysisModuleDispatcher(WrappedComponent) {\n class AnalysisModuleDispatcher extends Component {\n static propTypes = {\n dispatch: func.isRequired,\n isFetchingInitialData: bool.isRequired,\n location: object.isRequired,\n error: object,\n currentLocation: shape({\n pathname: string.isRequired,\n search: string.isRequired\n }).isRequired,\n sections: arrayOf(object).isRequired\n };\n\n static defaultProps = {\n error: null\n };\n\n componentDidMount() {\n this.fetchData(this.props);\n }\n\n /**\n * When the selected year has changed (via dropdown)\n * the url is updated and we need to fetch new data based\n * on the newly selected year.\n */\n shouldComponentUpdate({\n location: nextLocation,\n sections: nextSections,\n isFetchingInitialData: nextIsFetchingInitialData\n }) {\n const {\n currentLocation,\n sections: currentSections,\n isFetchingInitialData\n } = this.props;\n\n switch (true) {\n case currentLocation && nextLocation.search !== currentLocation.search:\n this.fetchData({ location: nextLocation });\n return true;\n\n case nextSections !== currentSections ||\n isFetchingInitialData !== nextIsFetchingInitialData:\n return true;\n\n default:\n return false;\n }\n }\n\n fetchData({ location }) {\n const { pathname } = location;\n const { dispatch } = this.props;\n\n switch (pathname) {\n case SIMULATION_REPORT_ROUTE_NAME:\n return dispatch(actionsSimulation.fetchSimulationData());\n\n case MANAGEMENT_REPORT_ROUTE_NAME:\n case BUDGET_REPORT_ROUTE_NAME:\n default:\n const yearExtractedFromURL = extractYearFromURL({ location });\n return dispatch(actionsReport.fetchReportsData(yearExtractedFromURL));\n\n case VALUATION_REPORT_ROUTE_NAME:\n return dispatch(actionsValuation.fetchValuationData());\n\n case FORECAST_ROUTE_NAME:\n return dispatch(actionsForecast.fetchForecastData());\n }\n }\n\n render() {\n return this.props.isFetchingInitialData === true ? (\n \n ) : (\n \n );\n }\n }\n\n const mapStateToProps = state => ({\n isFetchingInitialData: state.app.isFetchingInitialData,\n error: state.app.error,\n location: state.router.location\n });\n\n return connect(mapStateToProps)(AnalysisModuleDispatcher);\n}\n","import { string, bool, func, number, arrayOf, shape, array } from 'prop-types';\n\nexport const TitleAreaPropTypes = {\n title: string.isRequired,\n showImportButton: bool,\n translate: func.isRequired,\n showCurrentFiscalYear: bool,\n selectedYear: number,\n showDropDown: bool,\n allYears: arrayOf(number),\n dispatch: func,\n location: shape({\n pathname: string.isRequired,\n search: string.isRequired\n }),\n viewName: string,\n importButtonText: string,\n showDescription: bool,\n descriptionText: string\n};\n\nexport const SelectYearPropTypes = {\n selectedYear: number,\n allYears: array,\n isLoading: bool,\n location: shape({\n pathname: string.isRequired,\n search: string.isRequired\n }).isRequired,\n dispatch: func.isRequired\n};\n\nexport const TitlePropTypes = {\n translate: func.isRequired,\n title: string.isRequired,\n showDescription: bool,\n descriptionText: string\n};\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { TitlePropTypes } from './types';\n\nconst Description = ({ descriptionText }) =>
{descriptionText}
;\n\nDescription.propTypes = {\n descriptionText: PropTypes.string.isRequired\n};\n\nexport const Title = ({\n translate,\n title,\n showDescription,\n descriptionText\n}) => (\n \n
\n

{translate(title)}

\n {showDescription && }\n
\n
\n);\n\nTitle.propTypes = TitlePropTypes;\n\nTitle.defaultProps = {\n showDescription: false,\n descriptionText: ''\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { Button } from 'semantic-ui-react';\n\nimport { routeWithClientId } from '../../helpers/location';\nimport { INTEGRATION_LIST } from '../../services/navigation';\n\nexport const ButtonImportData = ({ text }) => (\n
\n \n \n \n
\n);\n\nButtonImportData.propTypes = { text: PropTypes.string.isRequired };\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst CurrentFiscalYear = ({ selectedYear }) => (\n
{selectedYear}
\n);\n\nCurrentFiscalYear.propTypes = {\n selectedYear: PropTypes.number.isRequired\n};\n\nexport default CurrentFiscalYear;\n","/**\n * Converting the format sent by backend\n * ...into semantic UI dropdown format.\n */\nexport const convertOptionsToDropdownOptionsFormat = allYears =>\n allYears.sort((a, b) => b - a).map(value => ({\n key: value,\n value,\n text: `${value}`\n }));\n\nexport default convertOptionsToDropdownOptionsFormat;\n","import React from 'react';\nimport { push } from 'connected-react-router';\nimport { Dropdown } from 'semantic-ui-react';\n\nimport { routeWithClientId } from '../../helpers/location';\n\nimport { convertOptionsToDropdownOptionsFormat } from './helpers';\nimport { SelectYearPropTypes } from './types';\n\nexport const SelectYear = ({\n allYears,\n selectedYear,\n isLoading,\n dispatch,\n location\n}) => (\n
\n {\n const { value } = data;\n\n const url = `${routeWithClientId(\n location.pathname\n )}&selectedYear=${value}`;\n\n dispatch(push(url));\n }}\n />\n
\n);\n\nSelectYear.propTypes = SelectYearPropTypes;\n\nSelectYear.defaultProps = {\n selectedYear: undefined,\n allYears: [],\n isLoading: false\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { Title } from './Title';\nimport { ButtonImportData } from './ButtonImportData';\nimport CurrentFiscalYear from './CurrentFiscalYear';\nimport { SelectYear } from './SelectYear';\n\nimport { TitleAreaPropTypes } from './types';\nimport './index.css';\n\nexport const TitleArea = ({\n allYears,\n dispatch,\n importButtonText,\n location,\n selectedYear,\n showCurrentFiscalYear,\n showDropDown,\n showImportButton,\n title,\n translate,\n viewName,\n showDescription,\n descriptionText\n}) => (\n
\n \n
\n {showImportButton && }\n {showDropDown && (\n \n )}\n {showCurrentFiscalYear && (\n \n )}\n
\n
\n);\n\nTitleArea.propTypes = TitleAreaPropTypes;\nTitleArea.defaultProps = {\n showImportButton: false,\n showCurrentFiscalYear: false,\n selectedYear: 2019,\n showDropDown: false,\n allYears: [],\n dispatch: null,\n location: undefined,\n viewName: undefined,\n importButtonText: '',\n showDescription: false,\n descriptionText: ''\n};\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale)\n});\n\nexport default connect(mapStateToProps)(TitleArea);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport AnalysisModuleDispatcher from '..';\nimport TitleArea from '../../../components/TitleArea';\nimport { InfoBox, Table } from '../../../components';\nimport Sticky from '../../../components/Sticky';\n\nclass ForecastMain extends Component {\n setBottomElement = element => {\n this.bottomElement = element;\n };\n\n render() {\n const { fiscalYear, sections, translate } = this.props;\n\n return (\n
\n \n \n {sections.map(section => (\n
\n {section.sticky ? (\n \n \n \n ) : (\n
\n )}\n \n ))}\n \n \n );\n }\n}\n\nForecastMain.propTypes = {\n sections: PropTypes.array,\n fiscalYear: PropTypes.number,\n translate: PropTypes.func.isRequired\n};\n\nForecastMain.defaultProps = {\n sections: [],\n fiscalYear: undefined\n};\n\nexport default AnalysisModuleDispatcher(ForecastMain);\n","import React, { PureComponent } from 'react';\nimport { object, array, number, func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { SECTION_REPORTS } from '../../../services/navigation';\nimport Screen from '../../../components/Screen';\nimport Main from './Main';\n\nimport './index.css';\n\nimport AnalysisLocale from '../locale.json';\nimport ForecastLocale from './locale.json';\nimport CellsLocale from '../../../components/Cell/locale.json';\n\nexport class Forecast extends PureComponent {\n static propTypes = {\n currentLocation: object.isRequired,\n sections: array,\n fiscalYear: number,\n translate: func.isRequired\n };\n\n static defaultProps = {\n sections: [],\n fiscalYear: undefined\n };\n\n generateLocales = () => ({\n ...CellsLocale,\n ...ForecastLocale,\n ...AnalysisLocale\n });\n\n render() {\n const { currentLocation, fiscalYear, sections, translate } = this.props;\n\n return (\n \n \n \n );\n }\n}\n\nconst mapStateToProps = ({ forecast, router: { location }, locale }) => ({\n currentLocation: location,\n sections: forecast.sections,\n isLoading: forecast.isLoading,\n fiscalYear: forecast.fiscalYear,\n translate: getTranslate(locale)\n});\n\nexport default connect(mapStateToProps)(Forecast);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localize } from 'react-localize-redux';\nimport { localizeNumberWithCustomPrecision } from '../Cell/conversions';\n\nimport './BoxContent.css';\nimport IconPerformance from '../IconPerformance';\n\n/**\n * The inner part of a box. Doesn't include the 'connectors'.\n */\nexport const BoxContent = ({\n values,\n translate,\n name,\n icon,\n type,\n numberFormat\n}) => (\n
\n \n
\n \n
\n
{translate(name)}
\n\n
\n {values.map((value, index) => {\n if (type === 'flat') {\n return (\n \n
\n
\n {// eslint-disable-next-line\n isNaN(value.values)\n ? value.values\n : localizeNumberWithCustomPrecision(\n value.values,\n numberFormat,\n 1,\n value.display\n )}\n
\n
\n
\n );\n }\n return (\n \n
\n
{value.name}
\n
\n {// eslint-disable-next-line\n isNaN(value.values)\n ? value.values\n : localizeNumberWithCustomPrecision(\n value.values,\n numberFormat,\n 1,\n value.display\n )}\n
\n
\n
\n );\n })}\n \n \n \n);\n\nBoxContent.propTypes = {\n name: PropTypes.string,\n icon: PropTypes.string,\n type: PropTypes.string,\n values: PropTypes.array,\n translate: PropTypes.func.isRequired,\n numberFormat: PropTypes.string\n};\n\nBoxContent.defaultProps = {\n name: undefined,\n icon: undefined,\n type: 'flat',\n values: [],\n numberFormat: 'da-DK'\n};\n\nexport default localize(BoxContent, 'locale');\n","export const shouldTopConnectorBeHidden = position =>\n position === 'first' || position === 'init' ? 'hidden' : '';\n\nexport const shouldBottomConnectorBeHidden = position =>\n position === 'last' || position === 'init' ? 'hidden' : '';\n","// vendor\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n// local\nimport BoxContent from './BoxContent';\nimport './BoxWrapper.css';\nimport {\n shouldTopConnectorBeHidden,\n shouldBottomConnectorBeHidden\n} from './styling';\n\n/**\n * Out box. Includes right and leftside connectors.\n */\nexport default class BoxWrapper extends PureComponent {\n showLeftSideConnector() {\n return this.props.position !== 'init' ? (\n
\n ) : null;\n }\n\n showRightSideConnector() {\n return this.props.type !== 'flat' ? (\n
\n ) : null;\n }\n\n render() {\n const { data, position, numberFormat } = this.props;\n return (\n
\n \n
\n
\n \n {this.showLeftSideConnector()}\n \n
\n \n
\n {this.showRightSideConnector()}\n
\n
\n \n
\n );\n }\n}\n\nBoxWrapper.propTypes = {\n type: PropTypes.string,\n position: PropTypes.string,\n data: PropTypes.object,\n numberFormat: PropTypes.string\n};\n\nBoxWrapper.defaultProps = {\n type: undefined,\n position: undefined,\n data: {},\n numberFormat: undefined\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport BoxWrapper from './BoxWrapper';\nimport './index.css';\n\nconst determinePosition = (length, index) => {\n switch (true) {\n case index === 0:\n return 'first';\n\n case index + 1 === length:\n return 'last';\n\n default:\n return 'between';\n }\n};\n\nexport const Pyramid = ({ pyramidData, translate, numberFormat }) => {\n if (pyramidData) {\n return (\n
\n
\n
\n {translate(`pyramid.${pyramidData.number_heading}`, {\n year: pyramidData.number_heading_year\n })}\n
\n
\n {translate('pyramid.percentage')}\n
\n
\n
\n \n
\n {pyramidData.children.map((value, index, array) => (\n \n \n\n \n {value.children.map((subvalue, subvalueIndex, subArray) => (\n \n ))}\n
\n
\n ))}\n
\n
\n
\n );\n }\n return
;\n};\n\nPyramid.propTypes = {\n translate: PropTypes.func.isRequired,\n pyramidData: PropTypes.object,\n numberFormat: PropTypes.string\n};\n\nPyramid.defaultProps = {\n pyramidData: undefined,\n numberFormat: undefined\n};\n\nconst mapStateToProps = state => ({\n pyramidData: state.reportManagement.pyramid,\n translate: getTranslate(state.locale),\n numberFormat: state.client.number_format\n});\n\nexport default connect(\n mapStateToProps,\n null\n)(Pyramid);\n","// vendors\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n// global\nimport IconPerformance from '../../../components/IconPerformance';\nimport { rawToPretty } from '../../../components/Cell/conversions';\n// local\nimport './KPIs.css';\n\nexport const KPIs = ({ data, translate, reportName, numberFormat }) => (\n
\n
\n {translate(`kpis_${reportName}_title`)}\n
\n {translate(`kpis_${reportName}_subtitle`)}\n
\n
\n
\n {data.entries.map(kpi => (\n
\n
\n \n
\n
\n
{translate(kpi.name)}
\n
\n
\n \n {\n rawToPretty({\n value: kpi.value,\n style: kpi.display,\n numberFormat\n }).displayValue\n }\n \n {data.subtitle}\n
\n
\n Δ\n \n {\n rawToPretty({\n value: kpi.difference,\n style: kpi.display,\n numberFormat\n }).displayValue\n }\n \n {data.subtitle}\n
\n
\n
\n
\n ))}\n
\n
\n);\n\nKPIs.propTypes = {\n data: PropTypes.object.isRequired,\n reportName: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired,\n numberFormat: PropTypes.string\n};\n\nKPIs.defaultProps = {\n numberFormat: undefined\n};\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n numberFormat: state.client.number_format\n});\n\nexport default connect(mapStateToProps)(KPIs);\n","const mergeActiveIndexes = (acc, legend, index) => {\n if (legend.hidden === false) {\n acc.push(index);\n }\n return acc;\n};\nexport const getActiveLegendsIndexes = activeLegends => {\n if (Array.isArray(activeLegends) === false) {\n throw new Error('this function needs an empty array at least');\n }\n\n return activeLegends.reduce(mergeActiveIndexes, []).join('');\n};\n","import React, { useState, useEffect } from 'react';\nimport './index.css';\nimport { shape, func, arrayOf, bool, string } from 'prop-types';\nimport { setInLocalStorage } from '../../../../services/localStorage';\nimport { getActiveLegendsIndexes } from './helpers';\n\nexport const ChartLegends = ({ chart, legends, chartID }) => {\n const [activeLegends, setActiveLegends] = useState(legends);\n const setLegendHidden = (selectedIndex, hidden) => setActiveLegends(\n activeLegends.map((legend, index) => {\n // leave the non-clicked labels intact\n if (index !== selectedIndex) {\n return legend;\n }\n // update the hidden state of the clicked label\n return { ...legend, hidden };\n })\n );\n\n const legendClickCallback = (selectedLegend, selectedIndex) => {\n const meta = chart.getDatasetMeta(selectedIndex);\n\n if (selectedLegend.hidden) {\n meta.hidden = false;\n setLegendHidden(selectedIndex, false);\n } else {\n meta.hidden = true;\n setLegendHidden(selectedIndex, true);\n }\n\n chart.update();\n };\n\n // on mount\n useEffect(() => {\n setActiveLegends(legends);\n }, [legends]);\n\n // on legends toggled, write to storage\n useEffect(() => {\n setInLocalStorage(chartID, getActiveLegendsIndexes(activeLegends));\n }, [activeLegends]);\n\n if (!chart || legends.length === 0) {\n return null;\n }\n\n return (\n
\n
    \n {activeLegends.map((legend, index) => (\n \n {\n e.preventDefault();\n legendClickCallback(legend, index);\n }}\n >\n \n {legend.label}\n \n \n ))}\n
\n
\n );\n};\n\nChartLegends.propTypes = {\n chart: shape({\n update: func.isRequired,\n getDatasetMeta: func.isRequired\n }),\n legends: arrayOf(\n shape({\n color: string.isRequired,\n label: string.isRequired,\n hidden: bool.isRequired\n })\n ),\n chartID: string.isRequired\n};\n\nChartLegends.defaultProps = {\n chart: null,\n legends: []\n};\n","import { formatLabel, footerOfTooltip } from './conversions';\n\nexport function tooltipCallbacks({ numberFormat, units, isBarChart }) {\n return {\n label: item => formatLabel({ item, numberFormat, currency: units }),\n title: () => null,\n footer: (item, data) => footerOfTooltip({ item, data, isBarChart })\n };\n}\n","import { rawToPretty } from '../Cell/conversions';\n\nexport function formatLabel({ item, numberFormat, currency }) {\n const { yLabel } = item;\n return `${\n rawToPretty({ value: yLabel, numberFormat, style: 'decimal' }).displayValue\n } ${currency}`;\n}\n\nexport function footerOfTooltip({ item, data, isBarChart }) {\n if (isBarChart) {\n return item[0].xLabel;\n }\n // for line charts the item at position 0 exists and is the only value.\n const indexOfLabel = item[0].datasetIndex;\n const { label } = data.datasets[indexOfLabel];\n\n return label;\n}\n","import { tooltipCallbacks } from '../options';\n\n/**\n * Line colors have specific requirements.\n * For example, the most proeminent color is blue\n * and is assigned to the first row.\n * @param {Number} rowIndex [The index will determine the color]\n * @return {String} [A color code is returned.]\n */\nexport const determineColorOfLine = rowIndex => {\n switch (rowIndex) {\n case 0:\n return '#5F768B';\n case 1:\n return '#C9C2B8';\n case 2:\n return '#CD977A';\n case 3:\n return '#90A19A';\n case 4:\n return '#333A35';\n case 5:\n return '#982223';\n case 6:\n return '#D0D1E6';\n case 7:\n return '#F3E8BF';\n case 8:\n return '#B4DFE9';\n case 9:\n return '#A6BDDB';\n case 10:\n return '#E2C759';\n default:\n return '#2F2F2B';\n }\n};\n\nexport const chartOptions = ({ numberFormat, units }) => ({\n layout: {\n padding: {\n left: 0,\n right: 0,\n top: 40,\n bottom: 0\n }\n },\n responsive: true,\n maintainAspectRatio: false,\n title: {\n display: false,\n position: 'top'\n },\n legend: {\n display: false\n },\n tooltips: {\n callbacks: tooltipCallbacks({ numberFormat, units, isBarChart: false }),\n caretSize: 5,\n caretPadding: 1,\n intersect: false,\n displayColors: false,\n backgroundColor: 'white',\n xPadding: 23,\n yPadding: 23,\n cornerRadius: 3,\n titleFontColor: '#72726f',\n titleFontSize: 14,\n titleFontStyle: 'normal',\n bodyFontColor: '#2f2f2b',\n bodyFontSize: 16,\n bodyFontStyle: 'bold',\n borderColor: '#D5D5D5',\n footerFontColor: '#72726f',\n footerFontStyle: 'normal',\n footerFontSize: 14,\n borderWidth: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n shadowBlur: 8,\n shadowColor: 'rgba(0, 0, 0, 0.1)'\n },\n hover: {\n mode: 'dataset',\n intersect: false\n },\n\n scales: {\n yAxes: [\n {\n gridLines: {\n display: true,\n offsetGridLines: true,\n zeroLineBorderDashOffset: 50,\n drawBorder: false,\n zeroLineColor: '#E2E2E2'\n },\n ticks: {\n padding: 10,\n drawTicks: false,\n fontFamily: \"'Roboto Mono'\"\n }\n }\n ],\n xAxes: [\n {\n gridLines: {\n display: false,\n tickMarkLength: 30,\n drawBorder: false,\n zeroLineBorderDashOffset: 150\n }\n }\n ]\n },\n scaleStartValue: 0\n});\n","import { determineColorOfLine } from './options';\n\n// Removing rows of data that have no name.\n// Rows with no name can be 'divider', 'label'.\nconst removeEmptyRows = data => data.rows.filter(rowData => rowData.name);\n\nconst determineHiddenStatus = ({\n rowIndex,\n rowData,\n enabledLegendsIndexArray\n}) => {\n let hiddenStatus = true;\n\n // if theres data from the url that then\n if (enabledLegendsIndexArray) {\n enabledLegendsIndexArray.map(legend => {\n if (rowIndex === legend) {\n hiddenStatus = false;\n }\n return hiddenStatus;\n });\n } else {\n hiddenStatus = rowData.hidden;\n }\n\n return hiddenStatus;\n};\n\nconst rawDataToChartData = ({\n translate,\n data,\n chartID,\n enabledLegendsIndexArray\n}) => removeEmptyRows(data).map((rowData, rowIndex) => ({\n data: rowData.cells.map(cell => cell.value),\n labelRaw: rowData.name,\n label: translate(rowData.name),\n chartID,\n fill: false,\n lineTension: 0,\n // Line colors change within a specific order\n borderColor: determineColorOfLine(rowIndex),\n backgroundColor: determineColorOfLine(rowIndex),\n hoverBackgroundColor: determineColorOfLine(rowIndex),\n hoverBorderColor: determineColorOfLine(rowIndex),\n hoverBorderWidth: 2,\n radius: 0,\n borderWidth: 2,\n // Point options\n pointHitRadius: 20,\n pointHoverRadius: 5,\n pointBorderWidth: 2,\n pointHoverBackgroundColor: determineColorOfLine(rowIndex),\n pointHoverBorderColor: '#ffffff',\n hidden: determineHiddenStatus({\n rowIndex,\n rowData,\n enabledLegendsIndexArray\n })\n }));\n\nexport const chartData = ({\n section,\n translate,\n data,\n chartID,\n enabledLegendsIndexArray\n}) => ({\n labels: section.header,\n datasets: rawDataToChartData({\n translate,\n data,\n chartID,\n enabledLegendsIndexArray\n })\n});\n\nexport const generateLegends = ({\n translate,\n data,\n chartID,\n enabledLegendsIndexArray\n}) => removeEmptyRows(data).map((rowData, rowIndex) => ({\n label: translate(rowData.name),\n labelRaw: rowData.name,\n chartID,\n color: determineColorOfLine(rowIndex),\n hidden: determineHiddenStatus({\n rowIndex,\n rowData,\n enabledLegendsIndexArray\n })\n }));\n\nexport default chartData;\n","import { string, array, shape } from 'prop-types';\n\nexport const chartDataProps = shape({\n key: string.isRequired,\n title: string,\n rows: array.isRequired\n});\n","import React, { Fragment, useState } from 'react';\nimport { object, func, string, bool } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Line, defaults } from 'react-chartjs-2';\nimport queryString from 'query-string';\n\nimport { ChartLegends } from './ChartLegends';\nimport { chartData, generateLegends } from './helpers';\nimport { chartOptions } from './options';\nimport { chartDataProps } from '../propTypes';\nimport './index.css';\n\ndefaults.global.defaultFontColor = '#2F2F2B';\ndefaults.global.defaultFontFamily =\n \"'Roboto', 'Helvetica', 'Arial', sans-serif\";\ndefaults.global.defaultFontSize = 14;\n\nfunction ChartComponent({\n section,\n translate,\n numberFormat,\n currency,\n data,\n units,\n shouldDisplayChartsSideBySide\n}) {\n const [chart, setChart] = useState();\n\n const chartTitle = data.title;\n const chartID = `chart-${data.key}`;\n let enabledLegendsIndexArray;\n\n const unitsForDisplay = (units === undefined) ? currency : units;\n\n // fetch data from url on mount\n const urlSearchParams = queryString.parse(window.location.search);\n const convertToInteger = item => parseInt(item, 10);\n const chartMetadataInURL = urlSearchParams[chartID];\n if (chartMetadataInURL) {\n enabledLegendsIndexArray = chartMetadataInURL\n .split('')\n .map(convertToInteger);\n } else {\n enabledLegendsIndexArray = false;\n }\n\n return (\n
\n {shouldDisplayChartsSideBySide && (\n \n

{translate(`charts.${data.title}`)}

\n \n
\n )}\n \n {\n if (ref) {\n setChart(ref.chart_instance);\n }\n }}\n data={chartData({\n section,\n translate,\n data,\n chartID,\n enabledLegendsIndexArray\n })}\n height={390}\n options={chartOptions({\n numberFormat,\n shouldDisplayChartsSideBySide,\n units: unitsForDisplay\n })}\n />\n
\n {!shouldDisplayChartsSideBySide && (\n \n )}\n
\n );\n}\n\nChartComponent.propTypes = {\n section: object.isRequired,\n translate: func.isRequired,\n numberFormat: string.isRequired,\n currency: string.isRequired,\n data: chartDataProps.isRequired,\n units: string.isRequired,\n shouldDisplayChartsSideBySide: bool.isRequired\n};\n\nconst mapStateToProps = state => {\n const { number_format: numberFormat, currency } = state.client;\n\n return {\n numberFormat,\n currency\n };\n};\nexport default connect(mapStateToProps)(ChartComponent);\n","import React from 'react';\nimport { object, func } from 'prop-types';\nimport Chart from '../LineChart';\nimport { chartDataProps } from '../propTypes';\n\nfunction hasTwoCharts(section) {\n return section && section.hasChart && section.chartData.length > 1;\n}\n\nexport function getClassForSideBySideChart(section) {\n return hasTwoCharts(section) ? 'side-by-side' : 'single';\n}\n\nexport function ChartWrapper({ section, translate, item }) {\n return (\n \n );\n}\n\nChartWrapper.propTypes = {\n item: chartDataProps.isRequired,\n section: object.isRequired,\n translate: func.isRequired\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { localize } from 'react-localize-redux';\nimport { Table } from '../../../components';\nimport {\n getClassForSideBySideChart,\n ChartWrapper\n} from '../../../components/Charts/LineChartWrapper';\nimport './Section.css';\n\nexport function Section({ section, translate }) {\n const chartPositionClassName = getClassForSideBySideChart(section);\n return (\n
\n
\n {/*\n * Section-container-chart-placeholder fixes Chrome's weird behaviour on PDF.\n * DO NOT REMOVE.\n */}\n
\n
\n {section.hasChart &&\n section.chartData.map(item =>\n ChartWrapper({ section, translate, item })\n )}\n
\n
\n \n );\n}\n\nSection.propTypes = {\n section: PropTypes.object,\n translate: PropTypes.func.isRequired\n};\n\nSection.defaultProps = {\n section: []\n};\n\nChartWrapper.propTypes = {\n ...Section.propTypes\n};\n\nexport default localize(Section, 'locale');\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { INPUT_DATA_START_YEAR } from '../../../helpers/constants';\nimport AnalysisModuleDispatcher from '..';\nimport TitleArea from '../../../components/TitleArea';\nimport Pyramid from '../../../components/Pyramid';\n\nimport * as actions from './actions';\nimport KPIs from './KPIs';\nimport Section from './Section';\n\nexport const Main = ({\n fetchReportsData,\n kpi,\n sections,\n title,\n year,\n viewName,\n currentLocation,\n allYears\n}) => (\n
\n
\n \n \n
\n \n
\n\n {sections.map((moduleSection, sectionIndex) => (\n \n ))}\n
\n
\n);\n\nMain.propTypes = {\n // 'viewName' will determine which view to be render,\n // and which API url to be hit (depending on the view).\n viewName: PropTypes.string.isRequired,\n currentLocation: PropTypes.object.isRequired,\n kpi: PropTypes.object.isRequired,\n sections: PropTypes.array.isRequired,\n year: PropTypes.number,\n title: PropTypes.string.isRequired,\n // Years to be shown in the dropdown\n allYears: PropTypes.array,\n fetchReportsData: PropTypes.func.isRequired\n};\n\nMain.defaultProps = {\n year: INPUT_DATA_START_YEAR,\n allYears: []\n};\n\nexport default AnalysisModuleDispatcher(\n connect(\n null,\n actions\n )(Main)\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport {\n SECTION_REPORTS,\n MANAGEMENT_REPORT_ROUTE_NAME\n} from '../../../services/navigation';\nimport Screen from '../../../components/Screen';\n\nimport Main from './Main';\nimport './index.css';\n\nimport ReportManagementLocale from './locale.json';\n\nconst ReportManagement = props => {\n const { currentLocation } = props;\n\n return (\n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n currentLocation: state.router.location,\n kpi: state.reportManagement.kpi,\n sections: state.reportManagement.sections,\n year: state.reportManagement.fiscal_year,\n allYears: state.reportManagement.allYears,\n error: state.reportManagement.error,\n isFetchingInitialData: state.reportManagement.isFetchingInitialData,\n searchQuery: state.router.location.search,\n translate: getTranslate(state.locale)\n});\n\nReportManagement.propTypes = {\n currentLocation: PropTypes.object,\n dispatch: PropTypes.func.isRequired,\n year: PropTypes.number\n};\n\nReportManagement.defaultProps = {\n currentLocation: MANAGEMENT_REPORT_ROUTE_NAME,\n year: null\n};\n\nexport default connect(mapStateToProps)(ReportManagement);\n","import React from 'react';\nimport { default as Report } from '../Management';\n\nexport default class ReportBudget extends React.PureComponent {\n render() {\n return (\n \n );\n }\n}\n","import { string, object, func } from 'prop-types';\n\nexport const ChartTypes = {\n chartsData: object,\n name: string.isRequired,\n numberFormat: string.isRequired\n};\n\nexport const BarChartComponentTypes = {\n // The actual data of the whole section\n section: object.isRequired,\n // Converter of section data into data format\n convertRawDataIntoGraphData: func.isRequired,\n // Post-conversion data format\n chartsData: object,\n // element marking the bottom of the chart's container to stop the sticky behaviour\n translate: func.isRequired,\n numberFormat: string.isRequired\n};\n","import { tooltipCallbacks } from '../options';\n\nexport function barChartOptions({ numberFormat, currency }) {\n return {\n tooltips: {\n callbacks: tooltipCallbacks({ numberFormat, units: currency, isBarChart: true }),\n caretSize: 5,\n caretPadding: 1,\n displayColors: false,\n backgroundColor: 'white',\n xPadding: 23,\n yPadding: 23,\n cornerRadius: 3,\n titleFontColor: '#72726f',\n titleFontSize: 14,\n titleFontStyle: 'normal',\n bodyFontColor: '#2f2f2b',\n bodyFontSize: 16,\n bodyFontStyle: 'bold',\n borderColor: '#D5D5D5',\n footerFontColor: '#72726f',\n footerFontStyle: 'normal',\n footerFontSize: 14,\n borderWidth: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n shadowBlur: 8,\n shadowColor: 'rgba(0, 0, 0, 0.1)'\n },\n responsive: true,\n maintainAspectRatio: false,\n legend: { display: false },\n defaultColor: 'rgba(255, 255, 255, 1)',\n scales: {\n xAxes: [\n {\n barPercentage: 0.9,\n categoryPercentage: 0.5,\n gridLines: {\n display: false,\n drawBorder: false\n },\n ticks: {}\n }\n ],\n yAxes: [\n {\n gridLines: {\n display: true,\n offsetGridLines: true,\n zeroLineBorderDashOffset: 50,\n drawBorder: false,\n zeroLineColor: '#E2E2E2'\n },\n ticks: {\n padding: 10,\n drawTicks: false,\n fontFamily: \"'Roboto Mono'\"\n }\n }\n ]\n }\n };\n}\n","import React, { Component } from 'react';\nimport deepEqual from 'deep-equal';\nimport { Bar, defaults } from 'react-chartjs-2';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { StickyContext } from '../../Sticky';\n\nimport {\n BarChartComponentTypes,\n ChartTypes\n} from '../../../screens/Analysis/Simulation/types';\nimport * as actions from '../../../screens/Analysis/Simulation/actions';\nimport { barChartOptions } from './options';\nimport './index.css';\n\nexport const Chart = ({ chartsData, name, numberFormat, currency }) =>\n chartsData ? (\n \n ) : null;\n\nChart.propTypes = ChartTypes;\n\nexport class BarChartComponent extends Component {\n static propTypes = BarChartComponentTypes;\n\n static defaultProps = {\n chartsData: undefined\n };\n\n componentDidMount() {\n // TODO: this desperately needs to be refactored\n // so that its not hooked to redux anymore.\n this.props.convertRawDataIntoGraphData(this.props.section);\n // Chart styling.\n defaults.global.defaultFontColor = '#2f2f2b';\n defaults.global.fontRoboto = 'Roboto';\n }\n\n /**\n * The component should only update in three cases:\n *\n * 1) Upon mounting.\n * 2) Upon new data has been received from the backend.\n * 3) Upon language update\n * @param {*} nextProps\n */\n shouldComponentUpdate(nextProps) {\n const isFirstLoad =\n deepEqual(this.props.chartsData, nextProps.chartsData) === false;\n const hasReceivedNewData =\n deepEqual(this.props.section, nextProps.section) === false;\n\n if (isFirstLoad) {\n return true;\n }\n\n if (hasReceivedNewData) {\n this.props.convertRawDataIntoGraphData(nextProps.section);\n return true;\n }\n\n if (nextProps.locale !== this.props.locale) {\n this.props.convertRawDataIntoGraphData(nextProps.section);\n return true;\n }\n\n return false;\n }\n\n render() {\n const {\n translate,\n chartsData,\n section,\n numberFormat,\n currency\n } = this.props;\n const { name } = section;\n\n return (\n \n {({ status }) => (\n
\n \n
\n {translate(`${name}.actual`)}\n
\n
\n {translate(`${name}.projected`)}\n
\n
\n\n \n \n \n \n )}\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n locale: state.locale.languages.find(lang => lang.active),\n chartsData: state.simulationReport.chartsData,\n translate: getTranslate(state.locale),\n numberFormat: state.client.number_format,\n currency: state.client.currency\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(BarChartComponent);\n","import React from 'react';\nimport { Table, Sticky } from '../../../../components';\n\nimport BarChart from '../../../../components/Charts/BarChart';\n\nexport const Sections = ({ moduleBottom, data }) =>\n data.map((section, sectionIndex) => (\n
\n
\n \n\n {section.hasChart ? (\n \n \n \n ) : null}\n
\n
\n ));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AnalysisModuleDispatcher from '..';\nimport TitleArea from '../../../components/TitleArea';\nimport { InfoBox } from '../../../components';\n\nimport { Sections } from './Sections';\nimport './index.css';\n\nexport class Main extends React.PureComponent {\n static propTypes = {\n currentLocation: PropTypes.object.isRequired,\n sections: PropTypes.array.isRequired,\n fiscal_year: PropTypes.number,\n title: PropTypes.string.isRequired\n };\n\n static defaultProps = {\n fiscal_year: null\n };\n\n render() {\n const {\n // eslint-disable-next-line\n fiscal_year,\n currentLocation,\n title,\n sections: data\n } = this.props;\n\n return (\n
\n
\n \n \n\n \n {\n this.moduleBottom = span;\n }}\n />\n
\n
\n );\n }\n}\n\nexport default AnalysisModuleDispatcher(Main);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport { SECTION_REPORTS } from '../../../services/navigation';\nimport Screen from '../../../components/Screen';\nimport ReportSimulationLocale from './locale.json';\n\nimport Main from './Main';\n\nexport class ReportSimulation extends PureComponent {\n static propTypes = {\n currentLocation: PropTypes.object.isRequired,\n dispatch: PropTypes.func.isRequired,\n fiscal_year: PropTypes.number\n };\n\n static defaultProps = {\n fiscal_year: null\n };\n\n render() {\n const { currentLocation } = this.props;\n return (\n \n
\n \n );\n }\n}\n\nconst mapStateToProps = ({ router, simulationReport, locale }) => ({\n currentLocation: router.location,\n sections: simulationReport.sections,\n viewName: simulationReport.viewName,\n chartsData: simulationReport.chartsData,\n fiscal_year: simulationReport.fiscal_year,\n translate: getTranslate(locale)\n});\n\nexport default connect(mapStateToProps)(ReportSimulation);\n","const APP_AUTH_TOKEN_STORED = 'APP_AUTH_TOKEN_STORED';\nexport default APP_AUTH_TOKEN_STORED;\n","import jwtDecode from 'jwt-decode';\n\nexport default function decodeToken(token) {\n try {\n return jwtDecode(token);\n } catch (err) {\n return null;\n }\n}\n\nconst setWalkmeVariables = ({ token, isWalkmeEnabled, decoder }) => {\n if (!isWalkmeEnabled) {\n window.walkme_segments = {};\n return;\n }\n\n const decodedToken = decoder(token) || { sub: {} };\n const {\n sub: { language, per_id: perId, psp_id: pspId, permissions }\n } = decodedToken;\n const splitLocale = (language && language.split('-')) || [];\n const variables = {\n country: splitLocale[1],\n language: splitLocale[0],\n user_id: perId,\n customer_id: pspId,\n product_keys: permissions\n };\n\n window.walkme_segments = variables;\n};\n\nexport { setWalkmeVariables };\n","import APP_AUTH_TOKEN_STORED from './actionTypes';\nimport decodeToken from './helpers';\n\nconst initialState = {\n token: undefined,\n sub: {}\n};\n\nexport default function authReducer(state = initialState, action = {}) {\n const { payload } = action;\n switch (action.type) {\n case APP_AUTH_TOKEN_STORED:\n return {\n ...state,\n token: payload,\n ...decodeToken(payload)\n };\n\n default:\n return { ...state };\n }\n}\n","import {\n CELL_EVENT_END_SUBMIT,\n CELL_EVENT_INIT_SUBMIT,\n CELL_EVENT_UPDATE_POSITION,\n CELL_EVENT_NOTHING_TO_UPDATE\n} from './actions';\n\nconst initialState = {\n isLoading: false,\n cellBeingEdited: null,\n error: null\n};\n\nexport default function(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case CELL_EVENT_INIT_SUBMIT:\n case CELL_EVENT_END_SUBMIT:\n case CELL_EVENT_UPDATE_POSITION:\n case CELL_EVENT_NOTHING_TO_UPDATE:\n return {\n ...state,\n ...payload\n };\n\n default:\n return { ...state };\n }\n}\n","import {\n CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION,\n DROPDOWN_VALUE_UPDATED_CLIENT_DATA,\n RESET_FORM_CLIENT_DATA,\n SUCCESS_FETCH_CLIENT_DATA,\n SUCCESS_POST_CLIENT_DATA,\n CLIENT_DATA_NUMBERFORMAT_UPDATE\n} from './actions';\n\nconst initialState = {\n isModalOpen: false,\n isLoading: false,\n companyName: '',\n cvrNumber: '',\n customerId: '',\n address: '',\n city: '',\n postNumber: '',\n country: '',\n fiscalYearStart: '',\n currency: '',\n numberFormat: ''\n};\n\nexport default function clientDataReducer(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case CLIENT_DATA_TOGGLE_MODAL_CONFIRMATION:\n return {\n ...state,\n isModalOpen: payload.isModalOpen\n };\n\n case SUCCESS_FETCH_CLIENT_DATA:\n return {\n ...state,\n ...payload,\n isLoading: false\n };\n case SUCCESS_POST_CLIENT_DATA:\n return {\n ...state,\n isLoading: false,\n ...payload\n };\n\n case RESET_FORM_CLIENT_DATA:\n return {\n ...state,\n ...payload\n };\n\n case DROPDOWN_VALUE_UPDATED_CLIENT_DATA:\n return {\n ...state,\n currency: payload\n };\n\n case CLIENT_DATA_NUMBERFORMAT_UPDATE:\n return {\n ...state,\n numberFormat: payload\n };\n\n default:\n return { ...state };\n }\n}\n","import {\n APP_INIT_FETCHING_INITIAL_DATA,\n APP_STOP_FETCHING_INITIAL_DATA,\n APP_HAS_ERROR,\n APP_CLIENT_DATA_STATE_UPDATE,\n APP_TOGGLE_DEFINITIONS_PANEL\n} from './actionTypes';\n\nconst clientReducerInitialState = {\n vatin: undefined,\n id: undefined,\n name: undefined,\n numberFormat: 'da-DK'\n};\n\nexport default function clientReducer(\n state = clientReducerInitialState,\n action = {}\n) {\n const { payload } = action;\n\n switch (action.type) {\n case APP_CLIENT_DATA_STATE_UPDATE:\n return {\n ...state,\n ...payload\n };\n\n default:\n return { ...state };\n }\n}\n\nexport const appReducerInitialState = {\n isLoading: false,\n isFetchingInitialData: false,\n error: null,\n sidePanelId: null\n};\n\n/**\n * Sets the overall state of the app.\n */\nexport function appReducer(state = appReducerInitialState, action = {}) {\n const { payload } = action;\n switch (action.type) {\n case APP_TOGGLE_DEFINITIONS_PANEL:\n return {\n ...state,\n sidePanelId: payload.sidePanelId\n };\n\n case APP_INIT_FETCHING_INITIAL_DATA:\n return {\n ...state,\n isFetchingInitialData: true,\n error: null\n };\n\n case APP_STOP_FETCHING_INITIAL_DATA:\n return {\n ...state,\n isFetchingInitialData: false\n };\n\n case APP_HAS_ERROR:\n const { error } = payload;\n\n return {\n ...state,\n isFetchingInitialData: false,\n isLoading: false,\n error: {\n details: error.details ? error.details : null,\n message: error.message,\n status: error.status\n }\n };\n\n default:\n return {\n ...state,\n isLoading: false\n };\n }\n}\n","import * as types from './actionTypes';\n\nconst initialState = { comments: [] };\n\nexport default function commentsReducer(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case types.REPORT_COMMENTS_GET_SUCCESS:\n return {\n ...state,\n comments: payload\n };\n case types.REPORT_COMMENT_POST_SUCCESS:\n return {\n ...state,\n comments: [...state.comments, action.payload]\n };\n case types.REPORT_COMMENT_PUT_SUCCESS:\n return {\n ...state,\n comments: state.comments.map(\n comment => (comment.id === payload.id ? payload : comment)\n )\n };\n case types.REPORT_COMMENT_DELETE_SUCCESS:\n return {\n ...state,\n comments: state.comments.filter(\n comment => comment.id !== action.payload\n )\n };\n default:\n return { ...state };\n }\n}\n","import * as types from './actionTypes';\n\nimport {\n NAME,\n CVR_NUMBER,\n CUSTOMER_ID,\n ADDRESS,\n CITY,\n ZIP_CODE,\n COUNTRY,\n FISCAL_YEAR_START,\n NUMBER_FORMAT,\n CURRENCY\n} from './constants';\n\nconst defaultForm = {\n [NAME]: {\n isInvalid: false,\n isTouched: false\n },\n [CVR_NUMBER]: {\n isInvalid: false,\n isTouched: false\n },\n [CUSTOMER_ID]: {\n isInvalid: false,\n isTouched: false\n },\n [ADDRESS]: {\n isInvalid: false,\n isTouched: false\n },\n [CITY]: {\n isInvalid: false,\n isTouched: false\n },\n [ZIP_CODE]: {\n isInvalid: false,\n isTouched: false\n },\n [COUNTRY]: {\n isInvalid: false,\n isTouched: false\n },\n [FISCAL_YEAR_START]: {\n isInvalid: false,\n isTouched: false\n },\n [NUMBER_FORMAT]: {\n isInvalid: false,\n isTouched: false\n },\n [CURRENCY]: {\n isInvalid: false,\n isTouched: false\n }\n};\n\nconst defaultClient = () => ({\n [NAME]: '',\n [CVR_NUMBER]: '',\n [CUSTOMER_ID]: '',\n [ADDRESS]: '',\n [CITY]: '',\n [ZIP_CODE]: '',\n [COUNTRY]: '',\n [FISCAL_YEAR_START]: '01/01',\n [NUMBER_FORMAT]: 'da-DK',\n [CURRENCY]: 'DKK'\n});\n\nexport const initialState = {\n isLoading: false,\n client: defaultClient(),\n form: defaultForm\n};\n\nexport default function createClientState(state = initialState, action = {}) {\n const { payload } = action;\n switch (action.type) {\n case types.INIT_FETCH_DATAFROMCVR:\n return { ...state, isLoading: true };\n\n case types.CLICK_SUBMIT_BUTTON:\n return {\n ...state,\n isLoading: true\n };\n\n case types.UPDATE_CVR_NUMBER:\n return { ...state };\n\n case types.INPUT_UPDATE_CLIENTDATA:\n return {\n ...state,\n client: Object.assign(state.client, payload.client),\n form: Object.assign(state.form, payload.form)\n };\n\n case types.SUCCESS_POST_CREATE_CLIENT:\n return {\n ...state,\n isLoading: false,\n client: defaultClient()\n };\n\n case types.SUCCESS_FETCH_DATAFROMCVR:\n return {\n ...state,\n client: Object.assign(state.client, payload),\n isLoading: false\n };\n\n case types.ERROR_FETCH_DATAFROMCVR:\n return {\n ...state,\n isLoading: false,\n error: payload\n };\n\n case types.ERROR_INPUT_VALIDATION:\n return {\n ...state,\n form: {\n ...state.form,\n ...payload\n },\n isLoading: false\n };\n\n case types.ERROR_POST_FORM:\n return {\n ...state,\n error: payload,\n isLoading: false\n };\n\n case types.CLEAR_CLIENT_DATA:\n return {\n ...state,\n client: { ...payload }\n };\n\n case types.CLEAR_FORM_DATA:\n return {\n ...state,\n form: {\n [NAME]: {\n isInvalid: false,\n isTouched: false\n },\n [CVR_NUMBER]: {\n isInvalid: false,\n isTouched: false\n },\n [CUSTOMER_ID]: {\n isInvalid: false,\n isTouched: false\n },\n [ADDRESS]: {\n isInvalid: false,\n isTouched: false\n },\n [CITY]: {\n isInvalid: false,\n isTouched: false\n },\n [ZIP_CODE]: {\n isInvalid: false,\n isTouched: false\n },\n [COUNTRY]: {\n isInvalid: false,\n isTouched: false\n },\n [FISCAL_YEAR_START]: {\n isInvalid: false,\n isTouched: false\n },\n [NUMBER_FORMAT]: {\n isInvalid: false,\n isTouched: false\n },\n [CURRENCY]: {\n isInvalid: false,\n isTouched: false\n }\n }\n };\n\n default:\n return { ...state };\n }\n}\n","export const SAVE_DATA_IMPORT_SESSION = 'SAVE_DATA_IMPORT_SESSION';\n","import * as types from './actionTypes';\n\nconst initialState = {\n years: [],\n id: null,\n source: null,\n accountPlans: [],\n errors: [],\n overview: {}\n};\n\nconst dataImportSessionReducer = (state = initialState, action = {}) => {\n const { payload, type } = action;\n\n switch (type) {\n case types.SAVE_DATA_IMPORT_SESSION:\n return {\n ...state,\n ...payload\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default dataImportSessionReducer;\n","import {\n FORECAST_FETCH_DATA_INIT,\n FORECAST_FETCH_DATA_SUCCESS\n} from './actions';\n\nconst initialState = {\n clientID: undefined,\n fiscalYear: undefined,\n isLoading: true,\n sections: []\n};\n\nexport default function forecastReducer(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case FORECAST_FETCH_DATA_INIT:\n return {\n ...state,\n isLoading: true\n };\n\n case FORECAST_FETCH_DATA_SUCCESS:\n return {\n ...state,\n isLoading: false,\n sections: payload.sections,\n clientID: payload.clientID,\n fiscalYear: payload.fiscalYear\n };\n\n default:\n return { ...state };\n }\n}\n","import { INPUT_DATA_START_YEAR } from '../../helpers/constants';\nimport * as types from './actionTypes';\n\nexport const initialState = {\n currentFiscalYear: INPUT_DATA_START_YEAR,\n years: [2015, 2016],\n sections: null\n};\n\nexport default function inputDataReducer(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case types.SUCCESS_FETCH_DATA_INPUT:\n return {\n ...state,\n currentFiscalYear: payload.currentFiscalYear,\n years: payload.years,\n sections: payload.sections\n };\n\n case types.WIPE_DATA_INPUT:\n return {\n ...state,\n currentFiscalYear: null,\n years: null,\n sections: null\n };\n\n default:\n return { ...state };\n }\n}\n","export const INIT_FETCH_CLIENTS_LIST = 'INIT_FETCH_CLIENTS_LIST';\nexport const SUCCESS_FETCH_CLIENTS_LIST = 'SUCCESS_FETCH_CLIENTS_LIST';\nexport const ERROR_FETCH_CLIENTS_LIST = 'ERROR_FETCH_CLIENTS_LIST';\nexport const SORTING_DASHBOARD_LIST = 'SORTING_DASHBOARD_LIST';\nexport const LOOKUP_DASHBOARD_LIST = 'SORTING_DASHBOARD_LIST';\n","import * as types from './actionTypes';\n\nexport const SORT_KEY = 'name';\nexport const SORT_ORDER_ASC = 'ascending';\nexport const SORT_ORDER_DESC = 'descending';\n\nconst initialState = {\n isLoading: false,\n clients: [\n {\n id: 1,\n name: '',\n vatin: '',\n customer_id: '',\n address: '',\n city: '',\n zip_code: '',\n country: '',\n fiscal_year_start: '',\n number_format: '',\n currency: '',\n updated_at: '',\n visible: true\n }\n ],\n sortKey: SORT_KEY,\n sortOrder: SORT_ORDER_ASC,\n selected: {}\n};\n\nexport default function listClientsState(state = initialState, action = {}) {\n const { payload } = action;\n switch (action.type) {\n case types.INIT_FETCH_CLIENTS_LIST:\n return {\n ...state,\n payload\n };\n\n case types.SUCCESS_FETCH_CLIENTS_LIST:\n return {\n ...state,\n isLoading: false,\n clients: payload.clients\n };\n\n case types.ERROR_FETCH_CLIENTS_LIST:\n return {\n ...state,\n isLoading: false,\n error: payload\n };\n case types.LOOKUP_DASHBOARD_LIST:\n case types.SORTING_DASHBOARD_LIST:\n return {\n ...state,\n ...payload\n };\n default:\n return { ...state };\n }\n}\n","import * as types from './actionTypes';\n\nconst initialState = {\n isOpen: false,\n /* Cleans refers that the user hasn't touched the menu\n ** Used to avoid extra animations on mount.\n */\n isClean: true\n};\n\nconst menuReducer = (state = initialState, action = {}) => {\n const { type } = action;\n\n switch (type) {\n case types.TOGGLE_MENU:\n return {\n ...state,\n isOpen: !state.isOpen,\n isClean: false\n };\n\n case types.OPEN_MENU:\n return {\n ...state,\n isOpen: true,\n isClean: true\n };\n\n case types.CLOSE_MENU:\n return {\n ...state,\n isOpen: false,\n isClean: true\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default menuReducer;\n","import {\n ERROR_FETCH_DATA,\n INIT_FETCH_DATA,\n SUCCESS_FETCH_DATA,\n SUCCESS_FETCH_PYRAMID_DATA\n} from './actions';\n\nconst initialState = {\n isLoading: false,\n isFetchingInitialData: false,\n error: null,\n allYears: [2013, 2014, 2015, 2016, 2017],\n sections: [],\n kpi: {\n name: 'kpi',\n subtitle: 'dkkm',\n hasChart: false,\n entries: []\n },\n pyramid: null\n};\n\nexport default function reportManagementState(\n state = initialState,\n action = {}\n) {\n const { payload } = action;\n\n switch (action.type) {\n case INIT_FETCH_DATA:\n return {\n ...state,\n ...payload\n };\n\n case SUCCESS_FETCH_PYRAMID_DATA:\n return {\n ...state,\n kpi: action.payload.kpiData,\n pyramid: action.payload.pyramidData\n };\n\n case SUCCESS_FETCH_DATA:\n return {\n ...state,\n allYears: payload.years,\n error: null,\n fiscal_year: payload.fiscal_year,\n isFetchingInitialData: false,\n sections: payload.sections,\n isLoading: false\n };\n\n case ERROR_FETCH_DATA:\n return {\n ...state,\n error: {\n status: payload.status,\n statusText: payload.statusText\n },\n isLoading: false,\n isFetchingInitialData: payload.isFetchingInitialData\n };\n\n default:\n return { ...state };\n }\n}\n","import update from 'immutability-helper';\nimport {\n CONVERT_RAW_DATA_INTO_GRAPH_DATA,\n REPORT_SIMULATION_CLEAR_DATA,\n REPORT_SIMULATION_ERROR_FETCH_DATA,\n REPORT_SIMULATION_INIT_UPDATE_CELL_VALUE,\n REPORT_SIMULATION_SUCCESS_FETCH_DATA,\n REPORT_SIMULATION_UPDATE_CELL_VALUE\n} from './actions';\n\nconst initialState = {\n isLoading: false,\n error: null,\n view_name: 'whatif_report',\n fiscal_year: 2016,\n chartsData: null,\n sections: []\n};\n\nexport default function(state = initialState, action = {}) {\n const { payload } = action;\n\n switch (action.type) {\n case CONVERT_RAW_DATA_INTO_GRAPH_DATA:\n return {\n ...state,\n chartsData: { ...state.chartsData, ...payload}\n };\n\n case REPORT_SIMULATION_INIT_UPDATE_CELL_VALUE:\n const { sectionIndex, rowIndex, cellIndex, value } = payload;\n return update(state, {\n sections: {\n [sectionIndex]: {\n rows: {\n [rowIndex]: {\n cells: { [cellIndex]: { value: { $set: value } } }\n }\n }\n }\n }\n });\n\n case REPORT_SIMULATION_CLEAR_DATA:\n return {\n ...state,\n sections: []\n };\n\n case REPORT_SIMULATION_SUCCESS_FETCH_DATA:\n return {\n ...state,\n ...payload\n };\n\n case REPORT_SIMULATION_UPDATE_CELL_VALUE:\n return {\n ...state,\n ...payload\n };\n\n case REPORT_SIMULATION_ERROR_FETCH_DATA:\n return {\n ...state,\n error: {\n status: payload.status,\n statusText: payload.statusText\n },\n isFetchingInitialData: payload.isFetchingInitialData\n };\n\n default:\n return { ...state };\n }\n}\n","import {\n SENSITIVITY_ANALYSIS_VALUE_DRIVER_CHANGE,\n SENSITIVITY_ANALYSIS_INIT_FETCH_DATA,\n SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA\n} from './actions';\nimport {\n VALUATION_FETCH_DATA_INIT,\n VALUATION_FETCH_DATA_SUCCESS\n} from './actionsValuation';\n\nconst initialState = {\n valuation: {\n clientID: undefined,\n fiscalYear: undefined,\n isLoading: true,\n sections: []\n },\n sensitivityAnalysis: {\n clientID: undefined,\n fiscalYear: undefined,\n valueDriversOptions: ['turnover_growth', 'wacc'],\n table1: {\n valueDriverX: 'turnover_growth',\n valueDriverY: 'wacc',\n rows: [{}],\n isLoading: true\n },\n table2: {\n valueDriverX: 'turnover_growth',\n valueDriverY: 'gross_margin',\n rows: [{}],\n isLoading: true\n }\n }\n};\n\nexport default function valuationReducer(state = initialState, action = {}) {\n const { payload } = action;\n switch (action.type) {\n case VALUATION_FETCH_DATA_INIT:\n return { ...state };\n\n case VALUATION_FETCH_DATA_SUCCESS:\n return {\n ...state,\n valuation: {\n ...state.valuation,\n clientID: payload.clientID,\n fiscalYear: payload.fiscalYear,\n isLoading: false,\n sections: payload.sections\n }\n };\n\n case SENSITIVITY_ANALYSIS_INIT_FETCH_DATA:\n return {\n ...state,\n sensitivityAnalysis: {\n ...state.sensitivityAnalysis,\n [`${payload.table}`]: {\n ...state.sensitivityAnalysis[`${payload.table}`],\n isLoading: true\n }\n }\n };\n\n case SENSITIVITY_ANALYSIS_VALUE_DRIVER_CHANGE:\n return {\n ...state,\n sensitivityAnalysis: {\n ...state.sensitivityAnalysis,\n [`${payload.table}`]: {\n ...state.sensitivityAnalysis[`${payload.table}`],\n [`valueDriver${payload.axis}`]: payload.value\n }\n }\n };\n\n case SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA:\n return {\n ...state,\n clientID: payload.clientID,\n fiscalYear: payload.fiscalYear,\n sensitivityAnalysis: {\n ...state.sensitivityAnalysis,\n ...payload.tableData,\n valueDriversOptions: payload.valueDriversOptions\n }\n };\n default:\n return { ...state };\n }\n}\n","import { localeReducer } from 'react-localize-redux';\nimport { reducer as notifications } from 'react-notification-system-redux';\nimport { routerReducer } from 'react-router-redux';\n\nimport authReducer from '../services/auth/reducer';\nimport cellReducer from '../components/Cell/reducer';\nimport clientDataReducer from '../screens/Client/Edit/reducer';\nimport clientReducer, { appReducer } from '../components/App/reducer';\nimport commentsReducer from '../components/Comments/reducer';\nimport createClientReducers from '../screens/Client/Create/reducer';\nimport dataImportSessionReducer from '../screens/Integrations/reducer';\nimport forecastReducer from '../screens/Analysis/Forecast/reducer';\nimport inputDataReducer from '../screens/Input/reducer';\nimport listClientsReducers from '../screens/Client/List/reducer';\nimport menuReducer from '../components/BurgerMenu/reducer';\nimport reportManagementReducers from '../screens/Analysis/Management/reducer';\nimport reportSimulationReducers from '../screens/Analysis/Simulation/reducer';\nimport valuationReducer from '../screens/Analysis/Valuation/reducer';\n\nexport const reducers = {\n // 'app' is the global state reducer (isLoading, etc).\n app: appReducer,\n auth: authReducer,\n cell: cellReducer,\n client: clientReducer,\n clientData: clientDataReducer,\n comments: commentsReducer,\n createClient: createClientReducers,\n dataImportSession: dataImportSessionReducer,\n inputData: inputDataReducer,\n listClients: listClientsReducers,\n locale: localeReducer,\n menu: menuReducer,\n notifications,\n reportManagement: reportManagementReducers,\n router: routerReducer,\n simulationReport: reportSimulationReducers,\n valuationReport: valuationReducer,\n forecast: forecastReducer\n};\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux';\nimport { createBrowserHistory } from 'history';\nimport { connectRouter } from 'connected-react-router';\n\nimport { tracker } from '../services/middlewares';\nimport { reducers } from './reducers';\nimport { getMiddlewares } from './middlewares';\n\nexport const history = createBrowserHistory();\n\n// instantiating middlewares with the same history\nconst middlewares = getMiddlewares(history);\n// Tracking with segment\nif (ENV === 'integration' || ENV === 'production') {\n middlewares.push(tracker());\n}\n\n// eslint-disable-next-line\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nexport const store = createStore(\n connectRouter(history)(combineReducers(reducers)),\n composeEnhancers(applyMiddleware(...middlewares))\n);\n","import thunk from 'redux-thunk';\nimport { routerMiddleware } from 'connected-react-router';\n\nimport { closeDefinitionsPanel } from '../services/middlewares';\n\nexport const getMiddlewares = history => [\n routerMiddleware(history),\n thunk,\n closeDefinitionsPanel()\n];\n","import { toggleDefinitionsPanel } from '../../../components/App/actions';\n/**\n * Close any definitions panel when route changes.\n */\nexport const closeDefinitionsPanel = () => store => next => action => {\n if (action.type === '@@router/LOCATION_CHANGE') {\n const { sidePanelId } = store.getState().app;\n\n if (sidePanelId) {\n store.dispatch(toggleDefinitionsPanel({ sidePanelId: null }));\n }\n }\n\n return next(action);\n};\n","import { redirectToErrorView } from '../../../external/rollbar';\nimport { submitIdentityToSegment, trackPage } from '../../../external/segment';\nimport { getModuleId } from '../../../helpers/location';\nimport { determineOptions } from './options';\n\n/**\n * The middleware is for catching runtime errors after the app\n * was loaded.\n *\n * The middleware gives access to the store, action and error.\n * There are useful because they allow to not report errors on all action types\n * or locations.\n */\nexport const tracker = () => store => next => action => {\n try {\n if (action.type === '@@router/LOCATION_CHANGE') {\n const state = store.getState();\n const { location } = action.payload;\n const moduleId = getModuleId({ location });\n // if it is a view that has information per year, we track it.\n // if changes, the year is sent in each fetch data action.\n const options = determineOptions({ location: window.location, moduleId });\n\n trackPage({ location, options });\n submitIdentityToSegment({ state });\n }\n\n return next(action);\n } catch (err) {\n const location = store.getState().router.location.pathname;\n return redirectToErrorView({ message: err, location });\n }\n};\n","import { getURLParams } from '../../../helpers/location';\n\nexport const determineOptions = ({ location, moduleId }) => {\n if (!moduleId) return undefined;\n const year = Number.parseInt(getURLParams(location.search).selectedYear, 10);\n\n return year ? { year } : { year: 'default' };\n};\n","import { store } from './store';\n\nexport { history } from './store';\n// In orther to keep regression dependencies working:\nexport default store;\n","import { getTranslate } from 'react-localize-redux';\nimport store from '../../../store';\n\nexport function prepareURLParameters(valueDriverX, valueDriverY) {\n if (!valueDriverX || !valueDriverY) return '';\n return `?value_driver_x=${valueDriverX}&value_driver_y=${valueDriverY}`;\n}\n\nexport function prepareURL(clientID, valueDriverX, valueDriverY) {\n const parameters = prepareURLParameters(valueDriverX, valueDriverY);\n return `/clients/${clientID}/reports/valuation_report/section/sensitivity_analysis${parameters}`;\n}\n\nexport function prepareResponse(response, table) {\n const sensitivityAnalysis = response.data.sensitivity_analysis;\n return {\n clientID: sensitivityAnalysis.client_id,\n fiscalYear: sensitivityAnalysis.fiscal_year,\n valueDriversOptions: sensitivityAnalysis.value_drivers,\n tableData: {\n [`${table}`]: {\n isLoading: false,\n rows: sensitivityAnalysis.rows,\n valueDriverX: sensitivityAnalysis.value_driver_x,\n valueDriverY: sensitivityAnalysis.value_driver_y\n }\n }\n };\n}\n\nfunction isValueDriverRepeated(driverX, driverY, value, axis) {\n if (axis === 'Y') return value === driverX;\n if (axis === 'X') return value === driverY;\n return false;\n}\n\n/**\n * ValueDrivers have a format when sent from the backend\n * that needs to be converted to the dropdown options format,\n * so it can populate the dropdown.\n *\n * Localisation also happens at this level.\n * @param {array} valueDrivers\n * @return {object}\n */\nexport function convertResponseOptionsToDropdownOptionsFormat(\n valueDrivers,\n table,\n axis\n) {\n const state = store.getState();\n const translate = getTranslate(state.locale);\n return valueDrivers.map(value => ({\n key: value,\n text: translate(`sensitivityAnalysis.${value}`),\n value,\n disabled: isValueDriverRepeated(\n state.valuationReport.sensitivityAnalysis[`${table}`].valueDriverX,\n state.valuationReport.sensitivityAnalysis[`${table}`].valueDriverY,\n value,\n axis\n )\n }));\n}\n","import axios from 'axios';\n\nimport { getClientId } from '../../../services/navigation/routeMapping';\nimport { prepareURL, prepareResponse } from './integration';\n// action types\nexport const SENSITIVITY_ANALYSIS_INIT_FETCH_DATA =\n 'SENSITIVITY_ANALYSIS_INIT_FETCH_DATA';\nexport const SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA =\n 'SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA';\nexport const SENSITIVITY_ANALYSIS_VALUE_DRIVER_CHANGE =\n 'SENSITIVITY_ANALISYS_VALUE_DRIVER_CHANGE';\n\n/**\n * Upon fetch data, sanitize responses\n * and trigger a reducer update.\n * @param {object} response\n * @returns {object}\n */\nfunction successFetchData(response, table) {\n const sanitizedResponse = prepareResponse(response, table);\n\n return {\n type: SENSITIVITY_ANALYSIS_SUCCESS_FETCH_DATA,\n payload: { ...sanitizedResponse }\n };\n}\n\n/**\n * Value Driver X and Y need to go in the url params.\n */\nexport function initFetchSensitivityAnalysisData(table) {\n return (dispatch, getState) => {\n const state = getState();\n const clientID = getClientId(state.router.location);\n const {\n valueDriverX,\n valueDriverY\n } = state.valuationReport.sensitivityAnalysis[`${table}`];\n const url = prepareURL(clientID, valueDriverX, valueDriverY);\n\n axios({\n method: 'GET',\n url,\n baseURL: API_URL\n }).then(response => dispatch(successFetchData(response, table)));\n };\n}\n\n/**\n * Init function.\n */\nexport function fetchData(table) {\n return dispatch => {\n dispatch({\n type: SENSITIVITY_ANALYSIS_INIT_FETCH_DATA,\n payload: { table }\n });\n dispatch(initFetchSensitivityAnalysisData(table));\n };\n}\n\n/**\n * Changes state value of the dropdowns (value drivers)\n * and after triggers an API call.\n * @param {*} event\n * @param {*} data\n * @param {*} axis\n */\nexport function onDropdownChange(event, data, axis, table) {\n return dispatch => {\n dispatch({\n type: SENSITIVITY_ANALYSIS_VALUE_DRIVER_CHANGE,\n payload: {\n table,\n value: data.value,\n axis\n }\n });\n dispatch(fetchData(table));\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'semantic-ui-react';\nimport CellDispatcher from '../../../components/Cell/Dispatcher';\nimport './Table.css';\n\nconst TableLoadingData = () =>
Loading...
;\nconst TableSensitivityAnalysis = ({ ...props }) =>\n props.isLoading ? (\n \n ) : (\n
\n \n {props.rows.map((row, rowIndex) => (\n \n {row.cells.map((cell, cellIndex) => (\n \n ))}\n \n ))}\n \n
\n );\n\nTableSensitivityAnalysis.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n rows: PropTypes.array.isRequired\n};\nexport default TableSensitivityAnalysis;\n","// vendors\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Dropdown, Divider } from 'semantic-ui-react';\nimport { getTranslate } from 'react-localize-redux';\n// local\nimport * as actions from './actions';\nimport TableSensitivityAnalysis from './Table';\nimport { convertResponseOptionsToDropdownOptionsFormat } from './integration';\nimport './SensitivityAnalysis.css';\n\nexport class SensitivityAnalysis extends React.Component {\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n valueDriversOptions: PropTypes.array.isRequired,\n table: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n // Fetching data\n this.props.dispatch(actions.fetchData(this.props.table));\n }\n\n render() {\n return (\n
\n
\n {this.props.translate('sensitivityAnalysis.title')}\n
\n \n
\n {this.props.translate('sensitivityAnalysis.compare')}\n \n {this.props.translate('sensitivityAnalysis.yAxis')}\n \n \n this.props.dispatch(\n actions.onDropdownChange(event, data, 'Y', this.props.table)\n )\n }\n />\n {this.props.translate('sensitivityAnalysis.with')}\n \n {this.props.translate('sensitivityAnalysis.xAxis')}\n \n \n this.props.dispatch(\n actions.onDropdownChange(event, data, 'X', this.props.table)\n )\n }\n />\n
\n \n \n
\n );\n }\n}\n\nconst mapDispatchToProps = state => ({\n ...state.valuationReport.sensitivityAnalysis,\n numberFormat: state.client.number_format,\n translate: getTranslate(state.locale),\n valueDriversOptions:\n state.valuationReport.sensitivityAnalysis.valueDriversOptions\n});\n\nexport default connect(mapDispatchToProps)(SensitivityAnalysis);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport TitleArea from '../../../components/TitleArea';\nimport { InfoBox, Table } from '../../../components';\nimport AnalysisModuleDispatcher from '..';\nimport SensitivityAnalysis from './SensitivityAnalysis';\n\nconst ValuationMain = ({ fiscalYear, sections, translate }) => (\n
\n \n \n {sections.map((section, sectionIndex) => (\n
\n \n
\n ))}\n \n \n
\n);\n\nValuationMain.propTypes = {\n sections: PropTypes.array,\n fiscalYear: PropTypes.number,\n translate: PropTypes.func.isRequired\n};\n\nValuationMain.defaultProps = {\n sections: [],\n fiscalYear: undefined\n};\n\nexport default AnalysisModuleDispatcher(ValuationMain);\n","import React from 'react';\nimport { object, array, number, func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { SECTION_REPORTS } from '../../../services/navigation';\nimport Screen from '../../../components/Screen';\nimport Main from './Main';\n\nimport './index.css';\n\nimport AnalysisLocale from '../locale.json';\nimport ValuationLocale from './locale.json';\n\nexport const Valuation = ({\n currentLocation,\n sections,\n fiscalYear,\n translate\n}) => (\n \n \n \n);\n\nValuation.propTypes = {\n currentLocation: object.isRequired,\n sections: array,\n fiscalYear: number,\n translate: func.isRequired\n};\n\nValuation.defaultProps = {\n sections: [],\n fiscalYear: undefined\n};\n\nconst mapStateToProps = state => ({\n currentLocation: state.router.location,\n clientData: state.clientData,\n sections: state.valuationReport.valuation.sections,\n isLoading: state.valuationReport.valuation.isLoading,\n fiscalYear: state.valuationReport.valuation.fiscalYear,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(mapStateToProps)(Valuation);\n","export const RETURN_URL_PATH = 'return_url_pathname';\nexport const RETURN_URL_SEARCH = 'return_url_search';\nexport const DATA_SESSION_IMPORT_ID = 'data_import_session_id';\n\nexport const getSessionStorageKey = key => {\n const normalizedKey = key && key.toUpperCase();\n return `KBO_SESSION_STORAGE_${normalizedKey}-${ENV}`;\n};\n\nexport const setInSessionStorage = (key, value) => {\n const kboKey = getSessionStorageKey(key);\n\n window.sessionStorage.setItem(kboKey, value);\n\n return { [kboKey]: value };\n};\n\nexport const getFromSessionStorage = key => {\n const kboKey = getSessionStorageKey(key);\n return window.sessionStorage.getItem(kboKey);\n};\n\nexport const removeFromSessionStorage = key => {\n const kboKey = getSessionStorageKey(key);\n\n window.sessionStorage.removeItem(kboKey);\n};\n","import React, { Component } from 'react';\nimport { Redirect } from 'react-router';\nimport { get } from 'axios';\n\nimport {\n LIST_CLIENT_ROUTE_NAME,\n DASHBOARD_INIT_ROUTE_NAME,\n ENDPOINT_DASHBOARD_CLIENT\n} from '../../services/navigation';\nimport Loading from '../LoadingSpinner';\nimport {\n RETURN_URL_PATH,\n RETURN_URL_SEARCH,\n getFromSessionStorage,\n removeFromSessionStorage\n} from '../../services/sessionStorage/index';\n\n/**\n * The first view to be loaded.\n * Refers to the root route of the App -> '/'.\n */\nexport default class Root extends Component {\n state = {\n isLoading: false\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n const returnPathname = getFromSessionStorage(RETURN_URL_PATH);\n const returnSearch = getFromSessionStorage(RETURN_URL_SEARCH);\n\n if (returnPathname !== null) {\n removeFromSessionStorage(RETURN_URL_PATH);\n removeFromSessionStorage(RETURN_URL_SEARCH);\n\n this.setState({\n pathname: returnPathname,\n search: returnSearch,\n isLoading: false\n });\n }\n }\n\n componentDidMount() {\n const url = `${API_URL}${ENDPOINT_DASHBOARD_CLIENT}`;\n get(url).then(response => {\n if (response.data.clients.length) {\n return this.setState({\n pathname: LIST_CLIENT_ROUTE_NAME,\n isLoading: false\n });\n }\n\n return this.setState({\n pathname: DASHBOARD_INIT_ROUTE_NAME,\n isLoading: false\n });\n });\n }\n\n render() {\n const { pathname, search, isLoading } = this.state;\n if (isLoading) {\n return ;\n }\n return (\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { CREATE_CLIENT_ROUTE_NAME } from '../../services/navigation';\nimport './index.css';\n\nexport class TopRow extends PureComponent {\n renderCreateClientButton = () => {\n if (this.props.hasCreateClientButton) {\n return (\n \n
\n {this.props.translate('topRow.addCompany')}\n
\n \n );\n }\n return null;\n };\n\n render() {\n return (\n
\n
\n
\n {this.props.translate('topRow.title')}\n
\n
\n {this.props.translate('topRow.subtitle')}\n
\n
\n {this.renderCreateClientButton()}\n
\n );\n }\n}\n\nTopRow.propTypes = {\n hasCreateClientButton: PropTypes.bool,\n translate: PropTypes.func.isRequired\n};\n\nTopRow.defaultProps = {\n hasCreateClientButton: false\n};\n\nconst mapStateToProps = state => ({ translate: getTranslate(state.locale) });\n\nexport default connect(mapStateToProps)(TopRow);\n","import React, { Fragment, Component } from 'react';\nimport { func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { addTranslation } from 'react-localize-redux';\n\nimport TopRow from '../../../components/TopRow';\nimport { InfoCardDetailed } from '../../../components/InfoCardDetailed';\nimport Footer from '../../../components/Footer';\nimport calendar from './circle_calendar.svg';\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport TrialExpiredLocale from './locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\n\nclass TrialExpiredComponent extends Component {\n componentDidMount() {\n const { dispatch } = this.props;\n\n dispatch(addTranslation(TopRowLocale));\n dispatch(addTranslation(TrialExpiredLocale));\n dispatch(addTranslation(FooterLocale));\n }\n\n render() {\n return (\n \n \n \n
\n \n );\n }\n}\n\nTrialExpiredComponent.propTypes = {\n dispatch: func.isRequired\n};\n\nconst TrialExpired = connect()(TrialExpiredComponent);\n\nexport { TrialExpired };\n","/**\n * The years array that comes from the backend needs\n * to be converted to a format that can be used for the \n * components (which can be toggled/untoggled).\n */\nexport const convertYearsFormat = years =>\n years.map(({ value, contains_data: containsData, disabled, selected }) => ({\n value,\n checked: !disabled && selected,\n hasData: containsData,\n disabled\n }));\n\nexport const convertYearsFormatForDropdown = years =>\n years.map(year => {\n // eslint-disable-next-line\n const { contains_data, selected, ...parsedYear } = year;\n return parsedYear;\n });\n\nexport const filterSelectedYears = years => years.filter(year => year.selected);\n\n/**\n * Returns an array of numbers, with all the years that the user has selected.\n * @param {array} years\n */\nexport const convertYearsToBackendFormat = years =>\n years\n // We just want the checked years of the checkboxes\n .filter(year => year.checked === true)\n // and just the years value\n .reduce((acc, year) => {\n acc.push(year.value);\n return acc;\n }, []);\n\nexport const prepareImportDataForBackend = ({ years, accountPlan } = {}) => {\n const data = { data_import_session: {} };\n\n if (accountPlan) {\n data.data_import_session.account_plan = accountPlan;\n }\n\n if (years) {\n data.data_import_session.years = convertYearsToBackendFormat(years);\n }\n\n return data;\n};\n\nexport const sanitizedIntegrationName = integration =>\n integration === 'e-conomic' ? 'economic' : integration;\n\nexport const sanitizeDataImportSession = ({\n data_import_session: dataImportSession\n}) => {\n const { account_plans: accountPlans, ...parsedData } = dataImportSession;\n parsedData.accountPlans = [...accountPlans];\n\n return parsedData;\n};\n\nexport const translateTotals = ({\n totals,\n translate,\n namespace,\n integration\n}) =>\n totals.map(total => ({\n ...total,\n name:\n total.name === 'empty_overview'\n ? translate(`${integration}.${namespace}.${total.name}.title`)\n : translate(`${namespace}.${total.name}.title`)\n }));\n\nexport const isBalanceZero = (totals = []) => {\n const balanceTotal = totals.find(total => total && total.name === 'balance');\n\n if (!balanceTotal) {\n return false;\n }\n\n return (\n (balanceTotal.cells.find(cell => cell.row_name === 'balance') || {})\n .value === 0\n );\n};\n","import axios, { get, post, delete as axiosDelete } from 'axios';\nimport {\n prepareImportDataForBackend,\n sanitizedIntegrationName\n} from '../helpers/conversions';\n\n/**\n * Listing of integrations\n */\nexport const getIntegrationsListURL = `${API_URL}/integration_modules`;\n\n/**\n * CREATE\n */\n\nexport const createDataImportSessionURL = clientId =>\n `/clients/${clientId}/data_import_sessions`;\n\nexport const generatePostPayload = (integration, token) => {\n const data = {\n integration_module_id: sanitizedIntegrationName(integration),\n data_import_session: { configuration: {} }\n };\n\n if (token) {\n data.data_import_session.configuration.agreement_token = token;\n }\n\n return data;\n};\n\nexport const createDataImportSession = ({ integration, clientId, token }) => {\n const data = generatePostPayload(integration, token);\n\n return axios.post(createDataImportSessionURL(clientId), data, {\n baseURL: API_URL\n });\n};\n\n/**\n * GET\n */\nexport const getDataImportSession = (id, year) =>\n axios.get(\n `/data_import_sessions/${id}${year ? `?current_year=${year}` : ''}`\n );\n\n/**\n * UPDATE\n */\nexport const updateDataImportSessionURL = id => `/data_import_sessions/${id}`;\n\nexport const updateDataImportSessionRequestBody = ({ data, id }) => ({\n method: 'PUT',\n url: updateDataImportSessionURL(id),\n baseURL: API_URL,\n data\n});\n\nexport const updateDataImportSession = ({ id, years, accountPlan }) => {\n const data = prepareImportDataForBackend({ years, accountPlan });\n return axios(updateDataImportSessionRequestBody({ data, id }));\n};\n\n/**\n * CONFIRM\n */\n\nexport const confirmDataImportSession = id =>\n axios.post(`/data_import_sessions/${id}/confirm`);\n\n/**\n * Caseware.\n */\nconst agreementTokenURL = `${API_URL}/agreement_tokens`;\nexport const fetchCasewareExistingTokens = () => get(agreementTokenURL);\nexport const generateNewToken = () =>\n post(agreementTokenURL, {\n source: 'fsr-caseware'\n });\n\nconst deleteTokenURL = id => `${API_URL}/agreement_tokens/${id}`;\nexport const deleteToken = id => axiosDelete(deleteTokenURL(id));\n","import * as types from './actionTypes';\nimport { sanitizeDataImportSession } from './helpers/conversions';\n\nexport const saveDataImportSession = data => ({\n type: types.SAVE_DATA_IMPORT_SESSION,\n payload: sanitizeDataImportSession(data)\n});\n","import React, { Component } from 'react';\nimport { func, oneOf, number, bool, object } from 'prop-types';\nimport { push } from 'connected-react-router';\nimport { connect } from 'react-redux';\nimport { routeWithClientId } from '../../helpers';\nimport {\n setInSessionStorage,\n getFromSessionStorage,\n removeFromSessionStorage,\n DATA_SESSION_IMPORT_ID\n} from '../../services/sessionStorage';\nimport {\n getDataImportSession,\n createDataImportSession\n} from './backend/requests';\n\nimport { LoadingSpinner } from '../../components';\nimport Screen, { TranslateContext } from '../../components/Screen';\nimport { SECTION_INPUTS, INTEGRATION_LIST } from '../../services/navigation';\nimport { saveDataImportSession as saveData } from './actions';\nimport { getURLParams } from '../../helpers/location';\n\nimport locale from './locale.json';\nimport './container.css';\n\nclass IntegrationsContainerComponent extends Component {\n static propTypes = {\n render: func.isRequired,\n goTo: func.isRequired,\n /**\n * Refers to the type of 'card'.\n * A card is the content container and\n * can take a full screen or\n * be wrapped in a grey bg.\n */\n type: oneOf(['medium', 'large']),\n bgColor: oneOf(['default', 'light']),\n id: number,\n saveDataImportSession: func.isRequired,\n /**\n * Some screens don't need to generate\n * a data import session. For example,\n * 424, list of integrations and\n * the generate token for Caseware.\n */\n shouldGenerateDataImportSession: bool,\n locale: object,\n isList: bool\n };\n\n static defaultProps = {\n id: null,\n isList: false,\n type: 'large',\n bgColor: 'default',\n locale: {},\n shouldGenerateDataImportSession: true\n };\n\n async componentDidMount() {\n const {\n id: idFromProps,\n saveDataImportSession,\n shouldGenerateDataImportSession,\n isList\n } = this.props;\n const idFromStorage = getFromSessionStorage(DATA_SESSION_IMPORT_ID);\n\n if (isList) {\n // Removal of previous import session data\n return removeFromSessionStorage(DATA_SESSION_IMPORT_ID);\n }\n\n /**\n * if the data import session is already in store\n * we need to do nothing.\n */\n if (idFromProps) {\n return null;\n }\n\n /**\n * if there is an id in localStorage, means the user\n * started an import so we fetch it.\n */\n if (idFromStorage) {\n const { data } = await getDataImportSession(idFromStorage);\n return saveDataImportSession(data);\n }\n\n if (shouldGenerateDataImportSession) {\n return this.generateDataImportSession();\n }\n\n return null;\n }\n\n generateDataImportSession = async () => {\n const { integration, goTo } = this.props;\n const { clientId, token } = getURLParams(window.location.search);\n\n if (!integration) return goTo(INTEGRATION_LIST);\n\n const response = await createDataImportSession({\n integration,\n clientId,\n token\n });\n\n const { status, data = {} } = response || {};\n\n if (status !== 200 && !data.data_import_session) {\n return this.generateDataImportSession(integration);\n }\n\n if (status !== 200 && !data.data_import_session.years) {\n return this.getDataImportSession(\n integration,\n data.data_import_session.id\n );\n }\n\n return this.storeSession(data);\n };\n\n storeSession = data => {\n const { data_import_session: dataImportSession } = data;\n const { saveDataImportSession } = this.props;\n\n setInSessionStorage(DATA_SESSION_IMPORT_ID, dataImportSession.id);\n saveDataImportSession(data);\n };\n\n render() {\n const {\n bgColor,\n goTo,\n id,\n render,\n type,\n locale: additionalLocale,\n shouldGenerateDataImportSession\n } = this.props;\n\n if (!id && shouldGenerateDataImportSession) return ;\n\n return (\n \n \n \n \n {({ translate }) =>\n render({\n goTo,\n id,\n translate\n })\n }\n \n
\n
\n \n );\n }\n}\n\nconst mapStateToProps = ({ dataImportSession }) => ({\n id: dataImportSession.id\n});\n\nconst mapDispatchToProps = dispatch => ({\n goTo: route => dispatch(push(routeWithClientId(route))),\n saveDataImportSession: id => dispatch(saveData(id))\n});\n\nexport const IntegrationsContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(IntegrationsContainerComponent);\n","export const sanitizeCasewareResponse = ({ data }) => {\n if (data && data['fsr-caseware']) {\n return {\n status: 'hasToken',\n token: data['fsr-caseware'][0].token,\n tokenID: data['fsr-caseware'][0].id,\n disabledInput: true\n };\n }\n return {\n status: 'noToken',\n disabledInput: true\n };\n};\n\nexport const sanitizeCasewareNewTokenResponse = ({ data }) => ({\n token: data.token,\n tokenID: data.id,\n status: 'hasToken'\n});\n\nexport default sanitizeCasewareResponse;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Translate } from 'react-localize-redux';\n\nimport ModalConfirmation from '../../../components/ModalConfirmation';\n\nimport './DeleteToken.css';\n\nexport default class DeleteToken extends Component {\n static propTypes = {\n onClickConfirmDeleteTokenButton: PropTypes.func.isRequired,\n tokenID: PropTypes.number.isRequired\n };\n\n state = {\n isModalOpen: false\n };\n\n onModalClose = () => this.setState({ isModalOpen: false });\n\n openModal = e => {\n e.preventDefault();\n this.setState({ isModalOpen: true });\n };\n\n render() {\n const { onClickConfirmDeleteTokenButton, tokenID } = this.props;\n\n return (\n \n \n
\n \n \n \n
\n
\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Translate } from 'react-localize-redux';\n\nimport DeleteToken from './DeleteToken';\nimport './DisplayToken.css';\n\nconst determineTextBasedOnTokenStatus = ({ status }) => {\n if (status === 'copiedToken') return 'caseware.generateToken.copied';\n return 'caseware.generateToken.copy';\n};\n\nconst DisplayToken = ({\n token,\n status,\n disabledInput,\n onClickConfirmDeleteTokenButton,\n tokenID\n}) => (\n
\n
\n \n\n \n \n \n
\n\n \n
\n);\n\nDisplayToken.propTypes = {\n token: PropTypes.string.isRequired,\n status: PropTypes.string.isRequired,\n onClickConfirmDeleteTokenButton: PropTypes.func.isRequired,\n disabledInput: PropTypes.bool.isRequired,\n tokenID: PropTypes.number.isRequired\n};\n\nexport default DisplayToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ButtonSubmit from '../../../components/ButtonSubmit';\nimport LoadingSpinner from '../../../components/LoadingSpinner';\n\nimport DisplayToken from './DisplayToken';\n\nconst Main = ({\n status,\n token,\n disabledInput,\n tokenID,\n onClickConfirmDeleteTokenButton\n}) => {\n switch (status) {\n case 'hasToken':\n case 'copiedToken':\n return (\n \n );\n\n case 'noToken':\n return ;\n\n default:\n return ;\n }\n};\n\nMain.propTypes = {\n status: PropTypes.string,\n token: PropTypes.string,\n disabledInput: PropTypes.bool,\n tokenID: PropTypes.number,\n onClickConfirmDeleteTokenButton: PropTypes.func.isRequired\n};\n\nMain.defaultProps = {\n status: undefined,\n token: undefined,\n disabledInput: true,\n tokenID: undefined\n};\n\nexport default Main;\n","import React, { Component } from 'react';\nimport { Translate } from 'react-localize-redux';\n\nimport { IntegrationsContainer } from '../container';\n\nimport {\n fetchCasewareExistingTokens,\n generateNewToken,\n deleteToken\n} from '../backend/requests';\nimport {\n sanitizeCasewareResponse,\n sanitizeCasewareNewTokenResponse\n} from '../backend/responses';\n\nimport Main from './Main';\nimport './index.css';\nimport logoNoTokenImg from './token_empty.svg';\nimport logoTokenImg from './token_full.svg';\nimport copiedTokenImg from './token_copied.svg';\n\nexport class GenerateToken extends Component {\n state = {\n status: 'isLoading',\n token: undefined,\n disabledInput: true,\n tokenID: undefined\n };\n\n async componentDidMount() {\n const response = await fetchCasewareExistingTokens();\n this.updateStateOnDataFetched(response);\n }\n\n onClickSubmitButton = async e => {\n e.preventDefault();\n\n if (this.state.status === 'noToken') {\n const response = await generateNewToken();\n return this.setState(sanitizeCasewareNewTokenResponse(response));\n }\n\n if (this.state.status === 'hasToken') return this.copyToken();\n\n return null;\n };\n\n onClickConfirmDeleteTokenButton = async () => {\n await deleteToken(this.state.tokenID);\n this.setState({ status: 'noToken', token: undefined, tokenID: undefined });\n };\n\n copyToken = async () => {\n await this.setState({ disabledInput: false });\n await document.getElementById('DisplayToken-input').select();\n await document.execCommand('copy');\n this.setState({\n status: 'copiedToken',\n disabledInput: true\n });\n };\n\n updateStateOnDataFetched = response => {\n this.setState(sanitizeCasewareResponse(response));\n };\n\n determineLogo = status => {\n switch (status) {\n case 'hasToken':\n return logoTokenImg;\n case 'copiedToken':\n return copiedTokenImg;\n default:\n return logoNoTokenImg;\n }\n };\n\n render() {\n const { status } = this.state;\n\n return (\n (\n \n
\n

\n \n

\n
\n
\n
\n \"logo\"\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n )}\n shouldGenerateDataImportSession={false}\n />\n );\n }\n}\n","/* eslint-disable react/no-typos */\n\nimport React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\n\nimport { func } from 'prop-types';\n\nimport { INPUT_DATA_ROUTE_NAME } from '../../../../services/navigation';\n\nimport './index.css';\n\nexport const SkipImport = ({ goTo, translate }) => (\n
\n goTo(INPUT_DATA_ROUTE_NAME)}\n />\n

{translate('list.buttons.helpText')}

\n
\n);\n\nSkipImport.propTypes = {\n goTo: func.isRequired,\n translate: func.isRequired\n};\n","import queryString from 'query-string';\n\nconst determineLanguageForTheCallBackURL = language => {\n if (language === 'en') return 'en-US';\n return 'da-DK';\n};\n\nconst economicURLParams = clientId => `/import/e-conomic/select${clientId}`;\nconst virkURLParams = clientId => `/import/virk/select${clientId}`;\n\nconst economicAppToken = () => {\n if (ENV !== 'production')\n return 'EXAzu3AUnuoeBMcbnEZDQIlU1VeCf0FnTNYBCiEyxn01';\n return 'suH4wABvsHuYLtmv0rRbTtW23YEx9vqj76MmEY7lf5g1';\n};\n\nexport const economicURL = ({ language }) => {\n const baseURL = 'https://secure.e-conomic.com/secure/api1/requestaccess.aspx';\n const locale = determineLanguageForTheCallBackURL(language);\n const clientId = `?clientId=${\n queryString.parse(window.location.search).clientId\n }`;\n const callbackURL = `${window.encodeURIComponent(\n `${window.location.origin}${window.location.pathname}${economicURLParams(\n clientId\n )}`\n )}`;\n const token = economicAppToken();\n\n return `${baseURL}?appPublicToken=${token}&redirectURL=${callbackURL}&locale=${locale}`;\n};\n\nexport const virkURL = () => {\n const clientId = `?clientId=${\n queryString.parse(window.location.search).clientId\n }`;\n const callbackURL = `integrations${virkURLParams(clientId)}`;\n return `${callbackURL}`;\n};\n\nexport default economicURL;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommonWhiteButton from '../../../../../components/ButtonAction';\nimport { economicURL } from '../../../helpers/integration';\n\nimport economicLogo from '../../../../../shared/images/economicLogo.svg';\n\nconst Economic = ({ translate, language }) => (\n
\n
\n \"economic\"\n
\n
\n
\n {translate('list.economic.title')}\n
\n
\n {translate('list.economic.loginHelpText')}\n
\n window.location.assign(economicURL(language))}\n id=\"e-conomic\"\n text=\"list.economic.loginButton\"\n />\n
\n
\n);\n\nEconomic.propTypes = {\n translate: PropTypes.func.isRequired,\n language: PropTypes.string.isRequired\n};\n\nexport default Economic;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommonWhiteButton from '../../../../../components/ButtonAction';\nimport { virkURL } from '../../../helpers/integration';\nimport virkLogo from '../../../../../shared/images/virkLogo.svg';\n\nconst Virk = ({ translate, language }) => (\n
\n
\n \"virk\"\n
\n
\n
\n {translate('list.virk.title')}\n
\n
\n {translate('list.virk.importHelpText')}\n
\n window.location.assign(virkURL(language))}\n id=\"virk\"\n text=\"list.virk.importButton\"\n />\n
\n
\n);\n\nVirk.propTypes = {\n translate: PropTypes.func.isRequired,\n language: PropTypes.string.isRequired\n};\n\nexport default Virk;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { push } from 'connected-react-router';\n\nimport CommonWhiteButton from '../../../../../components/ButtonAction';\nimport { INTEGRATION_CASEWARE_GENERATE_TOKEN } from '../../../../../services/navigation';\n\nimport casewareLogo from '../../../../../shared/images/casewareLogo.png';\n\nconst Caseware = ({ translate, dispatch }) => (\n
\n
\n \"caseware\"\n
\n
\n
\n {translate('list.caseware.title')}\n
\n
\n {translate('list.caseware.loginHelpText')}\n
\n dispatch(push(INTEGRATION_CASEWARE_GENERATE_TOKEN))}\n id=\"caseware\"\n text=\"list.caseware.loginButton\"\n />\n
\n
\n);\n\nCaseware.propTypes = {\n translate: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired\n};\n\nexport default Caseware;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { TranslateContext } from '../../../../components';\nimport Economic from './Economic';\nimport Virk from './Virk';\nimport Caseware from './Caseware';\n\nexport const Cards = ({ integrations, language, dispatch }) => (\n \n {({ translate }) => (\n
\n {integrations.map(item => {\n switch (item.id) {\n case 'e-conomic':\n return (\n \n );\n case 'virk':\n return (\n \n );\n case 'fsr-caseware':\n return (\n \n );\n\n default:\n return null;\n }\n })}\n
\n )}\n
\n);\n\nCards.propTypes = {\n integrations: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.string\n })\n ).isRequired,\n language: PropTypes.string.isRequired,\n dispatch: PropTypes.func.isRequired\n};\n\nexport default Cards;\n","import React from 'react';\nimport { TranslateContext } from '../../../../components';\nimport './index.css';\n\nexport const Title = () => (\n \n {({ translate }) => (\n
\n

{translate('list.headerTitle')}

\n

{translate('list.headerSubTitle')}

\n
\n )}\n
\n);\n\nexport default Title;\n","import React, { Component, Fragment } from 'react';\nimport { func, string } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate, getActiveLanguage } from 'react-localize-redux';\nimport { get } from 'axios';\n\nimport { paramFromLocation } from '../../../helpers/location';\nimport { CREATE_CLIENT_ROUTE_NAME } from '../../../services/navigation';\nimport LoadingSpinner from '../../../components/LoadingSpinner';\n\nimport { IntegrationsContainer } from '../container';\nimport { getIntegrationsListURL } from '../backend/requests';\nimport { SkipImport } from './SkipImport';\nimport Cards from './Cards';\nimport Title from './Title';\nimport './index.css';\n\n/**\n * This container is responsible for the initial /GET call\n * to fetch the list of integrations.\n *\n * It will then render the existing list of integrations.\n */\nclass ListComponent extends Component {\n static propTypes = {\n translate: func.isRequired,\n language: string.isRequired,\n dispatch: func.isRequired\n };\n\n state = {\n integrations: undefined\n };\n\n componentDidMount() {\n this.getIntegrationList();\n }\n\n componentWillUnmount() {\n this.setState({ integrations: null });\n }\n\n getIntegrationList = async () => {\n const response = await get(getIntegrationsListURL);\n\n // eslint-disable-next-line\n this.setState({ integrations: response.data.integrations });\n };\n\n render() {\n const { translate, language, dispatch } = this.props;\n const { integrations } = this.state;\n\n const shouldShowBottomButton =\n paramFromLocation('from', window.location) === CREATE_CLIENT_ROUTE_NAME;\n\n return (\n (\n \n {integrations ? (\n
\n \n <Cards\n dispatch={dispatch}\n integrations={integrations}\n language={language}\n />\n\n {shouldShowBottomButton ? (\n <SkipImport goTo={goTo} translate={translate} />\n ) : null}\n </div>\n ) : (\n <LoadingSpinner translate={translate} />\n )}\n </Fragment>\n )}\n shouldGenerateDataImportSession={false}\n type=\"large\"\n />\n );\n }\n}\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n language: getActiveLanguage(state.locale).code,\n location: state.router.location\n});\n\nexport const List = connect(mapStateToProps)(ListComponent);\n","export const getSelectedAccountPlan = dataImportSession =>\n dataImportSession.accountPlans &&\n dataImportSession.accountPlans.reduce(\n (acc, item) => (item.selected === true ? item : acc),\n {}\n ).value;\n","import { createContext } from 'react';\n\nexport const RowContext = createContext({\n name: ''\n});\n\nexport const SelectorContext = createContext({\n onClickChildItem: () => undefined,\n onClickParentItem: () => undefined,\n onClickBackButton: () => undefined,\n visiblePanel: undefined,\n selectedOption: undefined\n});\n\nexport const MapScreenContext = createContext({\n data: undefined,\n goTo: undefined,\n integration: undefined,\n isTabAreaLoading: false,\n selectedPanel: undefined,\n selectedTab: undefined,\n toggleNotification: undefined,\n toggleSelectedTab: undefined,\n unmappedCount: undefined\n});\n","export const MAPPED = 'mapped';\nexport const UNMAPPED = 'unmapped';\nexport const TEMPLATES = 'templates';\n","import React from 'react';\nimport { Translate } from 'react-localize-redux';\n\nimport { MapScreenContext } from '../../context';\nimport { MAPPED, UNMAPPED } from './constants';\nimport './index.css';\n\nconst determineSelectedTabClass = ({ selectedTab, panel }) => {\n if (selectedTab === panel) return `TabsList__item TabsList__item--selected`;\n return `TabsList__item`;\n};\n\nexport const Tabs = () => (\n <div className=\"Tabs\">\n <MapScreenContext.Consumer>\n {({ unmappedCount, integration, selectedTab, toggleSelectedTab }) => (\n <ul className=\"TabsList\">\n <li\n className={determineSelectedTabClass({\n selectedTab,\n panel: MAPPED\n })}\n >\n <button type=\"button\" onClick={() => toggleSelectedTab(MAPPED)}>\n <Translate data={{ integration }} id=\"map.main.tabs.tab1\" />\n </button>\n </li>\n <li\n className={determineSelectedTabClass({\n selectedTab,\n panel: UNMAPPED\n })}\n >\n <button type=\"button\" onClick={() => toggleSelectedTab(UNMAPPED)}>\n <Translate id=\"map.main.tabs.tab2\" />\n </button>\n\n {unmappedCount > 0 && (\n <span className=\"TabsList__item--count\">{unmappedCount}</span>\n )}\n </li>\n {/**\n * The following is an upcoming feature.\n <li className=\"TabsList__item\">\n <span>\n <Translate id=\"map.main.tabs.tab3\" />\n </span>\n </li> */}\n </ul>\n )}\n </MapScreenContext.Consumer>\n\n {/* <ul className=\"TabsHelp\">\n <li className=\"TabsHelp__item\">\n <Translate id=\"map.main.tabs.help\" />\n </li>\n </ul> */}\n </div>\n);\n\nexport { MAPPED, UNMAPPED };\n","import { get, put } from 'axios';\nimport { MAPPED } from '../Main/Tabs';\n\nexport const API_DATA_PATH = 'data_import_sessions';\n\n/**\n * selectedTab will determine which enpoind will be hit.\n */\n// eslint-disable-next-line\nexport function apiMapURL({ path, dataSessionId, year, selectedTab }) {\n let endpoint = 'unmapped';\n if (selectedTab === MAPPED) endpoint = 'map';\n\n if (!dataSessionId)\n throw new Error('Data session ID is required to generate a Map URL');\n\n const baseURL = `/${path}/${dataSessionId}/${endpoint}`;\n\n return year ? `${baseURL}?current_year=${year}` : baseURL;\n}\n/** *********************** GET ************************* */\n/**\n * dataSessionId: used in the API url.\n * year: same\n * selectedTab: depending on the selected Tab,\n * the request is to either hit mapped or unmapped endpoints.\n */\nexport async function fetchData({ dataSessionId, year, selectedTab }) {\n const url = apiMapURL({\n path: API_DATA_PATH,\n dataSessionId,\n year,\n selectedTab\n });\n const response = await get(url);\n\n return response;\n}\n\n/**\n * End of GET.\n */\n\n/** *********************** PUT ************************* */\nfunction mergeSourceMappingData({ sourceMappingData, account }) {\n const { children, source_mapping_key: sourceMappingKey } = sourceMappingData;\n const result = { [sourceMappingKey]: account };\n\n return children.reduce(\n (acc, item) =>\n Object.assign(\n result,\n mergeSourceMappingData({ sourceMappingData: item, account })\n ),\n result\n );\n}\n\nexport function preparePayloadForUpdate({ sourceMappingData, account }) {\n return {\n mapping_updates: {\n ...mergeSourceMappingData({ sourceMappingData, account })\n }\n };\n}\n\nexport async function requestUpdateData({\n sourceMappingData,\n account,\n dataSessionId,\n selectedTab,\n year\n}) {\n const payload = preparePayloadForUpdate({ sourceMappingData, account });\n const url = apiMapURL({\n path: API_DATA_PATH,\n dataSessionId,\n year,\n selectedTab\n });\n const response = await put(url, payload);\n\n return response;\n}\n","export function sanitizeMappableDataResponse(response) {\n const {\n mappable,\n unmapped_count: unmappedCount,\n overview,\n mapping_completed: mappingCompleted\n } = response.data;\n\n if (!mappable || unmappedCount === undefined || !overview) {\n const error = `Response data is not being parsed correctly, when hitting the following endpoint: ${\n response.request.responseURL\n }\\n\\n`;\n throw new Error(error);\n }\n\n return {\n data: mappable,\n unmappedCount,\n mappingCompleted,\n overview\n };\n}\n\nexport function sanitizeAccountName(account) {\n return {\n childName: account.child_name,\n parentName: account.parent_name\n };\n}\n","import {\n object,\n shape,\n oneOf,\n string,\n arrayOf,\n integer,\n float,\n bool,\n number,\n func\n} from 'prop-types';\nimport { ECONOMIC, VIRK, CASEWARE } from '../../../../helpers/constants';\n\nconst integrationType = {\n integration: oneOf([ECONOMIC, VIRK, CASEWARE])\n};\n\nconst rowsType = {\n rows: arrayOf(object).isRequired\n};\n\nconst yearsType = {\n years: arrayOf(\n shape({\n text: integer,\n value: integer,\n selected: bool,\n contains_data: bool\n })\n ).isRequired\n};\n\nexport const BannerTypes = integrationType;\nexport const OverviewTypes = {\n match: shape({\n params: shape({\n ...integrationType\n }).isRequired\n }).isRequired,\n ...yearsType,\n overview: shape({\n year: number,\n totals: arrayOf(\n shape({\n name: string,\n type: string,\n style: string,\n cells: arrayOf(\n shape({\n display: string,\n error: shape({\n type: string,\n title: string,\n message: string\n }),\n id: integer,\n precision: integer,\n type: string,\n value: float\n })\n )\n })\n )\n })\n};\n\nexport const TableTypes = {\n ...integrationType,\n ...rowsType,\n ...yearsType,\n selectedYear: number.isRequired,\n onSelectYear: func.isRequired,\n loading: bool\n};\n","import React from 'react';\nimport { Dropdown } from 'semantic-ui-react';\n\nimport { convertYearsFormatForDropdown } from '../../helpers/conversions';\nimport { Tooltip, SimpleTable } from '../../../../components';\n\nimport { TableTypes } from '../types';\nimport './index.css';\n\nexport const Table = ({\n rows,\n years,\n selectedYear,\n onSelectYear,\n loading,\n translate,\n integration\n}) => (\n <section className=\"Overview-Table\">\n <div className=\"Overview-TableHeader\">\n <div className=\"Overview-TableHeaderTitle\">\n <h3>{translate('overview.table.title')}</h3>\n <Tooltip\n message={`${integration}.tooltips.overview.table.message`}\n type=\"info\"\n />\n </div>\n <Dropdown\n className=\"Overview-Table__select-year\"\n loading={loading}\n options={convertYearsFormatForDropdown(years)}\n selectOnBlur={false}\n value={selectedYear}\n onChange={onSelectYear}\n />\n </div>\n <SimpleTable integration={integration} rows={rows} />\n </section>\n);\n\nTable.propTypes = TableTypes;\n","import React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\n\nexport const ActionButtons = ({\n error,\n translate,\n onClickSubmitButton,\n onClickMapButton\n}) => {\n const buttons = [\n <Button\n key=\"submit\"\n kind={error ? '' : 'primary'}\n text={translate('ButtonsArea.submit')}\n type=\"button\"\n onClick={onClickSubmitButton}\n />,\n <Button\n key=\"map\"\n kind={error ? 'primary' : ''}\n text={translate('ButtonsArea.map')}\n type=\"button\"\n onClick={onClickMapButton}\n />\n ];\n\n return error ? buttons.reverse() : buttons;\n};\n","/* eslint-disable react/no-typos */\nimport React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\nimport { func, bool } from 'prop-types';\nimport { TranslateContext } from '../../../../components/Screen';\nimport { ActionButtons } from './ActionButtons';\nimport './index.css';\n\nexport const ButtonsOverview = ({\n error,\n onClickSubmitButton,\n onClickMapButton,\n handleCancel\n}) => (\n <TranslateContext.Consumer>\n {({ translate }) => (\n <div className=\"Overview__buttons-area\">\n <div className=\"Overview__action-buttons\">\n <ActionButtons\n {...{\n translate,\n error,\n onClickSubmitButton,\n onClickMapButton\n }}\n />\n </div>\n <div className=\"Overview__cancel\">\n <Button\n text={translate('ButtonsArea.cancel')}\n onClick={handleCancel}\n />\n </div>\n </div>\n )}\n </TranslateContext.Consumer>\n);\n\nButtonsOverview.propTypes = {\n onClickSubmitButton: func.isRequired,\n onClickMapButton: func.isRequired,\n handleCancel: func.isRequired,\n error: bool\n};\n\nButtonsOverview.defaultProps = {\n error: false\n};\n","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport {\n INTEGRATION_LIST,\n INPUT_DATA_ROUTE_NAME\n} from '../../../services/navigation';\n\nimport {\n removeFromSessionStorage,\n DATA_SESSION_IMPORT_ID\n} from '../../../services/sessionStorage';\nimport { saveDataImportSession as saveSession } from '../actions';\nimport {\n getDataImportSession,\n confirmDataImportSession\n} from '../backend/requests';\nimport {\n translateTotals,\n filterSelectedYears,\n isBalanceZero\n} from '../helpers/conversions';\nimport { getSelectedAccountPlan } from '../helpers/extractions';\nimport { InfoBanner, CardTitle, LoadingSpinner } from '../../../components';\nimport { IntegrationsContainer } from '../container';\nimport { OverviewTypes } from './types';\nimport { Table } from './Table';\nimport { ButtonsOverview } from './Buttons';\nimport {\n trackDataImportCancelled,\n trackDataImportSuccess\n} from '../../../external/segment';\n\nimport './index.css';\n\nexport class OverviewComponent extends Component {\n static propTypes = OverviewTypes;\n\n state = {\n loading: false,\n loadingDropdown: false\n };\n\n integration = this.props.match.params.integration;\n\n onClickMapButton = ({ e, goTo, integration }) => {\n e.preventDefault();\n const url = `${INTEGRATION_LIST}/map/${integration}/main`;\n goTo(url);\n return url;\n };\n\n onClickSubmitButton = async ({ e, goTo, integration }) => {\n e.preventDefault();\n const { id, vatin, selectedAccountPlan } = this.props;\n\n this.toggleLoading();\n\n await trackDataImportSuccess({\n source: integration,\n cvr: vatin,\n accountPlan: selectedAccountPlan\n });\n\n await confirmDataImportSession(id);\n // removal of session data because the import is complete\n removeFromSessionStorage(DATA_SESSION_IMPORT_ID);\n\n return this.goToInput(goTo);\n };\n\n getDataImportSession = async year => {\n const { id, saveDataImportSession } = this.props;\n const { data } = await getDataImportSession(id, year);\n\n saveDataImportSession(data);\n };\n\n goToInput = goTo => {\n const url = INPUT_DATA_ROUTE_NAME;\n goTo(url);\n return url;\n };\n\n fetchDataImportSessionOnYearChange = async (e, { value: year }) => {\n this.toggleLoadingDropdown();\n this.getDataImportSession(year);\n this.toggleLoadingDropdown();\n };\n\n toggleLoading = () =>\n this.setState(prevState => ({\n loading: !prevState.loading\n }));\n\n toggleLoadingDropdown = () =>\n this.setState(prevState => ({\n loadingDropdown: !prevState.loadingDropdown\n }));\n\n handleCancel = goTo => {\n const { integration } = this;\n\n trackDataImportCancelled({ source: integration });\n return this.goToInput(goTo);\n };\n\n render() {\n const { loading, loadingDropdown } = this.state;\n const { overview, years, match } = this.props;\n const { integration } = match.params;\n const hasError = !isBalanceZero(overview.totals);\n\n return (\n <IntegrationsContainer\n render={({ goTo, id, translate }) => (\n <div className=\"Overview-container\">\n {loading || !id ? (\n <LoadingSpinner />\n ) : (\n <Fragment>\n <CardTitle\n integration={integration}\n subtitle=\"overview.subtitle\"\n title=\"overview.title\"\n />\n\n {hasError ? (\n <InfoBanner\n integration={integration}\n subtitle={`${integration}.overview.banner.text`}\n title={`${integration}.overview.banner.title`}\n />\n ) : null}\n <Table\n integration={integration}\n loading={loadingDropdown}\n rows={translateTotals({\n totals: overview.totals,\n translate,\n namespace: 'overview',\n integration\n })}\n selectedYear={overview.year}\n translate={translate}\n years={filterSelectedYears(years)}\n onSelectYear={this.fetchDataImportSessionOnYearChange}\n />\n <ButtonsOverview\n error={hasError}\n handleCancel={e => {\n e.preventDefault();\n this.handleCancel(goTo);\n }}\n onClickMapButton={e =>\n this.onClickMapButton({ e, goTo, integration })\n }\n onClickSubmitButton={e =>\n this.onClickSubmitButton({\n e,\n goTo,\n integration\n })\n }\n />\n </Fragment>\n )}\n </div>\n )}\n type=\"large\"\n />\n );\n }\n}\n\nconst mapStateToProps = ({ dataImportSession, client }) => ({\n overview: dataImportSession.overview,\n years: dataImportSession.years,\n id: dataImportSession.id,\n selectedAccountPlan: getSelectedAccountPlan(dataImportSession),\n vatin: client.vatin\n});\n\nconst mapDispatchToProps = dispatch => ({\n saveDataImportSession: data => dispatch(saveSession(data))\n});\n\nexport const Overview = connect(\n mapStateToProps,\n mapDispatchToProps\n)(OverviewComponent);\n\nexport { rows } from './mocks';\nexport { Table, ButtonsOverview };\n","/* eslint-disable react/no-typos */\nimport React from 'react';\nimport { func } from 'prop-types';\nimport { Button } from '@karnov/kui-deprecated';\n\nimport './index.css';\n\nconst ButtonsArea = ({ translate, onClickSubmitButton, handleCancel }) => (\n <div className=\"Map__action-buttons\">\n <Button\n key=\"submit\"\n text={translate('ButtonsArea.submit')}\n type=\"button\"\n onClick={onClickSubmitButton}\n />\n <div className=\"Map__cancel\">\n <Button text={translate('ButtonsArea.cancel')} onClick={handleCancel} />\n </div>\n </div>\n);\n\nButtonsArea.propTypes = {\n translate: func.isRequired,\n onClickSubmitButton: func.isRequired,\n handleCancel: func.isRequired\n};\n\nexport { ButtonsArea };\n","import { arrayOf, object, string, number, func, bool, shape } from 'prop-types';\n\nconst integration = string.isRequired;\nconst data = arrayOf(object).isRequired;\n\nexport const GroupType = {\n isRoot: bool\n};\n\nexport const LeftTextType = {\n name: string.isRequired,\n label: string.isRequired,\n integration: string.isRequired\n};\n\nexport const LeftType = {\n name: string.isRequired,\n label: string.isRequired,\n length: number.isRequired,\n toggleChildren: func.isRequired,\n isExpanded: bool,\n hasOriginalValueChanged: bool\n};\n\nexport const ExpandButtonType = {\n length: number.isRequired,\n toggleChildren: func.isRequired,\n integration: string.isRequired,\n isExpanded: bool\n};\n\nexport const RowType = {\n source_mapping_key: string.isRequired,\n source_mapping_label: string.isRequired,\n index: number.isRequired\n};\n\nexport const MapScreenTypes = {\n match: shape({\n params: shape({\n integration: string.isRequired\n }).isRequired\n }).isRequired\n};\n\nexport const MapScreenContentTypes = {\n integration,\n onClickSubmitButton: func.isRequired,\n handleCancel: func.isRequired,\n translate: func.isRequired,\n selectedTab: string.isRequired,\n isNotificationOpen: bool,\n getData: func.isRequired,\n isConfimationModalOpen: bool.isRequired,\n overviewYear: number,\n toggleConfirmationModal: func.isRequired,\n importSessionSelectedYears: arrayOf(\n shape({\n text: number.isRequired,\n value: number.isRequired,\n selected: bool.isRequired,\n contains_data: bool.isRequired\n }).isRequired\n ).isRequired\n};\n\nexport const MainTypes = {\n integration,\n data,\n translate: func.isRequired\n};\n\nexport const undoButtonTypes = {\n rowData: shape({\n source_mapping_key: string,\n children: arrayOf(object)\n }).isRequired,\n updateData: func.isRequired\n};\n\nexport const DiscrepancyNotificationTypes = {\n onClickSubmitButton: func.isRequired\n};\n","import { string, func, array, shape, bool, object, number } from 'prop-types';\n\n// global shared\nconst selectedOption = shape({\n parentName: string,\n childName: string\n}).isRequired;\n\nconst data = array.isRequired;\n\nconst rowData = shape({\n changed: bool.isRequired,\n children: data.isRequired,\n kbo_account: shape({\n child_name: string,\n parent_name: string\n }).isRequired,\n value: shape({\n display: string.isRequired,\n error: object,\n exception: string,\n grid_position: string,\n icon: string,\n id: number,\n row_name: string,\n style_properties: object,\n type: string.isRequired,\n value: number\n })\n});\n\n// Dropdown index\nexport const DropdownTypes = {\n account: shape({\n childName: string,\n parentName: string\n }).isRequired,\n rowData\n};\n\n// Panels\nconst sharedPanelType = {\n data,\n selectedOption\n};\n\nexport const childPanelType = {\n ...sharedPanelType,\n onClickBackButton: func.isRequired,\n parentName: string.isRequired\n};\n\nexport const parentPanelType = {\n ...sharedPanelType\n};\n\n// Selector\nconst sharedSelectorType = {\n closeModal: func.isRequired\n};\n\nexport const selectorType = {\n closeModal: func.isRequired,\n isModalOpen: bool.isRequired,\n selectedOption,\n data\n};\n\nexport const selectorHeaderType = sharedSelectorType;\n\n// SelectorItem\nexport const selectorItemType = {\n text: string.isRequired,\n active: bool.isRequired\n};\n\n// Right side of the Row\nexport const RightComponentTypes = {\n value: object.isRequired,\n name: string.isRequired,\n account: object.isRequired\n};\n","import React from 'react';\nimport { Translate } from 'react-localize-redux';\nimport { Icon } from 'semantic-ui-react';\n\nimport { selectorItemType } from '../../types';\nimport { SelectorContext, MapScreenContext } from '../../../context';\nimport './index.css';\n\nexport const ChildItem = ({ text, active }) => (\n <MapScreenContext.Consumer>\n {({ onSelectNewKboAccountItem }) => (\n <SelectorContext.Consumer>\n {({ rowData, closeModal, toggleLoading }) => (\n <button\n className=\"SectionItem\"\n type=\"button\"\n onClick={async () => {\n toggleLoading();\n await onSelectNewKboAccountItem({\n hasChildren: rowData.children.length > 0,\n closeDropdown: closeModal,\n sourceMappingData: rowData,\n account: text,\n toggleInnerLoading: toggleLoading\n });\n }}\n >\n <div className=\"Left\">\n <div className=\"Icon-container\">\n {active ? <Icon name=\"check\" /> : null}\n </div>\n <p>\n <Translate id={`map.selector.${text}`} />\n </p>\n </div>\n </button>\n )}\n </SelectorContext.Consumer>\n )}\n </MapScreenContext.Consumer>\n);\n\nChildItem.propTypes = selectorItemType;\n","import React from 'react';\nimport { Icon } from 'semantic-ui-react';\nimport { Translate } from 'react-localize-redux';\n\nimport { selectorItemType } from '../../types';\nimport { SelectorContext } from '../../../context';\n\nimport './index.css';\n\nexport const ParentItem = ({ text, active }) => (\n <SelectorContext.Consumer>\n {({ onClickParentItem }) => (\n <button\n className=\"SectionItem\"\n type=\"button\"\n onClick={() => onClickParentItem({ text })}\n >\n <div className=\"Left\">\n <div className=\"Icon-container\">\n {active ? <Icon name=\"check\" /> : null}\n </div>\n <p>\n <Translate id={`map.selector.${text}`} />\n </p>\n </div>\n <Icon name=\"chevron right\" />\n </button>\n )}\n </SelectorContext.Consumer>\n);\n\nParentItem.propTypes = selectorItemType;\n","import React from 'react';\nimport { Icon } from 'semantic-ui-react';\nimport { Translate } from 'react-localize-redux';\n\nimport { childPanelType } from '../../../types';\nimport { ChildItem } from '../../SelectorItem';\n\nexport const ChildPanel = ({\n onClickBackButton,\n data,\n selectedOption,\n parentName\n}) => (\n <div className=\"ChildPanel-container\">\n <button className=\"header\" type=\"button\" onClick={onClickBackButton}>\n <Icon name=\"chevron left\" />\n <span>\n <Translate id={`map.selector.${parentName}`} />\n </span>\n </button>\n\n {data.find(item => item.name === parentName).children.map(item => (\n <ChildItem\n key={item.id}\n active={selectedOption.childName === item.name}\n text={item.name}\n />\n ))}\n </div>\n);\n\nChildPanel.propTypes = childPanelType;\n","import React, { Fragment } from 'react';\nimport { Icon } from 'semantic-ui-react';\nimport { string } from 'prop-types';\nimport { Translate } from 'react-localize-redux';\n\nimport { parentPanelType } from '../../../types';\nimport { ParentItem } from '../../SelectorItem';\nimport { MapScreenContext, RowContext } from '../../../../context';\n\nexport const ResetOptionContent = ({ parentName }) => (\n <div className=\"Icon-container\">\n {parentName === null && <Icon name=\"check\" />}\n </div>\n);\n\nResetOptionContent.propTypes = {\n parentName: string\n};\n\nResetOptionContent.defaultProps = {\n parentName: null\n};\n\nexport const ParentPanel = ({\n data,\n selectedOption,\n closeModal,\n toggleLoading\n}) => (\n <div className=\"ParentPanel-container\">\n {data.map(item => (\n <ParentItem\n key={item.id}\n active={selectedOption.parentName === item.name}\n text={item.name}\n />\n ))}\n <MapScreenContext.Consumer>\n {({ onSelectNewKboAccountItem }) => (\n <Fragment>\n <RowContext.Consumer>\n {({ rowData }) => (\n <button\n className=\"SectionItem\"\n type=\"button\"\n onClick={async () => {\n toggleLoading();\n\n await onSelectNewKboAccountItem({\n hasChildren: rowData.children.length > 0,\n closeDropdown: closeModal,\n sourceMappingData: rowData,\n account: null,\n toggleInnerLoading: toggleLoading\n });\n }}\n >\n <div className=\"Left\">\n <ResetOptionContent parentName={selectedOption.parentName} />\n <p>\n <Translate id=\"map.selector.null\" />\n </p>\n </div>\n </button>\n )}\n </RowContext.Consumer>\n </Fragment>\n )}\n </MapScreenContext.Consumer>\n </div>\n);\n\nParentPanel.propTypes = parentPanelType;\n","import React, { Fragment } from 'react';\n\nimport { VIRK } from '../../../../../../helpers/constants';\nimport { TranslateContext } from '../../../../../../components/Screen';\nimport { selectorHeaderType } from '../../types';\nimport { RowContext, MapScreenContext } from '../../../context';\n\nimport closeIcon from './closeIcon.svg';\n\nconst isVirk = integration => integration === VIRK;\n\nexport const SelectorHeader = ({ closeModal }) => (\n <section className=\"Selector-header\">\n <button className=\"close-button\" type=\"button\" onClick={closeModal}>\n <img alt=\"close\" src={closeIcon} />\n </button>\n <div className=\"header-text\">\n <TranslateContext.Consumer>\n {({ translate }) => (\n <MapScreenContext.Consumer>\n {({ integration }) => (\n <RowContext.Consumer>\n {({ name, label }) => (\n <Fragment>\n <p className=\"title\">\n {translate('map.row.selector.title')}\n </p>\n <p className=\"subtitle\">\n {isVirk(integration) ? label : name}\n </p>\n </Fragment>\n )}\n </RowContext.Consumer>\n )}\n </MapScreenContext.Consumer>\n )}\n </TranslateContext.Consumer>\n </div>\n </section>\n);\n\nSelectorHeader.propTypes = selectorHeaderType;\n","import React, { Component } from 'react';\nimport { Modal } from 'semantic-ui-react';\nimport { LoadingSpinner } from '../../../../../../components';\nimport { SelectorContext } from '../../../context';\nimport { ParentPanel, ChildPanel } from '../Panels';\nimport { selectorType } from '../../types';\n\nimport { SelectorHeader } from './Header';\nimport './index.css';\n\nexport default class Selector extends Component {\n static propTypes = selectorType;\n\n state = {\n visiblePanel: 'parent', // can be 'parent' or 'child'\n isLoading: false\n };\n\n // Enables the child items panel\n onClickParentItem = ({ text }) =>\n this.setState({ visiblePanel: 'child', parentName: text });\n\n // Returns from child to parent panel\n onClickBackButton = () => this.setState({ visiblePanel: 'parent' });\n\n onClickCloseModal = () => {\n const { closeModal } = this.props;\n this.setState({ visiblePanel: 'parent' });\n\n closeModal();\n };\n\n renderPanel = () => {\n const { data, rowData, selectedOption } = this.props;\n const { visiblePanel, parentName } = this.state;\n\n if (visiblePanel === 'parent') {\n return (\n <ParentPanel\n closeModal={this.onClickCloseModal}\n data={data}\n rowData={rowData}\n selectedOption={selectedOption}\n toggleLoading={this.toggleLoading}\n visiblePanel={visiblePanel}\n />\n );\n }\n return (\n <ChildPanel\n data={data}\n parentName={parentName}\n selectedOption={selectedOption}\n visiblePanel={visiblePanel}\n onClickBackButton={this.onClickBackButton}\n />\n );\n };\n\n toggleLoading = () =>\n this.setState(({ isLoading }) => ({\n isLoading: !isLoading\n }));\n\n render() {\n const { closeModal, data, isModalOpen, rowData } = this.props;\n\n const { visiblePanel, isLoading } = this.state;\n return (\n <Modal\n centered={false}\n className=\"Selector-container\"\n closeIcon={false}\n open={isModalOpen}\n size=\"mini\"\n onClose={this.onClickCloseModal}\n >\n <SelectorContext.Provider\n value={{\n visiblePanel,\n rowData,\n toggleLoading: this.toggleLoading,\n onClickParentItem: this.onClickParentItem,\n onClickBackButton: this.onClickBackButton,\n data,\n closeModal: this.onClickCloseModal\n }}\n >\n {isLoading && <LoadingSpinner centered />}\n <div className={`Selector-wrapper ${isLoading ? 'hidden' : ''}`}>\n <SelectorHeader closeModal={closeModal} />\n <section className=\"Selector-content\">{this.renderPanel()}</section>\n </div>\n </SelectorContext.Provider>\n </Modal>\n );\n }\n}\n","export const dropdownData = [\n {\n name: 'profit_loss_statement',\n id: 999,\n children: [\n {\n name: 'turnover',\n id: 1000\n },\n {\n name: 'costs_of_goods_sold',\n id: 1001\n },\n {\n name: 'other_variable_costs',\n id: 1002\n },\n {\n name: 'staff_costs',\n id: 1003\n },\n {\n name: 'sales_and_marketing_expenses',\n id: 1004\n },\n {\n name: 'costs_of_premises',\n id: 1005\n },\n {\n name: 'administrative_expenses',\n id: 1006\n },\n {\n name: 'other_operating_expenses_net',\n id: 1007\n },\n {\n name: 'depreciation_amortisation',\n id: 1008\n },\n {\n name: 'financial_income',\n id: 1009\n },\n {\n name: 'financial_expenses',\n id: 1010\n },\n {\n name: 'corporate_tax',\n id: 1011\n }\n ]\n },\n {\n name: 'assets',\n id: 1999,\n children: [\n {\n name: 'intangible_assets',\n id: 2000\n },\n {\n name: 'tangible_assets',\n id: 2001\n },\n {\n name: 'deferred_tax_assets',\n id: 2002\n },\n {\n name: 'financial_assets',\n id: 2003\n },\n {\n name: 'inventories',\n id: 2004\n },\n {\n name: 'accounts_receivable',\n id: 2005\n },\n {\n name: 'other_receivables',\n id: 2006\n },\n {\n name: 'short_term_investments',\n id: 2007\n },\n {\n name: 'cash_and_cash_equivalents',\n id: 2008\n }\n ]\n },\n {\n name: 'total_liabilities_and_equity',\n id: 2999,\n children: [\n {\n name: 'equity_including_minority_interests',\n id: 3000\n },\n {\n name: 'deferred_tax_liabilities',\n id: 3001\n },\n {\n name: 'other_provisions',\n id: 3002\n },\n {\n name: 'credit_institutions_non_current_debt',\n id: 3003\n },\n {\n name: 'other_interest_bearing_debt_non_current',\n id: 3004\n },\n {\n name: 'credit_institutions_current_debt',\n id: 3005\n },\n {\n name: 'other_interest_bearing_debt_current',\n id: 3006\n },\n {\n name: 'accounts_payable',\n id: 3007\n },\n {\n name: 'other_payables',\n id: 3008\n }\n ]\n },\n {\n name: 'supplemental_information',\n id: 3999,\n children: [\n {\n name: 'employee',\n id: 4000\n },\n {\n name: 'hours',\n id: 4001\n },\n {\n name: 'square_meters',\n id: 4002\n }\n ]\n }\n];\n","import React, { Component } from 'react';\nimport { Translate } from 'react-localize-redux';\nimport { Button, Icon } from 'semantic-ui-react';\nimport { RowContext } from '../../context';\n\nimport Selector from './Selector';\nimport { dropdownData } from './static';\nimport { DropdownTypes } from '../types';\n\nimport './index.css';\n\nclass Dropdown extends Component {\n static propTypes = DropdownTypes;\n\n state = {\n isModalOpen: false\n };\n\n /**\n * Should only update when new data has been received,\n * and there is a new account name.\n * Or when the visibility of the modal has been toggled.\n */\n shouldComponentUpdate = (nextProps, nextState) => {\n const {\n account: { childName }\n } = this.props;\n const { isModalOpen } = this.state;\n const hasAccountNameChanged = childName !== nextProps.account.childName;\n const hasModalOpenStatusChange = nextState.isModalOpen !== isModalOpen;\n\n return hasAccountNameChanged || hasModalOpenStatusChange;\n };\n\n openModal = () => this.setState({ isModalOpen: true });\n\n closeModal = () => this.setState({ isModalOpen: false });\n\n render() {\n const { account } = this.props;\n const { childName } = account;\n const { isModalOpen } = this.state;\n\n return (\n <div className=\"Row-Dropdown-container\">\n <Button className=\"Row-Dropdown-button\" onClick={this.openModal}>\n <p className=\"text\">\n <Translate id={`map.selector.${childName}`} />\n </p>\n <Icon name=\"chevron down\" />\n </Button>\n <RowContext.Consumer>\n {({ rowData }) => (\n <Selector\n closeModal={this.closeModal}\n data={dropdownData}\n isModalOpen={isModalOpen}\n rowData={rowData}\n selectedOption={account}\n />\n )}\n </RowContext.Consumer>\n </div>\n );\n }\n}\n\nexport { Dropdown };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { rawToPretty } from '../../../../../components/Cell/conversions';\nimport './Value.css';\n\nconst mapStateToProps = state => ({\n numberFormat: state.client.numberFormat\n});\n\nconst Value = connect(mapStateToProps)(({ value, numberFormat }) => (\n <div className=\"Value-container\">\n <p className=\"Value-container__value\">\n {\n rawToPretty({\n ...value,\n // backend should send this directly.\n numberFormat,\n // backend needs to update this in the cell api.\n style: value.display\n }).displayValue\n }\n </p>\n </div>\n));\n\nexport { Value };\n","/* eslint-disable react/no-typos */\nimport React from 'react';\nimport { RightComponentTypes } from '../types';\nimport { Dropdown } from '../Dropdown';\n\nimport { Value } from './Value';\nimport './index.css';\n\nconst Right = ({ value, name, account }) => (\n <div className=\"Row-rightarea\">\n <Dropdown account={account} name={name} />\n <Value value={value} />\n </div>\n);\n\nRight.propTypes = RightComponentTypes;\n\nexport { Right };\n","import React, { Component } from 'react';\nimport { Button as SemanticUIButton } from 'semantic-ui-react';\nimport { Translate } from 'react-localize-redux';\nimport { undoButtonTypes } from '../../types';\n\nimport { MapScreenContext, RowContext } from '../../context';\nimport './UndoButton.css';\n\nexport class Button extends Component {\n state = {\n isLoading: false\n };\n\n render() {\n const { rowData, updateData } = this.props;\n const { isLoading } = this.state;\n\n return (\n <SemanticUIButton\n className=\"Map__undo\"\n loading={isLoading}\n onClick={async () => {\n this.setState({ isLoading: true });\n await updateData({\n sourceMappingData: rowData,\n account: 'restore_to_default'\n });\n }}\n >\n <Translate id=\"map.row.undo\" />\n </SemanticUIButton>\n );\n }\n}\n\nButton.propTypes = undoButtonTypes;\n\nexport const UndoButton = () => (\n <MapScreenContext.Consumer>\n {({ updateData }) => (\n <RowContext.Consumer>\n {({ rowData }) => <Button {...{ updateData, rowData }} />}\n </RowContext.Consumer>\n )}\n </MapScreenContext.Consumer>\n);\n","import React from 'react';\n\nimport { VIRK } from '../../../../../helpers/constants';\nimport { MapScreenContext } from '../../context';\nimport { LeftType, LeftTextType, ExpandButtonType } from '../../types';\nimport { UndoButton } from './UndoButton';\n\nimport plusIcon from './plus.svg';\nimport minusIcon from './minus.svg';\nimport './index.css';\n\nconst isVirk = integration => integration === VIRK;\n\n/**\n * Because virk replaces 'label' with 'name'.\n */\nconst LeftText = ({ integration, name, label }) => {\n const label1 = isVirk(integration) ? label : name;\n const label2 = isVirk(integration) ? null : label;\n\n return (\n <div className=\"Row__text\">\n <div className=\"Row__title\">{label1}</div>\n <div className=\"Row__description\">{label2}</div>\n </div>\n );\n};\n\nLeftText.propTypes = LeftTextType;\n\nconst ExpandButton = ({ length, integration, toggleChildren, isExpanded }) => {\n if (length <= 0) return null;\n\n return (\n <button\n className={`${isVirk(integration) ? '__expand--centered' : '__expand'}`}\n type=\"button\"\n onClick={toggleChildren}\n >\n <img\n alt={isExpanded ? 'Collapse' : 'Expand'}\n className=\"plusIcon\"\n src={isExpanded ? minusIcon : plusIcon}\n />\n </button>\n );\n};\n\nExpandButton.propTypes = ExpandButtonType;\n\nconst Left = ({\n name,\n label,\n length,\n toggleChildren,\n isExpanded,\n hasOriginalValueChanged\n}) => (\n <MapScreenContext.Consumer>\n {({ integration }) => (\n <div className=\"Row-leftarea\">\n <div className=\"Row__text-wrapper\">\n <ExpandButton\n integration={integration}\n isExpanded={isExpanded}\n length={length}\n toggleChildren={toggleChildren}\n />\n\n <LeftText integration={integration} label={label} name={name} />\n </div>\n {hasOriginalValueChanged && <UndoButton />}\n </div>\n )}\n </MapScreenContext.Consumer>\n);\n\nLeft.propTypes = LeftType;\n\nexport { Left, LeftText, ExpandButton };\n","import React, { Component } from 'react';\n\nimport { sanitizeAccountName } from '../backend';\nimport { RowType } from '../types';\nimport { RowContext } from '../context';\nimport { Group } from '../Group';\n\nimport { Right } from './Right';\nimport { Left } from './Left';\nimport { Dropdown } from './Dropdown';\n\nimport './index.css';\n\nclass Row extends Component {\n state = {\n isExpanded: false\n };\n\n toggleChildren = () =>\n this.setState(prevState => ({\n isExpanded: !prevState.isExpanded\n }));\n\n render() {\n const {\n source_mapping_key: name,\n source_mapping_label: label,\n kbo_account: kboAccount,\n childrenData,\n rowData,\n isRoot,\n value,\n changed: hasOriginalValueChanged\n } = this.props;\n\n const account = sanitizeAccountName(kboAccount);\n const { isExpanded } = this.state;\n\n return (\n <RowContext.Provider value={{ name, label, rowData, childrenData }}>\n <ul\n className={`Row-container ${isRoot ? 'Row-container--isRoot' : null}`}\n >\n <li className=\"Row-container__item\">\n <Left\n hasOriginalValueChanged={hasOriginalValueChanged}\n isExpanded={isExpanded}\n label={label}\n length={childrenData.length}\n name={name}\n toggleChildren={this.toggleChildren}\n />\n\n <Right account={account} label={label} name={name} value={value} />\n </li>\n\n {isExpanded && <Group data={childrenData} isContainer={false} />}\n </ul>\n </RowContext.Provider>\n );\n }\n}\n\nRow.propTypes = RowType;\n\nexport { Row, Group, Right, Left, Dropdown };\n","import React from 'react';\nimport { Row } from '../Row';\nimport { GroupType } from '../types';\nimport './index.css';\n\nconst Group = ({ isRoot, data }) => (\n <div className=\"Group-container\">\n {data.map((item, index) => (\n <Row\n key={item.source_mapping_key}\n childrenData={item.children}\n index={index}\n isRoot={isRoot}\n rowData={item}\n value={item.value}\n {...item}\n />\n ))}\n </div>\n);\n\nGroup.propTypes = GroupType;\n\nexport { Group };\n","import React from 'react';\nimport { bool, func } from 'prop-types';\nimport circleExclamation from '../../../../../shared/images/circleExclamation.svg';\n\nimport './index.css';\n\nexport const Title = ({ hasNoDiscrepancy, translate }) => {\n if (hasNoDiscrepancy) {\n return (\n <div className=\"Title Title--no-discrepancy\">\n <div className=\"Title__text\">\n <h2>{translate('map.main.noDiscrepancy.title')}</h2>\n <p>{translate('map.main.noDiscrepancy.subtitle')}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"Title\">\n <div className=\"Title__icon\">\n <img alt=\"Warning: missing allocation\" src={circleExclamation} />\n </div>\n <div className=\"Title__text\">\n <h2>{translate('map.main.title')}</h2>\n <p>{translate('map.main.subtitle')}</p>\n </div>\n </div>\n );\n};\n\nTitle.propTypes = {\n hasNoDiscrepancy: bool,\n translate: func.isRequired\n};\n\nTitle.defaultProps = {\n hasNoDiscrepancy: false\n};\n","import React, { Fragment } from 'react';\nimport { LoadingSpinner, Tooltip } from '../../../../components';\n\nimport { Group } from '../Group';\nimport { MapScreenContext } from '../context';\nimport { MainTypes } from '../types';\n\nimport { Tabs, UNMAPPED } from './Tabs';\nimport { Title } from './Title';\nimport './index.css';\n\nexport const MainInner = ({\n integration,\n data,\n selectedTab,\n isTabAreaLoading,\n translate\n}) => (\n <section className=\"Main\">\n <Tabs />\n {isTabAreaLoading ? (\n <LoadingSpinner />\n ) : (\n <Fragment>\n {selectedTab === UNMAPPED && (\n <Title hasNoDiscrepancy={data.length === 0} translate={translate} />\n )}\n\n {data.length > 0 && (\n <section className=\"MapArea\">\n <div className=\"MapAreaHeader\">\n <div className=\"MapAreaHeader__label1\">\n <p>{translate('map.mapArea.columnTitle1', { integration })}</p>\n\n <Tooltip\n message={`${integration}.tooltips.map.mapArea.columnTitle1.message`}\n type=\"info\"\n />\n </div>\n <div className=\"MapAreaHeader__label2\">\n <p>{translate('map.mapArea.columnTitle2')}</p>\n <Tooltip\n message={`${integration}.tooltips.map.mapArea.columnTitle2.message`}\n type=\"info\"\n />\n </div>\n </div>\n <Group isRoot data={data} />\n </section>\n )}\n </Fragment>\n )}\n </section>\n);\n\nMainInner.propTypes = MainTypes;\n\nexport const Main = () => (\n <MapScreenContext.Consumer>{MainInner}</MapScreenContext.Consumer>\n);\n","import React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\n\nimport { DiscrepancyNotificationTypes } from '../types';\nimport { TranslateContext } from '../../../../components/Screen';\nimport closeIcon from '../../../../shared/images/closeIcon.svg';\nimport successIcon from '../../../../shared/images/successIcon.svg';\nimport { MapScreenContext } from '../context';\n\nimport './index.css';\n\nexport const DiscrepancyNotification = ({ onClickSubmitButton }) => (\n <div className=\"DiscrepancyNotification\">\n <MapScreenContext.Consumer>\n {({ toggleNotification }) => (\n <div className=\"Inner\">\n <TranslateContext.Consumer>\n {({ translate }) => (\n <div className=\"Content\">\n <div className=\"Content__icon\">\n <img alt=\"success\" src={successIcon} />\n </div>\n\n <div className=\"ContentRight\">\n <div className=\"ContentRight__title\">\n {translate('map.notification.title')}\n </div>\n <div className=\"ContentRight__subtitle\">\n {translate('map.notification.subtitle')}\n </div>\n\n <Button\n text={translate('map.notification.button')}\n type=\"primary\"\n onClick={onClickSubmitButton}\n />\n </div>\n </div>\n )}\n </TranslateContext.Consumer>\n\n <button\n className=\"CloseIcon\"\n type=\"button\"\n onClick={toggleNotification}\n >\n <img alt=\"close\" src={closeIcon} />\n </button>\n </div>\n )}\n </MapScreenContext.Consumer>\n </div>\n);\n\nDiscrepancyNotification.propTypes = DiscrepancyNotificationTypes;\n","import React, { Fragment } from 'react';\n\nimport { CardTitle, ModalConfirmation } from '../../../../components';\nimport { Table } from '../../Overview';\nimport { ButtonsArea } from '../ButtonsArea';\nimport { MapScreenContentTypes } from '../types';\nimport { Main } from '../Main';\nimport { DiscrepancyNotification } from '../Notification';\n\nexport const MapScreenContent = ({\n currentlySelectedAccountItem,\n getData,\n handleCancel,\n importSessionSelectedYears,\n integration,\n isConfimationModalOpen,\n isNotificationOpen,\n onCancelParentItemChange,\n onClickSubmitButton,\n onConfirmParentItemChange,\n overviewRows,\n overviewYear,\n selectedPanel,\n toggleConfirmationModal,\n translate\n}) => (\n <Fragment>\n {isNotificationOpen && (\n <DiscrepancyNotification onClickSubmitButton={onClickSubmitButton} />\n )}\n {isConfimationModalOpen &&\n currentlySelectedAccountItem && (\n <ModalConfirmation\n isWarning\n showLoading\n accountName={translate(\n `map.selector.${currentlySelectedAccountItem.account}`\n )}\n buttonCancelText=\"map.confirmation.button.cancel\"\n buttonSubmitText=\"map.confirmation.button.submit\"\n contentDescription=\"map.confirmation.description\"\n /**\n * The account name has to be translated before being passed to the component\n * because otherwise would be passed as a \"raw\" key. \"Raw\" refers to the format\n * that the backend sends to the frontend.\n */\n contentTitle=\"map.confirmation.title\"\n isModalOpen={isConfimationModalOpen}\n onClickCancelButton={onCancelParentItemChange}\n onClickSubmitButton={onConfirmParentItemChange}\n onModalClose={toggleConfirmationModal}\n />\n )}\n\n <CardTitle\n integration={integration}\n subtitle=\"map.subtitle\"\n title=\"map.title\"\n />\n\n <Table\n integration={integration}\n rows={overviewRows}\n selectedYear={overviewYear}\n translate={translate}\n years={importSessionSelectedYears}\n onSelectYear={(e, data) => getData(data.value)}\n />\n <Main selectedPanel={selectedPanel} />\n <ButtonsArea\n handleCancel={handleCancel}\n translate={translate}\n onClickSubmitButton={onClickSubmitButton}\n />\n </Fragment>\n);\n\nMapScreenContent.propTypes = MapScreenContentTypes;\n","/* eslint-disable react/jsx-sort-props */\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport { INPUT_DATA_ROUTE_NAME } from '../../../services/navigation';\n\nimport { confirmDataImportSession } from '../backend/requests';\nimport {\n trackDataImportCancelled,\n trackDataImportSuccess\n} from '../../../external/segment';\n\nimport { getSelectedAccountPlan } from '../helpers/extractions';\nimport { filterSelectedYears, translateTotals } from '../helpers/conversions';\nimport { IntegrationsContainer } from '../container';\nimport { LoadingSpinner } from '../../../components';\nimport {\n removeFromSessionStorage,\n DATA_SESSION_IMPORT_ID\n} from '../../../services/sessionStorage';\n\nimport { MAPPED, UNMAPPED } from './Main/Tabs';\nimport {\n fetchData,\n requestUpdateData,\n sanitizeMappableDataResponse\n} from './backend';\nimport { MapScreenContent } from './Content';\nimport { MapScreenContext } from './context';\nimport { MapScreenTypes } from './types';\nimport './index.css';\n\nexport class MapComponent extends Component {\n static propTypes = MapScreenTypes;\n\n state = {\n // one of: 'mapped', 'unmapped', 'templates'.\n selectedTab: MAPPED,\n // Full content loading.\n isLoading: true,\n // Only for displaying LoadingSpinner in tabbed area.\n isTabAreaLoading: false,\n data: undefined,\n // Simple notification with a single button.\n isNotificationOpen: false,\n // Dialog to confirm changes, with Submit & Cancel buttons.\n isConfimationModalOpen: false,\n unmappedCount: undefined,\n overview: undefined,\n currentlySelectedAccountItem: undefined\n };\n\n /**\n * For the component to fetch data,\n * it needs to have an id in memory already.\n * In normal conditions, an id is passed\n * when routing from one screen to another.\n *\n * But if the page is refreshed, that id is lost.\n * For that case, the componentDidUpdate method will\n * _wait_ for the call to get the sessionID to be resolved,\n * and when those props are updated, then the GET data for this\n * component is triggered.\n */\n componentDidMount = async () => {\n if (this.props.id) await this.getData();\n };\n\n /**\n * When the language is updated,\n * and because part of the content of this screen\n * has localization done in the backend,\n * there should be a new data fetch to retrieve\n * the newly localized data.\n *\n * Also, to ensure that the data for this screen is\n * fetched only after the dataSessionId has been fetched\n * (which happens in the container), we're ensure that the sessionId\n * exists and upon change, will request the data for this screen.\n */\n componentDidUpdate = async ({ languages, id }) => {\n const hasLanguageChanged = languages !== this.props.languages;\n const hasSessionIdChanged = id !== this.props.id;\n\n if (hasLanguageChanged || hasSessionIdChanged) {\n await this.getData(null, this.state.selectedTab);\n }\n };\n\n shouldCloseModals = ({\n toggleInnerLoading,\n closeDropdown,\n selectedTab,\n account\n }) => {\n if (selectedTab === UNMAPPED && account) {\n return null;\n }\n\n toggleInnerLoading();\n return closeDropdown();\n };\n\n onSelectNewKboAccountItem = async ({\n sourceMappingData,\n closeDropdown,\n account,\n hasChildren,\n toggleInnerLoading\n }) => {\n const { selectedTab } = this.state;\n const shouldShowConfirmationModal = hasChildren;\n /**\n * The UX requirements for this is that the dropdown modal closes\n * and the confirmation dialog opens.\n */\n if (shouldShowConfirmationModal) {\n this.shouldCloseModals({\n toggleInnerLoading,\n closeDropdown,\n selectedTab,\n account\n });\n this.onSelectParentItem({\n sourceMappingData,\n account\n });\n return this.toggleConfirmationModal();\n }\n\n /**\n * If the item being changed has no children,\n * then the dropdown modal should only be closed when the request\n * has been resolved.\n */\n await this.updateData({\n sourceMappingData,\n account\n });\n return this.shouldCloseModals({\n toggleInnerLoading,\n closeDropdown,\n selectedTab,\n account\n });\n };\n\n onClickSubmitButton = async ({ e, goTo }) => {\n e.preventDefault();\n const { id, selectedAccountPlan, vatin, match } = this.props;\n const { integration } = match.params;\n\n this.toggleLoadingState();\n\n await trackDataImportSuccess({\n source: integration,\n accountPlan: selectedAccountPlan,\n cvr: vatin\n });\n\n this.toggleLoadingState();\n await confirmDataImportSession(id);\n // removal of session data because the import is complete\n removeFromSessionStorage(DATA_SESSION_IMPORT_ID);\n\n return this.goToInput(goTo);\n };\n\n onSelectParentItem = ({ sourceMappingData, account }) =>\n this.setState({\n currentlySelectedAccountItem: {\n sourceMappingData,\n account\n }\n });\n\n onConfirmParentItemChange = async () => {\n const {\n currentlySelectedAccountItem: { sourceMappingData, account }\n } = this.state;\n await this.updateData({ sourceMappingData, account });\n this.toggleConfirmationModal();\n };\n\n onCancelParentItemChange = () => {\n this.toggleConfirmationModal();\n this.setState({\n currentlySelectedAccountItem: undefined\n });\n };\n\n /**\n * 'year' is optional.\n * When the component is loaded, no 'year' is provided.\n * When the dropdown value of the overview table changes,\n * a new request is made using that value as the 'year'.\n */\n getData = async (year, panel) => {\n const { id: dataSessionId } = this.props;\n const { selectedTab: selectedTabFromState } = this.state;\n const selectedTab = panel || selectedTabFromState;\n const response = await fetchData({\n dataSessionId,\n year,\n selectedTab\n });\n\n this.updateStateAfterDataFetch(sanitizeMappableDataResponse(response));\n };\n\n updateData = async ({ sourceMappingData, account }) => {\n const { id: dataSessionId } = this.props;\n const {\n selectedTab,\n overview: { year }\n } = this.state;\n const { source_mapping_key: sourceMapingKey } = sourceMappingData;\n const responseFromDataUpdate = await requestUpdateData({\n sourceMappingData,\n account,\n dataSessionId,\n selectedTab,\n year\n });\n const sanitizedResponse = sanitizeMappableDataResponse(\n responseFromDataUpdate,\n sourceMapingKey,\n selectedTab\n );\n const { mappingCompleted } = sanitizedResponse;\n\n this.updateStateAfterDataFetch(sanitizedResponse, () =>\n this.checkBalance({\n mappingCompleted,\n toggleNotification: this.toggleNotification\n })\n );\n };\n\n goToInput = goTo => {\n const url = INPUT_DATA_ROUTE_NAME;\n goTo(url);\n return url;\n };\n\n handleCancel = goTo => {\n const { integration, props } = this;\n const { vatin, selectedAccountPlan } = props;\n\n trackDataImportCancelled({\n source: integration,\n cvr: vatin,\n accountPlan: selectedAccountPlan\n });\n return this.goToInput(goTo);\n };\n\n checkBalance = ({ mappingCompleted, toggleNotification }) => {\n if (mappingCompleted) {\n toggleNotification();\n }\n };\n\n updateStateAfterDataFetch = (sanitizedResponse, checkBalance) => {\n this.setState(\n {\n ...sanitizedResponse,\n isLoading: false\n },\n () => {\n if (checkBalance) checkBalance();\n }\n );\n };\n\n /**\n * When changing tabs, a new call is made, depending on the tab.\n * If the unmapped tab is selected, then hit the unmapped api endpoint.\n * The same for mapped.\n */\n toggleSelectedTab = async panel => {\n const {\n overview: { year }\n } = this.state;\n this.setState({ isTabAreaLoading: true });\n await this.getData(year, panel);\n this.setState({\n selectedTab: panel,\n isTabAreaLoading: false\n });\n };\n\n toggleLoadingState = () => {\n this.setState(prevState => ({\n isLoading: !prevState.isLoading\n }));\n };\n\n /**\n * Shown when the balance table is matching.\n */\n toggleNotification = () =>\n this.setState(prevState => ({\n isNotificationOpen: !prevState.isNotificationOpen\n }));\n\n /**\n * Shown when the user changes one of the parents dropdowns.\n */\n toggleConfirmationModal = () =>\n this.setState(prevState => ({\n isConfimationModalOpen: !prevState.isConfimationModalOpen\n }));\n\n render() {\n const { importSessionSelectedYears, match } = this.props;\n const { integration } = match.params;\n const {\n selectedTab,\n data,\n isNotificationOpen,\n isConfimationModalOpen,\n isLoading,\n unmappedCount,\n overview,\n isTabAreaLoading,\n currentlySelectedAccountItem\n } = this.state;\n const shouldShowContent =\n data && !isLoading && importSessionSelectedYears.length > 0;\n\n return (\n <IntegrationsContainer\n bgColor=\"light\"\n render={({ goTo, translate }) => (\n <MapScreenContext.Provider\n value={{\n data,\n goTo,\n integration,\n selectedTab,\n toggleNotification: this.toggleNotification,\n toggleSelectedTab: this.toggleSelectedTab,\n unmappedCount,\n updateData: this.updateData,\n isTabAreaLoading,\n onSelectNewKboAccountItem: this.onSelectNewKboAccountItem,\n translate\n }}\n >\n {shouldShowContent ? (\n <MapScreenContent\n getData={this.getData}\n currentlySelectedAccountItem={currentlySelectedAccountItem}\n handleCancel={() => this.handleCancel(goTo)}\n integration={integration}\n isConfimationModalOpen={isConfimationModalOpen}\n isNotificationOpen={isNotificationOpen}\n onClickSubmitButton={e => this.onClickSubmitButton({ e, goTo })}\n onConfirmParentItemChange={this.onConfirmParentItemChange}\n onCancelParentItemChange={this.onCancelParentItemChange}\n overviewYear={overview.year}\n selectedTab={selectedTab}\n toggleConfirmationModal={this.toggleConfirmationModal}\n translate={translate}\n overviewRows={translateTotals({\n totals: overview.totals,\n namespace: 'map.overview.table',\n translate,\n integration\n })}\n importSessionSelectedYears={filterSelectedYears(\n importSessionSelectedYears\n )}\n />\n ) : (\n <LoadingSpinner />\n )}\n </MapScreenContext.Provider>\n )}\n type=\"large\"\n />\n );\n }\n}\n\nconst mapStateToProps = state => ({\n importSessionSelectedYears: state.dataImportSession.years,\n languages: state.locale.languages,\n id: state.dataImportSession.id,\n selectedAccountPlan: getSelectedAccountPlan(state.dataImportSession),\n vatin: state.client.vatin\n});\nexport const Map = connect(mapStateToProps)(MapComponent);\n","import React from 'react';\nimport { string, func, shape, arrayOf } from 'prop-types';\nimport { Dropdown } from 'semantic-ui-react';\n\nimport './index.css';\n\nconst SelectPlanDropdown = ({ onSelectOption, selected, options }) => (\n <div className=\"SelectPlan-Dropdown\">\n <Dropdown\n fluid\n selection\n className=\"--select\"\n options={options}\n value={selected}\n onChange={onSelectOption}\n />\n </div>\n);\n\nSelectPlanDropdown.propTypes = {\n // The 'disable' below is known bug: https://github.com/yannickcr/eslint-plugin-react/issues/1389\n // eslint-disable-next-line react/no-typos\n selected: string.isRequired,\n // eslint-disable-next-line react/no-typos\n onSelectOption: func.isRequired,\n options: arrayOf(\n shape({\n text: string.isRequired,\n value: string.isRequired\n }).isRequired\n ).isRequired\n};\n\nexport { SelectPlanDropdown };\n","import React, { Component } from 'react';\nimport { shape, oneOf, arrayOf, string, bool, number, func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport { Button } from '@karnov/kui-deprecated';\nimport { determineImageProperties } from '../../../helpers';\nimport { INTEGRATION_LIST } from '../../../services/navigation';\nimport { ECONOMIC, VIRK, CASEWARE } from '../../../helpers/constants';\nimport { updateDataImportSession } from '../backend/requests';\nimport { IntegrationsContainer } from '../container';\nimport { SelectPlanDropdown } from './Dropdown';\nimport { saveDataImportSession as saveSession } from '../actions';\n\nimport './index.css';\n\nexport class SelectPlanComponent extends Component {\n static propTypes = {\n match: shape({\n params: shape({\n integration: oneOf([ECONOMIC, VIRK, CASEWARE])\n }).isRequired\n }).isRequired,\n accountPlans: arrayOf(\n shape({\n text: string,\n value: string,\n selected: bool\n })\n ).isRequired,\n id: number,\n translate: func.isRequired,\n saveDataImportSession: func.isRequired\n };\n\n static defaultProps = {\n id: null\n };\n\n integration = this.props.match.params.integration;\n\n constructor(props) {\n super(props);\n this.state = {\n selected: this.getSelectedAccountPlan()\n };\n }\n\n onSelectOption = (event, data) => this.setState({ selected: data.value });\n\n onClickSelectPlanButton = async ({ e, goTo, integration }) => {\n e.preventDefault();\n const { id, saveDataImportSession } = this.props;\n const { selected } = this.state;\n const { data } = await updateDataImportSession({\n id,\n accountPlan: selected\n });\n\n saveDataImportSession(data);\n\n const url = `${INTEGRATION_LIST}/import/${integration}/overview`;\n goTo(url);\n return url;\n };\n\n getSelectedAccountPlan = () => {\n const selectedPlan =\n this.props.accountPlans.find(plan => plan.selected) || {};\n\n return selectedPlan.value || 'none';\n };\n\n localizeAccountPlans = accountPlans =>\n accountPlans.map(accountPlan => ({\n ...accountPlan,\n text: this.props.translate(\n `${this.integration}.selectPlan.accountPlan.${accountPlan.text}`\n )\n }));\n\n render() {\n const { integration } = this;\n const { translate, accountPlans } = this.props;\n const { selected } = this.state;\n const { src, width } = determineImageProperties(integration);\n const translatedAccountPlans = this.localizeAccountPlans([\n { text: 'none', value: 'none' },\n ...accountPlans\n ]);\n\n return (\n <IntegrationsContainer\n render={({ goTo }) => (\n <div className=\"SelectPlan-container\">\n <section className=\"content\">\n <div className=\"logowrapper\">\n <img alt=\"logo\" src={src} width={width} />\n </div>\n <p className=\"__title\">\n {translate(`${integration}.selectPlan.title`)}\n </p>\n <p className=\"__text\">\n {translate(`${integration}.selectPlan.text`)}\n </p>\n\n <SelectPlanDropdown\n options={translatedAccountPlans}\n selected={selected}\n onSelectOption={this.onSelectOption}\n />\n </section>\n <section className=\"actions\">\n <Button\n disabled={selected === 'none'}\n kind=\"primary\"\n text={translate(`${integration}.selectPlan.button`)}\n onClick={e =>\n this.onClickSelectPlanButton({ e, goTo, integration })\n }\n />\n </section>\n </div>\n )}\n type=\"medium\"\n />\n );\n }\n}\n\nconst mapDispatchToProps = dispatch => ({\n saveDataImportSession: data => dispatch(saveSession(data))\n});\n\nconst mapStateToProps = ({ locale, dataImportSession }) => ({\n translate: getTranslate(locale),\n accountPlans: dataImportSession.accountPlans,\n id: dataImportSession.id\n});\n\nexport const SelectPlan = connect(\n mapStateToProps,\n mapDispatchToProps\n)(SelectPlanComponent);\n","import { func, shape, oneOf, string, number, arrayOf, bool } from 'prop-types';\nimport { ECONOMIC, VIRK, CASEWARE } from '../../../helpers/constants';\n\nexport const SelectYearsComponentPropTypes = {\n goTo: func.isRequired,\n name: string.isRequired,\n dataImportSession: shape({\n id: number,\n source: string,\n years: arrayOf(\n shape({\n text: number,\n value: number,\n selected: bool\n })\n )\n }).isRequired,\n match: shape({\n params: shape({\n integration: oneOf([ECONOMIC, VIRK, CASEWARE])\n })\n }).isRequired,\n saveDataImportSession: func.isRequired\n};\n","export const areAllYearsSelected = years => years.every(year => year.checked);\n\nexport const areSomeYearsSelected = years =>\n years.some(element => element.checked);\n\nexport const areSomeYearsDisabled = years =>\n years.some(element => element.disabled);\n\nexport const isIndeterminate = years =>\n !areAllYearsSelected(years) && areSomeYearsSelected(years);\n\nexport const onlyEnabledYears = years => years.filter(year => !year.disabled);\n\nexport const selectAllYears = years =>\n years.map(year => {\n if (year.disabled) {\n return {\n ...year,\n checked: false\n };\n }\n\n return {\n ...year,\n checked: !areAllYearsSelected(onlyEnabledYears(years))\n };\n });\n","import { array, func, string, number, shape, bool } from 'prop-types';\n\nexport const YearsComponentPropTypes = {\n years: array.isRequired,\n goTo: func.isRequired,\n translate: func.isRequired,\n integration: string.isRequired,\n submitYears: func.isRequired\n};\n\nexport const CheckBoxYearComponentPropTypes = {\n clickYearCheckBox: func.isRequired,\n index: number.isRequired,\n year: shape({\n value: number,\n checked: bool,\n hasData: bool\n }).isRequired,\n translate: func.isRequired,\n integration: string.isRequired\n};\n","import React, { Component } from 'react';\nimport { Checkbox } from 'semantic-ui-react';\nimport { CheckBoxYearComponentPropTypes } from './types';\n\nexport default class CheckboxYear extends Component {\n static propTypes = CheckBoxYearComponentPropTypes;\n\n shouldComponentUpdate = prevProps =>\n prevProps.year.checked !== this.props.year.checked ||\n prevProps.translate !== this.props.translate;\n\n render() {\n const {\n year,\n clickYearCheckBox,\n index,\n integration,\n translate\n } = this.props;\n const { value, checked, hasData, disabled } = year;\n\n return (\n <div className=\"SelectYear\">\n <Checkbox\n key={`${value}`}\n checked={checked}\n className=\"SelectYear__checkbox\"\n disabled={disabled}\n label={value}\n name={value.toString()}\n tabIndex={index + 1}\n onClick={() => clickYearCheckBox(index)}\n />\n {checked && hasData && !disabled ? (\n <span className=\"SelectYear__has-data\">\n {translate(`${integration}.selectYears.hasData`)}\n </span>\n ) : null}\n\n {disabled ? (\n <span className=\"SelectYear__no-multiple-years\">\n {translate(`${integration}.selectYears.noMultipleFiscalYears`)}\n </span>\n ) : null}\n </div>\n );\n }\n}\n","import React, { Fragment, Component } from 'react';\nimport { Checkbox } from 'semantic-ui-react';\nimport { Button } from '@karnov/kui-deprecated';\n\nimport { trackDataImportCancelled } from '../../../../external/segment';\nimport { INTEGRATION_LIST } from '../../../../services/navigation';\n\nimport {\n selectAllYears,\n areAllYearsSelected,\n isIndeterminate,\n areSomeYearsSelected\n} from './helpers';\nimport CheckboxYear from './CheckboxYear';\nimport { YearsComponentPropTypes } from './types';\nimport './index.css';\n\nexport default class Years extends Component {\n static propTypes = YearsComponentPropTypes;\n\n state = {\n /**\n * This might be considered an anti-pattern if you miss the key prop\n * on the parent of this component.\n *\n * Based on: https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html\n */\n years: this.props.years\n };\n\n handleCancel = () => {\n const { integration, goTo } = this.props;\n\n trackDataImportCancelled({ source: integration });\n return goTo(INTEGRATION_LIST);\n };\n\n clickAllYearsCheckBox = () => {\n this.setState(prevState => ({\n years: selectAllYears(prevState.years)\n }));\n };\n\n clickYearCheckBox = index =>\n this.setState(prevState => ({\n ...prevState,\n years: prevState.years.map((year, i) => {\n if (index !== i) {\n return year;\n }\n return { ...year, checked: !year.checked };\n })\n }));\n\n render() {\n const { translate, submitYears } = this.props;\n const { years } = this.state;\n const { integration } = this.props;\n\n return (\n <Fragment>\n <p>{translate(`${integration}.selectYears.innerText`)}</p>\n <div className=\"SelectYears-ImportData-innerContainer\">\n <div className=\"SelectYears-ImportData-years-container\">\n <div className=\"SelectYears-ImportData-years\">\n <Checkbox\n checked={areAllYearsSelected(years)}\n className=\"checkbox-all\"\n indeterminate={isIndeterminate(years)}\n label={translate(`${integration}.selectYears.all`)}\n name=\"allYears-checkbox\"\n tabIndex={0}\n onClick={this.clickAllYearsCheckBox}\n />\n\n {years.map((year, index) => (\n <CheckboxYear\n key={year.value}\n clickYearCheckBox={this.clickYearCheckBox}\n index={index}\n integration={integration}\n translate={translate}\n year={year}\n />\n ))}\n </div>\n </div>\n </div>\n\n <div className=\"SelectYears-buttons-area\">\n <Button\n disabled={!areSomeYearsSelected(years)}\n kind=\"primary\"\n text={translate(`${integration}.selectYears.button.import`)}\n type=\"button\"\n onClick={() => submitYears({ years })}\n />\n <button className=\"cancel\" type=\"button\" onClick={this.handleCancel}>\n {translate(`${integration}.selectYears.button.cancel`)}\n </button>\n </div>\n </Fragment>\n );\n }\n}\n","/* eslint-disable react/no-typos */\nimport React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\nimport { string, func } from 'prop-types';\n\nimport { INTEGRATION_LIST } from '../../../../services/navigation';\nimport { InfoBanner } from '../../../../components';\n\nimport './index.css';\n\nexport const NoYears = ({ integration, goTo, translate }) => (\n <section className=\"NoYears\">\n <div className=\"NoYears__banner\">\n <InfoBanner\n integration={integration}\n subtitle=\"selectYears.noYears.banner.subtitle\"\n title=\"selectYears.noYears.banner.title\"\n />\n </div>\n\n <div className=\"NoYears__button\">\n <Button\n text={translate('selectYears.noYears.button')}\n type=\"Primary\"\n onClick={() => goTo(INTEGRATION_LIST)}\n />\n </div>\n </section>\n);\n\nNoYears.propTypes = {\n integration: string.isRequired,\n goTo: func.isRequired,\n translate: func.isRequired\n};\n","import React, { Component, Fragment } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { push } from 'connected-react-router';\nimport { connect } from 'react-redux';\n\nimport { saveDataImportSession } from '../actions';\nimport { LoadingSpinner } from '../../../components';\nimport { FEATURE_CAP } from '../../../helpers/constants';\n\nimport { INTEGRATION_LIST } from '../../../services/navigation';\nimport { determineImageProperties, routeWithClientId } from '../../../helpers';\nimport { updateDataImportSession } from '../backend/requests';\n\nimport { convertYearsFormat } from '../helpers/conversions';\nimport { IntegrationsContainer } from '../container';\n\nimport { SelectYearsComponentPropTypes } from './types';\nimport Years from './Years';\nimport { NoYears } from './NoYears';\nimport './index.css';\n\nclass SelectYearsComponent extends Component {\n static propTypes = SelectYearsComponentPropTypes;\n\n state = {\n isComponentLoading: false\n };\n\n integration = this.props.match.params.integration;\n\n shouldComponentUpdate = (prevProps, prevState) =>\n !(isEqual(prevProps, this.props) && isEqual(prevState, this.state));\n\n toggleComponentLoading = () =>\n this.setState(prevState => ({\n isComponentLoading: !prevState.isComponentLoading\n }));\n\n storeSession = data => {\n const {\n saveDataImportSession: saveDataImportSessionFromProps\n } = this.props;\n saveDataImportSessionFromProps(data);\n this.toggleComponentLoading();\n };\n\n submitYears = async ({ years }) => {\n const { goTo, dataImportSession } = this.props;\n const { id } = dataImportSession;\n\n this.toggleComponentLoading();\n\n const { data } = await updateDataImportSession({ id, years });\n\n this.storeSession(data);\n this.toggleComponentLoading();\n\n if (FEATURE_CAP) {\n if (this.integration === \"virk\") {\n return goTo(`${INTEGRATION_LIST}/import/${this.integration}/overview`);\n }\n return goTo(`${INTEGRATION_LIST}/import/${this.integration}/plan`);\n }\n return goTo(`${INTEGRATION_LIST}/import/${this.integration}/success`);\n };\n\n render() {\n const { isComponentLoading } = this.state;\n const { dataImportSession, name } = this.props;\n const sanitizedYears = convertYearsFormat(dataImportSession.years);\n const { src, width } = determineImageProperties(this.integration);\n\n return (\n <IntegrationsContainer\n integration={this.integration}\n render={({ goTo, id, translate }) => (\n <div className=\"SelectYears\">\n {/**\n * isComponentLoading is for the PUT performed here.\n * an id is always necessary to show the screen.\n */}\n {isComponentLoading || !id ? (\n <LoadingSpinner\n text={`${this.integration}.selectYears.loadingYears.text`}\n title={`${this.integration}.selectYears.loadingYears.title`}\n />\n ) : (\n <Fragment>\n <div className=\"logowrapper\">\n <img alt=\"logo\" src={src} width={width} />\n </div>\n\n <div className=\"SelectYears-ImportData-years\">\n <h2>{translate('selectYears.title')}</h2>\n\n {sanitizedYears.length > 0 ? (\n <Years\n key={sanitizedYears}\n goTo={goTo}\n integration={this.integration}\n name={name}\n submitYears={this.submitYears}\n translate={translate}\n years={sanitizedYears}\n />\n ) : (\n <NoYears\n goTo={goTo}\n integration={this.integration}\n name={name}\n translate={translate}\n />\n )}\n </div>\n </Fragment>\n )}\n </div>\n )}\n type=\"medium\"\n />\n );\n }\n}\n\nconst mapDispatchToProps = dispatch => ({\n goTo: route => dispatch(push(routeWithClientId(route))),\n saveDataImportSession: data => dispatch(saveDataImportSession(data))\n});\n\nconst mapStateToProps = ({ client, dataImportSession }) => ({\n name: client.name || '',\n dataImportSession\n});\n\nexport const SelectYears = connect(\n mapStateToProps,\n mapDispatchToProps\n)(SelectYearsComponent);\n","import React, { Component } from 'react';\nimport { shape, oneOf, number } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { confirmDataImportSession } from '../backend/requests';\nimport successImage from './complete.svg';\nimport { TranslateContext, ButtonRedirect } from '../../../components';\nimport { trackDataImportSuccess } from '../../../external/segment';\nimport { ECONOMIC, VIRK, CASEWARE } from '../../../helpers/constants';\nimport { IntegrationsContainer } from '../container';\nimport {\n removeFromSessionStorage,\n DATA_SESSION_IMPORT_ID\n} from '../../../services/sessionStorage';\n\nimport './index.css';\n\nexport class SuccessComponent extends Component {\n static propTypes = {\n match: shape({\n params: shape({\n integration: oneOf([ECONOMIC, VIRK, CASEWARE])\n })\n }).isRequired,\n id: number.isRequired\n };\n\n componentDidMount = async () => {\n await confirmDataImportSession(this.props.id);\n // removal of session data because the import is complete\n removeFromSessionStorage(DATA_SESSION_IMPORT_ID);\n trackDataImportSuccess({ source: this.props.match.params.integration });\n };\n\n render() {\n return (\n <IntegrationsContainer\n render={() => (\n <TranslateContext>\n {({ translate }) => (\n <div className=\"Success-container\">\n <div className=\"Transition-container\">\n <img alt=\"Success importing data\" src={successImage} />\n <h2>{translate('e-conomic.success.title')}</h2>\n <p className=\"Success__subtitle\">\n {translate('e-conomic.success.subTitle')}\n </p>\n </div>\n <ButtonRedirect redirect={['actual']} translate={translate} />\n </div>\n )}\n </TranslateContext>\n )}\n shouldGenerateDataImportSession={false}\n />\n );\n }\n}\n\nconst mapStateToProps = ({ dataImportSession }) => ({\n id: dataImportSession.id\n});\n\nexport const Success = connect(\n mapStateToProps,\n null\n)(SuccessComponent);\n","import React from 'react';\nimport { object, func } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Divider } from 'semantic-ui-react';\nimport isEqual from 'react-fast-compare';\nimport TitleArea from '../../../components/TitleArea';\nimport Settings from '../../../components/Settings';\nimport ButtonSubmit from '../../../components/ButtonSubmit';\nimport * as actions from '../Edit/actions';\nimport './Main.css';\n\nexport class Main extends React.Component {\n static propTypes = {\n clientData: object.isRequired,\n submitDataChanges: func.isRequired,\n fetchClientData: func.isRequired,\n translate: func.isRequired\n };\n\n constructor(props) {\n const { clientData } = props;\n super(props);\n\n this.state = { ...clientData };\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { clientData } = prevState;\n // Only monitoring changes on the clientData, the data that populates the form.\n const havePropsChanged =\n isEqual(nextProps.clientData, clientData) === false;\n if (havePropsChanged) return { ...nextProps.clientData };\n\n return {};\n }\n\n componentDidMount() {\n const { fetchClientData } = this.props;\n\n fetchClientData();\n }\n\n handleSubmit = e => {\n const { submitDataChanges } = this.props;\n e.preventDefault();\n\n submitDataChanges(this.state);\n };\n\n render() {\n const { translate } = this.props;\n return (\n <div className=\"ClientDataCompany-Main\">\n <TitleArea\n title=\"settings.sectionTitle\"\n translate={translate}\n />\n <form onSubmit={this.handleSubmit}>\n <Settings />\n <Divider section className=\"ClientDataCompany-Main-divider-spacer\" />\n <div className=\"ClientDataCompany-Main-buttons align-end\">\n <ButtonSubmit text=\"save\" />\n </div>\n </form>\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n clientData: state.clientData,\n client: state.client\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Main);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { getTranslate } from 'react-localize-redux';\nimport Screen from '../../../components/Screen';\nimport ClientDataLocale from '../locale.json';\nimport { SECTION_CLIENT_DATA } from '../../../services/navigation';\nimport Main from './Main';\n\nexport const ClientDataSettings = ({ ...props }) => {\n const { currentLocation } = props;\n return (\n <Screen\n showRightSideNavigation\n currentLocation={currentLocation}\n locale={ClientDataLocale}\n section={SECTION_CLIENT_DATA}\n >\n <Main section={SECTION_CLIENT_DATA} {...props} />\n </Screen>\n );\n};\n\nconst mapStateToProps = state => ({\n location: state.router.location,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(mapStateToProps)(ClientDataSettings);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Input } from 'semantic-ui-react';\nimport { getTranslate, getActiveLanguage } from 'react-localize-redux';\nimport { Tooltip } from '../../../components';\n\nimport './TextInput.css';\n\nexport class TextInput extends Component {\n shouldComponentUpdate(nextProps) {\n const { value, currentLocale } = this.props;\n // only when the value on the input has changed\n return (\n value !== nextProps.value || currentLocale !== nextProps.currentLocale\n );\n }\n\n handleChange = (event, data) => {\n const { onChange } = this.props;\n // Propagating to the parent component\n onChange(event, data);\n };\n\n render() {\n const { translate, label, name, value, showTooltip } = this.props;\n return (\n <div className=\"TextInput-container\">\n <div className=\"TextInput-field\">\n <div className=\"TextInput-label\">\n <label htmlFor={name}>{translate(label)}</label>\n {showTooltip && (\n <Tooltip\n message=\"tooltips.create.clientNumber.message\"\n type=\"info\"\n />\n )}\n </div>\n\n <Input\n error={false}\n name={name}\n value={value}\n onChange={this.handleChange}\n />\n </div>\n </div>\n );\n }\n}\n\nTextInput.propTypes = {\n // Changing the input value, propagating it to the parent so state can be changed\n onChange: PropTypes.func.isRequired,\n // The text above the input field\n label: PropTypes.string.isRequired,\n // Name of the input field\n name: PropTypes.string.isRequired,\n // Value of the input field, hooked to the props\n value: PropTypes.string.isRequired,\n currentLocale: PropTypes.string.isRequired,\n translate: PropTypes.func.isRequired,\n showTooltip: PropTypes.bool\n};\n\nTextInput.defaultProps = {\n showTooltip: false\n};\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n currentLocale: getActiveLanguage(state.locale).code\n});\n\nexport default connect(mapStateToProps)(TextInput);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Divider, Input } from 'semantic-ui-react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\nimport { getTranslate } from 'react-localize-redux';\nimport ReactDatePicker from 'react-datepicker';\nimport format from 'date-fns/format';\n\nimport TitleArea from '../../../components/TitleArea';\nimport ButtonSubmit from '../../../components/ButtonSubmit';\nimport LoadingSpinner from '../../../components/LoadingSpinner';\n\nimport TextInput from './TextInput';\nimport Confirmation from '../../../components/Confirmation';\nimport * as actions from './actions';\n\nimport './Main.css';\n\nexport class Main extends Component {\n state = {\n companyName: this.props.clientData.companyName,\n cvrNumber: this.props.clientData.cvrNumber,\n customerId: this.props.clientData.customerId,\n address: this.props.clientData.address,\n city: this.props.clientData.city,\n postNumber: this.props.clientData.postNumber,\n fiscalYearStart: this.props.clientData.fiscalYearStart,\n isModalOpen: this.props.clientData.isModalOpen,\n isLoading: true\n };\n\n async componentDidMount() {\n const { fetchClientData } = this.props;\n\n await fetchClientData();\n this.setState({ isLoading: false });\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { clientData } = this.props;\n // Only monitoring changes on the clientData, the data that populates the form.\n const havePropsChanged = !isEqual(nextProps.clientData, clientData);\n if (havePropsChanged) {\n return this.setState({ ...nextProps.clientData });\n }\n\n return null;\n }\n\n onChange = (e, data) => {\n this.setState({ [data.name]: data.value });\n };\n\n onChangeDatePicker = date => {\n this.setState({ fiscalYearStart: format(date, 'dd/MM') });\n };\n\n handleSubmit = e => {\n const { submitDataChanges } = this.props;\n e.preventDefault();\n submitDataChanges(this.state);\n };\n\n deleteCompany = () => {\n const { deleteCompany } = this.props;\n this.setState({ isModalOpen: false });\n\n deleteCompany();\n };\n\n render() {\n const { translate } = this.props;\n const {\n companyName,\n cvrNumber,\n customerId,\n address,\n postNumber,\n city,\n fiscalYearStart,\n isModalOpen,\n isLoading\n } = this.state;\n\n if (isLoading) {\n return (\n <div className=\"ClientDataCompany-Main main-container\">\n <LoadingSpinner />\n </div>\n );\n }\n\n return (\n <div className=\"ClientDataCompany-Main main-container\">\n <TitleArea title=\"edit.sectionTitle\" translate={translate} />\n <form onSubmit={this.handleSubmit}>\n <TextInput\n label=\"stamdataClient.companyName\"\n name=\"companyName\"\n type=\"text\"\n value={companyName}\n onChange={this.onChange}\n />\n <TextInput\n label=\"stamdataClient.cvrNumber\"\n name=\"cvrNumber\"\n type=\"number\"\n value={cvrNumber}\n onChange={this.onChange}\n />\n <TextInput\n showTooltip\n label=\"stamdataClient.customerId\"\n name=\"customerId\"\n type=\"text\"\n value={customerId}\n onChange={this.onChange}\n />\n <TextInput\n label=\"stamdataClient.address\"\n name=\"address\"\n type=\"text\"\n value={address}\n onChange={this.onChange}\n />\n <TextInput\n label=\"stamdataClient.postNumber\"\n name=\"postNumber\"\n type=\"text\"\n value={postNumber}\n onChange={this.onChange}\n />\n <TextInput\n label=\"stamdataClient.city\"\n name=\"city\"\n type=\"text\"\n value={city}\n onChange={this.onChange}\n />\n <div className=\"DatePicker-container\">\n <div className=\"DatePicker-field\">\n <label htmlFor=\"DatePicker-wrapper\">\n {translate('stamdataClient.fiscalYearStart')}\n </label>\n <Input>\n <ReactDatePicker\n dateFormatCalendar=\"MMMM\"\n id=\"DatePicker-wrapper\"\n locale=\"da\"\n value={fiscalYearStart}\n onChange={this.onChangeDatePicker}\n />\n </Input>\n <div className=\"DatePicker-subLabel\">\n {translate('stamdataClient.fiscalYearStartSubLabel')}\n </div>\n </div>\n </div>\n <Divider section className=\"ClientDataCompany-Main-divider-spacer\" />\n <div className=\"ClientDataCompany-Main-SubmitArea\">\n <Confirmation\n cancelButtonText={translate('no')}\n handleCancelButton={() => this.setState({ isModalOpen: false })}\n handleOkButton={this.deleteCompany}\n isModalOpen={isModalOpen}\n message={translate('delete.message')}\n okButtonText={translate('yes')}\n title={translate('delete.title')}\n trigger={\n <button\n className=\"ClientDataCompany-Main-delete\"\n id=\"trigger-delete-company-modal\"\n type=\"button\"\n onClick={() => this.setState({ isModalOpen: true })}\n >\n {translate('delete.title')}\n </button>\n }\n />\n <div className=\"ClientDataCompany-Main-buttons\">\n <ButtonSubmit text=\"save\" />\n </div>\n </div>\n </form>\n </div>\n );\n }\n}\n\nMain.propTypes = {\n // Data displayed in the form\n clientData: PropTypes.object.isRequired,\n // GET call\n fetchClientData: PropTypes.func.isRequired,\n // Persist changes\n submitDataChanges: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired,\n deleteCompany: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = ({ client, clientData, locale }) => ({\n client,\n clientData,\n translate: getTranslate(locale)\n});\n\nexport default connect(\n mapStateToProps,\n actions\n)(Main);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { SECTION_CLIENT_DATA } from '../../../services/navigation';\nimport Screen from '../../../components/Screen';\nimport Main from './Main';\n\nimport ClientDataLocale from '../locale.json';\n\nexport const ClientEdit = ({ ...props }) => {\n const { currentLocation } = props;\n return (\n <Screen\n showRightSideNavigation\n currentLocation={currentLocation}\n locale={ClientDataLocale}\n section={SECTION_CLIENT_DATA}\n >\n <Main section={SECTION_CLIENT_DATA} {...props} />\n </Screen>\n );\n};\n\nconst mapStateToProps = ({ client, router: { location } }) => ({\n client,\n currentLocation: location\n});\n\nexport default connect(mapStateToProps)(ClientEdit);\n","import axios from 'axios';\nimport { SORT_ORDER_ASC, SORT_ORDER_DESC } from './reducer';\nimport { sort } from './helpers';\nimport * as types from './actionTypes';\n\nfunction errorFetchClientsList(error) {\n return {\n type: types.ERROR_FETCH_CLIENTS_LIST,\n payload: error\n };\n}\n\nfunction successFetchClientsList(response) {\n return {\n type: types.SUCCESS_FETCH_CLIENTS_LIST,\n payload: response\n };\n}\n\nfunction initFetchClientsList() {\n return {\n type: types.INIT_FETCH_CLIENTS_LIST,\n payload: { isLoading: true }\n };\n}\n\nexport function fetchClientsList() {\n return dispatch => {\n dispatch(initFetchClientsList());\n return axios\n .get(`${API_URL}/clients`)\n .then(response => dispatch(successFetchClientsList(response.data)))\n .catch(error =>\n // Error callback\n dispatch(errorFetchClientsList(error))\n );\n };\n}\n\nexport function handleSort(sortKey) {\n return (dispatch, getState) => {\n const state = getState();\n const { sortOrder, clients } = state.listClients;\n\n const newSortOrder =\n sortOrder === SORT_ORDER_ASC ? SORT_ORDER_DESC : SORT_ORDER_ASC;\n\n const sortedClients = sort({\n clients,\n sortKey,\n sortOrder: newSortOrder\n });\n\n return dispatch({\n type: types.SORTING_DASHBOARD_LIST,\n payload: {\n clients: sortedClients,\n sortKey,\n sortOrder: newSortOrder\n }\n });\n };\n}\n\nfunction clientForLookup(client) {\n return `${client.name} ${client.vatin} ${client.customer_id}`;\n}\n\nexport function handleLookup(query) {\n return (dispatch, getState) => {\n const state = getState();\n const regex = new RegExp(query, 'i');\n let { clients } = state.listClients;\n clients = clients.map(client => ({\n ...client,\n visible: regex.test(clientForLookup(client))\n }));\n\n return dispatch({\n type: types.LOOKUP_DASHBOARD_LIST,\n payload: { clients }\n });\n };\n}\n","import { SORT_ORDER_ASC } from './reducer';\n\nexport const sort = ({ clients, sortKey, sortOrder }) =>\n clients.sort((a, b) =>\n sortOrder === SORT_ORDER_ASC\n ? a[sortKey].localeCompare(b[sortKey])\n : b[sortKey].localeCompare(a[sortKey])\n );\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Table, Input, Label, Popup } from 'semantic-ui-react';\nimport { Link } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport { getTranslate } from 'react-localize-redux';\n\n// Component level dependencies\nimport * as actions from './actions';\nimport './Table.css';\nimport { INPUT_DATA_ROUTE_NAME } from '../../../services/navigation';\nimport vatinAsLabel from '../../../helpers/translations/vatinLabel';\n\nconst headerRows = [\n {\n name: 'dashboard.company',\n type: 'primary',\n sortBy: 'name'\n },\n {\n name: 'dashboard.customerId',\n type: 'secondary',\n sortBy: 'customer_id'\n },\n {\n name: 'dashboard.updatedAt',\n type: 'secondary',\n sortBy: 'updated_at'\n }\n];\n\nconst TableCell = props => (\n <Table.Cell key={props.index} className=\"ListClients-table-cell-secondary\">\n <div className={`ListClients-table-${props.name}`}>{props.value}</div>\n </Table.Cell>\n);\n\nTableCell.propTypes = {\n index: PropTypes.number,\n name: PropTypes.string.isRequired,\n value: PropTypes.string\n};\n\nTableCell.defaultProps = {\n index: 0,\n value: ''\n};\n\nconst DemoLabel = ({ translate }) => (\n <Popup\n basic\n className=\"ListClients-demo-tooltip\"\n content={translate('demo.tooltip.content')}\n header={translate('demo.tooltip.header')}\n on=\"hover\"\n position=\"right center\"\n style={{\n padding: '25px',\n borderRadius: '2px',\n boxShadow: '0 1px 2px 0 rgba(0,0,0,0.08), 0 1px 10px 0 rgba(0,0,0,0.1)',\n border: '0',\n fontSize: '13px',\n width: '310px',\n height: 'auto',\n wordBreak: 'normal',\n zIndex: 0,\n maxWidth: '310px'\n }}\n trigger={\n <Label basic className=\"ListClients-demo-label\" size=\"small\">\n DEMO\n </Label>\n }\n />\n);\n\nDemoLabel.propTypes = {\n translate: PropTypes.func.isRequired\n};\n\nconst TableLinkedCell = props => (\n <Table.Cell\n key={props.index}\n className=\"ListClients-table-cell-primary\"\n id={`company-${props.index}`}\n >\n <Link to={`${INPUT_DATA_ROUTE_NAME}?clientId=${props.id}`}>\n <div className=\"ListClients-table-name\" id={`company-${props.subValue}`}>\n {props.value}\n {props.demo ? <DemoLabel translate={props.translate} /> : null}\n </div>\n <div className=\"ListClients-table-subname\">\n {vatinAsLabel(props.subValue, props.translate)}\n </div>\n </Link>\n </Table.Cell>\n);\n\nTableLinkedCell.propTypes = {\n demo: PropTypes.bool,\n translate: PropTypes.func.isRequired,\n id: PropTypes.number.isRequired,\n index: PropTypes.number,\n value: PropTypes.string,\n subValue: PropTypes.string\n};\n\nTableLinkedCell.defaultProps = {\n demo: false,\n index: 0,\n value: '',\n subValue: ''\n};\n\nconst TableBody = props => (\n <Table.Body>\n {props.tableData.map((value, index) => {\n const updatedAtDate = new Date(value.updated_at);\n\n const updatedAtValue = Number.isNaN(updatedAtDate.getDate())\n ? 'Invalid Date'\n : format(updatedAtDate, 'dd.MM.yy');\n\n if (value.visible !== false) {\n return (\n <Table.Row key={value.id}>\n <TableLinkedCell\n demo={value.demo}\n id={value.id}\n index={index}\n name=\"company\"\n subValue={value.vatin}\n translate={props.translate}\n value={value.name}\n />\n <TableCell name=\"customerId\" value={value.customer_id} />\n <TableCell name=\"updatedAt\" value={updatedAtValue} />\n </Table.Row>\n );\n }\n return null;\n })}\n </Table.Body>\n);\n\nTableBody.propTypes = {\n tableData: PropTypes.array.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nexport const sortOrder = (sortKey, sortBy, order) =>\n sortKey === sortBy ? order : null;\n\nexport const TableHeader = props => (\n <Table.Header>\n <Table.Row>\n {props.headerRows.map(value => (\n <Table.HeaderCell\n key={value.name}\n className={`ListClients-table-header-${value.type}`}\n sorted={sortOrder(props.sortKey, value.sortBy, props.sortOrder)}\n onClick={() => props.handleSort(value.sortBy)}\n >\n {props.translate(value.name)}\n </Table.HeaderCell>\n ))}\n </Table.Row>\n </Table.Header>\n);\n\nTableHeader.propTypes = {\n headerRows: PropTypes.array.isRequired,\n translate: PropTypes.func.isRequired,\n sortKey: PropTypes.string.isRequired,\n sortOrder: PropTypes.string.isRequired,\n handleSort: PropTypes.func.isRequired\n};\n\nexport const TableListClients = props => (\n <div className=\"ListClients-container\">\n <Input\n className=\"ListClients-search\"\n icon=\"search\"\n iconPosition=\"left\"\n placeholder={props.translate('dashboard.lookupPlaceholder')}\n onChange={event => props.handleLookup(event.target.value)}\n />\n <Table fixed selectable sortable className=\"ListClients-table\">\n <TableHeader headerRows={headerRows} {...props} />\n <TableBody tableData={props.clients} translate={props.translate} />\n </Table>\n </div>\n);\n\nTableListClients.propTypes = {\n handleLookup: PropTypes.func.isRequired,\n clients: PropTypes.array.isRequired,\n translate: PropTypes.func.isRequired\n};\n\nconst mapDispatchToProps = dispatch => ({\n dispatch,\n ...bindActionCreators(actions, dispatch)\n});\n\nconst mapStateToProps = state => ({\n clients: state.listClients.clients,\n sortKey: state.listClients.sortKey,\n sortOrder: state.listClients.sortOrder,\n translate: getTranslate(state.locale)\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(TableListClients);\n","// vendors\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { addTranslation } from 'react-localize-redux';\n// shared\nimport Header from '../../../components/Header';\nimport TopRow from '../../../components/TopRow';\nimport Footer from '../../../components/Footer';\n// local\nimport * as actions from './actions';\nimport TableListClients from './Table';\n// locales\nimport ClientDataLocale from '../locale.json';\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport HeaderLocale from '../../../components/Header/locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\n\nimport './index.css';\n\nexport class ListClients extends React.Component {\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n this.props.dispatch(addTranslation(HeaderLocale));\n this.props.dispatch(addTranslation(TopRowLocale));\n this.props.dispatch(addTranslation(ClientDataLocale));\n this.props.dispatch(addTranslation(FooterLocale));\n this.props.dispatch(actions.fetchClientsList());\n }\n\n render() {\n return (\n <div className=\"full-height-container\">\n <Header />\n <TopRow hasCreateClientButton />\n <div className=\"ListClients-main main-container\">\n <TableListClients />\n </div>\n <Footer />\n </div>\n );\n }\n}\n\nListClients.propTypes = { dispatch: PropTypes.func.isRequired };\nListClients.contextTypes = { store: PropTypes.object };\n\nexport default connect()(ListClients);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { getTranslate } from 'react-localize-redux';\n\nimport { CREATE_CLIENT_ROUTE_NAME } from '../../../services/navigation';\n\nimport './Content.css';\nimport icon from './icon-newcompany.svg';\n\nexport const Content = ({ translate }) => (\n <div className=\"Content-container main-container\">\n <div className=\"Content-start-area\">\n <div className=\"Content-icon\">\n <img alt=\"icon-newcompany\" src={icon} />\n </div>\n <div className=\"Content-start-area-title\">{translate('card.title')}</div>\n <div className=\"Content-start-area-subtitle\">\n {translate('card.body')}\n </div>\n <div className=\"Content-start-area-button\">\n <Link to={CREATE_CLIENT_ROUTE_NAME}>\n <div className=\"Content-start-area-button-text\">\n {translate('card.mainButton')}\n </div>\n </Link>\n </div>\n </div>\n </div>\n);\n\nContent.propTypes = {\n translate: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({ translate: getTranslate(state.locale) });\nexport default connect(\n mapStateToProps,\n null\n)(Content);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { addTranslation } from 'react-localize-redux';\nimport { connect } from 'react-redux';\n\nimport Header from '../../../components/Header';\nimport TopRow from '../../../components/TopRow';\nimport Footer from '../../../components/Footer';\nimport Content from './Content';\n\nimport ClientDataLocale from '../locale.json';\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport HeaderLocale from '../../../components/Header/locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\n\nexport class Init extends React.Component {\n static propTypes = { dispatch: PropTypes.func.isRequired };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n this.props.dispatch(addTranslation(HeaderLocale));\n this.props.dispatch(addTranslation(TopRowLocale));\n this.props.dispatch(addTranslation(ClientDataLocale));\n this.props.dispatch(addTranslation(FooterLocale));\n }\n\n render() {\n return (\n <div className=\"DashboardInit-container\">\n <Header />\n <TopRow />\n <Content />\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect()(Init);\n","import React from 'react';\nimport { Table } from '../../components';\n\nexport const Sections = ({ sections }) =>\n sections.map((section, sectionIndex) => (\n <div key={`section-${section.name}`} className=\"Section-container\">\n <Table\n key={`section-${section.name}`}\n name={section.name}\n section={section}\n sectionIndex={sectionIndex}\n />\n </div>\n ));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonSubmit from '../../../components/ButtonSubmit';\n\nimport './index.css';\n\nconst BottomButton = ({ isLoading }) => (\n <div className=\"Buttons-area-container\">\n <ButtonSubmit isLoading={isLoading} text=\"save\" />\n </div>\n);\n\nBottomButton.propTypes = { isLoading: PropTypes.bool };\nBottomButton.defaultProps = { isLoading: false };\n\nexport default BottomButton;\n","import { func } from 'prop-types';\n\nexport const InputPropTypes = {\n dispatch: func\n};\n","/* eslint-disable no-restricted-globals */\nimport React, { Component } from 'react';\nimport { get } from 'axios';\nimport { connect } from 'react-redux';\nimport { success } from 'react-notification-system-redux';\nimport { getTranslate } from 'react-localize-redux';\n\nimport TitleArea from '../../components/TitleArea';\nimport { Screen, LoadingSpinner, InfoBox } from '../../components';\nimport { getModuleId } from '../../helpers/location';\nimport { trackSaveButtonClick } from '../../external/segment';\nimport { getDataApiUrl } from './api/requests';\nimport { sanitizeResponseOfGetData } from './api/responses';\nimport { setGlobalState, wipeGlobalState } from './actions';\nimport InputDataLocale from './locale.json';\nimport {\n SECTION_INPUTS,\n INPUT_DATA_ROUTE_NAME\n} from '../../services/navigation';\n\nimport { Sections } from './Sections';\nimport BottomButton from './BottomButton';\nimport { InputPropTypes } from './types';\nimport './index.css';\n\nexport class Input extends Component {\n static propTypes = InputPropTypes;\n\n state = {\n isLoading: false\n };\n\n componentDidMount() {\n const { location } = this.props;\n const apiURL = getDataApiUrl(location);\n\n this.getData(apiURL);\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { isLoading } = this.state;\n const {\n location: { search, pathname },\n sections\n } = this.props;\n\n // Enabling FETCH of data when switching Accounting Data to Budget Data tabs.\n if (\n search !== nextProps.location.search ||\n pathname !== nextProps.location.pathname\n ) {\n const apiURL = getDataApiUrl(location);\n this.getData(apiURL);\n }\n\n return sections !== nextProps.sections || isLoading !== nextState.isLoading;\n }\n\n componentWillUnmount() {\n const { dispatch } = this.props;\n dispatch(wipeGlobalState);\n }\n\n updateStateAfterDataReceived = response => {\n const { dispatch } = this.props;\n\n dispatch(setGlobalState(sanitizeResponseOfGetData(response.data)));\n this.setState({ isLoading: false });\n };\n\n getData = async apiURL => {\n this.setState({ isLoading: true });\n const response = await get(apiURL);\n\n this.updateStateAfterDataReceived(response);\n };\n\n onSubmit = e => {\n e.preventDefault();\n const { location, dispatch, translate } = this.props;\n const inputData = getModuleId({ section: SECTION_INPUTS, location });\n this.setState({ isLoading: true });\n trackSaveButtonClick({ inputData });\n setTimeout(() => {\n this.setState({ isLoading: false });\n dispatch(\n success({\n title: translate('update.success.title'),\n message: translate('update.success.message'),\n position: 'tc'\n })\n );\n }, 1000);\n };\n\n render() {\n const {\n location: { pathname },\n dispatch,\n sections,\n years,\n currentFiscalYear,\n translate\n } = this.props;\n const { isLoading } = this.state;\n\n return (\n <Screen\n showDownloadButton\n showRightSideNavigation\n currentLocation={window.location}\n locale={InputDataLocale}\n section={SECTION_INPUTS}\n >\n {sections ? (\n <form className=\"InputData-main-container\" onSubmit={this.onSubmit}>\n <InfoBox\n text={`${pathname}.requirements`}\n title={`${pathname}.requirementsTitle`}\n />\n\n <TitleArea\n showDropDown\n allYears={years}\n dispatch={dispatch}\n importButtonText={translate(\n '/input_data.importData.importDataButton'\n )}\n isLoading={isLoading}\n location={location}\n selectedYear={currentFiscalYear}\n showImportButton={pathname === INPUT_DATA_ROUTE_NAME}\n title={`${pathname}.title`}\n />\n <Sections sections={sections} />\n\n <BottomButton isLoading={isLoading} text=\"save\" />\n </form>\n ) : (\n <LoadingSpinner />\n )}\n </Screen>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n translate: getTranslate(state.locale),\n sections: state.inputData.sections,\n years: state.inputData.years,\n currentFiscalYear: state.inputData.currentFiscalYear\n});\n\nexport default connect(mapStateToProps)(Input);\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { addTranslation } from 'react-localize-redux';\n\nimport TopRow from '../../../components/TopRow';\nimport InfoCard from '../../../components/InfoCard';\nimport Footer from '../../../components/Footer';\n\nimport './index.css';\nimport icon from './icon-locked.svg';\n\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\nimport locale from '../locale.json';\n\nclass Unauthenticated extends PureComponent {\n static propTypes = { dispatch: PropTypes.func.isRequired };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n const { dispatch } = this.props;\n dispatch(addTranslation(TopRowLocale));\n dispatch(addTranslation(locale));\n dispatch(addTranslation(FooterLocale));\n }\n\n render() {\n return (\n <div className=\"Unauthenticated-container full-height-container\">\n <TopRow />\n <InfoCard\n buttonText=\"unauthenticated.mainButton\"\n icon={icon}\n text=\"unauthenticated.body\"\n title=\"unauthenticated.title\"\n url=\"/\"\n />\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect()(Unauthenticated);\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { addTranslation } from 'react-localize-redux';\n\nimport TopRow from '../../../components/TopRow';\nimport { InfoCardDetailed } from '../../../components/InfoCardDetailed';\nimport Footer from '../../../components/Footer';\n\nimport './index.css';\n\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport Locale from './locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\n\nclass Unauthorized extends PureComponent {\n static propTypes = { dispatch: PropTypes.func.isRequired };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n const { dispatch } = this.props;\n\n dispatch(addTranslation(TopRowLocale));\n dispatch(addTranslation(Locale));\n dispatch(addTranslation(FooterLocale));\n }\n\n render() {\n return (\n <div className=\"Unauthorized-container full-height-container\">\n <TopRow />\n <InfoCardDetailed\n accessText=\"detailed-card.unauthorized-screen.access.text\"\n accessTitle=\"detailed-card.unauthorized-screen.access.title\"\n buttons={[\n {\n text: 'detailed-card.unauthorized-screen.info.button.text',\n url: 'detailed-card.unauthorized-screen.info.button.url',\n primary: true\n }\n ]}\n modules={[\n 'detailed-card.unauthorized-screen.access.module1',\n 'detailed-card.unauthorized-screen.access.module2',\n 'detailed-card.unauthorized-screen.access.module3',\n 'detailed-card.unauthorized-screen.access.module4'\n ]}\n text=\"detailed-card.unauthorized-screen.info.text\"\n title=\"detailed-card.unauthorized-screen.info.title\"\n />\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect()(Unauthorized);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { addTranslation } from 'react-localize-redux';\n\nimport InfoCard from '../../../components/InfoCard';\nimport TopRow from '../../../components/TopRow';\nimport Footer from '../../../components/Footer';\nimport localeTopRow from '../../../components/TopRow/locale.json';\nimport localeFooter from '../../../components/Footer/locale.json';\n\nimport locale from '../locale.json';\nimport './index.css';\n\nexport class PageNotFound extends PureComponent {\n static propTypes = { dispatch: PropTypes.func.isRequired };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n this.props.dispatch(addTranslation(locale));\n this.props.dispatch(addTranslation(localeTopRow));\n this.props.dispatch(addTranslation(localeFooter));\n }\n\n render() {\n return (\n <div className=\"PageNotFound-container wrapper-container\">\n <TopRow />\n <InfoCard\n buttonText=\"404.buttonText\"\n text=\"404.textPageNotFound\"\n title=\"404.titlePageNotFound\"\n url=\"/\"\n />\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect()(PageNotFound);\n","import { string } from 'prop-types';\n\nexport const MainTypes = {\n integrations: string\n};\n","import React from 'react';\nimport { Button } from '@karnov/kui-deprecated';\nimport { InfoBanner } from '../../../components';\nimport { determineImageProperties } from '../../../helpers';\nimport { INTEGRATION_LIST } from '../../../services/navigation';\n\nimport { MainTypes } from './types';\nimport './Main.css';\n\nexport const Main = ({ source, errorMessage, errorTitle, goTo, translate }) => (\n <section className=\"Main-container\">\n <div className=\"logowrapper\">\n <img\n alt={`logo for ${source}`}\n src={determineImageProperties(source).src}\n width={determineImageProperties(source).width}\n />\n </div>\n\n <h1>{translate('selectYears.title')}</h1>\n <div className=\"warning\">\n <InfoBanner\n integration={source}\n source=\"virk\"\n subtitle={`424.${errorMessage}`}\n title={`424.${errorTitle}`}\n />\n </div>\n\n <div className=\"button\">\n <Button\n kind=\"default\"\n text={translate('424.BackButton')}\n onClick={() => goTo(INTEGRATION_LIST)}\n />\n </div>\n </section>\n);\n\nMain.propTypes = MainTypes;\n","import React, { Component } from 'react';\nimport { shape, string } from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { trackDataImportFail } from '../../../external/segment';\nimport { IntegrationsContainer } from '../../Integrations/container';\nimport { Main } from './Main';\nimport locale from '../locale.json';\n\nexport class Error424 extends Component {\n static propTypes = {\n vatin: string.isRequired,\n location: shape({\n state: shape({\n source: string,\n taxonomy: string\n }).isRequired\n }).isRequired,\n companyName: string.isRequired\n };\n\n componentDidMount() {\n const { vatin } = this.props;\n const { source, taxonomy } = this.props.location.state;\n\n trackDataImportFail({\n source,\n cvr: vatin,\n taxonomy\n });\n }\n\n render() {\n const { companyName } = this.props;\n const { source, errorMessage, errorTitle } = this.props.location.state;\n return (\n <IntegrationsContainer\n secondaryBackground\n locale={locale}\n render={({ goTo, translate }) => (\n <Main\n companyName={companyName}\n errorMessage={errorMessage}\n errorTitle={errorTitle}\n goTo={goTo}\n source={source}\n translate={translate}\n />\n )}\n shouldGenerateDataImportSession={false}\n type=\"medium\"\n />\n );\n }\n}\n\nconst mapStateToProps = state => ({\n companyName: state.client.name,\n vatin: state.client.vatin\n});\n\nexport default connect(mapStateToProps)(Error424);\n","// Vendors\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { addTranslation } from 'react-localize-redux';\nimport { connect } from 'react-redux';\n// Shared\nimport Footer from '../../../components/Footer';\nimport InfoCard from '../../../components/InfoCard';\nimport TopRow from '../../../components/TopRow';\nimport {\n init,\n decryptHashedError,\n rollbarPayload\n} from '../../../external/rollbar';\n// Local\nimport './index.css';\n// Locales\nimport TopRowLocale from '../../../components/TopRow/locale.json';\nimport ErrorCardLocale from '../../../components/Error/locale.json';\nimport FooterLocale from '../../../components/Footer/locale.json';\n\nconst RUN_TIME_ERROR = 'RUN_TIME_ERROR';\n\nclass ServerErrorCard extends React.PureComponent {\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n match: PropTypes.shape({\n params: PropTypes.shape({ id: PropTypes.string })\n }),\n id: PropTypes.number.isRequired\n };\n\n static defaultProps = {\n match: null\n };\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillMount() {\n // rollbar init\n init();\n // dispatching translations\n this.props.dispatch(addTranslation(TopRowLocale));\n this.props.dispatch(addTranslation(ErrorCardLocale));\n this.props.dispatch(addTranslation(FooterLocale));\n }\n\n componentDidMount() {\n const { match, id, dispatch } = this.props;\n if (match.params && match.params.id) {\n const dehashedError = decryptHashedError(match.params.id);\n const errorMessage = JSON.stringify(dehashedError.error);\n\n Rollbar.configure(rollbarPayload({ id, dehashedError }));\n\n dispatch({ type: RUN_TIME_ERROR, payload: { ...dehashedError } });\n Rollbar.critical(errorMessage);\n }\n }\n\n componentWillUnmount() {\n Rollbar.configure({\n enabled: false\n });\n }\n\n render() {\n return (\n <div className=\"ServerErrorCard-container full-height-container\">\n <TopRow />\n <InfoCard\n buttonText=\"error.mainButton\"\n text=\"error.body\"\n title=\"error.title\"\n url=\"/\"\n />\n <Footer />\n </div>\n );\n }\n}\n\nconst mapStateToProps = state => ({\n id: state.auth.sub.per_id\n});\n\nexport default connect(mapStateToProps)(ServerErrorCard);\n","import rollbar from 'rollbar';\nimport { ERROR_SERVER_DOWN } from '../../services/navigation';\n\n/**\n * Information sent to rollbar,\n * when reporting an error.\n * @param {object} args\n */\nexport function rollbarPayload({ id, dehashedError }) {\n return {\n payload: {\n context: { ...dehashedError },\n person: {\n // the per_id from auth.sub is sent.\n id\n }\n }\n };\n}\n/**\n * Initializing Rollbar's settings.\n * @param {String} email\n */\nexport function init() {\n /*eslint-disable */\n const Rollbar = new rollbar({\n accessToken: '449dfcfae4ee48e588daaa1ecb7221a3',\n payload: {\n environment: ENV,\n },\n captureUncaught: true,\n captureUnhandledRejections: true,\n enabled: true,\n autoInstrument: {\n network: true,\n log: true,\n dom: false,\n navigation: true,\n connectivity: true,\n },\n })\n\n window.Rollbar = Rollbar\n return Rollbar\n}\n\n/**\n * The /error view is responsible for the triggering a Rollbar error.\n * Thus, Rollbar.*any errors are reported there.\n * @param {object} args\n */\nexport function redirectToErrorView(args) {\n const { message, location } = args\n const isErrorPage = window.location.pathname.includes('/error')\n const isErrorRoute = location === ERROR_SERVER_DOWN\n const hashedError = window.btoa(\n JSON.stringify({\n error: `${message}.`,\n location: `${window.location.href}`,\n })\n )\n\n // Don't redirect when already in /error.\n if (!isErrorRoute && !isErrorPage) window.location = `/error/${hashedError}`\n\n return hashedError\n}\n\nexport function decryptHashedError(hashedError) {\n return JSON.parse(window.atob(hashedError))\n}\n\n/**\n * The middleware is for catching runtime errors after the app\n * was loaded.\n *\n * The middleware gives access to the store, action and error.\n * There are useful because they allow to not report errors on all action types\n * or locations.\n */\nexport function crashReporterReduxMiddleware() {\n return store => next => action => {\n const location = store.getState().router.location.pathname\n try {\n return next(action)\n } catch (err) {\n //if (action.type === '@@router/LOCATION_CHANGE') {\n return redirectToErrorView({ message: err, location })\n //} else throw err;\n }\n }\n}\n","import React, { Suspense } from 'react';\nimport { Route, Switch, Redirect } from 'react-router';\nimport { string, shape } from 'prop-types';\n\nimport * as routes from '../index';\n\n// Non-lazy loaded modules\nimport CreateClient from '../../../screens/Client/Create';\nimport Forecast from '../../../screens/Analysis/Forecast';\nimport ReportBudget from '../../../screens/Analysis/Budget';\nimport ReportManagement from '../../../screens/Analysis/Management';\nimport ReportSimulation from '../../../screens/Analysis/Simulation';\nimport ValuationReport from '../../../screens/Analysis/Valuation';\nimport Root from '../../../components/Root';\nimport { LoadingSpinner } from '../../../components';\nimport { TrialExpired } from '../../../screens/Static/TrialExpired';\nimport {\n Overview,\n Success,\n SelectYears,\n Map,\n List,\n SelectPlan,\n GenerateToken\n} from '../../../screens/Integrations';\n\nimport ClientDataSettings from '../../../screens/Client/Settings';\nimport ClientEdit from '../../../screens/Client/Edit';\nimport ListClients from '../../../screens/Client/List'\nimport DashboardInit from '../../../screens/Client/Init';\nimport Input from '../../../screens/Input';\nimport Unauthenticated from '../../../screens/Static/Unauthenticated';\nimport Unauthorized from '../../../screens/Static/Unauthorized'\nimport PageNotFound from '../../../screens/Static/404';\nimport ImportDataError from '../../../screens/Static/424'\nimport ServerErrorCard from '../../../screens/Static/Error'\n\n\n/**\n * Redirection to 404 page.\n */\nconst GoTo404 = ({ location }) => (\n <Redirect\n to={{\n // Should be 403 when implemented\n // and use Unauthorized card\n pathname: routes.CONTAINER_STATIC_404,\n state: { from: location.pathname }\n }}\n />\n);\n\nGoTo404.propTypes = {\n location: shape({\n pathname: string.isRequired\n }).isRequired\n};\n\n/**\n * The actual routes.\n */\nexport const Routes = () => (\n <Suspense fallback={<LoadingSpinner />}>\n <Switch>\n <Route exact component={Root} path={routes.INIT_ROUTE_NAME} />\n <Route\n exact\n component={TrialExpired}\n path={routes.TRIAL_EXPIRED_ROUTE_NAME}\n />\n <Route component={Root} path={routes.TRIAL_ROUTE_NAME} />\n <Route\n component={DashboardInit}\n path={routes.DASHBOARD_INIT_ROUTE_NAME}\n />\n <Route component={CreateClient} path={routes.CREATE_CLIENT_ROUTE_NAME} />\n <Route component={ListClients} path={routes.LIST_CLIENT_ROUTE_NAME} />\n <Route component={Input} path={routes.INPUT_DATA_ROUTE_NAME} />\n <Route component={Input} path={routes.INPUT_BUDGET_ROUTE_NAME} />\n <Route\n component={ReportManagement}\n path={routes.MANAGEMENT_REPORT_ROUTE_NAME}\n />\n <Route component={ReportBudget} path={routes.BUDGET_REPORT_ROUTE_NAME} />\n <Route\n component={ReportSimulation}\n path={routes.SIMULATION_REPORT_ROUTE_NAME}\n />\n <Route\n component={ClientEdit}\n path={routes.CLIENT_DATA_COMPANY_ROUTE_NAME}\n />\n <Route\n component={ClientDataSettings}\n path={routes.CLIENT_DATA_SETTINGS_ROUTE_NAME}\n />\n <Route component={Forecast} path={routes.FORECAST_ROUTE_NAME} />\n <Route\n component={ValuationReport}\n path={routes.VALUATION_REPORT_ROUTE_NAME}\n />\n <Route exact component={List} path={routes.INTEGRATION_LIST} />\n <Route component={Success} path={routes.INTEGRATION_IMPORT_SUCCESS} />\n <Route component={SelectYears} path={routes.INTEGRATION_SELECT_YEARS} />\n <Route\n component={GenerateToken}\n path={routes.INTEGRATION_CASEWARE_GENERATE_TOKEN}\n />\n\n <Route component={Map} path={routes.CAP_INTEGRATION_MAP} />\n <Route component={Overview} path={routes.CAP_INTEGRATION_OVERVIEW} />\n <Route\n component={SelectPlan}\n path={routes.CAP_INTEGRATION_SELECT_ACCOUNT_PLAN}\n />\n <Route\n // 'id' contains information about the error\n // and is only used for frontend runtime boot errors.\n component={ServerErrorCard}\n path={`${routes.ERROR_SERVER_DOWN}/:id?`}\n />\n <Route\n component={Unauthorized}\n path={routes.UNAUTHORIZED_CARD_ROUTE_NAME}\n />\n <Route\n component={Unauthenticated}\n path={routes.UNAUTHENTICATED_CARD_ROUTE_NAME}\n />\n <Route component={PageNotFound} path={routes.CONTAINER_STATIC_404} />\n <Route\n path={routes.STATIC_ERROR_424}\n render={props => <ImportDataError {...props} />}\n />\n <Route component={routeProps => <GoTo404 {...routeProps} />} />\n </Switch>\n </Suspense>\n);\n\nexport default Routes;\n","/**\n * ROUTE NAMES.\n *\n * This allows a uniform naming convention for all routes.\n * It also allows for easier localization.\n */\nexport const BUDGET_REPORT_ROUTE_NAME = '/budget_report';\nexport const CLIENT_DATA_COMPANY_ROUTE_NAME = '/stamdata_company';\nexport const CLIENT_DATA_SETTINGS_ROUTE_NAME = '/stamdata_settings';\nexport const CONTAINER_STATIC_404 = '/404';\nexport const STATIC_ERROR_424 = '/424';\nexport const CREATE_CLIENT_ROUTE_NAME = '/add_company';\nexport const DASHBOARD_INIT_ROUTE_NAME = '/dashboard_1st';\nexport const ERROR_SERVER_DOWN = '/error';\nexport const FORECAST_ROUTE_NAME = '/forecast';\nexport const INIT_ROUTE_NAME = '/';\nexport const TRIAL_EXPIRED_ROUTE_NAME = '/trial/expired';\nexport const TRIAL_ROUTE_NAME = '/trial/:trial_access_token';\nexport const INPUT_BUDGET_ROUTE_NAME = '/input_budget';\nexport const INPUT_DATA_ROUTE_NAME = '/input_data';\nexport const LIST_CLIENT_ROUTE_NAME = '/list_companies';\nexport const MANAGEMENT_REPORT_ROUTE_NAME = '/mgt_report';\nexport const UNAUTHENTICATED_CARD_ROUTE_NAME = '/unauthenticated';\nexport const UNAUTHORIZED_CARD_ROUTE_NAME = '/unauthorized';\nexport const SIMULATION_REPORT_ROUTE_NAME = '/simulation';\nexport const VALUATION_REPORT_ROUTE_NAME = '/valuation';\n\n// Importing and mapping related routes\nexport const INTEGRATION_LIST = '/integrations';\nexport const INTEGRATION_IMPORT_SUCCESS = `${INTEGRATION_LIST}/import/:integration(e-conomic|caseware|virk)/success`;\nexport const INTEGRATION_SELECT_YEARS = `${INTEGRATION_LIST}/import/:integration(e-conomic|caseware|virk)/select`;\n\n// Custom Account Mapping\nexport const CAP_INTEGRATION_SELECT_ACCOUNT_PLAN = `${INTEGRATION_LIST}/import/:integration(e-conomic|caseware|virk)/plan`;\nexport const CAP_INTEGRATION_OVERVIEW = `${INTEGRATION_LIST}/import/:integration(e-conomic|caseware|virk)/overview`;\nexport const CAP_INTEGRATION_MAP = `${INTEGRATION_LIST}/map/:integration(e-conomic|caseware|virk)/main`;\n\n// Caseware\nexport const INTEGRATION_CASEWARE_GENERATE_TOKEN = `${INTEGRATION_LIST}/import/caseware/token`;\n\n/**\n * SECTION NAMES.\n *\n * Allows to group URL and its names.\n * Closely tied to the NAVIGATION_OPTIONS from Options.Navigation.\n */\nexport const SECTION_REPORTS = 'reports';\nexport const SECTION_INPUTS = 'inputs';\nexport const SECTION_CLIENT_DATA = 'client';\n\n// API URLS\nexport const ENDPOINT_DASHBOARD_CLIENT = '/clients/';\n\n// Exports\nexport { Routes } from './Routes';\n","/**\n * The plugins styling configuration uses JSS.\n */\nconst styleJS = {\n Containers: {\n DefaultStyle: {\n position: 'fixed', // top and right position should NOT be overwritten.\n width: 600, // this should be a number so the margin left is adjusted correctly.\n height: 'auto',\n minHeight: '76px',\n marginRight: 'auto',\n marginLeft: 'auto'\n }\n },\n NotificationItem: {\n DefaultStyle: {\n height: 'auto',\n minHeight: '76px',\n margin: '16px 5px 2px 1px',\n padding: '26px',\n borderTop: 'none',\n borderRadius: '2px',\n backgroundColor: '#ffffff',\n color: '#2F2F2B',\n fontFamily: 'Roboto',\n fontSize: '16px',\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.08), 0 1px 10px 0 rgba(0,0,0,0.12)'\n },\n success: { fontWeight: '500' },\n info: { fontWeight: '500' }\n },\n Title: {\n DefaultStyle: {\n display: 'none',\n color: '#2F2F2B',\n fontFamily: 'Roboto',\n fontSize: '16px'\n },\n error: { display: 'block' }\n },\n MessageWrapper: {\n DefaultStyle: {\n display: 'inline-block',\n maxWidth: '80%',\n margin: '0',\n padding: '0'\n },\n error: { paddingLeft: '26px' }\n },\n ActionWrapper: {\n DefaultStyle: {\n position: 'absolute',\n top: '26px',\n right: '0',\n paddingRight: '26px'\n },\n error: {\n position: 'inherit',\n top: '0',\n padding: '26px 26px 0'\n }\n },\n Action: {\n DefaultStyle: {\n margin: '0',\n padding: '0',\n backgroundColor: 'unset',\n color: '#767676',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: 'normal',\n textDecoration: 'underline'\n },\n error: {\n padding: '13px 84px',\n border: '1px solid #d5d5d5',\n borderRadius: '0',\n color: '#2F2F2B',\n fontWeight: 'bold',\n textDecoration: 'none'\n }\n },\n Dismiss: { DefaultStyle: { display: 'none' } }\n};\n\nexport default styleJS;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Notifications from 'react-notification-system-redux';\n// Local\nimport styleJS from './index.style';\nimport './index.css';\n\nconst NotificationsComponent = ({ notifications }) => (\n <Notifications notifications={notifications} style={styleJS} />\n);\n\nNotificationsComponent.propTypes = { notifications: PropTypes.array };\nNotificationsComponent.defaultProps = { notifications: [] };\n\nexport default connect(state => ({ notifications: state.notifications }))(\n NotificationsComponent\n);\n","import { string, func } from 'prop-types';\n\nconst showFeedbackPanel = func.isRequired;\n\nexport const FeedbackPanelContentPropTypes = {\n language: string.isRequired\n};\n\nexport const FeedbackPanelMainPropTypes = {\n showFeedbackPanel,\n panelMainDescription: string.isRequired,\n panelMainTitle: string.isRequired,\n panelSubmitButton: string.isRequired\n};\n\nexport const FeedbackPanelButtonPropTypes = {\n showFeedbackPanel,\n text: string.isRequired\n};\n","import React from 'react';\n\nimport { FeedbackPanelButtonPropTypes } from './types';\n\nimport './FeedbackButton.css';\n\nexport const FeedbackButton = ({ showFeedbackPanel, text }) => (\n <button\n className=\"FeedbackButton\"\n type=\"button\"\n onClick={() => showFeedbackPanel(true)}\n >\n {text}\n </button>\n);\n\nFeedbackButton.propTypes = FeedbackPanelButtonPropTypes;\n","import axios from 'axios';\n\nconst getRequestBody = ({ text, name, email }) => ({\n orgid: '00D58000000JuWI',\n origin: 'Web (DK)',\n location: window.location.href,\n company: '1003808157',\n phone: '3000000551',\n subject: 'customer-feedback',\n reason: 'Platform',\n title: 'Feedback & Ideas',\n retURL: '%E2%9C%93',\n utf8: '✓',\n name,\n email,\n description: text\n});\n\nexport async function submitFeedback({ text, name, email }) {\n const requestBody = getRequestBody({ text, name, email });\n\n return axios.post(\"/feedbacks\", { feedback: requestBody });\n}\n","import React, { useState } from 'react';\n\nimport { FeedbackPanelMainPropTypes } from './types';\nimport { submitFeedback } from './api';\n\nimport './FeedbackMain.css';\n\nexport function FeedbackMain({\n showFeedbackPanel,\n panelMainDescription,\n panelMainTitle,\n panelSubmitButton,\n panelTextArea,\n userName,\n userEmail\n}) {\n const [isLoading, setLoading] = useState(false);\n const [text, setText] = useState('');\n const [hasResolved, setHasResolved] = useState(false);\n\n return (\n <aside className=\"FeedbackMain\">\n <header className=\"FeedbackMain__header\">\n <button\n className=\"header-close\"\n type=\"button\"\n onClick={() => showFeedbackPanel(false)}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </header>\n <section className=\"FeedbackMain__content\">\n <h2 className=\"content-title\">{panelMainTitle}</h2>\n <p className=\"content-description\">{panelMainDescription}</p>\n <form className=\"feedback-form\">\n <textarea\n className=\"feedback-form__input\"\n disabled={hasResolved === true && isLoading === false}\n placeholder={panelTextArea}\n value={text}\n onChange={e => setText(e.target.value)}\n />\n <div className=\"feedback-submit\">\n <button\n className=\"feedback-submit__button kui-button kui-button--primary\"\n disabled={text.length === 0}\n type=\"submit\"\n onClick={async e => {\n e.preventDefault();\n setLoading(false);\n await submitFeedback({\n text,\n user: userName,\n email: userEmail\n });\n setHasResolved(true);\n setLoading(false);\n showFeedbackPanel(false);\n }}\n >\n {panelSubmitButton}\n </button>\n </div>\n </form>\n </section>\n <footer className=\"FeedbackMain__footer\">\n <div className=\"footer-contacts\">\n <i className=\"mobile icon\" />\n <a className=\"footer-contacts__phone\" href=\"tel:+4533740700\">\n 33 74 07 00\n </a>\n <i className=\"mail icon\" />\n <a\n className=\"footer-contacts__mail\"\n href=\"mailto:kundeservice@karnovgroup.com\"\n >\n kundeservice@karnovgroup.com\n </a>\n </div>\n </footer>\n </aside>\n );\n}\n\nFeedbackMain.propTypes = FeedbackPanelMainPropTypes;\n","export const locale = {\n buttonOpen: {\n en: 'Feedback',\n da: 'Feedback'\n },\n panelMainTitle: {\n en: 'Help us improve our product',\n da: 'Hjælp os med at blive bedre'\n },\n panelMainDescription: {\n en:\n 'We would like to know what you think about our services. If you wish to be contacted, make sure to type your phone number in the text.',\n da:\n 'Vi vil meget gerne vide, hvad du synes om vores tjenester. Hvis du ønsker at blive kontaktet, så angiv gerne telefonnummer i teksten.'\n },\n panelSubmitButton: {\n en: 'Send',\n da: 'Send'\n },\n panelCloseButton: {\n en: 'Close',\n da: 'Luk'\n },\n panelTextArea: {\n en: 'Write you comment or question here',\n da: 'Skriv din kommentar eller dit spørgsmål her'\n }\n};\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { getActiveLanguage } from 'react-localize-redux';\n\nimport { FeedbackButton } from './FeedbackButton';\nimport { FeedbackMain } from './FeedbackMain';\nimport { FeedbackPanelContentPropTypes } from './types';\nimport { locale } from './locale';\n\nexport function FeedbackPanelContent({ language, userName, userEmail }) {\n const [isPanelOpen, showFeedbackPanel] = useState(false);\n\n return isPanelOpen ? (\n <FeedbackMain\n panelCloseButton={locale.panelCloseButton[language]}\n panelMainDescription={locale.panelMainDescription[language]}\n panelMainTitle={locale.panelMainTitle[language]}\n panelSubmitButton={locale.panelSubmitButton[language]}\n panelTextArea={locale.panelTextArea[language]}\n showFeedbackPanel={showFeedbackPanel}\n userEmail={userEmail}\n userName={userName}\n />\n ) : (\n <FeedbackButton\n showFeedbackPanel={showFeedbackPanel}\n text={locale.buttonOpen[language]}\n />\n );\n}\n\nFeedbackPanelContent.propTypes = FeedbackPanelContentPropTypes;\n\nconst mapStateToProps = state => ({\n language: getActiveLanguage(state.locale).code,\n userName: state.auth.sub.name,\n userEmail: state.auth.sub.email\n});\n\nexport const FeedbackPanel = connect(mapStateToProps)(FeedbackPanelContent);\n","export const handleNewDefinition = (newDefinition, definitions) => {\n if (definitions.length === 0) {\n return [{ ...newDefinition, current: true }];\n }\n\n return [\n { ...newDefinition, current: true },\n { ...definitions[0], current: false }\n ];\n};\n","import { string, arrayOf, oneOf, bool, shape, func } from 'prop-types';\n\nconst ContentType = string.isRequired;\nconst TitleType = string.isRequired;\n// will rename when the data model is more defined\nconst TypeType = oneOf(['text', 'formula']);\n\nexport const SidePanelTitleTypes = {\n title: TitleType,\n description: string.isRequired\n};\n\nexport const SidePanelModuleItemTypes = {\n title: TitleType,\n content: ContentType,\n type: TypeType,\n imageUrl: string\n};\n\nexport const SidePanelModuleItemContentTypes = {\n content: ContentType\n};\n\nexport const SidePanelModulesTypes = {\n modules: arrayOf(\n shape({\n content: ContentType,\n title: TitleType,\n type: TypeType,\n imageUrl: string,\n key: string\n })\n )\n};\n\nexport const SidePanelContainerPropTypes = {\n sidePanelId: string,\n toggleSidePanel: func.isRequired\n};\n\nexport const SidePanelTypes = {\n isVisible: bool,\n onClickCloseButton: func.isRequired,\n sidePanelId: string\n};\n\nexport const DefinitionType = shape({\n ...SidePanelTitleTypes,\n ...SidePanelModulesTypes\n});\n\nexport const SidePanelContentTypes = {\n current: DefinitionType,\n old: DefinitionType\n};\n","import React, { Fragment } from 'react';\n\nimport { SidePanelTitleTypes } from './types';\n\nexport const SidePanelTitle = ({ title, description }) => (\n <Fragment>\n <h1>{title}</h1>\n <div dangerouslySetInnerHTML={{__html: description}} />\n </Fragment>\n);\n\nSidePanelTitle.propTypes = SidePanelTitleTypes;\n","import React from 'react';\nimport { SidePanelModuleItemContentTypes } from './types';\n\nexport const SidePanelModuleItemContent = ({ content }) => <div dangerouslySetInnerHTML={{__html: content}} />;\n\nSidePanelModuleItemContent.propTypes = SidePanelModuleItemContentTypes;\n","import React, {Fragment} from 'react';\nimport { SidePanelModuleItemContent } from './SidePanelModuleItemContent';\nimport { SidePanelModuleItemTypes } from './types';\n\nexport const SidePanelModuleItem = ({ title, content, type, imageUrl }) => (\n <Fragment>\n <h2>{title}</h2>\n {type === 'text' ? (\n <SidePanelModuleItemContent content={content} />\n ) : (\n <img alt=\"formula\" src={imageUrl} />\n )}\n </Fragment>\n);\n\nSidePanelModuleItem.propTypes = SidePanelModuleItemTypes;\n","import React from 'react';\n\nimport { SidePanelModuleItem } from './SidePanelModuleItem';\nimport { SidePanelModulesTypes } from './types';\n\nexport const SidePanelModules = ({ modules }) =>\n modules.map(item => (\n <SidePanelModuleItem\n key={item.title}\n content={item.content}\n imageUrl={item.imageUrl}\n title={item.title}\n type={item.type}\n />\n ));\n\nSidePanelModules.propTypes = SidePanelModulesTypes;\n","import React, { useState, useEffect } from 'react';\nimport { SidePanelTitle } from './SidePanelTitle';\nimport { SidePanelModules } from './SidePanelModules';\nimport { SidePanelContentTypes } from './types';\n\nexport const SidePanelContent = ({ definitions }) => {\n const [toggleClass, setToggleClass] = useState(false);\n\n useEffect(() => {\n setToggleClass(!toggleClass);\n }, [definitions]);\n\n const getCurrentClassName = () => {\n const currentClassName = 'sidebar__definition--current';\n if (toggleClass) {\n return `${currentClassName}-0`;\n }\n\n return currentClassName;\n };\n\n const getOldClassName = () => {\n const oldClassName = 'sidebar__definition--old';\n if (toggleClass) {\n return `${oldClassName}-0`;\n }\n\n return oldClassName;\n };\n\n return (\n <div className=\"sidebar__content\">\n {definitions.length > 0 &&\n definitions.map(definition => (\n <div\n key={definition.title}\n // this is used so the keyframe animation\n // is re-triggered when a new definition\n // is clicked\n className={`sidebar__definition ${\n definition.current ? getCurrentClassName() : getOldClassName()\n }`}\n >\n <SidePanelTitle\n description={definition.description}\n title={definition.title}\n />\n {definition.modules.length > 0 && (\n <SidePanelModules modules={definition.modules} />\n )}\n </div>\n ))}\n </div>\n );\n};\n\nSidePanelContent.propTypes = SidePanelContentTypes;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { CSSTransition } from 'react-transition-group';\nimport { connect } from 'react-redux';\n\nimport { handleNewDefinition } from './helpers';\nimport { SidePanelContent } from './SidePanelContent';\nimport { toggleDefinitionsPanel } from '../App/actions';\nimport { SidePanelTypes, SidePanelContainerPropTypes } from './types';\n\nimport './index.css';\n\nexport const SidePanelComponent = ({\n isVisible,\n onClickCloseButton,\n sidePanelId\n}) => {\n const [definitions, setDefinitions] = useState([]);\n async function fetchDefinitionData() {\n if (sidePanelId) {\n const response = await axios.get(`/definitions/${sidePanelId}`);\n setDefinitions(handleNewDefinition(response.data, definitions));\n }\n }\n\n const handleClosePanel = () => {\n setDefinitions([]);\n onClickCloseButton({ sidePanelId: null });\n };\n\n useEffect(() => {\n fetchDefinitionData();\n }, [sidePanelId]);\n\n return (\n <CSSTransition\n unmountOnExit\n classNames=\"sidebar\"\n in={isVisible}\n timeout={500}\n >\n <div className=\"sidebar\">\n <button\n className=\"sidebar__close\"\n type=\"button\"\n onClick={handleClosePanel}\n />\n {definitions.length > 0 && (\n <SidePanelContent definitions={definitions} />\n )}\n </div>\n </CSSTransition>\n );\n};\n\nSidePanelComponent.propTypes = SidePanelTypes;\n\nexport function SidePanelContainer({ sidePanelId, toggleSidePanel }) {\n return (\n <SidePanelComponent\n isVisible={Boolean(sidePanelId)}\n sidePanelId={sidePanelId}\n onClickCloseButton={toggleSidePanel}\n />\n );\n}\n\nconst mapStateToProps = state => ({\n sidePanelId: state.app.sidePanelId\n});\n\nconst mapDispatchToProps = dispatch => ({\n toggleSidePanel: ({ sidePanelId }) =>\n dispatch(toggleDefinitionsPanel({ sidePanelId }))\n});\n\nSidePanelContainer.propTypes = SidePanelContainerPropTypes;\n\nexport const SidePanel = connect(\n mapStateToProps,\n mapDispatchToProps\n)(SidePanelContainer);\n","import React from 'react';\n\nimport NotificationsComponent from '../Notifications';\nimport Routes from '../../services/navigation/Routes';\n\nimport { FeedbackPanel } from '../FeedbackPanel';\nimport { SidePanel } from '../SidePanel';\n\nexport const App = () => (\n <div className=\"full-height-container\">\n <NotificationsComponent />\n <FeedbackPanel />\n <Routes />\n <SidePanel />\n </div>\n);\n\nexport default App;\n","import APP_AUTH_TOKEN_STORED from './actionTypes';\nimport decodeToken from './helpers';\nimport store from '../../store';\nimport {\n AUTH_ID,\n getFromLocalStorage,\n setInLocalStorage\n} from '../localStorage/index';\n\nexport const actionStoreToken = ({ token }) => ({\n type: APP_AUTH_TOKEN_STORED,\n payload: token\n});\n\nexport function handleAuthToken(newToken) {\n const existingToken = getFromLocalStorage(AUTH_ID);\n\n if (!newToken) {\n store.dispatch(actionStoreToken({ token: existingToken }));\n return existingToken;\n }\n\n if (!existingToken) {\n setInLocalStorage(AUTH_ID, newToken);\n store.dispatch(actionStoreToken({ token: newToken }));\n return newToken;\n }\n\n const decodedExistingToken = decodeToken(existingToken);\n const decodedNewToken = decodeToken(newToken);\n\n if (decodedExistingToken.iat < decodedNewToken.iat) {\n setInLocalStorage(AUTH_ID, newToken);\n store.dispatch(actionStoreToken({ token: newToken }));\n return newToken;\n }\n\n return existingToken;\n}\n","import { interceptors } from 'axios';\nimport store from '../../../store';\n\nexport default function requestHandler() {\n interceptors.request.use(\n config => {\n // Since the token may get updated\n // we need a new instance of the state\n const newConfig = { ...config };\n\n newConfig.headers.Authorization = store.getState().auth.token;\n\n return newConfig;\n },\n error =>\n // Do something with request error\n Promise.reject(error)\n );\n}\n","import axios from 'axios';\nimport store from '../../../store';\nimport errorCodeResponseHandler from './errorCodeDispatcher';\nimport { handleAuthToken } from '../../auth/actions';\nimport decodeToken, { setWalkmeVariables } from '../../auth/helpers';\n\nimport { updateClientData } from '../../../components/App/actions';\n\n/**\n * Setting up the interceptor for all success responses.\n * Only triggered once, on app init.\n */\nexport default function responseHandler(history) {\n return axios.interceptors.response.use(\n response => {\n // Refresh the token\n const tokenInResponseHeader = response.headers.authorization;\n const usedToken = handleAuthToken(tokenInResponseHeader);\n\n setWalkmeVariables({\n token: usedToken,\n isWalkmeEnabled: window.isWalkmeEnabled,\n decoder: decodeToken\n });\n\n if (response.data && response.data.client) {\n store.dispatch(updateClientData(response.data.client));\n }\n\n // Return response normally.\n return response;\n },\n ({ response }) => {\n if (response.data && response.data.client) {\n store.dispatch(updateClientData(response.data.client));\n }\n\n store.dispatch(errorCodeResponseHandler(response, history));\n // Do something with response error\n return Promise.reject(response);\n }\n );\n}\n","/* eslint no-case-declarations: [0] */\n/* eslint consistent-return: [0] */\nimport { push } from 'connected-react-router';\nimport { ERROR_SERVER_DOWN, STATIC_ERROR_424 } from '../../navigation';\nimport { routeWithClientId } from '../../../helpers';\nimport { responseSanitizer } from '../../../screens/Static/424/api/response';\nimport {\n RETURN_URL_PATH,\n RETURN_URL_SEARCH,\n setInSessionStorage\n} from '../../sessionStorage';\n\nexport default function errorCodeResponseHandler(response) {\n const statusCode = response.status;\n\n return dispatch => {\n switch (statusCode) {\n case 401:\n // 401 == unauthenticated, we don't know who you are\n const url = response.data.errors.details.redirect_to;\n\n // Save the current location before redirecting user to account service\n if (window.location.pathname !== null) {\n setInSessionStorage(RETURN_URL_PATH, window.location.pathname);\n setInSessionStorage(RETURN_URL_SEARCH, window.location.search);\n }\n\n if (url) {\n return window.location.assign(url);\n }\n return;\n case 403:\n // 403 == forbidden, access denied, unauthorized\n const urlForbidden = response.data.errors.details.redirect_to;\n if (urlForbidden) {\n return window.location.assign(urlForbidden);\n }\n return;\n case 404:\n const containsCVRLookupPath = new RegExp('/cvr_lookup/');\n if (response.config.url.match(containsCVRLookupPath)) {\n return;\n }\n\n return dispatch(push(ERROR_SERVER_DOWN));\n\n case 412:\n // 412 === data missing.\n // Handled in the view.\n // The absence of this case, will fallback to the general error card.\n return;\n case 422:\n // Failed form validation\n // Handled in the view.\n // TODO: Remove this from here, when client/edit screen handles errors\n const addCompanyPath = new RegExp('/add_company');\n if (window.location.href.match(addCompanyPath)) {\n return;\n }\n\n return dispatch(push(ERROR_SERVER_DOWN));\n\n case 424:\n // 424 === Import data has failed.\n return dispatch(\n push(routeWithClientId(STATIC_ERROR_424), responseSanitizer(response))\n );\n\n default:\n return dispatch(push(ERROR_SERVER_DOWN));\n }\n };\n}\n","export const responseSanitizer = response => {\n const dataImportSession = response.data.data_import_session;\n const { taxonomy } = dataImportSession;\n\n return {\n source: dataImportSession.source,\n errorMessage: dataImportSession.errors[0].message,\n errorTitle: dataImportSession.errors[0].title,\n taxonomy\n };\n};\n","import { initialize, setActiveLanguage } from 'react-localize-redux';\nimport numeral from 'numeral';\nimport { registerLocale } from 'react-datepicker';\nimport { da, enUS } from 'date-fns/locale';\nimport { languageFormatFromBackendToFrontend } from '../../helpers/conversions/language';\nimport { handleAuthToken } from '../auth/actions';\nimport store, { history } from '../../store';\nimport requestHandler from '../interceptors/request';\nimport responseHandler from '../interceptors/response';\n\n/**\n * DANISH:\n * Configuration for the locale of the 'numeral' library.\n */\nexport const numberLocaleConfigDK = () => ({\n delimiters: {\n thousands: '.',\n decimal: ','\n },\n\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n\n currency: { symbol: 'DKK' }\n});\n\n/**\n * ENGLISH:\n * Configuration for the locale of the 'numeral' library.\n */\nexport const numberLocaleConfigEN = () => ({\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n\n currency: { symbol: 'EUR' }\n});\n\nconst initDateFormatLocale = () => {\n registerLocale('da', da);\n registerLocale('en', enUS);\n};\n\nconst storeToken = () => {\n const token = document.getElementById('auth-token').innerText;\n handleAuthToken(token);\n};\n\nconst initHttpInterceptors = () => {\n requestHandler();\n responseHandler(history);\n};\n\nexport const initNumberFormatLocale = () => {\n numeral.register('locale', 'da-DK', numberLocaleConfigDK());\n numeral.register('locale', 'en-GB', numberLocaleConfigEN());\n};\n\nexport const initUserLanguage = () => {\n const languages = ['da', 'en'];\n const { getState, dispatch } = store;\n const { auth } = getState();\n\n const currentLanguage = languageFormatFromBackendToFrontend(\n auth.sub.language\n );\n\n dispatch(initialize(languages), { defaultLanguage: currentLanguage });\n dispatch(setActiveLanguage(currentLanguage));\n\n return currentLanguage;\n};\n\nexport const initializers = () => {\n storeToken();\n initHttpInterceptors();\n initUserLanguage();\n initNumberFormatLocale();\n initDateFormatLocale();\n};\n","export const languageFormatFromBackendToFrontend = lang =>\n lang === 'da-DK' ? 'da' : 'en';\n","// vendors\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ConnectedRouter } from 'connected-react-router';\nimport { Provider } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport '@karnov/kui-deprecated/build/lib/kui.min.css';\nimport 'semantic-ui-css/semantic.min.css';\nimport 'chartjs-plugin-style';\n\nimport { redirectToErrorView } from './external/rollbar';\nimport App from './components/App';\nimport store, { history } from './store';\nimport './index.css';\n\nimport { initializers } from './services/initializers';\n\ninitializers();\n\n// Boot app with routing props\nconst Application = withRouter(App);\n\n// App rendering with UI fallback on run time errors.\ntry {\n ReactDOM.render(\n <Provider store={store}>\n <ConnectedRouter history={history}>\n <Application />\n </ConnectedRouter>\n </Provider>,\n document.getElementById('app')\n );\n} catch (e) {\n if (ENV === 'development') throw new Error(e);\n redirectToErrorView({ message: e.message });\n}\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMCAxMCI+PHBhdGggZD0iTTkgNC42QzguOCAyLjYgNy4xIDEgNSAxIDIuOCAxIDEgMi44IDEgNWMwIDIuMSAxLjYgMy44IDMuNiA0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZWQ1NTEiLz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCA1KSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOS4yOSAxLjg2TC44MiAxNmEyIDIgMCAwMDEuNzEgM2gxNi45NGEyIDIgMCAwMDEuNzEtM0wxMi43MSAxLjg2YTIgMiAwIDAwLTMuNDIgMHpNMTEgN3Y0IiBzdHJva2U9IiMyRjJGMkIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PGNpcmNsZSBmaWxsPSIjMkYyRjJCIiBjeD0iMTEiIGN5PSIxNSIgcj0iMSIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTM3IDMwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01LjMwNyA4LjQyOGMtMS42ODYtLjUwOC0yLjI1Ni0xLjY4Ni0yLjMwNS0yLjgyLS4wNTUtMS40MDkuOTUtMi44MzIgMi41Ni0zLjA0NSAyLjAwMS0uMjczIDMuODE5IDEuNjM5IDMuMTYgMy44NjQtLjI1Ljc1LS40NTYgMS40MjMtLjMyNiAyLjE3Ny4xMTYuNjc2LjU5OCAxLjE3OCAxLjE1NyAxLjQ5YTYuMTY5IDYuMTY5IDAgMDAyLjg4NC43OTRjMS4wOC0uMDMgMi4xMzEtLjEzNCAyLjc4Ny0xLjA2Ni4zOTQtLjU2MS42OC0xLjI0NC44Ni0xLjkxNi4yNzktMS4wNC40NS0yLjExLjYyOS0zLjE3Ni40MzMtMi41OSAyLjc0LTQuNjA0IDUuMzI4LTQuNzI0IDIuODczLS4xMzEgNS4xODcgMS44OTUgNS43MzIgNC40Mi42NTkgMy4wNzItMS4yODcgNi4xNjYtNC4zMTMgNi44NjQtLjk1NS4yMTgtMS45MDEuMDg0LTIuODUuMDQ0LTEuMzAyLS4wNTYtMi42MDEtLjA0LTMuODc2LjI2My0uOTkuMjM1LTEuNzM3LjgxLTIuMTQzIDEuNzYzLS4yNDYuNTc1LS40OCAxLjE2Ny0uNjE3IDEuNzc1LS4zNjggMS42NTUtMS44NjQgMi45NzctMy40MzQgMy4wNTdhMy43MjYgMy43MjYgMCAwMS0zLjg3OS0yLjg4NSAzLjgyNyAzLjgyNyAwIDAxLjIxOC0yLjM4MWMuMzA0LS43MTkuNTAxLTEuNDUzLjUxMy0yLjI0Mi4wMDktLjgwOC0uMzI3LTEuNC0uOTk3LTEuNzkyYTUuMDY5IDUuMDY5IDAgMDAtMS4wODgtLjQ2NHoiIGZpbGw9IiNFRjdEMDAiLz48cGF0aCBkPSJNMTM2LjUzNSAxOC4wMjNjMCAuMjU1LS4wOTcuNDk0LS4yOS43MDctLjMzNy4zNjctLjgwMi40MTEtMS4yNDEuMTdhOC44MTEgOC44MTEgMCAwMC0xLjI3OS0uNTU5Yy0uMzQ2LS4xMS0uNzg4LS4xNjgtMS4zMS0uMTY4LTEuMjgxIDAtMi4yOTkuMzc0LTMuMDI0IDEuMTEzLS43MjUuNzM3LTEuMDk1IDEuNzI3LTEuMDk1IDIuOTQgMCAxLjIxMi4zNyAyLjIwMiAxLjA5NSAyLjkzOC43MjUuNzQgMS43NDMgMS4xMTQgMy4wMjQgMS4xMTQuNTIyIDAgLjk2NC0uMDU2IDEuMzEtLjE2OWE4LjUwNyA4LjUwNyAwIDAwMS4yOC0uNTU5Yy40MzMtLjIzOC45MDMtLjE5NCAxLjI0LjE3My4xOTMuMjEzLjI5LjQ1LjI5LjcwNyAwIC4zNzQtLjE3LjY3Ni0uNTA2Ljg5NmE4LjExNiA4LjExNiAwIDAxLTEuNjYyLjgwOWMtLjU5Ny4yMS0xLjMxNi4zMTYtMi4xMzYuMzE2YTYuNTY5IDYuNTY5IDAgMDEtMy4xLS43NTEgNS43NjggNS43NjggMCAwMS0yLjI3OC0yLjE2NGMtLjU2Ny0uOTM1LS44NTMtMi4wNDktLjg1My0zLjMxIDAtMS4yNjMuMjg2LTIuMzc2Ljg1My0zLjMxMmE1LjggNS44IDAgMDEyLjI3OC0yLjE2MyA2LjU2OSA2LjU2OSAwIDAxMy4xLS43NTFjLjgyIDAgMS41MzkuMTA4IDIuMTM2LjMxOC41OTIuMjA4IDEuMTUuNDgyIDEuNjYyLjgwNy4zMzcuMjIyLjUwNi41MjIuNTA2Ljg5OHptLTEzLjYyLS44NDN2MTAuMTE2YzAgLjMyNC0uMDk1LjYtLjI4NS44MjJhLjg3Ljg3IDAgMDEtLjY4Mi4zMzMuODQ0Ljg0NCAwIDAxLS42NzUtLjMzMyAxLjI1NiAxLjI1NiAwIDAxLS4yNzMtLjgyMlYxNy4xOGMwLS4zMjMuMDkxLS42MDIuMjczLS44MzMuMTgtLjIyOS40MDgtLjM0Ny42NzUtLjM0Ny4yNzcgMCAuNTEyLjExMy42OTQuMzM1LjE4Mi4yMjIuMjczLjUwNS4yNzMuODQ1em0tNS42NzUgMy41Njh2Ni41NTljMCAuMzIzLS4xMi41OTktLjM1Ny44MTlhMS4yIDEuMiAwIDAxLS44MzkuMzI1Yy0uMzI1IDAtLjYwNC0uMTEtLjgzLS4zMjhhMS4wOTYgMS4wOTYgMCAwMS0uMzQzLS44MTZ2LTYuMzNjMC0xLjgyNC0uODI3LTIuNzEtMi41MzItMi43MXMtMi41MzUuODg2LTIuNTM1IDIuNzF2Ni4zM2MwIC4zMi0uMTE1LjU5Ni0uMzQzLjgxNmExLjE1MiAxLjE1MiAwIDAxLS44My4zMjhoLS4wMjNjLS4zMjQgMC0uNjA0LS4xMS0uODMtLjMyOGExLjA5NiAxLjA5NiAwIDAxLS4zNDItLjgxNnYtNi4zM2MwLTEuODI0LS44MjgtMi43MS0yLjUzMy0yLjcxcy0yLjUzNS44ODYtMi41MzUgMi43MXY2LjMzYzAgLjMyLS4xMTUuNTk2LS4zNDMuODE2YTEuMTUyIDEuMTUyIDAgMDEtLjgzLjMyOCAxLjIgMS4yIDAgMDEtLjgzOS0uMzI1IDEuMDc4IDEuMDc4IDAgMDEtLjM1Ni0uODJ2LTYuNTU4YzAtLjg0Ni4xNzYtMS42MzIuNTI1LTIuMzM5LjM1LS43MDYuODc4LTEuMjQyIDEuNTItMS42OC40NTQtLjMxIDEuNTkzLS43MjkgMi44NTYtLjcyOSAxLjI2NSAwIDIuMzQ4LjQxMiAyLjg1Ny43My4zMjcuMjAzLjYxOC40NDQuODcuNzIzLjI1MS0uMjcuNTM3LS41MS44NTMtLjcyMy40NTYtLjMxMSAxLjU5Mi0uNzMgMi44NTUtLjczIDEuMjY2IDAgMi4zNDguNDEyIDIuODU4LjczYTQuMDggNC4wOCAwIDAxMS41MiAxLjY4IDUuMjUgNS4yNSAwIDAxLjUyNSAyLjMzOHpNOTEuMjI3IDE2YTYuMjMzIDYuMjMzIDAgMDE2LjIyNCA2LjIyNyA2LjIzMiA2LjIzMiAwIDAxLTYuMjI0IDYuMjI0QTYuMjMzIDYuMjMzIDAgMDE4NSAyMi4yMjcgNi4yMzMgNi4yMzMgMCAwMTkxLjIyNyAxNnptMy45NzEgNi4yMjdhMy45NzggMy45NzggMCAwMC0zLjk3MS0zLjk3NSAzLjk3OCAzLjk3OCAwIDAwLTMuOTc1IDMuOTc1IDMuOTc4IDMuOTc4IDAgMDAzLjk3NSAzLjk3MSAzLjk3NyAzLjk3NyAwIDAwMy45NzEtMy45NzF6bS0xMi42NjMtMS40Nzl2Ni41NTljMCAuMzIzLS4xMjguNTk5LS4zODMuODE5LS4yNS4yMTUtLjU1My4zMjUtLjkwMi4zMjUtLjM0OCAwLS42NDktLjExLS44OS0uMzI1YTEuMDY0IDEuMDY0IDAgMDEtLjM3LS44MnYtNi4zMjljMC0xLjgyNC0uODktMi43MS0yLjcyMi0yLjcxLTEuODM0IDAtMi43MjQuODg2LTIuNzI0IDIuNzF2Ni4zM2MwIC4zMjMtLjEyNC41OTYtLjM2OS44MTktLjI0LjIxNS0uNTQxLjMyNS0uODkuMzI1cy0uNjUyLS4xMS0uOTAyLS4zMjVhMS4wNDQgMS4wNDQgMCAwMS0uMzgzLS44MnYtNi41NThjMC0uODQ2LjE5LTEuNjMyLjU2NC0yLjMzNi4zNzctLjcxLjk0My0xLjI0NSAxLjYzNC0xLjY4Mi40ODktLjMxMSAxLjcxMS0uNzMgMy4wNy0uNzMgMS4zNTggMCAyLjUyMS40MTIgMy4wNy43M2E0LjIgNC4yIDAgMDExLjYzMyAxLjY4MiA0LjkgNC45IDAgMDEuNTY0IDIuMzM2ek02NC4yMjcgMTZhNi4yMzMgNi4yMzMgMCAwMTYuMjI0IDYuMjI3IDYuMjMyIDYuMjMyIDAgMDEtNi4yMjQgNi4yMjRBNi4yMzMgNi4yMzMgMCAwMTU4IDIyLjIyNyA2LjIzMyA2LjIzMyAwIDAxNjQuMjI3IDE2em0zLjk3MSA2LjIyN2EzLjk3OCAzLjk3OCAwIDAwLTMuOTcxLTMuOTc1IDMuOTc4IDMuOTc4IDAgMDAtMy45NzUgMy45NzUgMy45NzggMy45NzggMCAwMDMuOTc1IDMuOTcxIDMuOTc3IDMuOTc3IDAgMDAzLjk3MS0zLjk3MXptLTEyLjY2My00LjIwNGMwIC4yNTUtLjEuNDk0LS4yOTMuNzA3LS4zMzYuMzY3LS44MDQuNDExLTEuMjM4LjE3YTguODIgOC44MiAwIDAwLTEuMjgtLjU1OWMtLjM0Ny0uMTEtLjc4OC0uMTY4LTEuMzA5LS4xNjgtMS4yODIgMC0yLjI5OC4zNzQtMy4wMjMgMS4xMTMtLjcyNy43MzctMS4wOTQgMS43MjctMS4wOTQgMi45NCAwIDEuMjE0LjM2NyAyLjIwMiAxLjA5NCAyLjkzOC43MjUuNzQgMS43NDMgMS4xMTQgMy4wMjMgMS4xMTQuNTIxIDAgLjk2Mi0uMDU2IDEuMzA5LS4xNjlhOC42ODYgOC42ODYgMCAwMDEuMjgyLS41NTljLjQyOC0uMjM4LjktLjE5NiAxLjIzNi4xNzMuMTkzLjIxMy4yOTMuNDUuMjkzLjcwNyAwIC4zNzQtLjE3Mi42NzYtLjUwOS44OTZhOC4wNTUgOC4wNTUgMCAwMS0xLjY2MS44MDljLS41OTcuMjEtMS4zMTUuMzE2LTIuMTMzLjMxNmE2LjU2OSA2LjU2OSAwIDAxLTMuMTAyLS43NTEgNS43ODIgNS43ODIgMCAwMS0yLjI3Ny0yLjE2NGMtLjU2NS0uOTMzLS44NTMtMi4wNDktLjg1My0zLjMxIDAtMS4yNjMuMjg4LTIuMzc2Ljg1My0zLjMxMmE1LjggNS44IDAgMDEyLjI3Ny0yLjE2M0E2LjU2OSA2LjU2OSAwIDAxNTEuMjMyIDE2Yy44MTggMCAxLjUzNi4xMDggMi4xMzMuMzE4YTguMDQ4IDguMDQ4IDAgMDExLjY2MS44MDdjLjMzNy4yMjIuNTEuNTIyLjUxLjg5OHpNNDAuOTE3IDIwYTEuOTE1IDEuOTE1IDAgMTEtLjAwMiAzLjgzIDEuOTE1IDEuOTE1IDAgMDEuMDAyLTMuODN6bS01LjA5Ny0xLjAyYTYuNTMgNi41MyAwIDAxLjY3MyAyLjk0NWMwIC4zMi0uMTA4LjU5Mi0uMzIzLjgxMS0uMjE4LjIyMy0uNTEzLjMzNS0uODcyLjMzNWgtNy44OTJjLjEzNy45OS41MzQgMS43NzUgMS4xNzggMi4zMzIuNjcuNTggMS42MjYuODc1IDIuODM4Ljg3NS42NTEgMCAxLjIyNi0uMDYxIDEuNzEyLS4xODNhNy4xMjMgNy4xMjMgMCAwMDEuNDMxLS41MjRjLjE0LS4wNjcuMy0uMTAzLjQ3Mi0uMTAzLjI4IDAgLjUyNy4wOTYuNzM1LjI4M2EuOTMuOTMgMCAwMS4zMjEuNzIzYzAgLjM4LS4yMjcuNjk3LS42Ny45NDgtLjYyLjM0MS0xLjI0LjYtMS44NDQuNzcxLS42MDguMTcxLTEuMzk2LjI1OC0yLjM0Ni4yNTgtMS45NDUgMC0zLjQ4Ny0uNTUtNC41OC0xLjYzNUMyNS41NTQgMjUuNzMgMjUgMjQuMTg2IDI1IDIyLjIyNmMwLTEuMTA0LjIxLTIuMTM1LjYyNS0zLjA2OGE1LjMxIDUuMzEgMCAwMTEuOTI3LTIuMjg2QzI4LjQyIDE2LjI5NSAyOS41IDE2IDMwLjc1OCAxNmMxLjE4MyAwIDIuMjIuMjc0IDMuMDg0LjgxNGE1LjMxMiA1LjMxMiAwIDAxMS45NzggMi4xNjZ6bS04LjQyIDIuMTdoNi43NDJjLS4wNTgtLjY4Mi0uMjUyLTEuMjY1LS41NzctMS43MjhhMy4xMjggMy4xMjggMCAwMC0xLjI2Ny0xLjA4NSAzLjU4OSAzLjU4OSAwIDAwLTMuMDc3IDBjLS41LjIyOS0uOTIyLjU5NC0xLjI1NyAxLjA4My0uMzE2LjQ2Ny0uNTA3IDEuMDQ4LS41NjUgMS43M3oiIGZpbGw9IiMxODA3M0EiLz48Y2lyY2xlIGZpbGw9IiNFRjdEMDAiIGN4PSIxNS44MzEiIGN5PSIyNS44MzEiIHI9IjMuODMxIi8+PHBhdGggZD0iTTEuOTE0IDIwYTEuOTE2IDEuOTE2IDAgMTEuMDAzIDMuODMxQTEuOTE2IDEuOTE2IDAgMDExLjkxNCAyMHoiIGZpbGw9IiNFRjdEMDAiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTY1IDEwNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik02NC40NDQuNjQ5YzIuOTQ1IDAgNS4zMzIgMi41MjMgNS4zMzIgNS42MzYgMCAzLjExMS0yLjM4NyA1LjYzNS01LjMzMiA1LjYzNXMtNS4zMzItMi41MjQtNS4zMzItNS42MzVjMC0zLjExMyAyLjM4Ny01LjYzNiA1LjMzMi01LjYzNk01Mi4xMDYgMjEuNzkzYzAgMy4xMDYtMi4zODMgNS42MjYtNS4zMiA1LjYyNi0yLjkzNyAwLTUuMzE3LTIuNTItNS4zMTctNS42MjYgMC0zLjEwMSAyLjM4MS01LjYxOCA1LjMxNy01LjYxOCAyLjkzOCAwIDUuMzIgMi41MTggNS4zMiA1LjYxOG0xNy43MzYtMS41NjJjMCAzLjE4MS0yLjQzNCA1Ljc0OC01LjQzOCA1Ljc0OC0zLjAxMSAwLTUuNDQ1LTIuNTY3LTUuNDQ1LTUuNzQ4IDAtMy4xNzQgMi40MzUtNS43NTUgNS40NDUtNS43NTUgMy4wMDQgMCA1LjQzOCAyLjU4MSA1LjQzOCA1Ljc1NW0xNy42MDUgMS41MjJjMCAzLjE4Ny0yLjQ1MSA1Ljc3MS01LjQ2OCA1Ljc3MS0zLjAxMiAwLTUuNDYyLTIuNTg1LTUuNDYyLTUuNzcxIDAtMy4xOSAyLjQ1LTUuNzc4IDUuNDYyLTUuNzc4IDMuMDE3IDAgNS40NjggMi41ODggNS40NjggNS43NzhtLTE3LjYxNiAxMS45NWMwIDMuMTc2LTIuNDMxIDUuNzU0LTUuNDM4IDUuNzU0LTMuMDA5IDAtNS40NDUtMi41NzgtNS40NDUtNS43NTQgMC0zLjE3NSAyLjQzNy01Ljc1NCA1LjQ0NS01Ljc1NCAzLjAwNyAwIDUuNDM4IDIuNTc5IDUuNDM4IDUuNzU0bTEzLjI2My43OThjMCAzLjIyNy0yLjQ3MyA1LjgzNC01LjUyMiA1LjgzNC0zLjA0MSAwLTUuNTE2LTIuNjA3LTUuNTE2LTUuODM0IDAtMy4yMiAyLjQ3NS01LjgyOSA1LjUxNi01LjgyOSAzLjA0OSAwIDUuNTIyIDIuNjEgNS41MjIgNS44MjltLTMxLjg2MS01LjZjMi45MTkgMCA1LjI4NiAyLjUwMSA1LjI4NiA1LjU4NiAwIDMuMDg2LTIuMzY3IDUuNTg2LTUuMjg2IDUuNTg2LTIuOTE5IDAtNS4yODYtMi41LTUuMjg2LTUuNTg2IDAtMy4wODUgMi4zNjctNS41ODYgNS4yODYtNS41ODYiIGZpbGw9IiM3Qjc2NkMiLz48cGF0aCBkPSJNMCA1NC40YzAtMS42NTkgMTQuNTkyLTEuNzkyIDE0LjkyNi0uMzk4IDAgMCA1LjM0IDMwLjUwNiA1LjQ3MyAzMS42MzRoLjM5OWMxLjY1Ny01LjUwNSAxMS44NC0zMS42MzQgMTEuODQtMzEuNjM0LjU5OC0xLjM5NCAxMy45MzEtMS4zMjYgMTMuOTMxLjE5OSAwIC41MzEtLjEzNSAxLjA5NC0uMzk3IDEuNjlsLTIwLjY5NyA0OC4wNjRjLS41OTcgMS4zOTMtMTMuOTk3IDEuMzkzLTE0LjMyOCAwTC4xOTkgNTUuODkxQy4wNjYgNTUuMDk2IDAgNTQuNTk4IDAgNTQuNG04Mi42MjggOC4yMzRsLjU3OS03Ljg0MmMuODkxLTEuNzg3IDEzLjkzOC0uODYyIDE0LjAwNC4yODkuMDQ2Ljc5Mi0uMzU1IDUuNzE0LS4zNTUgNS43MTQuMDM5LTMuNzA0IDkuMDY3LTYuNTU5IDEzLjQ0Ni02LjU1OSAxLjMyMSAwIDEuOTI1LS4xMTYgMi41MS4wNzUuNzk0LjI2MS0xLjA0MiAxMi4yNjgtMS45NDggMTIuNTQzLTEuNzEzLjUyMS0zLjA2OS4zNTktNS44ODQgMS4wODMtMy43MDQuOTUyLTcuODkzIDMuNjgyLTguNzYyIDYuMDUxbC0yLjg3NyAyOS4zODFjLS4xOTcgMi4xMjMtMTUuMDUzIDEuNTI0LTE0LjcyNi4wOTkgMCAwIDMuNjc3LTM4LjYxNyA0LjAxMy00MC44MzRtNTYuMTc4LTMwLjMyNGwtNC4xOCA0MC41OS4zOTguMSAxMy45My0xOS4xOTdjLjk5Ny0xLjI2IDE1LjQyNC0xLjQyNCAxNS40MjQtLjQ5NyAwIC40NjYtLjM5NyAxLjE2LTEuMTkyIDIuMDkxbC0xNS44MjMgMjAuODg3IDEzLjUzNCAyNS42NzNjLjMzLjY2My43NjYgMS42NzEuNDk4IDIuMTMtLjQ2OC43OTUtMTUuMTI1IDEuMTYxLTE1LjcyNC0uMTAybC0xMS40NDItMjMuMjIzLS4zOTguMDk5LTIuMjg5IDIyLjM0MWMtLjE5OCAyLjEyMi0xNC43MjcgMi4xMjItMTQuNzI3IDBsNy4yNjYtNzAuODkxYy4xOTYtMi4xMjQgMTQuNzI1LTIuMTI0IDE0LjcyNS0uMDAxTTcwLjcxIDU0Ljk5N2MuMi0xLjk5Mi0xNC41MjctMi4wMjItMTQuNzI3LjEwMUw1NC40MSA3MS4wNzZsLTMuMzE0IDMyLjEyNWMwIDIuMTIyIDE0LjUyOSAyLjEyMiAxNC43MjcgMGwyLjI4OC0yMi4zNDIgMS41MzUtMTUuMzQ3Yy4zMjktMy4yMjYuNjgzLTYuNzMxIDEuMDY0LTEwLjUxNSIgZmlsbD0iIzMwMkMyNyIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1LjE4MiAwbC03LjM5NyAxMC40ODIgOC40NSAxMC40ODhoMi43NjNMMjAuNTUgMTAuNDU0IDI3LjkzNiAwaC0yLjc1NHptLTExLjM1IDIwLjc3aDIuODEzVi4wNWgtMi44MTN2MjAuNzIyem0tNC42MTEgMGgyLjgxM1YuMDVIOS4yMnYyMC43MjJ6bS00LjYxIDBoMi44MTNWLjA1SDQuNjF2MjAuNzIyek0wIDIwLjc3aDIuODEyVi4wNUgwdjIwLjcyMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzc2NzY3NiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTAgMTguNWE4LjUgOC41IDAgMTAwLTE3IDguNSA4LjUgMCAwMDAgMTd6bTAgMS41QzQuNDc3IDIwIDAgMTUuNTIzIDAgMTBTNC40NzcgMCAxMCAwczEwIDQuNDc3IDEwIDEwLTQuNDc3IDEwLTEwIDEweiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHJlY3QgeD0iNiIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgcng9IjEiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NiA0NiI+PHBhdGggZD0iTTQ0LjUgMjIuNEM0NC4yIDEwLjggMzQuNyAxLjUgMjMgMS41IDExLjEgMS41IDEuNSAxMS4xIDEuNSAyM2MwIDExLjcgOS4zIDIxLjIgMjAuOSAyMS41IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZWQ1NTEiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNiAyNiI+PHBhdGggZD0iTTI0LjUgMTIuNEMyNC4yIDYuMyAxOS4yIDEuNSAxMyAxLjUgNi42IDEuNSAxLjUgNi42IDEuNSAxM2MwIDYuMSA0LjggMTEuMiAxMC45IDExLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZlZDU1MSIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiB3aWR0aD0iMTAwLjY0NiIgaGVpZ2h0PSIyMC4wMDQiIHZpZXdCb3g9IjAgMCAxNTMuOTI5IDMxLjAwNiI+PHBhdGggZD0iTTE0NS4yODMgMzAuNzU2aC0yLjQ1bC0uMDk2LS4yOThMMTMzLjE2NS4yNWgzLjE2OGw3LjcyNSAyNC43MTJMMTUxLjc4LjI1MmgzLjE3bC05LjY2NyAzMC41MDR6bS0yMi45NTIuMjVjLTIuODMgMC01LjQwMi0xLjA1LTcuMjQtMi45NTctMi44MjctMi45MzUtMi45Ny01LjUxNy0yLjk3LTEyLjU0OCAwLTcuMDMuMTQzLTkuNjEgMi45Ny0xMi41NDRDMTE2LjkzIDEuMDUgMTE5LjUgMCAxMjIuMzMgMHM1LjQgMS4wNSA3LjI0IDIuOTU4YzIuODMgMi45MzMgMi45NzMgNS41MTQgMi45NzMgMTIuNTQ0cy0uMTQzIDkuNjEzLTIuOTcyIDEyLjU0N2MtMS44MzggMS45MDYtNC40MSAyLjk1Ni03LjI0IDIuOTU2em01LjEyNS0yNS45NzhjLTEuMzg1LTEuNDM1LTMuMTEtMi4xNjItNS4xMjQtMi4xNjItMi4wMTUgMC0zLjc0LjcyNy01LjEyMyAyLjE2Mi0xLjkxNCAxLjk4Ny0yLjA4NCA0LjMxOC0yLjA4NCAxMC40NzQgMCA2LjE1OC4xNyA4LjQ5IDIuMDg0IDEwLjQ3NyAxLjM4NCAxLjQzNCAzLjEwNyAyLjE2IDUuMTI0IDIuMTYgMi4wMTYgMCAzLjc0LS43MjYgNS4xMjUtMi4xNiAxLjkxMy0xLjk4OCAyLjA4NS00LjMyIDIuMDg1LTEwLjQ3OCAwLTYuMTU2LS4xNzItOC40ODctMi4wODUtMTAuNDc0em0tMzcuMTA1Ljk2NHYyNC43NjRoLTMuMDA1Vi4yNWgyLjgxbDE1Ljg1NSAyNC42ODVWLjI1aDMuMDAzdjMwLjUwNmgtMi44MUw5MC4zNSA1Ljk5MnptLTkuMDA3IDI0Ljc2NEw3NC41MiAxNy4xMDN2LTIuODY2aC44MTdjMi4xOTYgMCA1Ljg4My0uNzIyIDUuODgzLTUuNTYgMC00Ljg0LTMuNjg3LTUuNTYtNS44ODMtNS41NmgtOC4wMXYyNy42NEg2NC4zMlYuMjVoMTEuM2M1LjIyNSAwIDguNjAzIDMuMjkgOC42MDMgOC4zODYgMCA0LjMxLTIuMzY4IDcuMzc2LTYuMzcgOC4zMDVsNi45NjQgMTMuODE2aC0zLjQ3NHpNNTEuNTkgNC45NzZsLTguODU4IDI1Ljc4aC0zLjIyTDUwLjMzNS4yNWgyLjUxTDYzLjY3IDMwLjc1NmgtMy4yMjNMNTEuNTkgNC45NzZ6TTM5LjM2NCAyOC4zMzJsLS44NTIgMi40MjNoLTEuMkwyNC45NTcgMTUuNSAzNS43Ny4yNWgzLjk5N0wyOC45NyAxNS40NTdsMTAuMzk0IDEyLjg3NnpNMTkuMTc2LjMyM2g0LjExM3YzMC4xNDNoLTQuMTE0Vi4zMjJ6bS02Ljc0MiAwaDQuMTEzdjMwLjE0M2gtNC4xMTNWLjMyMnptLTYuNzQyIDBoNC4xMTN2MzAuMTQzSDUuNjkyVi4zMjJ6bS02Ljc0MiAwaDQuMTEzdjMwLjE0M0gtMS4wNVYuMzIyeiIgZmlsbD0iI2NjYyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgMTVhMSAxIDAgMDEuOTk1LTFoMTcuMDFhMS4wMDEgMS4wMDEgMCAwMTAgMkguOTk1QS45OTUuOTk1IDAgMDEwIDE1em0wLTdhMSAxIDAgMDEuOTk1LTFoMTcuMDFhMS4wMDEgMS4wMDEgMCAwMTAgMkguOTk1QS45OTUuOTk1IDAgMDEwIDh6bTAtN2ExIDEgMCAwMS45OTUtMWgxNy4wMWExLjAwMSAxLjAwMSAwIDAxMCAySC45OTVBLjk5NS45OTUgMCAwMTAgMXoiIGZpbGw9IiMyMjIiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODkiIGhlaWdodD0iODkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMzcgMTBoMzl2NjMuNzE5TTEgODhoMThWMTBoMTIiLz48cGF0aCBkPSJNNzAgNzZWMTZIMjV2NzJoNDhNMzQgMTZ2NzJtOS03MnY3Mm05LTcydjcybTktNzJ2NzJNMjUgMjhoNDVNMjUgNDBoNDVNMjUgNTJoNDVNMjUgNjRoNDVtLTYtNTRWNEg1MlYxaC05djNIMzF2NiIvPjxwYXRoIGQ9Ik04NSA4MmMtLjYgMC0xLjE1Ni4xODEtMS42MjYuNDg0QTQuNDk1IDQuNDk1IDAgMDA3OSA3OWE0LjQ5NSA0LjQ5NSAwIDAwLTQuMzc0IDMuNDg0QTIuOTkgMi45OSAwIDAwNzMgODJhMy4wMDEgMy4wMDEgMCAwMDAgNmgxMmEzLjAwMSAzLjAwMSAwIDAwMC02em0tNzItOWMwLTYtMS41LTE4LTYtMThTMSA2NyAxIDczYTYgNiAwIDAwMTIgMHptLTYgNnY5bTE4LTEyaDQ1Ii8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cmVjdCBzdHJva2U9IiNENUQ1RDUiIGZpbGw9IiNGRkYiIHg9Ii41IiB5PSIuNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiByeD0iMiIvPjxwYXRoIGQ9Ik02LjY3NiA5LjIxNGMwLS41MTguMDYzLS45My4xODktMS4yMzcuMTI1LS4zMDcuMzU2LS42MS42OS0uOTA3LjMzNS0uMjk4LjU1OC0uNTQuNjctLjcyN2ExLjE0IDEuMTQgMCAwMC4xNjYtLjU5MWMwLS42MjYtLjI4OS0uOTM4LS44NjYtLjkzOC0uMjc0IDAtLjQ5My4wODQtLjY1OC4yNTItLjE2NC4xNjktLjI1LjQtLjI1OC42OTdINWMuMDA3LS43MDcuMjM2LTEuMjYuNjg1LTEuNjYuNDUtLjQgMS4wNjMtLjU5OSAxLjg0LS41OTkuNzg0IDAgMS4zOTMuMTkgMS44MjYuNTY5LjQzMy4zOC42NDkuOTE1LjY0OSAxLjYwNiAwIC4zMTUtLjA3LjYxMi0uMjEuODkxLS4xNDEuMjgtLjM4Ny41OS0uNzM5LjkzbC0uNDUuNDI3Yy0uMjguMjctLjQ0Mi41ODYtLjQ4Mi45NDlsLS4wMjIuMzM4SDYuNjc2em0tLjE2MSAxLjcwNGMwLS4yNDguMDg0LS40NTIuMjUyLS42MTNhLjg5Ny44OTcgMCAwMS42NDctLjI0MmMuMjYzIDAgLjQ3OC4wOC42NDYuMjQyLjE2OS4xNi4yNTMuMzY1LjI1My42MTNhLjgwNS44MDUgMCAwMS0uMjQ3LjYwNWMtLjE2NS4xNTktLjM4Mi4yMzktLjY1Mi4yMzlzLS40ODctLjA4LS42NTItLjI0YS44MDUuODA1IDAgMDEtLjI0Ny0uNjA0eiIgZmlsbD0iIzAwMCIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzk4MjIyMyI+PHBhdGggZD0iTTEwIDE4LjVhOC41IDguNSAwIDEwMC0xNyA4LjUgOC41IDAgMDAwIDE3em0wIDEuNUM0LjQ3NyAyMCAwIDE1LjUyMyAwIDEwUzQuNDc3IDAgMTAgMHMxMCA0LjQ3NyAxMCAxMC00LjQ3NyAxMC0xMCAxMHoiLz48cGF0aCBkPSJNMTIuNzU2IDUuMzQ1Yy0xLjczOS0uOTE2LTIuODg1LjI1NC00LjkwNC40OTIuMjI4IDEuNzEuMjEgMy40NDYtLjA1NyA1LjE1MSAxLjM0Ljk1IDIuNDY4IDIuMTY1IDMuMzE2IDMuNTdhLjY2OS42NjkgMCAwMDEuMTEzIDBjLjMwMS0uMzc0LjE4NC0uNjE1LS4wNjMtMi4wMDUtLjA2Ny0uMzQuMDItLjY5LjIzNy0uOTYuNzA1LS44NzIgMS43MDguMDg0IDIuNDA3LS45MDIuNjk5LS45ODctLjU5NS00LjU3NC0yLjA1LTUuMzQ2ek01IDUuODM3djUuMTUxaDEuNzUyYy4zMzktMS45OTEuMzM5LTMuMTYgMC01LjE1MUg1eiIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzQzOEUzRiI+PHBhdGggZD0iTTEwIDE4LjVhOC41IDguNSAwIDEwMC0xNyA4LjUgOC41IDAgMDAwIDE3em0wIDEuNUM0LjQ3NyAyMCAwIDE1LjUyMyAwIDEwUzQuNDc3IDAgMTAgMHMxMCA0LjQ3NyAxMCAxMC00LjQ3NyAxMC0xMCAxMHoiLz48cGF0aCBkPSJNMTIuNzU2IDE0LjUxMWMtMS43MzkuOTE2LTIuODg1LS4yNTQtNC45MDQtLjQ5MS4yMjgtMS43MTEuMjEtMy40NDYtLjA1Ny01LjE1MmExMS45MjEgMTEuOTIxIDAgMDAzLjMxNi0zLjU3LjY2OS42NjkgMCAwMTEuMTEzIDBjLjMwMS4zNzUuMTg0LjYxNS0uMDYzIDIuMDA2LS4wNjcuMzQuMDIuNjkuMjM3Ljk2LjcwNS44NzIgMS43MDgtLjA4NCAyLjQwNy45MDIuNjk5Ljk4Ni0uNTk1IDQuNTczLTIuMDUgNS4zNDV6TTUgMTQuMDJWOC44NjhoMS43NTJjLjMzOSAxLjk5Mi4zMzkgMy4xNiAwIDUuMTUySDV6Ii8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIvPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTMuMjkgNi44Nkw0LjgyIDIxYTIgMiAwIDAwMS43MSAzaDE2Ljk0YTIgMiAwIDAwMS43MS0zTDE2LjcxIDYuODZhMiAyIDAgMDAtMy40MiAwek0xNSAxMnY0IiBzdHJva2U9IiMyRjJGMkIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PGNpcmNsZSBmaWxsPSIjMkYyRjJCIiBjeD0iMTUiIGN5PSIyMCIgcj0iMSIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwIDExLjQxNGw0LjI5MyA0LjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDExLjQxNCAxMGw0LjI5My00LjI5M2ExIDEgMCAxMC0xLjQxNC0xLjQxNEwxMCA4LjU4NiA1LjcwNyA0LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNEw4LjU4NiAxMGwtNC4yOTMgNC4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNEwxMCAxMS40MTR6IiBmaWxsPSIjMjIyIi8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDMgMzBhMSAxIDAgMDEwIDJIMjhhMSAxIDAgMDEwLTJoMTV6bTEyIDEyYTEgMSAwIDAxMCAySDI4YTEgMSAwIDAxMC0yaDI3em02IDJhMSAxIDAgMDEwLTJoMTJhMSAxIDAgMDEwIDJINjF6TTI4IDYyYTEgMSAwIDAxMC0yaDEyYTEgMSAwIDAxMCAySDI4em0wLTlhMSAxIDAgMDEwLTJoMTJhMSAxIDAgMDEwIDJIMjh6bTE4IDBhMSAxIDAgMDEwLTJoNmExIDEgMCAwMTAgMmgtNnptMTIgMGExIDEgMCAwMTAtMmg5YTEgMSAwIDAxMCAyaC05ek0yOCA3MWExIDEgMCAwMTAtMmg5YTEgMSAwIDAxMCAyaC05em0zNiAwYTEgMSAwIDAxMC0yaDlhMSAxIDAgMDEwIDJoLTl6bS0yMSAwYTEgMSAwIDAxMC0yaDE1YTEgMSAwIDAxMCAySDQzem0zLTlhMSAxIDAgMDEwLTJoMjRhMSAxIDAgMDEwIDJINDZ6TTY2LjI5MyA3LjcwN0w2NyA4aC0uNDE0bC0uMjkzLS4yOTN6TTczIDI5YTcgNyAwIDAxLTctN1Y3YTEgMSAwIDAxMiAwdjE1YTUgNSAwIDAwNSA1aDE1YTEgMSAwIDAxMSAxdjYwYzAgLjg5LTEuMDc3IDEuMzM3LTEuNzA3LjcwN0w4MiA4My40MTRsLTguMjkzIDguMjkzYTEgMSAwIDAxLTEuNDE0IDBMNjguNSA4Ny45MTRsLTMuNzkzIDMuNzkzYTEgMSAwIDAxLTEuNDE0IDBMNTggODYuNDE0bC01LjI5MyA1LjI5M2ExIDEgMCAwMS0xLjQxNCAwTDQ5IDg5LjQxNGwtNS4yOTMgNS4yOTNhMSAxIDAgMDEtMS40MTQgMEwzNyA4OS40MTRsLTUuMjkzIDUuMjkzYTEgMSAwIDAxLTEuNDE0IDBMMjIgODYuNDE0bC04LjI5MyA4LjI5M2MtLjYzLjYzLTEuNzA3LjE4NC0xLjcwNy0uNzA3VjEzYTcgNyAwIDAxNy03aDQ4YTEgMSAwIDAxLjcwNy4yOTNsMjEgMjFhMSAxIDAgMDEtMS40MTQgMS40MTRMNjYuNTg2IDhIMTlhNSA1IDAgMDAtNSA1djc4LjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDBMMzEgOTIuNTg2bDUuMjkzLTUuMjkzYTEgMSAwIDAxMS40MTQgMEw0MyA5Mi41ODZsNS4yOTMtNS4yOTNhMSAxIDAgMDExLjQxNCAwTDUyIDg5LjU4Nmw1LjI5My01LjI5M2ExIDEgMCAwMTEuNDE0IDBMNjQgODkuNTg2bDMuNzkzLTMuNzkzYTEgMSAwIDAxMS40MTQgMEw3MyA4OS41ODZsOC4yOTMtOC4yOTNhMSAxIDAgMDExLjQxNCAwTDg3IDg1LjU4NlYyOGwxIDFINzN6Ii8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIiIGhlaWdodD0iNzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgc3Ryb2tlPSIjMzEzMTMxIiBjeD0iMzYiIGN5PSIzNiIgcj0iMzUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNyAyNikiIHN0cm9rZT0iIzJGMkYyQiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB5PSI5IiB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHJ4PSIyIi8+PHBhdGggZD0iTTQgOVY1YTUgNSAwIDExMTAgMHY0Ii8+PC9nPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIiIGhlaWdodD0iNzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgc3Ryb2tlPSIjMzEzMTMxIiBjeD0iMzYiIGN5PSIzNiIgcj0iMzUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNyAyNikiIHN0cm9rZT0iIzJGMkYyQiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB5PSIyIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDB2NE01IDB2NE0wIDhoMTgiLz48L2c+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTkgMTE5Ij48ZyBkYXRhLW5hbWU9IkxheWVyIDIiPjxwYXRoIGQ9Ik01OS41IDExOUE1OS41IDU5LjUgMCAxMTExOSA1OS41IDU5LjU3IDU5LjU3IDAgMDE1OS41IDExOXptMC0xMTdBNTcuNSA1Ny41IDAgMTAxMTcgNTkuNSA1Ny41NiA1Ny41NiAwIDAwNTkuNSAyeiIvPjxwYXRoIGQ9Ik01OS41IDU2LjVhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bTAtNDRhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bTAgOTNhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bS00NS00M2EzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXptOTEgMmEzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXoiLz48cGF0aCBkPSJNNTkuNSAzMS4wNkw4Ny45MyA1OS41IDU5LjUgODcuOTMgMzEuMDYgNTkuNSA1OS41IDMxLjA2bTAtMi44M0wyOC4yMyA1OS41IDU5LjUgOTAuNzYgOTAuNzYgNTkuNSA1OS41IDI4LjIzeiIvPjxwYXRoIGQ9Ik0xMDAuNSA2MC41aC0xMWExIDEgMCAwMTAtMmgxMWExIDEgMCAwMTAgMnptLTcxIDBoLTEwYTEgMSAwIDAxMC0yaDEwYTEgMSAwIDAxMCAyem0zMC0zMGExIDEgMCAwMS0xLTF2LTExYTEgMSAwIDAxMiAwdjExYTEgMSAwIDAxLTEgMXptMCA3MWExIDEgMCAwMS0xLTF2LTExYTEgMSAwIDAxMiAwdjExYTEgMSAwIDAxLTEgMXoiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTkgMTE5Ij48ZyBkYXRhLW5hbWU9IkxheWVyIDIiPjxwYXRoIGQ9Ik01OS41IDExOUE1OS41IDU5LjUgMCAxMTExOSA1OS41IDU5LjU3IDU5LjU3IDAgMDE1OS41IDExOXptMC0xMTdBNTcuNSA1Ny41IDAgMTAxMTcgNTkuNSA1Ny41NiA1Ny41NiAwIDAwNTkuNSAyeiIvPjxwYXRoIGQ9Ik01OS41IDEwLjVhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bTAgOTNhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bS00NS00M2EzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXptOTEgMmEzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXpNMzUuNzggOC43OGExIDEgMCAwMC0xIC44NHYuMDVhMSAxIDAgMDAuODQgMS4xNGguMTVhMSAxIDAgMDAxLS44NXYtLjAzYTEgMSAwIDAwLS44My0xLjE0em0tLjI1IDQuODRoLS4wNWExIDEgMCAwMC0uOTUgMXYuMDVhMSAxIDAgMDAxIC45NSAxIDEgMCAwMDEtMS4wNSAxIDEgMCAwMC0xLTF6bS43IDQuNzlhMSAxIDAgMDAtLjI0IDAgMSAxIDAgMDAtLjczIDEuMjF2LjA2YTEgMSAwIDAwMSAuNzUgMSAxIDAgMDAxLTEuMjQgMSAxIDAgMDAtMS0uNzZ6TTM3Ljg5IDIzYTEgMSAwIDAwLS40My4xIDEgMSAwIDAwLS40NiAxLjMgMSAxIDAgMDAuOS41NiAxIDEgMCAwMC40My0uMSAxIDEgMCAwMC40Ny0xLjM0IDEgMSAwIDAwLS45LS41N3ptMi41NSA0LjEyYTEgMSAwIDAwLS42MS4yMSAxIDEgMCAwMC0uMTkgMS40IDEgMSAwIDAwLjc5LjM5IDEgMSAwIDAwLjc5LTEuNjEgMSAxIDAgMDAtLjc5LS40em0zLjMyIDMuNTRhMSAxIDAgMDAtLjY2IDEuNzUgMSAxIDAgMDAuNjYuMjQgMSAxIDAgMDAuNjUtMS43NiAxIDEgMCAwMC0uNjUtLjI0em00IDIuNzlhMSAxIDAgMDAtLjg4LjUxIDEgMSAwIDAwLjM4IDEuMzZoLjA1YTEgMSAwIDAwLjQ5LjEzIDEgMSAwIDAwLjQ5LTEuODcgMSAxIDAgMDAtLjQ5LS4xM3ptNC40MyAxLjk0YTEgMSAwIDAwLS45NS43IDEgMSAwIDAwLjY0IDEuMjZoLjA2YS43OS43OSAwIDAwLjMgMCAxIDEgMCAwMC4zLTEuOTUgMS4xOCAxLjE4IDAgMDAtLjMxIDB6bTE0LjM5LjFhLjkzLjkzIDAgMDAtLjI5IDAgMSAxIDAgMDAuMjkgMiAxIDEgMCAwMC4yOSAwIDEgMSAwIDAwLjY3LTEuMjUgMSAxIDAgMDAtMS0uNzF6TTcxIDMzLjU3YTEgMSAwIDAwLS40OC4xMkExIDEgMCAwMDcxIDM1LjZhLjkuOSAwIDAwLjQ3LS4xMyAxIDEgMCAwMC0uNDctMS45em00LTIuNzRhMSAxIDAgMDAtLjY1LjIzIDEgMSAwIDAwLjY1IDEuOCAxIDEgMCAwMC42NC0uMjMgMSAxIDAgMDAtLjY0LTEuOHptMy4zNi0zLjQ5YTEgMSAwIDAwLS43OC4zOCAxIDEgMCAwMC43OCAxLjYyIDEgMSAwIDAwLjc4LS4zNyAxIDEgMCAwMC0uMTctMS40IDEgMSAwIDAwLS42Mi0uMjJ6TTgxIDIzLjI1YTEgMSAwIDAwLS44OS41NXYuMDVhMSAxIDAgMDAuNDQgMS4zNC45MS45MSAwIDAwLjQ1LjExIDEgMSAwIDAwLjg5LS41NSAxIDEgMCAwMC0uNDUtMS4zNCAxIDEgMCAwMC0uNDUtLjExem0xLjczLTQuNTJhMSAxIDAgMDAtMSAuNzR2LjA1YTEgMSAwIDAwLjcgMS4yMi44Mi44MiAwIDAwLjI2IDAgMSAxIDAgMDAxLS43NCAxIDEgMCAwMC0uNzEtMS4yMiAxLjA3IDEuMDcgMCAwMC0uMjUgMHptLjc3LTQuNzlhMSAxIDAgMDAtMSAuOTR2LjA2YTEgMSAwIDAwLjg5IDEuMDZoLjA3YTEgMSAwIDAwMS0uOTRWMTVhMSAxIDAgMDAtLjk0LTF6bS0uMi00Ljg0aC0uMTRhMSAxIDAgMDAtLjg1IDEuMTMgMSAxIDAgMDAxIC44NmguMTRhMSAxIDAgMDAuODEtMS4wOSAxIDEgMCAwMC0xLS44NnpNNS4xNCA4MS45M2ExIDEgMCAwMC42NS45MyAxIDEgMCAwMDEuMjgtLjU5LjgzLjgzIDAgMDAuMTItLjI3IDEgMSAwIDAwLS42Ni0xIDEgMSAwIDAwLTEuMjkuNTkgMSAxIDAgMDAtLjA2LjM1em00LjY4IDEuMjNhMSAxIDAgMDAuODQgMWguMDZhMSAxIDAgMDAxLjE0LS44NC43Ni43NiAwIDAwMC0uMTUgMSAxIDAgMDAtLjg0LTEgMSAxIDAgMDAtMS4xOS44M3YuMTZ6bTQuODQuMjVhMSAxIDAgMDAxLjA1IDEgMSAxIDAgMDAxLTEgMSAxIDAgMDAtMS0xaC0uMDVhMSAxIDAgMDAtMSAxem00Ljc5LS43YS42Ny42NyAwIDAwMCAuMjQgMSAxIDAgMDAxLjIxLjczaC4wNmExIDEgMCAwMC43NS0xIDEgMSAwIDAwLTEuMjUtMWgtLjA1YTEgMSAwIDAwLS43NiAxek0yNCA4MS4wNWExIDEgMCAwMC4xMS40MyAxIDEgMCAwMDEuMzMuNDcgMSAxIDAgMDAuNTYtLjkgMSAxIDAgMDAtLjEtLjQzIDEgMSAwIDAwLTEuMzQtLjQ3IDEgMSAwIDAwLS41Ny45em00LjEzLTIuNTVhMSAxIDAgMDAuMi42MSAxIDEgMCAwMDEuNDEuMTkgMSAxIDAgMDAuMzktLjc5IDEgMSAwIDAwLS4yMS0uNjEgMSAxIDAgMDAtMS40LS4xOCAxIDEgMCAwMC0uMzkuNzl6bTMuNTMtMy4zMmExIDEgMCAwMC4zNC43NiAxIDEgMCAwMDEuNDEtLjEgMSAxIDAgMDAuMjQtLjY2IDEgMSAwIDAwLS4zNC0uNzUgMSAxIDAgMDAtMS40MS4xIDEgMSAwIDAwLS4yNC42NXptMi43OS00YTEgMSAwIDAwLjUxLjg3IDEgMSAwIDAwMS4zNi0uMzggMSAxIDAgMDAuMTMtLjQ5IDEgMSAwIDAwLS41MS0uODcgMSAxIDAgMDAtMS4zNi4zOCAxLjEzIDEuMTMgMCAwMC0uMTMuNXptLjE2LTIzLjI5YTEgMSAwIDAwLjEyLjQ4IDEgMSAwIDAwMS43Ni0xIDEgMSAwIDAwLTEuODguNDh6bS0yLjc0LTRhMSAxIDAgMDAuMjQuNjVBMSAxIDAgMDAzMy45IDQ0YTEgMSAwIDAwLS4yMy0uNjQgMSAxIDAgMDAtMS43Ni42NHptLTMuNDktMy4zNmExIDEgMCAwMC4zOC43OCAxIDEgMCAwMDEuNDEtLjE2IDEgMSAwIDAwLjIyLS42MiAxIDEgMCAwMC0uMzgtLjc4IDEgMSAwIDAwLTEuNC4xNyAxIDEgMCAwMC0uMjIuNjJ6TTI0LjMgMzhhMSAxIDAgMDAuNTUuODkgMSAxIDAgMDAxLjM1LS40NCAxIDEgMCAwMC4xLS40NSAxIDEgMCAwMC0uNTUtLjg5IDEgMSAwIDAwLTEuNDQuOXptLTQuNTMtMS43MmExIDEgMCAwMC43NCAxIDEgMSAwIDAwMS4yMy0uNyAxLjIyIDEuMjIgMCAwMDAtLjI2IDEgMSAwIDAwLS43NC0xIDEgMSAwIDAwLTEuMi42OCAxLjA5IDEuMDkgMCAwMDAgLjI2em0tNC43Ny0uOGExIDEgMCAwMC45NCAxSDE2YTEgMSAwIDAwMS0uOTN2LS4wN2ExIDEgMCAwMC0uOTQtMUgxNmExIDEgMCAwMC0xIC45NHYuMDZ6bS00Ljg1LjJ2LjE0YTEgMSAwIDAwMS4xMy44NWguMDVhMSAxIDAgMDAuODctMXYtLjE0YTEgMSAwIDAwLTEuMTMtLjg1SDExYTEgMSAwIDAwLS44NiAxem0tNC43IDEuMTZhMSAxIDAgMDAuMDYuMzQgMSAxIDAgMDAxLjI4LjYgMSAxIDAgMDAuNjYtMSAxIDEgMCAwMC0uMDYtLjMzIDEgMSAwIDAwLTEuMjctLjYxaC0uMDZhMSAxIDAgMDAtLjY2Ljk0em0xMDQuNzEtMS4xYTEgMSAwIDAwLS44NC0xaC0uMDZhMSAxIDAgMDAtMS4xNC44My44Ni44NiAwIDAwMCAuMTYgMSAxIDAgMDAuODUgMWguMDNhMSAxIDAgMDAxLjE0LS44My45Mi45MiAwIDAwMC0uMTZ6bS00Ljg0LS4yNmExIDEgMCAwMC0xLTFoLS4wNmExIDEgMCAwMC0xIDF2LjA1YTEgMSAwIDAwMSAuOTVoLjA1YTEgMSAwIDAwLjk1LTF6bS00Ljc5LjcxYTEuMTMgMS4xMyAwIDAwMC0uMjUgMSAxIDAgMDAtMS4yMS0uNzJoLS4wNmExIDEgMCAwMC0uNzUgMSAxLjA3IDEuMDcgMCAwMDAgLjI1IDEgMSAwIDAwMS4yMS43MiAxIDEgMCAwMC43Ni0xek05NiAzNy44NWExIDEgMCAwMC0uMS0uNDQgMSAxIDAgMDAtMS4zNi0uNDEgMSAxIDAgMDAtLjU2Ljg5IDEgMSAwIDAwLjEuNDQgMSAxIDAgMDAxLjM0LjQ2IDEgMSAwIDAwLjU2LS45em0tNC4xMiAyLjU0YTEgMSAwIDAwLS4yMS0uNiAxIDEgMCAwMC0xLjQtLjE5IDEgMSAwIDAwLS4zOS43OUExIDEgMCAwMDkwIDQxYTEgMSAwIDAwMS40LjE4IDEgMSAwIDAwLjQtLjh6bS0zLjU0IDMuMzJBMSAxIDAgMDA4OCA0M2ExIDEgMCAwMC0xLjQxLjEgMSAxIDAgMDAtLjI0LjY1IDEgMSAwIDAwLjM0Ljc2IDEgMSAwIDAwMS40Mi0uMSAxIDEgMCAwMC4yNC0uNjZ6bS0yLjc5IDRhMSAxIDAgMDAtLjU1LS45MSAxIDEgMCAwMC0xLjM2LjM4IDEgMSAwIDAwLS4xMy40OSAxIDEgMCAwMC41MS44NyAxIDEgMCAwMDEuMzYtLjM4di0uMDVhMSAxIDAgMDAuMTMtLjQ5em0tMS45NCA0LjQ0YTEgMSAwIDAwLS43LTEgMSAxIDAgMDAtMS4yNS42NHYuMDZhLjc5Ljc5IDAgMDAtLjA1LjMgMSAxIDAgMDAyIC4zdi0uMDVhMSAxIDAgMDAwLS4zem0tLjEgMTQuMzlhMS41NCAxLjU0IDAgMDAwLS4zIDEgMSAwIDAwLTIgLjI5IDEgMSAwIDAwMCAuMjkgMSAxIDAgMDAyLS4yOXpNODUuMzcgNzFhMSAxIDAgMDAtLjEyLS40OCAxIDEgMCAwMC0xLjg3LjQ3LjkuOSAwIDAwLjEyLjQ4IDEgMSAwIDAwMS44Ny0uNDd6bTIuNzQgNGExIDEgMCAwMC0uMjMtLjY0IDEgMSAwIDAwLTEuNzYuNjQgMS4wNSAxLjA1IDAgMDAuMjMuNjUgMSAxIDAgMDAxLjc2LS42NXptMy40OSAzLjM3YTEgMSAwIDAwLS4zOC0uNzkgMSAxIDAgMDAtMS42Mi43OSAxIDEgMCAwMC4zNy43OCAxIDEgMCAwMDEuNC0uMTcgMSAxIDAgMDAuMjItLjYyem00LjA5IDIuNmExIDEgMCAwMC0uNTUtLjg5IDEgMSAwIDAwLTEuMzQuNDUuODguODggMCAwMC0uMTEuNDUgMSAxIDAgMDAuNTUuODkgMSAxIDAgMDAxLjM0LS40NSAxIDEgMCAwMC4xMS0uNDV6bTQuNTIgMS43MmExIDEgMCAwMC0uNzQtMSAxIDEgMCAwMC0xLjIyLjcxLjc4Ljc4IDAgMDAwIC4yNiAxIDEgMCAwMC43NCAxaC4wNmExIDEgMCAwMDEuMjItLjcxIDEuMDkgMS4wOSAwIDAwMC0uMjZ6bTQuNzkuNzdhMSAxIDAgMDAtLjk0LTEgMSAxIDAgMDAtMS4wNi45NC4xMy4xMyAwIDAwMCAuMDYgMSAxIDAgMDAuOTQgMWguMDZhMSAxIDAgMDAxLS45NC4xMy4xMyAwIDAwMC0uMDZ6bTQuODQtLjE5YS42Ni42NiAwIDAwMC0uMTQgMSAxIDAgMDAtMS4xMy0uODUgMSAxIDAgMDAtLjg2IDEgLjU3LjU3IDAgMDAwIC4xMyAxIDEgMCAwMDEuMTMuODYgMSAxIDAgMDAuODYtMXptLTU5Ljc1LS43N2ExIDEgMCAwMC0uNC4wOSAxIDEgMCAxMC44MiAxLjgzIDEgMSAwIDAwLS40MS0xLjkyem0tNC4xNyAyLjQ0YTEgMSAwIDAwLS42LjE5IDEgMSAwIDAwLS4yMSAxLjQgMSAxIDAgMDAuOC40MSAxIDEgMCAwMC42LS4yIDEgMSAwIDAwLjIxLTEuMzkgMSAxIDAgMDAtLjgtLjQxem0tMy41OCAzLjI1YTEgMSAwIDAwLS43NS4zMyAxIDEgMCAwMC4wNSAxLjQ4IDEgMSAwIDAwMS40MS0uMDkgMSAxIDAgMDAtLjA1LTEuNDcgMSAxIDAgMDAtLjY2LS4yNXptLTIuODMgMy45MmExIDEgMCAwMC0uODcuNTEgMSAxIDAgMDAuODcgMS40OSAxIDEgMCAwMC44Ny0uNTEgMSAxIDAgMDAtLjM4LTEuMzUgMSAxIDAgMDAtLjUtLjE0em0tMS45NCA0LjQzYTEgMSAwIDAwLTEgLjd2LjA1YTEgMSAwIDAwLjY1IDEuMjYgMSAxIDAgMDAuMyAwIDEgMSAwIDAwMS0uNyAxIDEgMCAwMC0uNjUtMS4yNSAxIDEgMCAwMC0uMyAwem0tMSA0Ljc0YTEgMSAwIDAwLTEgLjl2LjA2YTEgMSAwIDAwLjkgMS4wOWguMDlhMSAxIDAgMDAxLS45di0uMDVhMSAxIDAgMDAtLjktMS4xem0wIDQuODRoLS4xMmExIDEgMCAwMC0uODggMS4xdi4wNmExIDEgMCAwMDEgLjg4aC4xMmExIDEgMCAwMC44OC0xLjEgMSAxIDAgMDAtMS0uODl6bTEgNC43MmEuODQuODQgMCAwMC0uMzEgMCAxIDEgMCAwMC0uNjMgMS4yNnYuMDZhMSAxIDAgMDAuOTQuNjggMS4xMyAxLjEzIDAgMDAuMzIgMCAxIDEgMCAwMC42My0xLjI3IDEgMSAwIDAwLTEtLjY4em00My45OS0uODRhMSAxIDAgMDAtMSAuNzJ2LjA1YTEgMSAwIDAwLjY3IDEuMjQgMSAxIDAgMDAuMjkgMCAxIDEgMCAwMDEtLjcxIDEgMSAwIDAwLTEtMS4yOXptLjg3LTQuNzVhMSAxIDAgMDAtMSAuOTIgMSAxIDAgMDAuOTIgMS4wOGguMDhhMSAxIDAgMDAxLS45MnYtLjA2YTEgMSAwIDAwLS45Mi0xLjA3em0tLjEzLTQuODRoLS4xM2ExIDEgMCAwMC0uODYgMS4xMiAxIDEgMCAwMDEgLjg3aC4xNGExIDEgMCAwMC44Ni0xLjEzIDEgMSAwIDAwLTEtLjg3em0tMS4xNC00LjdhMSAxIDAgMDAtMSAxLjM0di4wNWExIDEgMCAwMC45NC42NiAxIDEgMCAwMC4zNCAwIDEgMSAwIDAwLjYxLTEuMjh2LS4wNmExIDEgMCAwMC0uOTQtLjY2em0tMi4xMS00LjM1YTEgMSAwIDAwLS41Mi4xNSAxIDEgMCAwMC0uMzMgMS4zOCAxIDEgMCAwMC44NS40OCAxIDEgMCAwMC41My0uMTUgMSAxIDAgMDAuMzItMS4zOCAxIDEgMCAwMC0uODUtLjQ3em0tMy0zLjgyYTEgMSAwIDAwLS42OS4yOCAxIDEgMCAwMDAgMS40MiAxIDEgMCAwMDEuNDEgMCAxIDEgMCAwMDAtMS40MSAxIDEgMCAwMC0uNzItLjMxem0tMy42OS0zLjExYTEgMSAwIDAwLS41NyAxLjgyaC4wNWExIDEgMCAwMC41Ni4xNyAxIDEgMCAwMC44My0uNDMgMSAxIDAgMDAtLjIzLTEuMzQgMSAxIDAgMDAtLjU2LS4xN3ptLTQuMjctMi4yOGExIDEgMCAwMC0uOTMuNjIgMSAxIDAgMDAuNTYgMS4zMSAxIDEgMCAxMC43Ni0xLjg2aC0uMDZhMSAxIDAgMDAtLjM3LS4wN3oiLz48cGF0aCBkPSJNNTkuNSAzMS4wNkw4Ny45MyA1OS41IDU5LjUgODcuOTMgMzEuMDYgNTkuNSA1OS41IDMxLjA2bTAtMi44M0wyOC4yMyA1OS41IDU5LjUgOTAuNzYgOTAuNzYgNTkuNSA1OS41IDI4LjIzeiIvPjxwYXRoIGQ9Ik01OS41IDQ3LjE5TDcxLjggNTkuNSA1OS41IDcxLjggNDcuMTkgNTkuNSA1OS41IDQ3LjE5bTAtMi44Mkw0NC4zNyA1OS41IDU5LjUgNzQuNjIgNzQuNjIgNTkuNSA1OS41IDQ0LjM3eiIvPjxwYXRoIGQ9Ik01OS41IDU2LjVhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bTQxIDZoLTExYTEgMSAwIDAxMC0yaDExYTEgMSAwIDAxMCAyem0tNzEgMGgtMTBhMSAxIDAgMDEwLTJoMTBhMSAxIDAgMDEwIDJ6bTMwLTMwYTEgMSAwIDAxLTEtMXYtMTFhMSAxIDAgMDEyIDB2MTFhMSAxIDAgMDEtMSAxem0wIDcxYTEgMSAwIDAxLTEtMXYtMTFhMSAxIDAgMDEyIDB2MTFhMSAxIDAgMDEtMSAxeiIvPjwvZz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTkgMTE5Ij48ZyBkYXRhLW5hbWU9IkxheWVyIDIiPjxwYXRoIGQ9Ik01OS41IDExOUE1OS41IDU5LjUgMCAxMTExOSA1OS41IDU5LjU3IDU5LjU3IDAgMDE1OS41IDExOXptMC0xMTdBNTcuNSA1Ny41IDAgMTAxMTcgNTkuNSA1Ny41NiA1Ny41NiAwIDAwNTkuNSAyeiIvPjxwYXRoIGQ9Ik01OS41IDEwLjVhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bTAgOTNhMyAzIDAgMTEtMyAzIDMgMyAwIDAxMy0zbTAtMmE1IDUgMCAxMDUgNSA1IDUgMCAwMC01LTV6bS00NS00M2EzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXptOTEgMmEzIDMgMCAxMS0zIDMgMyAzIDAgMDEzLTNtMC0yYTUgNSAwIDEwNSA1IDUgNSAwIDAwLTUtNXpNMzUuNzggOC43OGExIDEgMCAwMC0xIC44NHYuMDVhMSAxIDAgMDAuODQgMS4xNGguMTVhMSAxIDAgMDAxLS44NXYtLjAzYTEgMSAwIDAwLS44My0xLjE0em0tLjI1IDQuODRoLS4wNWExIDEgMCAwMC0uOTUgMXYuMDVhMSAxIDAgMDAxIC45NSAxIDEgMCAwMDEtMS4wNSAxIDEgMCAwMC0xLTF6bS43IDQuNzlhMSAxIDAgMDAtLjI0IDAgMSAxIDAgMDAtLjczIDEuMjF2LjA2YTEgMSAwIDAwMSAuNzUgMSAxIDAgMDAxLTEuMjQgMSAxIDAgMDAtMS0uNzZ6TTM3Ljg5IDIzYTEgMSAwIDAwLS40My4xIDEgMSAwIDAwLS40NiAxLjMgMSAxIDAgMDAuOS41NiAxIDEgMCAwMC40My0uMSAxIDEgMCAwMC40Ny0xLjM0IDEgMSAwIDAwLS45LS41N3ptMi41NSA0LjEyYTEgMSAwIDAwLS42MS4yMSAxIDEgMCAwMC0uMTkgMS40IDEgMSAwIDAwLjc5LjM5IDEgMSAwIDAwLjc5LTEuNjEgMSAxIDAgMDAtLjc5LS40em0zLjMyIDMuNTRhMSAxIDAgMDAtLjY2IDEuNzUgMSAxIDAgMDAuNjYuMjQgMSAxIDAgMDAuNjUtMS43NiAxIDEgMCAwMC0uNjUtLjI0em00IDIuNzlhMSAxIDAgMDAtLjg4LjUxIDEgMSAwIDAwLjM4IDEuMzZoLjA1YTEgMSAwIDAwLjQ5LjEzIDEgMSAwIDAwLjQ5LTEuODcgMSAxIDAgMDAtLjQ5LS4xM3ptNC40MyAxLjk0YTEgMSAwIDAwLS45NS43IDEgMSAwIDAwLjY0IDEuMjZoLjA2YS43OS43OSAwIDAwLjMgMCAxIDEgMCAwMC4zLTEuOTUgMS4xOCAxLjE4IDAgMDAtLjMxIDB6bTE0LjM5LjFhLjkzLjkzIDAgMDAtLjI5IDAgMSAxIDAgMDAuMjkgMiAxIDEgMCAwMC4yOSAwIDEgMSAwIDAwLjY3LTEuMjUgMSAxIDAgMDAtMS0uNzF6TTcxIDMzLjU3YTEgMSAwIDAwLS40OC4xMkExIDEgMCAwMDcxIDM1LjZhLjkuOSAwIDAwLjQ3LS4xMyAxIDEgMCAwMC0uNDctMS45em00LTIuNzRhMSAxIDAgMDAtLjY1LjIzIDEgMSAwIDAwLjY1IDEuOCAxIDEgMCAwMC42NC0uMjMgMSAxIDAgMDAtLjY0LTEuOHptMy4zNi0zLjQ5YTEgMSAwIDAwLS43OC4zOCAxIDEgMCAwMC43OCAxLjYyIDEgMSAwIDAwLjc4LS4zNyAxIDEgMCAwMC0uMTctMS40IDEgMSAwIDAwLS42Mi0uMjJ6TTgxIDIzLjI1YTEgMSAwIDAwLS44OS41NXYuMDVhMSAxIDAgMDAuNDQgMS4zNC45MS45MSAwIDAwLjQ1LjExIDEgMSAwIDAwLjg5LS41NSAxIDEgMCAwMC0uNDUtMS4zNCAxIDEgMCAwMC0uNDUtLjExem0xLjczLTQuNTJhMSAxIDAgMDAtMSAuNzR2LjA1YTEgMSAwIDAwLjcgMS4yMi44Mi44MiAwIDAwLjI2IDAgMSAxIDAgMDAxLS43NCAxIDEgMCAwMC0uNzEtMS4yMiAxLjA3IDEuMDcgMCAwMC0uMjUgMHptLjc3LTQuNzlhMSAxIDAgMDAtMSAuOTR2LjA2YTEgMSAwIDAwLjg5IDEuMDZoLjA3YTEgMSAwIDAwMS0uOTRWMTVhMSAxIDAgMDAtLjk0LTF6bS0uMi00Ljg0aC0uMTRhMSAxIDAgMDAtLjg1IDEuMTMgMSAxIDAgMDAxIC44NmguMTRhMSAxIDAgMDAuODEtMS4wOSAxIDEgMCAwMC0xLS44NnpNNS4xNCA4MS45M2ExIDEgMCAwMC42NS45MyAxIDEgMCAwMDEuMjgtLjU5LjgzLjgzIDAgMDAuMTItLjI3IDEgMSAwIDAwLS42Ni0xIDEgMSAwIDAwLTEuMjkuNTkgMSAxIDAgMDAtLjA2LjM1em00LjY4IDEuMjNhMSAxIDAgMDAuODQgMWguMDZhMSAxIDAgMDAxLjE0LS44NC43Ni43NiAwIDAwMC0uMTUgMSAxIDAgMDAtLjg0LTEgMSAxIDAgMDAtMS4xOS44M3YuMTZ6bTQuODQuMjVhMSAxIDAgMDAxLjA1IDEgMSAxIDAgMDAxLTEgMSAxIDAgMDAtMS0xaC0uMDVhMSAxIDAgMDAtMSAxem00Ljc5LS43YS42Ny42NyAwIDAwMCAuMjQgMSAxIDAgMDAxLjIxLjczaC4wNmExIDEgMCAwMC43NS0xIDEgMSAwIDAwLTEuMjUtMWgtLjA1YTEgMSAwIDAwLS43NiAxek0yNCA4MS4wNWExIDEgMCAwMC4xMS40MyAxIDEgMCAwMDEuMzMuNDcgMSAxIDAgMDAuNTYtLjkgMSAxIDAgMDAtLjEtLjQzIDEgMSAwIDAwLTEuMzQtLjQ3IDEgMSAwIDAwLS41Ny45em00LjEzLTIuNTVhMSAxIDAgMDAuMi42MSAxIDEgMCAwMDEuNDEuMTkgMSAxIDAgMDAuMzktLjc5IDEgMSAwIDAwLS4yMS0uNjEgMSAxIDAgMDAtMS40LS4xOCAxIDEgMCAwMC0uMzkuNzl6bTMuNTMtMy4zMmExIDEgMCAwMC4zNC43NiAxIDEgMCAwMDEuNDEtLjEgMSAxIDAgMDAuMjQtLjY2IDEgMSAwIDAwLS4zNC0uNzUgMSAxIDAgMDAtMS40MS4xIDEgMSAwIDAwLS4yNC42NXptMi43OS00YTEgMSAwIDAwLjUxLjg3IDEgMSAwIDAwMS4zNi0uMzggMSAxIDAgMDAuMTMtLjQ5IDEgMSAwIDAwLS41MS0uODcgMSAxIDAgMDAtMS4zNi4zOCAxLjEzIDEuMTMgMCAwMC0uMTMuNXptLjE2LTIzLjI5YTEgMSAwIDAwLjEyLjQ4IDEgMSAwIDAwMS43Ni0xIDEgMSAwIDAwLTEuODguNDh6bS0yLjc0LTRhMSAxIDAgMDAuMjQuNjVBMSAxIDAgMDAzMy45IDQ0YTEgMSAwIDAwLS4yMy0uNjQgMSAxIDAgMDAtMS43Ni42NHptLTMuNDktMy4zNmExIDEgMCAwMC4zOC43OCAxIDEgMCAwMDEuNDEtLjE2IDEgMSAwIDAwLjIyLS42MiAxIDEgMCAwMC0uMzgtLjc4IDEgMSAwIDAwLTEuNC4xNyAxIDEgMCAwMC0uMjIuNjJ6TTI0LjMgMzhhMSAxIDAgMDAuNTUuODkgMSAxIDAgMDAxLjM1LS40NCAxIDEgMCAwMC4xLS40NSAxIDEgMCAwMC0uNTUtLjg5IDEgMSAwIDAwLTEuNDQuOXptLTQuNTMtMS43MmExIDEgMCAwMC43NCAxIDEgMSAwIDAwMS4yMy0uNyAxLjIyIDEuMjIgMCAwMDAtLjI2IDEgMSAwIDAwLS43NC0xIDEgMSAwIDAwLTEuMi42OCAxLjA5IDEuMDkgMCAwMDAgLjI2em0tNC43Ny0uOGExIDEgMCAwMC45NCAxSDE2YTEgMSAwIDAwMS0uOTN2LS4wN2ExIDEgMCAwMC0uOTQtMUgxNmExIDEgMCAwMC0xIC45NHYuMDZ6bS00Ljg1LjJ2LjE0YTEgMSAwIDAwMS4xMy44NWguMDVhMSAxIDAgMDAuODctMXYtLjE0YTEgMSAwIDAwLTEuMTMtLjg1SDExYTEgMSAwIDAwLS44NiAxem0tNC43IDEuMTZhMSAxIDAgMDAuMDYuMzQgMSAxIDAgMDAxLjI4LjYgMSAxIDAgMDAuNjYtMSAxIDEgMCAwMC0uMDYtLjMzIDEgMSAwIDAwLTEuMjctLjYxaC0uMDZhMSAxIDAgMDAtLjY2Ljk0em0xMDQuNzEtMS4xYTEgMSAwIDAwLS44NC0xaC0uMDZhMSAxIDAgMDAtMS4xNC44My44Ni44NiAwIDAwMCAuMTYgMSAxIDAgMDAuODUgMWguMDNhMSAxIDAgMDAxLjE0LS44My45Mi45MiAwIDAwMC0uMTZ6bS00Ljg0LS4yNmExIDEgMCAwMC0xLTFoLS4wNmExIDEgMCAwMC0xIDF2LjA1YTEgMSAwIDAwMSAuOTVoLjA1YTEgMSAwIDAwLjk1LTF6bS00Ljc5LjcxYTEuMTMgMS4xMyAwIDAwMC0uMjUgMSAxIDAgMDAtMS4yMS0uNzJoLS4wNmExIDEgMCAwMC0uNzUgMSAxLjA3IDEuMDcgMCAwMDAgLjI1IDEgMSAwIDAwMS4yMS43MiAxIDEgMCAwMC43Ni0xek05NiAzNy44NWExIDEgMCAwMC0uMS0uNDQgMSAxIDAgMDAtMS4zNi0uNDEgMSAxIDAgMDAtLjU2Ljg5IDEgMSAwIDAwLjEuNDQgMSAxIDAgMDAxLjM0LjQ2IDEgMSAwIDAwLjU2LS45em0tNC4xMiAyLjU0YTEgMSAwIDAwLS4yMS0uNiAxIDEgMCAwMC0xLjQtLjE5IDEgMSAwIDAwLS4zOS43OUExIDEgMCAwMDkwIDQxYTEgMSAwIDAwMS40LjE4IDEgMSAwIDAwLjQtLjh6bS0zLjU0IDMuMzJBMSAxIDAgMDA4OCA0M2ExIDEgMCAwMC0xLjQxLjEgMSAxIDAgMDAtLjI0LjY1IDEgMSAwIDAwLjM0Ljc2IDEgMSAwIDAwMS40Mi0uMSAxIDEgMCAwMC4yNC0uNjZ6bS0yLjc5IDRhMSAxIDAgMDAtLjU1LS45MSAxIDEgMCAwMC0xLjM2LjM4IDEgMSAwIDAwLS4xMy40OSAxIDEgMCAwMC41MS44NyAxIDEgMCAwMDEuMzYtLjM4di0uMDVhMSAxIDAgMDAuMTMtLjQ5em0tMS45NCA0LjQ0YTEgMSAwIDAwLS43LTEgMSAxIDAgMDAtMS4yNS42NHYuMDZhLjc5Ljc5IDAgMDAtLjA1LjMgMSAxIDAgMDAyIC4zdi0uMDVhMSAxIDAgMDAwLS4zem0tLjEgMTQuMzlhMS41NCAxLjU0IDAgMDAwLS4zIDEgMSAwIDAwLTIgLjI5IDEgMSAwIDAwMCAuMjkgMSAxIDAgMDAyLS4yOXpNODUuMzcgNzFhMSAxIDAgMDAtLjEyLS40OCAxIDEgMCAwMC0xLjg3LjQ3LjkuOSAwIDAwLjEyLjQ4IDEgMSAwIDAwMS44Ny0uNDd6bTIuNzQgNGExIDEgMCAwMC0uMjMtLjY0IDEgMSAwIDAwLTEuNzYuNjQgMS4wNSAxLjA1IDAgMDAuMjMuNjUgMSAxIDAgMDAxLjc2LS42NXptMy40OSAzLjM3YTEgMSAwIDAwLS4zOC0uNzkgMSAxIDAgMDAtMS42Mi43OSAxIDEgMCAwMC4zNy43OCAxIDEgMCAwMDEuNC0uMTcgMSAxIDAgMDAuMjItLjYyem00LjA5IDIuNmExIDEgMCAwMC0uNTUtLjg5IDEgMSAwIDAwLTEuMzQuNDUuODguODggMCAwMC0uMTEuNDUgMSAxIDAgMDAuNTUuODkgMSAxIDAgMDAxLjM0LS40NSAxIDEgMCAwMC4xMS0uNDV6bTQuNTIgMS43MmExIDEgMCAwMC0uNzQtMSAxIDEgMCAwMC0xLjIyLjcxLjc4Ljc4IDAgMDAwIC4yNiAxIDEgMCAwMC43NCAxaC4wNmExIDEgMCAwMDEuMjItLjcxIDEuMDkgMS4wOSAwIDAwMC0uMjZ6bTQuNzkuNzdhMSAxIDAgMDAtLjk0LTEgMSAxIDAgMDAtMS4wNi45NC4xMy4xMyAwIDAwMCAuMDYgMSAxIDAgMDAuOTQgMWguMDZhMSAxIDAgMDAxLS45NC4xMy4xMyAwIDAwMC0uMDZ6bTQuODQtLjE5YS42Ni42NiAwIDAwMC0uMTQgMSAxIDAgMDAtMS4xMy0uODUgMSAxIDAgMDAtLjg2IDEgLjU3LjU3IDAgMDAwIC4xMyAxIDEgMCAwMDEuMTMuODYgMSAxIDAgMDAuODYtMXptLTU5Ljc1LS43N2ExIDEgMCAwMC0uNC4wOSAxIDEgMCAxMC44MiAxLjgzIDEgMSAwIDAwLS40MS0xLjkyem0tNC4xNyAyLjQ0YTEgMSAwIDAwLS42LjE5IDEgMSAwIDAwLS4yMSAxLjQgMSAxIDAgMDAuOC40MSAxIDEgMCAwMC42LS4yIDEgMSAwIDAwLjIxLTEuMzkgMSAxIDAgMDAtLjgtLjQxem0tMy41OCAzLjI1YTEgMSAwIDAwLS43NS4zMyAxIDEgMCAwMC4wNSAxLjQ4IDEgMSAwIDAwMS40MS0uMDkgMSAxIDAgMDAtLjA1LTEuNDcgMSAxIDAgMDAtLjY2LS4yNXptLTIuODMgMy45MmExIDEgMCAwMC0uODcuNTEgMSAxIDAgMDAuODcgMS40OSAxIDEgMCAwMC44Ny0uNTEgMSAxIDAgMDAtLjM4LTEuMzUgMSAxIDAgMDAtLjUtLjE0em0tMS45NCA0LjQzYTEgMSAwIDAwLTEgLjd2LjA1YTEgMSAwIDAwLjY1IDEuMjYgMSAxIDAgMDAuMyAwIDEgMSAwIDAwMS0uNyAxIDEgMCAwMC0uNjUtMS4yNSAxIDEgMCAwMC0uMyAwem0tMSA0Ljc0YTEgMSAwIDAwLTEgLjl2LjA2YTEgMSAwIDAwLjkgMS4wOWguMDlhMSAxIDAgMDAxLS45di0uMDVhMSAxIDAgMDAtLjktMS4xem0wIDQuODRoLS4xMmExIDEgMCAwMC0uODggMS4xdi4wNmExIDEgMCAwMDEgLjg4aC4xMmExIDEgMCAwMC44OC0xLjEgMSAxIDAgMDAtMS0uODl6bTEgNC43MmEuODQuODQgMCAwMC0uMzEgMCAxIDEgMCAwMC0uNjMgMS4yNnYuMDZhMSAxIDAgMDAuOTQuNjggMS4xMyAxLjEzIDAgMDAuMzIgMCAxIDEgMCAwMC42My0xLjI3IDEgMSAwIDAwLTEtLjY4em00My45OS0uODRhMSAxIDAgMDAtMSAuNzJ2LjA1YTEgMSAwIDAwLjY3IDEuMjQgMSAxIDAgMDAuMjkgMCAxIDEgMCAwMDEtLjcxIDEgMSAwIDAwLTEtMS4yOXptLjg3LTQuNzVhMSAxIDAgMDAtMSAuOTIgMSAxIDAgMDAuOTIgMS4wOGguMDhhMSAxIDAgMDAxLS45MnYtLjA2YTEgMSAwIDAwLS45Mi0xLjA3em0tLjEzLTQuODRoLS4xM2ExIDEgMCAwMC0uODYgMS4xMiAxIDEgMCAwMDEgLjg3aC4xNGExIDEgMCAwMC44Ni0xLjEzIDEgMSAwIDAwLTEtLjg3em0tMS4xNC00LjdhMSAxIDAgMDAtMSAxLjM0di4wNWExIDEgMCAwMC45NC42NiAxIDEgMCAwMC4zNCAwIDEgMSAwIDAwLjYxLTEuMjh2LS4wNmExIDEgMCAwMC0uOTQtLjY2em0tMi4xMS00LjM1YTEgMSAwIDAwLS41Mi4xNSAxIDEgMCAwMC0uMzMgMS4zOCAxIDEgMCAwMC44NS40OCAxIDEgMCAwMC41My0uMTUgMSAxIDAgMDAuMzItMS4zOCAxIDEgMCAwMC0uODUtLjQ3em0tMy0zLjgyYTEgMSAwIDAwLS42OS4yOCAxIDEgMCAwMDAgMS40MiAxIDEgMCAwMDEuNDEgMCAxIDEgMCAwMDAtMS40MSAxIDEgMCAwMC0uNzItLjMxem0tMy42OS0zLjExYTEgMSAwIDAwLS41NyAxLjgyaC4wNWExIDEgMCAwMC41Ni4xNyAxIDEgMCAwMC44My0uNDMgMSAxIDAgMDAtLjIzLTEuMzQgMSAxIDAgMDAtLjU2LS4xN3ptLTQuMjctMi4yOGExIDEgMCAwMC0uOTMuNjIgMSAxIDAgMDAuNTYgMS4zMSAxIDEgMCAxMC43Ni0xLjg2aC0uMDZhMSAxIDAgMDAtLjM3LS4wN3oiLz48cGF0aCBkPSJNNTkuNSAzMS4wNkw4Ny45MyA1OS41IDU5LjUgODcuOTMgMzEuMDYgNTkuNSA1OS41IDMxLjA2bTAtMi44M0wyOC4yMyA1OS41IDU5LjUgOTAuNzYgOTAuNzYgNTkuNSA1OS41IDI4LjIzeiIvPjxwYXRoIGQ9Ik0xMDAuNSA2MC41aC0xMWExIDEgMCAwMTAtMmgxMWExIDEgMCAwMTAgMnptLTcxIDBoLTEwYTEgMSAwIDAxMC0yaDEwYTEgMSAwIDAxMCAyem0zMC0zMGExIDEgMCAwMS0xLTF2LTExYTEgMSAwIDAxMiAwdjExYTEgMSAwIDAxLTEgMXptMCA3MWExIDEgMCAwMS0xLTF2LTExYTEgMSAwIDAxMiAwdjExYTEgMSAwIDAxLTEgMXptLTEuMzEtMzRhMSAxIDAgMDEtLjczLS4zMWwtNS42OS02YTEgMSAwIDExMS40Ni0xLjM4TDU4LjEyIDY1bDkuNi0xMi4xYTEgMSAwIDAxMS41NiAxLjI0TDU5IDY3LjEyYTEgMSAwIDAxLS43NC4zOHoiLz48L2c+PC9zdmc+\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xMCAxMS40MTRsNC4yOTMgNC4yOTNhMSAxIDAgMDAxLjQxNC0xLjQxNEwxMS40MTQgMTBsNC4yOTMtNC4yOTNhMSAxIDAgMTAtMS40MTQtMS40MTRMMTAgOC41ODYgNS43MDcgNC4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRMOC41ODYgMTBsLTQuMjkzIDQuMjkzYTEgMSAwIDAwMS40MTQgMS40MTRMMTAgMTEuNDE0eiIgaWQ9ImEiLz48L2RlZnM+PHVzZSBmaWxsPSIjRDVENUQ1IiB4bGluazpocmVmPSIjYSIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgN2gxMk03IDF2MTIiIHN0cm9rZT0iIzJGMkYyQiIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgN2gxMiIgc3Ryb2tlPSIjMkYyRjJCIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSA1KSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIHN0cm9rZT0iIzJGMkYyQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGN4PSIxMCIgY3k9IjEwIiByPSIxMCIvPjxwYXRoIGQ9Ik0xMCA2djQiIHN0cm9rZT0iIzJGMkYyQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48Y2lyY2xlIGZpbGw9IiMyRjJGMkIiIGN4PSIxMCIgY3k9IjE0IiByPSIxIi8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwIDExLjQxNGw0LjI5MyA0LjI5M2ExIDEgMCAwMDEuNDE0LTEuNDE0TDExLjQxNCAxMGw0LjI5My00LjI5M2ExIDEgMCAxMC0xLjQxNC0xLjQxNEwxMCA4LjU4NiA1LjcwNyA0LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNEw4LjU4NiAxMGwtNC4yOTMgNC4yOTNhMSAxIDAgMDAxLjQxNCAxLjQxNEwxMCAxMS40MTR6IiBmaWxsPSIjMjIyIi8+PC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjMkYyRjJCIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjUgMTQuMDhWMTVhMTAgMTAgMCAxMS01LjkzLTkuMTQiLz48cGF0aCBkPSJNMjUgN0wxNSAxNy4wMWwtMy0zIi8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDYiIGhlaWdodD0iNDYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxjaXJjbGUgaWQ9ImEiIGN4PSIyMyIgY3k9IjIzIiByPSIyMyIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iI0ZGRiIgeGxpbms6aHJlZj0iI2EiLz48Y2lyY2xlIHN0cm9rZT0iIzZGQkI2QiIgc3Ryb2tlLXdpZHRoPSIzIiBjeD0iMjMiIGN5PSIyMyIgcj0iMjEuNSIvPjxwYXRoIHN0cm9rZT0iIzZGQkI2QiIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xNyAyMy41bDMuNzUgNC41TDI5IDE5Ii8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODkiIGhlaWdodD0iODkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMzcgMTBoMzl2NjMuNzE5TTEgODhoMThWMTBoMTIiLz48cGF0aCBkPSJNNzAgNzZWMTZIMjV2NzJoNDhNMzQgMTZ2NzJtOS03MnY3Mm05LTcydjcybTktNzJ2NzJNMjUgMjhoNDVNMjUgNDBoNDVNMjUgNTJoNDVNMjUgNjRoNDVtLTYtNTRWNEg1MlYxaC05djNIMzF2NiIvPjxwYXRoIGQ9Ik04NSA4MmMtLjYgMC0xLjE1Ni4xODEtMS42MjYuNDg0QTQuNDk1IDQuNDk1IDAgMDA3OSA3OWE0LjQ5NSA0LjQ5NSAwIDAwLTQuMzc0IDMuNDg0QTIuOTkgMi45OSAwIDAwNzMgODJhMy4wMDEgMy4wMDEgMCAwMDAgNmgxMmEzLjAwMSAzLjAwMSAwIDAwMC02em0tNzItOWMwLTYtMS41LTE4LTYtMThTMSA2NyAxIDczYTYgNiAwIDAwMTIgMHptLTYgNnY5bTE4LTEyaDQ1Ii8+PC9nPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMjIyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik01MCA5MGMyMi4wOTEgMCA0MC0xNy45MDkgNDAtNDBTNzIuMDkxIDEwIDUwIDEwIDEwIDI3LjkwOSAxMCA1MHMxNy45MDkgNDAgNDAgNDB6bTAgMkMyNi44MDQgOTIgOCA3My4xOTYgOCA1MFMyNi44MDQgOCA1MCA4czQyIDE4LjgwNCA0MiA0Mi0xOC44MDQgNDItNDIgNDJ6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNTAgNTJhMiAyIDAgMDAtMiAyYzAgLjczOC40MDQgMS4zNzYgMSAxLjcyM1Y1OWExIDEgMCAxMDIgMHYtMy4yNzdjLjU5Ni0uMzQ3IDEtLjk4NSAxLTEuNzIzYTIgMiAwIDAwLTItMnptMTEgMTBjMCAxLjEwMy0uODk3IDItMiAySDQxYy0xLjEwMyAwLTItLjg5Ny0yLTJWNTBjMC0xLjEwMy44OTctMiAyLTJoMThjMS4xMDMgMCAyIC44OTcgMiAydjEyek00NCA0Mi4xODRDNDQgMzguNzc0IDQ2LjMzIDM2IDQ5Ljk2MyAzNiA1My41NTkgMzYgNTYgMzguNzE2IDU2IDQyLjE4NFY0Nkg0NHYtMy44MTZ6TTU5IDQ2aC0xdi0zLjgxNkM1OCAzNy41OTUgNTQuNjggMzQgNDkuOTYzIDM0IDQ1LjIyOCAzNCA0MiAzNy42NzEgNDIgNDIuMTg0VjQ2aC0xYy0yLjIwNiAwLTQgMS43OTQtNCA0djEyYzAgMi4yMDYgMS43OTQgNCA0IDRoMThjMi4yMDYgMCA0LTEuNzk0IDQtNFY1MGMwLTIuMjA2LTEuNzk0LTQtNC00eiIvPjwvZz48L3N2Zz4=\"","var map = {\n\t\"./af\": 332,\n\t\"./af.js\": 332,\n\t\"./ar\": 333,\n\t\"./ar-dz\": 334,\n\t\"./ar-dz.js\": 334,\n\t\"./ar-kw\": 335,\n\t\"./ar-kw.js\": 335,\n\t\"./ar-ly\": 336,\n\t\"./ar-ly.js\": 336,\n\t\"./ar-ma\": 337,\n\t\"./ar-ma.js\": 337,\n\t\"./ar-sa\": 338,\n\t\"./ar-sa.js\": 338,\n\t\"./ar-tn\": 339,\n\t\"./ar-tn.js\": 339,\n\t\"./ar.js\": 333,\n\t\"./az\": 340,\n\t\"./az.js\": 340,\n\t\"./be\": 341,\n\t\"./be.js\": 341,\n\t\"./bg\": 342,\n\t\"./bg.js\": 342,\n\t\"./bm\": 343,\n\t\"./bm.js\": 343,\n\t\"./bn\": 344,\n\t\"./bn-bd\": 345,\n\t\"./bn-bd.js\": 345,\n\t\"./bn.js\": 344,\n\t\"./bo\": 346,\n\t\"./bo.js\": 346,\n\t\"./br\": 347,\n\t\"./br.js\": 347,\n\t\"./bs\": 348,\n\t\"./bs.js\": 348,\n\t\"./ca\": 349,\n\t\"./ca.js\": 349,\n\t\"./cs\": 350,\n\t\"./cs.js\": 350,\n\t\"./cv\": 351,\n\t\"./cv.js\": 351,\n\t\"./cy\": 352,\n\t\"./cy.js\": 352,\n\t\"./da\": 353,\n\t\"./da.js\": 353,\n\t\"./de\": 354,\n\t\"./de-at\": 355,\n\t\"./de-at.js\": 355,\n\t\"./de-ch\": 356,\n\t\"./de-ch.js\": 356,\n\t\"./de.js\": 354,\n\t\"./dv\": 357,\n\t\"./dv.js\": 357,\n\t\"./el\": 358,\n\t\"./el.js\": 358,\n\t\"./en-au\": 359,\n\t\"./en-au.js\": 359,\n\t\"./en-ca\": 360,\n\t\"./en-ca.js\": 360,\n\t\"./en-gb\": 361,\n\t\"./en-gb.js\": 361,\n\t\"./en-ie\": 362,\n\t\"./en-ie.js\": 362,\n\t\"./en-il\": 363,\n\t\"./en-il.js\": 363,\n\t\"./en-in\": 364,\n\t\"./en-in.js\": 364,\n\t\"./en-nz\": 365,\n\t\"./en-nz.js\": 365,\n\t\"./en-sg\": 366,\n\t\"./en-sg.js\": 366,\n\t\"./eo\": 367,\n\t\"./eo.js\": 367,\n\t\"./es\": 368,\n\t\"./es-do\": 369,\n\t\"./es-do.js\": 369,\n\t\"./es-mx\": 370,\n\t\"./es-mx.js\": 370,\n\t\"./es-us\": 371,\n\t\"./es-us.js\": 371,\n\t\"./es.js\": 368,\n\t\"./et\": 372,\n\t\"./et.js\": 372,\n\t\"./eu\": 373,\n\t\"./eu.js\": 373,\n\t\"./fa\": 374,\n\t\"./fa.js\": 374,\n\t\"./fi\": 375,\n\t\"./fi.js\": 375,\n\t\"./fil\": 376,\n\t\"./fil.js\": 376,\n\t\"./fo\": 377,\n\t\"./fo.js\": 377,\n\t\"./fr\": 378,\n\t\"./fr-ca\": 379,\n\t\"./fr-ca.js\": 379,\n\t\"./fr-ch\": 380,\n\t\"./fr-ch.js\": 380,\n\t\"./fr.js\": 378,\n\t\"./fy\": 381,\n\t\"./fy.js\": 381,\n\t\"./ga\": 382,\n\t\"./ga.js\": 382,\n\t\"./gd\": 383,\n\t\"./gd.js\": 383,\n\t\"./gl\": 384,\n\t\"./gl.js\": 384,\n\t\"./gom-deva\": 385,\n\t\"./gom-deva.js\": 385,\n\t\"./gom-latn\": 386,\n\t\"./gom-latn.js\": 386,\n\t\"./gu\": 387,\n\t\"./gu.js\": 387,\n\t\"./he\": 388,\n\t\"./he.js\": 388,\n\t\"./hi\": 389,\n\t\"./hi.js\": 389,\n\t\"./hr\": 390,\n\t\"./hr.js\": 390,\n\t\"./hu\": 391,\n\t\"./hu.js\": 391,\n\t\"./hy-am\": 392,\n\t\"./hy-am.js\": 392,\n\t\"./id\": 393,\n\t\"./id.js\": 393,\n\t\"./is\": 394,\n\t\"./is.js\": 394,\n\t\"./it\": 395,\n\t\"./it-ch\": 396,\n\t\"./it-ch.js\": 396,\n\t\"./it.js\": 395,\n\t\"./ja\": 397,\n\t\"./ja.js\": 397,\n\t\"./jv\": 398,\n\t\"./jv.js\": 398,\n\t\"./ka\": 399,\n\t\"./ka.js\": 399,\n\t\"./kk\": 400,\n\t\"./kk.js\": 400,\n\t\"./km\": 401,\n\t\"./km.js\": 401,\n\t\"./kn\": 402,\n\t\"./kn.js\": 402,\n\t\"./ko\": 403,\n\t\"./ko.js\": 403,\n\t\"./ku\": 404,\n\t\"./ku.js\": 404,\n\t\"./ky\": 405,\n\t\"./ky.js\": 405,\n\t\"./lb\": 406,\n\t\"./lb.js\": 406,\n\t\"./lo\": 407,\n\t\"./lo.js\": 407,\n\t\"./lt\": 408,\n\t\"./lt.js\": 408,\n\t\"./lv\": 409,\n\t\"./lv.js\": 409,\n\t\"./me\": 410,\n\t\"./me.js\": 410,\n\t\"./mi\": 411,\n\t\"./mi.js\": 411,\n\t\"./mk\": 412,\n\t\"./mk.js\": 412,\n\t\"./ml\": 413,\n\t\"./ml.js\": 413,\n\t\"./mn\": 414,\n\t\"./mn.js\": 414,\n\t\"./mr\": 415,\n\t\"./mr.js\": 415,\n\t\"./ms\": 416,\n\t\"./ms-my\": 417,\n\t\"./ms-my.js\": 417,\n\t\"./ms.js\": 416,\n\t\"./mt\": 418,\n\t\"./mt.js\": 418,\n\t\"./my\": 419,\n\t\"./my.js\": 419,\n\t\"./nb\": 420,\n\t\"./nb.js\": 420,\n\t\"./ne\": 421,\n\t\"./ne.js\": 421,\n\t\"./nl\": 422,\n\t\"./nl-be\": 423,\n\t\"./nl-be.js\": 423,\n\t\"./nl.js\": 422,\n\t\"./nn\": 424,\n\t\"./nn.js\": 424,\n\t\"./oc-lnc\": 425,\n\t\"./oc-lnc.js\": 425,\n\t\"./pa-in\": 426,\n\t\"./pa-in.js\": 426,\n\t\"./pl\": 427,\n\t\"./pl.js\": 427,\n\t\"./pt\": 428,\n\t\"./pt-br\": 429,\n\t\"./pt-br.js\": 429,\n\t\"./pt.js\": 428,\n\t\"./ro\": 430,\n\t\"./ro.js\": 430,\n\t\"./ru\": 431,\n\t\"./ru.js\": 431,\n\t\"./sd\": 432,\n\t\"./sd.js\": 432,\n\t\"./se\": 433,\n\t\"./se.js\": 433,\n\t\"./si\": 434,\n\t\"./si.js\": 434,\n\t\"./sk\": 435,\n\t\"./sk.js\": 435,\n\t\"./sl\": 436,\n\t\"./sl.js\": 436,\n\t\"./sq\": 437,\n\t\"./sq.js\": 437,\n\t\"./sr\": 438,\n\t\"./sr-cyrl\": 439,\n\t\"./sr-cyrl.js\": 439,\n\t\"./sr.js\": 438,\n\t\"./ss\": 440,\n\t\"./ss.js\": 440,\n\t\"./sv\": 441,\n\t\"./sv.js\": 441,\n\t\"./sw\": 442,\n\t\"./sw.js\": 442,\n\t\"./ta\": 443,\n\t\"./ta.js\": 443,\n\t\"./te\": 444,\n\t\"./te.js\": 444,\n\t\"./tet\": 445,\n\t\"./tet.js\": 445,\n\t\"./tg\": 446,\n\t\"./tg.js\": 446,\n\t\"./th\": 447,\n\t\"./th.js\": 447,\n\t\"./tk\": 448,\n\t\"./tk.js\": 448,\n\t\"./tl-ph\": 449,\n\t\"./tl-ph.js\": 449,\n\t\"./tlh\": 450,\n\t\"./tlh.js\": 450,\n\t\"./tr\": 451,\n\t\"./tr.js\": 451,\n\t\"./tzl\": 452,\n\t\"./tzl.js\": 452,\n\t\"./tzm\": 453,\n\t\"./tzm-latn\": 454,\n\t\"./tzm-latn.js\": 454,\n\t\"./tzm.js\": 453,\n\t\"./ug-cn\": 455,\n\t\"./ug-cn.js\": 455,\n\t\"./uk\": 456,\n\t\"./uk.js\": 456,\n\t\"./ur\": 457,\n\t\"./ur.js\": 457,\n\t\"./uz\": 458,\n\t\"./uz-latn\": 459,\n\t\"./uz-latn.js\": 459,\n\t\"./uz.js\": 458,\n\t\"./vi\": 460,\n\t\"./vi.js\": 460,\n\t\"./x-pseudo\": 461,\n\t\"./x-pseudo.js\": 461,\n\t\"./yo\": 462,\n\t\"./yo.js\": 462,\n\t\"./zh-cn\": 463,\n\t\"./zh-cn.js\": 463,\n\t\"./zh-hk\": 464,\n\t\"./zh-hk.js\": 464,\n\t\"./zh-mo\": 465,\n\t\"./zh-mo.js\": 465,\n\t\"./zh-tw\": 466,\n\t\"./zh-tw.js\": 466\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 693;"],"sourceRoot":""}