-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.eslintcache
More file actions
1 lines (1 loc) · 69.8 KB
/
.eslintcache
File metadata and controls
1 lines (1 loc) · 69.8 KB
1
[{"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/index.tsx":"1","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/App.tsx":"2","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditor.tsx":"3","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardCodedSponsorsPage/LegacyHardCodedSponsorsPage.js":"4","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/Data.ts":"5","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/Constants.ts":"6","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/hooks/useWindowWidth.ts":"7","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/DebugFonts.ts":"8","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/contexts/EnvironmentContext/EnvironmentContext.ts":"9","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/EditorHistory.ts":"10","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/hooks/useAuth.ts":"11","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/widgetFirebase.ts":"12","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/Footbar.tsx":"13","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/LoadingScreen/LoadingScreen.tsx":"14","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/CustomAppBar.tsx":"15","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/DebugHeader/DebugHeader.tsx":"16","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HardCodedMainPage.tsx":"17","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/NavigationBottom/NavigationBottom.tsx":"18","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentView/ContentView.tsx":"19","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditorBanner/ContentEditorBanner.tsx":"20","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/AddNewWidgetButton/AddNewWidgetButton.tsx":"21","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetEditor/WidgetEditor.tsx":"22","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/DeletionModal/DeletionModal.tsx":"23","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetSelectionModal.tsx":"24","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/NavbarData/NavbarData.ts":"25","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageData.ts":"26","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/Banner.tsx":"27","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/FootbarData/FootbarData.ts":"28","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentMapping/ContentMapping.ts":"29","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/FootbarIcon/FootbarIcon.tsx":"30","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarLogo/AppBarLogo.tsx":"31","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdowns.tsx":"32","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/AppBarSideDrawer.tsx":"33","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/SideBar/SideBar.tsx":"34","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetEditor/FailureWidget/FailureWidget.tsx":"35","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentPrinter/ContentPrinter.ts":"36","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageImpact/HomepageImpact.tsx":"37","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditorBanner/ContentEditorModal.tsx":"38","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetCategory.tsx":"39","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetLiveEdit/WidgetLiveEdit.tsx":"40","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetLiveEdit/WidgetLiveEditBar.tsx":"41","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/LegacySidebar/Sidebar.js":"42","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/BannerEditor.tsx":"43","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/TabView/TabView.tsx":"44","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/_Stub/Stub.tsx":"45","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/TabView/TabViewEditor.tsx":"46","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Header/HeaderEditor.tsx":"47","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Header/Header.tsx":"48","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/PdfViewer/PdfViewer.tsx":"49","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/PdfViewer/PdfViewerEditor.tsx":"50","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImagesInRow/ImagesInRow.tsx":"51","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Video/VideoEditor.tsx":"52","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Video/Video.tsx":"53","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImagesInRow/ImagesInRowEditor.tsx":"54","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/Gallery.tsx":"55","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/WYSIWYG/WYSIWYGEditor.tsx":"56","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/WYSIWYG/WYSIWYGWidget.tsx":"57","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/Accordion.tsx":"58","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/AccordionEditor.tsx":"59","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/GalleryEditor.tsx":"60","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/SeparatorEditor.tsx":"61","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/Separator.tsx":"62","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImageCarousel.tsx/ImageCarousel.tsx":"63","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ExampleImage/ExampleImage.tsx":"64","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImageCarousel.tsx/ImageCarouselEditor.tsx":"65","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ExampleImage/ExampleImageEditor.tsx":"66","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/HorizontalDivider/HorizontalDivider.tsx":"67","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/HorizontalDivider/HorizontalDividerEditor.tsx":"68","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridLayoutEditor.tsx":"69","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridLayout.tsx":"70","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageImpact/HomepageImpactCard.tsx":"71","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdown/AppBarDropdown.tsx":"72","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/FootbarIcon/Logo/Logo.tsx":"73","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetElement.tsx":"74","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/LegacySidebar/SidebarItem.js":"75","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/BannerConstants.ts":"76","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/SeparatorConstants.ts":"77","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/AccordionConstants.ts":"78","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/ImageLink.tsx":"79","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/WidgetEditor.tsx":"80","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/WidgetChooser.tsx":"81","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridSelector/GridSelector.tsx":"82","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdown/AppBarDropdownItems/AppBarDropdownItems.tsx":"83","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridSelector/GridSquare.tsx":"84","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardCodedTeamPage/LegacyHardCodedTeamPage.js":"85"},{"size":3424,"mtime":1630276791278,"results":"86","hashOfConfig":"87"},{"size":10538,"mtime":1634859485394,"results":"88","hashOfConfig":"87"},{"size":6455,"mtime":1632363441632,"results":"89","hashOfConfig":"87"},{"size":7513,"mtime":1619901441195,"results":"90","hashOfConfig":"87"},{"size":33451,"mtime":1624826260982,"results":"91","hashOfConfig":"87"},{"size":2304,"mtime":1634805047536,"results":"92","hashOfConfig":"87"},{"size":553,"mtime":1619901441213,"results":"93","hashOfConfig":"87"},{"size":961,"mtime":1619901441212,"results":"94","hashOfConfig":"87"},{"size":425,"mtime":1619901441213,"results":"95","hashOfConfig":"87"},{"size":91,"mtime":1619901441213,"results":"96","hashOfConfig":"87"},{"size":1202,"mtime":1619901441213,"results":"97","hashOfConfig":"87"},{"size":3238,"mtime":1632363441633,"results":"98","hashOfConfig":"87"},{"size":1556,"mtime":1619901441194,"results":"99","hashOfConfig":"87"},{"size":1188,"mtime":1619901441197,"results":"100","hashOfConfig":"87"},{"size":1376,"mtime":1634805047529,"results":"101","hashOfConfig":"87"},{"size":225,"mtime":1619901441212,"results":"102","hashOfConfig":"87"},{"size":6164,"mtime":1634805047530,"results":"103","hashOfConfig":"87"},{"size":1723,"mtime":1619901441198,"results":"104","hashOfConfig":"87"},{"size":2766,"mtime":1630275008150,"results":"105","hashOfConfig":"87"},{"size":5358,"mtime":1630276424840,"results":"106","hashOfConfig":"87"},{"size":463,"mtime":1619901441174,"results":"107","hashOfConfig":"87"},{"size":5357,"mtime":1632363441633,"results":"108","hashOfConfig":"87"},{"size":5698,"mtime":1630275008137,"results":"109","hashOfConfig":"87"},{"size":3200,"mtime":1632363441633,"results":"110","hashOfConfig":"87"},{"size":2041,"mtime":1634805047537,"results":"111","hashOfConfig":"87"},{"size":1816,"mtime":1634805047535,"results":"112","hashOfConfig":"87"},{"size":1267,"mtime":1619901441179,"results":"113","hashOfConfig":"87"},{"size":1164,"mtime":1619901441212,"results":"114","hashOfConfig":"87"},{"size":6761,"mtime":1634602200742,"results":"115","hashOfConfig":"87"},{"size":1452,"mtime":1619901441194,"results":"116","hashOfConfig":"87"},{"size":1786,"mtime":1634805047528,"results":"117","hashOfConfig":"87"},{"size":1051,"mtime":1634805047527,"results":"118","hashOfConfig":"87"},{"size":754,"mtime":1619901441192,"results":"119","hashOfConfig":"87"},{"size":3538,"mtime":1630275008159,"results":"120","hashOfConfig":"87"},{"size":588,"mtime":1619901441175,"results":"121","hashOfConfig":"87"},{"size":162,"mtime":1619901441175,"results":"122","hashOfConfig":"87"},{"size":1122,"mtime":1634615956197,"results":"123","hashOfConfig":"87"},{"size":1897,"mtime":1630276424841,"results":"124","hashOfConfig":"87"},{"size":1160,"mtime":1630275008140,"results":"125","hashOfConfig":"87"},{"size":3943,"mtime":1630275008138,"results":"126","hashOfConfig":"87"},{"size":2896,"mtime":1630275008139,"results":"127","hashOfConfig":"87"},{"size":1773,"mtime":1619901441192,"results":"128","hashOfConfig":"87"},{"size":4986,"mtime":1619901441179,"results":"129","hashOfConfig":"87"},{"size":935,"mtime":1619901441186,"results":"130","hashOfConfig":"87"},{"size":642,"mtime":1632363441634,"results":"131","hashOfConfig":"87"},{"size":3507,"mtime":1624826260980,"results":"132","hashOfConfig":"87"},{"size":1137,"mtime":1619901441181,"results":"133","hashOfConfig":"87"},{"size":772,"mtime":1619901441180,"results":"134","hashOfConfig":"87"},{"size":718,"mtime":1619901441183,"results":"135","hashOfConfig":"87"},{"size":1478,"mtime":1619901441183,"results":"136","hashOfConfig":"87"},{"size":1236,"mtime":1619901441182,"results":"137","hashOfConfig":"87"},{"size":1464,"mtime":1619901441188,"results":"138","hashOfConfig":"87"},{"size":674,"mtime":1619901441188,"results":"139","hashOfConfig":"87"},{"size":7841,"mtime":1630275008157,"results":"140","hashOfConfig":"87"},{"size":3088,"mtime":1630275008151,"results":"141","hashOfConfig":"87"},{"size":1067,"mtime":1619901441189,"results":"142","hashOfConfig":"87"},{"size":550,"mtime":1619901441189,"results":"143","hashOfConfig":"87"},{"size":1106,"mtime":1630276424841,"results":"144","hashOfConfig":"87"},{"size":2229,"mtime":1619901441178,"results":"145","hashOfConfig":"87"},{"size":1521,"mtime":1630275008152,"results":"146","hashOfConfig":"87"},{"size":2078,"mtime":1619901441185,"results":"147","hashOfConfig":"87"},{"size":759,"mtime":1619901441185,"results":"148","hashOfConfig":"87"},{"size":1875,"mtime":1619901441181,"results":"149","hashOfConfig":"87"},{"size":898,"mtime":1630275008150,"results":"150","hashOfConfig":"87"},{"size":8852,"mtime":1619901441181,"results":"151","hashOfConfig":"87"},{"size":1725,"mtime":1630275008151,"results":"152","hashOfConfig":"87"},{"size":1514,"mtime":1624826260978,"results":"153","hashOfConfig":"87"},{"size":4045,"mtime":1630275008159,"results":"154","hashOfConfig":"87"},{"size":4495,"mtime":1630275008158,"results":"155","hashOfConfig":"87"},{"size":2141,"mtime":1630275008158,"results":"156","hashOfConfig":"87"},{"size":538,"mtime":1634805047535,"results":"157","hashOfConfig":"87"},{"size":2496,"mtime":1634805047526,"results":"158","hashOfConfig":"87"},{"size":9349,"mtime":1619901441195,"results":"159","hashOfConfig":"87"},{"size":903,"mtime":1630275008145,"results":"160","hashOfConfig":"87"},{"size":2659,"mtime":1619901441193,"results":"161","hashOfConfig":"87"},{"size":253,"mtime":1619901441179,"results":"162","hashOfConfig":"87"},{"size":167,"mtime":1619901441185,"results":"163","hashOfConfig":"87"},{"size":51,"mtime":1619901441178,"results":"164","hashOfConfig":"87"},{"size":534,"mtime":1630275008155,"results":"165","hashOfConfig":"87"},{"size":2130,"mtime":1624826260979,"results":"166","hashOfConfig":"87"},{"size":1455,"mtime":1624826260978,"results":"167","hashOfConfig":"87"},{"size":6202,"mtime":1630275008158,"results":"168","hashOfConfig":"87"},{"size":2617,"mtime":1634805047526,"results":"169","hashOfConfig":"87"},{"size":365,"mtime":1624826260978,"results":"170","hashOfConfig":"87"},{"size":10416,"mtime":1634858372503,"results":"171","hashOfConfig":"87"},{"filePath":"172","messages":"173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},"med4an",{"filePath":"175","messages":"176","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"177","messages":"178","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"179","usedDeprecatedRules":"174"},{"filePath":"180","messages":"181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"182"},{"filePath":"183","messages":"184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"185","messages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"187","messages":"188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"189","messages":"190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"191","messages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"193","messages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"195","messages":"196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"197","messages":"198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"199","messages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"201","messages":"202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"203","messages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"205","messages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"207","messages":"208","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"209","usedDeprecatedRules":"174"},{"filePath":"210","messages":"211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"212","messages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"214","messages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"216","usedDeprecatedRules":"174"},{"filePath":"217","messages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"219","messages":"220","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"221","usedDeprecatedRules":"174"},{"filePath":"222","messages":"223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"224","messages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"226","messages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"228","messages":"229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"230","messages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"232","messages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"234","messages":"235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"236","messages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"238","messages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"240","messages":"241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"242","messages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"244","messages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"246","usedDeprecatedRules":"174"},{"filePath":"247","messages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"249","messages":"250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"251","messages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"253","messages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"255","messages":"256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"257","messages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"259","messages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"261","messages":"262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"182"},{"filePath":"263","messages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"265","messages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"267","messages":"268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"269","messages":"270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"271","messages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"273","messages":"274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"275","messages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"277","messages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"279","messages":"280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"281","messages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"283","messages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"285","messages":"286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"287","messages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"289","messages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"291","messages":"292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"293","messages":"294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"295","messages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"297","messages":"298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"299","messages":"300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"301","messages":"302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"303","messages":"304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"305","messages":"306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"307","messages":"308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"309","messages":"310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"311","messages":"312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"313","messages":"314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"315","messages":"316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"317","messages":"318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"319","messages":"320","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"321","usedDeprecatedRules":"174"},{"filePath":"322","messages":"323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"324","messages":"325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"326","messages":"327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"328","messages":"329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"182"},{"filePath":"330","messages":"331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"332","messages":"333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"334","messages":"335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"336","messages":"337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"338","messages":"339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"340","messages":"341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"342","messages":"343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"344","messages":"345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"346","messages":"347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"174"},{"filePath":"348","messages":"349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/index.tsx",[],["350","351"],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/App.tsx",["352"],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditor.tsx",["353","354"],"import React, { useState, useContext } from 'react';\nimport { ContentData } from '../_data/Data';\nimport { useAuth } from '../../hooks/useAuth';\nimport './ContentEditor.css';\nimport { ContentEditorBanner } from './ContentEditorBanner/ContentEditorBanner';\nimport { WidgetEditor } from './WidgetEditor/WidgetEditor';\nimport { AddNewWidgetButton } from './AddNewWidgetButton/AddNewWidgetButton';\nimport { WidgetTypes } from '../ContentMapping/ContentMapping';\nimport { ContentSingularData } from '../_data/ContentSingularData';\nimport { HistoryTypes } from '../_debug/EditorHistory';\nimport { EnvironmentContext } from '../../contexts/EnvironmentContext/EnvironmentContext';\nimport { DeletionModal } from './DeletionModal/DeletionModal';\nimport WidgetSelectionModal from './WidgetSelectionModal/WidgetSelectionModal';\nimport { addWidget } from './widgetFirebase';\n\nexport type ContentEditorProps = {\n\tcontentData: ContentData,\n\tcurrYear: number\n}\n\n/**\n * ContentEditor is the main content editor PAGE. It shows the editing banner that allows users to\n * select a page to edit, and also generates the widget editing components. It handles the logic\n * for updating the data on firebase as well as the buttons to generate the new components.\n *\n * Last Modified\n * Victor Shan\n * Sept 11, 2021\n *\n * TODO:\n * - Make \"select a page to modify\" message more prominent\n * - Make loading message a spinner instead\n * - Factor the onClicks inside AddNewWidgetButton to a static function that takes in parameters\n */\nexport const ContentEditor: React.FC<ContentEditorProps> = ({ contentData, currYear }) => {\n\tconst [userLoading, setUserLoading] = useState<boolean>(true);\n\tconst [pageToEdit, setPageToEdit] = useState<string | null>(null);\n\tconst [widgetModal, setWidgetModal] = useState<JSX.Element | null>(null)\n\tconst { firebase } = useContext(EnvironmentContext);\n\tconst user = useAuth(firebase, setUserLoading);\n const [isDeletingPage, setisDeletingPage] = useState<boolean>(false);\n\n\tif (!firebase) {\n\t\treturn <></>\n\t}\n\n\tconst deleteWidget = async (contentHash: string) => {\n\t\tif (contentData && pageToEdit && contentData[pageToEdit]) {\n\t\t\tlet contentOrderNew: string[] = [...contentData[pageToEdit].contentOrder!];\n\t\t\tlet currHashIndex = contentOrderNew.indexOf(contentHash);\n\t\t\tif (currHashIndex !== -1) {\n\t\t\t\tcontentOrderNew.splice(currHashIndex, 1);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait firebase.database().ref(`${currYear}/ContentData/${pageToEdit}/contentOrder`).set(contentOrderNew);\n\t\t\t\tawait firebase.database().ref(`${currYear}/ContentData/${pageToEdit}/content/${contentHash}`).remove();\n\t\t\t\tawait firebase.database().ref(`${currYear}/EditHistory/${pageToEdit}/${contentHash}`).push({\n\t\t\t\t\ttype: HistoryTypes.DELETE,\n\t\t\t\t\ttimestamp: firebase.database.ServerValue.TIMESTAMP,\n\t\t\t\t\tdeletor: (user && user.email) || \"Unknown user\"\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!userLoading && contentData) {\n if (pageToEdit && !contentData[pageToEdit]) {\n alert(pageToEdit + \" page may have been deleted\");\n setPageToEdit(null);\n }\n\n\t\treturn <>\n <DeletionModal pageToEdit={pageToEdit}\n setPageToEdit={setPageToEdit}\n isDeletingPage={isDeletingPage}\n setisDeletingPage={setisDeletingPage}\n currYear={currYear} />\n\t\t\t<ContentEditorBanner contentData={contentData}\n\t\t\t\tpageToEdit={pageToEdit}\n\t\t\t\tsetPageToEdit={setPageToEdit}\n\t\t\t\tcurrYear={currYear}\n setisDeletingPage={setisDeletingPage} />\n\t\t\t{(contentData &&\n\t\t\t\tpageToEdit &&\n\t\t\t\tcontentData[pageToEdit]) ?\n\t\t\t\t<>\n\t\t\t\t\t<AddNewWidgetButton onClick={async () => {\n\t\t\t\t\t\tconst selectWidget = addWidget(contentData, pageToEdit, 0, currYear, user);\n\t\t\t\t\t\tconst handleSubmit = (selectedWidget: WidgetTypes) => {\n\t\t\t\t\t\t\tselectWidget(selectedWidget);\n\t\t\t\t\t\t\tsetWidgetModal(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetWidgetModal(<WidgetSelectionModal startingState={true} onSubmit={handleSubmit}/>)\n\t\t\t\t\t}} />\n\t\t\t\t\t{/** Force TS to not throw errors, because we check if it is defined */}\n\t\t\t\t\t{contentData[pageToEdit].contentOrder &&\n\t\t\t\t\t\tcontentData[pageToEdit].content &&\n\t\t\t\t\t\tcontentData[pageToEdit].contentOrder!.map((contentHash, index) => {\n\t\t\t\t\t\t\tlet content = contentData[pageToEdit].content![contentHash];\n\t\t\t\t\t\t\treturn <React.Fragment key={contentHash}>\n\t\t\t\t\t\t\t\t<WidgetEditor\n\t\t\t\t\t\t\t\t\tuser={user}\n\t\t\t\t\t\t\t\t\tcontent={content}\n\t\t\t\t\t\t\t\t\tcontentHash={contentHash}\n\t\t\t\t\t\t\t\t\tcurrYear={currYear}\n\t\t\t\t\t\t\t\t\tpageToEdit={pageToEdit}\n\t\t\t\t\t\t\t\t\tdeleteWidget={deleteWidget} />\n\t\t\t\t\t\t\t\t<AddNewWidgetButton onClick={async () => {\n\t\t\t\t\t\t\t\t\tconst selectWidget = addWidget(contentData, pageToEdit, index + 1, currYear, user);\n\t\t\t\t\t\t\t\t\tconst handleSubmit = (selectedWidget: WidgetTypes) => {\n\t\t\t\t\t\t\t\t\t\tselectWidget(selectedWidget);\n\t\t\t\t\t\t\t\t\t\tsetWidgetModal(null);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsetWidgetModal(<WidgetSelectionModal startingState={true} onSubmit={handleSubmit}/>)\n\t\t\t\t\t\t\t\t}} />\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t})}\n\t\t\t\t\t{widgetModal}\n\t\t\t\t</> :\n\t\t\t\t<>\n\t\t\t\t\tPlease select a page to modify above\n </>\n\t\t\t}\n\t\t</>\n\t} else {\n\t\treturn <>Loading</>\n\t}\n}\n\n/**\n * https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n *\n * generateHash creates a random hash value that we will be using for generating keys to store\n * content on firebase. This hash is inserted into an array to determine the order of the content.\n * For our specific use case, here are the following requirements and reasoning:\n *\n * - We do not have to support older browsers. Because this is an internal part of the program\n * for Washington iGEM members, we just enforce them to use newer browsers when editing.\n *\n * - Because we anticipate there to be < 100 items on the page, we don't have to generate huge\n * values. We only need to generate things where the chance of collision is near impossible.\n * Therefore, I have chosen _24_ to be the length of the string we generate.\n *\n * - They only need to be unique to the page.\n *\n * Last Modified\n * William Kwok\n * June 22, 2019\n */\nconst generateHash: () => string = () => {\n\t// Change this to change the length of the string generated. Reconsider if you have to ever\n\t// change this, though.\n\tconst lengthOfGeneratedHash = 24;\n\n\tlet randomInt8s = new Uint8Array(lengthOfGeneratedHash / 2);\n\twindow.crypto.getRandomValues(randomInt8s);\n\treturn randomInt8s.reduce((accumulator, randomInt) => {\n\t\treturn accumulator + ('0' + randomInt.toString(16)).substr(2)\n\t}, \"\")\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardCodedSponsorsPage/LegacyHardCodedSponsorsPage.js",[],["355","356"],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/Data.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/Constants.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/hooks/useWindowWidth.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/DebugFonts.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/contexts/EnvironmentContext/EnvironmentContext.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/EditorHistory.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/hooks/useAuth.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/widgetFirebase.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/Footbar.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/LoadingScreen/LoadingScreen.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/CustomAppBar.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_debug/DebugHeader/DebugHeader.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HardCodedMainPage.tsx",["357"],"import React from 'react';\n//@ts-ignore\n// import Fade from 'react-reveal/Fade';\nimport Container from 'react-bootstrap/Container';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Carousel from 'react-bootstrap/Carousel';\nimport styles from './HardCodedMainPage.module.css';\nimport { Parallax } from 'react-parallax';\nimport { HomepageImpact } from './HomepageImpact/HomepageImpact';\nimport { homepageHowItWorksData, HowItWorksItem } from './HomepageData';\n\ntype HardCodedMainPageProps = {\n\ta: () => void\n}\n\n// type HeaderCard = {\n// \theader: string,\n// \timage: string,\n// \tblurb: string,\n// \tlink: string,\n// \tx?: number,\n// \ty?: number\n// }\n\n// const headerCards: HeaderCard[] = [\n// \t{\n// \t\theader: \"Lorem Ipsum\",\n// \t\timage: \"https://2019.igem.org/wiki/images/a/a9/T--Washington--Octet_Sensor_Setup.png\",\n// \t\tblurb: \"Lorem ipsum\",\n// \t\tlink: \"\"\n// \t}\n// ]\n\nexport const HardCodedMainPage: React.FC<HardCodedMainPageProps> = ({\n\ta\n}) => {\n\treturn <>\n\t\t<article className={styles.homepage}>\n\t\t\t<section className={styles.heroContainer}>\n\t\t\t\t<Container className={styles.hero}>\n\t\t\t\t\t<Row>\n\t\t\t\t\t\t<Col md={5}>\n\t\t\t\t\t\t\t<h1>Arcenic Purification</h1>\n\t\t\t\t\t\t\t<p>Utilizes engineered rhizobacteria in plant roots to selectively accumulate heavy metals</p>\n\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t<Col md={7}>\n\t\t\t\t\t\t\t{/** SIDE IMAGE GOES HERE */}\n\t\t\t\t\t\t\t<iframe className={styles.plantCube} src=\"https://2021.igem.org/Team:Washington/PlantCube\" frameBorder=\"0\"></iframe>\n\t\t\t\t\t\t</Col>\n\t\t\t\t\t</Row>\n\t\t\t\t</Container>\n\t\t\t\t<div className={styles.scrollDown}>\n\t\t\t\t\t<p>Scroll down for more info</p>\n\t\t\t\t\t<p>VVV</p>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t\t<section className={styles.problemContext}>\n\t\t\t\t<Container>\n\t\t\t\t\t<h1>Problem Context</h1>\n\t\t\t\t\t<Parallax\n\t\t\t\t\t\tstrength={100}\n\t\t\t\t\t\tbgImage=\"https://2021.igem.org/wiki/images/8/85/T--Washington--HomepageParallaxFactory.svg\"\n\t\t\t\t\t\tbgImageStyle={{ width: '100%', height: '110%' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={styles.problemContextFactory}>\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<img src=\"https://2021.igem.org/wiki/images/5/59/T--Washington--HomepageParallaxHeavyMetal.svg\" alt=\"soil with heavy metals\" />\n\t\t\t\t\t</Parallax>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tTo keep up with consumer and industrial demand, metal smelteries around the world release slag and emission byproducts that are harmful to people and the environment.\n\t\t\t\t\t</p>\n\t\t\t\t\t<Container className={styles.problemContextStatistics}>\n\t\t\t\t\t\t<Row className={\"gx-5\"}>\n\t\t\t\t\t\t\t<Col md={4}>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tIn the past year alone, over 30,000 metric tons of arsenic and 11 million metric tons of lead were produced worldwide.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t<Col md={4}>\n\t\t\t\t\t\t\t\t<img className={styles.problemContextBeaker} src=\"https://2021.igem.org/wiki/images/thumb/e/ee/T--Washington--homepageBeaker.png/289px-T--Washington--homepageBeaker.png\" alt=\"Beaker with metals\" />\n\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t<Col md={4}>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tThe prevalence for Ulcerative Colitis, an inflammatory bowel disease, is 10-15x higher than expected.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tHeavy metal contamination by arsenic is a serious health and environmental concern worldwide.Heavy metal contamination by arsenic is a serious health and environmental concern worldwide.Heavy metal contamination by arsenic is a serious health and environmental concern.\n\t\t\t\t\t</p>\n\t\t\t\t</Container>\n\t\t\t</section>\n\t\t\t<section className={styles.ourSolution}>\n\t\t\t\t<Container>\n\t\t\t\t\t<h1>Our Solution</h1>\n\t\t\t\t\t<Container className={styles.ourSolutionGrid}>\n\t\t\t\t\t\t<Row className={\"gx-5\"}>\n\t\t\t\t\t\t\t<Col md={6}><img src=\"https://2021.igem.org/wiki/images/6/69/T--Washington--rhizomet.svg\" alt=\"Rhizomet text in orange blob\"/></Col>\n\t\t\t\t\t\t\t<Col md={6}><img src=\"https://2021.igem.org/wiki/images/thumb/4/44/T--Washington--homepageBacteria.svg/300px-T--Washington--homepageBacteria.svg.png\" alt=\"bacteria\" /></Col>\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tWe modified the human metallothionein IA protein to have all its 7 binding sites be specific to arsenic. The modified protein can be expressed within bacteria to remediate arsenic from the environment.\n\t\t\t\t\t</p>\n\t\t\t\t</Container>\n\t\t\t</section>\n\t\t\t<section className={styles.howItWorks}>\n\t\t\t\t<Container>\n\t\t\t\t\t<h1>How it Works</h1>\n\t\t\t\t\t<Carousel>\n\t\t\t\t\t\t{homepageHowItWorksData.map((slideData: HowItWorksItem) => (\n\t\t\t\t\t\t\t<Carousel.Item\n\t\t\t\t\t\t\t\tkey={slideData.title}\n\t\t\t\t\t\t\t\tinterval={slideData.ms || 5000}\n\t\t\t\t\t\t\t\tclassName={styles.howItWorksItem}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Container fluid={\"md\"}>\n\t\t\t\t\t\t\t\t\t<Row md={2} sm={1}>\n\t\t\t\t\t\t\t\t\t\t<Col md={8}>\n\t\t\t\t\t\t\t\t\t\t\t<img src={slideData.image} alt={slideData.title} />\n\t\t\t\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t\t\t\t<Col md={4}>\n\t\t\t\t\t\t\t\t\t\t\t<h3>{slideData.title}</h3>\n\t\t\t\t\t\t\t\t\t\t\t<p className={styles.howItWorksCaption}>{slideData.caption}</p>\n\t\t\t\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t\t\t</Row>\n\t\t\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t\t</Carousel.Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Carousel>\n\t\t\t\t</Container>\n\t\t\t</section>\n\t\t\t<section className={styles.modeling}>\n\t\t\t\t<Container>\n\t\t\t\t\t<h1>Modeling</h1>\n\t\t\t\t\t<div className={styles.modelingProteinContainer}>\n\t\t\t\t\t\t<img src=\"https://2021.igem.org/wiki/images/6/64/T--Washington--MT_protein_blue.png\" alt=\"protein model\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tWe modified Metallothionein to bind more specifically to As by using a program called Rosetta to change the Cd and Zn binding sites to As binding sites. The result is a custom design for a Metallothionein protein that sequesters 7 As III ions. We also developed mathematical models of the kinetics of As within an Ecoli cell in order to test the feasibility and efficacy of our proposed system of remediating As.\n\t\t\t\t\t</p>\n\t\t\t\t</Container>\n\t\t\t</section>\n\t\t\t<section>\n\t\t\t\t<Container>\n\t\t\t\t\t<h1>Impact</h1>\n\t\t\t\t\t<HomepageImpact\n\t\t\t\t\t\tcard1Img=\"https://placekitten.com/200/200\"\n\t\t\t\t\t\tcard1Text=\"A short quote/explanation\"\n\t\t\t\t\t\tcard1Title=\"Scalablity\"\n\t\t\t\t\t\tcard2Img=\"https://placekitten.com/200/200\"\n\t\t\t\t\t\tcard2Text=\"A short quote/explanation\"\n\t\t\t\t\t\tcard2Title=\"Sustainability\"\n\t\t\t\t\t\tcard3Img=\"https://placekitten.com/200/200\"\n\t\t\t\t\t\tcard3Text=\"A short quote/explanation\"\n\t\t\t\t\t\tcard3Title=\"Feasibility\"\n\t\t\t\t\t></HomepageImpact>\n\t\t\t\t</Container>\n\t\t\t</section>\n\t\t</article>\n\t</>\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/NavigationBottom/NavigationBottom.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentView/ContentView.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditorBanner/ContentEditorBanner.tsx",["358"],"import React, { useState, useContext } from 'react';\nimport { Grid, Col, Row } from 'react-flexbox-grid';\nimport FormControl from '@material-ui/core/FormControl';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { ContentData, VERSION } from '../../_data/Data';\nimport Button from '@material-ui/core/Button';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { MAIN_PAGE } from '../../_data/Constants';\nimport { EnvironmentContext } from '../../../contexts/EnvironmentContext/EnvironmentContext';\nimport { printContent } from '../ContentPrinter/ContentPrinter';\nimport {NewPageModal} from './ContentEditorModal';\nimport './ContentEditorBanner.css';\n\ntype ContentEditorBannerProps = {\n\tpageToEdit: string | null,\n\tsetPageToEdit: React.Dispatch<React.SetStateAction<string | null>>,\n\tcontentData: ContentData,\n setisDeletingPage: React.Dispatch<React.SetStateAction<boolean>>,\n\tcurrYear: number\n}\n\nenum VersionAttr {\n major = 0,\n minor = 1,\n bug = 2\n}\n\n/**\n * ContentEditorBanner is the editor banner that appears at the top of the editor page. It shows\n * the user what page is currently being edited, allows the user to select a different page to edit,\n * allows the user to select if the page has a sidebar or not, and also allows the user to create\n * new pages.\n *\n * Last Modified\n * Jennifer Tao\n * August 7, 2021\n */\nexport const ContentEditorBanner: React.FC<ContentEditorBannerProps> = ({\n\tpageToEdit,\n\tsetPageToEdit,\n\tcontentData,\n setisDeletingPage,\n\tcurrYear }) => {\n\tconst { firebase } = useContext(EnvironmentContext);\n\tconst [newPageInput, setNewPageInput] = useState<string>(\"\")\n\tconst [modal, setModal] = useState(false);\n\n\n\tif (!firebase) {\n\t\treturn <></>\n\t}\n\n\t// DO_NOT_CLICK is currently my quick method of making sure people are on the latest version\n\tconst version = (contentData && contentData.DO_NOT_CLICK && contentData.DO_NOT_CLICK[\"MISC\"]) || VERSION;\n // version -> [major, minor, bug]\n\tconst minor = version.split(\".\")[VersionAttr.minor];\n\tconst cMinor = VERSION.split(\".\")[VersionAttr.minor];\n\tif (minor !== cMinor) {\n\t\talert(\"Please update your editor version by clearing cache/cookies and refreshing\");\n\t}\n\n\tconst submitCallback = async (s: boolean, name: string) => {\n\t\t\n\t\tlet newPageInputRef = firebase.database()\n\t\t\t.ref(`${currYear}/ContentData/${name}`);\n\t\tlet snap = await newPageInputRef.once('value');\n\t\tconsole.log(snap);\n\t\tif (!snap.val()) {\n\t\t\tnewPageInputRef.set({\n\t\t\t\thasSidebar: s\n\t\t\t});\n\t\t\tsetPageToEdit(name);\n\t\t\tsetNewPageInput(\"\");\n\t\t\tfirebase.database()\n\t\t\t\t.ref(`${currYear}/ContentData/${pageToEdit}/hasSidebar`)\n\t\t\t\t.set(s);\n\t\t\tsetModal(false);\n\t\t}\n\t}\n\n\treturn <div className=\"content-editor-banner\">\n\t\t<Grid className=\"content-editor-container\">\n\t\t\t<Row className=\"content-editor-title\">\n\t\t\t\t<Col md={1}>\n\t\t\t\t\t<div className=\"content-editor-icon\"></div>\n\t\t\t\t</Col>\n\t\t\t\t<Col md={6}>\n\t\t\t\t\t<Row><h2>Washington iGEM Web Editor</h2></Row>\n\t\t\t\t\t<Row><p>Boosts your efficiency and efforts on creating Wikis</p></Row>\n\t\t\t\t</Col>\n\t\t\t\t<Col mdOffset={3} md={2}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"content-editor-button\"\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tprintContent(contentData);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tDebug\n\t\t\t\t\t</Button>\n\t\t\t\t</Col>\n\t\t\t</Row>\n\t\t\t<Row className=\"content-editor-page-editing\">\n\t\t\t\t<Col md={3}>\n\t\t\t\t\t{pageToEdit && <p className=\"content-editor-label\">You are currently editing page </p>}\n\t\t\t\t\t{!pageToEdit && <p className=\"content-editor-label\">Please select a page to edit</p>}\n\t\t\t\t</Col>\n\t\t\t\t<Col md={2}>\n\t\t\t\t\t<FormControl className=\"content-editor-formcontrol\">\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tvalue={pageToEdit || \"\"}\n\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\tsetPageToEdit(e.target.value as string);\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{Object.keys(contentData).map(contentDataKey => {\n\t\t\t\t\t\t\t\treturn <MenuItem key={contentDataKey} value={contentDataKey}>\n\t\t\t\t\t\t\t\t\t{contentDataKey === MAIN_PAGE ? \"Main page\" : contentDataKey}\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</FormControl>\n\t\t\t\t</Col>\n\t\t\t\t<Col md={1}>\n\t\t\t\t\t{pageToEdit &&\n\t\t\t\t\t\t\t<FormControlLabel className=\"content-editor-checkbox\"\n\t\t\t\t\t\t\t\tcontrol={\n\t\t\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\t\t\tchecked={contentData[pageToEdit].hasSidebar}\n\t\t\t\t\t\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\t\t\t\t\t\tfirebase.database()\n\t\t\t\t\t\t\t\t\t\t\t\t.ref(`${currYear}/ContentData/${pageToEdit}/hasSidebar`)\n\t\t\t\t\t\t\t\t\t\t\t\t.set(e.target.checked);\n\t\t\t\t\t\t\t\t\t\t}} />\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel=\"Sidebar\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t</Col>\n\t\t\t\t<Col mdOffset={2} md={4}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"content-editor-button\"\n\t\t\t\t\t\tstyle={{ marginLeft: '1rem'}}\n\t\t\t\t\t\tdisabled={pageToEdit === null}\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tonClick={() => setisDeletingPage(true)}\n\t\t\t\t\t>\n\t\t\t\t\t\tDelete Page\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"content-editor-button\"\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsetModal(true);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tAdd New Page\n\t\t\t\t\t</Button>\n\t\t\t\t</Col>\n\t\t\t</Row>\n\t\t</Grid>\n\t\t{\n // if there is something being displayed, show the project modal\n modal ?\n <NewPageModal \n\t\t\t\t\tshow={true}\n callback={submitCallback}\n\t\t\t\t\tclose={() => {setModal(false)}}\n />\n :\n null\n }\n\t</div>\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/AddNewWidgetButton/AddNewWidgetButton.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetEditor/WidgetEditor.tsx",["359","360"],"import React, { useState, useContext } from 'react';\nimport { ContentSingularData } from '../../_data/ContentSingularData';\nimport Button from 'react-bootstrap/Button'\nimport './WidgetEditor.css';\nimport { WidgetCategories, ContentMapping, WidgetTypes } from '../../ContentMapping/ContentMapping';\nimport './WidgetEditor.css';\nimport { EnvironmentContext } from '../../../contexts/EnvironmentContext/EnvironmentContext';\nimport { WidgetLiveEdit } from '../WidgetLiveEdit/WidgetLiveEdit';\nimport {WidgetLiveEditBar} from '../WidgetLiveEdit/WidgetLiveEditBar';\nimport { FailureWidget, FailureEditWidget } from './FailureWidget/FailureWidget';\nimport WidgetSelectionModal from '../WidgetSelectionModal/WidgetSelectionModal'\nimport { JsxElement } from 'typescript';\n\ntype WidgetEditorProps = {\n\tcontent: ContentSingularData | undefined,\n\tcontentHash: string,\n\tcurrYear: number,\n\tpageToEdit: string,\n\tuser: firebase.User | null,\n\tdeleteWidget: (contentHash: string) => void\n}\n\n/**\n * WidgetEditor is the widget editing component. It handles the logic for editing a single widget,\n * updating it, and rendering it.\n *\n * Last Modified\n * September 11, 2021\n * Victor Shan\n *\n * TODO:\n * - Update the selector to be more user friendly (make a thing popup?)\n * - Current it is not user friendly to benefit development\n * - Factor currYear into a context hook\n * - Put user into a context hook as well to reduce duplication\n * - Make edithistory be its own class\n */\nexport const WidgetEditor: React.FC<WidgetEditorProps> = ({ content, contentHash, currYear,\n\tpageToEdit, user, deleteWidget }) => {\n\tconst [editing, setEditing] = useState<boolean>(false);\n\tconst [showWidgetSelector, setShowWidgetSelector] = useState<boolean>(false);\n\tconst [editedContent, setEditedContent] = useState<ContentSingularData>({ ...content } as ContentSingularData);\n\tconst { firebase } = useContext(EnvironmentContext);\n\n\n\tif (!content || !firebase) {\n\t\treturn <></>;\n\t}\n\n\tlet ContentWidget;\n\tlet ContentEditingWidget;\n\n\tif (!ContentMapping[content!.type]) {\n\t\tContentWidget = FailureWidget\n\t\tContentEditingWidget = FailureEditWidget\n\t} else {\n\t\tContentWidget = ContentMapping[editedContent.type].widget;\n\t\tContentEditingWidget = ContentMapping[editedContent.type].editor;\n\t}\n\n\tconst handleWidgetTypeChange = (widgetType: WidgetTypes) => {\n\t\tsetEditedContentOnChange(\"type\", widgetType as string, editedContent, setEditedContent);\n\t};\n\n\treturn <div className=\"widget-editor\">\n\t\t{!editing && <>\n <div className=\"content-editbanner-container\">\n <div className=\"content-button-container\">\n <ContentWidget {...editedContent} />\n <div>\n <WidgetLiveEdit\n contentHash={contentHash}\n currYear={currYear}\n pageToEdit={pageToEdit}\n user={user}\n editing={false}\n setEditing={setEditing}\n editedContent={editedContent}\n deleteWidget={deleteWidget} />\n </div>\n </div>\n <WidgetLiveEditBar\n contentHash={contentHash}\n currYear={currYear}\n pageToEdit={pageToEdit}\n user={user}\n editing={false} />\n </div>\n\t\t</>}\n\n\t\t{editing && <>\n\t\t\t<div className=\"widget-picker\">\n\t\t\t\t<form>\n\t\t\t\t\t<Button onClick={() => {\n\t\t\t\t\t\tsetShowWidgetSelector(true);\n\t\t\t\t\t\tconsole.log(\"Changing widget\")\n\t\t\t\t\t}}>Change Widget</Button>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t\t<ContentEditingWidget editedContent={editedContent}\n\t\t\t\toriginalContent={content}\n\t\t\t\tsetEditedContentOnChange={(keyToChange: string, valueToChange: string) => {\n\t\t\t\t\tsetEditedContentOnChange(keyToChange, valueToChange, editedContent, setEditedContent);\n\t\t\t\t}} />\n\t\t\t<div>\n\t\t\t\t<WidgetLiveEdit\n\t\t\t\t\tcontentHash={contentHash}\n\t\t\t\t\tcurrYear={currYear}\n\t\t\t\t\tpageToEdit={pageToEdit}\n\t\t\t\t\tuser={user}\n\t\t\t\t\tediting={true}\n\t\t\t\t\tsetEditing={setEditing}\n\t\t\t\t\teditedContent={editedContent}\n\t\t\t\t\tdeleteWidget={deleteWidget} />\n\t\t\t</div>\n\t\t\t<WidgetSelectionModal startingState={showWidgetSelector} onSubmit={(widgetType: WidgetTypes) => {\n\t\t\t\thandleWidgetTypeChange(widgetType);\n\t\t\t\tsetShowWidgetSelector(false);\n\t\t\t}} />\n\t\t</>}\n\t</div>\n}\n\n\n/**\n * setEditedContentOnChange will modify the specific widget property specified. The limitation\n * of this function is that you will only be allowed to modify one property of the widget at a\n * time.\n *\n * Note: The value can be _any_ type, so if you did want to modify two values at once, you\n * would create an object to house those two values instead.\n *\n * Another note: This only updates the component client side until the save button is pressed to\n * submit the updates to firebase!\n *\n * @param keyToChange string key of the key value pair to update\n * @param valueToChange value of the key value pair to update. Any type.\n */\nexport const setEditedContentOnChange = (keyToChange: string, valueToChange: any,\n\teditedContent: ContentSingularData,\n\tsetEditedContent: React.Dispatch<React.SetStateAction<ContentSingularData>>) => {\n\tconst updatedContent = { ...editedContent, [keyToChange]: valueToChange } as ContentSingularData;\n\tsetEditedContent(updatedContent);\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/DeletionModal/DeletionModal.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetSelectionModal.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/NavbarData/NavbarData.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageData.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/Banner.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/_data/FootbarData/FootbarData.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentMapping/ContentMapping.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/FootbarIcon/FootbarIcon.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarLogo/AppBarLogo.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdowns.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/AppBarSideDrawer.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/SideBar/SideBar.tsx",["361"],"import React, { useEffect, useState } from 'react'\nimport { ContentData } from '../../_data/Data';\n\nexport type SideBarProps = {\n\tcontentData: ContentData,\n\tpageTitle: string\n\t// activeSection: string,\n\t// activeSectionIndex: number\n}\n\ntype sectionInfo = {\n\tsectionID: string,\n\ttop: number,\n\tbottom: number,\n\tindex: number,\n\ttotalSections: number\n}\n\nconst onClickLink = (event: React.MouseEvent) => {\n\tlet id = event.currentTarget.id.split(\"-\")[0];\n\tdocument.getElementById(id)!!.scrollIntoView({ behavior: \"smooth\" });\n\tconst yourElement = document.getElementById(event.currentTarget.id.split(\"-\")[0]);\n\tconst yCoordinate = yourElement!!.getBoundingClientRect().top + window.pageYOffset;\n\tconst yOffset = -100;\n\n\twindow.scrollTo({\n\t\ttop: yCoordinate + yOffset,\n\t\tbehavior: 'smooth'\n\t});\n}\n\nconst calculateSectionArea = (sections: sectionInfo[]) => {\n\tsections.forEach((section, index) => {\n\t\tlet element = document.getElementById(section.sectionID);\n\n\t\tlet top = element!.offsetTop - 150;\n\t\tlet bottom = 99999999;\n\t\tif (sections[index + 1]) {\n\t\t\tlet nextElement = document.getElementById(sections[index + 1].sectionID);\n\t\t\tbottom = nextElement!.offsetTop - 150;\n\t\t}\n\t\tsections[index] = {\n\t\t\tsectionID: section.sectionID, top: top, bottom: bottom, index: index,\n\t\t\ttotalSections: sections.length\n\t\t};\n\t});\n}\n\nexport const SideBar: React.FC<SideBarProps> = ({\n\tcontentData,\n\tpageTitle\n}) => {\n\tconst [currentActiveSection, setCurrentActiveSection] = useState<sectionInfo>({} as sectionInfo);\n\tlet sections: sectionInfo[] = [];\n\n\tuseEffect(() => {\n\t\tcontentData[pageTitle].contentOrder!.forEach((id, index) => {\n\t\t\tlet content = contentData[pageTitle].content![id];\n\t\t\tif (content && content.type === \"HEADER\") {\n\t\t\t\tsections.push({ sectionID: id, top: 0, bottom: 0, index: index, totalSections: 0 });\n\t\t\t}\n\t\t});\n\n\t\tcalculateSectionArea(sections)\n\n\t\tif (!currentActiveSection) {\n\t\t\tsetCurrentActiveSection(sections[0]);\n\t\t}\n\t}, [contentData, currentActiveSection, pageTitle, sections]);\n\n\tif (!contentData && !pageTitle) {\n\t\treturn <></>;\n\t} else if (contentData[pageTitle]\n\t\t&& (!contentData[pageTitle].hasSidebar || !contentData[pageTitle].content)\n\t\t&& contentData[pageTitle].contentOrder && contentData[pageTitle].contentOrder!.length === 0\n\t) {\n\t\treturn <></>;\n\t}\n\n\twindow.addEventListener(\"resize\", (val) => {\n\t\tcalculateSectionArea(sections);\n\t});\n\n\twindow.addEventListener(\"scroll\", () => {\n\t\tfor (let i = 0; i < sections.length; i++) {\n\t\t\tlet section = sections[i];\n\t\t\tif (window.scrollY >= section.top && window.scrollY <= section.bottom) {\n\t\t\t\tif (section.sectionID !== currentActiveSection.sectionID) {\n\t\t\t\t\tsetCurrentActiveSection(section);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tlet generateSectionLinks = contentData[pageTitle].contentOrder!!.map((content) => {\n\t\tlet widgetInfo = contentData[pageTitle].content![content]\n\t\treturn widgetInfo!.type === \"HEADER\" ? <li id={content + \"-link\"}\n\t\t\tkey={content}\n\t\t\tclassName={content === currentActiveSection.sectionID ? \"active-section\" : \"nonactive-section\"}\n\t\t\tonClick={onClickLink}>\n\t\t\t{widgetInfo!.header_content}\n\t\t</li> : null\n\t});\n\n\tlet progress = currentActiveSection ?\n\t\tMath.round((currentActiveSection.index + 1) / currentActiveSection.totalSections * 100.0) : 0;\n\treturn <div id=\"sidebar-container\" style={{ height: (contentData[pageTitle].contentOrder!.length * 12) + \"px\" }}>\n\t\t<ul id=\"sidebar\">\n\t\t\t{contentData[pageTitle].content ? generateSectionLinks : null}\n\t\t</ul>\n\t\t<div id=\"sidebar-progress\"><span style={{ height: progress + \"%\" }}> </span></div>\n\t</div>;\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetEditor/FailureWidget/FailureWidget.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentPrinter/ContentPrinter.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageImpact/HomepageImpact.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/ContentEditorBanner/ContentEditorModal.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetCategory.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetLiveEdit/WidgetLiveEdit.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetLiveEdit/WidgetLiveEditBar.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/LegacySidebar/Sidebar.js",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/BannerEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/TabView/TabView.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/_Stub/Stub.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/TabView/TabViewEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Header/HeaderEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Header/Header.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/PdfViewer/PdfViewer.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/PdfViewer/PdfViewerEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImagesInRow/ImagesInRow.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Video/VideoEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Video/Video.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImagesInRow/ImagesInRowEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/Gallery.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/WYSIWYG/WYSIWYGEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/WYSIWYG/WYSIWYGWidget.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/Accordion.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/AccordionEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/GalleryEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/SeparatorEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/Separator.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImageCarousel.tsx/ImageCarousel.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ExampleImage/ExampleImage.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ImageCarousel.tsx/ImageCarouselEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/ExampleImage/ExampleImageEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/HorizontalDivider/HorizontalDivider.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/HorizontalDivider/HorizontalDividerEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridLayoutEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridLayout.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardcodedMainPage/HomepageImpact/HomepageImpactCard.tsx",["362"],"import React from 'react';\nimport styles from './HomepageImpactCard.module.css';\n\nexport type HomepageImpactCardProps = {\n\timage: string,\n\ttext: string,\n title: string\n}\n\nexport const HomepageImpactCard: React.FC<HomepageImpactCardProps> = ({\n\timage,\n text,\n title\n}) => {\n return <div className={styles.div}>\n <div className={styles.impactCard}>\n <img src={image} className={styles.impactLogo}></img>\n <p className={styles.impactTitle}>{title}</p>\n <p className={styles.impactQuote}>{text}</p>\n </div>\n </div>\n}","/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdown/AppBarDropdown.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/Footbar/FootbarIcon/Logo/Logo.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentEditor/WidgetSelectionModal/WidgetElement.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarSideDrawer/LegacySidebar/SidebarItem.js",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Banner/BannerConstants.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Separator/SeparatorConstants.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Accordion/AccordionConstants.ts",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Gallery/ImageLink.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/WidgetEditor.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/WidgetChooser.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridSelector/GridSelector.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/CustomAppBar/AppBarDropdowns/AppBarDropdown/AppBarDropdownItems/AppBarDropdownItems.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/ContentWidgets/Layouts/GridLayout/GridSelector/GridSquare.tsx",[],"/Users/jennifer/Documents/projects/iGEM/wiki2021/src/components/HardCodedTeamPage/LegacyHardCodedTeamPage.js",[],{"ruleId":"363","replacedBy":"364"},{"ruleId":"365","replacedBy":"366"},{"ruleId":"367","severity":1,"message":"368","line":32,"column":7,"nodeType":"369","messageId":"370","endLine":32,"endColumn":15},{"ruleId":"367","severity":1,"message":"371","line":9,"column":10,"nodeType":"369","messageId":"370","endLine":9,"endColumn":29},{"ruleId":"367","severity":1,"message":"372","line":153,"column":7,"nodeType":"369","messageId":"370","endLine":153,"endColumn":33},{"ruleId":"363","replacedBy":"364"},{"ruleId":"365","replacedBy":"366"},{"ruleId":"373","severity":1,"message":"374","line":49,"column":8,"nodeType":"375","endLine":49,"endColumn":115},{"ruleId":"367","severity":1,"message":"376","line":47,"column":9,"nodeType":"369","messageId":"370","endLine":47,"endColumn":21},{"ruleId":"367","severity":1,"message":"377","line":5,"column":10,"nodeType":"369","messageId":"370","endLine":5,"endColumn":26},{"ruleId":"367","severity":1,"message":"378","line":12,"column":10,"nodeType":"369","messageId":"370","endLine":12,"endColumn":20},{"ruleId":"379","severity":1,"message":"380","line":54,"column":6,"nodeType":"381","endLine":54,"endColumn":34},{"ruleId":"382","severity":1,"message":"383","line":17,"column":7,"nodeType":"375","endLine":17,"endColumn":54},"no-native-reassign",["384"],"no-negated-in-lhs",["385"],"@typescript-eslint/no-unused-vars","'debugURL' is assigned a value but never used.","Identifier","unusedVar","'ContentSingularData' is defined but never used.","'generateHash' is assigned a value but never used.","jsx-a11y/iframe-has-title","<iframe> elements must have a unique title property.","JSXOpeningElement","'newPageInput' is assigned a value but never used.","'WidgetCategories' is defined but never used.","'JsxElement' is defined but never used.","react-hooks/exhaustive-deps","The 'sections' array makes the dependencies of useEffect Hook (at line 69) change on every render. To fix this, wrap the initialization of 'sections' in its own useMemo() Hook.","VariableDeclarator","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","no-global-assign","no-unsafe-negation"]