{"version":3,"sources":["models/chartType.ts","state/atoms.ts","utils/constants.ts","api/agent.ts","models/assessment.ts","state/selectors.ts","components/common/Button.tsx","components/common/Loader.tsx","components/layout/NavbarBase.tsx","components/layout/NavMenu.tsx","components/layout/Footer.tsx","components/assessment/LikertScale.tsx","components/common/TooltipComponent.tsx","components/assessment/AmountScale.tsx","components/assessment/DichotomyScale.tsx","components/assessment/Assessment.tsx","components/assessment/PracticeQuestion.tsx","components/assessment/SingularAssessment.tsx","components/assessment/ScrollableAssessment.tsx","components/assessment/Assessments.tsx","components/assessment-result/AssessmentType.tsx","components/report-toc/ReportTableOfContentsPage.tsx","components/report-toc/ReportTableOfContents.tsx","components/report-toc/ReportTableOfContentsLitePage.tsx","components/report-toc/ReportTableOfContentsLite.tsx","components/report/ReportTocContainer.tsx","components/common/PromptModal.tsx","components/report/ReportPage.tsx","models/report.ts","utils/ImageUploadAdapter.ts","components/report-sections/TextEditor.tsx","components/report-sections/DefaultSection.tsx","models/personalityAssessmentType.ts","utils/utils.ts","components/assessment-result/AssessmentGraph.tsx","components/report-sections/AssessmentResult.tsx","components/report-sections/disc/DiscCharacteristics.tsx","components/assessment-result/AssessmentGenerosityType.tsx","components/report-sections/disc/GenerosityOverview.tsx","components/report-sections/disc/GenerositySection.tsx","components/report/ReportSection.tsx","components/report/ReportContainer.tsx","components/report/ReportTypeContainer.tsx","components/report-toc/ReportTableOfContentsPageMobile.tsx","components/report-toc/ReportTableOfContentsMobile.tsx","components/report/ReportNavMenuMobile.tsx","components/report/Report.tsx","components/common/DeletePromptButton.tsx","models/reportBuilderTool.ts","components/report-builder/ReportBuilderList.tsx","models/reportItemTypes.ts","components/report-builder/ReportBuilderTool.tsx","components/report-builder/ReportBuilderToolbar.tsx","components/report-builder/ReportBuilderToolbarContainer.tsx","components/report-builder/ReportBuilderContainer.tsx","components/report-builder/ReportBuilderTocContainer.tsx","components/report-builder/ReportBuilder.tsx","components/report/ReportPreview.tsx","components/layout/Layout.tsx","components/home/Home.tsx","components/layout/Unauthorized.tsx","components/layout/Forbidden.tsx","components/layout/NotFound.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["ChartType","assessments","atom","key","default","assessmentsPageModel","assessmentConfiguration","logoUrl","returnUrl","webUrl","isAdminMode","questionsPerPage","isAssessmentCompleted","chartType","None","canResume","reportPages","reportBuilderTools","reportAvailableTypes","reportPageNumber","assessmentPageNumber","reportType","label","iconPrefix","iconName","reportGraphData","category","tooltipText","color","score","maxScore","percentage","showReportTocLite","showReportTypeLite","reportForType","localStorage","Object","freeze","JWT_TOKEN","WEB_URL","Axios","defaults","baseURL","interceptors","request","use","config","token","window","getItem","headers","Authorization","error","Promise","reject","response","undefined","toast","status","history","push","location","href","AssessmentQuestionType","responseBody","data","requests","get","url","then","post","body","put","delete","postForm","file","a","formData","FormData","append","Api","Assessments","page","pageSize","getAll","getConfig","getCompletedCount","getReportConfigs","getReportConfig","reportId","saveAll","save","assessment","questionId","complete","saveReportConfig","pages","saveReportConfigs","reports","deleteReportConfig","clear","Image","upload","photo","assessmentsCompleted","selector","assessmentsAtom","pageModel","assessmentsPageModelAtom","count","totalRecords","completedValue","reduce","total","selectedOptionId","selectedOptionIdMost","selectedOptionIdLeast","Math","floor","round","currentPageAssessments","pageNumber","assessmentPageNumberAtom","assessmentConfigurationAtom","length","slice","isNextPageAvailable","AssessmentQuestion","init","id","title","questionType","AgreementScale","leftOptionLabel","rightOptionLabel","active","assign","this","AssessmentResponse","questionOptionId","questionOptionIdMost","questionOptionIdLeast","Button","props","className","baseClassName","resolveClass","Loader","Spinner","NavbarBase","height","children","Navbar","light","fixed","style","minHeight","defaultProps","NavMenu","buttonText","buttonCallback","useRecoilValue","NavbarBrand","Media","src","alt","NavbarText","name","onClick","icon","Footer","border","baseClass","LikertScale","assessmentQuestion","optionClickCallback","pageChangedCallback","useRecoilState","setAssessments","setAssessmentPageNumber","currentPageAssessmentsSelector","isNextPageAvailableSelector","options","map","option","index","role","assessmentQuestionObject","nextQuestionId","assessmentsNew","aq","questionObject","setNextAsActive","nextQuestion","document","getElementById","scrollIntoView","behavior","block","inline","every","some","catch","message","timeout","setTimeout","setOption","TooltipComponent","text","html","bold","textAlign","other","useState","tooltipOpen","setTooltipOpen","Tooltip","isOpen","toggle","fontWeight","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","trigger","AmountScale","optionIdMost","optionIdLeast","resolveOptionStatus","currentOptionId","value","target","DichotomyScale","optionId","Assessment","generateLikertScaleQuestion","isActive","position","Ranking","SimilarityScale","Amount","Dichotomy","resolveQuestion","PracticeQuestion","optionClicked","setOptionClicked","practiceIntroduction","SingularAssessment","pageDirection","getNavbarHeight","navbar","offsetHeight","getFooterHeight","footer","classNames","enter","exit","Container","paddingTop","paddingBottom","ScrollableAssessment","useEffect","scrollToQuestion","find","scrollTo","setAssessmentsPageModel","useSetRecoilState","completed","assessmentsCompletedSelector","loading","setLoading","setPageDirection","results","pageInfo","element","ceil","onOptionClick","Progress","placement","AssessmentType","reportTypeAtom","venobox","videoUrl","VenoBox","close","item","iconColor","ReportTableOfContentsPage","pageIndex","pageIsOpened","allowCollapse","disableNavigation","preview","setReportPageNumber","reportPageNumberAtom","reportAvailableTypesAtom","reportForTypeAtom","setIsOpen","resolveReportType","forAssessmentType","forType","type","x","Collapse","sections","section","sectionIndex","jumpToSection","ReportTableOfContents","currentPageIndex","reportPagesAtom","outline","size","ReportTableOfContentsLitePage","ReportTableOfContentsLite","backgroundColor","ReportTocContainer","showReportTocLiteAtom","setShowReportTocLite","width","PromptModal","headerText","confirmAction","Modal","ModalHeader","ModalBody","ModalFooter","ReportPage","dragHandleProps","builderMode","setReportPages","editModal","setEditModal","newPageName","setNewPageName","setForAssessmentType","isScrolled","setIsScrolled","deleteModal","setDeleteModal","pageTypeChanged","setPageTypeChanged","getScrollHeaderWidth","reportSection","clientWidth","scrollHeaderWidth","setScrollHeaderWidth","toggleEditModal","toggleDeleteModal","deletePage","newState","splice","resizeObserver","ResizeObserver","observe","disconnect","onscroll","pageYOffset","display","top","getScrollHeaderTopOffset","toLocaleString","minimumIntegerDigits","opacity","cursor","backdrop","Row","Label","for","sm","Col","Input","placeholder","onChange","e","defaultValue","parsed","parseInt","Number","isNaN","setForType","disabled","Alert","i","s","ReportItemType","ImageUploadAdapter","loader","ImageUploadAdapterPlugin","editor","plugins","createUploadAdapter","TextEditor","newSectionName","setNewSectionName","content","newSectionContent","setNewSectionContent","deleteSection","ADD_TAGS","ADD_ATTR","renderContent","CustomEditor","toolbar","shouldNotGroupWhenFull","items","removePlugins","extraPlugins","TextEditorUploadAdapter","mediaEmbed","previewsInData","link","decorators","openInNewTab","mode","attributes","rel","defaultProtocol","fontColor","columns","colors","accentColor","primaryButtonColor","linkColor","menuHeadingAndIconColor","image","styles","resizeOptions","pasteFromWordRemoveFontStyles","onBlur","event","getData","newSectionsState","newPageState","DefaultSection","PersonalityAssessmentType","LightenDarkenColor","colorCodeInput","amount","usePound","colorCode","num","r","b","g","toString","am4core","am4ThemesAnimated","AssessmentGraph","XYChart","renderChart","reportGraphDataAtom","initBarChart","am4charts","responsive","enabled","useDefault","rules","relevant","pixelWidth","state","stateId","states","create","properties","paddingRight","paddingLeft","marginBottom","marginLeft","inside","maxLabelPosition","parent","dy","setStateOnChildren","bgstate","background","fill","fillOpacity","numberFormatter","numberFormat","categoryAxis","yAxes","dataFields","renderer","grid","template","labels","fontSize","minGridDistance","cellStartLocation","cellEndLocation","inversed","valueAxis","xAxes","strictMinMax","min","max","series","valueX","categoryY","tooltip","wrap","pointerOrientation","getFillFromObject","adapter","add","dataItem","dataContext","maskBullets","valueLabel","bullets","horizontalCenter","dx","hideOversized","truncate","forEach","range","axisRange","axisRanges","strokeOpacity","events","on","ev","chart","svgContainer","getIndex","adjustHeight","pixelHeight","targetHeight","htmlElement","initCustomGraph","assessmentType","Enneagram","createRange","axis","from","to","endValue","rangeBorder","initEnneagramGraph","MyersBriggs","DISC","valueY","categoryX","initDISCGraph","SpiritualGifts","SpiritualPreferences","initSpiritualGraph","renderCustomGraph","rows","item1","item2","backgroundImage","marginRight","renderMyersBriggsGraph","maxWidth","Custom","dispose","renderGraph","AssessmentResult","organizationID","indexOf","DiscCharacteristics","AssessmentGenerosityType","toLowerCase","getLabelText","GenerosityOverview","GenerositySection","ReportSection","DCharacteristics","ICharacteristics","SCharacteristics","CCharacteristics","GenerosityGivingStrengths","GenerosityGivingCautions","GenerosityGivingExamples","renderSection","ReportContainer","showReportTypeLiteAtom","ReportTypeContainer","setShowReportTypeLite","reportTypeToggle","ReportTableOfContentsPageMobile","pageClickCallback","sectionClickCallback","onPageRowClick","onSectionRowClick","ReportTableOfContentsMobile","pageNumberExpanded","setPageNumberExpanded","ReportNavMenuMobile","isTypeOpen","setIsTypeOpen","isMenuOpen","setIsMenuOpen","chartRendered","setChartRendered","onMenuButtonClick","tag","Link","Report","modal","setModal","setReportType","setReportGraphData","retakeAssessment","setRetakeAssessment","retakeAssessmentMessage","setRetakeAssessmentMessage","confetti","setConfetti","backToProfile","graphData","nextAssessmentUrl","angle","spread","startVelocity","elementCount","dragFriction","duration","stagger","DeletePromptButton","subject","deleteAction","ReportBuilderToolType","ReportBuilderList","setReports","setReportAvailableTypes","reportTypeChanged","setReportTypeChanged","confirmationModal","setConfirmationModal","editReportId","setEditReportId","toggleConfirmationModal","openConfirmationModal","saveChanges","success","loadReports","availableTypes","newItems","addNewReport","Table","striped","report","scope","abs","parsedType","setReportForType","deleteReport","ReportItemTypes","ReportBuilderTool","tool","ReportBuilderToolbar","reportBuilderToolsAtom","setReportBuilderTools","tools","initReportBuilderTools","droppableId","Page","isDropDisabled","droppableProvided","ref","innerRef","draggableId","draggableProvided","draggablesnapshot","draggableProps","isDragging","ReportBuilderToolbarContainer","showLite","setShowLite","minWidth","ReportBuilderContainer","addPage","SaveChanges","pageDraggableProvided","pageDraggableSnapshot","isDraggingOver","droppableProps","pageDroppableProvided","pageDroppableSnapshot","marginTop","sectionDroppableProvided","sectionDroppableSnapshot","sectionDraggableProvided","sectionDraggableSnapshot","ReportBuilderTocContainer","ReportBuilder","match","pageCounter","setPageCounter","sectionCounter","setSectionCounter","offset","setOffset","reorder","list","startIndex","endIndex","result","Array","removed","resolveSectionType","toolType","destIndex","newItem","addSection","destParentId","destSubItems","acc","newDestSubItems","pageId","params","onScroll","removeEventListener","addEventListener","passive","onDragEnd","source","destination","sourceIndex","includes","itemSubItemMap","split","sourceParentId","sourceSubItems","reorderedSubItems","newSourceSubItems","draggedItem","ReportPreview","Layout","Home","queryString","parse","search","getBeginButtonText","setItem","description","introduction","embedUrl","frameBorder","allowFullScreen","timeEstimate","Unauthorized","Forbidden","NotFound","library","fas","far","fal","addHook","node","tagName","getAttribute","startsWith","parentNode","removeChild","setAttribute","App","setAssessmentConfiguration","primaryButtonStyle","resolveCss","exact","path","component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","getElementsByTagName","createBrowserHistory","basename","listen","hash","replace","ReactDOM","render"],"mappings":"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,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,oBAAqBN,MAAO,KACrC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO,qBAAsBN,MAAO,KACtC,CAAEM,MAAO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","file":"static/js/main.7830441b.chunk.js","sourcesContent":["export enum ChartType {\n None = 0,\n Bar = 1,\n Pie = 2,\n Line = 3,\n Gauge = 4,\n Map = 5,\n Custom = 99,\n}\n","import { AssessmentQuestionModel } from 'models/assessment';\nimport { AssessmentConfigurationModel } from 'models/assessmentConfiguration';\nimport { ReportGraphData, ReportPageItem, ReportTypeItem } from 'models/report';\nimport { PageModel } from 'models/pagedListResult';\nimport { atom } from 'recoil';\nimport { ReportBuilderTool } from 'models/reportBuilderTool';\nimport { KeyValuePair } from 'models/keyValuePair';\nimport { ChartType } from 'models/chartType';\n\nexport const assessments = atom({\n key: 'assessments',\n default: [],\n});\n\nexport const assessmentsPageModel = atom({\n key: 'assessmentsPageModel',\n default: {},\n});\n\nexport const assessmentConfiguration = atom({\n key: 'assessmentConfiguration',\n default: {\n logoUrl: './logo.jpg',\n returnUrl: '/',\n webUrl: '/',\n isAdminMode: false,\n questionsPerPage: 0,\n isAssessmentCompleted: false,\n chartType: ChartType.None,\n canResume: false,\n },\n});\n\nexport const reportPages = atom({\n key: 'reportPages',\n default: [],\n});\n\nexport const reportBuilderTools = atom({\n key: 'reportBuilderTools',\n default: [],\n});\n\nexport const reportAvailableTypes = atom[]>({\n key: 'reportAvailableTypes',\n default: [],\n});\n\nexport const reportPageNumber = atom({\n key: 'reportPageNumber',\n default: 0,\n});\n\nexport const assessmentPageNumber = atom({\n key: 'assessmentPageNumber',\n default: 0,\n});\n\nexport const reportType = atom({\n key: 'reportType',\n default: { label: 'Type', iconPrefix: 'fas', iconName: 'award' },\n});\n\nexport const reportGraphData = atom({\n key: 'reportGraphData',\n default: [\n {\n category: '1',\n tooltipText: 'Type 1 tooltip',\n color: '#4CBF34',\n score: 50,\n maxScore: 100,\n percentage: 50,\n },\n {\n category: '2',\n tooltipText: 'Type 2 tooltip',\n color: '#16A4B8',\n score: 50,\n maxScore: 100,\n percentage: 50,\n },\n {\n category: '3',\n tooltipText: 'Type 3 tooltip',\n color: '#0064BB',\n score: 50,\n maxScore: 100,\n percentage: 50,\n },\n {\n category: '4',\n tooltipText: 'Type 4 tooltip',\n color: '#88D5B2',\n score: 50,\n maxScore: 100,\n percentage: 50,\n },\n ],\n});\n\nexport const showReportTocLite = atom({\n key: 'showReportTocLite',\n default: false,\n});\n\nexport const showReportTypeLite = atom({\n key: 'showReportTypeLite',\n default: false,\n});\n\nexport const reportForType = atom({\n key: 'reportForType',\n default: null,\n});\n","export const localStorage = Object.freeze({\n JWT_TOKEN: 'ihpa_jwt',\n WEB_URL: 'ihpa_web_url',\n});\n\nexport const MARKETING_PAGE = 'https://profilesphere.com/';\n","import Axios, { AxiosResponse } from 'axios';\nimport { AssessmentQuestionModel, AssessmentResponseModel } from 'models/assessment';\nimport { AssessmentCompletedCount } from 'models/assessmentCompletedCount';\nimport { AssessmentConfigurationModel } from 'models/assessmentConfiguration';\nimport { PagedListResult } from 'models/pagedListResult';\nimport { Photo } from 'models/photo';\nimport { ReportData, ReportListData, ReportPageItem } from 'models/report';\nimport { toast } from 'react-toastify';\nimport { localStorage, MARKETING_PAGE } from 'utils/constants';\nimport { history } from '..';\n\nAxios.defaults.baseURL = '/api';\n\nAxios.interceptors.request.use(\n (config) => {\n const token = window.localStorage.getItem(localStorage.JWT_TOKEN);\n if (token) {\n // eslint-disable-next-line no-param-reassign\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error),\n);\n\nAxios.interceptors.response.use(undefined, (response) => {\n if (!response.response) {\n toast.error('An unknown error occurred. Please contact the administrator!');\n }\n\n const { status } = response.response;\n if (status === 403) {\n history.push('/403');\n } else if (status === 404) {\n history.push('/404');\n } else if (status === 401) {\n const webUrl = window.localStorage.getItem(localStorage.WEB_URL);\n if (webUrl) {\n window.location.href = webUrl;\n } else {\n window.location.href = MARKETING_PAGE;\n }\n } else if (status === 500) {\n toast.error('A server error occurred. Please contact the administrator!');\n }\n\n throw response.response;\n});\n\nconst responseBody = (response: AxiosResponse) => response.data;\n\nconst requests = {\n get: (url: string) => Axios.get(url).then(responseBody),\n post: (url: string, body?: unknown) => Axios.post(url, body).then(responseBody),\n put: (url: string, body?: unknown) => Axios.put(url, body).then(responseBody),\n delete: (url: string) => Axios.delete(url).then(responseBody),\n postForm: async (url: string, file: Blob) => {\n const formData = new FormData();\n formData.append('File', file);\n const response = await Axios.post(url, formData, {\n headers: { 'Content-type': 'multipart/form-data' },\n });\n return responseBody(response);\n },\n};\n\nconst Api = {\n Assessments: {\n get: (page: number, pageSize: number): Promise> => requests.get(`assessments?page=${page}&pageSize=${pageSize}`),\n getAll: (): Promise> => requests.get('assessments/all'),\n getConfig: (): Promise => requests.get('assessments/configuration'),\n getCompletedCount: (): Promise => requests.get('assessments/completed-count'),\n getReportConfigs: (): Promise => requests.get('assessments/report-config'),\n getReportConfig: (reportId?: string): Promise => requests.get(`assessments/report-config/${reportId}`),\n saveAll: (assessments: AssessmentResponseModel[]): Promise => requests.post('assessments', assessments),\n save: (assessment: AssessmentResponseModel): Promise => requests.post(`assessments/${assessment.questionId}`, assessment),\n complete: (): Promise => requests.post('assessments/complete', {}),\n saveReportConfig: (reportId: string, pages: ReportPageItem[]): Promise => requests.post(`assessments/report-config/${reportId}`, { pages }),\n saveReportConfigs: (reports: ReportData[]): Promise => requests.post('assessments/report-config', { reports }),\n deleteReportConfig: (reportId?: number): Promise => requests.delete(`assessments/report-config/${reportId}`),\n clear: (): Promise => requests.put('assessments/clear'),\n },\n Image: {\n upload: (photo: Blob): Promise => requests.postForm('/photos', photo),\n },\n};\n\nexport default Api;\n","export interface AssessmentQuestionModel {\n id?: number,\n title: string,\n questionType: AssessmentQuestionType,\n leftOptionLabel: string,\n rightOptionLabel: string,\n options?: AssessmentQuestionOptionModel[],\n selectedOptionId?: number,\n selectedOptionIdMost?: number,\n selectedOptionIdLeast?: number,\n active: boolean\n}\n\nexport interface AssessmentQuestionOptionModel {\n id: number,\n questionId: number,\n value?: string,\n tooltipText?: string\n}\n\nexport interface AssessmentResponseModel {\n questionId?: number,\n questionOptionId?: number,\n}\n\nexport enum AssessmentQuestionType {\n AgreementScale = 0,\n Ranking = 1,\n SimilarityScale = 2,\n Amount = 3,\n Dichotomy = 4\n}\n\nexport class AssessmentQuestion implements AssessmentQuestionModel {\n id?: number = undefined;\n\n title = '';\n\n questionType = AssessmentQuestionType.AgreementScale;\n\n leftOptionLabel = '';\n\n rightOptionLabel = '';\n\n selectedOptionId?: number = undefined;\n\n selectedOptionIdMost?: number = undefined;\n\n selectedOptionIdLeast?: number = undefined;\n\n active = false;\n\n constructor(init?: AssessmentQuestionModel) {\n Object.assign(this, init);\n }\n}\n\nexport class AssessmentResponse implements AssessmentResponseModel {\n questionId?: number;\n\n questionOptionId?: number;\n\n questionOptionIdMost?: number;\n\n questionOptionIdLeast?: number;\n\n constructor(init?: AssessmentQuestionModel) {\n this.questionId = init?.id;\n this.questionOptionId = init?.selectedOptionId;\n this.questionOptionIdMost = init?.selectedOptionIdMost;\n this.questionOptionIdLeast = init?.selectedOptionIdLeast;\n }\n}\n","import { AssessmentQuestionModel } from 'models/assessment';\nimport { RecoilValueReadOnly, selector } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n assessmentsPageModel as assessmentsPageModelAtom,\n} from './atoms';\n\nexport const assessmentsCompleted = selector({\n key: 'assessmentsCompleted',\n get: ({ get }) => {\n const assessments = get(assessmentsAtom);\n const pageModel = get(assessmentsPageModelAtom);\n const count = pageModel?.totalRecords ?? 0;\n\n if (count > 0) {\n const completed = assessments.reduce((total, a) => ((a.selectedOptionId || (a.selectedOptionIdMost && a.selectedOptionIdLeast)) ? total + 1 : total), 0);\n const completedValue = (100 / count) * completed;\n let percentage: number;\n if (completedValue >= 99) {\n percentage = Math.floor(completedValue);\n } else {\n percentage = Math.round(completedValue);\n }\n\n if (percentage > 100) {\n return 100;\n }\n\n return percentage;\n }\n\n return 0;\n },\n});\n\nexport const currentPageAssessments: RecoilValueReadOnly = selector({\n key: 'currentPageAssessments',\n get: ({ get }) => {\n const assessments = get(assessmentsAtom);\n const pageNumber = get(assessmentPageNumberAtom);\n const assessmentConfiguration = get(assessmentConfigurationAtom);\n\n if (!assessments.length) {\n return [];\n }\n\n if (pageNumber === 0) {\n return assessments.slice(0, 1);\n }\n\n return assessments.slice(1).slice((pageNumber - 1) * assessmentConfiguration.questionsPerPage, pageNumber * assessmentConfiguration.questionsPerPage);\n },\n});\n\nexport const isNextPageAvailable = selector({\n key: 'isNextPageAvailable',\n get: ({ get }) => {\n const pageNumber = get(assessmentPageNumberAtom);\n const pageModel = get(assessmentsPageModelAtom);\n const assessmentConfiguration = get(assessmentConfigurationAtom);\n\n if (!pageModel?.totalRecords) {\n return false;\n }\n\n return (pageNumber * assessmentConfiguration.questionsPerPage) < pageModel.totalRecords - 1;\n },\n});\n","import React from 'react';\nimport { Button as BootstrapButton, ButtonProps } from 'reactstrap';\n\nconst Button: React.FC = (props) => {\n const { className } = props;\n\n const resolveClass = () => {\n const baseClassName = 'custom-btn';\n\n if (className) {\n return `${baseClassName} ${className}`;\n }\n\n return baseClassName;\n };\n\n return (\n \n );\n};\n\nexport default Button;\n","import React from 'react';\nimport { Spinner } from 'reactstrap';\n\nconst Loader: React.FC = () => (\n
\n \n
\n);\n\nexport default Loader;\n","import React from 'react';\nimport { Navbar } from 'reactstrap';\n\ninterface Props {\n id: string;\n height?: number;\n}\n\nconst NavbarBase: React.FC = ({ id, height, children }) => (\n
\n \n {children}\n \n
\n);\n\nNavbarBase.defaultProps = {\n height: undefined,\n};\n\nexport default NavbarBase;\n","import React from 'react';\nimport { NavbarBrand, NavbarText, Media } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useRecoilValue } from 'recoil';\nimport { assessmentConfiguration as assessmentConfigurationAtom } from 'state/atoms';\nimport Button from 'components/common/Button';\nimport NavbarBase from './NavbarBase';\n\ninterface Props {\n buttonText?: string,\n buttonCallback?: () => void;\n}\n\nconst NavMenu: React.FC = ({ buttonText, buttonCallback }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const buttonClick = () => {\n if (buttonCallback) {\n buttonCallback();\n } else {\n window.location.href = assessmentConfiguration.returnUrl;\n }\n };\n\n return (\n \n
\n {assessmentConfiguration.logoUrl && (\n \n \n \n )}\n \n |\n {assessmentConfiguration.name}\n \n
\n \n
\n );\n};\n\nNavMenu.defaultProps = {\n buttonText: 'Exit',\n buttonCallback: undefined,\n};\n\nexport default NavMenu;\n","import React from 'react';\n\ninterface Props {\n className?: string;\n border?: boolean;\n}\n\nconst Footer: React.FC = ({ className, border, children }) => {\n const resolveClass = () => {\n let baseClass = 'page-footer';\n\n if (border) {\n baseClass += ' border bg-light';\n }\n\n if (className) {\n baseClass += ` ${className}`;\n }\n\n return baseClass;\n };\n\n return (\n
\n {children}\n
\n );\n};\n\nFooter.defaultProps = {\n className: '',\n border: true,\n};\n\nexport default Footer;\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { AssessmentQuestionModel, AssessmentQuestion, AssessmentResponse } from 'models/assessment';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport {\n isNextPageAvailable as isNextPageAvailableSelector,\n currentPageAssessments as currentPageAssessmentsSelector,\n} from 'state/selectors';\nimport { toast } from 'react-toastify';\nimport Api from 'api/agent';\nimport { history } from '../..';\n\ninterface Props {\n assessmentQuestion: AssessmentQuestionModel;\n optionClickCallback: () => void;\n pageChangedCallback?: () => void;\n}\n\nconst LikertScale: React.FC = ({ assessmentQuestion, optionClickCallback, pageChangedCallback }) => {\n const [assessments, setAssessments] = useRecoilState(assessmentsAtom);\n const [assessmentPageNumber, setAssessmentPageNumber] = useRecoilState(assessmentPageNumberAtom);\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const isNextPageAvailable = useRecoilValue(isNextPageAvailableSelector);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const setOption = (option: number) => {\n optionClickCallback();\n\n if (!assessmentQuestion?.selectedOptionId && !assessmentQuestion?.active) {\n return;\n }\n\n const assessmentQuestionObject = new AssessmentQuestion(assessmentQuestion);\n assessmentQuestionObject.selectedOptionId = option;\n\n const assessmentsNew = currentPageAssessments.map((aq) => {\n if (aq.id === assessmentQuestion.id) {\n const questionObject = new AssessmentQuestion(assessmentQuestion);\n questionObject.selectedOptionId = option;\n return questionObject;\n }\n\n return aq;\n });\n\n let setNextAsActive = false;\n let nextQuestionId: number | undefined;\n setAssessments(assessments.map((aq) => {\n let questionObject: AssessmentQuestion;\n if (setNextAsActive && !aq.selectedOptionId) {\n setNextAsActive = false;\n questionObject = new AssessmentQuestion(aq);\n questionObject.active = true;\n nextQuestionId = questionObject.id;\n return questionObject;\n }\n\n if (aq.id === assessmentQuestion.id) {\n questionObject = new AssessmentQuestion(assessmentQuestion);\n questionObject.selectedOptionId = option;\n questionObject.active = false;\n setNextAsActive = true;\n return questionObject;\n }\n\n return aq;\n }));\n\n if (assessmentQuestion.active && nextQuestionId) {\n const nextQuestion = document.getElementById(`assessment-${nextQuestionId}`);\n nextQuestion?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n\n Api.Assessments.save(new AssessmentResponse(assessmentQuestionObject))\n .then(() => {\n if (!isNextPageAvailable\n && assessmentsNew.every((a) => a.selectedOptionId)\n && currentPageAssessments.some((a) => !a.selectedOptionId)) {\n history.push('/report');\n }\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n\n if (isNextPageAvailable\n && assessmentsNew.every((a) => a.selectedOptionId)\n && currentPageAssessments.some((a) => !a.selectedOptionId)) {\n if (pageChangedCallback) {\n pageChangedCallback();\n }\n\n if (assessmentPageNumber === 0 || assessmentConfiguration.questionsPerPage === 1) {\n let timeout = 500;\n if (assessmentPageNumber === 0) {\n timeout = 1500;\n }\n\n setTimeout(() => {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }, timeout);\n } else {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }\n }\n };\n\n return (\n
\n
\n {assessmentQuestion.leftOptionLabel}\n {assessmentQuestion.options?.map((option, index) => (\n setOption(option.id)}\n >\n \n
\n ))}\n {assessmentQuestion.rightOptionLabel}\n
\n
\n {assessmentQuestion.leftOptionLabel}\n {assessmentQuestion.rightOptionLabel}\n
\n \n );\n};\n\nLikertScale.defaultProps = {\n pageChangedCallback: undefined,\n};\n\nexport default LikertScale;\n","import React, { useState } from 'react';\nimport { Tooltip, TooltipProps } from 'reactstrap';\nimport DOMPurify from 'dompurify';\n\ninterface Props extends TooltipProps {\n text?: string;\n html?: boolean;\n bold?: boolean;\n trigger?: string;\n textAlign?: 'center' | 'left' | 'right' | 'justify';\n}\n\nconst TooltipComponent: React.FC = (props) => {\n const {\n text,\n html,\n bold,\n textAlign,\n ...other\n } = props;\n const [tooltipOpen, setTooltipOpen] = useState(false);\n\n const toggleTooltip = () => setTooltipOpen(!tooltipOpen);\n\n return (\n <>\n {text\n && (\n \n {\n html\n ?
// eslint-disable-line react/no-danger\n : text\n }\n \n )}\n \n );\n};\n\nTooltipComponent.defaultProps = {\n text: undefined,\n html: false,\n bold: false,\n trigger: 'hover',\n textAlign: 'center',\n};\n\nexport default TooltipComponent;\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport TooltipComponent from 'components/common/TooltipComponent';\nimport { AssessmentQuestionModel, AssessmentQuestion, AssessmentResponse } from 'models/assessment';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport {\n isNextPageAvailable as isNextPageAvailableSelector,\n currentPageAssessments as currentPageAssessmentsSelector,\n} from 'state/selectors';\nimport { toast } from 'react-toastify';\nimport Api from 'api/agent';\nimport { history } from '../..';\n\ninterface Props {\n assessmentQuestion: AssessmentQuestionModel;\n optionClickCallback: () => void;\n pageChangedCallback?: () => void;\n}\n\nconst AmountScale: React.FC = ({ assessmentQuestion, optionClickCallback, pageChangedCallback }) => {\n const [assessments, setAssessments] = useRecoilState(assessmentsAtom);\n const [assessmentPageNumber, setAssessmentPageNumber] = useRecoilState(assessmentPageNumberAtom);\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const isNextPageAvailable = useRecoilValue(isNextPageAvailableSelector);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const setOption = (optionIdMost: number, optionIdLeast: number) => {\n optionClickCallback();\n\n const assessmentQuestionObject = new AssessmentQuestion(assessmentQuestion);\n if (optionIdMost > 0) {\n assessmentQuestionObject.selectedOptionIdMost = optionIdMost;\n }\n if (optionIdLeast > 0) {\n assessmentQuestionObject.selectedOptionIdLeast = optionIdLeast;\n }\n\n const assessmentsNew = currentPageAssessments.map((aq) => {\n if (aq.id === assessmentQuestion.id) {\n return assessmentQuestionObject;\n }\n\n return aq;\n });\n\n setAssessments(assessments.map((aq) => {\n if (aq.id === assessmentQuestion.id) {\n return assessmentQuestionObject;\n }\n\n return aq;\n }));\n\n if (assessmentQuestionObject.selectedOptionIdMost && assessmentQuestionObject.selectedOptionIdLeast) {\n Api.Assessments.save(new AssessmentResponse(assessmentQuestionObject))\n .then(() => {\n if (!isNextPageAvailable\n && assessmentsNew.every((a) => a.selectedOptionIdMost && a.selectedOptionIdLeast)\n && currentPageAssessments.some((a) => !a.selectedOptionIdMost || !a.selectedOptionIdLeast)) {\n history.push('/report');\n }\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n }\n\n if (isNextPageAvailable\n && assessmentsNew.every((a) => a.selectedOptionIdMost && a.selectedOptionIdLeast)\n && currentPageAssessments.some((a) => !a.selectedOptionIdMost || !a.selectedOptionIdLeast)) {\n if (pageChangedCallback) {\n pageChangedCallback();\n }\n\n if (assessmentPageNumber === 0 || assessmentConfiguration.questionsPerPage === 1) {\n let timeout = 500;\n if (assessmentPageNumber === 0) {\n timeout = 1500;\n }\n\n setTimeout(() => {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }, timeout);\n } else {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }\n }\n };\n\n const resolveOptionStatus = (currentOptionId: number, selectedOptionId?: number) => {\n if (selectedOptionId === currentOptionId) {\n return 'active';\n }\n\n if (selectedOptionId) {\n return 'inactive';\n }\n\n return '';\n };\n\n return (\n
\n
\n \n \n \n \n \n \n \n {assessmentQuestion.options?.map((option) => (\n \n \n \n \n \n ))}\n \n
{assessmentQuestion.title}\n
\n {assessmentQuestion.leftOptionLabel}\n
\n
\n
\n {assessmentQuestion.rightOptionLabel}\n
\n
\n
\n {option.value}\n {option.tooltipText\n && (\n <>\n \n \n \n )}\n
\n
\n setOption(option.id, 0)}\n >\n \n \n \n setOption(0, option.id)}\n >\n \n \n
\n
\n
\n );\n};\n\nAmountScale.defaultProps = {\n pageChangedCallback: undefined,\n};\n\nexport default AmountScale;\n","import React, { Fragment } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport {\n isNextPageAvailable as isNextPageAvailableSelector,\n currentPageAssessments as currentPageAssessmentsSelector,\n} from 'state/selectors';\nimport { AssessmentQuestion, AssessmentQuestionModel, AssessmentResponse } from 'models/assessment';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { toast } from 'react-toastify';\nimport TooltipComponent from 'components/common/TooltipComponent';\nimport Api from 'api/agent';\nimport { history } from '../..';\n\ninterface Props {\n assessmentQuestion: AssessmentQuestionModel;\n optionClickCallback: () => void;\n pageChangedCallback?: () => void;\n}\n\nconst DichotomyScale: React.FC = ({ assessmentQuestion, optionClickCallback, pageChangedCallback }) => {\n const [assessments, setAssessments] = useRecoilState(assessmentsAtom);\n const [assessmentPageNumber, setAssessmentPageNumber] = useRecoilState(assessmentPageNumberAtom);\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const isNextPageAvailable = useRecoilValue(isNextPageAvailableSelector);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const setOption = (optionId: number) => {\n optionClickCallback();\n\n const assessmentQuestionObject = new AssessmentQuestion(assessmentQuestion);\n assessmentQuestionObject.selectedOptionId = optionId;\n\n const assessmentsNew = currentPageAssessments.map((aq) => {\n if (aq.id === assessmentQuestion.id) {\n return assessmentQuestionObject;\n }\n\n return aq;\n });\n\n setAssessments(assessments.map((aq) => {\n if (aq.id === assessmentQuestion.id) {\n return assessmentQuestionObject;\n }\n\n return aq;\n }));\n\n Api.Assessments.save(new AssessmentResponse(assessmentQuestionObject))\n .then(() => {\n if (!isNextPageAvailable\n && assessmentsNew.every((a) => a.selectedOptionId)\n && currentPageAssessments.some((a) => !a.selectedOptionId)) {\n history.push('/report');\n }\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n\n if (isNextPageAvailable && assessmentsNew.every((a) => a.selectedOptionId) && currentPageAssessments.some((a) => !a.selectedOptionId)) {\n if (pageChangedCallback) {\n pageChangedCallback();\n }\n\n if (assessmentPageNumber === 0 || assessmentConfiguration.questionsPerPage === 1) {\n let timeout = 500;\n if (assessmentPageNumber === 0) {\n timeout = 1500;\n }\n\n setTimeout(() => {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }, timeout);\n } else {\n setAssessmentPageNumber(assessmentPageNumber + 1);\n }\n }\n };\n\n const resolveOptionStatus = (currentOptionId: number) => {\n if (assessmentQuestion.selectedOptionId === currentOptionId) {\n return 'active';\n }\n\n if (assessmentQuestion.selectedOptionId) {\n return 'inactive';\n }\n\n return '';\n };\n\n return (\n
\n
\n {assessmentQuestion.title}\n
\n {assessmentQuestion.options?.map((option, index) => (\n \n
\n
\n {option.value}\n {option.tooltipText\n && (\n <>\n \n \n \n )}\n
\n setOption(option.id)}\n >\n \n
\n
\n {assessmentQuestion.options && index !== assessmentQuestion.options.length - 1 &&
}\n \n ))}\n
\n
\n
\n );\n};\n\nDichotomyScale.defaultProps = {\n pageChangedCallback: undefined,\n};\n\nexport default DichotomyScale;\n","import React from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { currentPageAssessments as currentPageAssessmentsSelector } from 'state/selectors';\nimport { AssessmentQuestionModel, AssessmentQuestionType } from 'models/assessment';\nimport LikertScale from './LikertScale';\nimport AmountScale from './AmountScale';\nimport DichotomyScale from './DichotomyScale';\n\ninterface Props {\n assessmentQuestion: AssessmentQuestionModel;\n optionClickCallback: () => void;\n pageChangedCallback?: () => void;\n}\n\nconst Assessment: React.FC = ({\n assessmentQuestion, optionClickCallback, pageChangedCallback, children,\n}) => {\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n\n const generateLikertScaleQuestion = () => {\n const isActive = assessmentQuestion.active || currentPageAssessments.every((a) => !a.active);\n return (\n \n {children}\n

{assessmentQuestion.title}

\n
\n \n
\n
\n );\n };\n\n const generateAmountQuestion = () => (\n \n {children}\n \n \n );\n\n const generateDichotomyQuestion = () => (\n \n {children}\n \n \n );\n\n const resolveQuestion = () => {\n switch (assessmentQuestion.questionType) {\n case AssessmentQuestionType.AgreementScale:\n case AssessmentQuestionType.Ranking:\n case AssessmentQuestionType.SimilarityScale:\n return generateLikertScaleQuestion();\n case AssessmentQuestionType.Amount:\n return generateAmountQuestion();\n case AssessmentQuestionType.Dichotomy:\n return generateDichotomyQuestion();\n default:\n return generateLikertScaleQuestion();\n }\n };\n\n return (\n resolveQuestion()\n );\n};\n\nAssessment.defaultProps = {\n pageChangedCallback: undefined,\n};\n\nexport default Assessment;\n","import React, { useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n} from 'state/atoms';\nimport DOMPurify from 'dompurify';\nimport Assessment from './Assessment';\n\ninterface Props {\n optionClickCallback: () => void;\n}\n\nconst PracticeQuestion: React.FC = ({ optionClickCallback }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const assessmentPageNumber = useRecoilValue(assessmentPageNumberAtom);\n const assessments = useRecoilValue(assessmentsAtom);\n\n const [optionClicked, setOptionClicked] = useState(false);\n\n const onPageChange = () => {\n setOptionClicked(true);\n };\n\n return (\n
\n {\n assessmentConfiguration.practiceIntroduction\n // eslint-disable-next-line react/no-danger\n ?
\n : (\n
\n

Let's practice first!

\n
\n )\n }\n {assessments.length\n && (\n \n {optionClicked && assessmentPageNumber === 0 && (\n
\n GREAT!\n
\n )}\n \n )}\n
\n );\n};\n\nexport default PracticeQuestion;\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport { useRecoilValue } from 'recoil';\nimport { assessmentPageNumber as assessmentPageNumberAtom } from 'state/atoms';\nimport { currentPageAssessments as currentPageAssessmentsSelector } from 'state/selectors';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport Assessment from './Assessment';\nimport PracticeQuestion from './PracticeQuestion';\n\ninterface Props {\n pageDirection: string;\n optionClickCallback: () => void;\n}\n\nconst SingularAssessment: React.FC = ({ pageDirection, optionClickCallback }) => {\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const assessmentPageNumber = useRecoilValue(assessmentPageNumberAtom);\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n return footer?.offsetHeight;\n };\n\n const resolveScrollDIrection = () => {\n if (pageDirection === 'prev') {\n return 'left';\n }\n\n return 'right';\n };\n\n const renderQuestion = () => {\n if (assessmentPageNumber === 0) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n
\n {currentPageAssessments.map((assessmentQuestion) => (\n \n ))}\n
\n
\n );\n };\n\n return (\n \n \n
\n \n {renderQuestion()}\n \n
\n \n
\n );\n};\n\nexport default SingularAssessment;\n","import React, { useEffect } from 'react';\nimport { Container } from 'reactstrap';\nimport { useRecoilValue } from 'recoil';\nimport { assessmentPageNumber as assessmentPageNumberAtom } from 'state/atoms';\nimport { currentPageAssessments as currentPageAssessmentsSelector } from 'state/selectors';\nimport PracticeQuestion from './PracticeQuestion';\nimport Assessment from './Assessment';\n\ninterface Props {\n optionClickCallback: () => void;\n}\n\nconst ScrollableAssessment: React.FC = ({ optionClickCallback }) => {\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const assessmentPageNumber = useRecoilValue(assessmentPageNumberAtom);\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n return footer?.offsetHeight;\n };\n\n const renderQuestion = () => {\n if (assessmentPageNumber === 0) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n {currentPageAssessments.map((assessmentQuestion) => (\n \n ))}\n
\n );\n };\n\n useEffect(() => {\n if (currentPageAssessments?.length > 1) {\n const scrollToQuestion = currentPageAssessments.find((a) => !a.selectedOptionId);\n const nextQuestion = document.getElementById(`assessment-${scrollToQuestion ? scrollToQuestion.id : currentPageAssessments[0].id}`);\n nextQuestion?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n } else {\n window.scrollTo(0, 0);\n }\n }, [currentPageAssessments]);\n\n return (\n \n
\n {renderQuestion()}\n
\n
\n );\n};\n\nexport default ScrollableAssessment;\n","import React, { useEffect, useState } from 'react';\nimport { Progress, Tooltip } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport {\n assessments as assessmentsAtom,\n assessmentsPageModel as assessmentsPageModelAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n assessmentPageNumber as assessmentPageNumberAtom,\n} from 'state/atoms';\nimport {\n assessmentsCompleted as assessmentsCompletedSelector,\n currentPageAssessments as currentPageAssessmentsSelector,\n isNextPageAvailable as isNextPageAvailableSelector,\n} from 'state/selectors';\nimport { AssessmentQuestionModel, AssessmentResponse } from 'models/assessment';\nimport { PagedListResult } from 'models/pagedListResult';\nimport { toast } from 'react-toastify';\nimport Button from 'components/common/Button';\nimport Api from 'api/agent';\nimport Loader from 'components/common/Loader';\nimport NavMenu from '../layout/NavMenu';\nimport Footer from '../layout/Footer';\nimport SingularAssessment from './SingularAssessment';\nimport ScrollableAssessment from './ScrollableAssessment';\nimport { history } from '../..';\n\nconst Assessments: React.FC = () => {\n const [assessments, setAssessments] = useRecoilState(assessmentsAtom);\n const setAssessmentsPageModel = useSetRecoilState(assessmentsPageModelAtom);\n const completed = useRecoilValue(assessmentsCompletedSelector);\n const currentPageAssessments = useRecoilValue(currentPageAssessmentsSelector);\n const isNextPageAvailable = useRecoilValue(isNextPageAvailableSelector);\n const [loading, setLoading] = useState(true);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const [assessmentPageNumber, setAssessmentPageNumber] = useRecoilState(assessmentPageNumberAtom);\n const [pageDirection, setPageDirection] = useState('next');\n\n const toggleTooltip = () => setTooltipOpen(!tooltipOpen);\n\n useEffect(() => {\n if (assessments.length) {\n setLoading(false);\n } else if (assessmentConfiguration.questionsPerPage) {\n setLoading(true);\n Api.Assessments.getAll()\n .then((data: PagedListResult) => {\n if (data.results && data.results.length > 0) {\n for (let index = 0; index < data.results.length; index += 1) {\n // eslint-disable-next-line no-param-reassign\n data.results[index].active = !data.results[index].selectedOptionId;\n if (data.results[index].active) {\n break;\n }\n }\n }\n setAssessments(data.results);\n setAssessmentsPageModel(data.pageInfo);\n setLoading(false);\n if (assessmentConfiguration.canResume) {\n let index = 0;\n for (index = 0; index < data.results.length; index += 1) {\n const element = data.results[index];\n if (!element.selectedOptionId && (!element.selectedOptionIdMost || !element.selectedOptionIdLeast)) {\n break;\n }\n }\n if (index < (data.pageInfo.totalRecords ?? 0)) {\n setAssessmentPageNumber(Math.ceil(index / assessmentConfiguration.questionsPerPage));\n } else if (assessmentConfiguration.questionsPerPage === 1) {\n setAssessmentPageNumber(data.pageInfo.totalRecords ? (data.pageInfo.totalRecords - 1) : 0);\n } else {\n setAssessmentPageNumber(Math.ceil(((data.pageInfo.totalRecords ? data.pageInfo.totalRecords : 1) - 1) / assessmentConfiguration.questionsPerPage));\n }\n }\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n }\n }, [\n setAssessments,\n setAssessmentsPageModel,\n assessments,\n assessmentConfiguration.questionsPerPage,\n ]);\n\n const saveAndExit = () => {\n Api.Assessments.saveAll(currentPageAssessments.map((a) => new AssessmentResponse(a)))\n .then(() => {\n window.location.href = assessmentConfiguration.returnUrl;\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n };\n\n const back = () => {\n setTooltipOpen(false);\n if (assessmentPageNumber === 0) {\n history.push('/');\n } else {\n setPageDirection('prev');\n setAssessmentPageNumber(assessmentPageNumber - 1);\n }\n };\n\n const nextPage = () => {\n if (isNextPageAvailable && currentPageAssessments.every((a) => a.selectedOptionId || (a.selectedOptionIdMost && a.selectedOptionIdLeast))) {\n setTooltipOpen(false);\n setPageDirection('next');\n setAssessmentPageNumber(assessmentPageNumber + 1);\n } else if (completed >= 100) {\n setTooltipOpen(false);\n history.push('/report');\n } else {\n setTooltipOpen(true);\n }\n };\n\n const nextPageText = () => {\n if (isNextPageAvailable === false) {\n return 'Complete';\n }\n return 'Next Page';\n };\n\n const onOptionClick = () => {\n setTooltipOpen(false);\n };\n\n const getTooltipMessage = () => {\n if (isNextPageAvailable) {\n if (assessmentPageNumber === 0) {\n return 'You need to complete the practice question.';\n }\n\n return 'You need to complete all questions on this page.';\n }\n\n return 'You need to complete all questions before a report can be generated.';\n };\n\n const renderAssessments = () => {\n if (assessmentConfiguration.questionsPerPage > 1) {\n return ;\n }\n\n return ;\n };\n\n return (\n
\n \n {loading\n ? \n : (\n renderAssessments()\n )}\n
\n
\n \n \n {completed}\n %\n \n
\n
\n \n
\n \n \n {completed}\n %\n \n
\n \n \n {getTooltipMessage()}\n \n
\n
\n
\n );\n};\n\nexport default Assessments;\n","import React, { useEffect } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { reportType as reportTypeAtom } from 'state/atoms';\nimport { useRecoilValue } from 'recoil';\nimport TooltipComponent from 'components/common/TooltipComponent';\nimport VenoBox from 'venobox/dist/venobox';\n\nconst AssessmentType: React.FC = () => {\n const reportType = useRecoilValue(reportTypeAtom);\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let venobox: any;\n if (reportType.videoUrl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n venobox = new VenoBox({\n selector: '#assessment-type-link',\n });\n }\n\n return () => {\n venobox?.close();\n };\n }, [reportType.videoUrl]);\n\n return (\n <>\n \n
\n {reportType.name?.map((item) => {item.key})}\n
\n
\n {reportType.label}\n
\n {reportType.iconPrefix && reportType.iconName && (\n
\n \n
\n )}\n
\n {reportType.videoUrl && }\n \n );\n};\n\nexport default AssessmentType;\n","import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ReportPageItem } from 'models/report';\nimport { Collapse } from 'reactstrap';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport {\n reportPageNumber as reportPageNumberAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { history } from '../..';\n\ninterface Props {\n page: ReportPageItem;\n pageIndex: number;\n pageIsOpened: boolean;\n allowCollapse?: boolean;\n disableNavigation?: boolean;\n preview?: boolean;\n}\n\nconst ReportTableOfContentsPage: React.FC = ({\n page, pageIndex, pageIsOpened, allowCollapse, disableNavigation, preview,\n}) => {\n const setReportPageNumber = useSetRecoilState(reportPageNumberAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const [isOpen, setIsOpen] = useState(pageIsOpened);\n\n const toggle = () => {\n if (!allowCollapse) {\n return;\n }\n setIsOpen(!isOpen);\n };\n\n const jumpToSection = (sectionIndex: number) => {\n if (disableNavigation) {\n return;\n }\n\n setReportPageNumber(pageIndex);\n history.push(`#reportSection-${sectionIndex}`);\n };\n\n const resolveReportType = (forAssessmentType: number | undefined): string | undefined => {\n if (preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n return (\n
\n
toggle()}>\n
\n {pageIndex + 1}\n \n {page.name}\n {resolveReportType(page.forAssessmentType)}\n \n
\n \n
\n \n {page.sections.map((section, sectionIndex) => (\n
\n jumpToSection(sectionIndex)}\n >\n \n {section.name}\n {resolveReportType(section.forAssessmentType)}\n \n
\n
\n ))}\n \n
\n );\n};\n\nReportTableOfContentsPage.defaultProps = {\n allowCollapse: true,\n disableNavigation: false,\n preview: false,\n};\n\nexport default ReportTableOfContentsPage;\n","import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport { reportPages as reportPagesAtom } from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from 'reactstrap';\nimport ReportTableOfContentsPage from './ReportTableOfContentsPage';\n\ninterface Props {\n currentPageIndex?: number;\n allowCollapse?: boolean;\n disableNavigation?: boolean;\n preview?: boolean;\n buttonCallback?: () => void;\n}\n\nconst ReportTableOfContents: React.FC = ({\n currentPageIndex, allowCollapse, disableNavigation, preview, buttonCallback,\n}) => {\n const [reportPages] = useRecoilState(reportPagesAtom);\n\n return (\n
\n
\n
\n \n Table of Contents\n
\n \n \n \n
\n {reportPages && reportPages.map((page, pageIndex) => (\n \n ))}\n
\n );\n};\n\nReportTableOfContents.defaultProps = {\n currentPageIndex: undefined,\n buttonCallback: undefined,\n allowCollapse: true,\n disableNavigation: false,\n preview: false,\n};\n\nexport default ReportTableOfContents;\n","import React from 'react';\nimport { ReportPageItem } from 'models/report';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport {\n reportPageNumber as reportPageNumberAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { history } from '../..';\n\ninterface Props {\n page: ReportPageItem;\n pageIndex: number;\n pageIsOpened: boolean;\n disableNavigation?: boolean;\n preview?: boolean;\n}\n\nconst ReportTableOfContentsLitePage: React.FC = ({\n page, pageIndex, pageIsOpened, disableNavigation, preview,\n}) => {\n const setReportPageNumber = useSetRecoilState(reportPageNumberAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n\n const jumpToSection = (sectionIndex: number) => {\n if (disableNavigation) {\n return;\n }\n setReportPageNumber(pageIndex);\n history.push(`#reportSection-${sectionIndex}`);\n };\n\n const resolveReportType = (forAssessmentType: number | undefined): string | undefined => {\n if (preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n return (\n
\n
\n {pageIndex + 1}\n
\n
\n
\n
\n {pageIndex + 1}\n \n {page.name}\n {resolveReportType(page.forAssessmentType)}\n \n
\n {page.sections.map((section, sectionIndex) => (\n jumpToSection(sectionIndex)}\n >\n \n {section.name}\n {resolveReportType(section.forAssessmentType)}\n \n
\n ))}\n
\n
\n \n );\n};\n\nReportTableOfContentsLitePage.defaultProps = {\n disableNavigation: false,\n preview: false,\n};\n\nexport default ReportTableOfContentsLitePage;\n","import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportType as reportTypeAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from 'reactstrap';\nimport ReportTableOfContentsLitePage from './ReportTableOfContentsLitePage';\n\ninterface Props {\n currentPageIndex?: number;\n disableNavigation?: boolean;\n preview?: boolean;\n buttonCallback?: () => void;\n}\n\nconst ReportTableOfContentsLite: React.FC = ({\n currentPageIndex, disableNavigation, preview, buttonCallback,\n}) => {\n const [reportPages] = useRecoilState(reportPagesAtom);\n const reportType = useRecoilValue(reportTypeAtom);\n\n return (\n
\n
\n \n \n \n \n
\n {reportPages && reportPages.map((page, pageIndex) => (\n \n ))}\n
\n );\n};\n\nReportTableOfContentsLite.defaultProps = {\n currentPageIndex: undefined,\n disableNavigation: false,\n buttonCallback: undefined,\n preview: false,\n};\n\nexport default ReportTableOfContentsLite;\n","import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPageNumber as reportPageNumberAtom,\n showReportTocLite as showReportTocLiteAtom,\n} from 'state/atoms';\nimport ReportTableOfContents from 'components/report-toc/ReportTableOfContents';\nimport ReportTableOfContentsLite from 'components/report-toc/ReportTableOfContentsLite';\n\ninterface Props {\n preview?: boolean;\n}\n\nconst ReportTocContainer: React.FC = ({ preview }) => {\n const reportPageNumber = useRecoilValue(reportPageNumberAtom);\n const [showReportTocLite, setShowReportTocLite] = useRecoilState(showReportTocLiteAtom);\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n return footer?.offsetHeight;\n };\n\n return (\n
\n
\n setShowReportTocLite(false)}\n />\n
\n
\n setShowReportTocLite(true)}\n />\n
\n
\n );\n};\n\nReportTocContainer.defaultProps = {\n preview: false,\n};\n\nexport default ReportTocContainer;\n","import React from 'react';\nimport {\n Modal, ModalBody, ModalFooter, ModalHeader,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\n\ninterface Props {\n headerText: string;\n confirmAction: () => void;\n isOpen: boolean;\n toggle: () => void;\n}\n\nconst PromptModal: React.FC = ({\n headerText, confirmAction, isOpen, toggle, children,\n}) => (\n \n {headerText}\n \n {children}\n \n \n \n {' '}\n \n \n \n);\n\nexport default PromptModal;\n","import React, { useEffect, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem } from 'models/report';\nimport {\n Alert, Col, Container, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport PromptModal from 'components/common/PromptModal';\n\ninterface Props {\n page: ReportPageItem;\n index: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst ReportPage: React.FC = ({\n page, index, children, dragHandleProps, builderMode, preview,\n}) => {\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const [editModal, setEditModal] = useState(false);\n const [newPageName, setNewPageName] = useState(page?.name);\n const [forAssessmentType, setForAssessmentType] = useState(page.forAssessmentType);\n const [isScrolled, setIsScrolled] = useState(false);\n const [deleteModal, setDeleteModal] = useState(false);\n const [pageTypeChanged, setPageTypeChanged] = useState(false);\n\n const getScrollHeaderWidth = () => {\n const reportSection = document.getElementById('reportPageWrapper');\n if (reportSection) {\n return `${reportSection.clientWidth}px`;\n }\n return 'inherit';\n };\n\n const [scrollHeaderWidth, setScrollHeaderWidth] = useState(getScrollHeaderWidth());\n\n const toggleEditModal = () => {\n setEditModal(!editModal);\n setPageTypeChanged(false);\n };\n\n const toggleDeleteModal = () => setDeleteModal(!deleteModal);\n\n const getScrollHeaderTopOffset = () => {\n const navbar = document.getElementById('navbar');\n if (navbar) {\n return `${navbar.offsetHeight + 20}px`;\n }\n return 'unset';\n };\n\n const setForType = (value: string) => {\n const parsed = parseInt(value, 10);\n if (!Number.isNaN(parsed)) {\n setForAssessmentType(parsed);\n } else {\n setForAssessmentType(undefined);\n }\n setPageTypeChanged(true);\n };\n\n const deletePage = () => {\n const newState = [...reportPages];\n newState.splice(index, 1);\n setReportPages(newState);\n };\n\n const save = () => {\n const newState = reportPages.map((item, i) => {\n if (i === index) {\n return {\n ...item,\n name: newPageName,\n forAssessmentType,\n sections: item.sections.map((s) => ({ ...s, forAssessmentType })),\n };\n }\n return item;\n });\n setReportPages(newState);\n setEditModal(false);\n setPageTypeChanged(false);\n };\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else {\n forType = page.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n const resolveDefaultForAssessmentType = () => {\n if (reportForType !== null && reportForType !== undefined) {\n return reportForType;\n }\n\n return page.forAssessmentType !== null ? page.forAssessmentType : undefined;\n };\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setScrollHeaderWidth(getScrollHeaderWidth());\n });\n if (!builderMode) {\n const reportSection = document.getElementById('reportPageWrapper');\n if (reportSection) {\n resizeObserver.observe(reportSection);\n }\n }\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n if (!builderMode) {\n window.onscroll = () => {\n if (window.pageYOffset > 140) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n };\n }\n }, []);\n\n return (\n \n
\n
\n
\n
\n {(index + 1).toLocaleString('en-US', { minimumIntegerDigits: 2 })}\n \n {page.name}\n {resolveReportType()}\n \n
\n
\n
\n
\n {(index + 1).toLocaleString('en-US', { minimumIntegerDigits: 2 })}\n \n {page.name}\n {resolveReportType()}\n \n
\n {builderMode && (\n <>\n \n toggleEditModal()} />\n toggleDeleteModal()}\n />\n \n \n deletePage()} isOpen={deleteModal} toggle={toggleDeleteModal}>\n Are you sure you want to delete this page?\n \n \n )}\n
\n
\n
\n {children}\n
\n
\n
\n {builderMode && (\n \n \n Edit\n {' '}\n {page?.name}\n \n \n \n \n \n setNewPageName(e.target.value)}\n />\n \n \n {reportAvailableTypes?.length > 0 && (\n \n \n \n setForType(e.target.value)}\n disabled={reportForType !== null && reportForType !== undefined}\n >\n {reportAvailableTypes.map((item) => (\n \n {item.key}\n \n ))}\n \n \n \n )}\n {pageTypeChanged && (\n \n \n If you update this page's\n "For Type" \n field, it will convert all the page sections to the new Type you have chosen.\n \n \n )}\n \n \n \n {' '}\n \n \n \n )}\n \n );\n};\n\nReportPage.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default ReportPage;\n","import { IconPrefix, IconName } from '@fortawesome/fontawesome-common-types';\nimport { KeyValuePair } from './keyValuePair';\n\nexport interface ReportListData {\n reports: ReportData[];\n availableTypes: KeyValuePair[];\n}\n\nexport interface ReportData {\n id: number;\n forAssessmentType?: number;\n pages?: ReportPageItem[];\n availableTypes: KeyValuePair[];\n type?: ReportTypeItem;\n graphData?: ReportGraphData[]\n}\n\nexport interface ReportPageItem {\n id: number;\n name: string;\n forAssessmentType?: number;\n sections: ReportSectionItem[];\n}\n\nexport interface ReportSectionItem {\n id: number;\n pageId: number;\n name: string;\n content?: string;\n type: ReportItemType;\n forAssessmentType?: number;\n sequence?: number;\n}\n\nexport interface ReportTypeItem {\n name?: KeyValuePair[];\n label?: string;\n iconPrefix?: IconPrefix;\n iconName?: IconName;\n iconColor?: string;\n videoUrl?: string;\n}\n\nexport interface ReportGraphData {\n assessmentType?: number;\n category: string;\n tooltipText?: string;\n color?: string;\n score: number;\n maxScore: number;\n percentage: number;\n}\n\nexport enum ReportItemType {\n TextEditor = 0,\n AssessmentResult = 1,\n // DISC Custom Types\n DCharacteristics = 100,\n ICharacteristics = 101,\n SCharacteristics = 102,\n CCharacteristics = 103,\n GenerosityOverview = 200,\n GenerosityGivingStrengths = 201,\n GenerosityGivingCautions = 202,\n GenerosityGivingExamples = 203,\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport Api from 'api/agent';\n\nclass ImageUploadAdapter {\n public loader: any;\n\n constructor(loader: any) {\n // The file loader instance to use during the upload.\n this.loader = loader;\n }\n\n // Starts the upload process.\n upload = () => this.loader.file.then((file: any) => Api.Image.upload(file));\n}\n\nexport default function ImageUploadAdapterPlugin(editor: any): any {\n editor.plugins.get('FileRepository').createUploadAdapter = (loader: any) => new ImageUploadAdapter(loader);\n}\n","import React, { useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport {\n Col, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport PromptModal from 'components/common/PromptModal';\nimport DOMPurify from 'dompurify';\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport CustomEditor from 'impact-app-ckeditor5-build';\nimport TextEditorUploadAdapter from '../../utils/ImageUploadAdapter';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n pageIndex: number;\n sectionIndex: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst TextEditor: React.FC = ({\n page, section, pageIndex, sectionIndex, dragHandleProps, builderMode, preview,\n}) => {\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const [editModal, setEditModal] = useState(false);\n const [newSectionName, setNewSectionName] = useState(section?.name);\n const [newSectionContent, setNewSectionContent] = useState(section?.content);\n const [forAssessmentType, setForAssessmentType] = useState(section.forAssessmentType);\n const [deleteModal, setDeleteModal] = useState(false);\n\n const toggleEditModal = () => setEditModal(!editModal);\n\n const toggleDeleteModal = () => setDeleteModal(!deleteModal);\n\n const setForType = (value: string) => {\n const parsed = parseInt(value, 10);\n if (!Number.isNaN(parsed)) {\n setForAssessmentType(parsed);\n } else {\n setForAssessmentType(undefined);\n }\n };\n\n const deleteSection = () => {\n const newState = [...reportPages[pageIndex].sections];\n newState.splice(sectionIndex, 1);\n setReportPages(reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newState };\n }\n return item;\n }));\n };\n\n const save = () => {\n const newSectionsState = reportPages[pageIndex].sections\n .map((item, i) => {\n if (i === sectionIndex) {\n return {\n ...item,\n name: newSectionName,\n forAssessmentType,\n content: newSectionContent,\n };\n }\n return item;\n });\n const newPageState = reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newSectionsState };\n }\n return item;\n });\n setReportPages(newPageState);\n setEditModal(false);\n };\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n const resolveDefaultForAssessmentType = () => {\n if (reportForType !== null && reportForType !== undefined) {\n return reportForType;\n }\n\n if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n return page.forAssessmentType;\n }\n\n return section.forAssessmentType !== null ? section.forAssessmentType : undefined;\n };\n\n const isForSectionAssessmentTypeInputDisabled = () => (reportForType !== null && reportForType !== undefined)\n || (page.forAssessmentType !== null && page.forAssessmentType !== undefined);\n\n const renderContent = () => {\n if (builderMode) {\n return undefined;\n }\n\n if (section.content) {\n return (\n
\n {\n // eslint-disable-next-line react/no-danger\n
\n }\n
\n );\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n {builderMode && (\n <>\n \n toggleEditModal()} />\n toggleDeleteModal()}\n />\n \n \n deleteSection()} isOpen={deleteModal} toggle={toggleDeleteModal}>\n Are you sure you want to delete this section?\n \n \n )}\n
\n {renderContent()}\n
\n {builderMode && (\n \n \n Edit\n {' '}\n {section?.name}\n \n \n \n \n \n setNewSectionName(e.target.value)}\n />\n \n \n {reportAvailableTypes?.length > 0 && (\n \n \n \n setForType(e.target.value)}\n disabled={isForSectionAssessmentTypeInputDisabled()}\n >\n {reportAvailableTypes.map((item) => (\n \n {item.key}\n \n ))}\n \n \n \n )}\n \n \n {\n setNewSectionContent(editor.getData());\n }}\n />\n \n \n \n \n \n {' '}\n \n \n \n )}\n \n );\n};\n\nTextEditor.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default TextEditor;\n","import React, { useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport {\n Col, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport PromptModal from 'components/common/PromptModal';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n pageIndex: number;\n sectionIndex: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst DefaultSection: React.FC = ({\n page, section, pageIndex, sectionIndex, dragHandleProps, builderMode, preview,\n}) => {\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const [editModal, setEditModal] = useState(false);\n const [newSectionName, setNewSectionName] = useState(section?.name);\n const [deleteModal, setDeleteModal] = useState(false);\n\n const toggleEditModal = () => setEditModal(!editModal);\n\n const toggleDeleteModal = () => setDeleteModal(!deleteModal);\n\n const deleteSection = () => {\n const newState = [...reportPages[pageIndex].sections];\n newState.splice(sectionIndex, 1);\n setReportPages(reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newState };\n }\n return item;\n }));\n };\n\n const save = () => {\n const newSectionsState = reportPages[pageIndex].sections\n .map((item, i) => {\n if (i === sectionIndex) {\n return {\n ...item,\n name: newSectionName,\n };\n }\n return item;\n });\n const newPageState = reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newSectionsState };\n }\n return item;\n });\n setReportPages(newPageState);\n setEditModal(false);\n };\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n {builderMode && (\n <>\n \n toggleEditModal()} />\n toggleDeleteModal()}\n />\n \n \n deleteSection()} isOpen={deleteModal} toggle={toggleDeleteModal}>\n Are you sure you want to delete this section?\n \n \n )}\n
\n
\n {builderMode && (\n \n \n Edit\n {' '}\n {section?.name}\n \n \n \n \n \n setNewSectionName(e.target.value)}\n />\n \n \n \n \n \n {' '}\n \n \n \n )}\n \n );\n};\n\nDefaultSection.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default DefaultSection;\n","export enum PersonalityAssessmentType {\n Enneagram = 0,\n MyersBriggs = 1,\n BigFive = 2,\n DISC = 3,\n SpiritualGifts = 4,\n SpiritualPreferences = 5,\n}\n","export const LightenDarkenColor = (colorCodeInput: string | undefined, amount: number): string => {\n let usePound = false;\n let colorCode = colorCodeInput;\n\n if (!colorCode) {\n return '';\n }\n\n if (colorCode[0] === '#') {\n colorCode = colorCode.slice(1);\n usePound = true;\n }\n\n const num = parseInt(colorCode, 16);\n\n // eslint-disable-next-line no-bitwise\n let r = (num >> 16) + amount;\n\n if (r > 255) {\n r = 255;\n } else if (r < 0) {\n r = 0;\n }\n\n // eslint-disable-next-line no-bitwise\n let b = ((num >> 8) & 0x00FF) + amount;\n\n if (b > 255) {\n b = 255;\n } else if (b < 0) {\n b = 0;\n }\n\n // eslint-disable-next-line no-bitwise\n let g = (num & 0x0000FF) + amount;\n\n if (g > 255) {\n g = 255;\n } else if (g < 0) {\n g = 0;\n }\n\n // eslint-disable-next-line no-bitwise\n return (usePound ? '#' : '') + (g | (b << 8) | (r << 16)).toString(16);\n};\n","import React, { useEffect } from 'react';\nimport {\n assessmentConfiguration as assessmentConfigurationAtom,\n reportGraphData as reportGraphDataAtom,\n} from 'state/atoms';\nimport { useRecoilValue } from 'recoil';\nimport { PersonalityAssessmentType } from 'models/personalityAssessmentType';\nimport { ChartType } from 'models/chartType';\nimport { LightenDarkenColor } from 'utils/utils';\nimport TooltipComponent from 'components/common/TooltipComponent';\nimport * as am4core from '@amcharts/amcharts4/core';\nimport am4ThemesAnimated from '@amcharts/amcharts4/themes/animated';\nimport * as am4charts from '@amcharts/amcharts4/charts';\n\nam4core.useTheme(am4ThemesAnimated);\n\ninterface Props {\n location: string;\n renderChart?: boolean\n}\n\nconst AssessmentGraph: React.FC = ({ location, renderChart }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const reportGraphData = useRecoilValue(reportGraphDataAtom);\n let XYChart: am4charts.XYChart;\n\n // Enneagram\n const renderEnneagramGraph = () =>
;\n\n const initEnneagramGraph = () => {\n XYChart = am4core.create(`${location}-chart`, am4charts.XYChart);\n\n XYChart.responsive.enabled = true;\n XYChart.responsive.useDefault = false;\n XYChart.responsive.rules.push({\n relevant: (target) => {\n if (target.pixelWidth <= 500) {\n return true;\n }\n\n return false;\n },\n state: (target, stateId) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let state: any;\n if (target instanceof am4charts.Chart) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 10;\n state.properties.paddingRight = 45;\n state.properties.paddingBottom = 5;\n state.properties.paddingLeft = 15;\n return state;\n }\n\n if (target instanceof am4core.Scrollbar) {\n state = target.states.create(stateId);\n state.properties.marginBottom = -10;\n return state;\n }\n\n if (target instanceof am4charts.Legend) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 0;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 0;\n state.properties.marginLeft = 0;\n return state;\n }\n\n if (target instanceof am4charts.AxisRendererY) {\n state = target.states.create(stateId);\n state.properties.inside = true;\n state.properties.maxLabelPosition = 0.99;\n return state;\n }\n\n if ((target instanceof am4charts.AxisLabel) && (target.parent instanceof am4charts.AxisRendererY)) {\n state = target.states.create(stateId);\n state.properties.dy = -18;\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 5;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 5;\n\n // Create a separate state for background\n // eslint-disable-next-line no-param-reassign\n target.setStateOnChildren = true;\n const bgstate = target.background.states.create(stateId);\n bgstate.properties.fill = am4core.color('#fff');\n bgstate.properties.fillOpacity = 0.7;\n\n return state;\n }\n\n return null;\n },\n });\n XYChart.responsive.rules.push({\n relevant: (target) => {\n if (target.pixelWidth <= 320) {\n return true;\n }\n\n return false;\n },\n state: (target, stateId) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let state: any;\n if ((target instanceof am4charts.AxisLabel) && (target.parent instanceof am4charts.AxisRendererX)) {\n state = target.states.create(stateId);\n state.properties.disabled = true;\n\n return state;\n }\n\n return null;\n },\n });\n\n XYChart.data = reportGraphData;\n XYChart.numberFormatter.numberFormat = '#.';\n\n const categoryAxis = XYChart.yAxes.push(new am4charts.CategoryAxis());\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.disabled = true;\n categoryAxis.renderer.labels.template.fill = am4core.color('#808080');\n categoryAxis.renderer.labels.template.fontSize = 14;\n categoryAxis.renderer.minGridDistance = 20;\n categoryAxis.renderer.cellStartLocation = 0.15;\n categoryAxis.renderer.cellEndLocation = 0.85;\n categoryAxis.renderer.inversed = true;\n\n const valueAxis = XYChart.xAxes.push(new am4charts.ValueAxis());\n valueAxis.renderer.labels.template.disabled = true;\n valueAxis.strictMinMax = true;\n valueAxis.min = 0;\n valueAxis.max = 100;\n valueAxis.renderer.grid.template.disabled = true;\n\n const series = XYChart.series.push(new am4charts.ColumnSeries());\n series.dataFields.valueX = 'percentage';\n series.dataFields.categoryY = 'category';\n series.columns.template.tooltipText = '{tooltipText}';\n if (series.tooltip) {\n series.tooltip.label.wrap = true;\n series.tooltip.pointerOrientation = 'vertical';\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color('#191919');\n series.tooltip.fontSize = 14;\n }\n series.columns.template.adapter.add('fill', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n series.columns.template.adapter.add('stroke', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n\n XYChart.maskBullets = false;\n XYChart.paddingRight = 45;\n const valueLabel = series.bullets.push(new am4charts.LabelBullet());\n valueLabel.label.text = '{valueX}%';\n valueLabel.label.horizontalCenter = 'left';\n valueLabel.label.dx = 5;\n valueLabel.label.dy = 1;\n valueLabel.label.hideOversized = false;\n valueLabel.label.truncate = false;\n\n const createRange = (axis: am4charts.ValueAxis, from: number, to: number, label: string) => {\n const range = axis.axisRanges.create();\n range.value = from;\n range.endValue = to;\n range.grid.strokeOpacity = 0;\n range.label.text = label;\n range.label.fill = am4core.color('#808080');\n range.label.fontSize = 14;\n\n const rangeBorder = axis.axisRanges.create();\n rangeBorder.value = from;\n rangeBorder.grid.strokeOpacity = 0.1;\n };\n\n createRange(valueAxis, 0, 33.3, 'Unlikely');\n createRange(valueAxis, 33.3, 66.7, 'Possible');\n createRange(valueAxis, 66.7, 100, 'High Potential');\n };\n // Enneagram END\n\n // MyersBriggs\n const renderMyersBriggsGraph = () => {\n const rows: JSX.Element[] = [];\n for (let i = 0; i < reportGraphData.length; i += 2) {\n const item1 = reportGraphData[i];\n const item2 = reportGraphData[i + 1];\n const percentage = Math.round(item1.percentage);\n rows.push(\n
\n
\n \n {percentage}\n %\n \n \n {100 - percentage}\n %\n \n
\n
\n \n \n
\n
\n \n {item1.category}\n \n {item2.category}\n
\n \n \n
,\n );\n }\n\n return (\n
\n {rows}\n
\n );\n };\n // MyersBriggs END\n\n // DISC\n const renderDISCGraph = () => (\n
\n
\n
\n );\n\n const initDISCGraph = () => {\n XYChart = am4core.create(`${location}-chart`, am4charts.XYChart);\n\n XYChart.responsive.enabled = true;\n XYChart.data = reportGraphData;\n XYChart.numberFormatter.numberFormat = '#.';\n\n const categoryAxis = XYChart.xAxes.push(new am4charts.CategoryAxis());\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.disabled = true;\n categoryAxis.renderer.labels.template.fontSize = 18;\n categoryAxis.renderer.minGridDistance = 20;\n categoryAxis.renderer.cellStartLocation = 0.3;\n categoryAxis.renderer.cellEndLocation = 0.7;\n\n const valueAxis = XYChart.yAxes.push(new am4charts.ValueAxis());\n valueAxis.renderer.labels.template.disabled = true;\n valueAxis.min = 0;\n valueAxis.renderer.grid.template.disabled = true;\n\n const series = XYChart.series.push(new am4charts.ColumnSeries());\n series.dataFields.valueY = 'percentage';\n series.dataFields.categoryX = 'category';\n series.columns.template.tooltipText = '{tooltipText}';\n if (series.tooltip) {\n series.tooltip.label.wrap = true;\n series.tooltip.pointerOrientation = 'vertical';\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color('#191919');\n series.tooltip.fontSize = 14;\n }\n series.columns.template.adapter.add('fill', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n series.columns.template.adapter.add('stroke', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n\n XYChart.paddingTop = 30;\n XYChart.maskBullets = false;\n const valueLabel = series.bullets.push(new am4charts.LabelBullet());\n valueLabel.label.text = '{valueY}%';\n valueLabel.label.dy = -16;\n valueLabel.label.hideOversized = false;\n valueLabel.label.truncate = false;\n };\n // DISC END\n\n // SpiritualGifts and SpiritualPreferences\n const renderSpiritualGraph = () =>
;\n\n const initSpiritualGraph = () => {\n XYChart = am4core.create(`${location}-chart`, am4charts.XYChart);\n\n XYChart.responsive.enabled = true;\n XYChart.responsive.useDefault = false;\n XYChart.responsive.rules.push({\n relevant: (target) => {\n if (target.pixelWidth <= 300) {\n return true;\n }\n\n return false;\n },\n state: (target, stateId) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let state: any;\n if (target instanceof am4charts.Chart) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 10;\n state.properties.paddingRight = 30;\n state.properties.paddingBottom = 5;\n state.properties.paddingLeft = 15;\n return state;\n }\n\n if (target instanceof am4core.Scrollbar) {\n state = target.states.create(stateId);\n state.properties.marginBottom = -10;\n return state;\n }\n\n if (target instanceof am4charts.Legend) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 0;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 0;\n state.properties.marginLeft = 0;\n return state;\n }\n\n if (target instanceof am4charts.AxisRendererY) {\n state = target.states.create(stateId);\n state.properties.inside = true;\n state.properties.maxLabelPosition = 0.99;\n return state;\n }\n\n if ((target instanceof am4charts.AxisLabel) && (target.parent instanceof am4charts.AxisRendererY)) {\n state = target.states.create(stateId);\n state.properties.dy = -18;\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 5;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 5;\n\n // Create a separate state for background\n // eslint-disable-next-line no-param-reassign\n target.setStateOnChildren = true;\n const bgstate = target.background.states.create(stateId);\n bgstate.properties.fill = am4core.color('#fff');\n bgstate.properties.fillOpacity = 0.7;\n\n return state;\n }\n\n return null;\n },\n });\n\n XYChart.data = reportGraphData;\n XYChart.numberFormatter.numberFormat = '#.';\n\n const categoryAxis = XYChart.yAxes.push(new am4charts.CategoryAxis());\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.disabled = true;\n categoryAxis.renderer.labels.template.fill = am4core.color('#808080');\n categoryAxis.renderer.labels.template.fontSize = 14;\n categoryAxis.renderer.minGridDistance = 20;\n categoryAxis.renderer.cellStartLocation = 0.15;\n categoryAxis.renderer.cellEndLocation = 0.85;\n categoryAxis.renderer.inversed = true;\n\n const valueAxis = XYChart.xAxes.push(new am4charts.ValueAxis());\n valueAxis.renderer.labels.template.disabled = true;\n valueAxis.strictMinMax = true;\n valueAxis.min = 0;\n valueAxis.max = 110;\n valueAxis.renderer.grid.template.disabled = true;\n\n const series = XYChart.series.push(new am4charts.ColumnSeries());\n series.dataFields.valueX = 'percentage';\n series.dataFields.categoryY = 'category';\n series.columns.template.tooltipText = '{tooltipText}';\n if (series.tooltip) {\n series.tooltip.label.wrap = true;\n series.tooltip.pointerOrientation = 'vertical';\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color('#191919');\n series.tooltip.fontSize = 14;\n }\n series.columns.template.adapter.add('fill', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n series.columns.template.adapter.add('stroke', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n\n XYChart.maskBullets = false;\n XYChart.paddingRight = 35;\n const valueLabel = series.bullets.push(new am4charts.LabelBullet());\n valueLabel.label.text = '{valueX}%';\n valueLabel.label.horizontalCenter = 'left';\n valueLabel.label.dx = 5;\n valueLabel.label.dy = 1;\n valueLabel.label.hideOversized = false;\n valueLabel.label.truncate = false;\n\n [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110].forEach((range) => {\n const axisRange = valueAxis.axisRanges.create();\n axisRange.value = range;\n axisRange.grid.strokeOpacity = 0.1;\n });\n\n XYChart.events.on('datavalidated', (ev) => {\n const chart = ev.target;\n\n if (!chart.svgContainer) {\n return;\n }\n\n const yAxes = chart.yAxes.getIndex(0);\n const cellSize = 40;\n\n const adjustHeight = chart.data.length * cellSize - (yAxes?.pixelHeight ?? 0);\n const targetHeight = chart.pixelHeight + adjustHeight;\n\n chart.svgContainer.htmlElement.style.height = `${targetHeight}px`;\n });\n };\n // SpiritualGifts and SpiritualPreferences END\n\n const initBarChart = () => {\n XYChart = am4core.create(`${location}-chart`, am4charts.XYChart);\n\n XYChart.responsive.enabled = true;\n XYChart.responsive.useDefault = false;\n XYChart.responsive.rules.push({\n relevant: (target) => {\n if (target.pixelWidth <= 300) {\n return true;\n }\n\n return false;\n },\n state: (target, stateId) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let state: any;\n if (target instanceof am4charts.Chart) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 10;\n state.properties.paddingRight = 30;\n state.properties.paddingBottom = 5;\n state.properties.paddingLeft = 15;\n return state;\n }\n\n if (target instanceof am4core.Scrollbar) {\n state = target.states.create(stateId);\n state.properties.marginBottom = -10;\n return state;\n }\n\n if (target instanceof am4charts.Legend) {\n state = target.states.create(stateId);\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 0;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 0;\n state.properties.marginLeft = 0;\n return state;\n }\n\n if (target instanceof am4charts.AxisRendererY) {\n state = target.states.create(stateId);\n state.properties.inside = true;\n state.properties.maxLabelPosition = 0.99;\n return state;\n }\n\n if ((target instanceof am4charts.AxisLabel) && (target.parent instanceof am4charts.AxisRendererY)) {\n state = target.states.create(stateId);\n state.properties.dy = -18;\n state.properties.paddingTop = 0;\n state.properties.paddingRight = 5;\n state.properties.paddingBottom = 0;\n state.properties.paddingLeft = 5;\n\n // Create a separate state for background\n // eslint-disable-next-line no-param-reassign\n target.setStateOnChildren = true;\n const bgstate = target.background.states.create(stateId);\n bgstate.properties.fill = am4core.color('#fff');\n bgstate.properties.fillOpacity = 0.7;\n\n return state;\n }\n\n return null;\n },\n });\n\n XYChart.data = reportGraphData;\n XYChart.numberFormatter.numberFormat = '#.';\n\n const categoryAxis = XYChart.yAxes.push(new am4charts.CategoryAxis());\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.disabled = true;\n categoryAxis.renderer.labels.template.fill = am4core.color('#808080');\n categoryAxis.renderer.labels.template.fontSize = 14;\n categoryAxis.renderer.minGridDistance = 20;\n categoryAxis.renderer.cellStartLocation = 0.15;\n categoryAxis.renderer.cellEndLocation = 0.85;\n categoryAxis.renderer.inversed = true;\n\n const valueAxis = XYChart.xAxes.push(new am4charts.ValueAxis());\n valueAxis.renderer.labels.template.disabled = true;\n valueAxis.strictMinMax = true;\n valueAxis.min = 0;\n valueAxis.max = 110;\n valueAxis.renderer.grid.template.disabled = true;\n\n const series = XYChart.series.push(new am4charts.ColumnSeries());\n series.dataFields.valueX = 'percentage';\n series.dataFields.categoryY = 'category';\n series.columns.template.tooltipText = '{tooltipText}';\n if (series.tooltip) {\n series.tooltip.label.wrap = true;\n series.tooltip.pointerOrientation = 'vertical';\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fill = am4core.color('#191919');\n series.tooltip.fontSize = 14;\n }\n series.columns.template.adapter.add('fill', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n series.columns.template.adapter.add('stroke', (fill, target) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataContext: any = target.dataItem?.dataContext;\n return dataContext.color;\n });\n\n XYChart.maskBullets = false;\n XYChart.paddingRight = 35;\n const valueLabel = series.bullets.push(new am4charts.LabelBullet());\n valueLabel.label.text = '{valueX}%';\n valueLabel.label.horizontalCenter = 'left';\n valueLabel.label.dx = 5;\n valueLabel.label.dy = 1;\n valueLabel.label.hideOversized = false;\n valueLabel.label.truncate = false;\n\n [10, 20, 30, 40, 50, 60, 70, 80, 90, 100].forEach((range) => {\n const axisRange = valueAxis.axisRanges.create();\n axisRange.value = range;\n axisRange.grid.strokeOpacity = 0.1;\n });\n\n XYChart.events.on('datavalidated', (ev) => {\n const chart = ev.target;\n\n if (!chart.svgContainer) {\n return;\n }\n\n const yAxes = chart.yAxes.getIndex(0);\n const cellSize = 40;\n\n const adjustHeight = chart.data.length * cellSize - (yAxes?.pixelHeight ?? 0);\n const targetHeight = chart.pixelHeight + adjustHeight;\n\n chart.svgContainer.htmlElement.style.height = `${targetHeight}px`;\n });\n };\n\n const initCustomGraph = () => {\n switch (assessmentConfiguration.assessmentType) {\n case PersonalityAssessmentType.Enneagram:\n initEnneagramGraph();\n break;\n case PersonalityAssessmentType.MyersBriggs:\n break;\n case PersonalityAssessmentType.DISC:\n initDISCGraph();\n break;\n case PersonalityAssessmentType.SpiritualGifts:\n case PersonalityAssessmentType.SpiritualPreferences:\n initSpiritualGraph();\n break;\n default:\n initBarChart();\n break;\n }\n };\n\n const renderCustomGraph = () => {\n switch (assessmentConfiguration.assessmentType) {\n case PersonalityAssessmentType.Enneagram:\n return renderEnneagramGraph();\n case PersonalityAssessmentType.MyersBriggs:\n return renderMyersBriggsGraph();\n case PersonalityAssessmentType.DISC:\n return renderDISCGraph();\n case PersonalityAssessmentType.SpiritualGifts:\n case PersonalityAssessmentType.SpiritualPreferences:\n return renderSpiritualGraph();\n default:\n return
;\n }\n };\n\n const renderGraph = () => {\n switch (assessmentConfiguration.chartType) {\n case ChartType.None:\n return <>;\n case ChartType.Custom:\n return renderCustomGraph();\n default:\n return
;\n }\n };\n\n useEffect(() => {\n if (!reportGraphData.length || !renderChart) {\n return undefined;\n }\n\n switch (assessmentConfiguration.chartType) {\n case ChartType.None:\n return undefined;\n case ChartType.Custom:\n initCustomGraph();\n break;\n default:\n initBarChart();\n break;\n }\n\n return () => {\n XYChart?.dispose();\n };\n }, [\n reportGraphData,\n renderChart,\n assessmentConfiguration.chartType,\n ]);\n\n return (\n
\n {renderGraph()}\n
\n );\n};\n\nAssessmentGraph.defaultProps = {\n renderChart: true,\n};\n\nexport default AssessmentGraph;\n","import React, { useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport {\n Col, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport AssessmentGraph from 'components/assessment-result/AssessmentGraph';\nimport AssessmentType from 'components/assessment-result/AssessmentType';\nimport PromptModal from 'components/common/PromptModal';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n pageIndex: number;\n sectionIndex: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst AssessmentResult: React.FC = ({\n page, section, pageIndex, sectionIndex, dragHandleProps, builderMode, preview,\n}) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const [editModal, setEditModal] = useState(false);\n const [newSectionName, setNewSectionName] = useState(section?.name);\n const [deleteModal, setDeleteModal] = useState(false);\n\n const toggleEditModal = () => setEditModal(!editModal);\n\n const toggleDeleteModal = () => setDeleteModal(!deleteModal);\n\n const deleteSection = () => {\n const newState = [...reportPages[pageIndex].sections];\n newState.splice(sectionIndex, 1);\n setReportPages(reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newState };\n }\n return item;\n }));\n };\n\n const save = () => {\n const newSectionsState = reportPages[pageIndex].sections\n .map((item, i) => {\n if (i === sectionIndex) {\n return {\n ...item,\n name: newSectionName,\n };\n }\n return item;\n });\n const newPageState = reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newSectionsState };\n }\n return item;\n });\n setReportPages(newPageState);\n setEditModal(false);\n };\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n {builderMode && (\n <>\n \n toggleEditModal()} />\n toggleDeleteModal()}\n />\n \n \n deleteSection()} isOpen={deleteModal} toggle={toggleDeleteModal}>\n Are you sure you want to delete this section?\n \n \n )}\n
\n {!builderMode && (\n
\n {/* TEMP: custom logic for generosity.impact.app, cbchighlands.impact.app [OrganizationID]=55401, 55478 */}\n {assessmentConfiguration.organizationID && [55401.55478].indexOf(assessmentConfiguration.organizationID) > -1 && section.id && section.id < 0 ? '' : }\n \n
\n )}\n
\n {builderMode && (\n \n \n Edit\n {' '}\n {section?.name}\n \n \n \n \n \n setNewSectionName(e.target.value)}\n />\n \n \n \n \n \n {' '}\n \n \n \n )}\n \n );\n};\n\nAssessmentResult.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default AssessmentResult;\n","import React, { useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport {\n Col, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport PromptModal from 'components/common/PromptModal';\nimport DOMPurify from 'dompurify';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n pageIndex: number;\n sectionIndex: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst DiscCharacteristics: React.FC = ({\n page, section, pageIndex, sectionIndex, dragHandleProps, builderMode, preview,\n}) => {\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n const [editModal, setEditModal] = useState(false);\n const [newSectionName, setNewSectionName] = useState(section?.name);\n const [deleteModal, setDeleteModal] = useState(false);\n\n const toggleEditModal = () => setEditModal(!editModal);\n\n const toggleDeleteModal = () => setDeleteModal(!deleteModal);\n\n const deleteSection = () => {\n const newState = [...reportPages[pageIndex].sections];\n newState.splice(sectionIndex, 1);\n setReportPages(reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newState };\n }\n return item;\n }));\n };\n\n const save = () => {\n const newSectionsState = reportPages[pageIndex].sections\n .map((item, i) => {\n if (i === sectionIndex) {\n return {\n ...item,\n name: newSectionName,\n };\n }\n return item;\n });\n const newPageState = reportPages.map((item, i) => {\n if (i === pageIndex) {\n return { ...item, sections: newSectionsState };\n }\n return item;\n });\n setReportPages(newPageState);\n setEditModal(false);\n };\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n const renderContent = () => {\n if (builderMode) {\n return undefined;\n }\n\n if (section.content) {\n return (\n
\n {\n // eslint-disable-next-line react/no-danger\n
\n }\n
\n );\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n {builderMode && (\n <>\n \n toggleEditModal()} />\n toggleDeleteModal()}\n />\n \n \n deleteSection()} isOpen={deleteModal} toggle={toggleDeleteModal}>\n Are you sure you want to delete this section?\n \n \n )}\n
\n {renderContent()}\n
\n {builderMode && (\n \n \n Edit\n {' '}\n {section?.name}\n \n \n \n \n \n setNewSectionName(e.target.value)}\n />\n \n \n \n \n \n {' '}\n \n \n \n )}\n \n );\n};\n\nDiscCharacteristics.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default DiscCharacteristics;\n","import React from 'react';\nimport { reportType as reportTypeAtom } from 'state/atoms';\nimport { useRecoilValue } from 'recoil';\n\nconst AssessmentGenerosityType: React.FC = () => {\n const reportType = useRecoilValue(reportTypeAtom);\n\n const getLabelText = (): string | null => {\n let label = '';\n if (reportType.name && reportType.name?.length > 0) {\n switch (reportType.name[0].key.toLowerCase()) {\n case 'd':\n label = 'THE DECISIVE GIVER';\n break;\n case 'i':\n label = 'THE INSPIRED GIVER';\n break;\n case 's':\n label = 'THE SACRIFICIAL GIVER';\n break;\n case 'c':\n label = 'THE CALCULATED GIVER';\n break;\n default:\n break;\n }\n }\n return label;\n };\n\n return (\n <>\n
\n {reportType.name?.map((item) => {item.key})}\n
\n
\n {reportType.name && reportType.name?.length > 0 ? getLabelText() : ''}\n
\n \n );\n};\n\nexport default AssessmentGenerosityType;\n","import React from 'react';\nimport { useRecoilValue } from 'recoil';\nimport {\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport DOMPurify from 'dompurify';\nimport AssessmentGenerosityType from 'components/assessment-result/AssessmentGenerosityType';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n sectionIndex: number;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst GenerosityOverview: React.FC = ({\n page, section, sectionIndex, builderMode, preview,\n}) => {\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n const renderContent = () => {\n if (builderMode) {\n return undefined;\n }\n\n if (section.content) {\n return (\n
\n {\n // eslint-disable-next-line react/no-danger\n
\n }\n
\n );\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n
\n {!builderMode && (\n
\n \n
\n )}\n
\n {renderContent()}\n
\n
\n \n );\n};\n\nGenerosityOverview.defaultProps = {\n builderMode: false,\n preview: false,\n};\n\nexport default GenerosityOverview;\n","import React from 'react';\nimport { useRecoilValue } from 'recoil';\nimport {\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n} from 'state/atoms';\nimport { ReportPageItem, ReportSectionItem } from 'models/report';\nimport DOMPurify from 'dompurify';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n sectionIndex: number;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst GenerositySection: React.FC = ({\n page, section, sectionIndex, builderMode, preview,\n}) => {\n const reportAvailableTypes = useRecoilValue(reportAvailableTypesAtom);\n const reportForType = useRecoilValue(reportForTypeAtom);\n\n const resolveReportType = (): string | undefined => {\n if (builderMode || preview) {\n let forType: number | undefined;\n if (reportForType !== null && reportForType !== undefined) {\n forType = reportForType;\n } else if (page.forAssessmentType !== null && page.forAssessmentType !== undefined) {\n forType = page.forAssessmentType;\n } else {\n forType = section.forAssessmentType;\n }\n const type = reportAvailableTypes.find((x) => x.value === (forType ?? null));\n if (type) {\n return ` (${type.key})`;\n }\n }\n\n return undefined;\n };\n\n const renderContent = () => {\n if (builderMode) {\n return undefined;\n }\n\n if (section.content) {\n return (\n
\n {\n // eslint-disable-next-line react/no-danger\n
\n }\n
\n );\n }\n\n return undefined;\n };\n\n return (\n <>\n
\n
\n \n {section.name}\n {resolveReportType()}\n \n
\n
\n {renderContent()}\n
\n
\n \n );\n};\n\nGenerositySection.defaultProps = {\n builderMode: false,\n preview: false,\n};\n\nexport default GenerositySection;\n","import React from 'react';\nimport { DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';\nimport { ReportPageItem, ReportSectionItem, ReportItemType } from 'models/report';\nimport TextEditor from 'components/report-sections/TextEditor';\nimport DefaultSection from 'components/report-sections/DefaultSection';\nimport AssessmentResult from 'components/report-sections/AssessmentResult';\nimport DiscCharacteristics from 'components/report-sections/disc/DiscCharacteristics';\nimport GenerosityOverview from 'components/report-sections/disc/GenerosityOverview';\nimport GenerositySection from 'components/report-sections/disc/GenerositySection';\n\ninterface Props {\n page: ReportPageItem;\n section: ReportSectionItem;\n pageIndex: number;\n sectionIndex: number;\n dragHandleProps?: DraggableProvidedDragHandleProps;\n builderMode?: boolean;\n preview?: boolean;\n}\n\nconst ReportSection: React.FC = ({\n page, section, pageIndex, sectionIndex, dragHandleProps, builderMode, preview,\n}) => {\n const renderSection = () => {\n switch (section?.type) {\n case ReportItemType.TextEditor:\n return (\n \n );\n case ReportItemType.AssessmentResult:\n return (\n \n );\n case ReportItemType.DCharacteristics:\n case ReportItemType.ICharacteristics:\n case ReportItemType.SCharacteristics:\n case ReportItemType.CCharacteristics:\n return (\n \n );\n case ReportItemType.GenerosityOverview:\n return (\n \n );\n case ReportItemType.GenerosityGivingStrengths:\n case ReportItemType.GenerosityGivingCautions:\n case ReportItemType.GenerosityGivingExamples:\n return (\n \n );\n default:\n return (\n \n );\n }\n };\n\n return renderSection();\n};\n\nReportSection.defaultProps = {\n dragHandleProps: undefined,\n builderMode: false,\n preview: false,\n};\n\nexport default ReportSection;\n","import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportPages as reportPagesAtom,\n reportPageNumber as reportPageNumberAtom,\n showReportTocLite as showReportTocLiteAtom,\n showReportTypeLite as showReportTypeLiteAtom,\n} from 'state/atoms';\nimport ReportPage from './ReportPage';\nimport ReportSection from './ReportSection';\n\ninterface Props {\n preview?: boolean;\n}\n\nconst ReportContainer: React.FC = ({ preview }) => {\n const [reportPages] = useRecoilState(reportPagesAtom);\n const reportPageNumber = useRecoilValue(reportPageNumberAtom);\n const showReportTocLite = useRecoilValue(showReportTocLiteAtom);\n const showReportTypeLite = useRecoilValue(showReportTypeLiteAtom);\n\n return (\n \n
\n
\n
\n {reportPages[reportPageNumber]\n && (\n \n {reportPages[reportPageNumber].sections.map((section, sectionIndex) => (\n \n ))}\n \n )}\n
\n );\n};\n\nReportContainer.defaultProps = {\n preview: false,\n};\n\nexport default ReportContainer;\n","import React from 'react';\nimport { Button } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n showReportTypeLite as showReportTypeLiteAtom,\n reportType as reportTypeAtom,\n} from 'state/atoms';\nimport AssessmentType from 'components/assessment-result/AssessmentType';\nimport AssessmentGraph from 'components/assessment-result/AssessmentGraph';\n\nconst ReportTypeContainer: React.FC = () => {\n const [showReportTypeLite, setShowReportTypeLite] = useRecoilState(showReportTypeLiteAtom);\n const reportType = useRecoilValue(reportTypeAtom);\n\n const reportTypeToggle = () => {\n setShowReportTypeLite(!showReportTypeLite);\n };\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n return footer?.offsetHeight;\n };\n\n return (\n
\n
\n
\n
\n reportTypeToggle()}\n >\n \n \n \n
\n
\n
\n
\n
\n
\n reportTypeToggle()}\n >\n \n \n
\n Your Type\n
\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ReportTypeContainer;\n","import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ReportPageItem } from 'models/report';\nimport { useSetRecoilState } from 'recoil';\nimport { reportPageNumber as reportPageNumberAtom } from 'state/atoms';\nimport { history } from '../..';\n\ninterface Props {\n page: ReportPageItem;\n pageIndex: number;\n pageIsOpened: boolean;\n allowCollapse?: boolean;\n pageClickCallback?: () => void;\n sectionClickCallback?: () => void;\n}\n\nconst ReportTableOfContentsPageMobile: React.FC = ({\n page, pageIndex, pageIsOpened, allowCollapse, pageClickCallback, sectionClickCallback,\n}) => {\n const setReportPageNumber = useSetRecoilState(reportPageNumberAtom);\n const [isOpen, setIsOpen] = useState(false);\n\n const onPageRowClick = () => {\n if (!allowCollapse) {\n return;\n }\n setIsOpen(!isOpen);\n if (pageClickCallback) {\n pageClickCallback();\n }\n };\n\n const onSectionRowClick = (sectionIndex: number) => {\n setReportPageNumber(pageIndex);\n history.push(`#reportSection-${sectionIndex}`);\n onPageRowClick();\n if (sectionClickCallback) {\n sectionClickCallback();\n }\n };\n\n return (\n
\n
onPageRowClick()}>\n \n
\n {pageIndex + 1}\n {page.name}\n
\n \n
\n
\n {page.sections.map((section, sectionIndex) => (\n
\n onSectionRowClick(sectionIndex)}\n >\n {section.name}\n
\n
\n ))}\n
\n
\n );\n};\n\nReportTableOfContentsPageMobile.defaultProps = {\n allowCollapse: true,\n pageClickCallback: undefined,\n sectionClickCallback: undefined,\n};\n\nexport default ReportTableOfContentsPageMobile;\n","import React, { useState } from 'react';\nimport { useRecoilState } from 'recoil';\nimport { reportPages as reportPagesAtom } from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ReportTableOfContentsPageMobile from './ReportTableOfContentsPageMobile';\n\ninterface Props {\n allowCollapse?: boolean;\n sectionClickCallback?: () => void;\n}\n\nconst ReportTableOfContentsMobile: React.FC = ({\n allowCollapse, sectionClickCallback,\n}) => {\n const [reportPages] = useRecoilState(reportPagesAtom);\n const [pageNumberExpanded, setPageNumberExpanded] = useState(undefined);\n\n const pageClickCallback = (pageIndex: number) => {\n if (pageNumberExpanded === pageIndex) {\n setPageNumberExpanded(undefined);\n } else {\n setPageNumberExpanded(pageIndex);\n }\n };\n\n return (\n
\n
\n
\n \n Table of Contents\n
\n
\n {reportPages && reportPages.map((page, pageIndex) => (\n pageClickCallback(pageIndex)}\n sectionClickCallback={sectionClickCallback}\n />\n ))}\n
\n );\n};\n\nReportTableOfContentsMobile.defaultProps = {\n allowCollapse: true,\n sectionClickCallback: undefined,\n};\n\nexport default ReportTableOfContentsMobile;\n","import React, { useState } from 'react';\nimport {\n NavbarBrand, Media, Collapse,\n} from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useRecoilValue } from 'recoil';\nimport {\n assessmentConfiguration as assessmentConfigurationAtom,\n reportType as reportTypeAtom,\n} from 'state/atoms';\nimport Button from 'components/common/Button';\nimport AssessmentType from 'components/assessment-result/AssessmentType';\nimport AssessmentGraph from 'components/assessment-result/AssessmentGraph';\nimport ReportTableOfContentsMobile from 'components/report-toc/ReportTableOfContentsMobile';\nimport NavbarBase from '../layout/NavbarBase';\n\nconst ReportNavMenuMobile: React.FC = () => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const reportType = useRecoilValue(reportTypeAtom);\n const [isTypeOpen, setIsTypeOpen] = useState(false);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [chartRendered, setChartRendered] = useState(false);\n\n const toggleCollapse = () => {\n setIsMenuOpen(false);\n setIsTypeOpen(!isTypeOpen);\n setChartRendered(true);\n };\n\n const onMenuButtonClick = () => {\n setIsTypeOpen(false);\n setIsMenuOpen(!isMenuOpen);\n };\n\n const backToProfile = () => {\n window.location.href = assessmentConfiguration.returnUrl;\n };\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n return (\n <>\n \n
\n
\n {assessmentConfiguration.logoUrl && (\n \n \n \n )}\n
\n \n \n
\n \n
\n
\n \n \n
\n \n \n
\n \n
\n
\n onMenuButtonClick()} />\n
\n
\n \n \n );\n};\n\nexport default ReportNavMenuMobile;\n","import React, { useEffect, useState } from 'react';\nimport NavMenu from 'components/layout/NavMenu';\nimport {\n Modal, ModalHeader, ModalBody, ModalFooter,\n} from 'reactstrap';\nimport Api from 'api/agent';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport {\n assessmentConfiguration as assessmentConfigurationAtom,\n reportPages as reportPagesAtom,\n reportPageNumber as reportPageNumberAtom,\n reportType as reportTypeAtom,\n reportGraphData as reportGraphDataAtom,\n} from 'state/atoms';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { toast } from 'react-toastify';\nimport DOMPurify from 'dompurify';\nimport Button from 'components/common/Button';\nimport Loader from 'components/common/Loader';\nimport Footer from 'components/layout/Footer';\nimport AssessmentType from 'components/assessment-result/AssessmentType';\nimport Confetti from 'react-dom-confetti';\nimport TooltipComponent from 'components/common/TooltipComponent';\nimport ReportTocContainer from './ReportTocContainer';\nimport ReportContainer from './ReportContainer';\nimport ReportTypeContainer from './ReportTypeContainer';\nimport ReportNavMenuMobile from './ReportNavMenuMobile';\nimport { history } from '../..';\n\ninterface Props {\n preview?: boolean;\n}\n\nconst Report: React.FC = ({ preview }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const [loading, setLoading] = useState(true);\n const [modal, setModal] = useState(false);\n const [reportPageNumber, setReportPageNumber] = useRecoilState(reportPageNumberAtom);\n const setReportType = useSetRecoilState(reportTypeAtom);\n const setReportGraphData = useSetRecoilState(reportGraphDataAtom);\n const [retakeAssessment, setRetakeAssessment] = useState(false);\n const [retakeAssessmentMessage, setRetakeAssessmentMessage] = useState('');\n const [confetti, setConfetti] = useState(false);\n\n const backToProfile = () => {\n window.location.href = assessmentConfiguration.returnUrl;\n };\n\n const toggle = () => setModal(!modal);\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n return footer?.offsetHeight;\n };\n\n const previousPage = () => {\n if (reportPageNumber > 0) {\n setReportPageNumber(reportPageNumber - 1);\n }\n };\n\n const nextPage = () => {\n if (reportPages[reportPageNumber + 1]) {\n setReportPageNumber(reportPageNumber + 1);\n }\n };\n\n const renderModalHeader = () => {\n if (retakeAssessment) {\n return 'Here are your results.';\n }\n\n return (\n
\n Congratulations!\n
\n Here are your results.\n
\n );\n };\n\n const renderModalBody = () => {\n if (retakeAssessment) {\n return (\n
\n
\n
\n Re-take Pattern\n
\n
\n \n
\n
\n {\n // eslint-disable-next-line react/no-danger\n
\n }\n
\n );\n }\n\n return (\n
\n \n
\n );\n };\n\n const retakeAssessmentAction = () => history.push('/assessment');\n\n const viewReportAction = () => setModal(false);\n\n const takeNextAssessmentAction = () => {\n if (assessmentConfiguration.nextAssessmentUrl) {\n window.location.href = assessmentConfiguration.nextAssessmentUrl;\n }\n };\n\n useEffect(() => {\n if (preview) {\n setLoading(false);\n return;\n }\n\n Api.Assessments.complete()\n .then((data) => {\n if (data?.pages) {\n setReportPages(data.pages);\n }\n if (data?.type) {\n setReportType(data.type);\n }\n if (data?.graphData) {\n setReportGraphData(data.graphData);\n }\n setLoading(false);\n setModal(true);\n setConfetti(true);\n })\n .catch((error) => {\n if (error.data?.retakeAssessment) {\n setLoading(false);\n setRetakeAssessmentMessage(error.data.retakeAssessmentMessage);\n setRetakeAssessment(true);\n setModal(true);\n } else if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n }, [setReportPages, setReportType]);\n\n useEffect(() => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }, [reportPageNumber]);\n\n return (\n
\n {!retakeAssessment\n && (\n <>\n \n
\n \n
\n \n )}\n {loading\n ? \n : (!retakeAssessment\n && (\n
\n \n \n \n
\n ))}\n {!retakeAssessment\n && reportPages.length > 1\n && (\n
\n
\n \n \n
\n
\n )}\n \n \n {renderModalHeader()}\n \n \n {renderModalBody()}\n \n \n {retakeAssessment\n ? (\n \n )\n : (\n
\n \n \n
\n )}\n {assessmentConfiguration.nextAssessmentUrl\n && (\n \n )}\n \n
\n
\n \n
\n
\n
\n );\n};\n\nReport.defaultProps = {\n preview: false,\n};\n\nexport default Report;\n","import React, { useState } from 'react';\nimport Button from 'components/common/Button';\nimport {\n Modal, ModalBody, ModalFooter, ModalHeader,\n} from 'reactstrap';\n\ninterface Props {\n subject: string;\n deleteAction: () => void;\n disabled?: boolean;\n}\n\nconst DeletePromptButton: React.FC = ({\n subject, deleteAction, disabled, children,\n}) => {\n const [modal, setModal] = useState(false);\n\n const toggle = () => setModal(!modal);\n\n return (\n <>\n \n \n {`Delete ${subject}`}\n \n {`Are You sure you want to delete this ${subject}?`}\n \n \n \n {' '}\n \n \n \n \n );\n};\n\nDeletePromptButton.defaultProps = {\n disabled: false,\n};\n\nexport default DeletePromptButton;\n","export interface ReportBuilderTool {\n id: number;\n name: string;\n type: ReportBuilderToolType;\n}\n\nexport enum ReportBuilderToolType {\n Page = 0,\n TextEditor = 1,\n AssessmentResult = 2,\n // DISC Custom Types\n DCharacteristics = 100,\n ICharacteristics = 101,\n SCharacteristics = 102,\n CCharacteristics = 103,\n}\n","import React, { useEffect, useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport {\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport Api from 'api/agent';\nimport NavMenu from 'components/layout/NavMenu';\nimport { toast } from 'react-toastify';\nimport {\n Table, Container, Input, Modal, ModalHeader, ModalBody, ModalFooter,\n} from 'reactstrap';\nimport Button from 'components/common/Button';\nimport Loader from 'components/common/Loader';\nimport DeletePromptButton from 'components/common/DeletePromptButton';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ReportData } from 'models/report';\nimport { KeyValuePair } from 'models/keyValuePair';\nimport { history } from '../..';\n\nconst ReportBuilderList: React.FC = () => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const [loading, setLoading] = useState(false);\n const [reports, setReports] = useState([]);\n const [reportAvailableTypes, setReportAvailableTypes] = useState[]>([]);\n const [reportTypeChanged, setReportTypeChanged] = useState(false);\n const [confirmationModal, setConfirmationModal] = useState(false);\n const [editReportId, setEditReportId] = useState(0);\n\n const toggleConfirmationModal = () => setConfirmationModal(!confirmationModal);\n\n const openConfirmationModal = (reportId = 0) => {\n setEditReportId(reportId);\n setConfirmationModal(true);\n };\n\n const backToProfile = () => {\n window.location.href = assessmentConfiguration.returnUrl;\n };\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const setReportForType = (index: number, value: string) => {\n let parsedType: number | undefined = parseInt(value, 10);\n if (Number.isNaN(parsedType)) {\n parsedType = undefined;\n }\n const newState = reports.map((item, i) => {\n if (i === index) {\n return { ...item, forAssessmentType: parsedType };\n }\n return item;\n });\n setReports(newState);\n setReportTypeChanged(true);\n };\n\n const deleteReport = (index: number) => {\n const newState = [...reports];\n newState.splice(index, 1);\n setReports(newState);\n };\n\n const addNewReport = () => {\n const newItems = [...reports];\n newItems.splice(reports.length, 0, {\n id: 0,\n availableTypes: reportAvailableTypes,\n });\n Api.Assessments.saveReportConfigs(newItems)\n .then((data) => {\n setReports(data.reports);\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n } else {\n toast.error('An error occurred while adding new report!');\n }\n });\n };\n\n const saveChanges = (reportId = 0) => {\n setConfirmationModal(false);\n setReportTypeChanged(false);\n Api.Assessments.saveReportConfigs(reports)\n .then((data) => {\n if (reportId > 0) {\n history.push(`/report-builder/${reportId}`);\n } else {\n setReports(data.reports);\n toast.success('Saved successfully!');\n }\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n } else {\n toast.error('An error occurred while saving!');\n }\n });\n };\n\n const loadReports = () => {\n setConfirmationModal(false);\n setReportTypeChanged(false);\n setLoading(true);\n Api.Assessments.getReportConfigs()\n .then((data) => {\n setReports(data.reports);\n setReportAvailableTypes(data.availableTypes);\n setLoading(false);\n })\n .catch((error) => {\n setLoading(false);\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n };\n\n useEffect(() => {\n loadReports();\n }, [setReports, setReportAvailableTypes]);\n\n return (\n <>\n \n
\n \n
\n \n \n
\n \n \n \n \n \n \n \n {loading\n ? (\n \n \n \n \n \n )\n : (\n \n {reports.map((report, index) => (\n \n \n \n \n \n ))}\n \n )}\n
#For Type\n
\n \n
{Math.abs(report.id)}\n setReportForType(index, e.target.value)}\n value={report.forAssessmentType !== null ? report.forAssessmentType : undefined}\n >\n {reportAvailableTypes.map((item) => (\n \n {item.key}\n \n ))}\n \n \n deleteReport(index)}>\n \n Delete\n \n \n
\n
\n
\n \n \n Are you sure you want to continue?\n \n \n If you update this report's\n "For Type" \n field, it will convert all the child pages and sections to the new Type you have chosen.\n \n \n \n {' '}\n \n \n \n \n );\n};\n\nexport default ReportBuilderList;\n","export const ReportItemTypes = {\n PAGE: 'page',\n SECTION: 'section',\n};\n","import React from 'react';\nimport { ReportBuilderTool as ReportBuilderToolModel } from 'models/reportBuilderTool';\n\ninterface Props {\n tool: ReportBuilderToolModel;\n}\n\nconst ReportBuilderTool: React.FC = ({ tool }) => (\n
\n
\n {tool.name}\n
\n
\n);\n\nexport default ReportBuilderTool;\n","import React, { useEffect } from 'react';\nimport { ReportBuilderTool as ReportBuilderToolModel, ReportBuilderToolType } from 'models/reportBuilderTool';\nimport { ReportItemTypes } from 'models/reportItemTypes';\nimport { Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport {\n reportBuilderTools as reportBuilderToolsAtom,\n assessmentConfiguration as assessmentConfigurationAtom,\n} from 'state/atoms';\nimport { Button } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PersonalityAssessmentType } from 'models/personalityAssessmentType';\nimport ReportBuilderTool from './ReportBuilderTool';\n\ninterface Props {\n buttonCallback?: () => void;\n}\n\nconst ReportBuilderToolbar: React.FC = ({ buttonCallback }) => {\n const [reportBuilderTools, setReportBuilderTools] = useRecoilState(reportBuilderToolsAtom);\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n\n const initReportBuilderTools = () => {\n const tools: ReportBuilderToolModel[] = [\n {\n id: ReportBuilderToolType.TextEditor,\n name: 'Text Editor',\n type: ReportBuilderToolType.TextEditor,\n },\n {\n id: ReportBuilderToolType.AssessmentResult,\n name: 'User Results',\n type: ReportBuilderToolType.AssessmentResult,\n },\n ];\n\n if (assessmentConfiguration.assessmentType === PersonalityAssessmentType.DISC) {\n tools.push(\n {\n id: ReportBuilderToolType.DCharacteristics,\n name: 'D Characteristics',\n type: ReportBuilderToolType.DCharacteristics,\n },\n {\n id: ReportBuilderToolType.ICharacteristics,\n name: 'I Characteristics',\n type: ReportBuilderToolType.ICharacteristics,\n },\n {\n id: ReportBuilderToolType.SCharacteristics,\n name: 'S Characteristics',\n type: ReportBuilderToolType.SCharacteristics,\n },\n {\n id: ReportBuilderToolType.CCharacteristics,\n name: 'C Characteristics',\n type: ReportBuilderToolType.CCharacteristics,\n },\n );\n }\n\n setReportBuilderTools(tools);\n };\n\n useEffect(() => {\n initReportBuilderTools();\n }, [setReportBuilderTools]);\n\n return (\n
\n
\n \n \n \n Toolbar\n
\n
\n
\n Page\n
\n \n {(droppableProvided) => (\n
\n \n {(draggableProvided, draggablesnapshot) => (\n \n \n
\n )}\n \n {droppableProvided.placeholder}\n
\n )}\n \n
\n Page Sections\n
\n {reportBuilderTools.map((tool, index) => (\n \n {(droppableProvided) => (\n
\n \n {(draggableProvided, draggablesnapshot) => (\n \n \n
\n )}\n \n {droppableProvided.placeholder}\n
\n )}\n \n ))}\n
\n
\n );\n};\n\nReportBuilderToolbar.defaultProps = {\n buttonCallback: undefined,\n};\n\nexport default ReportBuilderToolbar;\n","import React, { useState } from 'react';\nimport { Button } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport ReportBuilderToolbar from './ReportBuilderToolbar';\n\nconst ReportBuilderToolbarContainer: React.FC = () => {\n const [showLite, setShowLite] = useState(false);\n\n return (\n
\n
\n
\n
\n setShowLite(false)}\n >\n \n \n \n
\n
\n
\n
\n setShowLite(true)} />\n
\n
\n );\n};\n\nexport default ReportBuilderToolbarContainer;\n","import React, { useState } from 'react';\nimport { Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useRecoilState } from 'recoil';\nimport { reportPages as reportPagesAtom } from 'state/atoms';\nimport { ReportItemTypes } from 'models/reportItemTypes';\nimport Button from 'components/common/Button';\nimport { toast } from 'react-toastify';\nimport Api from 'api/agent';\nimport ReportSection from '../report/ReportSection';\nimport ReportPage from '../report/ReportPage';\nimport { history } from '../..';\n\ninterface Props {\n reportId: string;\n addPage: (destIndex: number) => void;\n addSection: (destParentId: number, destIndex: number, toolType: number) => void;\n}\n\nconst ReportBuilderContainer: React.FC = ({ reportId, addPage }) => {\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const [loading, setLoading] = useState(false);\n\n const SaveChanges = (preview = false) => {\n setLoading(true);\n Api.Assessments.saveReportConfig(reportId, reportPages)\n .then((data) => {\n if (data?.pages) {\n setReportPages(data.pages);\n }\n setLoading(false);\n toast.success('Saved successfully!');\n\n if (preview) {\n history.push('/report-preview');\n }\n })\n .catch((error) => {\n setLoading(false);\n if (error.data?.message) {\n toast.error(error.data.message);\n } else {\n toast.error('An error occurred while saving!');\n }\n\n if (preview) {\n history.push('/report-preview');\n }\n });\n };\n\n return (\n
\n
\n

Report

\n
\n SaveChanges()}\n >\n Save Changes\n \n SaveChanges(true)}\n >\n Preview Report\n \n
\n
\n \n {(pageDraggableProvided, pageDraggableSnapshot) => (\n \n {reportPages.map((page, pageIndex) => (\n \n {(pageDroppableProvided, pageDroppableSnapshot) => (\n \n \n {(sectionDroppableProvided, sectionDroppableSnapshot) => (\n \n \n {page.sections.map((section, sectionIndex) => (\n \n {(sectionDraggableProvided, sectionDraggableSnapshot) => (\n \n \n
\n )}\n \n ))}\n
\n To add a section, drag the section you want to add from the toolbar!\n
\n \n {sectionDroppableProvided.placeholder}\n
\n )}\n \n
\n )}\n \n ))}\n
\n addPage(reportPages.length)}>To add a page, either drag the page from the toolbar or click here!\n
\n {pageDraggableProvided.placeholder}\n
\n )}\n \n
\n );\n};\n\nexport default ReportBuilderContainer;\n","import React, { useState } from 'react';\nimport ReportTableOfContents from 'components/report-toc/ReportTableOfContents';\nimport ReportTableOfContentsLite from 'components/report-toc/ReportTableOfContentsLite';\n\nconst ReportBuilderTocContainer: React.FC = () => {\n const [showLite, setShowLite] = useState(false);\n\n return (\n
\n
\n setShowLite(false)} />\n
\n
\n setShowLite(true)} />\n
\n
\n );\n};\n\nexport default ReportBuilderTocContainer;\n","import React, { useEffect, useState } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport {\n assessmentConfiguration as assessmentConfigurationAtom,\n reportPages as reportPagesAtom,\n reportAvailableTypes as reportAvailableTypesAtom,\n reportForType as reportForTypeAtom,\n reportBuilderTools as reportBuilderToolsAtom,\n} from 'state/atoms';\nimport Api from 'api/agent';\nimport NavMenu from 'components/layout/NavMenu';\nimport Loader from 'components/common/Loader';\nimport { DragDropContext, DropResult } from 'react-beautiful-dnd';\nimport { ReportItemTypes } from 'models/reportItemTypes';\nimport { ReportSectionItem, ReportItemType, ReportPageItem } from 'models/report';\nimport { ReportBuilderToolType } from 'models/reportBuilderTool';\nimport { toast } from 'react-toastify';\nimport ReportBuilderToolbarContainer from './ReportBuilderToolbarContainer';\nimport ReportBuilderContainer from './ReportBuilderContainer';\nimport ReportBuilderTocContainer from './ReportBuilderTocContainer';\n\ninterface RouteParams {\n reportId?: string;\n}\n\nconst ReportBuilder: React.FC> = ({ match }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const [reportPages, setReportPages] = useRecoilState(reportPagesAtom);\n const setReportAvailableTypes = useSetRecoilState(reportAvailableTypesAtom);\n const setReportForType = useSetRecoilState(reportForTypeAtom);\n const reportBuilderTools = useRecoilValue(reportBuilderToolsAtom);\n const [loading, setLoading] = useState(true);\n const [pageCounter, setPageCounter] = useState(-1);\n const [sectionCounter, setSectionCounter] = useState(-1);\n const [offset, setOffset] = useState(0);\n\n const backToProfile = () => {\n window.location.href = assessmentConfiguration.returnUrl;\n };\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const reorder = (list: T[], startIndex: number, endIndex: number): T[] => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n };\n\n const resolveSectionType = (toolType: ReportBuilderToolType) => {\n switch (toolType) {\n case ReportBuilderToolType.TextEditor:\n return ReportItemType.TextEditor;\n case ReportBuilderToolType.AssessmentResult:\n return ReportItemType.AssessmentResult;\n case ReportBuilderToolType.DCharacteristics:\n return ReportItemType.DCharacteristics;\n case ReportBuilderToolType.ICharacteristics:\n return ReportItemType.ICharacteristics;\n case ReportBuilderToolType.SCharacteristics:\n return ReportItemType.SCharacteristics;\n case ReportBuilderToolType.CCharacteristics:\n return ReportItemType.CCharacteristics;\n default:\n return ReportItemType.TextEditor;\n }\n };\n\n const addPage = (destIndex: number) => {\n const newItem = [...reportPages];\n newItem.splice(destIndex, 0, {\n id: pageCounter,\n name: ReportBuilderToolType[ReportBuilderToolType.Page],\n sections: [],\n });\n setPageCounter(pageCounter - 1);\n setReportPages(newItem);\n };\n\n const addSection = (destParentId: number, destIndex: number, toolType: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const itemSubItemMap = reportPages.reduce((acc: any, item) => {\n acc[item.id] = item.sections;\n return acc;\n }, {});\n\n const destSubItems = itemSubItemMap[destParentId];\n const newDestSubItems = [...destSubItems];\n newDestSubItems.splice(destIndex, 0, {\n id: sectionCounter,\n name: reportBuilderTools.find((tool) => tool.type === toolType)?.name ?? ReportBuilderToolType[toolType],\n pageId: destParentId,\n type: resolveSectionType(toolType),\n });\n setSectionCounter(sectionCounter - 1);\n setReportPages(reportPages.map((item) => {\n if (item.id === destParentId) {\n return { ...item, sections: newDestSubItems };\n }\n return item;\n }));\n };\n\n const onDragEnd = (result: DropResult) => {\n const { source, destination } = result;\n\n if (!destination) {\n return;\n }\n\n const sourceIndex = source.index;\n const destIndex = destination.index;\n if (result.type === ReportItemTypes.PAGE) {\n if (source.droppableId.includes('tool')) {\n addPage(destIndex);\n return;\n }\n\n const items = reorder(reportPages, sourceIndex, destIndex);\n setReportPages(items);\n } else if (result.type === ReportItemTypes.SECTION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const itemSubItemMap = reportPages.reduce((acc: any, item) => {\n acc[item.id] = item.sections;\n return acc;\n }, {});\n\n if (source.droppableId.includes('tool')) {\n const toolType = parseInt(source.droppableId.split('#')[1], 10);\n const destParentId = parseInt(destination.droppableId, 10);\n addSection(destParentId, destIndex, toolType);\n return;\n }\n\n const sourceParentId = parseInt(source.droppableId, 10);\n const destParentId = parseInt(destination.droppableId, 10);\n\n const sourceSubItems = itemSubItemMap[sourceParentId];\n const destSubItems = itemSubItemMap[destParentId];\n\n /* In this case subItems are reOrdered inside same Parent */\n if (sourceParentId === destParentId) {\n const reorderedSubItems = reorder(\n sourceSubItems,\n sourceIndex,\n destIndex,\n );\n setReportPages(reportPages.map((item) => {\n if (item.id === sourceParentId) {\n return { ...item, sections: reorderedSubItems };\n }\n return item;\n }));\n } else {\n const newSourceSubItems = [...sourceSubItems];\n const [draggedItem] = newSourceSubItems.splice(sourceIndex, 1);\n\n const newDestSubItems = [...destSubItems];\n newDestSubItems.splice(destIndex, 0, draggedItem);\n setReportPages(reportPages.map((item) => {\n if (item.id === sourceParentId) {\n return { ...item, sections: newSourceSubItems };\n } if (item.id === destParentId) {\n return { ...item, sections: newDestSubItems };\n }\n return item;\n }));\n }\n }\n };\n\n useEffect(() => {\n Api.Assessments.getReportConfig(match.params.reportId)\n .then((data) => {\n if (data?.pages) {\n setReportPages(data.pages);\n }\n if (data?.availableTypes) {\n setReportAvailableTypes(data.availableTypes);\n }\n setReportForType(data?.forAssessmentType);\n setLoading(false);\n })\n .catch((error) => {\n if (error.data?.message) {\n toast.error(error.data.message);\n }\n });\n }, [setReportPages, setReportAvailableTypes]);\n\n useEffect(() => {\n const onScroll = () => setOffset(window.pageYOffset);\n window.removeEventListener('scroll', onScroll);\n window.addEventListener('scroll', onScroll, { passive: true });\n return () => window.removeEventListener('scroll', onScroll);\n }, []);\n\n return (\n \n \n {loading\n ? \n : (\n
\n \n \n
\n \n
\n
\n )}\n
\n );\n};\n\nexport default ReportBuilder;\n","import React from 'react';\nimport Report from './Report';\n\nconst ReportPreview: React.FC = () => (\n \n);\n\nexport default ReportPreview;\n","import React from 'react';\nimport { ToastContainer } from 'react-toastify';\n\nconst Layout: React.FC = ({ children }) => (\n <>\n \n {children}\n \n);\n\nexport default Layout;\n","import React, { useEffect } from 'react';\nimport { Container } from 'reactstrap';\nimport { useRecoilValue } from 'recoil';\nimport { assessmentConfiguration as assessmentConfigurationAtom } from 'state/atoms';\nimport { Link, RouteComponentProps } from 'react-router-dom';\nimport { localStorage } from 'utils/constants';\nimport Loader from 'components/common/Loader';\nimport Button from 'components/common/Button';\nimport queryString from 'query-string';\nimport DOMPurify from 'dompurify';\nimport NavMenu from '../layout/NavMenu';\nimport Footer from '../layout/Footer';\n\nconst Home: React.FC = ({ location }) => {\n const assessmentConfiguration = useRecoilValue(assessmentConfigurationAtom);\n const { token } = queryString.parse(location.search);\n\n const getNavbarHeight = () => {\n const navbar = document.getElementById('navbar');\n return navbar?.offsetHeight;\n };\n\n const getFooterHeight = () => {\n const footer = document.getElementById('footer');\n\n if (footer) {\n return footer?.offsetHeight + 24;\n }\n\n return undefined;\n };\n\n const getBeginButtonText = () => {\n if (assessmentConfiguration.canResume) {\n return 'Click to Resume';\n }\n return 'Click to Begin';\n };\n\n useEffect(() => {\n if (token) {\n window.localStorage.setItem(localStorage.JWT_TOKEN, token);\n }\n }, [token]);\n\n return (\n <>\n {assessmentConfiguration.name\n ? (\n
\n \n \n
\n
\n
\n

{assessmentConfiguration.name}

\n

{assessmentConfiguration.description}

\n {\n assessmentConfiguration.introduction\n &&
// eslint-disable-line react/no-danger\n }\n {\n assessmentConfiguration.embedUrl\n && (\n
\n