gitextract_fsuxlpf2/ ├── .dockerignore ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── workflows/ │ ├── cd.yml │ └── ci.yml ├── .gitignore ├── .prettierrc ├── .travis.yml ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── config.js ├── docs/ │ ├── configuration.md │ └── custom-covers.md ├── example.config.js ├── index.html ├── package.json ├── public/ │ ├── CNAME │ └── index.html ├── src/ │ ├── actions/ │ │ └── index.js │ ├── common/ │ │ ├── constants.js │ │ ├── data/ │ │ │ ├── copy.json │ │ │ └── es-MX.json │ │ ├── global.js │ │ └── utilities.js │ ├── components/ │ │ ├── App.jsx │ │ ├── InfoPopup.jsx │ │ ├── Layout.jsx │ │ ├── Notification.jsx │ │ ├── Portal.jsx │ │ ├── TemplateCover.jsx │ │ ├── Toolbar.jsx │ │ ├── atoms/ │ │ │ ├── Checkbox.jsx │ │ │ ├── CoeventIcon.jsx │ │ │ ├── ColoredMarkers.jsx │ │ │ ├── Content.jsx │ │ │ ├── Controls.jsx │ │ │ ├── CoverIcon.jsx │ │ │ ├── InfoIcon.jsx │ │ │ ├── Loading.jsx │ │ │ ├── Md.jsx │ │ │ ├── Media.jsx │ │ │ ├── NoSource.jsx │ │ │ ├── Popup.jsx │ │ │ ├── RefreshIcon.jsx │ │ │ ├── RouteIcon.jsx │ │ │ ├── SitesIcon.jsx │ │ │ ├── Spinner.jsx │ │ │ └── StaticPage.jsx │ │ ├── controls/ │ │ │ ├── BottomActions.jsx │ │ │ ├── Card.jsx │ │ │ ├── CardStack.jsx │ │ │ ├── CategoriesListPanel.jsx │ │ │ ├── DownloadButton.jsx │ │ │ ├── DownloadPanel.jsx │ │ │ ├── FilterListPanel.jsx │ │ │ ├── FullScreenToggle.jsx │ │ │ ├── NarrativeControls.jsx │ │ │ ├── Search.jsx │ │ │ ├── ShapesListPanel.jsx │ │ │ └── atoms/ │ │ │ ├── Button.jsx │ │ │ ├── Caret.jsx │ │ │ ├── CustomField.jsx │ │ │ ├── Media.jsx │ │ │ ├── NarrativeAdjust.jsx │ │ │ ├── NarrativeCard.jsx │ │ │ ├── NarrativeClose.jsx │ │ │ ├── PanelTree.jsx │ │ │ ├── SearchRow.jsx │ │ │ ├── TelegramEmbed.jsx │ │ │ ├── Text.jsx │ │ │ ├── Time.jsx │ │ │ ├── ToolbarButton.jsx │ │ │ └── TwitterTweet.jsx │ │ ├── space/ │ │ │ ├── Space.jsx │ │ │ └── carto/ │ │ │ ├── Map.jsx │ │ │ └── atoms/ │ │ │ ├── Clusters.jsx │ │ │ ├── DefsMarkers.jsx │ │ │ ├── Events.jsx │ │ │ ├── Narratives.jsx │ │ │ ├── Regions.jsx │ │ │ ├── SatelliteOverlayToggle.jsx │ │ │ ├── SelectedEvents.jsx │ │ │ ├── Sites.jsx │ │ │ └── __tests__/ │ │ │ └── SatelliteOverlayToggle.spec.jsx │ │ └── time/ │ │ ├── Axis.jsx │ │ ├── Categories.jsx │ │ ├── Timeline.jsx │ │ └── atoms/ │ │ ├── Clip.jsx │ │ ├── DatetimeBar.jsx │ │ ├── DatetimeDot.jsx │ │ ├── DatetimePentagon.jsx │ │ ├── DatetimeSquare.jsx │ │ ├── DatetimeStar.jsx │ │ ├── DatetimeTriangle.jsx │ │ ├── Events.jsx │ │ ├── Handles.jsx │ │ ├── Header.jsx │ │ ├── Labels.jsx │ │ ├── Markers.jsx │ │ ├── Project.jsx │ │ └── ZoomControls.jsx │ ├── index.jsx │ ├── reducers/ │ │ ├── __tests__/ │ │ │ ├── index.spec.js │ │ │ └── ui.spec.js │ │ ├── app.js │ │ ├── domain.js │ │ ├── features.js │ │ ├── index.js │ │ ├── root.js │ │ ├── ui.js │ │ └── validate/ │ │ ├── associationsSchema.js │ │ ├── eventSchema.js │ │ ├── regionSchema.js │ │ ├── shapeSchema.js │ │ ├── siteSchema.js │ │ ├── sourceSchema.js │ │ └── validators.js │ ├── scss/ │ │ ├── _burger.scss │ │ ├── _icons.scss │ │ ├── _variables.scss │ │ ├── button.scss │ │ ├── card.scss │ │ ├── cardstack.scss │ │ ├── common.scss │ │ ├── cover.scss │ │ ├── header.scss │ │ ├── infopopup.scss │ │ ├── loading.scss │ │ ├── main.scss │ │ ├── map.scss │ │ ├── mediaplayer.scss │ │ ├── narrativecard.scss │ │ ├── notification.scss │ │ ├── overlay.scss │ │ ├── popup.scss │ │ ├── satelliteoverlaytoggle.scss │ │ ├── search.scss │ │ ├── tabs.scss │ │ ├── timeline.scss │ │ ├── toolbar.scss │ │ └── video.scss │ ├── selectors/ │ │ ├── __tests__/ │ │ │ └── timeline.spec.js │ │ ├── helpers.js │ │ └── index.js │ ├── store/ │ │ ├── index.js │ │ ├── initial.js │ │ └── plugins/ │ │ └── urlState/ │ │ ├── applyUrlState.js │ │ ├── index.js │ │ ├── middleware.js │ │ ├── schema.js │ │ └── urlState.js │ └── test/ │ └── App.test.jsx ├── test/ │ ├── __mocks__/ │ │ ├── fileMock.js │ │ └── styleMock.js │ └── setup.js └── vite.config.js