{"version":3,"sources":["components/progressSteps/index.tsx","components/progressStepper/index.tsx","utilities/translations.ts","assets/images/noperformancechart.png","store/processData/constants.ts","components/literal/index.tsx","store/modal/actions.ts","components/separationTask/index.tsx","components/timeUnit/index.tsx","pages/labTest/labTestGraph.tsx","store/process/actions.ts","utilities/regressionAnalysis.ts","store/labTest/actions.ts","components/slider/index.tsx","components/chooseSeparator/index.tsx","components/dataList/index.tsx","pages/labTest/analysisTable.tsx","assets/images/logo.png","store/modal/constants.ts","components/checkbox/index.tsx","assets/images/separator.png","assets/images/solids.png","assets/images/liquids.png","assets/images/solid_and_liquid.png","assets/icons.tsx","store/clientCase/constants.ts","store/clientCase/actions.ts","components/forms/formHelpers.tsx","components/forms/checkbox.tsx","store/createActionHandler.ts","store/app/reducer.ts","store/config/reducer.ts","store/caseFiles/reducer.ts","store/clientCase/reducer.ts","store/labTest/reducer.ts","store/modal/reducer.ts","store/process/reducer.ts","store/processAspect/reducer.ts","store/processData/reducer.ts","store/progress/reducer.ts","store/recommendedSeparator/reducer.ts","store/language/reducer.ts","store/middlewares.js","store/index.ts","utilities/analytics.ts","hooks/useLiteral.ts","store/actionTypes.ts","routerHistory.ts","services/caseApi.ts","utilities/net.ts","store/labTest/constants.ts","utilities/ml-matrix.js","store/config/actions.ts","store/language/actions.ts","services/configApi.ts","components/configLoader/index.tsx","components/ensureProcessHasStarted/index.tsx","components/notFoundPage/index.tsx","components/errorPage/index.tsx","components/legalTermsLink/index.tsx","components/privacyPolicyLink/index.tsx","components/footer/index.tsx","components/loadClientCase/index.tsx","components/loader/index.tsx","components/modal/index.tsx","components/forms/clearDataForm.tsx","components/textBox/index.tsx","components/forms/dataSavedForm.tsx","components/documentViewer/documentView.tsx","components/documentViewer/termsConditions.tsx","components/forms/legalTermsModal.tsx","components/documentViewer/privacyPolicy.tsx","components/forms/privacyPolicyModal.tsx","utilities/validators.ts","components/collapseButton/index.tsx","components/section/index.tsx","components/termsCheckBox/index.tsx","components/forms/privacyCheckBox.tsx","components/forms/saveDataForm.tsx","components/forms/thankYouForm.tsx","components/forms/unsavedProgressForm.tsx","components/modalManager/index.tsx","components/nav/languagePicker.tsx","components/nav/topBar.tsx","components/nav/index.tsx","components/scrollToTop/index.tsx","components/toolTipManager/index.tsx","components/unsavedProgressWarning/index.tsx","components/liveChat/index.tsx","components/pageLoader/index.tsx","components/asyncComponent/index.tsx","store/processData/actions.ts","components/sigmaGraph/index.tsx","components/dontHaveSepData/index.tsx","components/chart/index.tsx","components/chart/helpers.ts","utilities/math/erf.ts","utilities/formula.ts","store/processAspect/constants.ts","components/performanceGraph/index.tsx","components/gradeEfficiencyGraph/index.tsx","components/graphCustomization/index.tsx","components/forms/solidLiquidForm.tsx","pages/solidLiquid/page.tsx","pages/solidLiquid/index.tsx","components/forms/liquidLiquidSolidForm.tsx","pages/liquidLiquidSolid/page.tsx","pages/liquidLiquidSolid/index.tsx","components/forms/liquidLiquidForm.tsx","pages/liquidLiquid/page.tsx","pages/liquidLiquid/index.tsx","store/processAspect/actions.ts","components/textArea/index.tsx","components/checkboxList/index.tsx","pages/processAspects/page.tsx","pages/processAspects/index.tsx","utilities/summary.ts","components/propertyList/index.tsx","components/summary/performanceTargetSummary.tsx","components/summary/separationPropertiesSummary.tsx","components/summary/separabilitySummary.tsx","components/recommendedSeparator/index.tsx","components/iconText/index.tsx","components/summary/compactSummary.tsx","components/saveAndClear/index.tsx","pages/processLayout.tsx","store/caseFiles/actions.ts","pages/summary/summarySection.tsx","pages/summary/subHero.tsx","components/fileUpload/index.tsx","pages/summary/summaryPerformanceGraph.tsx","pages/summary/page.tsx","pages/summary/index.tsx","components/cookieConsent/index.tsx","components/gtmLoader/index.ts","app.tsx","navigationState.ts","registerServiceWorker.ts","index.tsx","store/progress/actions.ts","components/formElement/index.tsx","utilities/guid.ts","components/separator/index.tsx","components/forms/field.tsx"],"names":["connect","state","progress","dispatch","actions","bindActionCreators","ProgressActions","activeStep","steps","className","filter","step","hidden","map","id","translationKey","activated","key","onClick","selectStep","classNames","active","process","processData","isOnFinalStep","length","isPreSummaryStep","isSeparationTaskSelected","activeProcessId","showBackButton","showNextButton","allowFinalizing","invisible","previousStep","icon","disabled","nextStep","finalizeProcess","replacePlaceholders","translation","replacements","strings","split","placeholders","match","result","onlyStrings","i","placeholderKey","replace","push","join","module","exports","PROCESSDATA_FIELDS","translations","language","children","preserveWraps","value","style","whiteSpace","showModal","modalType","type","MODAL_OPEN","closeModal","separationImageMap","separation1","separation2","separation3","SeparationTask","imageReference","isSelected","onSelect","summaryTitle","selected","src","alt","defaultProps","TimeUnit","unit","dotOptions","r","chartMargins","top","right","left","bottom","LabTestGraph","tests","margin","dataKey","position","content","attributes","textAnchor","transform","viewBox","height","strokeDasharray","colorId","dataPoints","trendDataPoints","dot","data","isAnimationActive","color","clearSeparationProcess","CLEAR_SEPARATION_TASK","selectSeparationProcess","getState","activeProcess","processes","find","SELECT_SEPARATION_TASK","Matrix","require","jacobian","coefficients","input","J","reduce","datapoint","Q","get","Math","log","transpose","matrixA","matrixB","columns","min","rows","dotMatrix","Array","fill","row","rowOffset","column","columnOffset","rowMatrix","rowVector","getRow","columnMatrix","columnVector","getColumn","nonlinearRegression","datapoints","iterations","meanValues","x","y","centrateQuality","initialK1","initialK2","iteration","residuals","pow","jacobianMatrix","transposedResiduals","add","pseudoInverse","k1","k2","time","addTest","test","labTest","dataPointsWithQ","reverse","isSpinTest","calculateSpin","Ae","calculateGravity","ADD_LABTEST","Date","now","removeTest","REMOVE_LABTEST","selectSeparatorSize","SET_LABTEST_SEPARATOR_SIZE","toggleTest","TOGGLE_LABTEST","toggleTestType","testType","SET_LABTEST_TYPE","PI","Slider","max","onChange","data-value","e","parseInt","target","ChooseSeparator","selectSeparator","separatorSize","foundSeparator","props","separators","a","sliderSelectSeparator","this","selectedSliderValue","findIndex","separator","isActive","React","Component","recommendedSeparator","DataList","dataset","itemPrefix","onRemove","showDelete","subTitle","title","item","index","AnalysisTable","allowDelete","datapointRange","datapointRangeUnit","onRemoveTest","fillerData","showfiller","MAX_LABTESTS","data-length","name","dateOfTesting","slice","MODAL_TYPES","CheckBox","checked","label","tooltip","restProps","myId","guid","elementClassName","data-tip","data-for","effect","EmailIcon","width","version","xmlns","stroke","strokeWidth","fillRule","d","GlobeIcon","FacebookIcon","LinkedinIcon","GPlusIcon","TwitterIcon","HazardousMaterial","PilotTest","LabTest","SYC","SolidsIcon","LiquidsIcon","SigmaGraphSmall","SigmaGraphMedium","SigmaGraphBig","LoadingSpinner","cx","cy","attributeName","begin","dur","values","calcMode","repeatCount","from","to","CLIENTCASE_FIELDS","clearData","loadCase","caseId","SHOW_LOADER","caseApi","getCase","then","CaseType","Data","CustomerInformation","Aspect","restoreData","caseFiles","attachments","Attachments","Id","url","Url","FileName","clientCase","processHasStarted","processAspects","HIDE_LOADER","RESTORE_DATA","navigateToLastStep","catch","error","saveCase","saveOrShowModal","SAVE_DATA","updateAcceptedTerms","acceptedTerms","updateField","ACCEPTED_TERMS","updateAcceptedPrivacyPolicy","acceptedPrivacyPolicy","ACCEPTED_PRIVACY_POLICY","updateFirstName","firstName","FIRST_NAME","updateLastName","lastName","LAST_NAME","updateCompany","company","COMPANY","updateEmailAddress","email","EMAIL_ADDRESS","updatePhoneNumber","phone","PHONE","property","UPDATE_CLIENTCASE_FIELD","CLEAR_DATA","processDataToSave","processAspectsToSave","exStandardOptions","controlLocationOptions","labTestToSave","availableColors","reachedMaxTests","payload","ContactInformation","FirstName","LastName","Email","PhoneNumber","phoneNumber","CompanyName","companyName","AcceptedPrivacyPolicy","AcceptedTerms","createCase","CaseId","updatedCaseId","FETCH_SAVE_CLIENTCASE_SUCCESS","DATA_SAVED","registerInteraction","FETCH_SAVE_CLIENTCASE_ERROR","Section","body","BroadSection","Major","SectionAccordionHelper","accordion","expanded","role","MajorAccordionHelper","Empty","ReactValueWarning","visible","ReactValueError","initialState","actionHandlers","action","actionHandler","contentIsDirty","isLoading","UPDATE_PROCESSASPECT_FIELD","UPDATE_PROCESSDATA_FIELD","app","createActionHandler","config","LOAD_CONFIG","maxAttachments","ADD_ATTACHMENT","attachment","concat","REMOVE_ATTACHMENT","UPDATE_ATTACHMENT","updatedAttachment","defaultSpinDatapoints","defaultSpinDatapointUnit","testIterator","defaultGravityDatapoints","defaultGravityDatapointUnit","modalArguments","modal","undefined","uri","separateLiquids","separateSolids","processDescription","installationEnvironmentConditions","isHazardousArea","selectedExStandards","selectedControlLocations","Object","freeze","hasEnteredData","otherPerformanceAspects","particleSize","primaryLiquidCorrosive","primaryLiquidDensity","primaryLiquidDensityMeasuredAtTemperature","primaryLiquidDistribution","primaryLiquidDropletSize","primaryLiquidProcessPressure","primaryLiquidProductName","primaryLiquidTotalFlowRate","primaryLiquidViscosity","primaryLiquidViscosityMeasuredAtTemperature","primaryLiquidProcessTemperature","secondaryLiquidConcentration","secondaryLiquidConcentrationAfterSeparation","liquidConcentrationUnit","secondaryLiquidDensity","secondaryLiquidDensityMeasuredAtTemperature","secondaryLiquidDistribution","secondaryLiquidDropletSize","secondaryLiquidProductName","solidConcentrationAfterSeparation","solidConcentrationUnit","solidConcentrationInFeed","solidDensity","solidDistribution","solidDropletSize","solidKnownToBeErosive","solidsType","customizedAe","getUri","SELECT_PROGRESS_STEP","FINISH_PROCESS","description","descriptionTranslationKey","nameTranslationKey","requirement","flowRate","getSeparatorInfo","s","PRIMARY_LIQUID_TOTAL_FLOWRATE","languages","code","languageCode","localStorage","getItem","SET_LANGUAGE","LOAD_TRANSLATIONS","middlewares","thunk","combinedReducers","combineReducers","reducers","createStore","composeWithDevTools","applyMiddleware","trackingId","REACT_APP_GA_TRACKING_ID","registerPageView","gtag","eventCategory","eventLabel","send_to","event_category","event_label","useSelector","processRoutes","containsRoute","routes","path","route","includes","routerHistory","createBrowserHistory","getUserConfirmation","targetPathName","allowRedirect","isCurrentlyInsideProcessRoute","location","pathname","isNavigatingAwayFromProcessRoute","store","LEAVE_PAGE","getApiUrl","apiUrl","getAlfaSep","particleDensity","fluidDensity","fluidViscosity","post","JSON","stringify","put","uploadCaseFile","file","formData","FormData","append","postFile","Attachment","deleteCaseFile","fileId","restDelete","FileId","getDefaultFetchSettings","method","headers","handleHttpErrorCodes","response","status","Promise","reject","message","text","resolve","fetch","json","isArray","Error","rescale","options","arguments","TypeError","output","currentMin","currentMax","RangeError","_options$min","minValue","autoMinMax","_options$max","maxValue","factor","defineProperty","_typeof","Symbol","iterator","obj","constructor","prototype","classCallCheck","instance","Constructor","createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","call","ReferenceError","LuDecomposition$$1","matrix","j","k","p","t","v","LUcolj","kmax","lu","WrapperMatrix2D","checkMatrix","clone","pivotVector","pivotSign","set","abs","LU","col","isSingular","count","X","subMatrixRow","isSquare","determinant","hypotenuse","b","sqrt","getFilled2DArray","array","SingularValueDecomposition$$1","m","n","_options$computeLeftS","computeLeftSingularVectors","_options$computeRight","computeRightSingularVectors","_options$autoTranspos","autoTranspose","wantu","Boolean","wantv","swapped","aux","console","warn","nu","ni","U","V","work","si","nct","nrt","mrc","_i","_i2","_i3","_i4","_i5","_i6","_i7","_i8","_i9","_j","_j2","_t","_i10","_i11","_j3","_i12","_k","_j4","_t2","_i13","_i14","_i15","_i16","_i17","_k2","_j5","_t3","_i18","_i19","_i20","pp","eps","Number","EPSILON","_k3","kase","alpha","MIN_VALUE","isNaN","ks","_t4","f","_j6","_t5","cs","sn","_i21","_f","_j7","_t6","_cs","_sn","_i22","scale","sp","spm1","epm1","sk","ek","c","shift","_f2","g","_j8","_t7","_cs2","_sn2","_i23","_i24","_i25","_t8","_i26","_i27","tmp","Y","threshold","scols","Ls","zeros","rightSingularVectors","VL","mmul","vrows","urows","VLU","_i28","sum","solve","diag","vcols","ucols","_i29","_j9","tol","ii","isMatrix","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","checkColumnIndices","some","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","sumByRow","sumByColumn","BaseView","_AbstractMatrix","_this","getPrototypeOf","species","AbstractMatrix","MatrixTransposeView","_BaseView","rowIndex","columnIndex","MatrixRowView","MatrixSubView","MatrixSelectionView","indices","MatrixRowSelectionView","MatrixColumnSelectionView","MatrixColumnView","MatrixFlipRowView","MatrixFlipColumnView","superCtor","callback","jj","size","copy","rowRep","colRep","setSubMatrix","mulS","row1","row2","temp","column1","column2","idx","by","sumAll","prod","vector2","vector1","other","Bcolj","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","c00","c01","c10","c11","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m6","m7","m8","m9","m12","m13","m14","m15","m16","m17","m18","c02","c12","c20","c21","c22","r1","c1","r2","c2","embed","mat","cols","resultat","blockMult","halfRows","halfCols","subMatrix","sub","newMatrix","empty","scaled","setRow","setColumn","q","l","compareFunction","compareNumbers","sort","trace","subMatrix0","subMatrix1","subMatrix2","selectionView","det","svdSolution","leftSingularVectors","diagonal","transposeView","newRows","newColumns","newData","rng","random","floor","matrix1","matrix2","klass","rand","identity","eye","negate","neg","tensorProduct","kroneckerProduct","staticMethodWithArgs","eval2","eval","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","operator","inplaceOp","fillTemplateFunction","op","inplaceOpS","inplaceOpM","staticOp","err","return","methods","forEach","mathMethod","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","inplaceMeth","staticMeth","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","methodWithArg","args","inplaceMethWithArgs","staticMethWithArgs","tmplVar","inplaceMethod2","inplaceMethodS","inplaceMethodM","staticMethod2","template","RegExp","nRows","nColumns","_ret","_ret2","isInteger","splice","WrapperMatrix1D","_options$rows","_calculateIndex","QrDecomposition$$1","qr","rdiag","nrm","QR","Rdiag","isFullRank","solve$$1","leftHandSide","rightHandSide","useSVD","xrange","exception","range","dependenciesOneRow","thresholdValue","thresholdError","returnArray","addRow","EigenvalueDecomposition$$1","_options$assumeSymmet","assumeSymmetric","isSymmetric","tred2","tql2","H","ort","orthes","hqr2","h","hh","dl1","c3","el1","s2","tst1","high","low","nn","w","ra","sa","vr","vi","notlast","cdivres","exshift","norm","z","iter","cdiv","xr","xi","yr","yi","CholeskyDecomposition$$1","dimension","positiveDefinite","Lrowj","Lrowk","L","B","default","abstractMatrix","wrap","inverse","linearDependencies","_options$thresholdVal","_options$thresholdErr","results","Abis","svd","SingularValueDecomposition","SVD","EigenvalueDecomposition","EVD","CholeskyDecomposition","CHO","LuDecomposition","QrDecomposition","loadConfig","setLanguage","loadTranslations","getTranslations","loaded","ConfigActions","LanguageActions","fallback","useState","hasError","setHasError","useEffect","EnsureProcessHasStarted","NotFoundPage","href","window","history","go","ErrorPage","openModal","ModalActions","LEGAL","PRIVACY","Footer","currentPage","document","origin","Fb","Twitter","LinkedIn","GPlus","EmailSharing","encodeURI","rel","getFullYear","LoadClientCase","params","PureComponent","ClientCaseActions","Loader","Modal","modalBackdrop","onCloseModal","contains","classList","addEventListener","remove","removeEventListener","ref","TextBox","placeholder","isInvalid","readOnly","invalid","inputSelector","inputElement","querySelector","isReadOnly","hasAttribute","setAttribute","select","setSelectionRange","removeAttribute","execCommand","copyToClipBoard","urlToCase","emailSharing","sendEmail","DocumentViewer","TermsConditions","modalActions","PrivacyPolicy","emailRegex","validateEmail","validateNotEmpty","CollapseButton","isCollapsed","defaultChecked","htmlFor","contentClassName","isCollapsible","toString","companyPlaceholder","useLiteral","isEmailValid","isFirstNameRequired","isLastNameRequired","isCompanyRequired","isPhoneRequired","isFormValid","progressActions","redirectTo","clearAndNavigate","THANK_YOU","open","setOpen","containerRef","useRef","listener","containerEl","current","closeMenu","selectLanguage","setItem","TopBar","Nav","logo","ScrollToTop","scrollTo","nextProps","withRouter","isMobileDevice","navigator","userAgent","ToolTipManager","tooltips","onAfterHideTooltip","element","getElementById","onAfterShowTooltip","ReactTooltip","rebuild","tooltypTypes","event","eventOff","afterHide","afterShow","place","UnsavedProgressWarning","onBeforeUnload","preventDefault","returnValue","when","chatEnv","languageFamily","LiveChatWidget","tag","createElement","onload","__al_chat","setup","getElementsByTagName","appendChild","PageLoader","asyncComponent","getComponent","setState","C","updateOtherPerformanceAspects","OTHER_PERFORMANCE_ASPECTS","updateParticleSize","PARTICLE_SIZE","updatePrimaryLiquidCorrosive","PRIMARY_LIQUID_CORROSIVE","updatePrimaryLiquidDensity","PRIMARY_LIQUID_DENSITY","updatePrimaryLiquidDensityMeasuredAtTemperature","PRIMARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE","updatePrimaryLiquidDistribution","PRIMARY_LIQUID_DISTRIBUTION","updatePrimaryLiquidDropletSize","PRIMARY_LIQUID_DROPLET_SIZE","updatePrimaryLiquidProcessPressure","PRIMARY_LIQUID_PROCESS_PRESSURE","updatePrimaryLiquidProcessTemperature","PRIMARY_LIQUID_PROCESS_TEMPERATURE","updatePrimaryLiquidProductName","PRIMARY_LIQUID_PRODUCT_NAME","updatePrimaryLiquidTotalFlowRate","updatePrimaryLiquidViscosity","PRIMARY_LIQUID_VISCOSITY","updatePrimaryLiquidViscosityMeasuredAtTemperature","PRIMARY_LIQUID_VISCOSITY_MEASURED_AT_TEMPERATURE","updateSecondaryLiquidConcentration","SECONDARY_LIQUID_CONCENTRATION","updateSecondaryLiquidConcentrationAfterSeparation","SECONDARY_LIQUID_CONCENTRATION_AFTER_SEPARATION","updateLiquidConcentrationUnit","LIQUID_CONCENTRATION_UNIT","updateSecondaryLiquidDensity","SECONDARY_LIQUID_DENSITY","updateSecondaryLiquidDensityMeasuredAtTemperature","SECONDARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE","updateSecondaryLiquidDistribution","SECONDARY_LIQUID_DISTRIBUTION","updateSecondaryLiquidDropletSize","SECONDARY_LIQUID_DROPLET_SIZE","updateSecondaryLiquidProductName","SECONDARY_LIQUID_PRODUCT_NAME","updateSolidConcentrationAfterSeparation","SOLID_CONCENTRATION_AFTER_SEPARATION","updateSolidConcentrationUnit","SOLID_CONCENTRATION_UNIT","updateSolidConcentrationInFeed","SOLID_CONCENTRATION_INFEED","updateSolidDensity","SOLID_DENSITY","updateSolidDistribution","SOLID_DISTRIBUTION","updateSolidDropletSize","SOLID_DROPLET_SIZE","updateSolidKnownToBeErosive","SOLID_KNOWN_TO_BE_EROSIVE","updateSolidsType","SOLIDS_TYPE","updateCustomizedAe","CUSTOMIZED_AE","SigmaGraph","isValid","dv50","NaN","parseFloat","distribution","sigma","round","exp","DontHaveSepData","showMore","showmore","showLess","Chart","dotStyle","matchObject","formatter","highlightClosestTo","labelFormatter","line","XAxisLabel","YAxisLabel","closestsMatch","num","arr","selector","arr2","curro","diff","val","newdiff","closest","margins","activeDot","P","MAX_NUM","erf","sign","ysq","xnum","xden","erf1","del","erfc2","erfc3","PROCESSASPECT_FIELDS","SeparatorSizes","Scale","Multiplier","Formula","sv50","Dv50","drho","my","mu","S0","sigmaS","bInner","particleConcentration","crelativeAnalytic4","PerformanceGraph","isDataValidForRendering","primaryDensity","primaryViscosity","dropletOrParticleSize","concentration","secondaryDensity","getSanitizedInput","generateDataSeriesForScale","multiplier","toFixed","concentrationUnit","desiredConcentration","noperformancechart","form","formula","flowRateToSize","lineInfo","crelativeAnalyticWithPC","GradeEfficiencyGraph","lineData","inputMemoKey","isInputValid","calculateLineData","GraphCustomization","handleEnabledChange","enabled","unlocked","prompt","handleRecalculateClick","handleKeyDown","keyCode","display","change","layout","units","onKeyDown","SolidLiquidForm","validation","allowCustomUnit","changeUnit","marginTop","SolidLiquid","pageComponent","LiquidLiquidSolidForm","LiquidLiquidSolid","LiquidLiquidForm","LiquidLiquid","updateDescription","PROCESS_DESCRIPTION","updateSelectedExStandards","standards","SELECTED_EXSTANDARDS","updateInstallationAspect","INSTALLATION_ASPECT","updateIsHazardousArea","IS_HAZARDOUS_AREA","updateSelectedControlLocations","locations","SELECTED_CONTROL_LOCATIONS","TextArea","CheckboxList","onCheckboxChange","checkedState","indexOf","ProcessAspects","briefProcessDescriptionTooltip","installationAspectsTooltip","lastClick","getPrimaryLiquidProperties","getSecondaryLiquidProperties","getSolidProperties","getProcessAspectDescription","getHazardousProcessAspectProperties","getSeparabilityData","dv50Value","sigmaValue","getExtendedSeparabilityData","getPerformanceTarget","isLiquidLiquidSolid","isLiquidLiquid","solidsAfterSeparationOption","secondaryLiquidConcentrationAfterSeparationOption","otherPerformanceAspectsOption","includeOtherPerformanceAspects","PropertyList","layoutDirection","propertyLayout","properties","itemClassName","PerformanceTargetSummary","propertyListProps","showHeader","separabilityPropertyListProps","SeparationPropertiesSummary","SeparabilitySummary","recommendedSeparatorSize","IconText","customIcon","onSave","onClear","ProcessLayout","component","addFiles","files","maxAllowedFiles","allowedFiles","parallellUploads","offset","all","removeFile","attachmentToDelete","SummarySection","rest","SubHero","FileUpload","disallowFileUploads","uploadsLabel","uploadsLabelMobile","multiple","onDrop","data-label","data-mobile-label","loading","isMobileResolution","innerWidth","duration","downloadFile","SummaryPerformanceGraph","isSolidLiquid","sharedProps","mainGraphProps","secondaryGraphProps","Summary","caseFileActions","hasLabTests","labTestActions","fileUploadSaveFirstInfo","data-disabled-text","LabTestActions","CaseFileActions","CookieConsent","approved","gaTrackingId","AsyncGetSeparabilityDataPage","AsyncComponent","AsyncLandingPage","AsyncLabTestPage","AsyncPilotTestPage","AsyncProcessSelectionPage","exact","listen","storeState","ProcessActions","hostname","ReactDOM","render","serviceWorker","ready","registration","unregister","stepId","navigate","navigateTo","startProcessFromBeginning","FormElement","s4","substring","Separator","separatorImage","isMobile","isDesktop","toLowerCase","replaceCommaWithDotForEdgeBrowser","convertUnitToSelectItem","convertUnitsForSelect","currentValue","userSpecificLabel","option","getInnerLayout","getLabelLayout","getInnerLayoutReverse","getLayout","Input","hasSingleUnit","newUnits","hasManyUnits","searchable","clearable","promptTextCreator","wrapperStyle","Field","NumericField"],"mappings":"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","file":"static/js/main.037801e9.chunk.js","sourcesContent":["import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { StoreState } from '../../store';\r\nimport ProgressActions from '../../store/progress/actions';\r\nimport { ProgressState } from '../../store/progress/constants';\r\nimport L from '../literal';\r\n\r\ninterface ProgressStepsProps extends ProgressState {\r\n actions: typeof ProgressActions;\r\n}\r\n\r\nexport const ProgressSteps: React.SFC = ({\r\n actions,\r\n activeStep,\r\n steps\r\n}) => (\r\n \r\n);\r\n\r\nexport default connect(\r\n (state: StoreState) => ({\r\n ...state.progress\r\n }),\r\n dispatch => ({\r\n actions: bindActionCreators(ProgressActions, dispatch)\r\n })\r\n)(ProgressSteps);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport Ionicon from 'react-ionicons';\r\nimport ProgressActions from '../../store/progress/actions';\r\nimport { StoreState } from '../../store';\r\nimport L from '../literal';\r\n\r\ninterface ProgressStepperProps {\r\n actions: {\r\n nextStep: () => any;\r\n previousStep: () => any;\r\n finalizeProcess: () => any;\r\n };\r\n allowFinalizing?: boolean;\r\n isOnFinalStep: boolean;\r\n isPreSummaryStep: boolean;\r\n isSeparationTaskSelected: boolean;\r\n showBackButton: boolean;\r\n showNextButton: boolean;\r\n}\r\n\r\nexport const ProgressStepper: React.SFC = ({\r\n actions,\r\n allowFinalizing,\r\n isOnFinalStep,\r\n isPreSummaryStep,\r\n isSeparationTaskSelected,\r\n showBackButton,\r\n showNextButton\r\n}) => (\r\n
\r\n
\r\n \r\n \r\n BACK\r\n \r\n\r\n {!isOnFinalStep && (\r\n \r\n {isPreSummaryStep ? VIEW_YOUR_SUMMARY : NEXT}\r\n \r\n \r\n )}\r\n\r\n {isOnFinalStep && (\r\n \r\n SEND_DATA_TO_ALFA_LAVAL\r\n \r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nexport default connect(\r\n ({\r\n process,\r\n processData,\r\n progress\r\n }: StoreState) => ({\r\n isOnFinalStep: progress.activeStep === progress.steps.length - 1,\r\n isPreSummaryStep: progress.activeStep === progress.steps.length - 2,\r\n isSeparationTaskSelected: !!process.activeProcessId,\r\n showBackButton: progress.activeStep > 0,\r\n showNextButton: progress.activeStep < progress.steps.length - 1,\r\n }),\r\n dispatch => ({\r\n actions: bindActionCreators(ProgressActions, dispatch)\r\n })\r\n)(ProgressStepper);\r\n","export const replacePlaceholders = (\r\n translation: string,\r\n replacements: {}\r\n): string | React.ReactNode[] => {\r\n const strings = translation.split(/{[^}]+}/);\r\n const placeholders = translation.match(/{[^}]+}/g);\r\n\r\n const result = [strings[0]];\r\n let onlyStrings = true;\r\n for (let i = 1; i < strings.length; i++) {\r\n const placeholderKey = placeholders![i - 1].replace(/[{}]/g, \"\");\r\n result.push(replacements[placeholderKey]);\r\n result.push(strings[i]);\r\n\r\n if (typeof replacements[placeholderKey] !== \"string\") {\r\n onlyStrings = false;\r\n }\r\n }\r\n\r\n return onlyStrings ? result.join(\"\") : result;\r\n};\r\n","module.exports = __webpack_public_path__ + \"static/media/noperformancechart.c82a67b5.png\";","import { Action } from 'redux';\r\n\r\nexport enum PROCESSDATA_FIELDS {\r\n OTHER_PERFORMANCE_ASPECTS = 'otherPerformanceAspects',\r\n PARTICLE_SIZE = 'particleSize',\r\n PRIMARY_LIQUID_CORROSIVE = 'primaryLiquidCorrosive',\r\n PRIMARY_LIQUID_DENSITY = 'primaryLiquidDensity',\r\n PRIMARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE = 'primaryLiquidDensityMeasuredAtTemperature',\r\n PRIMARY_LIQUID_DISTRIBUTION = 'primaryLiquidDistribution',\r\n PRIMARY_LIQUID_DROPLET_SIZE = 'primaryLiquidDropletSize',\r\n PRIMARY_LIQUID_PROCESS_PRESSURE = 'primaryLiquidProcessPressure',\r\n PRIMARY_LIQUID_PROCESS_TEMPERATURE = 'primaryLiquidProcessTemperature',\r\n PRIMARY_LIQUID_PRODUCT_NAME = 'primaryLiquidProductName',\r\n PRIMARY_LIQUID_TOTAL_FLOWRATE = 'primaryLiquidTotalFlowRate',\r\n PRIMARY_LIQUID_VISCOSITY = 'primaryLiquidViscosity',\r\n PRIMARY_LIQUID_VISCOSITY_MEASURED_AT_TEMPERATURE = 'primaryLiquidViscosityMeasuredAtTemperature',\r\n SECONDARY_LIQUID_CONCENTRATION = 'secondaryLiquidConcentration',\r\n SECONDARY_LIQUID_CONCENTRATION_AFTER_SEPARATION = 'secondaryLiquidConcentrationAfterSeparation',\r\n LIQUID_CONCENTRATION_UNIT = 'liquidConcentrationUnit',\r\n SECONDARY_LIQUID_DENSITY = 'secondaryLiquidDensity',\r\n SECONDARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE = 'secondaryLiquidDensityMeasuredAtTemperature',\r\n SECONDARY_LIQUID_DISTRIBUTION = 'secondaryLiquidDistribution',\r\n SECONDARY_LIQUID_DROPLET_SIZE = 'secondaryLiquidDropletSize',\r\n SECONDARY_LIQUID_PRODUCT_NAME = 'secondaryLiquidProductName',\r\n SOLID_CONCENTRATION_AFTER_SEPARATION = 'solidConcentrationAfterSeparation',\r\n SOLID_CONCENTRATION_INFEED = 'solidConcentrationInFeed',\r\n SOLID_CONCENTRATION_UNIT = 'solidConcentrationUnit',\r\n SOLID_DENSITY = 'solidDensity',\r\n SOLID_DISTRIBUTION = 'solidDistribution',\r\n SOLID_DROPLET_SIZE = 'solidDropletSize',\r\n SOLID_KNOWN_TO_BE_EROSIVE = 'solidKnownToBeErosive',\r\n SOLIDS_TYPE = 'solidsType',\r\n CUSTOMIZED_AE = 'customizedAe',\r\n}\r\n\r\nexport interface UpdateProcessDataFieldAction extends Action {\r\n property: PROCESSDATA_FIELDS;\r\n value: string | boolean | number;\r\n}\r\n\r\nexport interface ProcessDataState {\r\n hasEnteredData: boolean;\r\n [PROCESSDATA_FIELDS.OTHER_PERFORMANCE_ASPECTS]: string | undefined;\r\n [PROCESSDATA_FIELDS.PARTICLE_SIZE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_CORROSIVE]: boolean;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_DENSITY]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_DISTRIBUTION]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_DROPLET_SIZE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_PROCESS_PRESSURE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_PROCESS_TEMPERATURE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_PRODUCT_NAME]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_TOTAL_FLOWRATE]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_VISCOSITY]: string | undefined;\r\n [PROCESSDATA_FIELDS.PRIMARY_LIQUID_VISCOSITY_MEASURED_AT_TEMPERATURE]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_CONCENTRATION]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_CONCENTRATION_AFTER_SEPARATION]: string | undefined;\r\n [PROCESSDATA_FIELDS.LIQUID_CONCENTRATION_UNIT]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_DENSITY]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_DENSITY_MEASURED_AT_TEMPERATURE]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_DISTRIBUTION]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_DROPLET_SIZE]: string | undefined;\r\n [PROCESSDATA_FIELDS.SECONDARY_LIQUID_PRODUCT_NAME]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_CONCENTRATION_AFTER_SEPARATION]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_CONCENTRATION_UNIT]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_CONCENTRATION_INFEED]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_DENSITY]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_DISTRIBUTION]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_DROPLET_SIZE]: string | undefined;\r\n [PROCESSDATA_FIELDS.SOLID_KNOWN_TO_BE_EROSIVE]: boolean;\r\n [PROCESSDATA_FIELDS.SOLIDS_TYPE]: string | undefined;\r\n [PROCESSDATA_FIELDS.CUSTOMIZED_AE]: string | undefined;\r\n}\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { StoreState } from \"../../store\";\r\nimport { replacePlaceholders } from \"../../utilities/translations\";\r\n\r\nconst Literal = ({\r\n children: key,\r\n translations,\r\n replacements,\r\n preserveWraps = false,\r\n}) => {\r\n let value = translations[key] || `[${key}]`;\r\n\r\n if (replacements) {\r\n value = replacePlaceholders(value, replacements);\r\n if (typeof value !== \"string\") {\r\n return <>{value};\r\n }\r\n }\r\n\r\n if (preserveWraps) {\r\n return {value};\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport default connect(({ language }: StoreState) => ({\r\n translations: language.translations,\r\n}))(Literal);\r\n","import { MODAL_OPEN } from '../actionTypes';\r\nimport { ModalAction, MODAL_TYPES } from './constants';\r\n\r\nexport default {\r\n showModal,\r\n closeModal\r\n};\r\n\r\nexport function showModal(modalType: MODAL_TYPES): ModalAction {\r\n return {\r\n type: MODAL_OPEN,\r\n modalType\r\n };\r\n}\r\n\r\nexport function closeModal(): ModalAction {\r\n return {\r\n type: MODAL_OPEN,\r\n modalType: ''\r\n };\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { ProcessType } from '../../store/process/constants';\r\nimport separation1 from '../../assets/images/solids.png';\r\nimport separation2 from '../../assets/images/liquids.png';\r\nimport separation3 from '../../assets/images/solid_and_liquid.png';\r\nimport L from '../literal';\r\n\r\nconst separationImageMap = {\r\n separation1,\r\n separation2,\r\n separation3\r\n};\r\n\r\ninterface SeparationTaskProps {\r\n className?: string;\r\n id: ProcessType;\r\n imageReference: string;\r\n isSelected?: boolean;\r\n translationKey: string;\r\n onSelect?: (processType: any) => any;\r\n summaryTitle?: string | React.ReactNode;\r\n}\r\n\r\nconst SeparationTask: React.SFC = ({\r\n id,\r\n className,\r\n imageReference,\r\n isSelected,\r\n translationKey,\r\n onSelect,\r\n summaryTitle\r\n}) => (\r\n
onSelect!(id)} className={classNames('separation-task', className, { selected: isSelected })}>\r\n
\r\n \"\"\r\n
\r\n {summaryTitle && {summaryTitle}}\r\n {translationKey}\r\n
\r\n);\r\n\r\nSeparationTask.defaultProps = {\r\n onSelect: () => null\r\n};\r\n\r\nexport default SeparationTask;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\ninterface TimeUnitProps {\r\n className?: string;\r\n value: any;\r\n unit?: string;\r\n}\r\n\r\nconst TimeUnit: React.SFC = ({\r\n className,\r\n value,\r\n unit\r\n}) => (\r\n
\r\n {value}\r\n {unit}\r\n
\r\n);\r\n\r\nexport default TimeUnit;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n CartesianGrid,\r\n Label,\r\n Line,\r\n LineChart,\r\n ResponsiveContainer,\r\n XAxis,\r\n YAxis\r\n} from 'recharts';\r\nimport Ionicon from 'react-ionicons';\r\nimport { LabTest } from '../../store/labTest/constants';\r\nimport L from '../../components/literal';\r\n\r\nconst dotOptions = { r: 6 };\r\nconst chartMargins = { top: 20, right: 20, left: 10, bottom: 20 };\r\n\r\ninterface LabTestGraphProps {\r\n Ae: number;\r\n className?: string;\r\n isSpinTest: boolean;\r\n tests: LabTest[];\r\n}\r\n\r\nconst LabTestGraph: React.SFC = ({ className, tests }) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n LAB_TEST__TEST_ANALYSIS__GRAPH_Y_AXIS_LABEL\r\n }\r\n />\r\n \r\n \r\n\r\n {/* Lab test - Notice the old fragment syntax since recharts doesn't support React.Fragment */}\r\n {tests.map(({ id, colorId, dataPoints, trendDataPoints }) => [\r\n ,\r\n \r\n ])}\r\n \r\n \r\n {!tests.length && (\r\n
\r\n \r\n \r\n LAB_TEST__TEST_ANALYSIS__GRAPH_PLACEHOLDER\r\n \r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default LabTestGraph;\r\n","import { SELECT_SEPARATION_TASK, CLEAR_SEPARATION_TASK } from '../actionTypes';\r\nimport { ThunkAction } from 'redux-thunk';\r\nimport { StoreState } from '..';\r\nimport { SelectSeparationTaskProcessAction, ProcessType } from './constants';\r\nimport { Action } from 'redux';\r\n\r\nexport default {\r\n clearSeparationProcess,\r\n selectSeparationProcess\r\n};\r\n\r\nexport function clearSeparationProcess(): Action {\r\n return {\r\n type: CLEAR_SEPARATION_TASK\r\n };\r\n}\r\n\r\nexport function selectSeparationProcess(activeProcessId: ProcessType): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { process } = getState();\r\n const activeProcess = process.processes.find(({ id }) => id === activeProcessId);\r\n\r\n if (activeProcess) {\r\n dispatch({\r\n type: SELECT_SEPARATION_TASK,\r\n activeProcessId,\r\n activeProcess\r\n });\r\n } else {\r\n dispatch(clearSeparationProcess());\r\n }\r\n };\r\n}\r\n","import { DataPoint } from '../store/labTest/constants';\r\nconst { Matrix } = require('./ml-matrix'); // Important to use require here!\r\n\r\nfunction jacobian(coefficients: any, input: DataPoint[]) {\r\n const J = input.reduce(\r\n (result: Array>, datapoint) => {\r\n result[0].push(datapoint.Q! ** coefficients.get(1, 0));\r\n result[1].push(\r\n coefficients.get(0, 0) * datapoint.Q! ** coefficients.get(1, 0) * Math.log(datapoint.Q!)\r\n );\r\n return result;\r\n },\r\n [[], []]\r\n );\r\n\r\n return new Matrix(J).transpose();\r\n}\r\n\r\n/**\r\n * Calculates the dot products for matrices with non matching row/columns\r\n */\r\nfunction dot (matrixA: any, matrixB: any) {\r\n // Find the minimum dimensions for the result matrix that will contain the dot products\r\n const columns = Math.min(matrixA.columns, matrixB.columns);\r\n const rows = Math.min(matrixA.rows, matrixB.rows);\r\n\r\n const emptyDataset = new Array(rows).fill(new Array(columns).fill(0));\r\n\r\n const dotMatrix = emptyDataset.map(\r\n (row: Array>, rowOffset) =>\r\n row.map((column, columnOffset) => {\r\n const rowMatrix = Matrix.rowVector(matrixA.getRow(rowOffset));\r\n const columnMatrix = Matrix.columnVector(matrixB.getColumn(columnOffset));\r\n\r\n return rowMatrix.dot(columnMatrix);\r\n })\r\n );\r\n\r\n return new Matrix(dotMatrix);\r\n}\r\n\r\nexport function nonlinearRegression(datapoints: DataPoint[], iterations: Number = 10) {\r\n const meanValues = datapoints.reduce(\r\n ({ x, y }: any, datapoint) => ({\r\n x: x + datapoint.Q!,\r\n y: y + datapoint.centrateQuality\r\n }),\r\n {\r\n x: 0,\r\n y: 0\r\n });\r\n\r\n const initialK1 = meanValues.y / meanValues.x;\r\n const initialK2 = 1;\r\n let coefficients = new Matrix([[initialK1], [initialK2]]); // Initial k1 & k2 values\r\n\r\n for (var iteration = 0; iteration < iterations; iteration++) {\r\n const residuals = datapoints.map(\r\n datapoint => datapoint.centrateQuality - coefficients.get(0, 0) * Math.pow(datapoint.Q!, coefficients.get(1, 0)) // eslint-disable-line no-loop-func\r\n );\r\n\r\n // const square = residuals.reduce((res, r) => res + r ** 2, 0);\r\n\r\n const jacobianMatrix = jacobian(coefficients, datapoints);\r\n const transposedResiduals = new Matrix([residuals]).transpose();\r\n\r\n coefficients = coefficients.add(\r\n dot(jacobianMatrix.pseudoInverse(), transposedResiduals)\r\n );\r\n }\r\n\r\n const k1 = coefficients.get(0, 0);\r\n const k2 = coefficients.get(1, 0);\r\n\r\n return [\r\n { time: 0, Q: 0, centrateQuality: 0 }, // Add a starting point at 0,0\r\n ...datapoints.map(({ time, Q }) => ({\r\n time,\r\n Q,\r\n centrateQuality: k1 * Math.pow(Q!, k2)\r\n }))\r\n ];\r\n}\r\n","import { ThunkAction } from 'redux-thunk';\r\nimport { StoreState } from '..';\r\nimport {\r\n ADD_LABTEST,\r\n REMOVE_LABTEST,\r\n SET_LABTEST_TYPE,\r\n TOGGLE_LABTEST,\r\n SET_LABTEST_SEPARATOR_SIZE\r\n} from '../actionTypes';\r\n\r\nimport {\r\n AddLabTestAction,\r\n LabTest,\r\n RemoveLabTestAction,\r\n ToggleLabTestAction,\r\n SetLabTestSeparatorAction,\r\n DataPoint\r\n} from './constants';\r\nimport { nonlinearRegression } from '../../utilities/regressionAnalysis';\r\n\r\nexport default {\r\n addTest,\r\n removeTest,\r\n selectSeparatorSize,\r\n toggleTest,\r\n toggleTestType\r\n};\r\n\r\nconst centrifugeSpeed = 2000;\r\nconst tubeType = 0.4486;\r\nconst L100Tube = 100;\r\nconst LxxTube = 70;\r\nconst xxTube = 50;\r\nconst analysedTopPhase = 0.5;\r\n\r\nconst calculateSpin = (Ae: number) => ({ time, centrateQuality }: DataPoint): DataPoint => {\r\n const Q =\r\n 3600 *\r\n Ae *\r\n 9.80665 *\r\n tubeType *\r\n 0.5 /\r\n ((2 * Math.PI * centrifugeSpeed / 60) ** 2 * time * 60);\r\n\r\n return {\r\n time,\r\n centrateQuality,\r\n Q\r\n };\r\n};\r\n\r\nconst calculateGravity = (Ae: number) => ({ time, centrateQuality }: DataPoint): DataPoint => {\r\n const Q =\r\n 0.5 *\r\n Ae *\r\n ((L100Tube - LxxTube) * analysedTopPhase / (100 - xxTube) / 1000 / (time * 3600)) *\r\n 3600 * 100;\r\n\r\n return {\r\n time,\r\n centrateQuality,\r\n Q\r\n };\r\n};\r\n\r\nexport function addTest(test: LabTest): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { labTest } = getState();\r\n\r\n const dataPointsWithQ = test.dataPoints\r\n .reverse()\r\n .map(labTest.isSpinTest ? calculateSpin(labTest.Ae) : calculateGravity(labTest.Ae));\r\n\r\n const trendDataPoints = nonlinearRegression(dataPointsWithQ);\r\n\r\n dispatch({\r\n type: ADD_LABTEST,\r\n test: {\r\n ...test,\r\n dataPoints: dataPointsWithQ,\r\n trendDataPoints,\r\n active: true,\r\n id: Date.now()\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function removeTest(test: LabTest): RemoveLabTestAction {\r\n return {\r\n type: REMOVE_LABTEST,\r\n test\r\n };\r\n}\r\n\r\nexport function toggleTest(test: LabTest): ToggleLabTestAction {\r\n return {\r\n type: TOGGLE_LABTEST,\r\n test\r\n };\r\n}\r\n\r\nexport function selectSeparatorSize(Ae: number): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { labTest } = getState();\r\n\r\n // This could be optimized by doing the calculations when fetching from the store instead\r\n // with the reselect library\r\n const tests = labTest.tests.map(test => {\r\n const dataPointsWithQ = test.dataPoints.map(labTest.isSpinTest ? calculateSpin(Ae) : calculateGravity(Ae));\r\n const trendDataPoints = nonlinearRegression(dataPointsWithQ);\r\n\r\n return {\r\n ...test,\r\n dataPoints: dataPointsWithQ,\r\n trendDataPoints\r\n };\r\n });\r\n\r\n dispatch({\r\n type: SET_LABTEST_SEPARATOR_SIZE,\r\n Ae,\r\n tests\r\n });\r\n };\r\n}\r\n\r\nexport function toggleTestType(): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { labTest } = getState();\r\n const { testType } = labTest;\r\n\r\n dispatch({\r\n type: SET_LABTEST_TYPE,\r\n testType: testType === 'spin' ? 'gravity' : 'spin'\r\n });\r\n };\r\n}\r\n","import React from 'react';\r\n\r\ninterface SliderProps {\r\n disabled?: boolean;\r\n max?: number;\r\n min?: number;\r\n onChange: (value: number) => any;\r\n value?: number;\r\n\r\n}\r\nconst Slider: React.SFC = ({\r\n disabled,\r\n max,\r\n min,\r\n onChange,\r\n value\r\n}) => (\r\n
\r\n onChange(parseInt(e.target.value, 10))}\r\n className=\"native-slider\"\r\n />\r\n
\r\n);\r\n\r\nSlider.defaultProps = {\r\n onChange: () => null\r\n};\r\n\r\nexport default Slider;\r\n","import React from 'react';\r\nimport { StoreState } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport SeparatorComponent from '../separator';\r\nimport { SeparatorSize, Separator } from '../../store/recommendedSeparator/constants';\r\nimport Slider from '../slider';\r\nimport L from '../literal';\r\n\r\ninterface ChooseSeparatorProps {\r\n Ae: number;\r\n separators: Array;\r\n onSelect: (Ae: number) => void;\r\n}\r\n\r\nexport class ChooseSeparator extends React.Component {\r\n selectSeparator = (separatorSize: SeparatorSize) => {\r\n const foundSeparator = this.props.separators.find((a) => a.separatorSize === separatorSize);\r\n this.props.onSelect(foundSeparator!.Ae);\r\n }\r\n\r\n sliderSelectSeparator = (value: number) => {\r\n if (value === 3) {\r\n this.selectSeparator('large');\r\n }\r\n if (value === 2) {\r\n this.selectSeparator('medium');\r\n }\r\n if (value === 1) {\r\n this.selectSeparator('small');\r\n }\r\n }\r\n\r\n render() {\r\n const { Ae, separators } = this.props;\r\n const selectedSliderValue = separators.findIndex(separator => separator.Ae === Ae) + 1;\r\n\r\n return (\r\n
\r\n
\r\n SELECT_SEPARATOR_SIZE\r\n \r\n
\r\n
\r\n {separators.map(separator => (\r\n this.selectSeparator(separator.separatorSize)}\r\n {...separator}\r\n isActive={separator.Ae === Ae}\r\n />\r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n ({ labTest, recommendedSeparator }: StoreState) => ({\r\n Ae: labTest.Ae,\r\n separators: recommendedSeparator.separators\r\n })\r\n)(ChooseSeparator);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport Ionicon from 'react-ionicons';\r\nimport L from '../literal';\r\n\r\ninterface DataListProps {\r\n className?: string;\r\n dataset: Array;\r\n dataKey: string;\r\n itemPrefix?: (index: number) => JSX.Element;\r\n onRemove?: () => any;\r\n showDelete?: boolean;\r\n subTitle?: string;\r\n title?: string;\r\n unit?: string;\r\n}\r\n\r\nconst DataList: React.SFC = ({\r\n className,\r\n dataset,\r\n dataKey,\r\n itemPrefix,\r\n onRemove,\r\n showDelete,\r\n subTitle,\r\n title,\r\n unit\r\n}) => (\r\n
\r\n
\r\n {showDelete && (\r\n <>\r\n REMOVE_THIS_TEST\r\n \r\n \r\n )}\r\n {!showDelete && (\r\n <>\r\n {title}\r\n {subTitle}\r\n \r\n )}\r\n
\r\n {dataset.map((item, index) => (\r\n
\r\n {itemPrefix && itemPrefix(index)}\r\n {item[dataKey]}\r\n {unit && {unit}}\r\n
\r\n ))}\r\n
\r\n);\r\n\r\nexport default DataList;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { LabTest, MAX_LABTESTS } from '../../store/labTest/constants';\r\nimport DataList from '../../components/dataList';\r\nimport TimeUnit from '../../components/timeUnit';\r\n\r\ninterface AnalysisTableProps {\r\n allowDelete?: boolean;\r\n className?: string;\r\n datapointRange: Array;\r\n datapointRangeUnit: string;\r\n onRemoveTest: (test: LabTest) => any;\r\n tests: Array;\r\n}\r\n\r\nconst AnalysisTable: React.SFC = ({\r\n allowDelete,\r\n className,\r\n datapointRange,\r\n datapointRangeUnit,\r\n onRemoveTest,\r\n tests\r\n}) => {\r\n const fillerData = new Array(datapointRange.length).fill({});\r\n const showfiller = tests.length < MAX_LABTESTS;\r\n return (\r\n
\r\n {tests.map(test => (\r\n onRemoveTest(test)}\r\n title={test.name}\r\n subTitle={test.dateOfTesting}\r\n itemPrefix={index => }\r\n unit={test.unit}\r\n dataKey=\"centrateQuality\"\r\n dataset={test.dataPoints.slice().reverse()}\r\n />\r\n ))}\r\n {showfiller && }\r\n
\r\n );\r\n};\r\n\r\nAnalysisTable.defaultProps = {\r\n allowDelete: true\r\n};\r\n\r\nexport default AnalysisTable;\r\n","module.exports = \"data:image/png;base64,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\"","import { Action } from 'redux';\r\n\r\nexport const MODAL_OPEN = 'MODAL_OPEN';\r\n\r\nexport enum MODAL_TYPES {\r\n SAVE_DATA = 'SAVE_DATA',\r\n DATA_SAVED = 'DATA_SAVED',\r\n CLEAR_DATA = 'CLEAR_DATA',\r\n LEAVE_PAGE = 'LEAVE_PAGE',\r\n THANK_YOU = 'THANK_YOU',\r\n LEGAL = 'LEGAL',\r\n PRIVACY = 'PRIVACY'\r\n}\r\n\r\nexport interface ModalState {\r\n modalType: string;\r\n modalArguments?: any;\r\n}\r\n\r\nexport interface ModalAction extends Action {\r\n modalType: string;\r\n modalArguments?: any;\r\n}\r\n","import React from 'react';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport { FormElement, FormElementProps } from '../formElement';\r\nimport Ionicon from 'react-ionicons';\r\nimport { guid } from '../../utilities/guid';\r\n\r\ninterface CheckBoxProps extends FormElementProps {\r\n onChange?: (checkedState: boolean) => any;\r\n label?: any;\r\n checked?: boolean;\r\n}\r\n\r\nconst CheckBox: React.SFC = ({\r\n onChange,\r\n checked,\r\n label,\r\n tooltip,\r\n ...restProps\r\n}) => {\r\n const myId = guid();\r\n return (\r\n \r\n \r\n {tooltip && (\r\n <>\r\n \r\n \r\n \r\n \r\n
{tooltip}
\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nCheckBox.defaultProps = {\r\n onChange: () => null\r\n};\r\n\r\nexport default CheckBox;\r\n","module.exports = __webpack_public_path__ + \"static/media/separator.58444d43.png\";","module.exports = __webpack_public_path__ + \"static/media/solids.ebe48231.png\";","module.exports = __webpack_public_path__ + \"static/media/liquids.2cd5e2c0.png\";","module.exports = __webpack_public_path__ + \"static/media/solid_and_liquid.7ca768f0.png\";","// tslint:disable\r\nimport React from 'react';\r\n\r\ninterface SeparabilityProps {\r\n SeparabilityDataNone?: boolean;\r\n SeparabilityDataExists?: boolean;\r\n SeparabilityDataOther?: boolean;\r\n SmallSeparator?: boolean;\r\n MediumSeparator?: boolean;\r\n LargeSeparator?: boolean;\r\n CheckedColor?: any;\r\n isChecked?: boolean;\r\n CheckedOnClick?: (event: React.MouseEvent) => void;\r\n SeparatorSize?: number;\r\n}\r\n\r\nconst Separation1 = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Separation2 = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Separation3 = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Separation4 = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst SeparabilityDataNone = ({ SeparabilityDataNone }: SeparabilityProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SeparabilityDataExists = ({\r\n SeparabilityDataExists\r\n}: SeparabilityProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SeparabilityDataOther = ({\r\n SeparabilityDataOther\r\n}: SeparabilityProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst EmailIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst GlobeIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst ChatIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst ArrowRightIcon = () => (\r\n \r\n \r\n \r\n);\r\nconst ArrowLeftIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst CloseIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst CogWheelsIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst DownloadIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst FacebookIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst HelpIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst LightBulbIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst LinkedinIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst MenuIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst MinusIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst GPlusIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst OfficeTelephoneIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst PhoneIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst PlusIcon = () => (\r\n \r\n \r\n \r\n);\r\nconst Quality = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst TestTubeIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst TwitterIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst YoutubeIcon = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst Play = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst Calendar = () => (\r\n \r\n \r\n \r\n);\r\nconst SuccessCheck = () => (\r\n \r\n \r\n \r\n \r\n);\r\nconst Checked = ({\r\n CheckedColor = '#23337E',\r\n isChecked,\r\n CheckedOnClick\r\n}: SeparabilityProps) => (\r\n \r\n \r\n \r\n \r\n\r\n \r\n {isChecked && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n);\r\n\r\nconst HazardousMaterial = (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst PilotTest = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst LabTest = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SYC = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SolidsIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst LiquidsIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SigmaGraphSmall = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\nconst SigmaGraphMedium = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\nconst SigmaGraphBig = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst LoadingSpinner = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n\r\nexport {\r\n Separation1,\r\n Separation2,\r\n Separation3,\r\n Separation4,\r\n SeparabilityDataNone,\r\n SeparabilityDataExists,\r\n SeparabilityDataOther,\r\n EmailIcon,\r\n GlobeIcon,\r\n ChatIcon,\r\n ArrowLeftIcon,\r\n ArrowRightIcon,\r\n CloseIcon,\r\n CogWheelsIcon,\r\n DownloadIcon,\r\n FacebookIcon,\r\n GPlusIcon,\r\n HazardousMaterial,\r\n HelpIcon,\r\n LightBulbIcon,\r\n LinkedinIcon,\r\n MenuIcon,\r\n MinusIcon,\r\n OfficeTelephoneIcon,\r\n PhoneIcon,\r\n PlusIcon,\r\n Quality,\r\n TestTubeIcon,\r\n TwitterIcon,\r\n YoutubeIcon,\r\n Play,\r\n Calendar,\r\n Checked,\r\n SuccessCheck,\r\n PilotTest,\r\n LabTest,\r\n SYC,\r\n SolidsIcon,\r\n LiquidsIcon,\r\n SigmaGraphSmall,\r\n SigmaGraphMedium,\r\n SigmaGraphBig,\r\n LoadingSpinner\r\n};\r\n","import { Action } from 'redux';\r\n\r\nexport enum CLIENTCASE_FIELDS {\r\n ACCEPTED_PRIVACY_POLICY = 'acceptedPrivacyPolicy',\r\n ACCEPTED_TERMS = 'acceptedTerms',\r\n COMPANY = 'companyName',\r\n EMAIL_ADDRESS = 'email',\r\n FIRST_NAME = 'firstName',\r\n LAST_NAME = 'lastName',\r\n PHONE = 'phoneNumber'\r\n}\r\n\r\nexport interface ClientCaseState {\r\n caseId: string;\r\n [CLIENTCASE_FIELDS.ACCEPTED_PRIVACY_POLICY]: boolean;\r\n [CLIENTCASE_FIELDS.ACCEPTED_TERMS]: boolean;\r\n [CLIENTCASE_FIELDS.COMPANY]: string;\r\n [CLIENTCASE_FIELDS.EMAIL_ADDRESS]: string;\r\n [CLIENTCASE_FIELDS.FIRST_NAME]: string;\r\n [CLIENTCASE_FIELDS.LAST_NAME]: string;\r\n [CLIENTCASE_FIELDS.PHONE]: string;\r\n}\r\n\r\nexport interface UpdateClientCaseAction extends Action {\r\n property: string;\r\n value: string |  boolean;\r\n}\r\n\r\nexport interface SaveClientCaseAction extends Action {\r\n caseId: string;\r\n}\r\n\r\nexport type ClientCaseAction = UpdateClientCaseAction | Action;\r\n","import { ThunkAction } from 'redux-thunk';\r\nimport { StoreState } from '..';\r\nimport {\r\n CLEAR_DATA,\r\n UPDATE_CLIENTCASE_FIELD,\r\n FETCH_SAVE_CLIENTCASE_SUCCESS,\r\n FETCH_SAVE_CLIENTCASE_ERROR,\r\n RESTORE_DATA,\r\n SHOW_LOADER,\r\n HIDE_LOADER\r\n} from '../actionTypes';\r\nimport {\r\n CLIENTCASE_FIELDS,\r\n ClientCaseAction,\r\n SaveClientCaseAction\r\n} from './constants';\r\nimport { showModal, closeModal } from '../modal/actions';\r\nimport { MODAL_TYPES } from '../modal/constants';\r\nimport { navigateToLastStep } from '../progress/actions';\r\nimport caseApi from '../../services/caseApi';\r\nimport { registerInteraction } from '../../utilities/analytics';\r\n\r\nexport default {\r\n clearData,\r\n loadCase,\r\n saveCase,\r\n saveOrShowModal,\r\n updateAcceptedTerms,\r\n updateAcceptedPrivacyPolicy,\r\n updateFirstName,\r\n updateLastName,\r\n updateCompany,\r\n updateEmailAddress,\r\n updatePhoneNumber\r\n};\r\n\r\nfunction updateField(property: CLIENTCASE_FIELDS, value: any) {\r\n return {\r\n type: UPDATE_CLIENTCASE_FIELD,\r\n property,\r\n value\r\n };\r\n}\r\n\r\nexport function clearData(): ClientCaseAction {\r\n return {\r\n type: CLEAR_DATA\r\n };\r\n}\r\n\r\nexport function saveOrShowModal(): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { clientCase: { caseId } } = getState();\r\n\r\n if (caseId) {\r\n dispatch(saveCase());\r\n } else {\r\n dispatch(showModal(MODAL_TYPES.SAVE_DATA));\r\n }\r\n };\r\n}\r\n\r\nexport function loadCase(caseId: string): ThunkAction {\r\n return (dispatch, getState) => {\r\n dispatch({ type: SHOW_LOADER });\r\n\r\n return caseApi\r\n .getCase(caseId)\r\n .then(\r\n ({ CaseType, CustomerInformation, Data, Aspect, Attachments }: any) => {\r\n const restoreData = {\r\n caseFiles: {\r\n attachments: Attachments.map(({ Id, Url, FileName }: any) => ({\r\n id: Id,\r\n url: Url,\r\n name: FileName\r\n }))\r\n },\r\n clientCase: {\r\n caseId\r\n },\r\n process: {\r\n activeProcessId: CaseType\r\n },\r\n progress: {\r\n activeStep: 0,\r\n processHasStarted: true\r\n },\r\n processAspects: Aspect,\r\n processData: Data\r\n };\r\n\r\n dispatch({ type: HIDE_LOADER });\r\n dispatch({ type: RESTORE_DATA, ...restoreData });\r\n dispatch(navigateToLastStep());\r\n }\r\n )\r\n .catch(error => {\r\n dispatch({ type: HIDE_LOADER });\r\n throw error;\r\n });\r\n };\r\n}\r\n\r\nexport function saveCase(): ThunkAction {\r\n return (dispatch, getState) => {\r\n const { clientCase, labTest, process, processAspects, processData: processDataToSave } = getState();\r\n const { caseId } = clientCase;\r\n\r\n // Filter out the data that we don't want to save\r\n const {\r\n exStandardOptions,\r\n controlLocationOptions,\r\n ...processAspectsToSave\r\n } = processAspects;\r\n\r\n const {\r\n availableColors,\r\n reachedMaxTests,\r\n ...labTestToSave\r\n } = labTest;\r\n\r\n dispatch({ type: SHOW_LOADER });\r\n\r\n const payload = {\r\n CaseType: process.activeProcessId,\r\n ContactInformation: {\r\n FirstName: clientCase.firstName,\r\n LastName: clientCase.lastName,\r\n Email: clientCase.email,\r\n PhoneNumber: clientCase.phoneNumber,\r\n CompanyName: clientCase.companyName,\r\n AcceptedPrivacyPolicy: clientCase.acceptedPrivacyPolicy,\r\n AcceptedTerms: clientCase.acceptedTerms\r\n },\r\n Data: processDataToSave,\r\n Aspect: processAspectsToSave,\r\n LabTest: labTestToSave\r\n };\r\n\r\n (caseId ? caseApi.saveCase(caseId, payload) : caseApi.createCase(payload))\r\n .then(({ CaseId: updatedCaseId = caseId }) => {\r\n dispatch({\r\n type: FETCH_SAVE_CLIENTCASE_SUCCESS,\r\n caseId: updatedCaseId\r\n });\r\n dispatch(showModal(MODAL_TYPES.DATA_SAVED));\r\n // here we can register an event for 'Registration'\r\n registerInteraction('Registration','Selector');\r\n })\r\n .catch(() => {\r\n dispatch({ type: FETCH_SAVE_CLIENTCASE_ERROR });\r\n dispatch(closeModal());\r\n })\r\n .then(() => {\r\n dispatch({ type: HIDE_LOADER });\r\n });\r\n };\r\n}\r\n\r\nexport function updateAcceptedPrivacyPolicy(acceptedPrivacyPolicy: boolean): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.ACCEPTED_PRIVACY_POLICY, acceptedPrivacyPolicy);\r\n}\r\n\r\nexport function updateAcceptedTerms(acceptedTerms: boolean): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.ACCEPTED_TERMS, acceptedTerms);\r\n}\r\n\r\nexport function updateFirstName(firstName: string): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.FIRST_NAME, firstName);\r\n}\r\n\r\nexport function updateLastName(lastName: string): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.LAST_NAME, lastName);\r\n}\r\n\r\nexport function updateCompany(company: string): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.COMPANY, company);\r\n}\r\n\r\nexport function updateEmailAddress(email: string): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.EMAIL_ADDRESS, email);\r\n}\r\n\r\nexport function updatePhoneNumber(phone: string): ClientCaseAction {\r\n return updateField(CLIENTCASE_FIELDS.PHONE, phone);\r\n}\r\n","/* tslint:disable */\r\nimport React from 'react';\r\n\r\nimport {\r\n Accordion,\r\n AccordionItem,\r\n AccordionItemTitle,\r\n AccordionItemBody\r\n} from 'react-accessible-accordion';\r\nexport class Section extends React.Component {\r\n render() {\r\n return (\r\n (\r\n <>{this.props.children}\r\n )\r\n } />\r\n );\r\n }\r\n};\r\n\r\ninterface ReactChildrenProps {\r\n children?: any;\r\n title: string | React.ReactNode;\r\n}\r\nexport class BroadSection extends React.Component {\r\n render() {\r\n return (\r\n
\r\n

{this.props.title}

\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nexport class Major extends React.Component {\r\n render() {\r\n return (\r\n
\r\n (\r\n <>\r\n {this.props.children}\r\n \r\n )\r\n } />\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\n\r\nconst SectionAccordionHelper = (props: { title: string, body: () => React.ReactNode }) => {\r\n return (\r\n \r\n \r\n {props.title && (\r\n \r\n \r\n {props.title}\r\n
\r\n \r\n \r\n )}\r\n \r\n
\r\n {props.body()}\r\n
\r\n
\r\n \r\n \r\n )\r\n};\r\nconst MajorAccordionHelper = (props: { title: string | React.ReactNode, body: () => React.ReactNode }) => {\r\n return (\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n {props.title}\r\n
\r\n \r\n \r\n \r\n
\r\n {props.body()}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n )\r\n};\r\nexport const Empty = (props: any) => (<> );\r\nexport { Field, NumericField } from \"./field\";\r\nexport { Checkbox } from \"./checkbox\";\r\nexport class ReactValueWarning extends React.Component {\r\n render() {\r\n if (this.props.visible && this.props.visible()) {\r\n return (
{this.props.children}
);\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\nexport class ReactValueError extends React.Component {\r\n render() {\r\n if (this.props.visible && this.props.visible()) {\r\n return (
{this.props.children}
);\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport RcCheckbox from 'rc-checkbox';\r\nimport 'rc-checkbox/assets/index.css';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport Ionicon from 'react-ionicons';\r\nimport { guid } from '../../utilities/guid';\r\n\r\nconst getLayout = (layout: string) => {\r\n return 'col-md-12';\r\n};\r\nexport class Checkbox extends React.Component {\r\n myId: string = guid();\r\n handleChange = (v: any) => {\r\n if (this.props.change !== undefined) {\r\n this.props.change(!this.props.value);\r\n }\r\n }\r\n render() {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n {this.props.tooltip && this.props.tooltip()}\r\n
\r\n \r\n
\r\n \r\n \r\n {this.props.tooltip && (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n","import { AnyAction } from 'redux';\r\n\r\ninterface ActionHandlerInterface {\r\n [key: string]: (currentState: T, action: any) => T;\r\n}\r\n\r\nexport default (initialState: T, actionHandlers: ActionHandlerInterface) => {\r\n return (state = initialState, action: AnyAction) => {\r\n const actionHandler = actionHandlers[action.type] || (() => state);\r\n return actionHandler(state, action);\r\n };\r\n};\r\n","import {\r\n ADD_LABTEST,\r\n CLEAR_DATA,\r\n FETCH_SAVE_CLIENTCASE_SUCCESS,\r\n HIDE_LOADER,\r\n REMOVE_LABTEST,\r\n RESTORE_DATA,\r\n SET_LABTEST_TYPE,\r\n SHOW_LOADER,\r\n TOGGLE_LABTEST,\r\n UPDATE_PROCESSASPECT_FIELD,\r\n UPDATE_PROCESSDATA_FIELD\r\n} from '../actionTypes';\r\nimport { AppState } from './constants';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: AppState = {\r\n contentIsDirty: false,\r\n isLoading: false\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: AppState): AppState => ({\r\n ...state,\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: false,\r\n isLoading: false\r\n }),\r\n\r\n [FETCH_SAVE_CLIENTCASE_SUCCESS]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: false\r\n }),\r\n\r\n [UPDATE_PROCESSASPECT_FIELD]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n }),\r\n\r\n [UPDATE_PROCESSDATA_FIELD]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n }),\r\n\r\n [SHOW_LOADER]: (state: AppState): AppState => ({\r\n ...state,\r\n isLoading: true\r\n }),\r\n\r\n [HIDE_LOADER]: (state: AppState): AppState => ({\r\n ...state,\r\n isLoading: false\r\n }),\r\n\r\n [TOGGLE_LABTEST]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n }),\r\n\r\n [SET_LABTEST_TYPE]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n }),\r\n\r\n [ADD_LABTEST]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n }),\r\n\r\n [REMOVE_LABTEST]: (state: AppState): AppState => ({\r\n ...state,\r\n contentIsDirty: true\r\n })\r\n};\r\n\r\nexport const app = createActionHandler(initialState, actionHandlers);\r\n","import { LOAD_CONFIG } from '../actionTypes';\r\nimport { ConfigState, LoadConfigAction } from './constants';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ConfigState = {\r\n};\r\n\r\nconst actionHandlers = {\r\n [LOAD_CONFIG]: (state: ConfigState, { config }: LoadConfigAction): ConfigState => ({\r\n ...state,\r\n ...config\r\n }),\r\n};\r\n\r\nexport const config = createActionHandler(initialState, actionHandlers);\r\n","import { ADD_ATTACHMENT, REMOVE_ATTACHMENT, CLEAR_DATA, UPDATE_ATTACHMENT, RESTORE_DATA } from '../actionTypes';\r\nimport {\r\n CaseFilesState,\r\n AddCaseFileAction,\r\n RemoveCaseFileAction,\r\n UpdateCaseFileAction\r\n} from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: CaseFilesState = {\r\n maxAttachments: 5,\r\n attachments: []\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: CaseFilesState): CaseFilesState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: CaseFilesState, { caseFiles: restoreData }: StoreState): CaseFilesState => ({\r\n ...state,\r\n ...restoreData\r\n }),\r\n\r\n [ADD_ATTACHMENT]: (state: CaseFilesState, { attachment }: AddCaseFileAction): CaseFilesState => ({\r\n ...state,\r\n attachments: state.attachments.concat(attachment)\r\n }),\r\n\r\n [REMOVE_ATTACHMENT]: (state: CaseFilesState, { id }: RemoveCaseFileAction): CaseFilesState => ({\r\n ...state,\r\n attachments: state.attachments.filter(attachment => attachment.id !== id)\r\n }),\r\n\r\n [UPDATE_ATTACHMENT]: (state: CaseFilesState, { id, updatedAttachment }: UpdateCaseFileAction): CaseFilesState => ({\r\n ...state,\r\n attachments: [\r\n ...state.attachments.map(attachment => attachment.id !== id ? attachment : updatedAttachment), // remove the attachment that needs updating\r\n ]\r\n })\r\n};\r\n\r\nexport const caseFiles = createActionHandler(initialState, actionHandlers);\r\n","import {\r\n CLEAR_DATA,\r\n UPDATE_CLIENTCASE_FIELD,\r\n FETCH_SAVE_CLIENTCASE_SUCCESS,\r\n RESTORE_DATA\r\n} from '../actionTypes';\r\n\r\nimport {\r\n ClientCaseState,\r\n UpdateClientCaseAction,\r\n SaveClientCaseAction\r\n} from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ClientCaseState = {\r\n caseId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n companyName: '',\r\n phoneNumber: '',\r\n acceptedTerms: false,\r\n acceptedPrivacyPolicy: false\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ClientCaseState): ClientCaseState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: ClientCaseState, { clientCase: restoreData }: StoreState): ClientCaseState => ({\r\n ...state,\r\n ...restoreData\r\n }),\r\n\r\n [FETCH_SAVE_CLIENTCASE_SUCCESS]: (state: ClientCaseState, { caseId }: SaveClientCaseAction): ClientCaseState => ({\r\n ...state,\r\n caseId\r\n }),\r\n\r\n [UPDATE_CLIENTCASE_FIELD]: (state: ClientCaseState, { property, value }: UpdateClientCaseAction): ClientCaseState => ({\r\n ...state,\r\n [property]: value\r\n })\r\n};\r\n\r\nexport const clientCase = createActionHandler(initialState, actionHandlers);\r\n","import {\r\n LabTestState,\r\n defaultSpinDatapoints,\r\n defaultSpinDatapointUnit,\r\n AddLabTestAction,\r\n ToggleLabTestAction,\r\n RemoveLabTestAction,\r\n SetLabTestAction,\r\n defaultGravityDatapoints,\r\n defaultGravityDatapointUnit,\r\n MAX_LABTESTS,\r\n SetLabTestSeparatorAction\r\n} from './constants';\r\nimport {\r\n REMOVE_LABTEST,\r\n CLEAR_DATA,\r\n RESTORE_DATA,\r\n ADD_LABTEST,\r\n TOGGLE_LABTEST,\r\n SET_LABTEST_TYPE,\r\n SET_LABTEST_SEPARATOR_SIZE\r\n} from '../actionTypes';\r\nimport createActionHandler from '../createActionHandler';\r\nimport { StoreState } from '..';\r\n\r\nconst initialState: LabTestState = {\r\n availableColors: ['color-1', 'color-2', 'color-3'],\r\n Ae: 4797,\r\n datapointRange: defaultSpinDatapoints,\r\n datapointRangeUnit: defaultSpinDatapointUnit,\r\n isSpinTest: true,\r\n reachedMaxTests: false,\r\n tests: [],\r\n testType: 'spin'\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: LabTestState): LabTestState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: LabTestState, { labTest: restoreData }: StoreState): LabTestState => ({\r\n ...state,\r\n ...restoreData\r\n }),\r\n\r\n [SET_LABTEST_SEPARATOR_SIZE]: (state: LabTestState, { Ae, tests }: SetLabTestSeparatorAction): LabTestState => ({\r\n ...state,\r\n Ae,\r\n tests: [...tests]\r\n }),\r\n\r\n [ADD_LABTEST]: (state: LabTestState, { test }: AddLabTestAction): LabTestState => {\r\n const [colorId, ...availableColors] = state.availableColors;\r\n\r\n return {\r\n ...state,\r\n availableColors,\r\n tests: [\r\n ...state.tests,\r\n // the new test\r\n {\r\n ...test,\r\n colorId\r\n }\r\n ],\r\n reachedMaxTests: (state.tests.length + 1) >= MAX_LABTESTS\r\n };\r\n },\r\n\r\n [TOGGLE_LABTEST]: (state: LabTestState, { test }: ToggleLabTestAction): LabTestState => ({\r\n ...state,\r\n tests: state.tests.map(testIterator => testIterator !== test ? testIterator : {\r\n ...test,\r\n active: !test.active\r\n })\r\n }),\r\n\r\n [REMOVE_LABTEST]: (state: LabTestState, { test }: RemoveLabTestAction): LabTestState => ({\r\n ...state,\r\n availableColors: [...state.availableColors, test.colorId!],\r\n tests: state.tests.filter(testIterator => testIterator !== test),\r\n reachedMaxTests: false\r\n }),\r\n\r\n [SET_LABTEST_TYPE]: (state: LabTestState, { testType }: SetLabTestAction): LabTestState => {\r\n const isSpinTest = testType === 'spin';\r\n\r\n return {\r\n ...initialState,\r\n isSpinTest,\r\n testType,\r\n datapointRange: isSpinTest ? defaultSpinDatapoints : defaultGravityDatapoints,\r\n datapointRangeUnit: isSpinTest ? defaultSpinDatapointUnit : defaultGravityDatapointUnit\r\n };\r\n }\r\n};\r\n\r\nexport const labTest = createActionHandler(initialState, actionHandlers);\r\n","import { MODAL_OPEN, CLEAR_DATA } from '../actionTypes';\r\nimport { ModalState, ModalAction } from './constants';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ModalState = {\r\n modalType: ''\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ModalState): ModalState => ({\r\n ...initialState\r\n }),\r\n\r\n [MODAL_OPEN]: (state: ModalState, { modalType, modalArguments }: ModalAction) => ({\r\n ...state,\r\n modalType,\r\n modalArguments\r\n })\r\n};\r\n\r\nexport const modal = createActionHandler(initialState, actionHandlers);\r\n","import { SELECT_SEPARATION_TASK, CLEAR_DATA, RESTORE_DATA, CLEAR_SEPARATION_TASK } from '../actionTypes';\r\nimport { ProcessState, SelectSeparationTaskProcessAction } from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ProcessState = {\r\n activeProcess: undefined,\r\n activeProcessId: '',\r\n processes: [\r\n {\r\n id: 'solid-liquid',\r\n uri: 'solid-liquid',\r\n translationKey: 'PROCESS__SOLIDS_FROM_LIQUID',\r\n imageReference: 'separation1',\r\n separateLiquids: false,\r\n separateSolids: true\r\n },\r\n {\r\n id: 'liquid-liquid',\r\n uri: 'liquid-liquid',\r\n translationKey: 'PROCESS__LIQUID_FROM_LIQUID',\r\n imageReference: 'separation2',\r\n separateLiquids: true,\r\n separateSolids: false\r\n },\r\n {\r\n id: 'liquid-liquid-solid',\r\n uri: 'liquid-liquid-solid',\r\n translationKey: 'PROCESS__LIQUIDS_AND_SOLIDS',\r\n imageReference: 'separation3',\r\n separateLiquids: true,\r\n separateSolids: true\r\n }\r\n ]\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ProcessState): ProcessState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: ProcessState, { process: restoreData }: StoreState): ProcessState => ({\r\n ...state,\r\n ...restoreData,\r\n activeProcess: state.processes.find(({ id }) => id === restoreData.activeProcessId)\r\n }),\r\n\r\n [CLEAR_SEPARATION_TASK]: (state: ProcessState): ProcessState => ({\r\n ...state,\r\n ...initialState\r\n }),\r\n\r\n [SELECT_SEPARATION_TASK]: (state: ProcessState, { activeProcessId, activeProcess }: SelectSeparationTaskProcessAction): ProcessState => ({\r\n ...state,\r\n activeProcessId,\r\n activeProcess\r\n })\r\n};\r\n\r\nexport const process = createActionHandler(initialState, actionHandlers);\r\n","import { UPDATE_PROCESSASPECT_FIELD, CLEAR_DATA, RESTORE_DATA } from '../actionTypes';\r\nimport { ProcessAspectAction, ProcessAspectState } from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ProcessAspectState = {\r\n processDescription: '',\r\n installationEnvironmentConditions: '',\r\n isHazardousArea: false,\r\n selectedExStandards: [],\r\n selectedControlLocations: [],\r\n exStandardOptions: Object.freeze([\r\n { label: 'ATEX', value: 'ATEX' },\r\n { label: 'IECEX', value: 'IECEX' },\r\n { label: 'NEC505', value: 'NEC505' },\r\n { label: 'Other', value: 'Other' }\r\n ]),\r\n controlLocationOptions: Object.freeze([\r\n { label: 'Safe area', value: 'Safe area' },\r\n { label: 'Hazardous area', value: 'Hazardous area' }\r\n ])\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ProcessAspectState): ProcessAspectState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: ProcessAspectState, { processAspects: restoreData }: StoreState): ProcessAspectState => ({\r\n ...state,\r\n ...restoreData\r\n }),\r\n\r\n [UPDATE_PROCESSASPECT_FIELD]: (state: ProcessAspectState, { property, value }: ProcessAspectAction): ProcessAspectState => ({\r\n ...state,\r\n [property]: value\r\n })\r\n};\r\n\r\nexport const processAspects = createActionHandler(initialState, actionHandlers);\r\n","import { UPDATE_PROCESSDATA_FIELD, CLEAR_DATA, RESTORE_DATA } from '../actionTypes';\r\nimport {\r\n ProcessDataState,\r\n UpdateProcessDataFieldAction\r\n} from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ProcessDataState = {\r\n hasEnteredData: false,\r\n otherPerformanceAspects: '',\r\n particleSize: '',\r\n primaryLiquidCorrosive: false,\r\n primaryLiquidDensity: '',\r\n primaryLiquidDensityMeasuredAtTemperature: '',\r\n primaryLiquidDistribution: '',\r\n primaryLiquidDropletSize: '',\r\n primaryLiquidProcessPressure: '',\r\n primaryLiquidProductName: '',\r\n primaryLiquidTotalFlowRate: '',\r\n primaryLiquidViscosity: '',\r\n primaryLiquidViscosityMeasuredAtTemperature: '',\r\n primaryLiquidProcessTemperature: '',\r\n secondaryLiquidConcentration: '',\r\n secondaryLiquidConcentrationAfterSeparation: '',\r\n liquidConcentrationUnit: '',\r\n secondaryLiquidDensity: '',\r\n secondaryLiquidDensityMeasuredAtTemperature: '',\r\n secondaryLiquidDistribution: '',\r\n secondaryLiquidDropletSize: '',\r\n secondaryLiquidProductName: '',\r\n solidConcentrationAfterSeparation: '',\r\n solidConcentrationUnit: '',\r\n solidConcentrationInFeed: '',\r\n solidDensity: '',\r\n solidDistribution: '',\r\n solidDropletSize: '',\r\n solidKnownToBeErosive: false,\r\n solidsType: '',\r\n customizedAe: undefined\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ProcessDataState): ProcessDataState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: ProcessDataState, { processData: restoreData }: StoreState): ProcessDataState => ({\r\n ...state,\r\n ...restoreData\r\n }),\r\n\r\n [UPDATE_PROCESSDATA_FIELD]: (state: ProcessDataState, { property, value }: UpdateProcessDataFieldAction): ProcessDataState => ({\r\n ...state,\r\n hasEnteredData: true,\r\n [property]: value\r\n })\r\n};\r\n\r\nexport const processData = createActionHandler(initialState, actionHandlers);\r\n","import { SELECT_PROGRESS_STEP, CLEAR_DATA, RESTORE_DATA, FINISH_PROCESS } from '../actionTypes';\r\nimport { ProgressState, ProgressAction } from './constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: ProgressState = {\r\n processHasStarted: false,\r\n activeStep: 0,\r\n steps: [\r\n {\r\n id: 0,\r\n getUri: () => '/process-selection',\r\n translationKey: 'PROGRESS_STEP__SEPARATION_TASK',\r\n activated: false\r\n },\r\n {\r\n id: 1,\r\n getUri: (state: StoreState) => `/separation-process/${state.process.activeProcess!.uri}/fluid-data`,\r\n translationKey: 'PROGRESS_STEP__PROCESS_DATA',\r\n activated: false\r\n },\r\n {\r\n id: 2,\r\n getUri: (state: StoreState) => `/separation-process/${state.process.activeProcess!.uri}/process-aspects`,\r\n translationKey: 'PROGRESS_STEP__PROCESS_ASPECTS',\r\n activated: false\r\n },\r\n {\r\n id: 3,\r\n getUri: (state: StoreState) => `/separation-process/${state.process.activeProcess!.uri}/summary`,\r\n translationKey: 'PROGRESS_STEP__SUMMARY',\r\n activated: false,\r\n hidden: true\r\n }\r\n ]\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: ProgressState): ProgressState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: ProgressState, { progress: restoreData }: StoreState): ProgressState => {\r\n return {\r\n ...state,\r\n activeStep: restoreData.activeStep || 0,\r\n processHasStarted: !!restoreData.processHasStarted\r\n };\r\n },\r\n\r\n [SELECT_PROGRESS_STEP]: (state: ProgressState, { activeStep }: ProgressAction): ProgressState => ({\r\n ...state,\r\n activeStep,\r\n processHasStarted: activeStep > 0\r\n }),\r\n\r\n [FINISH_PROCESS]: (state: ProgressState, action: ProgressAction) => ({\r\n ...state\r\n })\r\n};\r\n\r\nexport const progress = createActionHandler(initialState, actionHandlers);\r\n","import { UPDATE_PROCESSDATA_FIELD, CLEAR_DATA, RESTORE_DATA } from '../actionTypes';\r\nimport { RecommendedSeparatorState } from './constants';\r\nimport { UpdateProcessDataFieldAction, PROCESSDATA_FIELDS } from '../processData/constants';\r\nimport { StoreState } from '..';\r\nimport createActionHandler from '../createActionHandler';\r\n\r\nconst initialState: RecommendedSeparatorState = {\r\n separatorSize: 'unknown',\r\n description: 'Small sized separator',\r\n descriptionTranslationKey: 'SMALL_SIZED_SEPARATOR',\r\n separators: [\r\n {\r\n name: 'Small separator',\r\n nameTranslationKey: 'SMALL_SEPARATOR',\r\n description: 'Small sized separator',\r\n descriptionTranslationKey: 'SMALL_SEPARATOR_DESCRIPTION',\r\n separatorSize: 'small',\r\n requirement: flowRate => flowRate > 0 && flowRate <= 4,\r\n Ae: 4797\r\n },\r\n {\r\n name: 'Medium separator',\r\n nameTranslationKey: 'MEDIUM_SEPARATOR',\r\n description: 'Medium sized separator',\r\n descriptionTranslationKey: 'MEDIUM_SEPARATOR_DESCRIPTION',\r\n separatorSize: 'medium',\r\n requirement: flowRate => flowRate > 4 && flowRate <= 25,\r\n Ae: 61659\r\n },\r\n {\r\n name: 'Large separator',\r\n nameTranslationKey: 'LARGE_SEPARATOR',\r\n description: 'Large sized separator',\r\n descriptionTranslationKey: 'LARGE_SEPARATOR_DESCRIPTION',\r\n separatorSize: 'large',\r\n requirement: flowRate => flowRate > 25,\r\n Ae: 149643\r\n }\r\n ]\r\n};\r\n\r\nconst getSeparatorInfo = (flowRate: any, separators: Array) => {\r\n const separator = separators.find(s => s.requirement(flowRate));\r\n const description = (separator && separator.description) || separators[0].description;\r\n const descriptionTranslationKey = (separator && separator.descriptionTranslationKey) || separators[0].descriptionTranslationKey;\r\n const { separatorSize = 'unknown' } = separator || {};\r\n\r\n return {\r\n separatorSize,\r\n description,\r\n descriptionTranslationKey\r\n };\r\n};\r\n\r\nconst actionHandlers = {\r\n [CLEAR_DATA]: (state: RecommendedSeparatorState): RecommendedSeparatorState => ({\r\n ...initialState\r\n }),\r\n\r\n [RESTORE_DATA]: (state: RecommendedSeparatorState, { processData: restoreData }: StoreState): RecommendedSeparatorState => ({\r\n ...state,\r\n ...getSeparatorInfo(restoreData.primaryLiquidTotalFlowRate!, state.separators)\r\n }),\r\n\r\n [UPDATE_PROCESSDATA_FIELD]: (state: RecommendedSeparatorState, { property, value: flowRate }: UpdateProcessDataFieldAction): RecommendedSeparatorState => {\r\n // Listen to flow rate updates only so we can update the recommended separator\r\n if (property !== PROCESSDATA_FIELDS.PRIMARY_LIQUID_TOTAL_FLOWRATE) {\r\n return state;\r\n }\r\n\r\n return {\r\n ...state,\r\n ...getSeparatorInfo(flowRate, state.separators)\r\n };\r\n }\r\n};\r\n\r\nexport const recommendedSeparator = createActionHandler(initialState, actionHandlers);\r\n","import { LOAD_TRANSLATIONS, SET_LANGUAGE } from \"../actionTypes\";\r\nimport {\r\n LanguageState,\r\n SetLanguageAction,\r\n LoadTranslationsAction,\r\n} from \"./constants\";\r\nimport createActionHandler from \"../createActionHandler\";\r\n\r\nconst initialState: LanguageState = {\r\n languages: [\r\n { code: \"zh-Hans-CN\", name: \"中文\" },\r\n { code: \"en-GB\", name: \"English\" },\r\n { code: \"ja-JP\", name: \"日本語\" },\r\n ],\r\n languageCode: localStorage.getItem(\"language\") || \"en-GB\",\r\n};\r\n\r\nconst actionHandlers = {\r\n [SET_LANGUAGE]: (\r\n state: LanguageState,\r\n { languageCode }: SetLanguageAction\r\n ): LanguageState => ({ ...state, languageCode }),\r\n [LOAD_TRANSLATIONS]: (\r\n state: LanguageState,\r\n { translations }: LoadTranslationsAction\r\n ): LanguageState => ({ ...state, translations }),\r\n};\r\n\r\nexport const language = createActionHandler(initialState, actionHandlers);\r\n","import thunk from 'redux-thunk';\r\n\r\nconst middlewares = [thunk];\r\nexport default middlewares;","import { createStore, applyMiddleware, combineReducers } from 'redux';\r\nimport * as reducers from './reducers';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport { AppState } from './app/constants';\r\nimport { ConfigState } from './config/constants';\r\nimport { CaseFilesState } from './caseFiles/constants';\r\nimport { ClientCaseState } from './clientCase/constants';\r\nimport { LabTestState } from './labTest/constants';\r\nimport { ModalState } from './modal/constants';\r\nimport { ProcessAspectState } from './processAspect/constants';\r\nimport { ProcessDataState } from './processData/constants';\r\nimport { ProcessState } from './process/constants';\r\nimport { ProgressState } from './progress/constants';\r\nimport { RecommendedSeparatorState } from './recommendedSeparator/constants';\r\nimport { LanguageState } from './language/constants';\r\nimport middlewares from './middlewares';\r\n\r\nexport const combinedReducers = combineReducers({\r\n ...reducers\r\n});\r\n\r\n// Need to automate this\r\nexport interface StoreState {\r\n app: AppState;\r\n config: ConfigState;\r\n caseFiles: CaseFilesState;\r\n clientCase: ClientCaseState;\r\n labTest: LabTestState;\r\n modal: ModalState;\r\n process: ProcessState;\r\n processAspects: ProcessAspectState;\r\n processData: ProcessDataState;\r\n progress: ProgressState;\r\n recommendedSeparator: RecommendedSeparatorState;\r\n language: LanguageState;\r\n}\r\n\r\nexport default createStore(\r\n combinedReducers,\r\n // JSON.parse(localStorage.getItem('applicationState')!) || {},\r\n composeWithDevTools(\r\n applyMiddleware(...middlewares)\r\n )\r\n);\r\n","const trackingId = process.env.REACT_APP_GA_TRACKING_ID;\r\n\r\nexport function registerPageView() {\r\n if (trackingId && trackingId !== 'NONE' && gtag) {\r\n gtag('config', trackingId);\r\n }\r\n}\r\n\r\nexport function registerInteraction(eventCategory: string, eventLabel: string) {\r\n if (trackingId && trackingId !== 'NONE' && gtag) {\r\n gtag('event', 'Click', {\r\n send_to: trackingId,\r\n event_category: eventCategory,\r\n event_label: eventLabel\r\n });\r\n }\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { StoreState } from \"../store\";\r\nimport { replacePlaceholders } from \"../utilities/translations\";\r\n\r\nexport default (key: string, replacements?: {}): string => {\r\n let value = useSelector(\r\n (state: StoreState) => state.language.translations![key] || \"\"\r\n );\r\n\r\n if (replacements) {\r\n value = replacePlaceholders(value, replacements);\r\n }\r\n\r\n return value || `[${key}]`;\r\n};\r\n","export const LOAD_CONFIG = 'LOAD_CONFIG';\r\nexport const ADD_ATTACHMENT = 'ADD_ATTACHMENT';\r\nexport const ADD_LABTEST = 'ADD_LABTEST';\r\nexport const CLEAR_DATA = 'CLEAR_DATA';\r\nexport const CLEAR_SEPARATION_TASK = 'CLEAR_SEPARATION_TASK';\r\nexport const FETCH_SAVE_CLIENTCASE_ERROR = 'FETCH_SAVE_CLIENTCASE_ERROR';\r\nexport const FETCH_SAVE_CLIENTCASE_REQUEST = 'FETCH_SAVE_CLIENTCASE_REQUEST';\r\nexport const FETCH_SAVE_CLIENTCASE_SUCCESS = 'FETCH_SAVE_CLIENTCASE_SUCCESS';\r\nexport const FINISH_PROCESS = 'FINISH_PROCESS';\r\nexport const HIDE_LOADER = 'HIDE_LOADER';\r\nexport const MODAL_OPEN = 'MODAL_OPEN';\r\nexport const REMOVE_ATTACHMENT = 'REMOVE_ATTACHMENT';\r\nexport const REMOVE_LABTEST = 'REMOVE_LABTEST';\r\nexport const RESTORE_DATA = 'RESTORE_DATA';\r\nexport const SELECT_PROGRESS_STEP = 'SELECT_PROCESS_STEP';\r\nexport const SELECT_SEPARATION_TASK = 'SELECT_SEPARATION_TASK';\r\nexport const SET_LABTEST_SEPARATOR_SIZE = 'SET_LABTEST_SEPARATOR_SIZE';\r\nexport const SET_LABTEST_TYPE = 'TOGGLE_LABTEST_TYPE';\r\nexport const SHOW_LOADER = 'SHOW_LOADER';\r\nexport const TOGGLE_LABTEST = 'TOGGLE_LABTEST';\r\nexport const UPDATE_ATTACHMENT = 'UPDATE_ATTACHMENT';\r\nexport const UPDATE_CLIENTCASE_FIELD = 'UPDATE_CLIENTCASE_FIELD';\r\nexport const UPDATE_PROCESSASPECT_FIELD = 'UPDATE_PROCESSASPECT_FIELD';\r\nexport const UPDATE_PROCESSDATA_FIELD = 'UPDATE_PROCESSDATA_FIELD';\r\nexport const SET_LANGUAGE = 'SET_LANGUAGE';\r\nexport const LOAD_TRANSLATIONS = 'LOAD_TRANSLATIONS';\r\n","import { createBrowserHistory } from 'history';\r\nimport store, { StoreState } from './store';\r\nimport { MODAL_OPEN } from './store/actionTypes';\r\nimport { ModalAction, MODAL_TYPES } from './store/modal/constants';\r\n\r\nconst processRoutes = [\r\n '/separation-process',\r\n '/process-selection',\r\n '/lab-test'\r\n];\r\n\r\nconst containsRoute = (routes: string[], path: string): boolean => !!routes.find(route => path.includes(route));\r\n\r\nconst routerHistory = createBrowserHistory({\r\n getUserConfirmation: (targetPathName, allowRedirect) => {\r\n const isCurrentlyInsideProcessRoute = containsRoute(processRoutes, routerHistory.location.pathname);\r\n const isNavigatingAwayFromProcessRoute = !containsRoute(processRoutes, targetPathName);\r\n\r\n if (\r\n isCurrentlyInsideProcessRoute\r\n && isNavigatingAwayFromProcessRoute\r\n && (store.getState() as StoreState).app.contentIsDirty) {\r\n // Content is dirty and we're trying to navigate away\r\n store.dispatch({\r\n type: MODAL_OPEN,\r\n modalType: MODAL_TYPES.LEAVE_PAGE,\r\n modalArguments: targetPathName\r\n });\r\n\r\n allowRedirect(false);\r\n } else {\r\n allowRedirect(true);\r\n }\r\n }\r\n});\r\n\r\nexport default routerHistory;\r\n","import store, { StoreState } from '../store';\r\nimport { post, get, put, restDelete, postFile } from '../utilities/net';\r\n\r\nconst getApiUrl = () => (store.getState() as StoreState).config.apiUrl;\r\n// const getApiUrl = () => 'http://localhost:49247'\r\n\r\nexport default {\r\n getCase,\r\n getAlfaSep,\r\n createCase,\r\n saveCase,\r\n uploadCaseFile,\r\n deleteCaseFile,\r\n finalizeProcess\r\n};\r\n\r\nexport function getCase(caseId: string) {\r\n return get(`${getApiUrl()}/case/${caseId}`);\r\n}\r\n\r\nexport function getAlfaSep(particleDensity: number, fluidDensity: number, fluidViscosity: number, flowRate: number, Ae: number) {\r\n return get(`${getApiUrl()}/alfa/getAlfas?particleDensity=${particleDensity}&fluidDensity=${fluidDensity}&fluidViscosity=${fluidViscosity}&flowRate=${flowRate}&Ae=${Ae}`);\r\n}\r\n\r\nexport function createCase(payload: any) {\r\n return post(`${getApiUrl()}/case`, JSON.stringify(payload));\r\n}\r\n\r\nexport function finalizeProcess(caseId: string) {\r\n return post(`${getApiUrl()}/case/${caseId}/sendEmail`, null);\r\n}\r\n\r\nexport function saveCase(caseId: string, payload: any) {\r\n return put(`${getApiUrl()}/case/${caseId}`, JSON.stringify(payload));\r\n}\r\n\r\nexport function uploadCaseFile(caseId: string, file: File) {\r\n const formData = new FormData();\r\n formData.append('upfiles', file);\r\n\r\n return postFile(`${getApiUrl()}/case/${caseId}/upload`, formData)\r\n .then(({ Attachment: { Url, FileName, Id } }) => ({\r\n id: Id,\r\n url: Url,\r\n name: FileName\r\n }));\r\n}\r\n\r\nexport function deleteCaseFile(caseId: string, fileId: string) {\r\n return restDelete(`${getApiUrl()}/case/${caseId}/deleteAttachment`, JSON.stringify({\r\n FileId: fileId\r\n }));\r\n}\r\n","interface FetchSettings {\r\n method?: string;\r\n mode?: RequestMode;\r\n payload?: any;\r\n}\r\n\r\nexport function getDefaultFetchSettings({\r\n method = 'GET',\r\n payload = null\r\n}: FetchSettings = {}): RequestInit {\r\n return {\r\n method,\r\n headers: {\r\n 'content-type': 'application/json'\r\n },\r\n body: payload\r\n };\r\n}\r\n\r\nexport function handleHttpErrorCodes(response: Response): Promise {\r\n if (response.status >= 400) {\r\n return Promise.reject({\r\n message: response.text,\r\n response\r\n });\r\n }\r\n\r\n return Promise.resolve(response);\r\n}\r\n\r\nexport function get(url: string) {\r\n return fetch(url, getDefaultFetchSettings())\r\n .then(handleHttpErrorCodes)\r\n .then(response => response.json());\r\n}\r\n\r\nexport function post(url: string, payload: any): Promise {\r\n return fetch(url, getDefaultFetchSettings({ method: 'POST', payload }))\r\n .then(handleHttpErrorCodes)\r\n .then(response => response.json());\r\n}\r\n\r\nexport function postFile(url: string, payload: FormData): Promise {\r\n const fetchOptions = {\r\n method: 'POST',\r\n body: payload\r\n };\r\n\r\n return fetch(url, fetchOptions)\r\n .then(handleHttpErrorCodes)\r\n .then(response => response.json());\r\n}\r\n\r\nexport function put(url: string, payload: any): Promise {\r\n return fetch(url, getDefaultFetchSettings({ method: 'PUT', payload }))\r\n .then(handleHttpErrorCodes)\r\n .then(response => response.json());\r\n}\r\n\r\nexport function restDelete(url: string, payload: any): Promise {\r\n return fetch(url, getDefaultFetchSettings({ method: 'DELETE', payload }))\r\n .then(handleHttpErrorCodes)\r\n .then(response => response.json());\r\n}\r\n","import { Action } from 'redux';\r\n\r\nexport const defaultGravityDatapoints = [12, 24, 40, 60];\r\nexport const defaultGravityDatapointUnit = 'hours';\r\nexport const defaultSpinDatapoints = [2, 4, 8, 16];\r\nexport const defaultSpinDatapointUnit = 'min';\r\nexport const MAX_LABTESTS = 3;\r\n\r\nexport interface LabTest {\r\n colorId?: string;\r\n active?: boolean;\r\n dataPoints: DataPoint[];\r\n trendDataPoints?: DataPoint[];\r\n dateOfTesting: string;\r\n id?: number;\r\n name: string;\r\n unit: string;\r\n}\r\n\r\nexport interface DataPoint {\r\n time: number;\r\n centrateQuality: number;\r\n Q?: number;\r\n}\r\n\r\ntype LabTestType = 'spin' | 'gravity';\r\n\r\nexport interface LabTestState {\r\n availableColors: Array;\r\n Ae: number;\r\n datapointRange: Array;\r\n datapointRangeUnit: 'min' | 'hours';\r\n isSpinTest: boolean;\r\n reachedMaxTests: boolean;\r\n tests: LabTest[];\r\n testType: LabTestType;\r\n}\r\n\r\nexport interface AddLabTestAction extends Action {\r\n test: LabTest;\r\n}\r\n\r\nexport interface RemoveLabTestAction extends Action {\r\n test: LabTest;\r\n}\r\n\r\nexport interface ToggleLabTestAction extends Action {\r\n test: LabTest;\r\n}\r\n\r\nexport interface SetLabTestAction extends Action {\r\n testType: LabTestType;\r\n}\r\n\r\nexport interface SetLabTestSeparatorAction extends Action {\r\n Ae: number;\r\n tests: LabTest[];\r\n}\r\n","/* eslint-disable */\r\n// This is a modified, transpiled version of ml-matrix@5.1.1 to add support\r\n// for IE11.\r\n\r\n// Modifications in original source code:\r\n // abstractMatrix.js\r\n // if (superCtor === undefined) superCtor = Object; =>\r\n // if (superCtor === undefined) superCtor = Array;\r\n //\r\n\r\n // abstractMatrix.js\r\n // class Matrix extends superCtor { =>\r\n // class Matrix {\r\n\r\n// The MIT License (MIT)\r\n\r\n// Copyright (c) 2014 Michaël Zasso\r\n\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n\r\n// The above copyright notice and this permission notice shall be included in all\r\n// copies or substantial portions of the Software.\r\n\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n// SOFTWARE.\r\n\r\n'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\n/**\r\n * Computes the maximum of the given values\r\n * @param {Array} input\r\n * @return {number}\r\n */\r\nfunction max(input) {\r\n if (!Array.isArray(input)) {\r\n throw new Error('input must be an array');\r\n }\r\n\r\n if (input.length === 0) {\r\n throw new Error('input must not be empty');\r\n }\r\n\r\n var max = input[0];\r\n for (var i = 1; i < input.length; i++) {\r\n if (input[i] > max) max = input[i];\r\n }\r\n return max;\r\n}\r\n\r\n/**\r\n * Computes the minimum of the given values\r\n * @param {Array} input\r\n * @return {number}\r\n */\r\nfunction min(input) {\r\n if (!Array.isArray(input)) {\r\n throw new Error('input must be an array');\r\n }\r\n\r\n if (input.length === 0) {\r\n throw new Error('input must not be empty');\r\n }\r\n\r\n var min = input[0];\r\n for (var i = 1; i < input.length; i++) {\r\n if (input[i] < min) min = input[i];\r\n }\r\n return min;\r\n}\r\n\r\nfunction rescale(input) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n if (!Array.isArray(input)) {\r\n throw new TypeError('input must be an array');\r\n } else if (input.length === 0) {\r\n throw new TypeError('input must not be empty');\r\n }\r\n\r\n var output = void 0;\r\n if (options.output !== undefined) {\r\n if (!Array.isArray(options.output)) {\r\n throw new TypeError('output option must be an array if specified');\r\n }\r\n output = options.output;\r\n } else {\r\n output = new Array(input.length);\r\n }\r\n\r\n var currentMin = min(input);\r\n var currentMax = max(input);\r\n\r\n if (currentMin === currentMax) {\r\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\r\n }\r\n\r\n var _options$min = options.min,\r\n minValue = _options$min === undefined ? options.autoMinMax ? currentMin : 0 : _options$min,\r\n _options$max = options.max,\r\n maxValue = _options$max === undefined ? options.autoMinMax ? currentMax : 1 : _options$max;\r\n\r\n\r\n if (minValue >= maxValue) {\r\n throw new RangeError('min option must be smaller than max option');\r\n }\r\n\r\n var factor = (maxValue - minValue) / (currentMax - currentMin);\r\n for (var i = 0; i < input.length; i++) {\r\n output[i] = (input[i] - currentMin) * factor + minValue;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\r\n return typeof obj;\r\n} : function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n};\r\n\r\nvar classCallCheck = function (instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n};\r\n\r\nvar createClass = function () {\r\n function defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n return function (Constructor, protoProps, staticProps) {\r\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n };\r\n}();\r\n\r\nvar inherits = function (subClass, superClass) {\r\n if (typeof superClass !== \"function\" && superClass !== null) {\r\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\r\n }\r\n\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\r\n};\r\n\r\nvar possibleConstructorReturn = function (self, call) {\r\n if (!self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\r\n }\r\n\r\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\r\n};\r\n\r\n/**\r\n * @class LuDecomposition\r\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/LuDecomposition.cs\r\n * @param {Matrix} matrix\r\n */\r\n\r\nvar LuDecomposition$$1 = function () {\r\n function LuDecomposition$$1(matrix) {\r\n classCallCheck(this, LuDecomposition$$1);\r\n\r\n matrix = WrapperMatrix2D.checkMatrix(matrix);\r\n\r\n var lu = matrix.clone();\r\n var rows = lu.rows;\r\n var columns = lu.columns;\r\n var pivotVector = new Array(rows);\r\n var pivotSign = 1;\r\n var i, j, k, p, s, t, v;\r\n var LUcolj, kmax;\r\n\r\n for (i = 0; i < rows; i++) {\r\n pivotVector[i] = i;\r\n }\r\n\r\n LUcolj = new Array(rows);\r\n\r\n for (j = 0; j < columns; j++) {\r\n for (i = 0; i < rows; i++) {\r\n LUcolj[i] = lu.get(i, j);\r\n }\r\n\r\n for (i = 0; i < rows; i++) {\r\n kmax = Math.min(i, j);\r\n s = 0;\r\n for (k = 0; k < kmax; k++) {\r\n s += lu.get(i, k) * LUcolj[k];\r\n }\r\n LUcolj[i] -= s;\r\n lu.set(i, j, LUcolj[i]);\r\n }\r\n\r\n p = j;\r\n for (i = j + 1; i < rows; i++) {\r\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\r\n p = i;\r\n }\r\n }\r\n\r\n if (p !== j) {\r\n for (k = 0; k < columns; k++) {\r\n t = lu.get(p, k);\r\n lu.set(p, k, lu.get(j, k));\r\n lu.set(j, k, t);\r\n }\r\n\r\n v = pivotVector[p];\r\n pivotVector[p] = pivotVector[j];\r\n pivotVector[j] = v;\r\n\r\n pivotSign = -pivotSign;\r\n }\r\n\r\n if (j < rows && lu.get(j, j) !== 0) {\r\n for (i = j + 1; i < rows; i++) {\r\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\r\n }\r\n }\r\n }\r\n\r\n this.LU = lu;\r\n this.pivotVector = pivotVector;\r\n this.pivotSign = pivotSign;\r\n }\r\n\r\n /**\r\n *\r\n * @return {boolean}\r\n */\r\n\r\n\r\n createClass(LuDecomposition$$1, [{\r\n key: 'isSingular',\r\n value: function isSingular() {\r\n var data = this.LU;\r\n var col = data.columns;\r\n for (var j = 0; j < col; j++) {\r\n if (data[j][j] === 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n *\r\n * @param {Matrix} value\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'solve',\r\n value: function solve$$1(value) {\r\n value = Matrix.checkMatrix(value);\r\n\r\n var lu = this.LU;\r\n var rows = lu.rows;\r\n\r\n if (rows !== value.rows) {\r\n throw new Error('Invalid matrix dimensions');\r\n }\r\n if (this.isSingular()) {\r\n throw new Error('LU matrix is singular');\r\n }\r\n\r\n var count = value.columns;\r\n var X = value.subMatrixRow(this.pivotVector, 0, count - 1);\r\n var columns = lu.columns;\r\n var i, j, k;\r\n\r\n for (k = 0; k < columns; k++) {\r\n for (i = k + 1; i < columns; i++) {\r\n for (j = 0; j < count; j++) {\r\n X[i][j] -= X[k][j] * lu[i][k];\r\n }\r\n }\r\n }\r\n for (k = columns - 1; k >= 0; k--) {\r\n for (j = 0; j < count; j++) {\r\n X[k][j] /= lu[k][k];\r\n }\r\n for (i = 0; i < k; i++) {\r\n for (j = 0; j < count; j++) {\r\n X[i][j] -= X[k][j] * lu[i][k];\r\n }\r\n }\r\n }\r\n return X;\r\n }\r\n\r\n /**\r\n *\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'determinant',\r\n get: function get$$1() {\r\n var data = this.LU;\r\n if (!data.isSquare()) {\r\n throw new Error('Matrix must be square');\r\n }\r\n var determinant = this.pivotSign;\r\n var col = data.columns;\r\n for (var j = 0; j < col; j++) {\r\n determinant *= data[j][j];\r\n }\r\n return determinant;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'lowerTriangularMatrix',\r\n get: function get$$1() {\r\n var data = this.LU;\r\n var rows = data.rows;\r\n var columns = data.columns;\r\n var X = new Matrix(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n if (i > j) {\r\n X[i][j] = data[i][j];\r\n } else if (i === j) {\r\n X[i][j] = 1;\r\n } else {\r\n X[i][j] = 0;\r\n }\r\n }\r\n }\r\n return X;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'upperTriangularMatrix',\r\n get: function get$$1() {\r\n var data = this.LU;\r\n var rows = data.rows;\r\n var columns = data.columns;\r\n var X = new Matrix(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n if (i <= j) {\r\n X[i][j] = data[i][j];\r\n } else {\r\n X[i][j] = 0;\r\n }\r\n }\r\n }\r\n return X;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'pivotPermutationVector',\r\n get: function get$$1() {\r\n return this.pivotVector.slice();\r\n }\r\n }]);\r\n return LuDecomposition$$1;\r\n}();\r\n\r\nfunction hypotenuse(a, b) {\r\n var r = 0;\r\n if (Math.abs(a) > Math.abs(b)) {\r\n r = b / a;\r\n return Math.abs(a) * Math.sqrt(1 + r * r);\r\n }\r\n if (b !== 0) {\r\n r = a / b;\r\n return Math.abs(b) * Math.sqrt(1 + r * r);\r\n }\r\n return 0;\r\n}\r\n\r\nfunction getFilled2DArray(rows, columns, value) {\r\n var array = new Array(rows);\r\n for (var i = 0; i < rows; i++) {\r\n array[i] = new Array(columns);\r\n for (var j = 0; j < columns; j++) {\r\n array[i][j] = value;\r\n }\r\n }\r\n return array;\r\n}\r\n\r\n/**\r\n * @class SingularValueDecomposition\r\n * @see https://github.com/accord-net/framework/blob/development/Sources/Accord.Math/Decompositions/SingularValueDecomposition.cs\r\n * @param {Matrix} value\r\n * @param {object} [options]\r\n * @param {boolean} [options.computeLeftSingularVectors=true]\r\n * @param {boolean} [options.computeRightSingularVectors=true]\r\n * @param {boolean} [options.autoTranspose=false]\r\n */\r\n\r\nvar SingularValueDecomposition$$1 = function () {\r\n function SingularValueDecomposition$$1(value) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n classCallCheck(this, SingularValueDecomposition$$1);\r\n\r\n value = WrapperMatrix2D.checkMatrix(value);\r\n\r\n var m = value.rows;\r\n var n = value.columns;\r\n\r\n var _options$computeLeftS = options.computeLeftSingularVectors,\r\n computeLeftSingularVectors = _options$computeLeftS === undefined ? true : _options$computeLeftS,\r\n _options$computeRight = options.computeRightSingularVectors,\r\n computeRightSingularVectors = _options$computeRight === undefined ? true : _options$computeRight,\r\n _options$autoTranspos = options.autoTranspose,\r\n autoTranspose = _options$autoTranspos === undefined ? false : _options$autoTranspos;\r\n\r\n\r\n var wantu = Boolean(computeLeftSingularVectors);\r\n var wantv = Boolean(computeRightSingularVectors);\r\n\r\n var swapped = false;\r\n var a;\r\n if (m < n) {\r\n if (!autoTranspose) {\r\n a = value.clone();\r\n // eslint-disable-next-line no-console\r\n console.warn('Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose');\r\n } else {\r\n a = value.transpose();\r\n m = a.rows;\r\n n = a.columns;\r\n swapped = true;\r\n var aux = wantu;\r\n wantu = wantv;\r\n wantv = aux;\r\n }\r\n } else {\r\n a = value.clone();\r\n }\r\n\r\n var nu = Math.min(m, n);\r\n var ni = Math.min(m + 1, n);\r\n var s = new Array(ni);\r\n var U = getFilled2DArray(m, nu, 0);\r\n var V = getFilled2DArray(n, n, 0);\r\n\r\n var e = new Array(n);\r\n var work = new Array(m);\r\n\r\n var si = new Array(ni);\r\n for (var i = 0; i < ni; i++) {\r\n si[i] = i;\r\n }var nct = Math.min(m - 1, n);\r\n var nrt = Math.max(0, Math.min(n - 2, m));\r\n var mrc = Math.max(nct, nrt);\r\n\r\n for (var k = 0; k < mrc; k++) {\r\n if (k < nct) {\r\n s[k] = 0;\r\n for (var _i = k; _i < m; _i++) {\r\n s[k] = hypotenuse(s[k], a[_i][k]);\r\n }\r\n if (s[k] !== 0) {\r\n if (a[k][k] < 0) {\r\n s[k] = -s[k];\r\n }\r\n for (var _i2 = k; _i2 < m; _i2++) {\r\n a[_i2][k] /= s[k];\r\n }\r\n a[k][k] += 1;\r\n }\r\n s[k] = -s[k];\r\n }\r\n\r\n for (var j = k + 1; j < n; j++) {\r\n if (k < nct && s[k] !== 0) {\r\n var t = 0;\r\n for (var _i3 = k; _i3 < m; _i3++) {\r\n t += a[_i3][k] * a[_i3][j];\r\n }\r\n t = -t / a[k][k];\r\n for (var _i4 = k; _i4 < m; _i4++) {\r\n a[_i4][j] += t * a[_i4][k];\r\n }\r\n }\r\n e[j] = a[k][j];\r\n }\r\n\r\n if (wantu && k < nct) {\r\n for (var _i5 = k; _i5 < m; _i5++) {\r\n U[_i5][k] = a[_i5][k];\r\n }\r\n }\r\n\r\n if (k < nrt) {\r\n e[k] = 0;\r\n for (var _i6 = k + 1; _i6 < n; _i6++) {\r\n e[k] = hypotenuse(e[k], e[_i6]);\r\n }\r\n if (e[k] !== 0) {\r\n if (e[k + 1] < 0) {\r\n e[k] = 0 - e[k];\r\n }\r\n for (var _i7 = k + 1; _i7 < n; _i7++) {\r\n e[_i7] /= e[k];\r\n }\r\n e[k + 1] += 1;\r\n }\r\n e[k] = -e[k];\r\n if (k + 1 < m && e[k] !== 0) {\r\n for (var _i8 = k + 1; _i8 < m; _i8++) {\r\n work[_i8] = 0;\r\n }\r\n for (var _i9 = k + 1; _i9 < m; _i9++) {\r\n for (var _j = k + 1; _j < n; _j++) {\r\n work[_i9] += e[_j] * a[_i9][_j];\r\n }\r\n }\r\n for (var _j2 = k + 1; _j2 < n; _j2++) {\r\n var _t = -e[_j2] / e[k + 1];\r\n for (var _i10 = k + 1; _i10 < m; _i10++) {\r\n a[_i10][_j2] += _t * work[_i10];\r\n }\r\n }\r\n }\r\n if (wantv) {\r\n for (var _i11 = k + 1; _i11 < n; _i11++) {\r\n V[_i11][k] = e[_i11];\r\n }\r\n }\r\n }\r\n }\r\n\r\n var p = Math.min(n, m + 1);\r\n if (nct < n) {\r\n s[nct] = a[nct][nct];\r\n }\r\n if (m < p) {\r\n s[p - 1] = 0;\r\n }\r\n if (nrt + 1 < p) {\r\n e[nrt] = a[nrt][p - 1];\r\n }\r\n e[p - 1] = 0;\r\n\r\n if (wantu) {\r\n for (var _j3 = nct; _j3 < nu; _j3++) {\r\n for (var _i12 = 0; _i12 < m; _i12++) {\r\n U[_i12][_j3] = 0;\r\n }\r\n U[_j3][_j3] = 1;\r\n }\r\n for (var _k = nct - 1; _k >= 0; _k--) {\r\n if (s[_k] !== 0) {\r\n for (var _j4 = _k + 1; _j4 < nu; _j4++) {\r\n var _t2 = 0;\r\n for (var _i13 = _k; _i13 < m; _i13++) {\r\n _t2 += U[_i13][_k] * U[_i13][_j4];\r\n }\r\n _t2 = -_t2 / U[_k][_k];\r\n for (var _i14 = _k; _i14 < m; _i14++) {\r\n U[_i14][_j4] += _t2 * U[_i14][_k];\r\n }\r\n }\r\n for (var _i15 = _k; _i15 < m; _i15++) {\r\n U[_i15][_k] = -U[_i15][_k];\r\n }\r\n U[_k][_k] = 1 + U[_k][_k];\r\n for (var _i16 = 0; _i16 < _k - 1; _i16++) {\r\n U[_i16][_k] = 0;\r\n }\r\n } else {\r\n for (var _i17 = 0; _i17 < m; _i17++) {\r\n U[_i17][_k] = 0;\r\n }\r\n U[_k][_k] = 1;\r\n }\r\n }\r\n }\r\n\r\n if (wantv) {\r\n for (var _k2 = n - 1; _k2 >= 0; _k2--) {\r\n if (_k2 < nrt && e[_k2] !== 0) {\r\n for (var _j5 = _k2 + 1; _j5 < n; _j5++) {\r\n var _t3 = 0;\r\n for (var _i18 = _k2 + 1; _i18 < n; _i18++) {\r\n _t3 += V[_i18][_k2] * V[_i18][_j5];\r\n }\r\n _t3 = -_t3 / V[_k2 + 1][_k2];\r\n for (var _i19 = _k2 + 1; _i19 < n; _i19++) {\r\n V[_i19][_j5] += _t3 * V[_i19][_k2];\r\n }\r\n }\r\n }\r\n for (var _i20 = 0; _i20 < n; _i20++) {\r\n V[_i20][_k2] = 0;\r\n }\r\n V[_k2][_k2] = 1;\r\n }\r\n }\r\n\r\n var pp = p - 1;\r\n var eps = Number.EPSILON;\r\n while (p > 0) {\r\n var _k3 = void 0,\r\n kase = void 0;\r\n for (_k3 = p - 2; _k3 >= -1; _k3--) {\r\n if (_k3 === -1) {\r\n break;\r\n }\r\n var alpha = Number.MIN_VALUE + eps * Math.abs(s[_k3] + Math.abs(s[_k3 + 1]));\r\n if (Math.abs(e[_k3]) <= alpha || Number.isNaN(e[_k3])) {\r\n e[_k3] = 0;\r\n break;\r\n }\r\n }\r\n if (_k3 === p - 2) {\r\n kase = 4;\r\n } else {\r\n var ks = void 0;\r\n for (ks = p - 1; ks >= _k3; ks--) {\r\n if (ks === _k3) {\r\n break;\r\n }\r\n var _t4 = (ks !== p ? Math.abs(e[ks]) : 0) + (ks !== _k3 + 1 ? Math.abs(e[ks - 1]) : 0);\r\n if (Math.abs(s[ks]) <= eps * _t4) {\r\n s[ks] = 0;\r\n break;\r\n }\r\n }\r\n if (ks === _k3) {\r\n kase = 3;\r\n } else if (ks === p - 1) {\r\n kase = 1;\r\n } else {\r\n kase = 2;\r\n _k3 = ks;\r\n }\r\n }\r\n\r\n _k3++;\r\n\r\n switch (kase) {\r\n case 1:\r\n {\r\n var f = e[p - 2];\r\n e[p - 2] = 0;\r\n for (var _j6 = p - 2; _j6 >= _k3; _j6--) {\r\n var _t5 = hypotenuse(s[_j6], f);\r\n var cs = s[_j6] / _t5;\r\n var sn = f / _t5;\r\n s[_j6] = _t5;\r\n if (_j6 !== _k3) {\r\n f = -sn * e[_j6 - 1];\r\n e[_j6 - 1] = cs * e[_j6 - 1];\r\n }\r\n if (wantv) {\r\n for (var _i21 = 0; _i21 < n; _i21++) {\r\n _t5 = cs * V[_i21][_j6] + sn * V[_i21][p - 1];\r\n V[_i21][p - 1] = -sn * V[_i21][_j6] + cs * V[_i21][p - 1];\r\n V[_i21][_j6] = _t5;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 2:\r\n {\r\n var _f = e[_k3 - 1];\r\n e[_k3 - 1] = 0;\r\n for (var _j7 = _k3; _j7 < p; _j7++) {\r\n var _t6 = hypotenuse(s[_j7], _f);\r\n var _cs = s[_j7] / _t6;\r\n var _sn = _f / _t6;\r\n s[_j7] = _t6;\r\n _f = -_sn * e[_j7];\r\n e[_j7] = _cs * e[_j7];\r\n if (wantu) {\r\n for (var _i22 = 0; _i22 < m; _i22++) {\r\n _t6 = _cs * U[_i22][_j7] + _sn * U[_i22][_k3 - 1];\r\n U[_i22][_k3 - 1] = -_sn * U[_i22][_j7] + _cs * U[_i22][_k3 - 1];\r\n U[_i22][_j7] = _t6;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 3:\r\n {\r\n var scale = Math.max(Math.abs(s[p - 1]), Math.abs(s[p - 2]), Math.abs(e[p - 2]), Math.abs(s[_k3]), Math.abs(e[_k3]));\r\n var sp = s[p - 1] / scale;\r\n var spm1 = s[p - 2] / scale;\r\n var epm1 = e[p - 2] / scale;\r\n var sk = s[_k3] / scale;\r\n var ek = e[_k3] / scale;\r\n var b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\r\n var c = sp * epm1 * (sp * epm1);\r\n var shift = 0;\r\n if (b !== 0 || c !== 0) {\r\n if (b < 0) {\r\n shift = 0 - Math.sqrt(b * b + c);\r\n } else {\r\n shift = Math.sqrt(b * b + c);\r\n }\r\n shift = c / (b + shift);\r\n }\r\n var _f2 = (sk + sp) * (sk - sp) + shift;\r\n var g = sk * ek;\r\n for (var _j8 = _k3; _j8 < p - 1; _j8++) {\r\n var _t7 = hypotenuse(_f2, g);\r\n if (_t7 === 0) _t7 = Number.MIN_VALUE;\r\n var _cs2 = _f2 / _t7;\r\n var _sn2 = g / _t7;\r\n if (_j8 !== _k3) {\r\n e[_j8 - 1] = _t7;\r\n }\r\n _f2 = _cs2 * s[_j8] + _sn2 * e[_j8];\r\n e[_j8] = _cs2 * e[_j8] - _sn2 * s[_j8];\r\n g = _sn2 * s[_j8 + 1];\r\n s[_j8 + 1] = _cs2 * s[_j8 + 1];\r\n if (wantv) {\r\n for (var _i23 = 0; _i23 < n; _i23++) {\r\n _t7 = _cs2 * V[_i23][_j8] + _sn2 * V[_i23][_j8 + 1];\r\n V[_i23][_j8 + 1] = -_sn2 * V[_i23][_j8] + _cs2 * V[_i23][_j8 + 1];\r\n V[_i23][_j8] = _t7;\r\n }\r\n }\r\n _t7 = hypotenuse(_f2, g);\r\n if (_t7 === 0) _t7 = Number.MIN_VALUE;\r\n _cs2 = _f2 / _t7;\r\n _sn2 = g / _t7;\r\n s[_j8] = _t7;\r\n _f2 = _cs2 * e[_j8] + _sn2 * s[_j8 + 1];\r\n s[_j8 + 1] = -_sn2 * e[_j8] + _cs2 * s[_j8 + 1];\r\n g = _sn2 * e[_j8 + 1];\r\n e[_j8 + 1] = _cs2 * e[_j8 + 1];\r\n if (wantu && _j8 < m - 1) {\r\n for (var _i24 = 0; _i24 < m; _i24++) {\r\n _t7 = _cs2 * U[_i24][_j8] + _sn2 * U[_i24][_j8 + 1];\r\n U[_i24][_j8 + 1] = -_sn2 * U[_i24][_j8] + _cs2 * U[_i24][_j8 + 1];\r\n U[_i24][_j8] = _t7;\r\n }\r\n }\r\n }\r\n e[p - 2] = _f2;\r\n break;\r\n }\r\n case 4:\r\n {\r\n if (s[_k3] <= 0) {\r\n s[_k3] = s[_k3] < 0 ? -s[_k3] : 0;\r\n if (wantv) {\r\n for (var _i25 = 0; _i25 <= pp; _i25++) {\r\n V[_i25][_k3] = -V[_i25][_k3];\r\n }\r\n }\r\n }\r\n while (_k3 < pp) {\r\n if (s[_k3] >= s[_k3 + 1]) {\r\n break;\r\n }\r\n var _t8 = s[_k3];\r\n s[_k3] = s[_k3 + 1];\r\n s[_k3 + 1] = _t8;\r\n if (wantv && _k3 < n - 1) {\r\n for (var _i26 = 0; _i26 < n; _i26++) {\r\n _t8 = V[_i26][_k3 + 1];\r\n V[_i26][_k3 + 1] = V[_i26][_k3];\r\n V[_i26][_k3] = _t8;\r\n }\r\n }\r\n if (wantu && _k3 < m - 1) {\r\n for (var _i27 = 0; _i27 < m; _i27++) {\r\n _t8 = U[_i27][_k3 + 1];\r\n U[_i27][_k3 + 1] = U[_i27][_k3];\r\n U[_i27][_k3] = _t8;\r\n }\r\n }\r\n _k3++;\r\n }\r\n p--;\r\n break;\r\n }\r\n // no default\r\n }\r\n }\r\n\r\n if (swapped) {\r\n var tmp = V;\r\n V = U;\r\n U = tmp;\r\n }\r\n\r\n this.m = m;\r\n this.n = n;\r\n this.s = s;\r\n this.U = U;\r\n this.V = V;\r\n }\r\n\r\n /**\r\n * Solve a problem of least square (Ax=b) by using the SVD. Useful when A is singular. When A is not singular, it would be better to use qr.solve(value).\r\n * Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use :\r\n * var svd = SingularValueDecomposition(A);\r\n * var x = svd.solve(b);\r\n * @param {Matrix} value - Matrix 1D which is the vector b (in the equation Ax = b)\r\n * @return {Matrix} - The vector x\r\n */\r\n\r\n\r\n createClass(SingularValueDecomposition$$1, [{\r\n key: 'solve',\r\n value: function solve$$1(value) {\r\n var Y = value;\r\n var e = this.threshold;\r\n var scols = this.s.length;\r\n var Ls = Matrix.zeros(scols, scols);\r\n\r\n for (var i = 0; i < scols; i++) {\r\n if (Math.abs(this.s[i]) <= e) {\r\n Ls[i][i] = 0;\r\n } else {\r\n Ls[i][i] = 1 / this.s[i];\r\n }\r\n }\r\n\r\n var U = this.U;\r\n var V = this.rightSingularVectors;\r\n\r\n var VL = V.mmul(Ls);\r\n var vrows = V.rows;\r\n var urows = U.length;\r\n var VLU = Matrix.zeros(vrows, urows);\r\n\r\n for (var _i28 = 0; _i28 < vrows; _i28++) {\r\n for (var j = 0; j < urows; j++) {\r\n var sum = 0;\r\n for (var k = 0; k < scols; k++) {\r\n sum += VL[_i28][k] * U[j][k];\r\n }\r\n VLU[_i28][j] = sum;\r\n }\r\n }\r\n\r\n return VLU.mmul(Y);\r\n }\r\n\r\n /**\r\n *\r\n * @param {Array} value\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'solveForDiagonal',\r\n value: function solveForDiagonal(value) {\r\n return this.solve(Matrix.diag(value));\r\n }\r\n\r\n /**\r\n * Get the inverse of the matrix. We compute the inverse of a matrix using SVD when this matrix is singular or ill-conditioned. Example :\r\n * var svd = SingularValueDecomposition(A);\r\n * var inverseA = svd.inverse();\r\n * @return {Matrix} - The approximation of the inverse of the matrix\r\n */\r\n\r\n }, {\r\n key: 'inverse',\r\n value: function inverse$$1() {\r\n var V = this.V;\r\n var e = this.threshold;\r\n var vrows = V.length;\r\n var vcols = V[0].length;\r\n var X = new Matrix(vrows, this.s.length);\r\n\r\n for (var i = 0; i < vrows; i++) {\r\n for (var j = 0; j < vcols; j++) {\r\n if (Math.abs(this.s[j]) > e) {\r\n X[i][j] = V[i][j] / this.s[j];\r\n } else {\r\n X[i][j] = 0;\r\n }\r\n }\r\n }\r\n\r\n var U = this.U;\r\n\r\n var urows = U.length;\r\n var ucols = U[0].length;\r\n var Y = new Matrix(vrows, urows);\r\n\r\n for (var _i29 = 0; _i29 < vrows; _i29++) {\r\n for (var _j9 = 0; _j9 < urows; _j9++) {\r\n var sum = 0;\r\n for (var k = 0; k < ucols; k++) {\r\n sum += X[_i29][k] * U[_j9][k];\r\n }\r\n Y[_i29][_j9] = sum;\r\n }\r\n }\r\n\r\n return Y;\r\n }\r\n\r\n /**\r\n *\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'condition',\r\n get: function get$$1() {\r\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\r\n }\r\n\r\n /**\r\n *\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'norm2',\r\n get: function get$$1() {\r\n return this.s[0];\r\n }\r\n\r\n /**\r\n *\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'rank',\r\n get: function get$$1() {\r\n var tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\r\n var r = 0;\r\n var s = this.s;\r\n for (var i = 0, ii = s.length; i < ii; i++) {\r\n if (s[i] > tol) {\r\n r++;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'diagonal',\r\n get: function get$$1() {\r\n return this.s;\r\n }\r\n\r\n /**\r\n *\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'threshold',\r\n get: function get$$1() {\r\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'leftSingularVectors',\r\n get: function get$$1() {\r\n if (!Matrix.isMatrix(this.U)) {\r\n this.U = new Matrix(this.U);\r\n }\r\n return this.U;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'rightSingularVectors',\r\n get: function get$$1() {\r\n if (!Matrix.isMatrix(this.V)) {\r\n this.V = new Matrix(this.V);\r\n }\r\n return this.V;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'diagonalMatrix',\r\n get: function get$$1() {\r\n return Matrix.diag(this.s);\r\n }\r\n }]);\r\n return SingularValueDecomposition$$1;\r\n}();\r\n\r\n/**\r\n * @private\r\n * Check that a row index is not out of bounds\r\n * @param {Matrix} matrix\r\n * @param {number} index\r\n * @param {boolean} [outer]\r\n */\r\nfunction checkRowIndex(matrix, index, outer) {\r\n var max = outer ? matrix.rows : matrix.rows - 1;\r\n if (index < 0 || index > max) {\r\n throw new RangeError('Row index out of range');\r\n }\r\n}\r\n\r\n/**\r\n * @private\r\n * Check that a column index is not out of bounds\r\n * @param {Matrix} matrix\r\n * @param {number} index\r\n * @param {boolean} [outer]\r\n */\r\nfunction checkColumnIndex(matrix, index, outer) {\r\n var max = outer ? matrix.columns : matrix.columns - 1;\r\n if (index < 0 || index > max) {\r\n throw new RangeError('Column index out of range');\r\n }\r\n}\r\n\r\n/**\r\n * @private\r\n * Check that the provided vector is an array with the right length\r\n * @param {Matrix} matrix\r\n * @param {Array|Matrix} vector\r\n * @return {Array}\r\n * @throws {RangeError}\r\n */\r\nfunction checkRowVector(matrix, vector) {\r\n if (vector.to1DArray) {\r\n vector = vector.to1DArray();\r\n }\r\n if (vector.length !== matrix.columns) {\r\n throw new RangeError('vector size must be the same as the number of columns');\r\n }\r\n return vector;\r\n}\r\n\r\n/**\r\n * @private\r\n * Check that the provided vector is an array with the right length\r\n * @param {Matrix} matrix\r\n * @param {Array|Matrix} vector\r\n * @return {Array}\r\n * @throws {RangeError}\r\n */\r\nfunction checkColumnVector(matrix, vector) {\r\n if (vector.to1DArray) {\r\n vector = vector.to1DArray();\r\n }\r\n if (vector.length !== matrix.rows) {\r\n throw new RangeError('vector size must be the same as the number of rows');\r\n }\r\n return vector;\r\n}\r\n\r\nfunction checkIndices(matrix, rowIndices, columnIndices) {\r\n return {\r\n row: checkRowIndices(matrix, rowIndices),\r\n column: checkColumnIndices(matrix, columnIndices)\r\n };\r\n}\r\n\r\nfunction checkRowIndices(matrix, rowIndices) {\r\n if ((typeof rowIndices === 'undefined' ? 'undefined' : _typeof(rowIndices)) !== 'object') {\r\n throw new TypeError('unexpected type for row indices');\r\n }\r\n\r\n var rowOut = rowIndices.some(function (r) {\r\n return r < 0 || r >= matrix.rows;\r\n });\r\n\r\n if (rowOut) {\r\n throw new RangeError('row indices are out of range');\r\n }\r\n\r\n if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\r\n\r\n return rowIndices;\r\n}\r\n\r\nfunction checkColumnIndices(matrix, columnIndices) {\r\n if ((typeof columnIndices === 'undefined' ? 'undefined' : _typeof(columnIndices)) !== 'object') {\r\n throw new TypeError('unexpected type for column indices');\r\n }\r\n\r\n var columnOut = columnIndices.some(function (c) {\r\n return c < 0 || c >= matrix.columns;\r\n });\r\n\r\n if (columnOut) {\r\n throw new RangeError('column indices are out of range');\r\n }\r\n if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\r\n\r\n return columnIndices;\r\n}\r\n\r\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\r\n if (arguments.length !== 5) {\r\n throw new RangeError('expected 4 arguments');\r\n }\r\n checkNumber('startRow', startRow);\r\n checkNumber('endRow', endRow);\r\n checkNumber('startColumn', startColumn);\r\n checkNumber('endColumn', endColumn);\r\n if (startRow > endRow || startColumn > endColumn || startRow < 0 || startRow >= matrix.rows || endRow < 0 || endRow >= matrix.rows || startColumn < 0 || startColumn >= matrix.columns || endColumn < 0 || endColumn >= matrix.columns) {\r\n throw new RangeError('Submatrix indices are out of range');\r\n }\r\n}\r\n\r\nfunction sumByRow(matrix) {\r\n var sum = Matrix.zeros(matrix.rows, 1);\r\n for (var i = 0; i < matrix.rows; ++i) {\r\n for (var j = 0; j < matrix.columns; ++j) {\r\n sum.set(i, 0, sum.get(i, 0) + matrix.get(i, j));\r\n }\r\n }\r\n return sum;\r\n}\r\n\r\nfunction sumByColumn(matrix) {\r\n var sum = Matrix.zeros(1, matrix.columns);\r\n for (var i = 0; i < matrix.rows; ++i) {\r\n for (var j = 0; j < matrix.columns; ++j) {\r\n sum.set(0, j, sum.get(0, j) + matrix.get(i, j));\r\n }\r\n }\r\n return sum;\r\n}\r\n\r\nfunction sumAll(matrix) {\r\n var v = 0;\r\n for (var i = 0; i < matrix.rows; i++) {\r\n for (var j = 0; j < matrix.columns; j++) {\r\n v += matrix.get(i, j);\r\n }\r\n }\r\n return v;\r\n}\r\n\r\nfunction checkNumber(name, value) {\r\n if (typeof value !== 'number') {\r\n throw new TypeError(name + ' must be a number');\r\n }\r\n}\r\n\r\nvar BaseView = function (_AbstractMatrix) {\r\n inherits(BaseView, _AbstractMatrix);\r\n\r\n function BaseView(matrix, rows, columns) {\r\n classCallCheck(this, BaseView);\r\n\r\n var _this = possibleConstructorReturn(this, (BaseView.__proto__ || Object.getPrototypeOf(BaseView)).call(this));\r\n\r\n _this.matrix = matrix;\r\n _this.rows = rows;\r\n _this.columns = columns;\r\n return _this;\r\n }\r\n\r\n createClass(BaseView, null, [{\r\n key: Symbol.species,\r\n get: function get$$1() {\r\n return Matrix;\r\n }\r\n }]);\r\n return BaseView;\r\n}(AbstractMatrix());\r\n\r\nvar MatrixTransposeView = function (_BaseView) {\r\n inherits(MatrixTransposeView, _BaseView);\r\n\r\n function MatrixTransposeView(matrix) {\r\n classCallCheck(this, MatrixTransposeView);\r\n return possibleConstructorReturn(this, (MatrixTransposeView.__proto__ || Object.getPrototypeOf(MatrixTransposeView)).call(this, matrix, matrix.columns, matrix.rows));\r\n }\r\n\r\n createClass(MatrixTransposeView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(columnIndex, rowIndex, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(columnIndex, rowIndex);\r\n }\r\n }]);\r\n return MatrixTransposeView;\r\n}(BaseView);\r\n\r\nvar MatrixRowView = function (_BaseView) {\r\n inherits(MatrixRowView, _BaseView);\r\n\r\n function MatrixRowView(matrix, row) {\r\n classCallCheck(this, MatrixRowView);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixRowView.__proto__ || Object.getPrototypeOf(MatrixRowView)).call(this, matrix, 1, matrix.columns));\r\n\r\n _this.row = row;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixRowView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(this.row, columnIndex, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(this.row, columnIndex);\r\n }\r\n }]);\r\n return MatrixRowView;\r\n}(BaseView);\r\n\r\nvar MatrixSubView = function (_BaseView) {\r\n inherits(MatrixSubView, _BaseView);\r\n\r\n function MatrixSubView(matrix, startRow, endRow, startColumn, endColumn) {\r\n classCallCheck(this, MatrixSubView);\r\n\r\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixSubView.__proto__ || Object.getPrototypeOf(MatrixSubView)).call(this, matrix, endRow - startRow + 1, endColumn - startColumn + 1));\r\n\r\n _this.startRow = startRow;\r\n _this.startColumn = startColumn;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixSubView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(this.startRow + rowIndex, this.startColumn + columnIndex, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(this.startRow + rowIndex, this.startColumn + columnIndex);\r\n }\r\n }]);\r\n return MatrixSubView;\r\n}(BaseView);\r\n\r\nvar MatrixSelectionView = function (_BaseView) {\r\n inherits(MatrixSelectionView, _BaseView);\r\n\r\n function MatrixSelectionView(matrix, rowIndices, columnIndices) {\r\n classCallCheck(this, MatrixSelectionView);\r\n\r\n var indices = checkIndices(matrix, rowIndices, columnIndices);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixSelectionView.__proto__ || Object.getPrototypeOf(MatrixSelectionView)).call(this, matrix, indices.row.length, indices.column.length));\r\n\r\n _this.rowIndices = indices.row;\r\n _this.columnIndices = indices.column;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixSelectionView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(this.rowIndices[rowIndex], this.columnIndices[columnIndex], value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(this.rowIndices[rowIndex], this.columnIndices[columnIndex]);\r\n }\r\n }]);\r\n return MatrixSelectionView;\r\n}(BaseView);\r\n\r\nvar MatrixRowSelectionView = function (_BaseView) {\r\n inherits(MatrixRowSelectionView, _BaseView);\r\n\r\n function MatrixRowSelectionView(matrix, rowIndices) {\r\n classCallCheck(this, MatrixRowSelectionView);\r\n\r\n rowIndices = checkRowIndices(matrix, rowIndices);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixRowSelectionView.__proto__ || Object.getPrototypeOf(MatrixRowSelectionView)).call(this, matrix, rowIndices.length, matrix.columns));\r\n\r\n _this.rowIndices = rowIndices;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixRowSelectionView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\r\n }\r\n }]);\r\n return MatrixRowSelectionView;\r\n}(BaseView);\r\n\r\nvar MatrixColumnSelectionView = function (_BaseView) {\r\n inherits(MatrixColumnSelectionView, _BaseView);\r\n\r\n function MatrixColumnSelectionView(matrix, columnIndices) {\r\n classCallCheck(this, MatrixColumnSelectionView);\r\n\r\n columnIndices = checkColumnIndices(matrix, columnIndices);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixColumnSelectionView.__proto__ || Object.getPrototypeOf(MatrixColumnSelectionView)).call(this, matrix, matrix.rows, columnIndices.length));\r\n\r\n _this.columnIndices = columnIndices;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixColumnSelectionView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\r\n }\r\n }]);\r\n return MatrixColumnSelectionView;\r\n}(BaseView);\r\n\r\nvar MatrixColumnView = function (_BaseView) {\r\n inherits(MatrixColumnView, _BaseView);\r\n\r\n function MatrixColumnView(matrix, column) {\r\n classCallCheck(this, MatrixColumnView);\r\n\r\n var _this = possibleConstructorReturn(this, (MatrixColumnView.__proto__ || Object.getPrototypeOf(MatrixColumnView)).call(this, matrix, matrix.rows, 1));\r\n\r\n _this.column = column;\r\n return _this;\r\n }\r\n\r\n createClass(MatrixColumnView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(rowIndex, this.column, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex) {\r\n return this.matrix.get(rowIndex, this.column);\r\n }\r\n }]);\r\n return MatrixColumnView;\r\n}(BaseView);\r\n\r\nvar MatrixFlipRowView = function (_BaseView) {\r\n inherits(MatrixFlipRowView, _BaseView);\r\n\r\n function MatrixFlipRowView(matrix) {\r\n classCallCheck(this, MatrixFlipRowView);\r\n return possibleConstructorReturn(this, (MatrixFlipRowView.__proto__ || Object.getPrototypeOf(MatrixFlipRowView)).call(this, matrix, matrix.rows, matrix.columns));\r\n }\r\n\r\n createClass(MatrixFlipRowView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\r\n }\r\n }]);\r\n return MatrixFlipRowView;\r\n}(BaseView);\r\n\r\nvar MatrixFlipColumnView = function (_BaseView) {\r\n inherits(MatrixFlipColumnView, _BaseView);\r\n\r\n function MatrixFlipColumnView(matrix) {\r\n classCallCheck(this, MatrixFlipColumnView);\r\n return possibleConstructorReturn(this, (MatrixFlipColumnView.__proto__ || Object.getPrototypeOf(MatrixFlipColumnView)).call(this, matrix, matrix.rows, matrix.columns));\r\n }\r\n\r\n createClass(MatrixFlipColumnView, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\r\n }\r\n }]);\r\n return MatrixFlipColumnView;\r\n}(BaseView);\r\n\r\nfunction AbstractMatrix(superCtor) {\r\n if (superCtor === undefined) superCtor = Array;\r\n\r\n /**\r\n * Real matrix\r\n * @class Matrix\r\n * @param {number|Array|Matrix} nRows - Number of rows of the new matrix,\r\n * 2D array containing the data or Matrix instance to clone\r\n * @param {number} [nColumns] - Number of columns of the new matrix\r\n */\r\n\r\n var Matrix = function () {\r\n function Matrix() {\r\n classCallCheck(this, Matrix);\r\n }\r\n\r\n createClass(Matrix, [{\r\n key: 'apply',\r\n\r\n\r\n /**\r\n * Applies a callback for each element of the matrix. The function is called in the matrix (this) context.\r\n * @param {function} callback - Function that will be called with two parameters : i (row) and j (column)\r\n * @return {Matrix} this\r\n */\r\n value: function apply(callback) {\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('callback must be a function');\r\n }\r\n var ii = this.rows;\r\n var jj = this.columns;\r\n for (var i = 0; i < ii; i++) {\r\n for (var j = 0; j < jj; j++) {\r\n callback.call(this, i, j);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a new 1D array filled row by row with the matrix values\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'to1DArray',\r\n value: function to1DArray() {\r\n var array = new Array(this.size);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n array[i * this.columns + j] = this.get(i, j);\r\n }\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * Returns a 2D array containing a copy of the data\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'to2DArray',\r\n value: function to2DArray() {\r\n var copy = new Array(this.rows);\r\n for (var i = 0; i < this.rows; i++) {\r\n copy[i] = new Array(this.columns);\r\n for (var j = 0; j < this.columns; j++) {\r\n copy[i][j] = this.get(i, j);\r\n }\r\n }\r\n return copy;\r\n }\r\n\r\n /**\r\n * @return {boolean} true if the matrix has one row\r\n */\r\n\r\n }, {\r\n key: 'isRowVector',\r\n value: function isRowVector() {\r\n return this.rows === 1;\r\n }\r\n\r\n /**\r\n * @return {boolean} true if the matrix has one column\r\n */\r\n\r\n }, {\r\n key: 'isColumnVector',\r\n value: function isColumnVector() {\r\n return this.columns === 1;\r\n }\r\n\r\n /**\r\n * @return {boolean} true if the matrix has one row or one column\r\n */\r\n\r\n }, {\r\n key: 'isVector',\r\n value: function isVector() {\r\n return this.rows === 1 || this.columns === 1;\r\n }\r\n\r\n /**\r\n * @return {boolean} true if the matrix has the same number of rows and columns\r\n */\r\n\r\n }, {\r\n key: 'isSquare',\r\n value: function isSquare() {\r\n return this.rows === this.columns;\r\n }\r\n\r\n /**\r\n * @return {boolean} true if the matrix is square and has the same values on both sides of the diagonal\r\n */\r\n\r\n }, {\r\n key: 'isSymmetric',\r\n value: function isSymmetric() {\r\n if (this.isSquare()) {\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j <= i; j++) {\r\n if (this.get(i, j) !== this.get(j, i)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets a given element of the matrix. mat.set(3,4,1) is equivalent to mat[3][4]=1\r\n * @abstract\r\n * @param {number} rowIndex - Index of the row\r\n * @param {number} columnIndex - Index of the column\r\n * @param {number} value - The new value for the element\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n // eslint-disable-line no-unused-vars\r\n throw new Error('set method is unimplemented');\r\n }\r\n\r\n /**\r\n * Returns the given element of the matrix. mat.get(3,4) is equivalent to matrix[3][4]\r\n * @abstract\r\n * @param {number} rowIndex - Index of the row\r\n * @param {number} columnIndex - Index of the column\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n // eslint-disable-line no-unused-vars\r\n throw new Error('get method is unimplemented');\r\n }\r\n\r\n /**\r\n * Creates a new matrix that is a repetition of the current matrix. New matrix has rowRep times the number of\r\n * rows of the matrix, and colRep times the number of columns of the matrix\r\n * @param {number} rowRep - Number of times the rows should be repeated\r\n * @param {number} colRep - Number of times the columns should be re\r\n * @return {Matrix}\r\n * @example\r\n * var matrix = new Matrix([[1,2]]);\r\n * matrix.repeat(2); // [[1,2],[1,2]]\r\n */\r\n\r\n }, {\r\n key: 'repeat',\r\n value: function repeat(rowRep, colRep) {\r\n rowRep = rowRep || 1;\r\n colRep = colRep || 1;\r\n var matrix = new this.constructor[Symbol.species](this.rows * rowRep, this.columns * colRep);\r\n for (var i = 0; i < rowRep; i++) {\r\n for (var j = 0; j < colRep; j++) {\r\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n /**\r\n * Fills the matrix with a given value. All elements will be set to this value.\r\n * @param {number} value - New value\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'fill',\r\n value: function fill(value) {\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, value);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Negates the matrix. All elements will be multiplied by (-1)\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'neg',\r\n value: function neg() {\r\n return this.mulS(-1);\r\n }\r\n\r\n /**\r\n * Returns a new array from the given row index\r\n * @param {number} index - Row index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'getRow',\r\n value: function getRow(index) {\r\n checkRowIndex(this, index);\r\n var row = new Array(this.columns);\r\n for (var i = 0; i < this.columns; i++) {\r\n row[i] = this.get(index, i);\r\n }\r\n return row;\r\n }\r\n\r\n /**\r\n * Returns a new row vector from the given row index\r\n * @param {number} index - Row index\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'getRowVector',\r\n value: function getRowVector(index) {\r\n return this.constructor.rowVector(this.getRow(index));\r\n }\r\n\r\n /**\r\n * Sets a row at the given index\r\n * @param {number} index - Row index\r\n * @param {Array|Matrix} array - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'setRow',\r\n value: function setRow(index, array) {\r\n checkRowIndex(this, index);\r\n array = checkRowVector(this, array);\r\n for (var i = 0; i < this.columns; i++) {\r\n this.set(index, i, array[i]);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Swaps two rows\r\n * @param {number} row1 - First row index\r\n * @param {number} row2 - Second row index\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'swapRows',\r\n value: function swapRows(row1, row2) {\r\n checkRowIndex(this, row1);\r\n checkRowIndex(this, row2);\r\n for (var i = 0; i < this.columns; i++) {\r\n var temp = this.get(row1, i);\r\n this.set(row1, i, this.get(row2, i));\r\n this.set(row2, i, temp);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a new array from the given column index\r\n * @param {number} index - Column index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'getColumn',\r\n value: function getColumn(index) {\r\n checkColumnIndex(this, index);\r\n var column = new Array(this.rows);\r\n for (var i = 0; i < this.rows; i++) {\r\n column[i] = this.get(i, index);\r\n }\r\n return column;\r\n }\r\n\r\n /**\r\n * Returns a new column vector from the given column index\r\n * @param {number} index - Column index\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'getColumnVector',\r\n value: function getColumnVector(index) {\r\n return this.constructor.columnVector(this.getColumn(index));\r\n }\r\n\r\n /**\r\n * Sets a column at the given index\r\n * @param {number} index - Column index\r\n * @param {Array|Matrix} array - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'setColumn',\r\n value: function setColumn(index, array) {\r\n checkColumnIndex(this, index);\r\n array = checkColumnVector(this, array);\r\n for (var i = 0; i < this.rows; i++) {\r\n this.set(i, index, array[i]);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Swaps two columns\r\n * @param {number} column1 - First column index\r\n * @param {number} column2 - Second column index\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'swapColumns',\r\n value: function swapColumns(column1, column2) {\r\n checkColumnIndex(this, column1);\r\n checkColumnIndex(this, column2);\r\n for (var i = 0; i < this.rows; i++) {\r\n var temp = this.get(i, column1);\r\n this.set(i, column1, this.get(i, column2));\r\n this.set(i, column2, temp);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds the values of a vector to each row\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'addRowVector',\r\n value: function addRowVector(vector) {\r\n vector = checkRowVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) + vector[j]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Subtracts the values of a vector from each row\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'subRowVector',\r\n value: function subRowVector(vector) {\r\n vector = checkRowVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) - vector[j]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the values of a vector with each row\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'mulRowVector',\r\n value: function mulRowVector(vector) {\r\n vector = checkRowVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) * vector[j]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Divides the values of each row by those of a vector\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'divRowVector',\r\n value: function divRowVector(vector) {\r\n vector = checkRowVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) / vector[j]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds the values of a vector to each column\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'addColumnVector',\r\n value: function addColumnVector(vector) {\r\n vector = checkColumnVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) + vector[i]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Subtracts the values of a vector from each column\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'subColumnVector',\r\n value: function subColumnVector(vector) {\r\n vector = checkColumnVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) - vector[i]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the values of a vector with each column\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'mulColumnVector',\r\n value: function mulColumnVector(vector) {\r\n vector = checkColumnVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) * vector[i]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Divides the values of each column by those of a vector\r\n * @param {Array|Matrix} vector - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'divColumnVector',\r\n value: function divColumnVector(vector) {\r\n vector = checkColumnVector(this, vector);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n this.set(i, j, this.get(i, j) / vector[i]);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the values of a row with a scalar\r\n * @param {number} index - Row index\r\n * @param {number} value\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'mulRow',\r\n value: function mulRow(index, value) {\r\n checkRowIndex(this, index);\r\n for (var i = 0; i < this.columns; i++) {\r\n this.set(index, i, this.get(index, i) * value);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the values of a column with a scalar\r\n * @param {number} index - Column index\r\n * @param {number} value\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'mulColumn',\r\n value: function mulColumn(index, value) {\r\n checkColumnIndex(this, index);\r\n for (var i = 0; i < this.rows; i++) {\r\n this.set(i, index, this.get(i, index) * value);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns the maximum value of the matrix\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'max',\r\n value: function max() {\r\n var v = this.get(0, 0);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n if (this.get(i, j) > v) {\r\n v = this.get(i, j);\r\n }\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the maximum value\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'maxIndex',\r\n value: function maxIndex() {\r\n var v = this.get(0, 0);\r\n var idx = [0, 0];\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n if (this.get(i, j) > v) {\r\n v = this.get(i, j);\r\n idx[0] = i;\r\n idx[1] = j;\r\n }\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns the minimum value of the matrix\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'min',\r\n value: function min() {\r\n var v = this.get(0, 0);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n if (this.get(i, j) < v) {\r\n v = this.get(i, j);\r\n }\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the minimum value\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'minIndex',\r\n value: function minIndex() {\r\n var v = this.get(0, 0);\r\n var idx = [0, 0];\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n if (this.get(i, j) < v) {\r\n v = this.get(i, j);\r\n idx[0] = i;\r\n idx[1] = j;\r\n }\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns the maximum value of one row\r\n * @param {number} row - Row index\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'maxRow',\r\n value: function maxRow(row) {\r\n checkRowIndex(this, row);\r\n var v = this.get(row, 0);\r\n for (var i = 1; i < this.columns; i++) {\r\n if (this.get(row, i) > v) {\r\n v = this.get(row, i);\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the maximum value of one row\r\n * @param {number} row - Row index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'maxRowIndex',\r\n value: function maxRowIndex(row) {\r\n checkRowIndex(this, row);\r\n var v = this.get(row, 0);\r\n var idx = [row, 0];\r\n for (var i = 1; i < this.columns; i++) {\r\n if (this.get(row, i) > v) {\r\n v = this.get(row, i);\r\n idx[1] = i;\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns the minimum value of one row\r\n * @param {number} row - Row index\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'minRow',\r\n value: function minRow(row) {\r\n checkRowIndex(this, row);\r\n var v = this.get(row, 0);\r\n for (var i = 1; i < this.columns; i++) {\r\n if (this.get(row, i) < v) {\r\n v = this.get(row, i);\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the maximum value of one row\r\n * @param {number} row - Row index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'minRowIndex',\r\n value: function minRowIndex(row) {\r\n checkRowIndex(this, row);\r\n var v = this.get(row, 0);\r\n var idx = [row, 0];\r\n for (var i = 1; i < this.columns; i++) {\r\n if (this.get(row, i) < v) {\r\n v = this.get(row, i);\r\n idx[1] = i;\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns the maximum value of one column\r\n * @param {number} column - Column index\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'maxColumn',\r\n value: function maxColumn(column) {\r\n checkColumnIndex(this, column);\r\n var v = this.get(0, column);\r\n for (var i = 1; i < this.rows; i++) {\r\n if (this.get(i, column) > v) {\r\n v = this.get(i, column);\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the maximum value of one column\r\n * @param {number} column - Column index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'maxColumnIndex',\r\n value: function maxColumnIndex(column) {\r\n checkColumnIndex(this, column);\r\n var v = this.get(0, column);\r\n var idx = [0, column];\r\n for (var i = 1; i < this.rows; i++) {\r\n if (this.get(i, column) > v) {\r\n v = this.get(i, column);\r\n idx[0] = i;\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns the minimum value of one column\r\n * @param {number} column - Column index\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'minColumn',\r\n value: function minColumn(column) {\r\n checkColumnIndex(this, column);\r\n var v = this.get(0, column);\r\n for (var i = 1; i < this.rows; i++) {\r\n if (this.get(i, column) < v) {\r\n v = this.get(i, column);\r\n }\r\n }\r\n return v;\r\n }\r\n\r\n /**\r\n * Returns the index of the minimum value of one column\r\n * @param {number} column - Column index\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'minColumnIndex',\r\n value: function minColumnIndex(column) {\r\n checkColumnIndex(this, column);\r\n var v = this.get(0, column);\r\n var idx = [0, column];\r\n for (var i = 1; i < this.rows; i++) {\r\n if (this.get(i, column) < v) {\r\n v = this.get(i, column);\r\n idx[0] = i;\r\n }\r\n }\r\n return idx;\r\n }\r\n\r\n /**\r\n * Returns an array containing the diagonal values of the matrix\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'diag',\r\n value: function diag() {\r\n var min = Math.min(this.rows, this.columns);\r\n var diag = new Array(min);\r\n for (var i = 0; i < min; i++) {\r\n diag[i] = this.get(i, i);\r\n }\r\n return diag;\r\n }\r\n\r\n /**\r\n * Returns the sum by the argument given, if no argument given,\r\n * it returns the sum of all elements of the matrix.\r\n * @param {string} by - sum by 'row' or 'column'.\r\n * @return {Matrix|number}\r\n */\r\n\r\n }, {\r\n key: 'sum',\r\n value: function sum(by) {\r\n switch (by) {\r\n case 'row':\r\n return sumByRow(this);\r\n case 'column':\r\n return sumByColumn(this);\r\n default:\r\n return sumAll(this);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the mean of all elements of the matrix\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'mean',\r\n value: function mean() {\r\n return this.sum() / this.size;\r\n }\r\n\r\n /**\r\n * Returns the product of all elements of the matrix\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'prod',\r\n value: function prod() {\r\n var prod = 1;\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n prod *= this.get(i, j);\r\n }\r\n }\r\n return prod;\r\n }\r\n\r\n /**\r\n * Returns the norm of a matrix.\r\n * @param {string} type - \"frobenius\" (default) or \"max\" return resp. the Frobenius norm and the max norm.\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'norm',\r\n value: function norm() {\r\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'frobenius';\r\n\r\n var result = 0;\r\n if (type === 'max') {\r\n return this.max();\r\n } else if (type === 'frobenius') {\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n result = result + this.get(i, j) * this.get(i, j);\r\n }\r\n }\r\n return Math.sqrt(result);\r\n } else {\r\n throw new RangeError('unknown norm type: ' + type);\r\n }\r\n }\r\n\r\n /**\r\n * Computes the cumulative sum of the matrix elements (in place, row by row)\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'cumulativeSum',\r\n value: function cumulativeSum() {\r\n var sum = 0;\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n sum += this.get(i, j);\r\n this.set(i, j, sum);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Computes the dot (scalar) product between the matrix and another\r\n * @param {Matrix} vector2 vector\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'dot',\r\n value: function dot(vector2) {\r\n if (Matrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\r\n var vector1 = this.to1DArray();\r\n if (vector1.length !== vector2.length) {\r\n throw new RangeError('vectors do not have the same size');\r\n }\r\n var dot = 0;\r\n for (var i = 0; i < vector1.length; i++) {\r\n dot += vector1[i] * vector2[i];\r\n }\r\n return dot;\r\n }\r\n\r\n /**\r\n * Returns the matrix product between this and other\r\n * @param {Matrix} other\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'mmul',\r\n value: function mmul(other) {\r\n other = this.constructor.checkMatrix(other);\r\n if (this.columns !== other.rows) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Number of columns of left matrix are not equal to number of rows of right matrix.');\r\n }\r\n\r\n var m = this.rows;\r\n var n = this.columns;\r\n var p = other.columns;\r\n\r\n var result = new this.constructor[Symbol.species](m, p);\r\n\r\n var Bcolj = new Array(n);\r\n for (var j = 0; j < p; j++) {\r\n for (var k = 0; k < n; k++) {\r\n Bcolj[k] = other.get(k, j);\r\n }\r\n\r\n for (var i = 0; i < m; i++) {\r\n var s = 0;\r\n for (k = 0; k < n; k++) {\r\n s += this.get(i, k) * Bcolj[k];\r\n }\r\n\r\n result.set(i, j, s);\r\n }\r\n }\r\n return result;\r\n }\r\n }, {\r\n key: 'strassen2x2',\r\n value: function strassen2x2(other) {\r\n var result = new this.constructor[Symbol.species](2, 2);\r\n var a11 = this.get(0, 0);\r\n var b11 = other.get(0, 0);\r\n var a12 = this.get(0, 1);\r\n var b12 = other.get(0, 1);\r\n var a21 = this.get(1, 0);\r\n var b21 = other.get(1, 0);\r\n var a22 = this.get(1, 1);\r\n var b22 = other.get(1, 1);\r\n\r\n // Compute intermediate values.\r\n var m1 = (a11 + a22) * (b11 + b22);\r\n var m2 = (a21 + a22) * b11;\r\n var m3 = a11 * (b12 - b22);\r\n var m4 = a22 * (b21 - b11);\r\n var m5 = (a11 + a12) * b22;\r\n var m6 = (a21 - a11) * (b11 + b12);\r\n var m7 = (a12 - a22) * (b21 + b22);\r\n\r\n // Combine intermediate values into the output.\r\n var c00 = m1 + m4 - m5 + m7;\r\n var c01 = m3 + m5;\r\n var c10 = m2 + m4;\r\n var c11 = m1 - m2 + m3 + m6;\r\n\r\n result.set(0, 0, c00);\r\n result.set(0, 1, c01);\r\n result.set(1, 0, c10);\r\n result.set(1, 1, c11);\r\n return result;\r\n }\r\n }, {\r\n key: 'strassen3x3',\r\n value: function strassen3x3(other) {\r\n var result = new this.constructor[Symbol.species](3, 3);\r\n\r\n var a00 = this.get(0, 0);\r\n var a01 = this.get(0, 1);\r\n var a02 = this.get(0, 2);\r\n var a10 = this.get(1, 0);\r\n var a11 = this.get(1, 1);\r\n var a12 = this.get(1, 2);\r\n var a20 = this.get(2, 0);\r\n var a21 = this.get(2, 1);\r\n var a22 = this.get(2, 2);\r\n\r\n var b00 = other.get(0, 0);\r\n var b01 = other.get(0, 1);\r\n var b02 = other.get(0, 2);\r\n var b10 = other.get(1, 0);\r\n var b11 = other.get(1, 1);\r\n var b12 = other.get(1, 2);\r\n var b20 = other.get(2, 0);\r\n var b21 = other.get(2, 1);\r\n var b22 = other.get(2, 2);\r\n\r\n var m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\r\n var m2 = (a00 - a10) * (-b01 + b11);\r\n var m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\r\n var m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\r\n var m5 = (a10 + a11) * (-b00 + b01);\r\n var m6 = a00 * b00;\r\n var m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\r\n var m8 = (-a00 + a20) * (b02 - b12);\r\n var m9 = (a20 + a21) * (-b00 + b02);\r\n var m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\r\n var m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\r\n var m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\r\n var m13 = (a02 - a22) * (b11 - b21);\r\n var m14 = a02 * b20;\r\n var m15 = (a21 + a22) * (-b20 + b21);\r\n var m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\r\n var m17 = (a02 - a12) * (b12 - b22);\r\n var m18 = (a11 + a12) * (-b20 + b22);\r\n var m19 = a01 * b10;\r\n var m20 = a12 * b21;\r\n var m21 = a10 * b02;\r\n var m22 = a20 * b01;\r\n var m23 = a22 * b22;\r\n\r\n var c00 = m6 + m14 + m19;\r\n var c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\r\n var c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\r\n var c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\r\n var c11 = m2 + m4 + m5 + m6 + m20;\r\n var c12 = m14 + m16 + m17 + m18 + m21;\r\n var c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\r\n var c21 = m12 + m13 + m14 + m15 + m22;\r\n var c22 = m6 + m7 + m8 + m9 + m23;\r\n\r\n result.set(0, 0, c00);\r\n result.set(0, 1, c01);\r\n result.set(0, 2, c02);\r\n result.set(1, 0, c10);\r\n result.set(1, 1, c11);\r\n result.set(1, 2, c12);\r\n result.set(2, 0, c20);\r\n result.set(2, 1, c21);\r\n result.set(2, 2, c22);\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns the matrix product between x and y. More efficient than mmul(other) only when we multiply squared matrix and when the size of the matrix is > 1000.\r\n * @param {Matrix} y\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'mmulStrassen',\r\n value: function mmulStrassen(y) {\r\n var x = this.clone();\r\n var r1 = x.rows;\r\n var c1 = x.columns;\r\n var r2 = y.rows;\r\n var c2 = y.columns;\r\n if (c1 !== r2) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Multiplying ' + r1 + ' x ' + c1 + ' and ' + r2 + ' x ' + c2 + ' matrix: dimensions do not match.');\r\n }\r\n\r\n // Put a matrix into the top left of a matrix of zeros.\r\n // `rows` and `cols` are the dimensions of the output matrix.\r\n function embed(mat, rows, cols) {\r\n var r = mat.rows;\r\n var c = mat.columns;\r\n if (r === rows && c === cols) {\r\n return mat;\r\n } else {\r\n var resultat = Matrix.zeros(rows, cols);\r\n resultat = resultat.setSubMatrix(mat, 0, 0);\r\n return resultat;\r\n }\r\n }\r\n\r\n // Make sure both matrices are the same size.\r\n // This is exclusively for simplicity:\r\n // this algorithm can be implemented with matrices of different sizes.\r\n\r\n var r = Math.max(r1, r2);\r\n var c = Math.max(c1, c2);\r\n x = embed(x, r, c);\r\n y = embed(y, r, c);\r\n\r\n // Our recursive multiplication function.\r\n function blockMult(a, b, rows, cols) {\r\n // For small matrices, resort to naive multiplication.\r\n if (rows <= 512 || cols <= 512) {\r\n return a.mmul(b); // a is equivalent to this\r\n }\r\n\r\n // Apply dynamic padding.\r\n if (rows % 2 === 1 && cols % 2 === 1) {\r\n a = embed(a, rows + 1, cols + 1);\r\n b = embed(b, rows + 1, cols + 1);\r\n } else if (rows % 2 === 1) {\r\n a = embed(a, rows + 1, cols);\r\n b = embed(b, rows + 1, cols);\r\n } else if (cols % 2 === 1) {\r\n a = embed(a, rows, cols + 1);\r\n b = embed(b, rows, cols + 1);\r\n }\r\n\r\n var halfRows = parseInt(a.rows / 2, 10);\r\n var halfCols = parseInt(a.columns / 2, 10);\r\n // Subdivide input matrices.\r\n var a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\r\n var b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\r\n\r\n var a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\r\n var b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\r\n\r\n var a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\r\n var b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\r\n\r\n var a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\r\n var b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\r\n\r\n // Compute intermediate values.\r\n var m1 = blockMult(Matrix.add(a11, a22), Matrix.add(b11, b22), halfRows, halfCols);\r\n var m2 = blockMult(Matrix.add(a21, a22), b11, halfRows, halfCols);\r\n var m3 = blockMult(a11, Matrix.sub(b12, b22), halfRows, halfCols);\r\n var m4 = blockMult(a22, Matrix.sub(b21, b11), halfRows, halfCols);\r\n var m5 = blockMult(Matrix.add(a11, a12), b22, halfRows, halfCols);\r\n var m6 = blockMult(Matrix.sub(a21, a11), Matrix.add(b11, b12), halfRows, halfCols);\r\n var m7 = blockMult(Matrix.sub(a12, a22), Matrix.add(b21, b22), halfRows, halfCols);\r\n\r\n // Combine intermediate values into the output.\r\n var c11 = Matrix.add(m1, m4);\r\n c11.sub(m5);\r\n c11.add(m7);\r\n var c12 = Matrix.add(m3, m5);\r\n var c21 = Matrix.add(m2, m4);\r\n var c22 = Matrix.sub(m1, m2);\r\n c22.add(m3);\r\n c22.add(m6);\r\n\r\n // Crop output to the desired size (undo dynamic padding).\r\n var resultat = Matrix.zeros(2 * c11.rows, 2 * c11.columns);\r\n resultat = resultat.setSubMatrix(c11, 0, 0);\r\n resultat = resultat.setSubMatrix(c12, c11.rows, 0);\r\n resultat = resultat.setSubMatrix(c21, 0, c11.columns);\r\n resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\r\n return resultat.subMatrix(0, rows - 1, 0, cols - 1);\r\n }\r\n return blockMult(x, y, r, c);\r\n }\r\n\r\n /**\r\n * Returns a row-by-row scaled matrix\r\n * @param {number} [min=0] - Minimum scaled value\r\n * @param {number} [max=1] - Maximum scaled value\r\n * @return {Matrix} - The scaled matrix\r\n */\r\n\r\n }, {\r\n key: 'scaleRows',\r\n value: function scaleRows(min, max) {\r\n min = min === undefined ? 0 : min;\r\n max = max === undefined ? 1 : max;\r\n if (min >= max) {\r\n throw new RangeError('min should be strictly smaller than max');\r\n }\r\n var newMatrix = this.constructor.empty(this.rows, this.columns);\r\n for (var i = 0; i < this.rows; i++) {\r\n var scaled = rescale(this.getRow(i), { min: min, max: max });\r\n newMatrix.setRow(i, scaled);\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Returns a new column-by-column scaled matrix\r\n * @param {number} [min=0] - Minimum scaled value\r\n * @param {number} [max=1] - Maximum scaled value\r\n * @return {Matrix} - The new scaled matrix\r\n * @example\r\n * var matrix = new Matrix([[1,2],[-1,0]]);\r\n * var scaledMatrix = matrix.scaleColumns(); // [[1,1],[0,0]]\r\n */\r\n\r\n }, {\r\n key: 'scaleColumns',\r\n value: function scaleColumns(min, max) {\r\n min = min === undefined ? 0 : min;\r\n max = max === undefined ? 1 : max;\r\n if (min >= max) {\r\n throw new RangeError('min should be strictly smaller than max');\r\n }\r\n var newMatrix = this.constructor.empty(this.rows, this.columns);\r\n for (var i = 0; i < this.columns; i++) {\r\n var scaled = rescale(this.getColumn(i), {\r\n min: min,\r\n max: max\r\n });\r\n newMatrix.setColumn(i, scaled);\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Returns the Kronecker product (also known as tensor product) between this and other\r\n * See https://en.wikipedia.org/wiki/Kronecker_product\r\n * @param {Matrix} other\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'kroneckerProduct',\r\n value: function kroneckerProduct(other) {\r\n other = this.constructor.checkMatrix(other);\r\n\r\n var m = this.rows;\r\n var n = this.columns;\r\n var p = other.rows;\r\n var q = other.columns;\r\n\r\n var result = new this.constructor[Symbol.species](m * p, n * q);\r\n for (var i = 0; i < m; i++) {\r\n for (var j = 0; j < n; j++) {\r\n for (var k = 0; k < p; k++) {\r\n for (var l = 0; l < q; l++) {\r\n result[p * i + k][q * j + l] = this.get(i, j) * other.get(k, l);\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Transposes the matrix and returns a new one containing the result\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'transpose',\r\n value: function transpose() {\r\n var result = new this.constructor[Symbol.species](this.columns, this.rows);\r\n for (var i = 0; i < this.rows; i++) {\r\n for (var j = 0; j < this.columns; j++) {\r\n result.set(j, i, this.get(i, j));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Sorts the rows (in place)\r\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'sortRows',\r\n value: function sortRows(compareFunction) {\r\n if (compareFunction === undefined) compareFunction = compareNumbers;\r\n for (var i = 0; i < this.rows; i++) {\r\n this.setRow(i, this.getRow(i).sort(compareFunction));\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sorts the columns (in place)\r\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'sortColumns',\r\n value: function sortColumns(compareFunction) {\r\n if (compareFunction === undefined) compareFunction = compareNumbers;\r\n for (var i = 0; i < this.columns; i++) {\r\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a subset of the matrix\r\n * @param {number} startRow - First row index\r\n * @param {number} endRow - Last row index\r\n * @param {number} startColumn - First column index\r\n * @param {number} endColumn - Last column index\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'subMatrix',\r\n value: function subMatrix(startRow, endRow, startColumn, endColumn) {\r\n checkRange(this, startRow, endRow, startColumn, endColumn);\r\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, endColumn - startColumn + 1);\r\n for (var i = startRow; i <= endRow; i++) {\r\n for (var j = startColumn; j <= endColumn; j++) {\r\n newMatrix[i - startRow][j - startColumn] = this.get(i, j);\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Returns a subset of the matrix based on an array of row indices\r\n * @param {Array} indices - Array containing the row indices\r\n * @param {number} [startColumn = 0] - First column index\r\n * @param {number} [endColumn = this.columns-1] - Last column index\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'subMatrixRow',\r\n value: function subMatrixRow(indices, startColumn, endColumn) {\r\n if (startColumn === undefined) startColumn = 0;\r\n if (endColumn === undefined) endColumn = this.columns - 1;\r\n if (startColumn > endColumn || startColumn < 0 || startColumn >= this.columns || endColumn < 0 || endColumn >= this.columns) {\r\n throw new RangeError('Argument out of range');\r\n }\r\n\r\n var newMatrix = new this.constructor[Symbol.species](indices.length, endColumn - startColumn + 1);\r\n for (var i = 0; i < indices.length; i++) {\r\n for (var j = startColumn; j <= endColumn; j++) {\r\n if (indices[i] < 0 || indices[i] >= this.rows) {\r\n throw new RangeError('Row index out of range: ' + indices[i]);\r\n }\r\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Returns a subset of the matrix based on an array of column indices\r\n * @param {Array} indices - Array containing the column indices\r\n * @param {number} [startRow = 0] - First row index\r\n * @param {number} [endRow = this.rows-1] - Last row index\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'subMatrixColumn',\r\n value: function subMatrixColumn(indices, startRow, endRow) {\r\n if (startRow === undefined) startRow = 0;\r\n if (endRow === undefined) endRow = this.rows - 1;\r\n if (startRow > endRow || startRow < 0 || startRow >= this.rows || endRow < 0 || endRow >= this.rows) {\r\n throw new RangeError('Argument out of range');\r\n }\r\n\r\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, indices.length);\r\n for (var i = 0; i < indices.length; i++) {\r\n for (var j = startRow; j <= endRow; j++) {\r\n if (indices[i] < 0 || indices[i] >= this.columns) {\r\n throw new RangeError('Column index out of range: ' + indices[i]);\r\n }\r\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Set a part of the matrix to the given sub-matrix\r\n * @param {Matrix|Array< Array >} matrix - The source matrix from which to extract values.\r\n * @param {number} startRow - The index of the first row to set\r\n * @param {number} startColumn - The index of the first column to set\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'setSubMatrix',\r\n value: function setSubMatrix(matrix, startRow, startColumn) {\r\n matrix = this.constructor.checkMatrix(matrix);\r\n var endRow = startRow + matrix.rows - 1;\r\n var endColumn = startColumn + matrix.columns - 1;\r\n checkRange(this, startRow, endRow, startColumn, endColumn);\r\n for (var i = 0; i < matrix.rows; i++) {\r\n for (var j = 0; j < matrix.columns; j++) {\r\n this[startRow + i][startColumn + j] = matrix.get(i, j);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Return a new matrix based on a selection of rows and columns\r\n * @param {Array} rowIndices - The row indices to select. Order matters and an index can be more than once.\r\n * @param {Array} columnIndices - The column indices to select. Order matters and an index can be use more than once.\r\n * @return {Matrix} The new matrix\r\n */\r\n\r\n }, {\r\n key: 'selection',\r\n value: function selection(rowIndices, columnIndices) {\r\n var indices = checkIndices(this, rowIndices, columnIndices);\r\n var newMatrix = new this.constructor[Symbol.species](rowIndices.length, columnIndices.length);\r\n for (var i = 0; i < indices.row.length; i++) {\r\n var rowIndex = indices.row[i];\r\n for (var j = 0; j < indices.column.length; j++) {\r\n var columnIndex = indices.column[j];\r\n newMatrix[i][j] = this.get(rowIndex, columnIndex);\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Returns the trace of the matrix (sum of the diagonal elements)\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'trace',\r\n value: function trace() {\r\n var min = Math.min(this.rows, this.columns);\r\n var trace = 0;\r\n for (var i = 0; i < min; i++) {\r\n trace += this.get(i, i);\r\n }\r\n return trace;\r\n }\r\n\r\n /*\r\n Matrix views\r\n */\r\n\r\n /**\r\n * Returns a view of the transposition of the matrix\r\n * @return {MatrixTransposeView}\r\n */\r\n\r\n }, {\r\n key: 'transposeView',\r\n value: function transposeView() {\r\n return new MatrixTransposeView(this);\r\n }\r\n\r\n /**\r\n * Returns a view of the row vector with the given index\r\n * @param {number} row - row index of the vector\r\n * @return {MatrixRowView}\r\n */\r\n\r\n }, {\r\n key: 'rowView',\r\n value: function rowView(row) {\r\n checkRowIndex(this, row);\r\n return new MatrixRowView(this, row);\r\n }\r\n\r\n /**\r\n * Returns a view of the column vector with the given index\r\n * @param {number} column - column index of the vector\r\n * @return {MatrixColumnView}\r\n */\r\n\r\n }, {\r\n key: 'columnView',\r\n value: function columnView(column) {\r\n checkColumnIndex(this, column);\r\n return new MatrixColumnView(this, column);\r\n }\r\n\r\n /**\r\n * Returns a view of the matrix flipped in the row axis\r\n * @return {MatrixFlipRowView}\r\n */\r\n\r\n }, {\r\n key: 'flipRowView',\r\n value: function flipRowView() {\r\n return new MatrixFlipRowView(this);\r\n }\r\n\r\n /**\r\n * Returns a view of the matrix flipped in the column axis\r\n * @return {MatrixFlipColumnView}\r\n */\r\n\r\n }, {\r\n key: 'flipColumnView',\r\n value: function flipColumnView() {\r\n return new MatrixFlipColumnView(this);\r\n }\r\n\r\n /**\r\n * Returns a view of a submatrix giving the index boundaries\r\n * @param {number} startRow - first row index of the submatrix\r\n * @param {number} endRow - last row index of the submatrix\r\n * @param {number} startColumn - first column index of the submatrix\r\n * @param {number} endColumn - last column index of the submatrix\r\n * @return {MatrixSubView}\r\n */\r\n\r\n }, {\r\n key: 'subMatrixView',\r\n value: function subMatrixView(startRow, endRow, startColumn, endColumn) {\r\n return new MatrixSubView(this, startRow, endRow, startColumn, endColumn);\r\n }\r\n\r\n /**\r\n * Returns a view of the cross of the row indices and the column indices\r\n * @example\r\n * // resulting vector is [[2], [2]]\r\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).selectionView([0, 0], [1])\r\n * @param {Array} rowIndices\r\n * @param {Array} columnIndices\r\n * @return {MatrixSelectionView}\r\n */\r\n\r\n }, {\r\n key: 'selectionView',\r\n value: function selectionView(rowIndices, columnIndices) {\r\n return new MatrixSelectionView(this, rowIndices, columnIndices);\r\n }\r\n\r\n /**\r\n * Returns a view of the row indices\r\n * @example\r\n * // resulting vector is [[1,2,3], [1,2,3]]\r\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).rowSelectionView([0, 0])\r\n * @param {Array} rowIndices\r\n * @return {MatrixRowSelectionView}\r\n */\r\n\r\n }, {\r\n key: 'rowSelectionView',\r\n value: function rowSelectionView(rowIndices) {\r\n return new MatrixRowSelectionView(this, rowIndices);\r\n }\r\n\r\n /**\r\n * Returns a view of the column indices\r\n * @example\r\n * // resulting vector is [[2, 2], [5, 5]]\r\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).columnSelectionView([1, 1])\r\n * @param {Array} columnIndices\r\n * @return {MatrixColumnSelectionView}\r\n */\r\n\r\n }, {\r\n key: 'columnSelectionView',\r\n value: function columnSelectionView(columnIndices) {\r\n return new MatrixColumnSelectionView(this, columnIndices);\r\n }\r\n\r\n /**\r\n * Calculates and returns the determinant of a matrix as a Number\r\n * @example\r\n * new Matrix([[1,2,3], [4,5,6]]).det()\r\n * @return {number}\r\n */\r\n\r\n }, {\r\n key: 'det',\r\n value: function det() {\r\n if (this.isSquare()) {\r\n var a, b, c, d;\r\n if (this.columns === 2) {\r\n // 2 x 2 matrix\r\n a = this.get(0, 0);\r\n b = this.get(0, 1);\r\n c = this.get(1, 0);\r\n d = this.get(1, 1);\r\n\r\n return a * d - b * c;\r\n } else if (this.columns === 3) {\r\n // 3 x 3 matrix\r\n var subMatrix0, subMatrix1, subMatrix2;\r\n subMatrix0 = this.selectionView([1, 2], [1, 2]);\r\n subMatrix1 = this.selectionView([1, 2], [0, 2]);\r\n subMatrix2 = this.selectionView([1, 2], [0, 1]);\r\n a = this.get(0, 0);\r\n b = this.get(0, 1);\r\n c = this.get(0, 2);\r\n\r\n return a * subMatrix0.det() - b * subMatrix1.det() + c * subMatrix2.det();\r\n } else {\r\n // general purpose determinant using the LU decomposition\r\n return new LuDecomposition$$1(this).determinant;\r\n }\r\n } else {\r\n throw Error('Determinant can only be calculated for a square matrix.');\r\n }\r\n }\r\n\r\n /**\r\n * Returns inverse of a matrix if it exists or the pseudoinverse\r\n * @param {number} threshold - threshold for taking inverse of singular values (default = 1e-15)\r\n * @return {Matrix} the (pseudo)inverted matrix.\r\n */\r\n\r\n }, {\r\n key: 'pseudoInverse',\r\n value: function pseudoInverse(threshold) {\r\n if (threshold === undefined) threshold = Number.EPSILON;\r\n var svdSolution = new SingularValueDecomposition$$1(this, { autoTranspose: true });\r\n\r\n var U = svdSolution.leftSingularVectors;\r\n var V = svdSolution.rightSingularVectors;\r\n var s = svdSolution.diagonal;\r\n\r\n for (var i = 0; i < s.length; i++) {\r\n if (Math.abs(s[i]) > threshold) {\r\n s[i] = 1.0 / s[i];\r\n } else {\r\n s[i] = 0.0;\r\n }\r\n }\r\n\r\n // convert list to diagonal\r\n s = this.constructor[Symbol.species].diag(s);\r\n return V.mmul(s.mmul(U.transposeView()));\r\n }\r\n\r\n /**\r\n * Creates an exact and independent copy of the matrix\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'clone',\r\n value: function clone() {\r\n var newMatrix = new this.constructor[Symbol.species](this.rows, this.columns);\r\n for (var row = 0; row < this.rows; row++) {\r\n for (var column = 0; column < this.columns; column++) {\r\n newMatrix.set(row, column, this.get(row, column));\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n }, {\r\n key: 'size',\r\n\r\n\r\n /**\r\n * @prop {number} size - The number of elements in the matrix.\r\n */\r\n get: function get$$1() {\r\n return this.rows * this.columns;\r\n }\r\n }], [{\r\n key: 'from1DArray',\r\n\r\n\r\n /**\r\n * Constructs a Matrix with the chosen dimensions from a 1D array\r\n * @param {number} newRows - Number of rows\r\n * @param {number} newColumns - Number of columns\r\n * @param {Array} newData - A 1D array containing data for the matrix\r\n * @return {Matrix} - The new matrix\r\n */\r\n value: function from1DArray(newRows, newColumns, newData) {\r\n var length = newRows * newColumns;\r\n if (length !== newData.length) {\r\n throw new RangeError('Data length does not match given dimensions');\r\n }\r\n var newMatrix = new this(newRows, newColumns);\r\n for (var row = 0; row < newRows; row++) {\r\n for (var column = 0; column < newColumns; column++) {\r\n newMatrix.set(row, column, newData[row * newColumns + column]);\r\n }\r\n }\r\n return newMatrix;\r\n }\r\n\r\n /**\r\n * Creates a row vector, a matrix with only one row.\r\n * @param {Array} newData - A 1D array containing data for the vector\r\n * @return {Matrix} - The new matrix\r\n */\r\n\r\n }, {\r\n key: 'rowVector',\r\n value: function rowVector(newData) {\r\n var vector = new this(1, newData.length);\r\n for (var i = 0; i < newData.length; i++) {\r\n vector.set(0, i, newData[i]);\r\n }\r\n return vector;\r\n }\r\n\r\n /**\r\n * Creates a column vector, a matrix with only one column.\r\n * @param {Array} newData - A 1D array containing data for the vector\r\n * @return {Matrix} - The new matrix\r\n */\r\n\r\n }, {\r\n key: 'columnVector',\r\n value: function columnVector(newData) {\r\n var vector = new this(newData.length, 1);\r\n for (var i = 0; i < newData.length; i++) {\r\n vector.set(i, 0, newData[i]);\r\n }\r\n return vector;\r\n }\r\n\r\n /**\r\n * Creates an empty matrix with the given dimensions. Values will be undefined. Same as using new Matrix(rows, columns).\r\n * @param {number} rows - Number of rows\r\n * @param {number} columns - Number of columns\r\n * @return {Matrix} - The new matrix\r\n */\r\n\r\n }, {\r\n key: 'empty',\r\n value: function empty(rows, columns) {\r\n return new this(rows, columns);\r\n }\r\n\r\n /**\r\n * Creates a matrix with the given dimensions. Values will be set to zero.\r\n * @param {number} rows - Number of rows\r\n * @param {number} columns - Number of columns\r\n * @return {Matrix} - The new matrix\r\n */\r\n\r\n }, {\r\n key: 'zeros',\r\n value: function zeros(rows, columns) {\r\n return this.empty(rows, columns).fill(0);\r\n }\r\n\r\n /**\r\n * Creates a matrix with the given dimensions. Values will be set to one.\r\n * @param {number} rows - Number of rows\r\n * @param {number} columns - Number of columns\r\n * @return {Matrix} - The new matrix\r\n */\r\n\r\n }, {\r\n key: 'ones',\r\n value: function ones(rows, columns) {\r\n return this.empty(rows, columns).fill(1);\r\n }\r\n\r\n /**\r\n * Creates a matrix with the given dimensions. Values will be randomly set.\r\n * @param {number} rows - Number of rows\r\n * @param {number} columns - Number of columns\r\n * @param {function} [rng=Math.random] - Random number generator\r\n * @return {Matrix} The new matrix\r\n */\r\n\r\n }, {\r\n key: 'rand',\r\n value: function rand(rows, columns, rng) {\r\n if (rng === undefined) rng = Math.random;\r\n var matrix = this.empty(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n matrix.set(i, j, rng());\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n /**\r\n * Creates a matrix with the given dimensions. Values will be random integers.\r\n * @param {number} rows - Number of rows\r\n * @param {number} columns - Number of columns\r\n * @param {number} [maxValue=1000] - Maximum value\r\n * @param {function} [rng=Math.random] - Random number generator\r\n * @return {Matrix} The new matrix\r\n */\r\n\r\n }, {\r\n key: 'randInt',\r\n value: function randInt(rows, columns, maxValue, rng) {\r\n if (maxValue === undefined) maxValue = 1000;\r\n if (rng === undefined) rng = Math.random;\r\n var matrix = this.empty(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n var value = Math.floor(rng() * maxValue);\r\n matrix.set(i, j, value);\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n /**\r\n * Creates an identity matrix with the given dimension. Values of the diagonal will be 1 and others will be 0.\r\n * @param {number} rows - Number of rows\r\n * @param {number} [columns=rows] - Number of columns\r\n * @param {number} [value=1] - Value to fill the diagonal with\r\n * @return {Matrix} - The new identity matrix\r\n */\r\n\r\n }, {\r\n key: 'eye',\r\n value: function eye(rows, columns, value) {\r\n if (columns === undefined) columns = rows;\r\n if (value === undefined) value = 1;\r\n var min = Math.min(rows, columns);\r\n var matrix = this.zeros(rows, columns);\r\n for (var i = 0; i < min; i++) {\r\n matrix.set(i, i, value);\r\n }\r\n return matrix;\r\n }\r\n\r\n /**\r\n * Creates a diagonal matrix based on the given array.\r\n * @param {Array} data - Array containing the data for the diagonal\r\n * @param {number} [rows] - Number of rows (Default: data.length)\r\n * @param {number} [columns] - Number of columns (Default: rows)\r\n * @return {Matrix} - The new diagonal matrix\r\n */\r\n\r\n }, {\r\n key: 'diag',\r\n value: function diag(data, rows, columns) {\r\n var l = data.length;\r\n if (rows === undefined) rows = l;\r\n if (columns === undefined) columns = rows;\r\n var min = Math.min(l, rows, columns);\r\n var matrix = this.zeros(rows, columns);\r\n for (var i = 0; i < min; i++) {\r\n matrix.set(i, i, data[i]);\r\n }\r\n return matrix;\r\n }\r\n\r\n /**\r\n * Returns a matrix whose elements are the minimum between matrix1 and matrix2\r\n * @param {Matrix} matrix1\r\n * @param {Matrix} matrix2\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'min',\r\n value: function min(matrix1, matrix2) {\r\n matrix1 = this.checkMatrix(matrix1);\r\n matrix2 = this.checkMatrix(matrix2);\r\n var rows = matrix1.rows;\r\n var columns = matrix1.columns;\r\n var result = new this(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a matrix whose elements are the maximum between matrix1 and matrix2\r\n * @param {Matrix} matrix1\r\n * @param {Matrix} matrix2\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'max',\r\n value: function max(matrix1, matrix2) {\r\n matrix1 = this.checkMatrix(matrix1);\r\n matrix2 = this.checkMatrix(matrix2);\r\n var rows = matrix1.rows;\r\n var columns = matrix1.columns;\r\n var result = new this(rows, columns);\r\n for (var i = 0; i < rows; i++) {\r\n for (var j = 0; j < columns; j++) {\r\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Check that the provided value is a Matrix and tries to instantiate one if not\r\n * @param {*} value - The value to check\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'checkMatrix',\r\n value: function checkMatrix(value) {\r\n return Matrix.isMatrix(value) ? value : new superCtor(value);\r\n }\r\n\r\n /**\r\n * Returns true if the argument is a Matrix, false otherwise\r\n * @param {*} value - The value to check\r\n * @return {boolean}\r\n */\r\n\r\n }, {\r\n key: 'isMatrix',\r\n value: function isMatrix(value) {\r\n return value != null && value.klass === 'Matrix';\r\n }\r\n }, {\r\n key: Symbol.species,\r\n get: function get$$1() {\r\n return this;\r\n }\r\n }]);\r\n return Matrix;\r\n }();\r\n\r\n Matrix.prototype.klass = 'Matrix';\r\n\r\n function compareNumbers(a, b) {\r\n return a - b;\r\n }\r\n\r\n /*\r\n Synonyms\r\n */\r\n\r\n Matrix.random = Matrix.rand;\r\n Matrix.diagonal = Matrix.diag;\r\n Matrix.prototype.diagonal = Matrix.prototype.diag;\r\n Matrix.identity = Matrix.eye;\r\n Matrix.prototype.negate = Matrix.prototype.neg;\r\n Matrix.prototype.tensorProduct = Matrix.prototype.kroneckerProduct;\r\n Matrix.prototype.determinant = Matrix.prototype.det;\r\n\r\n /*\r\n Add dynamically instance and static methods for mathematical operations\r\n */\r\n\r\n var inplaceOperator = '\\n(function %name%(value) {\\n if (typeof value === \\'number\\') return this.%name%S(value);\\n return this.%name%M(value);\\n})\\n';\r\n\r\n var inplaceOperatorScalar = '\\n(function %name%S(value) {\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, this.get(i, j) %op% value);\\n }\\n }\\n return this;\\n})\\n';\r\n\r\n var inplaceOperatorMatrix = '\\n(function %name%M(matrix) {\\n matrix = this.constructor.checkMatrix(matrix);\\n if (this.rows !== matrix.rows ||\\n this.columns !== matrix.columns) {\\n throw new RangeError(\\'Matrices dimensions must be equal\\');\\n }\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, this.get(i, j) %op% matrix.get(i, j));\\n }\\n }\\n return this;\\n})\\n';\r\n\r\n var staticOperator = '\\n(function %name%(matrix, value) {\\n var newMatrix = new this[Symbol.species](matrix);\\n return newMatrix.%name%(value);\\n})\\n';\r\n\r\n var inplaceMethod = '\\n(function %name%() {\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, %method%(this.get(i, j)));\\n }\\n }\\n return this;\\n})\\n';\r\n\r\n var staticMethod = '\\n(function %name%(matrix) {\\n var newMatrix = new this[Symbol.species](matrix);\\n return newMatrix.%name%();\\n})\\n';\r\n\r\n var inplaceMethodWithArgs = '\\n(function %name%(%args%) {\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, %method%(this.get(i, j), %args%));\\n }\\n }\\n return this;\\n})\\n';\r\n\r\n var staticMethodWithArgs = '\\n(function %name%(matrix, %args%) {\\n var newMatrix = new this[Symbol.species](matrix);\\n return newMatrix.%name%(%args%);\\n})\\n';\r\n\r\n var inplaceMethodWithOneArgScalar = '\\n(function %name%S(value) {\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, %method%(this.get(i, j), value));\\n }\\n }\\n return this;\\n})\\n';\r\n var inplaceMethodWithOneArgMatrix = '\\n(function %name%M(matrix) {\\n matrix = this.constructor.checkMatrix(matrix);\\n if (this.rows !== matrix.rows ||\\n this.columns !== matrix.columns) {\\n throw new RangeError(\\'Matrices dimensions must be equal\\');\\n }\\n for (var i = 0; i < this.rows; i++) {\\n for (var j = 0; j < this.columns; j++) {\\n this.set(i, j, %method%(this.get(i, j), matrix.get(i, j)));\\n }\\n }\\n return this;\\n})\\n';\r\n\r\n var inplaceMethodWithOneArg = '\\n(function %name%(value) {\\n if (typeof value === \\'number\\') return this.%name%S(value);\\n return this.%name%M(value);\\n})\\n';\r\n\r\n var staticMethodWithOneArg = staticMethodWithArgs;\r\n\r\n var operators = [\r\n // Arithmetic operators\r\n ['+', 'add'], ['-', 'sub', 'subtract'], ['*', 'mul', 'multiply'], ['/', 'div', 'divide'], ['%', 'mod', 'modulus'],\r\n // Bitwise operators\r\n ['&', 'and'], ['|', 'or'], ['^', 'xor'], ['<<', 'leftShift'], ['>>', 'signPropagatingRightShift'], ['>>>', 'rightShift', 'zeroFillRightShift']];\r\n\r\n var i;\r\n var eval2 = eval; // eslint-disable-line no-eval\r\n var _iteratorNormalCompletion = true;\r\n var _didIteratorError = false;\r\n var _iteratorError = undefined;\r\n\r\n try {\r\n for (var _iterator = operators[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\r\n var operator = _step.value;\r\n\r\n var inplaceOp = eval2(fillTemplateFunction(inplaceOperator, { name: operator[1], op: operator[0] }));\r\n var inplaceOpS = eval2(fillTemplateFunction(inplaceOperatorScalar, { name: operator[1] + 'S', op: operator[0] }));\r\n var inplaceOpM = eval2(fillTemplateFunction(inplaceOperatorMatrix, { name: operator[1] + 'M', op: operator[0] }));\r\n var staticOp = eval2(fillTemplateFunction(staticOperator, { name: operator[1] }));\r\n for (i = 1; i < operator.length; i++) {\r\n Matrix.prototype[operator[i]] = inplaceOp;\r\n Matrix.prototype[operator[i] + 'S'] = inplaceOpS;\r\n Matrix.prototype[operator[i] + 'M'] = inplaceOpM;\r\n Matrix[operator[i]] = staticOp;\r\n }\r\n }\r\n } catch (err) {\r\n _didIteratorError = true;\r\n _iteratorError = err;\r\n } finally {\r\n try {\r\n if (!_iteratorNormalCompletion && _iterator.return) {\r\n _iterator.return();\r\n }\r\n } finally {\r\n if (_didIteratorError) {\r\n throw _iteratorError;\r\n }\r\n }\r\n }\r\n\r\n var methods = [['~', 'not']];\r\n\r\n ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cbrt', 'ceil', 'clz32', 'cos', 'cosh', 'exp', 'expm1', 'floor', 'fround', 'log', 'log1p', 'log10', 'log2', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'].forEach(function (mathMethod) {\r\n methods.push(['Math.' + mathMethod, mathMethod]);\r\n });\r\n\r\n var _iteratorNormalCompletion2 = true;\r\n var _didIteratorError2 = false;\r\n var _iteratorError2 = undefined;\r\n\r\n try {\r\n for (var _iterator2 = methods[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\r\n var method = _step2.value;\r\n\r\n var inplaceMeth = eval2(fillTemplateFunction(inplaceMethod, { name: method[1], method: method[0] }));\r\n var staticMeth = eval2(fillTemplateFunction(staticMethod, { name: method[1] }));\r\n for (i = 1; i < method.length; i++) {\r\n Matrix.prototype[method[i]] = inplaceMeth;\r\n Matrix[method[i]] = staticMeth;\r\n }\r\n }\r\n } catch (err) {\r\n _didIteratorError2 = true;\r\n _iteratorError2 = err;\r\n } finally {\r\n try {\r\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\r\n _iterator2.return();\r\n }\r\n } finally {\r\n if (_didIteratorError2) {\r\n throw _iteratorError2;\r\n }\r\n }\r\n }\r\n\r\n var methodsWithArgs = [['Math.pow', 1, 'pow']];\r\n\r\n var _iteratorNormalCompletion3 = true;\r\n var _didIteratorError3 = false;\r\n var _iteratorError3 = undefined;\r\n\r\n try {\r\n for (var _iterator3 = methodsWithArgs[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\r\n var methodWithArg = _step3.value;\r\n\r\n var args = 'arg0';\r\n for (i = 1; i < methodWithArg[1]; i++) {\r\n args += ', arg' + i;\r\n }\r\n if (methodWithArg[1] !== 1) {\r\n var inplaceMethWithArgs = eval2(fillTemplateFunction(inplaceMethodWithArgs, {\r\n name: methodWithArg[2],\r\n method: methodWithArg[0],\r\n args: args\r\n }));\r\n var staticMethWithArgs = eval2(fillTemplateFunction(staticMethodWithArgs, { name: methodWithArg[2], args: args }));\r\n for (i = 2; i < methodWithArg.length; i++) {\r\n Matrix.prototype[methodWithArg[i]] = inplaceMethWithArgs;\r\n Matrix[methodWithArg[i]] = staticMethWithArgs;\r\n }\r\n } else {\r\n var tmplVar = {\r\n name: methodWithArg[2],\r\n args: args,\r\n method: methodWithArg[0]\r\n };\r\n var inplaceMethod2 = eval2(fillTemplateFunction(inplaceMethodWithOneArg, tmplVar));\r\n var inplaceMethodS = eval2(fillTemplateFunction(inplaceMethodWithOneArgScalar, tmplVar));\r\n var inplaceMethodM = eval2(fillTemplateFunction(inplaceMethodWithOneArgMatrix, tmplVar));\r\n var staticMethod2 = eval2(fillTemplateFunction(staticMethodWithOneArg, tmplVar));\r\n for (i = 2; i < methodWithArg.length; i++) {\r\n Matrix.prototype[methodWithArg[i]] = inplaceMethod2;\r\n Matrix.prototype[methodWithArg[i] + 'M'] = inplaceMethodM;\r\n Matrix.prototype[methodWithArg[i] + 'S'] = inplaceMethodS;\r\n Matrix[methodWithArg[i]] = staticMethod2;\r\n }\r\n }\r\n }\r\n } catch (err) {\r\n _didIteratorError3 = true;\r\n _iteratorError3 = err;\r\n } finally {\r\n try {\r\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\r\n _iterator3.return();\r\n }\r\n } finally {\r\n if (_didIteratorError3) {\r\n throw _iteratorError3;\r\n }\r\n }\r\n }\r\n\r\n function fillTemplateFunction(template, values) {\r\n for (var value in values) {\r\n template = template.replace(new RegExp('%' + value + '%', 'g'), values[value]);\r\n }\r\n return template;\r\n }\r\n\r\n return Matrix;\r\n}\r\n\r\nvar Matrix = function (_AbstractMatrix) {\r\n inherits(Matrix, _AbstractMatrix);\r\n\r\n function Matrix(nRows, nColumns) {\r\n var _ret3;\r\n\r\n classCallCheck(this, Matrix);\r\n\r\n var i;\r\n if (arguments.length === 1 && typeof nRows === 'number') {\r\n var _ret;\r\n\r\n return _ret = new Array(nRows), possibleConstructorReturn(_this, _ret);\r\n }\r\n if (Matrix.isMatrix(nRows)) {\r\n var _ret2;\r\n\r\n return _ret2 = nRows.clone(), possibleConstructorReturn(_this, _ret2);\r\n } else if (Number.isInteger(nRows) && nRows > 0) {\r\n var _this = possibleConstructorReturn(this, (Matrix.__proto__ || Object.getPrototypeOf(Matrix)).call(this, nRows));\r\n // Create an empty matrix\r\n\r\n\r\n if (Number.isInteger(nColumns) && nColumns > 0) {\r\n for (i = 0; i < nRows; i++) {\r\n _this[i] = new Array(nColumns);\r\n }\r\n } else {\r\n throw new TypeError('nColumns must be a positive integer');\r\n }\r\n } else if (Array.isArray(nRows)) {\r\n // Copy the values from the 2D array\r\n var matrix = nRows;\r\n nRows = matrix.length;\r\n nColumns = matrix[0].length;\r\n if (typeof nColumns !== 'number' || nColumns === 0) {\r\n throw new TypeError('Data must be a 2D array with at least one element');\r\n }\r\n\r\n var _this = possibleConstructorReturn(this, (Matrix.__proto__ || Object.getPrototypeOf(Matrix)).call(this, nRows));\r\n\r\n for (i = 0; i < nRows; i++) {\r\n if (matrix[i].length !== nColumns) {\r\n throw new RangeError('Inconsistent array dimensions');\r\n }\r\n _this[i] = [].concat(matrix[i]);\r\n }\r\n } else {\r\n throw new TypeError('First argument must be a positive number or an array');\r\n }\r\n _this.rows = nRows;\r\n _this.columns = nColumns;\r\n return _ret3 = _this, possibleConstructorReturn(_this, _ret3);\r\n }\r\n\r\n createClass(Matrix, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this[rowIndex][columnIndex] = value;\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this[rowIndex][columnIndex];\r\n }\r\n\r\n /**\r\n * Removes a row from the given index\r\n * @param {number} index - Row index\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'removeRow',\r\n value: function removeRow(index) {\r\n checkRowIndex(this, index);\r\n if (this.rows === 1) {\r\n throw new RangeError('A matrix cannot have less than one row');\r\n }\r\n this.splice(index, 1);\r\n this.rows -= 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a row at the given index\r\n * @param {number} [index = this.rows] - Row index\r\n * @param {Array|Matrix} array - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'addRow',\r\n value: function addRow(index, array) {\r\n if (array === undefined) {\r\n array = index;\r\n index = this.rows;\r\n }\r\n checkRowIndex(this, index, true);\r\n array = checkRowVector(this, array, true);\r\n this.splice(index, 0, array);\r\n this.rows += 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a column from the given index\r\n * @param {number} index - Column index\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'removeColumn',\r\n value: function removeColumn(index) {\r\n checkColumnIndex(this, index);\r\n if (this.columns === 1) {\r\n throw new RangeError('A matrix cannot have less than one column');\r\n }\r\n for (var i = 0; i < this.rows; i++) {\r\n this[i].splice(index, 1);\r\n }\r\n this.columns -= 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a column at the given index\r\n * @param {number} [index = this.columns] - Column index\r\n * @param {Array|Matrix} array - Array or vector\r\n * @return {Matrix} this\r\n */\r\n\r\n }, {\r\n key: 'addColumn',\r\n value: function addColumn(index, array) {\r\n if (typeof array === 'undefined') {\r\n array = index;\r\n index = this.columns;\r\n }\r\n checkColumnIndex(this, index, true);\r\n array = checkColumnVector(this, array);\r\n for (var i = 0; i < this.rows; i++) {\r\n this[i].splice(index, 0, array[i]);\r\n }\r\n this.columns += 1;\r\n return this;\r\n }\r\n }]);\r\n return Matrix;\r\n}(AbstractMatrix(Array));\r\n\r\nvar WrapperMatrix1D = function (_AbstractMatrix) {\r\n inherits(WrapperMatrix1D, _AbstractMatrix);\r\n\r\n /**\r\n * @class WrapperMatrix1D\r\n * @param {Array} data\r\n * @param {object} [options]\r\n * @param {object} [options.rows = 1]\r\n */\r\n function WrapperMatrix1D(data) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n classCallCheck(this, WrapperMatrix1D);\r\n var _options$rows = options.rows,\r\n rows = _options$rows === undefined ? 1 : _options$rows;\r\n\r\n\r\n if (data.length % rows !== 0) {\r\n throw new Error('the data length is not divisible by the number of rows');\r\n }\r\n\r\n var _this = possibleConstructorReturn(this, (WrapperMatrix1D.__proto__ || Object.getPrototypeOf(WrapperMatrix1D)).call(this));\r\n\r\n _this.rows = rows;\r\n _this.columns = data.length / rows;\r\n _this.data = data;\r\n return _this;\r\n }\r\n\r\n createClass(WrapperMatrix1D, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n var index = this._calculateIndex(rowIndex, columnIndex);\r\n this.data[index] = value;\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n var index = this._calculateIndex(rowIndex, columnIndex);\r\n return this.data[index];\r\n }\r\n }, {\r\n key: '_calculateIndex',\r\n value: function _calculateIndex(row, column) {\r\n return row * this.columns + column;\r\n }\r\n }], [{\r\n key: Symbol.species,\r\n get: function get$$1() {\r\n return Matrix;\r\n }\r\n }]);\r\n return WrapperMatrix1D;\r\n}(AbstractMatrix());\r\n\r\nvar WrapperMatrix2D = function (_AbstractMatrix) {\r\n inherits(WrapperMatrix2D, _AbstractMatrix);\r\n\r\n /**\r\n * @class WrapperMatrix2D\r\n * @param {Array>} data\r\n */\r\n function WrapperMatrix2D(data) {\r\n classCallCheck(this, WrapperMatrix2D);\r\n\r\n var _this = possibleConstructorReturn(this, (WrapperMatrix2D.__proto__ || Object.getPrototypeOf(WrapperMatrix2D)).call(this));\r\n\r\n _this.data = data;\r\n _this.rows = data.length;\r\n _this.columns = data[0].length;\r\n return _this;\r\n }\r\n\r\n createClass(WrapperMatrix2D, [{\r\n key: 'set',\r\n value: function set$$1(rowIndex, columnIndex, value) {\r\n this.data[rowIndex][columnIndex] = value;\r\n return this;\r\n }\r\n }, {\r\n key: 'get',\r\n value: function get$$1(rowIndex, columnIndex) {\r\n return this.data[rowIndex][columnIndex];\r\n }\r\n }], [{\r\n key: Symbol.species,\r\n get: function get$$1() {\r\n return Matrix;\r\n }\r\n }]);\r\n return WrapperMatrix2D;\r\n}(AbstractMatrix());\r\n\r\n/**\r\n * @param {Array>|Array} array\r\n * @param {object} [options]\r\n * @param {object} [options.rows = 1]\r\n * @return {WrapperMatrix1D|WrapperMatrix2D}\r\n */\r\nfunction wrap(array, options) {\r\n if (Array.isArray(array)) {\r\n if (array[0] && Array.isArray(array[0])) {\r\n return new WrapperMatrix2D(array);\r\n } else {\r\n return new WrapperMatrix1D(array, options);\r\n }\r\n } else {\r\n throw new Error('the argument is not an array');\r\n }\r\n}\r\n\r\n/**\r\n * @class QrDecomposition\r\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/QrDecomposition.cs\r\n * @param {Matrix} value\r\n */\r\n\r\nvar QrDecomposition$$1 = function () {\r\n function QrDecomposition$$1(value) {\r\n classCallCheck(this, QrDecomposition$$1);\r\n\r\n value = WrapperMatrix2D.checkMatrix(value);\r\n\r\n var qr = value.clone();\r\n var m = value.rows;\r\n var n = value.columns;\r\n var rdiag = new Array(n);\r\n var i, j, k, s;\r\n\r\n for (k = 0; k < n; k++) {\r\n var nrm = 0;\r\n for (i = k; i < m; i++) {\r\n nrm = hypotenuse(nrm, qr.get(i, k));\r\n }\r\n if (nrm !== 0) {\r\n if (qr.get(k, k) < 0) {\r\n nrm = -nrm;\r\n }\r\n for (i = k; i < m; i++) {\r\n qr.set(i, k, qr.get(i, k) / nrm);\r\n }\r\n qr.set(k, k, qr.get(k, k) + 1);\r\n for (j = k + 1; j < n; j++) {\r\n s = 0;\r\n for (i = k; i < m; i++) {\r\n s += qr.get(i, k) * qr.get(i, j);\r\n }\r\n s = -s / qr.get(k, k);\r\n for (i = k; i < m; i++) {\r\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\r\n }\r\n }\r\n }\r\n rdiag[k] = -nrm;\r\n }\r\n\r\n this.QR = qr;\r\n this.Rdiag = rdiag;\r\n }\r\n\r\n /**\r\n * Solve a problem of least square (Ax=b) by using the QR decomposition. Useful when A is rectangular, but not working when A is singular.\r\n * Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use :\r\n * var qr = QrDecomposition(A);\r\n * var x = qr.solve(b);\r\n * @param {Matrix} value - Matrix 1D which is the vector b (in the equation Ax = b)\r\n * @return {Matrix} - The vector x\r\n */\r\n\r\n\r\n createClass(QrDecomposition$$1, [{\r\n key: 'solve',\r\n value: function solve$$1(value) {\r\n value = Matrix.checkMatrix(value);\r\n\r\n var qr = this.QR;\r\n var m = qr.rows;\r\n\r\n if (value.rows !== m) {\r\n throw new Error('Matrix row dimensions must agree');\r\n }\r\n if (!this.isFullRank()) {\r\n throw new Error('Matrix is rank deficient');\r\n }\r\n\r\n var count = value.columns;\r\n var X = value.clone();\r\n var n = qr.columns;\r\n var i, j, k, s;\r\n\r\n for (k = 0; k < n; k++) {\r\n for (j = 0; j < count; j++) {\r\n s = 0;\r\n for (i = k; i < m; i++) {\r\n s += qr[i][k] * X[i][j];\r\n }\r\n s = -s / qr[k][k];\r\n for (i = k; i < m; i++) {\r\n X[i][j] += s * qr[i][k];\r\n }\r\n }\r\n }\r\n for (k = n - 1; k >= 0; k--) {\r\n for (j = 0; j < count; j++) {\r\n X[k][j] /= this.Rdiag[k];\r\n }\r\n for (i = 0; i < k; i++) {\r\n for (j = 0; j < count; j++) {\r\n X[i][j] -= X[k][j] * qr[i][k];\r\n }\r\n }\r\n }\r\n\r\n return X.subMatrix(0, n - 1, 0, count - 1);\r\n }\r\n\r\n /**\r\n *\r\n * @return {boolean}\r\n */\r\n\r\n }, {\r\n key: 'isFullRank',\r\n value: function isFullRank() {\r\n var columns = this.QR.columns;\r\n for (var i = 0; i < columns; i++) {\r\n if (this.Rdiag[i] === 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'upperTriangularMatrix',\r\n get: function get$$1() {\r\n var qr = this.QR;\r\n var n = qr.columns;\r\n var X = new Matrix(n, n);\r\n var i, j;\r\n for (i = 0; i < n; i++) {\r\n for (j = 0; j < n; j++) {\r\n if (i < j) {\r\n X[i][j] = qr[i][j];\r\n } else if (i === j) {\r\n X[i][j] = this.Rdiag[i];\r\n } else {\r\n X[i][j] = 0;\r\n }\r\n }\r\n }\r\n return X;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'orthogonalMatrix',\r\n get: function get$$1() {\r\n var qr = this.QR;\r\n var rows = qr.rows;\r\n var columns = qr.columns;\r\n var X = new Matrix(rows, columns);\r\n var i, j, k, s;\r\n\r\n for (k = columns - 1; k >= 0; k--) {\r\n for (i = 0; i < rows; i++) {\r\n X[i][k] = 0;\r\n }\r\n X[k][k] = 1;\r\n for (j = k; j < columns; j++) {\r\n if (qr[k][k] !== 0) {\r\n s = 0;\r\n for (i = k; i < rows; i++) {\r\n s += qr[i][k] * X[i][j];\r\n }\r\n\r\n s = -s / qr[k][k];\r\n\r\n for (i = k; i < rows; i++) {\r\n X[i][j] += s * qr[i][k];\r\n }\r\n }\r\n }\r\n }\r\n return X;\r\n }\r\n }]);\r\n return QrDecomposition$$1;\r\n}();\r\n\r\n/**\r\n * Computes the inverse of a Matrix\r\n * @param {Matrix} matrix\r\n * @param {boolean} [useSVD=false]\r\n * @return {Matrix}\r\n */\r\nfunction inverse$$1(matrix) {\r\n var useSVD = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\r\n\r\n matrix = WrapperMatrix2D.checkMatrix(matrix);\r\n if (useSVD) {\r\n return new SingularValueDecomposition$$1(matrix).inverse();\r\n } else {\r\n return solve$$1(matrix, Matrix.eye(matrix.rows));\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {Matrix} leftHandSide\r\n * @param {Matrix} rightHandSide\r\n * @param {boolean} [useSVD = false]\r\n * @return {Matrix}\r\n */\r\nfunction solve$$1(leftHandSide, rightHandSide) {\r\n var useSVD = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\r\n\r\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\r\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\r\n if (useSVD) {\r\n return new SingularValueDecomposition$$1(leftHandSide).solve(rightHandSide);\r\n } else {\r\n return leftHandSide.isSquare() ? new LuDecomposition$$1(leftHandSide).solve(rightHandSide) : new QrDecomposition$$1(leftHandSide).solve(rightHandSide);\r\n }\r\n}\r\n\r\n// function used by rowsDependencies\r\nfunction xrange(n, exception) {\r\n var range = [];\r\n for (var i = 0; i < n; i++) {\r\n if (i !== exception) {\r\n range.push(i);\r\n }\r\n }\r\n return range;\r\n}\r\n\r\n// function used by rowsDependencies\r\nfunction dependenciesOneRow(error, matrix, index) {\r\n var thresholdValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10e-10;\r\n var thresholdError = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10e-10;\r\n\r\n if (error > thresholdError) {\r\n return new Array(matrix.rows + 1).fill(0);\r\n } else {\r\n var returnArray = matrix.addRow(index, [0]);\r\n for (var i = 0; i < returnArray.rows; i++) {\r\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\r\n returnArray.set(i, 0, 0);\r\n }\r\n }\r\n return returnArray.to1DArray();\r\n }\r\n}\r\n\r\n/**\r\n * Creates a matrix which represents the dependencies between rows.\r\n * If a row is a linear combination of others rows, the result will be a row with the coefficients of this combination.\r\n * For example : for A = [[2, 0, 0, 1], [0, 1, 6, 0], [0, 3, 0, 1], [0, 0, 1, 0], [0, 1, 2, 0]], the result will be [[0, 0, 0, 0, 0], [0, 0, 0, 4, 1], [0, 0, 0, 0, 0], [0, 0.25, 0, 0, -0.25], [0, 1, 0, -4, 0]]\r\n * @param {Matrix} matrix\r\n * @param {Object} [options] includes thresholdValue and thresholdError.\r\n * @param {number} [options.thresholdValue = 10e-10] If an absolute value is inferior to this threshold, it will equals zero.\r\n * @param {number} [options.thresholdError = 10e-10] If the error is inferior to that threshold, the linear combination found is accepted and the row is dependent from other rows.\r\n * @return {Matrix} the matrix which represents the dependencies between rows.\r\n */\r\n\r\nfunction linearDependencies(matrix) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n var _options$thresholdVal = options.thresholdValue,\r\n thresholdValue = _options$thresholdVal === undefined ? 10e-10 : _options$thresholdVal,\r\n _options$thresholdErr = options.thresholdError,\r\n thresholdError = _options$thresholdErr === undefined ? 10e-10 : _options$thresholdErr;\r\n\r\n\r\n var n = matrix.rows;\r\n var results = new Matrix(n, n);\r\n\r\n for (var i = 0; i < n; i++) {\r\n var b = Matrix.columnVector(matrix.getRow(i));\r\n var Abis = matrix.subMatrixRow(xrange(n, i)).transposeView();\r\n var svd = new SingularValueDecomposition$$1(Abis);\r\n var x = svd.solve(b);\r\n var error = max(Matrix.sub(b, Abis.mmul(x)).abs().to1DArray());\r\n results.setRow(i, dependenciesOneRow(error, x, i, thresholdValue, thresholdError));\r\n }\r\n return results;\r\n}\r\n\r\n/**\r\n * @class EigenvalueDecomposition\r\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/EigenvalueDecomposition.cs\r\n * @param {Matrix} matrix\r\n * @param {object} [options]\r\n * @param {boolean} [options.assumeSymmetric=false]\r\n */\r\n\r\nvar EigenvalueDecomposition$$1 = function () {\r\n function EigenvalueDecomposition$$1(matrix) {\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n classCallCheck(this, EigenvalueDecomposition$$1);\r\n var _options$assumeSymmet = options.assumeSymmetric,\r\n assumeSymmetric = _options$assumeSymmet === undefined ? false : _options$assumeSymmet;\r\n\r\n\r\n matrix = WrapperMatrix2D.checkMatrix(matrix);\r\n if (!matrix.isSquare()) {\r\n throw new Error('Matrix is not a square matrix');\r\n }\r\n\r\n var n = matrix.columns;\r\n var V = getFilled2DArray(n, n, 0);\r\n var d = new Array(n);\r\n var e = new Array(n);\r\n var value = matrix;\r\n var i, j;\r\n\r\n var isSymmetric = false;\r\n if (assumeSymmetric) {\r\n isSymmetric = true;\r\n } else {\r\n isSymmetric = matrix.isSymmetric();\r\n }\r\n\r\n if (isSymmetric) {\r\n for (i = 0; i < n; i++) {\r\n for (j = 0; j < n; j++) {\r\n V[i][j] = value.get(i, j);\r\n }\r\n }\r\n tred2(n, e, d, V);\r\n tql2(n, e, d, V);\r\n } else {\r\n var H = getFilled2DArray(n, n, 0);\r\n var ort = new Array(n);\r\n for (j = 0; j < n; j++) {\r\n for (i = 0; i < n; i++) {\r\n H[i][j] = value.get(i, j);\r\n }\r\n }\r\n orthes(n, H, ort, V);\r\n hqr2(n, e, d, V, H);\r\n }\r\n\r\n this.n = n;\r\n this.e = e;\r\n this.d = d;\r\n this.V = V;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Array}\r\n */\r\n\r\n\r\n createClass(EigenvalueDecomposition$$1, [{\r\n key: 'realEigenvalues',\r\n get: function get$$1() {\r\n return this.d;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Array}\r\n */\r\n\r\n }, {\r\n key: 'imaginaryEigenvalues',\r\n get: function get$$1() {\r\n return this.e;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'eigenvectorMatrix',\r\n get: function get$$1() {\r\n if (!Matrix.isMatrix(this.V)) {\r\n this.V = new Matrix(this.V);\r\n }\r\n return this.V;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'diagonalMatrix',\r\n get: function get$$1() {\r\n var n = this.n;\r\n var e = this.e;\r\n var d = this.d;\r\n var X = new Matrix(n, n);\r\n var i, j;\r\n for (i = 0; i < n; i++) {\r\n for (j = 0; j < n; j++) {\r\n X[i][j] = 0;\r\n }\r\n X[i][i] = d[i];\r\n if (e[i] > 0) {\r\n X[i][i + 1] = e[i];\r\n } else if (e[i] < 0) {\r\n X[i][i - 1] = e[i];\r\n }\r\n }\r\n return X;\r\n }\r\n }]);\r\n return EigenvalueDecomposition$$1;\r\n}();\r\n\r\n\r\nfunction tred2(n, e, d, V) {\r\n var f, g, h, i, j, k, hh, scale;\r\n\r\n for (j = 0; j < n; j++) {\r\n d[j] = V[n - 1][j];\r\n }\r\n\r\n for (i = n - 1; i > 0; i--) {\r\n scale = 0;\r\n h = 0;\r\n for (k = 0; k < i; k++) {\r\n scale = scale + Math.abs(d[k]);\r\n }\r\n\r\n if (scale === 0) {\r\n e[i] = d[i - 1];\r\n for (j = 0; j < i; j++) {\r\n d[j] = V[i - 1][j];\r\n V[i][j] = 0;\r\n V[j][i] = 0;\r\n }\r\n } else {\r\n for (k = 0; k < i; k++) {\r\n d[k] /= scale;\r\n h += d[k] * d[k];\r\n }\r\n\r\n f = d[i - 1];\r\n g = Math.sqrt(h);\r\n if (f > 0) {\r\n g = -g;\r\n }\r\n\r\n e[i] = scale * g;\r\n h = h - f * g;\r\n d[i - 1] = f - g;\r\n for (j = 0; j < i; j++) {\r\n e[j] = 0;\r\n }\r\n\r\n for (j = 0; j < i; j++) {\r\n f = d[j];\r\n V[j][i] = f;\r\n g = e[j] + V[j][j] * f;\r\n for (k = j + 1; k <= i - 1; k++) {\r\n g += V[k][j] * d[k];\r\n e[k] += V[k][j] * f;\r\n }\r\n e[j] = g;\r\n }\r\n\r\n f = 0;\r\n for (j = 0; j < i; j++) {\r\n e[j] /= h;\r\n f += e[j] * d[j];\r\n }\r\n\r\n hh = f / (h + h);\r\n for (j = 0; j < i; j++) {\r\n e[j] -= hh * d[j];\r\n }\r\n\r\n for (j = 0; j < i; j++) {\r\n f = d[j];\r\n g = e[j];\r\n for (k = j; k <= i - 1; k++) {\r\n V[k][j] -= f * e[k] + g * d[k];\r\n }\r\n d[j] = V[i - 1][j];\r\n V[i][j] = 0;\r\n }\r\n }\r\n d[i] = h;\r\n }\r\n\r\n for (i = 0; i < n - 1; i++) {\r\n V[n - 1][i] = V[i][i];\r\n V[i][i] = 1;\r\n h = d[i + 1];\r\n if (h !== 0) {\r\n for (k = 0; k <= i; k++) {\r\n d[k] = V[k][i + 1] / h;\r\n }\r\n\r\n for (j = 0; j <= i; j++) {\r\n g = 0;\r\n for (k = 0; k <= i; k++) {\r\n g += V[k][i + 1] * V[k][j];\r\n }\r\n for (k = 0; k <= i; k++) {\r\n V[k][j] -= g * d[k];\r\n }\r\n }\r\n }\r\n\r\n for (k = 0; k <= i; k++) {\r\n V[k][i + 1] = 0;\r\n }\r\n }\r\n\r\n for (j = 0; j < n; j++) {\r\n d[j] = V[n - 1][j];\r\n V[n - 1][j] = 0;\r\n }\r\n\r\n V[n - 1][n - 1] = 1;\r\n e[0] = 0;\r\n}\r\n\r\nfunction tql2(n, e, d, V) {\r\n var g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\r\n\r\n for (i = 1; i < n; i++) {\r\n e[i - 1] = e[i];\r\n }\r\n\r\n e[n - 1] = 0;\r\n\r\n var f = 0;\r\n var tst1 = 0;\r\n var eps = Number.EPSILON;\r\n\r\n for (l = 0; l < n; l++) {\r\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\r\n m = l;\r\n while (m < n) {\r\n if (Math.abs(e[m]) <= eps * tst1) {\r\n break;\r\n }\r\n m++;\r\n }\r\n\r\n if (m > l) {\r\n do {\r\n\r\n g = d[l];\r\n p = (d[l + 1] - g) / (2 * e[l]);\r\n r = hypotenuse(p, 1);\r\n if (p < 0) {\r\n r = -r;\r\n }\r\n\r\n d[l] = e[l] / (p + r);\r\n d[l + 1] = e[l] * (p + r);\r\n dl1 = d[l + 1];\r\n h = g - d[l];\r\n for (i = l + 2; i < n; i++) {\r\n d[i] -= h;\r\n }\r\n\r\n f = f + h;\r\n\r\n p = d[m];\r\n c = 1;\r\n c2 = c;\r\n c3 = c;\r\n el1 = e[l + 1];\r\n s = 0;\r\n s2 = 0;\r\n for (i = m - 1; i >= l; i--) {\r\n c3 = c2;\r\n c2 = c;\r\n s2 = s;\r\n g = c * e[i];\r\n h = c * p;\r\n r = hypotenuse(p, e[i]);\r\n e[i + 1] = s * r;\r\n s = e[i] / r;\r\n c = p / r;\r\n p = c * d[i] - s * g;\r\n d[i + 1] = h + s * (c * g + s * d[i]);\r\n\r\n for (k = 0; k < n; k++) {\r\n h = V[k][i + 1];\r\n V[k][i + 1] = s * V[k][i] + c * h;\r\n V[k][i] = c * V[k][i] - s * h;\r\n }\r\n }\r\n\r\n p = -s * s2 * c3 * el1 * e[l] / dl1;\r\n e[l] = s * p;\r\n d[l] = c * p;\r\n } while (Math.abs(e[l]) > eps * tst1);\r\n }\r\n d[l] = d[l] + f;\r\n e[l] = 0;\r\n }\r\n\r\n for (i = 0; i < n - 1; i++) {\r\n k = i;\r\n p = d[i];\r\n for (j = i + 1; j < n; j++) {\r\n if (d[j] < p) {\r\n k = j;\r\n p = d[j];\r\n }\r\n }\r\n\r\n if (k !== i) {\r\n d[k] = d[i];\r\n d[i] = p;\r\n for (j = 0; j < n; j++) {\r\n p = V[j][i];\r\n V[j][i] = V[j][k];\r\n V[j][k] = p;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction orthes(n, H, ort, V) {\r\n var low = 0;\r\n var high = n - 1;\r\n var f, g, h, i, j, m;\r\n var scale;\r\n\r\n for (m = low + 1; m <= high - 1; m++) {\r\n scale = 0;\r\n for (i = m; i <= high; i++) {\r\n scale = scale + Math.abs(H[i][m - 1]);\r\n }\r\n\r\n if (scale !== 0) {\r\n h = 0;\r\n for (i = high; i >= m; i--) {\r\n ort[i] = H[i][m - 1] / scale;\r\n h += ort[i] * ort[i];\r\n }\r\n\r\n g = Math.sqrt(h);\r\n if (ort[m] > 0) {\r\n g = -g;\r\n }\r\n\r\n h = h - ort[m] * g;\r\n ort[m] = ort[m] - g;\r\n\r\n for (j = m; j < n; j++) {\r\n f = 0;\r\n for (i = high; i >= m; i--) {\r\n f += ort[i] * H[i][j];\r\n }\r\n\r\n f = f / h;\r\n for (i = m; i <= high; i++) {\r\n H[i][j] -= f * ort[i];\r\n }\r\n }\r\n\r\n for (i = 0; i <= high; i++) {\r\n f = 0;\r\n for (j = high; j >= m; j--) {\r\n f += ort[j] * H[i][j];\r\n }\r\n\r\n f = f / h;\r\n for (j = m; j <= high; j++) {\r\n H[i][j] -= f * ort[j];\r\n }\r\n }\r\n\r\n ort[m] = scale * ort[m];\r\n H[m][m - 1] = scale * g;\r\n }\r\n }\r\n\r\n for (i = 0; i < n; i++) {\r\n for (j = 0; j < n; j++) {\r\n V[i][j] = i === j ? 1 : 0;\r\n }\r\n }\r\n\r\n for (m = high - 1; m >= low + 1; m--) {\r\n if (H[m][m - 1] !== 0) {\r\n for (i = m + 1; i <= high; i++) {\r\n ort[i] = H[i][m - 1];\r\n }\r\n\r\n for (j = m; j <= high; j++) {\r\n g = 0;\r\n for (i = m; i <= high; i++) {\r\n g += ort[i] * V[i][j];\r\n }\r\n\r\n g = g / ort[m] / H[m][m - 1];\r\n for (i = m; i <= high; i++) {\r\n V[i][j] += g * ort[i];\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction hqr2(nn, e, d, V, H) {\r\n var n = nn - 1;\r\n var low = 0;\r\n var high = nn - 1;\r\n var eps = Number.EPSILON;\r\n var exshift = 0;\r\n var norm = 0;\r\n var p = 0;\r\n var q = 0;\r\n var r = 0;\r\n var s = 0;\r\n var z = 0;\r\n var iter = 0;\r\n var i, j, k, l, m, t, w, x, y;\r\n var ra, sa, vr, vi;\r\n var notlast, cdivres;\r\n\r\n for (i = 0; i < nn; i++) {\r\n if (i < low || i > high) {\r\n d[i] = H[i][i];\r\n e[i] = 0;\r\n }\r\n\r\n for (j = Math.max(i - 1, 0); j < nn; j++) {\r\n norm = norm + Math.abs(H[i][j]);\r\n }\r\n }\r\n\r\n while (n >= low) {\r\n l = n;\r\n while (l > low) {\r\n s = Math.abs(H[l - 1][l - 1]) + Math.abs(H[l][l]);\r\n if (s === 0) {\r\n s = norm;\r\n }\r\n if (Math.abs(H[l][l - 1]) < eps * s) {\r\n break;\r\n }\r\n l--;\r\n }\r\n\r\n if (l === n) {\r\n H[n][n] = H[n][n] + exshift;\r\n d[n] = H[n][n];\r\n e[n] = 0;\r\n n--;\r\n iter = 0;\r\n } else if (l === n - 1) {\r\n w = H[n][n - 1] * H[n - 1][n];\r\n p = (H[n - 1][n - 1] - H[n][n]) / 2;\r\n q = p * p + w;\r\n z = Math.sqrt(Math.abs(q));\r\n H[n][n] = H[n][n] + exshift;\r\n H[n - 1][n - 1] = H[n - 1][n - 1] + exshift;\r\n x = H[n][n];\r\n\r\n if (q >= 0) {\r\n z = p >= 0 ? p + z : p - z;\r\n d[n - 1] = x + z;\r\n d[n] = d[n - 1];\r\n if (z !== 0) {\r\n d[n] = x - w / z;\r\n }\r\n e[n - 1] = 0;\r\n e[n] = 0;\r\n x = H[n][n - 1];\r\n s = Math.abs(x) + Math.abs(z);\r\n p = x / s;\r\n q = z / s;\r\n r = Math.sqrt(p * p + q * q);\r\n p = p / r;\r\n q = q / r;\r\n\r\n for (j = n - 1; j < nn; j++) {\r\n z = H[n - 1][j];\r\n H[n - 1][j] = q * z + p * H[n][j];\r\n H[n][j] = q * H[n][j] - p * z;\r\n }\r\n\r\n for (i = 0; i <= n; i++) {\r\n z = H[i][n - 1];\r\n H[i][n - 1] = q * z + p * H[i][n];\r\n H[i][n] = q * H[i][n] - p * z;\r\n }\r\n\r\n for (i = low; i <= high; i++) {\r\n z = V[i][n - 1];\r\n V[i][n - 1] = q * z + p * V[i][n];\r\n V[i][n] = q * V[i][n] - p * z;\r\n }\r\n } else {\r\n d[n - 1] = x + p;\r\n d[n] = x + p;\r\n e[n - 1] = z;\r\n e[n] = -z;\r\n }\r\n\r\n n = n - 2;\r\n iter = 0;\r\n } else {\r\n x = H[n][n];\r\n y = 0;\r\n w = 0;\r\n if (l < n) {\r\n y = H[n - 1][n - 1];\r\n w = H[n][n - 1] * H[n - 1][n];\r\n }\r\n\r\n if (iter === 10) {\r\n exshift += x;\r\n for (i = low; i <= n; i++) {\r\n H[i][i] -= x;\r\n }\r\n s = Math.abs(H[n][n - 1]) + Math.abs(H[n - 1][n - 2]);\r\n x = y = 0.75 * s;\r\n w = -0.4375 * s * s;\r\n }\r\n\r\n if (iter === 30) {\r\n s = (y - x) / 2;\r\n s = s * s + w;\r\n if (s > 0) {\r\n s = Math.sqrt(s);\r\n if (y < x) {\r\n s = -s;\r\n }\r\n s = x - w / ((y - x) / 2 + s);\r\n for (i = low; i <= n; i++) {\r\n H[i][i] -= s;\r\n }\r\n exshift += s;\r\n x = y = w = 0.964;\r\n }\r\n }\r\n\r\n iter = iter + 1;\r\n\r\n m = n - 2;\r\n while (m >= l) {\r\n z = H[m][m];\r\n r = x - z;\r\n s = y - z;\r\n p = (r * s - w) / H[m + 1][m] + H[m][m + 1];\r\n q = H[m + 1][m + 1] - z - r - s;\r\n r = H[m + 2][m + 1];\r\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\r\n p = p / s;\r\n q = q / s;\r\n r = r / s;\r\n if (m === l) {\r\n break;\r\n }\r\n if (Math.abs(H[m][m - 1]) * (Math.abs(q) + Math.abs(r)) < eps * (Math.abs(p) * (Math.abs(H[m - 1][m - 1]) + Math.abs(z) + Math.abs(H[m + 1][m + 1])))) {\r\n break;\r\n }\r\n m--;\r\n }\r\n\r\n for (i = m + 2; i <= n; i++) {\r\n H[i][i - 2] = 0;\r\n if (i > m + 2) {\r\n H[i][i - 3] = 0;\r\n }\r\n }\r\n\r\n for (k = m; k <= n - 1; k++) {\r\n notlast = k !== n - 1;\r\n if (k !== m) {\r\n p = H[k][k - 1];\r\n q = H[k + 1][k - 1];\r\n r = notlast ? H[k + 2][k - 1] : 0;\r\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\r\n if (x !== 0) {\r\n p = p / x;\r\n q = q / x;\r\n r = r / x;\r\n }\r\n }\r\n\r\n if (x === 0) {\r\n break;\r\n }\r\n\r\n s = Math.sqrt(p * p + q * q + r * r);\r\n if (p < 0) {\r\n s = -s;\r\n }\r\n\r\n if (s !== 0) {\r\n if (k !== m) {\r\n H[k][k - 1] = -s * x;\r\n } else if (l !== m) {\r\n H[k][k - 1] = -H[k][k - 1];\r\n }\r\n\r\n p = p + s;\r\n x = p / s;\r\n y = q / s;\r\n z = r / s;\r\n q = q / p;\r\n r = r / p;\r\n\r\n for (j = k; j < nn; j++) {\r\n p = H[k][j] + q * H[k + 1][j];\r\n if (notlast) {\r\n p = p + r * H[k + 2][j];\r\n H[k + 2][j] = H[k + 2][j] - p * z;\r\n }\r\n\r\n H[k][j] = H[k][j] - p * x;\r\n H[k + 1][j] = H[k + 1][j] - p * y;\r\n }\r\n\r\n for (i = 0; i <= Math.min(n, k + 3); i++) {\r\n p = x * H[i][k] + y * H[i][k + 1];\r\n if (notlast) {\r\n p = p + z * H[i][k + 2];\r\n H[i][k + 2] = H[i][k + 2] - p * r;\r\n }\r\n\r\n H[i][k] = H[i][k] - p;\r\n H[i][k + 1] = H[i][k + 1] - p * q;\r\n }\r\n\r\n for (i = low; i <= high; i++) {\r\n p = x * V[i][k] + y * V[i][k + 1];\r\n if (notlast) {\r\n p = p + z * V[i][k + 2];\r\n V[i][k + 2] = V[i][k + 2] - p * r;\r\n }\r\n\r\n V[i][k] = V[i][k] - p;\r\n V[i][k + 1] = V[i][k + 1] - p * q;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (norm === 0) {\r\n return;\r\n }\r\n\r\n for (n = nn - 1; n >= 0; n--) {\r\n p = d[n];\r\n q = e[n];\r\n\r\n if (q === 0) {\r\n l = n;\r\n H[n][n] = 1;\r\n for (i = n - 1; i >= 0; i--) {\r\n w = H[i][i] - p;\r\n r = 0;\r\n for (j = l; j <= n; j++) {\r\n r = r + H[i][j] * H[j][n];\r\n }\r\n\r\n if (e[i] < 0) {\r\n z = w;\r\n s = r;\r\n } else {\r\n l = i;\r\n if (e[i] === 0) {\r\n H[i][n] = w !== 0 ? -r / w : -r / (eps * norm);\r\n } else {\r\n x = H[i][i + 1];\r\n y = H[i + 1][i];\r\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\r\n t = (x * s - z * r) / q;\r\n H[i][n] = t;\r\n H[i + 1][n] = Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z;\r\n }\r\n\r\n t = Math.abs(H[i][n]);\r\n if (eps * t * t > 1) {\r\n for (j = i; j <= n; j++) {\r\n H[j][n] = H[j][n] / t;\r\n }\r\n }\r\n }\r\n }\r\n } else if (q < 0) {\r\n l = n - 1;\r\n\r\n if (Math.abs(H[n][n - 1]) > Math.abs(H[n - 1][n])) {\r\n H[n - 1][n - 1] = q / H[n][n - 1];\r\n H[n - 1][n] = -(H[n][n] - p) / H[n][n - 1];\r\n } else {\r\n cdivres = cdiv(0, -H[n - 1][n], H[n - 1][n - 1] - p, q);\r\n H[n - 1][n - 1] = cdivres[0];\r\n H[n - 1][n] = cdivres[1];\r\n }\r\n\r\n H[n][n - 1] = 0;\r\n H[n][n] = 1;\r\n for (i = n - 2; i >= 0; i--) {\r\n ra = 0;\r\n sa = 0;\r\n for (j = l; j <= n; j++) {\r\n ra = ra + H[i][j] * H[j][n - 1];\r\n sa = sa + H[i][j] * H[j][n];\r\n }\r\n\r\n w = H[i][i] - p;\r\n\r\n if (e[i] < 0) {\r\n z = w;\r\n r = ra;\r\n s = sa;\r\n } else {\r\n l = i;\r\n if (e[i] === 0) {\r\n cdivres = cdiv(-ra, -sa, w, q);\r\n H[i][n - 1] = cdivres[0];\r\n H[i][n] = cdivres[1];\r\n } else {\r\n x = H[i][i + 1];\r\n y = H[i + 1][i];\r\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\r\n vi = (d[i] - p) * 2 * q;\r\n if (vr === 0 && vi === 0) {\r\n vr = eps * norm * (Math.abs(w) + Math.abs(q) + Math.abs(x) + Math.abs(y) + Math.abs(z));\r\n }\r\n cdivres = cdiv(x * r - z * ra + q * sa, x * s - z * sa - q * ra, vr, vi);\r\n H[i][n - 1] = cdivres[0];\r\n H[i][n] = cdivres[1];\r\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\r\n H[i + 1][n - 1] = (-ra - w * H[i][n - 1] + q * H[i][n]) / x;\r\n H[i + 1][n] = (-sa - w * H[i][n] - q * H[i][n - 1]) / x;\r\n } else {\r\n cdivres = cdiv(-r - y * H[i][n - 1], -s - y * H[i][n], z, q);\r\n H[i + 1][n - 1] = cdivres[0];\r\n H[i + 1][n] = cdivres[1];\r\n }\r\n }\r\n\r\n t = Math.max(Math.abs(H[i][n - 1]), Math.abs(H[i][n]));\r\n if (eps * t * t > 1) {\r\n for (j = i; j <= n; j++) {\r\n H[j][n - 1] = H[j][n - 1] / t;\r\n H[j][n] = H[j][n] / t;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (i = 0; i < nn; i++) {\r\n if (i < low || i > high) {\r\n for (j = i; j < nn; j++) {\r\n V[i][j] = H[i][j];\r\n }\r\n }\r\n }\r\n\r\n for (j = nn - 1; j >= low; j--) {\r\n for (i = low; i <= high; i++) {\r\n z = 0;\r\n for (k = low; k <= Math.min(j, high); k++) {\r\n z = z + V[i][k] * H[k][j];\r\n }\r\n V[i][j] = z;\r\n }\r\n }\r\n}\r\n\r\nfunction cdiv(xr, xi, yr, yi) {\r\n var r, d;\r\n if (Math.abs(yr) > Math.abs(yi)) {\r\n r = yi / yr;\r\n d = yr + r * yi;\r\n return [(xr + r * xi) / d, (xi - r * xr) / d];\r\n } else {\r\n r = yr / yi;\r\n d = yi + r * yr;\r\n return [(r * xr + xi) / d, (r * xi - xr) / d];\r\n }\r\n}\r\n\r\n/**\r\n * @class CholeskyDecomposition\r\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/CholeskyDecomposition.cs\r\n * @param {Matrix} value\r\n */\r\n\r\nvar CholeskyDecomposition$$1 = function () {\r\n function CholeskyDecomposition$$1(value) {\r\n classCallCheck(this, CholeskyDecomposition$$1);\r\n\r\n value = WrapperMatrix2D.checkMatrix(value);\r\n if (!value.isSymmetric()) {\r\n throw new Error('Matrix is not symmetric');\r\n }\r\n\r\n var a = value;\r\n var dimension = a.rows;\r\n var l = new Matrix(dimension, dimension);\r\n var positiveDefinite = true;\r\n var i, j, k;\r\n\r\n for (j = 0; j < dimension; j++) {\r\n var Lrowj = l[j];\r\n var d = 0;\r\n for (k = 0; k < j; k++) {\r\n var Lrowk = l[k];\r\n var s = 0;\r\n for (i = 0; i < k; i++) {\r\n s += Lrowk[i] * Lrowj[i];\r\n }\r\n Lrowj[k] = s = (a.get(j, k) - s) / l[k][k];\r\n d = d + s * s;\r\n }\r\n\r\n d = a.get(j, j) - d;\r\n\r\n positiveDefinite &= d > 0;\r\n l[j][j] = Math.sqrt(Math.max(d, 0));\r\n for (k = j + 1; k < dimension; k++) {\r\n l[j][k] = 0;\r\n }\r\n }\r\n\r\n if (!positiveDefinite) {\r\n throw new Error('Matrix is not positive definite');\r\n }\r\n\r\n this.L = l;\r\n }\r\n\r\n /**\r\n *\r\n * @param {Matrix} value\r\n * @return {Matrix}\r\n */\r\n\r\n\r\n createClass(CholeskyDecomposition$$1, [{\r\n key: 'solve',\r\n value: function solve(value) {\r\n value = WrapperMatrix2D.checkMatrix(value);\r\n\r\n var l = this.L;\r\n var dimension = l.rows;\r\n\r\n if (value.rows !== dimension) {\r\n throw new Error('Matrix dimensions do not match');\r\n }\r\n\r\n var count = value.columns;\r\n var B = value.clone();\r\n var i, j, k;\r\n\r\n for (k = 0; k < dimension; k++) {\r\n for (j = 0; j < count; j++) {\r\n for (i = 0; i < k; i++) {\r\n B[k][j] -= B[i][j] * l[k][i];\r\n }\r\n B[k][j] /= l[k][k];\r\n }\r\n }\r\n\r\n for (k = dimension - 1; k >= 0; k--) {\r\n for (j = 0; j < count; j++) {\r\n for (i = k + 1; i < dimension; i++) {\r\n B[k][j] -= B[i][j] * l[i][k];\r\n }\r\n B[k][j] /= l[k][k];\r\n }\r\n }\r\n\r\n return B;\r\n }\r\n\r\n /**\r\n *\r\n * @return {Matrix}\r\n */\r\n\r\n }, {\r\n key: 'lowerTriangularMatrix',\r\n get: function get$$1() {\r\n return this.L;\r\n }\r\n }]);\r\n return CholeskyDecomposition$$1;\r\n}();\r\n\r\nexports.default = Matrix;\r\nexports.Matrix = Matrix;\r\nexports.abstractMatrix = AbstractMatrix;\r\nexports.wrap = wrap;\r\nexports.WrapperMatrix2D = WrapperMatrix2D;\r\nexports.WrapperMatrix1D = WrapperMatrix1D;\r\nexports.solve = solve$$1;\r\nexports.inverse = inverse$$1;\r\nexports.linearDependencies = linearDependencies;\r\nexports.SingularValueDecomposition = SingularValueDecomposition$$1;\r\nexports.SVD = SingularValueDecomposition$$1;\r\nexports.EigenvalueDecomposition = EigenvalueDecomposition$$1;\r\nexports.EVD = EigenvalueDecomposition$$1;\r\nexports.CholeskyDecomposition = CholeskyDecomposition$$1;\r\nexports.CHO = CholeskyDecomposition$$1;\r\nexports.LuDecomposition = LuDecomposition$$1;\r\nexports.LU = LuDecomposition$$1;\r\nexports.QrDecomposition = QrDecomposition$$1;\r\nexports.QR = QrDecomposition$$1;\r\n","import { LOAD_CONFIG } from '../actionTypes';\r\nimport { ConfigState, LoadConfigAction } from './constants';\r\n\r\nexport default {\r\n loadConfig\r\n};\r\n\r\nexport function loadConfig(config: ConfigState): LoadConfigAction {\r\n return {\r\n type: LOAD_CONFIG,\r\n config\r\n };\r\n}\r\n","import { SET_LANGUAGE, LOAD_TRANSLATIONS } from \"../actionTypes\";\r\nimport { SetLanguageAction, LoadTranslationsAction } from \"./constants\";\r\n\r\nexport default {\r\n setLanguage,\r\n loadTranslations,\r\n};\r\n\r\nexport function setLanguage(languageCode: string): SetLanguageAction {\r\n return {\r\n type: SET_LANGUAGE,\r\n languageCode,\r\n };\r\n}\r\n\r\nexport function loadTranslations(translations: {}): LoadTranslationsAction {\r\n return {\r\n type: LOAD_TRANSLATIONS,\r\n translations,\r\n };\r\n}\r\n","import store, { StoreState } from \"../store\";\r\nimport { get } from \"../utilities/net\";\r\n\r\nconst getApiUrl = () => (store.getState() as StoreState).config.apiUrl;\r\n\r\nexport function getConfig() {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n return get(\"/config-local.json\");\r\n } else {\r\n return get(\"/config.json\");\r\n }\r\n}\r\n\r\nexport function getTranslations(languageCode: string) {\r\n return get(`${getApiUrl()}/translations?languageCode=${languageCode}`);\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { StoreState } from \"../../store\";\r\nimport ConfigActions from \"../../store/config/actions\";\r\nimport LanguageActions from \"../../store/language/actions\";\r\nimport { getConfig, getTranslations } from \"../../services/configApi\";\r\n\r\ninterface ConfigLoaderProps {\r\n fallback: any;\r\n error: any;\r\n children: any;\r\n languageCode: string;\r\n loaded: boolean;\r\n loadConfig: (config) => any;\r\n loadTranslations: (translations) => any;\r\n}\r\n\r\nconst ConfigLoader: React.SFC = ({\r\n fallback,\r\n error,\r\n children,\r\n languageCode,\r\n loaded,\r\n loadConfig,\r\n loadTranslations,\r\n}) => {\r\n const [hasError, setHasError] = useState(false);\r\n\r\n useEffect(() => {\r\n (async function () {\r\n try {\r\n // Must be run sequentially, due to API URL being loaded in getConfig\r\n loadConfig(await getConfig());\r\n loadTranslations(await getTranslations(languageCode));\r\n } catch {\r\n setHasError(true);\r\n }\r\n })();\r\n }, [languageCode]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n if (hasError) {\r\n return error;\r\n }\r\n\r\n return loaded ? children : fallback;\r\n};\r\n\r\nexport default connect(\r\n ({ language }: StoreState) => ({\r\n languageCode: language.languageCode,\r\n loaded: !!language.translations,\r\n }),\r\n (dispatch) =>\r\n bindActionCreators(\r\n {\r\n loadConfig: (config) => ConfigActions.loadConfig(config),\r\n loadTranslations: (translations) =>\r\n LanguageActions.loadTranslations(translations),\r\n },\r\n dispatch\r\n )\r\n)(ConfigLoader);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouterProps, Redirect } from 'react-router';\r\nimport { StoreState } from '../../store';\r\n\r\ninterface ValidatorProps extends RouterProps {\r\n processHasStarted: boolean;\r\n}\r\n\r\nconst EnsureProcessHasStarted = (Component: any) => {\r\n const Validator: React.SFC = ({ processHasStarted, ...restProps }) =>\r\n processHasStarted ? : ;\r\n\r\n return connect(({ process, progress }: StoreState) => ({\r\n processHasStarted: progress.processHasStarted && process.activeProcessId\r\n }))(Validator as any);\r\n};\r\n\r\nexport default EnsureProcessHasStarted;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst NotFoundPage = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Sorry, but the page you requested could not be found.

\r\n

This happens when:

\r\n
    \r\n
  • You mis-typed the address in your browser.
  • \r\n
  • The page has been moved or deleted.
  • \r\n
  • The linked you followed is incorrect or out-of-date.
  • \r\n
\r\n

What to do now?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default NotFoundPage;\r\n","import React from 'react';\r\n\r\nconst ErrorPage = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Sorry, the service is currently unavailable.

\r\n

This is probably an issue on our end.

\r\n

What to do now?

\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorPage;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ModalActions from '../../store/modal/actions';\r\nimport { MODAL_TYPES } from '../../store/modal/constants';\r\nimport L from '../literal';\r\n\r\ninterface LegalModal {\r\n openModal: () => any;\r\n}\r\n\r\nexport const LegalTermsLink: React.SFC = ({ openModal }) => (\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n \r\n TERMS_AND_CONDITIONS\r\n \r\n);\r\n\r\nexport default connect(null, dispatch =>\r\n bindActionCreators(\r\n {\r\n openModal: () => ModalActions.showModal(MODAL_TYPES.LEGAL)\r\n },\r\n dispatch\r\n )\r\n)(LegalTermsLink);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ModalActions from '../../store/modal/actions';\r\nimport { MODAL_TYPES } from '../../store/modal/constants';\r\nimport L from '../literal';\r\n\r\ninterface PrivacyModal {\r\n openModal: () => any;\r\n}\r\n\r\nexport const PrivacyPolicyLink: React.SFC = ({ openModal }) => (\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n \r\n PRIVACY_POLICY\r\n \r\n);\r\n\r\nexport default connect(null, dispatch =>\r\n bindActionCreators(\r\n {\r\n openModal: () => ModalActions.showModal(MODAL_TYPES.PRIVACY)\r\n },\r\n dispatch\r\n )\r\n)(PrivacyPolicyLink);\r\n","/* tslint:disable */\r\n/* eslint-disable react/jsx-no-target-blank */\r\nimport React from 'react';\r\nimport {\r\n FacebookIcon,\r\n TwitterIcon,\r\n LinkedinIcon,\r\n GPlusIcon,\r\n EmailIcon\r\n} from '../../assets/icons';\r\nimport LegalTermsLink from '../legalTermsLink';\r\nimport PrivacyPolicyLink from '../privacyPolicyLink/';\r\nimport { registerInteraction } from '../../utilities/analytics';\r\nimport L from '../literal';\r\n\r\nexport class Footer extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { openModal: '' };\r\n }\r\n render() {\r\n const currentPage = document.location.origin;\r\n var Fb = 'https://www.facebook.com/sharer.php?u=' + currentPage;\r\n var Twitter = 'https://twitter.com/intent/tweet?url=' + currentPage;\r\n var LinkedIn =\r\n 'https://www.linkedin.com/shareArticle?mini=true&url=' + currentPage;\r\n var GPlus = 'https://plus.google.com/share?url=' + currentPage;\r\n var eSubj = encodeURI('Explore');\r\n var eBody = encodeURI(currentPage);\r\n var EmailSharing = 'mailto:explore@alfalaval.com?subject=' + eSubj + '&body=' + eBody;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Footer;\r\n","import React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ClientCaseActions from '../../store/clientCase/actions';\r\n\r\ninterface LoadClientCaseProps extends RouteComponentProps {\r\n actions: typeof ClientCaseActions;\r\n}\r\n\r\nclass LoadClientCase extends React.PureComponent {\r\n componentDidMount() {\r\n const { actions, match: { params } } = this.props;\r\n const { caseId } = params;\r\n\r\n actions.loadCase(caseId);\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n\r\nexport default connect(\r\n null,\r\n dispatch => ({\r\n actions: bindActionCreators(ClientCaseActions, dispatch)\r\n })\r\n)(LoadClientCase);\r\n","import React from 'react';\r\nimport { LoadingSpinner } from '../../assets/icons';\r\n\r\nconst Loader = () => (\r\n
\r\n \r\n

Just a second...

\r\n
\r\n);\r\n\r\nexport default Loader;\r\n","import React from 'react';\r\nimport Ionicon from 'react-ionicons';\r\n\r\ninterface ModalProps {\r\n children?: React.ReactChild | React.ReactChild[];\r\n title: string | React.ReactNode;\r\n actions: {\r\n closeModal: () => any;\r\n };\r\n}\r\n\r\nclass Modal extends React.PureComponent {\r\n modal: HTMLDivElement | null;\r\n modalBackdrop: HTMLDivElement | null;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.modal = null;\r\n this.modalBackdrop = null;\r\n }\r\n\r\n closeModal = () => {\r\n this.props.actions.closeModal();\r\n }\r\n\r\n onCloseModal = (e: Event) => {\r\n if (!this.modal!.contains(e.target! as Element)) {\r\n this.closeModal();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.body.classList.add('prevent-scroll');\r\n this.modalBackdrop!.addEventListener('click', this.onCloseModal, true);\r\n }\r\n\r\n componentWillUnmount() {\r\n document.body.classList.remove('prevent-scroll');\r\n this.modalBackdrop!.removeEventListener('click', this.onCloseModal);\r\n }\r\n\r\n render() {\r\n const { children, title } = this.props;\r\n return (\r\n
(this.modalBackdrop = ref)}>\r\n
(this.modal = ref)}>\r\n \r\n {title}\r\n {children}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Modal;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ClientCaseActions from '../../store/clientCase/actions';\r\nimport ModalActions from '../../store/modal/actions';\r\nimport { Link } from 'react-router-dom';\r\nimport L from '../literal';\r\n\r\ninterface ClearDataFormProps {\r\n clearData: () => any;\r\n closeModal: () => any;\r\n}\r\n\r\nconst ClearDataForm: React.SFC = ({\r\n clearData,\r\n closeModal\r\n}) => (\r\n
\r\n \r\n MODAL_CLEAR_DATA__INFO\r\n
\r\n
\r\n \r\n MODAL_CLEAR_DATA__NEW_TAB\r\n \r\n
\r\n
\r\n \r\n MODAL_CLEAR_DATA__YES\r\n \r\n\r\n \r\n
\r\n
\r\n);\r\n\r\nexport default connect(null, dispatch =>\r\n bindActionCreators(\r\n {\r\n clearData: ClientCaseActions.clearData,\r\n closeModal: ModalActions.closeModal\r\n },\r\n dispatch\r\n )\r\n)(ClearDataForm);\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { FormElement, FormElementProps } from '../formElement';\r\n\r\ninterface TextBoxProps extends FormElementProps {\r\n onChange?: (value: string) => any;\r\n id?: string;\r\n value?: string;\r\n placeholder?: string;\r\n isInvalid?: boolean;\r\n disabled?: boolean;\r\n readOnly?: boolean;\r\n}\r\n\r\nconst TextBox: React.SFC = ({\r\n id,\r\n onChange,\r\n value,\r\n placeholder,\r\n isInvalid,\r\n disabled,\r\n readOnly,\r\n ...restProps\r\n}) => (\r\n \r\n onChange!(e.target.value)}\r\n />\r\n \r\n);\r\n\r\nTextBox.defaultProps = {\r\n onChange: () => null\r\n};\r\n\r\nexport default TextBox;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ClientCaseActions from '../../store/clientCase/actions';\r\nimport TextBox from '../textBox';\r\nimport { StoreState } from '../../store';\r\nimport L from '../literal';\r\n\r\nconst copyToClipBoard = (inputSelector: string): any => {\r\n const inputElement = document.querySelector(inputSelector) as HTMLInputElement;\r\n if (!inputElement) {\r\n return;\r\n }\r\n\r\n const isReadOnly = inputElement.hasAttribute('readonly');\r\n\r\n if (!isReadOnly) {\r\n inputElement.setAttribute('readonly', '');\r\n }\r\n\r\n inputElement.select();\r\n inputElement.setSelectionRange(0, inputElement.value.length);\r\n\r\n if (!isReadOnly) {\r\n inputElement.removeAttribute('readonly');\r\n }\r\n\r\n document.execCommand('copy');\r\n};\r\n\r\ninterface DataSavedFormProps {\r\n actions: typeof ClientCaseActions;\r\n caseId: string;\r\n}\r\nfunction sendEmail(caseId: string) {\r\n const urlToCase = `${document.location.origin}/explore/${caseId}`;\r\n var eSubj = encodeURI('Explore');\r\n var eBody = encodeURI(urlToCase);\r\n var emailSharing = 'mailto:?subject=' + eSubj + '&body=' + eBody;\r\n\r\n window.location.href = emailSharing;\r\n}\r\nconst DataSavedForm: React.SFC = ({\r\n actions,\r\n caseId\r\n}) => (\r\n
\r\n \r\n MODAL_DATA_SAVED__INFO\r\n \r\n \r\n
\r\n copyToClipBoard('#link-textbox')}\r\n >\r\n MODAL_DATA_SAVED__COPY\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n sendEmail(caseId)}\r\n >\r\n MODAL_DATA_SAVED__EMAIL_SHARE\r\n \r\n
\r\n
\r\n );\r\n\r\nexport default connect(\r\n ({ clientCase }: StoreState) => ({\r\n caseId: clientCase.caseId\r\n }),\r\n dispatch => ({\r\n actions: bindActionCreators(ClientCaseActions, dispatch)\r\n })\r\n)(DataSavedForm);\r\n","import React from 'react';\r\n\r\nexport interface DocumentViewerProps {\r\n children?: any;\r\n}\r\n\r\nexport const DocumentViewer: React.SFC = ({\r\n children\r\n}) => (\r\n
{children}
\r\n);\r\n\r\nexport default DocumentViewer;\r\n","import React from 'react';\r\nimport DocumentViewer from './documentView';\r\n\r\nconst TermsConditions = () => (\r\n \r\n

User terms and compliance requirements for Alfa Laval

\r\n

1. Introduction

\r\n

\r\n Alfa Laval Corporate AB, 556007-7785, PO Box 73, SE-221 00 Lund, Sweden,\r\n operates multiple websites. Some of the websites enable customers and Alfa\r\n Laval’s business partners to connect, such as Alfa Laval’s product guide\r\n and InTouch. As a customer or an Alfa Laval business partner, your use of\r\n such websites is subject to the following terms and conditions (the\r\n “Terms”). As a customer, your use of the website for Alfa Laval’s\r\n webshop is also subject to the Terms.\r\n

\r\n

\r\n All are welcome to visit Alfa Laval’s websites. However, by accessing Alfa\r\n Laval’s webshop or one of the websites that enable customers and Alfa\r\n Laval’s business partners to connect, you agree to be bound by the Terms.\r\n If you do not agree to be bound by the Terms, please exit the website.\r\n

\r\n\r\n

Terms applicable for all users

\r\n

\r\n\r\n

\r\n 2. Disclaimer regarding information and material published by Alfa Laval\r\n

\r\n

\r\n While Alfa Laval endeavors to ensure that the information on the websites\r\n published by Alfa Laval or any of its subsidiaries is correct, Alfa Laval\r\n does not make any warranties or undertakings of any kind in relation to\r\n the information and material, including but not limited to the accuracy\r\n and completeness of the information and the material. Alfa Laval may make\r\n changes to the information and material provided on the websites at any\r\n time and without notice. The information and material on the websites may\r\n be out of date, and Alfa Laval makes no commitment to update such\r\n information and material.\r\n

\r\n

\r\n Accordingly, to the maximum extent permitted by law, Alfa Laval provides\r\n you with access to its websites on the basis that Alfa Laval excludes all\r\n representations and warranties, conditions and other terms (including,\r\n without limitation, the conditions implied by law of satisfactory quality,\r\n fitness for purpose and the use of reasonable care and skill) in relation\r\n to the websites.\r\n

\r\n\r\n

3. Availability

\r\n

\r\n While Alfa Laval endeavors to ensure that the websites are normally\r\n available 24 hours a day, Alfa Laval shall not be liable if, for any\r\n reason, any website is unavailable at any time for any period. Access to\r\n the websites may be suspended temporarily and without notice in case of\r\n system failure, maintenance or repair or for other reasons.\r\n

\r\n

\r\n The websites are provided “as available” without any express or implied\r\n warranty or representation whatsoever that they will be uninterrupted or\r\n timely. Alfa Laval makes no warranties, express or implied, regarding the\r\n functionality and accessibility of the websites.\r\n

\r\n\r\n

4. Intellectual property rights

\r\n

\r\n You are permitted to print or download extracts from the websites provided\r\n that the following provisions are complied with:\r\n

\r\n
    \r\n
  • \r\n no documents or related graphics on the websites are modified in any\r\n way;\r\n
  • \r\n
  • \r\n no graphics on the websites are used separately from accompanying text;\r\n and\r\n
  • \r\n
  • Alfa Laval’s copyright notice appears in all copies.
  • \r\n
\r\n

\r\n The copyright and other intellectual property rights in and to the\r\n websites and all information and material provided on them (including\r\n without limitation photographs and graphical images) are owned by Alfa\r\n Laval or its licensors. For the purpose of this legal notice, any use of\r\n extracts from the websites other than in accordance with this Section 4 is\r\n prohibited.\r\n

\r\n

\r\n Except as explicitly provided for in the Terms, no part of the websites\r\n may be reproduced or stored in any other website or included in any public\r\n or private electronic retrieval system or service or otherwise without\r\n Alfa Laval’s prior written permission and nothing in these Terms shall\r\n confer any ownership right or rights of use thereto to you.\r\n

\r\n\r\n

5. Changes to the Terms

\r\n

\r\n Alfa Laval may from time to time and in its discretion make changes to the\r\n Terms. The date of last modification is stated at the end of each Term\r\n document. It is your responsibility to check the Term document from time\r\n to time for updates.\r\n

\r\n

\r\n When Alfa Laval makes revisions of a Term document that it considers\r\n material, Alfa Laval will ask signed in users to read and agree to the\r\n changed terms.\r\n

\r\n

\r\n You will have no obligation to continue using Alfa Laval’s websites\r\n following any changes to the Terms, but if you continue to use the website\r\n for Alfa Laval’s webshop and/or any of Alfa Laval’s websites that enable\r\n customers and business partners to connect after any changes it will\r\n constitute your acceptance of the changes.\r\n

\r\n\r\n

6. Limitation of liability

\r\n

\r\n Alfa Laval’s websites are provided “as is” without any express or implied\r\n warranty or representation whatsoever that they will be secure, error-free\r\n or that third party content provided will be free of viruses or other\r\n harmful components. Alfa Laval disclaims all liability for the websites\r\n (to the extent possible under applicable mandatory law) and makes no\r\n warranties, express or implied, regarding the websites.\r\n

\r\n

\r\n In no event will Alfa Laval, any of its subsidiaries, their officers,\r\n directors, employees or shareholders, be liable for any amount or any kind\r\n of loss or damage that you or any third party may incur (including without\r\n limitation, any direct, indirect, punitive or consequential loss or\r\n damage, or any loss of income, profits, and whether in tort, contract or\r\n otherwise) in connection with your use of the websites in any way, or in\r\n connection with the inability to use or the results of the use of the\r\n websites, if you are a customer including any information received from\r\n Alfa Laval business partners, any websites linked to Alfa Laval’s websites\r\n or the material on such websites, including but not limited to loss or\r\n damage due to viruses that may infect your computer equipment, software,\r\n data or other property on account of your access to, use of, or browsing\r\n the websites or your downloading of any material from the websites or any\r\n websites linked to the websites.\r\n

\r\n

\r\n You agree that your sole and exclusive remedy for any problems, losses,\r\n costs or dissatisfaction caused by the use of the website for Alfa Laval’s\r\n webshop or any of Alfa Laval’s websites that enable customers and business\r\n partners to connect is to de-register from the websites. For further\r\n information about registration of a profile and de-registration of such\r\n profile, please see Section 9 and Section 10.\r\n

\r\n\r\n

7. Your responsibilities

\r\n

\r\n You are responsible for taking preventive measures and actions to protect\r\n computer systems from viruses or other harmful content when using the\r\n websites. You shall immediately notify Alfa Laval if there is a\r\n discrepancy or incorrect data detected in the information available on a\r\n website or if you identify any virus or corruption of a website.\r\n

\r\n

\r\n If you represent a company or another legal person, you agree to defend,\r\n indemnify and hold Alfa Laval, its suppliers, licensors, employees and\r\n agents harmless from and against all claims and expenses, including\r\n attorney or legal fees arising directly or indirectly from your use of one\r\n of the websites in violation of these Terms, or in violation of any other\r\n applicable terms and conditions or intellectual property infringements.\r\n

\r\n\r\n

8. Applicable law and dispute resolution

\r\n

\r\n The Terms are subject to the laws of Sweden, without regard to choice or\r\n conflicts of law principles, and you and Alfa Laval agree to the exclusive\r\n jurisdiction of the courts of Sweden to resolve any dispute, claim or\r\n controversy that arises in connection with the Terms.\r\n

\r\n\r\n

Terms applicable for users with a profile

\r\n

\r\n\r\n

9. Profile and profile information

\r\n

\r\n By registering your user credentials and clicking “I confirm”, you create\r\n a profile for Alfa Laval’s websites.\r\n

\r\n

\r\n By registering your user credentials and consenting to these Terms, you\r\n acknowledge that you accept and agree to comply with the Terms.\r\n

\r\n

\r\n If you register user credentials and create a profile on behalf of a\r\n company, by clicking “I confirm” you represent that you are authorised to\r\n register user credentials and create a profile on behalf of the company.\r\n

\r\n

\r\n You are responsible for keeping your personal credentials and log in\r\n information up to date and secure from unauthorized access.\r\n

\r\n

\r\n You must add your name and e-mail address to your profile. In addition,\r\n you decide what information you will add to your profile. You may at any\r\n time change or remove information in your profile. You may also at any\r\n time de-register your profile (as described in Section 10 below). Alfa\r\n Laval reserves the right to suspend or terminate your profile if\r\n activities occur which, in Alfa Laval’s sole discretion, constitutes or\r\n may constitute a violation of the Terms or of any applicable laws, rules\r\n or regulations or if the profile is being used or may be used by an\r\n unauthorized person.\r\n

\r\n

\r\n The processing of your personal data in connection with your profile and\r\n use of the websites is further described in our\r\n privacy policy.\r\n

\r\n\r\n

10. De-registration

\r\n

\r\n You may at any time de-register your profile and cease using Alfa Laval’s\r\n websites. If you decide to de-register your profile you will no longer be\r\n granted access to the profile. Upon such de-registration, and if requested\r\n by you, all information in your profile will be sent to you by email and\r\n deleted shortly thereafter.\r\n

\r\n\r\n

11. Customer’s information sharing

\r\n

\r\n As a customer you can choose to share certain information on your profile\r\n with an Alfa Laval business partner. An Alfa Laval business partner is a\r\n legal entity that has an agreement with Alfa Laval AB or any of Alfa Laval\r\n AB’s subsidiaries for distribution of Alfa Laval’s products to end\r\n customers. The Alfa Laval business partners will only have access to such\r\n information that you have explicitly agreed to share. On a website where\r\n both customers and business partners have access and can register a\r\n profile, you may at any time withdraw your approval of the Alfa Laval\r\n business partner’s access to your profile information by selecting\r\n de-share for a specific Alfa Laval business partner.\r\n

\r\n\r\n

12. Business Partner processing of customer’s profile information

\r\n

\r\n If you as business partner are granted access to a customer’s profile\r\n information and in any way process such information you will be regarded\r\n as a data controller for such processing. You are only allowed to process\r\n the information for the purpose of (i) contacting the customers regarding\r\n quotes or questions submitted to you by customers, and (ii) offering\r\n maintenance and other services in relation to the customers’ products. We\r\n kindly ask you to erase all information about a customer stored in any\r\n electronic file or database if and when the customer withdraws its\r\n approval to share its profile information with you.\r\n

\r\n

\r\n Being a data controller implies that you have to process the customer’s\r\n personal information in accordance with the data protection legislation\r\n applicable in the jurisdiction where you are located. By accepting the\r\n Terms you warrant that you will process customers’ personal data in\r\n accordance with the applicable data protection legislation.\r\n

\r\n\r\n

Terms applicable for buying customers

\r\n

\r\n\r\n

13. Export control

\r\n

\r\n Supply or export of products and services as envisaged by the websites or\r\n the terms and conditions for a purchase order (“Purchase Agreement”)\r\n may require prior authorization or licences by competent authorities or\r\n otherwise be restricted or prohibited due to export laws, trade or export\r\n restrictions, trade sanctions, embargoes, prohibitions or other regulation\r\n imposed by the EU, UN or U.S. or other foreign governments (collectively,\r\n “Export Control Law”). Alfa Laval therefore reserves the right to\r\n unilaterally cancel any Purchase Agreement or a purchase order submitted\r\n through its websites without incurring any liability for damage or loss\r\n arising out of or relating to such cancellation, in the event any required\r\n authorization or licence is not granted or subsequently revoked or if the\r\n supply, export or re-export of the products or services otherwise cannot\r\n be carried out due to Export Control Law.\r\n

\r\n

\r\n Alfa Laval shall always be entitled to unilaterally suspend and/or\r\n terminate any Purchase Agreement or a purchase order submitted by the\r\n customer through Alfa Laval’s websites if and to the extent performance of\r\n a Purchase Agreement and/or the purchase order is impeded or made\r\n unreasonably onerous, as determined by Alfa Laval at its sole discretion,\r\n by any Export Control Law, whether foreseen or unforeseen at the time of\r\n formation of the Purchase Agreement or acceptance of the purchase order,\r\n without incurring any liability for damage or loss arising out of or\r\n relating to such suspension or termination.\r\n

\r\n

\r\n The customer undertakes not to directly or indirectly through affiliate,\r\n third party or otherwise, use, export, re-export, transfer or make\r\n available any products or any software, data or technical or commercial\r\n information provided by Alfa Laval in violation of any Export Control Law\r\n and shall refrain from any dealings, transactions or other activity\r\n involving persons or entities targeted by Export Control Law or that is\r\n owned or controlled by such by persons targeted by Export Control Law.\r\n Furthermore, the customer shall not facilitate any attempt by a third\r\n party to circumvent or otherwise assist such third party in any dealings,\r\n transactions or activity that, by wilfulness or neglect, might be in\r\n violation of Export Control Law.\r\n

\r\n

\r\n For the purpose of this Section 13, “customer” shall mean you or the\r\n company you represent in which name a purchase order is made, as\r\n applicable.\r\n

\r\n\r\n

14. Compliance with anti-corruption laws

\r\n

\r\n A buying customer shall comply with applicable laws and regulations\r\n relating to anti-corruption, including, without limitation, (i) the UK\r\n Bribery Act 2010; and the U.S. Foreign Corrupt Practices Act of 1977,\r\n irrespective of the place of performance, and (ii) laws and regulations\r\n implementing the Organization for Economic Cooperation and Development’s\r\n Convention on Combating Bribery of Foreign Public Officials in\r\n International Business Transactions and the U.N. Convention Against\r\n Corruption, and (iii) all applicable laws and regulations in the\r\n customer’s country or in any country where performance of a Purchase\r\n Agreement will occur.\r\n

\r\n

\r\n In carrying out its responsibilities under any Purchase Agreement, the\r\n customer further represents that:\r\n

\r\n
    \r\n
  • \r\n (a) The customer will not pay, offer, promise to pay, or authorize the\r\n payment directly or indirectly of anything of value to (i) any person or\r\n firm employed by or acting for or on behalf of any customer, whether\r\n private or governmental, or (ii) any government official or employee or\r\n any political party or candidate for political office for the purpose of\r\n influencing any act or decision or inducing or rewarding any action by\r\n the customer in any commercial transaction or in any governmental matter\r\n or securing any improper advantage to assist the customer in obtaining\r\n or retaining business or directing business to any person.\r\n
  • \r\n
  • \r\n (b) The customer will not make, either directly or indirectly, any\r\n improper payments, including but not limited to facilitation payments,\r\n gratuities or kickbacks.\r\n
  • \r\n
  • \r\n (c) The customer has established and will maintain an effective business\r\n ethics and compliance program and procedures to prevent corruption and\r\n ensure compliance with applicable laws or regulations.\r\n
  • \r\n
  • \r\n (d) The customer will promptly disclose to Alfa Laval together with all\r\n pertinent facts any violation, or alleged violation, of any applicable\r\n law or regulation in connection with the performance of this contract.\r\n
  • \r\n
\r\n\r\n

\r\n For the purpose of this Section 14, “customer” shall mean you or the\r\n company you represent in which name a purchase order is made, as\r\n applicable.\r\n

\r\n\r\n

October 23, 2018

\r\n
\r\n);\r\n\r\nexport default TermsConditions;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport TermsConditions from '../documentViewer/termsConditions';\r\nimport ModalActions from '../../store/modal/actions';\r\n\r\ninterface LegalTermsModalProps {\r\n modalActions: typeof ModalActions;\r\n}\r\n\r\nconst LegalTermsModal: React.SFC = ({ modalActions }) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default connect(null, dispatch => ({\r\n modalActions: bindActionCreators(ModalActions, dispatch)\r\n}))(LegalTermsModal);\r\n","import React from 'react';\r\nimport DocumentViewer from './documentView';\r\n\r\nconst PrivacyPolicy = () => {\r\n return (\r\n \r\n

Privacy Policy for Alfa Laval website

\r\n

\r\n Alfa Laval respects your privacy and protects the personal data we process\r\n about you. The purpose of this policy is to inform you of the types of\r\n personal data we collect when you register a profile on the website, and the\r\n steps we take to protect and safeguard your personal data. This policy and its\r\n principles apply to personal identifiable information that we ask for and you\r\n provide. By this we mean information that directly or indirectly identifies\r\n you, such as name, physical address, e-mail address, or other contact details.\r\n

\r\n

\r\n We aim to process personal data that is adequate, relevant and not excessive\r\n in relation to the purpose for which it has been collected. We believe in\r\n being transparent about the types of personal data we process and why we\r\n collect your data. We only collect and process personal data where we have\r\n lawful grounds to do so, and in accordance with applicable data protection\r\n requirements.\r\n

\r\n

\r\n On request, Alfa Laval will provide you with further information regarding the\r\n processing and protection of your personal data when visiting Alfa Laval’s\r\n webshop and/or Alfa Laval’s websites that enable customers and business\r\n partners to connect. Please see the ”What are your rights” section below for\r\n more information about your rights.\r\n

\r\n\r\n

Information regarding the processing of your personal data

\r\n

\r\n When you merely access and browse our websites, we do not require personal\r\n identifiable information. We may collect limited non-personal information that\r\n your browser makes available whenever you visit a website, e.g. browser\r\n language, geographical location data, date and time, and cookies. We use\r\n non-personal information to better understand user experience and interaction\r\n with the websites and to further improve our offerings and services. Our\r\n policy for usage of cookies is available here.\r\n

\r\n

\r\n When registering a profile on Alfa Laval’s webshop or using the live chat, you\r\n provide us with certain personal data, such as name and contact details and if\r\n relevant, the chat history. The personal data will only be collected directly\r\n from you.\r\n

\r\n

\r\n The personal data will be stored in the data base operated by Alfa Laval and\r\n used by Alfa Laval, its subsidiaries and business partners as set out in this\r\n privacy policy. If you want to de-register your profile, please send your name\r\n and e-mail to ebusiness@alfalaval.com.\r\n

\r\n\r\n

What is the purpose of processing your personal data?

\r\n

Your personal data is necessary for us and/or our subsidiaries to:

\r\n
    \r\n
  • \r\n provide you access to the website for our webshop and/or one of our websites\r\n that enable customers and business partners to connect;\r\n
  • \r\n
  • handle any requests for quotes or questions made by you; and
  • \r\n
  • \r\n handle any purchase orders placed by you and administrating the customer\r\n relationship.\r\n
  • \r\n
\r\n

\r\n We and/or our subsidiaries will also use your personal data to contact you\r\n about products and offers which you may be interest in, including safety\r\n notices and for marketing purposes.\r\n

\r\n\r\n

What is the legal basis for processing your personal data?

\r\n

\r\n The processing of your personal data for the purpose of providing you access\r\n to our websites, handling any quotes or questions or a purchase order made by\r\n you is based on it being necessary in accordance with your wishes.\r\n

\r\n

\r\n The processing of your personal data for the purpose of providing you with\r\n offers or otherwise for marketing purposes is based on your consent to such\r\n processing. You give your consent by checking the consent box in connection\r\n with registering your profile. You can at any time withdraw your consent by\r\n contacting us at ebusiness@alfalaval.com. Please note that this may result in\r\n us not being able to fulfil our commitments.\r\n

\r\n\r\n

Who has access to your personal data?

\r\n

\r\n We have implemented appropriate technical and organisational measures to\r\n protect your personal data against loss or unlawful access etc. The number of\r\n persons with access to your personal data is limited. Only individuals\r\n associated that need to process your personal data in accordance with the\r\n purposes above will have access to your personal data.\r\n

\r\n

\r\n Your profile information can also be viewed globally by Alfa Laval and its\r\n subsidiaries for the purposes stated above.\r\n

\r\n

\r\n If you are a customer that have specifically agreed to share information with\r\n Alfa Laval business partners in connection with quotes, your name and contact\r\n information can be viewed globally by the Alfa Laval business partners that\r\n are connected to one of the websites. The information may be used by such Alfa\r\n Laval business partners to (i) contact you regarding quotes or questions\r\n submitted by you to the business partner, and (ii) offer maintenance and other\r\n services in relation to your Alfa Laval products.\r\n

\r\n

\r\n We will share your personal data with the external supplier of the website\r\n services for the purpose of making them available to you.\r\n

\r\n

\r\n If necessary to achieve the purposes set out above, your personal data may be\r\n transferred to countries outside of the EU/EEA where the Alfa Laval business\r\n partners or subsidiaries are located. For transfer of your information outside\r\n of the EU/EEA, we will ensure compliance with any privacy laws applicable to\r\n such personal data.\r\n

\r\n\r\n

For how long is your personal data stored?

\r\n

\r\n Your personal data will be stored for as long as you have a profile registered\r\n and will be deleted shortly after the de-registration of your profile or after\r\n completion of the latest purchase order or communication regarding a quote or\r\n question by you, or for such longer period of time as required to administrate\r\n any purchase orders and resulting agreements or as required by applicable laws\r\n (such as for book keeping purposes). You may however request that we delete\r\n your personal data earlier (see your rights below).\r\n

\r\n\r\n

What are your rights?

\r\n

\r\n You have the right to know what personal data we are processing regarding you,\r\n and to request a copy of such data. You are entitled to have incorrect\r\n personal data regarding you corrected and in some cases you may request that\r\n we delete your personal data (e.g. if you withdraw your consent). You also\r\n have the right to object to certain processing of your personal data, and\r\n request that the processing of your personal data be limited. Please note that\r\n restriction or deletion of your personal data may result in us not being able\r\n to fulfil our commitments. You are also entitled to extract your personal data\r\n in a machine-readable format and to transfer the personal data to another\r\n controller.\r\n

\r\n

\r\n Alfa Laval Corporate AB, Reg. No. 556007-7785, PO Box 73, SE-221 00 Lund,\r\n Sweden, is the controller of the processing of your personal data. If you have\r\n any queries regarding the processing of your personal data, please write to\r\n ebusiness@alfalaval.com.\r\n

\r\n

\r\n If you have any objections or complaints with the way we process your personal\r\n data, you have the right to report this to the Swedish Data Protection\r\n Authority (Datainspektionen/Integritetsskyddsmyndigheten) which is the\r\n supervisory authority for our processing of personal data.\r\n

\r\n

\r\n Please note that the Alfa Laval Business Partners that you may have agreed to\r\n share your personal data with will be deemed to be controllers of such\r\n personal data to the extent they process your personal data. Alfa Laval\r\n Business Partners will also be deemed to be controllers of personal data\r\n related to you registered by the Alfa Laval Business Partners in such\r\n partners’ own profiles on Alfa Laval’s websites. If you have any questions in\r\n relation to the Alfa Laval Business Partners’ processing of your personal data\r\n you should contact the relevant Alfa Laval Business Partner directly.\r\n

\r\n
\r\n );\r\n};\r\n\r\nexport default PrivacyPolicy;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport PrivacyPolicy from '../documentViewer/privacyPolicy';\r\nimport ModalActions from '../../store/modal/actions';\r\n\r\ninterface PrivacyPolicyModalProps {\r\n modalActions: typeof ModalActions;\r\n}\r\n\r\nconst PrivacyPolicyModal: React.SFC = ({ modalActions }) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default connect(null, dispatch => ({\r\n modalActions: bindActionCreators(ModalActions, dispatch)\r\n}))(PrivacyPolicyModal);\r\n","// Practical implemntation of RFC 2822. Omits double quotes and square brackets\r\nconst emailRegex = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\r\n\r\nexport const validateEmail = (email: string = '') => !!email.match(emailRegex);\r\nexport const validateEmptyOrEmail = (email: string = '') => !email || validateEmail(email);\r\nexport const validateNotEmpty = (value: any) => !!value;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\ninterface CollapseButtonProps {\r\n className?: string;\r\n id: string;\r\n isCollapsed?: boolean;\r\n}\r\n\r\nconst CollapseButton: React.SFC = ({\r\n className,\r\n id,\r\n isCollapsed\r\n}) => (\r\n <>\r\n \r\n