├── .babelrc
├── .editorconfig
├── .eslintrc.js
├── .gitattributes
├── .github
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── ci.yml
│ ├── deploy.yml
│ ├── find-region-mapping-alias-duplicates.yml
│ └── npm-publish.yml
├── .gitignore
├── .gitmodules
├── .husky
└── pre-commit
├── .npmignore
├── .nvmrc
├── .prettierignore
├── .prettierrc
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── LICENSE.md
├── README.md
├── RELEASE_GUIDE.md
├── architecture
├── 0000-record-architecture-decisions.md
├── 0001-babel-and-ts-loader.md
├── 0002-require-instead-of-import.md
├── 0003-drop-ie11-support.md
├── 0004-next-catalog-functions.md
├── 0005-root-group-ids-and-shareKeys.md
├── 0006-dynamic-groups-and-shareKeys.md
├── 0007-use-weblate-for-i18n.md
├── 0008-remove-conversion-service.md
├── 0009-story-and-catalog-routes.md
├── 0010-never-support-ie11.md
├── 0011-configurable-search-providers.md
├── 0012-do-not-use-require-for-cesium-in-ts.md
└── imgs
│ └── weblate_process.png
├── buildprocess
├── .eslintrc.js
├── ci-cleanup.js
├── ci-deploy.sh
├── ci-google-cloud-key.json.enc
├── ci-values.yml
├── configureWebpack.js
├── createKarmaBaseConfig.js
├── diffCatalogIndex.js
├── find-region-mapping-alias-duplicates.js
├── generate-cesium-declarations.js
├── generateCatalogIndex.ts
├── generateDocs.ts
├── jsdoc.json
├── karma-firefox.conf.js
├── karma-local.conf.js
├── patchNetworkRequests.ts
├── removeCesiumDebugPragmas.js
├── runExternalModule.js
├── runWebpack.js
├── terriajsServerGulpTask.js
├── watchWebpack.js
├── webpack-tools.config.js
├── webpack.config.dev.js
└── webpack.config.make.js
├── doc
├── CNAME
├── README.md
├── acknowledgements
│ └── attributions.md
├── connecting-to-data
│ ├── README.md
│ ├── catalog-functions.md
│ ├── catalog-groups.md
│ ├── catalog-items.md
│ ├── catalog-references.md
│ ├── catalog-type-details
│ │ └── .placeholder
│ ├── cross-origin-resource-sharing.md
│ ├── customizing-data-appearance
│ │ ├── feature-info-template.md
│ │ ├── imagery-data.md
│ │ ├── img
│ │ │ ├── default-data-view.png
│ │ │ ├── edit-style.png
│ │ │ ├── feature_info_with_time_series.png
│ │ │ ├── model-dim.jpeg
│ │ │ ├── no_template.png
│ │ │ ├── styling-side-panel.png
│ │ │ └── template.png
│ │ ├── model-dimensions.md
│ │ ├── overview.md
│ │ └── tabular-vector-data.md
│ ├── item-search.md
│ ├── item-search
│ │ ├── indexed-item-search-provider-design-notes.md
│ │ └── indexed-item-search.md
│ └── open-item-search.png
├── contributing
│ ├── README.md
│ ├── architecture.md
│ ├── development-environment.md
│ ├── feature-picking.md
│ ├── frontend-style-guide.md
│ ├── img
│ │ ├── making_a_trait.png
│ │ ├── no-map.png
│ │ ├── runtime.png
│ │ └── stratum.png
│ ├── init-sources.md
│ ├── merge-master-into-mobx.md
│ ├── migration-guide.md
│ ├── model-layer.md
│ ├── problems-and-solutions.md
│ ├── result-object-and-error-handling.md
│ ├── strata-examples.md
│ ├── traits-in-depth.md
│ ├── translation-guide-dev.md
│ └── using-a-custom-version-of-cesium.md
├── customizing
│ ├── README.md
│ ├── client-side-config.md
│ ├── cloning-and-building.md
│ ├── initialization-files.md
│ ├── search-providers.md
│ ├── server-side-config.md
│ ├── skinning.md
│ └── translation-guide.md
├── deploying
│ ├── README.md
│ ├── controlling-in-an-iframe-or-popup.md
│ ├── controlling-with-url-parameters.md
│ ├── deploying-terriamap.md
│ ├── deploying-with-kubernetes.md
│ ├── deprecated-wms-region-mapping.md
│ ├── running-through-reverse-proxy.md
│ ├── setting-up-a-region-mapping-server.md
│ ├── setting-up-geoserver.md
│ └── using-as-a-ckan-previewer.md
├── getting-started.md
├── index-redirect.html
├── js
│ └── rewrite-links.js
├── mkdocs.yml
└── terria.png
├── gulpfile.js
├── lib
├── Charts
│ ├── ChartData.ts
│ ├── ChartView.ts
│ └── getChartColorForId.ts
├── CopyrightModule.js
├── Core
│ ├── AbstractConstructor.ts
│ ├── AnalyticEvents
│ │ └── analyticEvents.ts
│ ├── AsyncLoader.ts
│ ├── Class.ts
│ ├── ConsoleAnalytics.ts
│ ├── Constructor.ts
│ ├── CorsProxy.ts
│ ├── DataUri.ts
│ ├── GeoJson.ts
│ ├── GoogleAnalytics.ts
│ ├── Json.ts
│ ├── LatLonHeight.ts
│ ├── Result.ts
│ ├── ServerConfig.d.ts
│ ├── ServerConfig.js
│ ├── StandardCssColors.ts
│ ├── TerriaError.ts
│ ├── TypeConditionals.ts
│ ├── TypeModifiers.ts
│ ├── addedByUser.ts
│ ├── animation.ts
│ ├── containsAny.ts
│ ├── createColorForIdTransformer.ts
│ ├── createDiscreteTimes.ts
│ ├── createTransformerAllowUndefined.ts
│ ├── ensureSuffix.ts
│ ├── filterOutUndefined.ts
│ ├── flatten.ts
│ ├── formatPropertyValue.ts
│ ├── getDataType.ts
│ ├── getDereferencedIfExists.ts
│ ├── getPath.ts
│ ├── hashEntity.ts
│ ├── hashFromString.ts
│ ├── injectTerms.ts
│ ├── instanceOf.ts
│ ├── isDefined.ts
│ ├── isReadOnlyArray.ts
│ ├── linkifyContent.ts
│ ├── loadArrayBuffer.ts
│ ├── loadBlob.ts
│ ├── loadCsv.ts
│ ├── loadJson.ts
│ ├── loadJson5.ts
│ ├── loadText.ts
│ ├── loadWithXhr.d.ts
│ ├── loadWithXhr.js
│ ├── loadXML.ts
│ ├── markdownToHtml.ts
│ ├── math.ts
│ ├── pollToPromise.ts
│ ├── prerequisites.js
│ ├── readJson.ts
│ ├── readText.ts
│ ├── readXml.ts
│ ├── regexMatches.ts
│ ├── replaceUnderscores.ts
│ ├── runLater.ts
│ ├── scaleToDenominator.ts
│ ├── setsAreEqual.ts
│ ├── sortedIndices.js
│ ├── supportsWebGL.js
│ ├── timeout.ts
│ ├── triggerResize.ts
│ ├── types.ts
│ ├── uriHelpers.ts
│ └── waitForDataSourceToLoad.ts
├── Language
│ └── languageHelpers.ts
├── Map
│ ├── Cesium
│ │ ├── CesiumRenderLoopPauser.ts
│ │ ├── CesiumSelectionIndicator.ts
│ │ └── pickTriangle.ts
│ ├── ColorMap
│ │ ├── ColorMap.ts
│ │ ├── ConstantColorMap.ts
│ │ ├── ContinuousColorMap.ts
│ │ ├── DiscreteColorMap.ts
│ │ └── EnumColorMap.ts
│ ├── DragPoints
│ │ ├── CesiumDragPoints.js
│ │ ├── DragPoints.d.ts
│ │ ├── DragPoints.js
│ │ └── LeafletDragPoints.js
│ ├── Icons
│ │ └── Maki
│ │ │ ├── LICENSE.txt
│ │ │ ├── MakiIcons.ts
│ │ │ ├── README.md
│ │ │ └── iconset-all_maki_icons.json
│ ├── ImageryProvider
│ │ ├── ArcGisImageServerImageryProvider.ts
│ │ ├── ProtomapsImageryProvider.ts
│ │ └── getUrlForImageryTile.ts
│ ├── Leaflet
│ │ ├── ImageryProviderLeafletGridLayer.ts
│ │ ├── ImageryProviderLeafletTileLayer.ts
│ │ ├── LeafletDataSourceDisplay.ts
│ │ ├── LeafletScene.ts
│ │ ├── LeafletSelectionIndicator.ts
│ │ └── LeafletVisualizer.ts
│ ├── LeafletPatched.ts
│ ├── PickedFeatures
│ │ ├── PickedFeatures.ts
│ │ └── featureDataToGeoJson.ts
│ ├── Region
│ │ ├── RegionProvider.ts
│ │ └── RegionProviderList.ts
│ ├── SizeMap
│ │ ├── ConstantPointSizeMap.ts
│ │ ├── PointSizeMap.ts
│ │ └── ScalePointSizeMap.ts
│ └── Vector
│ │ ├── EarthGravityModel1996.d.ts
│ │ ├── EarthGravityModel1996.js
│ │ ├── Proj4Definitions.ts
│ │ ├── Protomaps
│ │ ├── ProtomapsArcGisPbfSource.ts
│ │ ├── ProtomapsGeojsonSource.ts
│ │ ├── mapboxStyleJsonToProtomaps.ts
│ │ └── tableStyleToProtomaps.ts
│ │ ├── Reproject.ts
│ │ ├── computeRingWindingOrder.ts
│ │ ├── geoJsonGeometryFromGeoRssSimpleGeometry.js
│ │ ├── geoJsonGeometryFromGmlGeometry.js
│ │ ├── geoJsonGeometryFromW3cGeometry.js
│ │ ├── geoRssConvertor.js
│ │ ├── gmlToGeoJson.js
│ │ ├── prettifyCoordinates.ts
│ │ ├── prettifyProjection.ts
│ │ ├── rectangleToLatLngBounds.ts
│ │ └── zoomRectangleFromPoint.js
├── ModelMixins
│ ├── AccessControlMixin.ts
│ ├── AutoRefreshingMixin.ts
│ ├── CatalogFunctionJobMixin.ts
│ ├── CatalogFunctionMixin.ts
│ ├── CatalogMemberMixin.ts
│ ├── Cesium3dTilesMixin.ts
│ ├── Cesium3dTilesStyleMixin.ts
│ ├── CesiumIonMixin.ts
│ ├── ChartableMixin.ts
│ ├── ClippingMixin.ts
│ ├── DiffableMixin.ts
│ ├── DiscretelyTimeVaryingMixin.ts
│ ├── ExportWebCoverageServiceMixin.ts
│ ├── ExportableMixin.ts
│ ├── FeatureInfoUrlTemplateMixin.ts
│ ├── GeojsonMixin.ts
│ ├── GetCapabilitiesMixin.ts
│ ├── GltfMixin.ts
│ ├── GroupMixin.ts
│ ├── MappableMixin.ts
│ ├── MinMaxLevelMixin.ts
│ ├── ReferenceMixin.ts
│ ├── SearchProviders
│ │ ├── CatalogSearchProviderMixin.ts
│ │ ├── LocationSearchProviderMixin.ts
│ │ ├── SearchProviderMixin.ts
│ │ └── WebFeatureServiceSearchProviderMixin.ts
│ ├── SearchableItemMixin.ts
│ ├── ShadowMixin.ts
│ ├── TableMixin.ts
│ ├── TileErrorHandlerMixin.ts
│ ├── TimeFilterMixin.ts
│ ├── TimeVarying.ts
│ ├── UrlMixin.ts
│ └── XmlRequestMixin.ts
├── Models
│ ├── AugmentedVirtuality.ts
│ ├── BaseMaps
│ │ ├── BaseMapsModel.ts
│ │ └── defaultBaseMaps.ts
│ ├── BoxDrawing.ts
│ ├── BoxDrawing
│ │ └── cursors.ts
│ ├── CameraView.ts
│ ├── Catalog
│ │ ├── Catalog.ts
│ │ ├── CatalogFunctions
│ │ │ ├── YDYRCatalogFunction.ts
│ │ │ └── YDYRCatalogFunctionJob.ts
│ │ ├── CatalogGroup.ts
│ │ ├── CatalogGroups
│ │ │ ├── OpenDataSoftCatalogGroup.ts
│ │ │ ├── SocrataCatalogGroup.ts
│ │ │ └── ThreddsCatalogGroup.ts
│ │ ├── CatalogItems
│ │ │ ├── ApiTableCatalogItem.ts
│ │ │ ├── BingMapsCatalogItem.ts
│ │ │ ├── CartoMapV1CatalogItem.ts
│ │ │ ├── CartoMapV3CatalogItem.ts
│ │ │ ├── Cesium3DTilesCatalogItem.ts
│ │ │ ├── CesiumTerrainCatalogItem.ts
│ │ │ ├── CogCatalogItem.ts
│ │ │ ├── CompositeCatalogItem.ts
│ │ │ ├── CsvCatalogItem.ts
│ │ │ ├── CzmlCatalogItem.ts
│ │ │ ├── GeoJsonCatalogItem.ts
│ │ │ ├── GeoRssCatalogItem.ts
│ │ │ ├── GpxCatalogItem.ts
│ │ │ ├── I3SCatalogItem.ts
│ │ │ ├── IonImageryCatalogItem.ts
│ │ │ ├── KmlCatalogItem.ts
│ │ │ ├── MapboxMapCatalogItem.ts
│ │ │ ├── MapboxStyleCatalogItem.ts
│ │ │ ├── MapboxVectorTileCatalogItem.ts
│ │ │ ├── OpenDataSoftCatalogItem.ts
│ │ │ ├── OpenStreetMapCatalogItem.ts
│ │ │ ├── SenapsLocationsCatalogItem.ts
│ │ │ ├── ShapefileCatalogItem.ts
│ │ │ ├── SocrataMapViewCatalogItem.ts
│ │ │ ├── StubCatalogItem.ts
│ │ │ └── UrlTemplateImageryCatalogItem.ts
│ │ ├── CatalogMemberFactory.ts
│ │ ├── CatalogProvider.ts
│ │ ├── CatalogReferences
│ │ │ ├── CatalogIndexReference.ts
│ │ │ ├── MagdaReference.ts
│ │ │ ├── SplitItemReference.ts
│ │ │ ├── TerriaReference.ts
│ │ │ ├── ThreddsItemReference.ts
│ │ │ ├── UrlReference.ts
│ │ │ └── createUrlReferenceFromUrl.ts
│ │ ├── Ckan
│ │ │ ├── CkanCatalogGroup.ts
│ │ │ ├── CkanDefaultFormatsStratum.ts
│ │ │ ├── CkanDefinitions.ts
│ │ │ └── CkanItemReference.ts
│ │ ├── Esri
│ │ │ ├── ArcGisCatalogGroup.ts
│ │ │ ├── ArcGisFeatureServerCatalogGroup.ts
│ │ │ ├── ArcGisFeatureServerCatalogItem.ts
│ │ │ ├── ArcGisFeatureServerStratum.ts
│ │ │ ├── ArcGisImageServerCatalogItem.ts
│ │ │ ├── ArcGisInterfaces.ts
│ │ │ ├── ArcGisMapServerCatalogGroup.ts
│ │ │ ├── ArcGisMapServerCatalogItem.ts
│ │ │ ├── ArcGisPortalCatalogGroup.ts
│ │ │ ├── ArcGisPortalDefinitions.ts
│ │ │ ├── ArcGisPortalItemReference.ts
│ │ │ ├── ArcGisTerrainCatalogItem.ts
│ │ │ └── esriStyleToTableStyle.ts
│ │ ├── Gltf
│ │ │ ├── AssImpCatalogItem.ts
│ │ │ ├── GLTF.ts
│ │ │ └── GltfCatalogItem.ts
│ │ ├── Group.ts
│ │ ├── Gtfs
│ │ │ ├── GtfsCatalogItem.ts
│ │ │ ├── GtfsRealtimeProtoBufReaders.ts
│ │ │ ├── VehicleData.ts
│ │ │ └── prettyPrintGtfsEntityField.ts
│ │ ├── Ows
│ │ │ ├── CswCatalogGroup.ts
│ │ │ ├── CswGetRecordsTemplate.xml
│ │ │ ├── CswGetRecordsWPSTemplate.xml
│ │ │ ├── ExecuteWpsTemplate.xml
│ │ │ ├── OwsInterfaces.ts
│ │ │ ├── SensorObservationServiceCatalogItem.ts
│ │ │ ├── SensorObservationServiceRequestTemplate.xml
│ │ │ ├── WebFeatureServiceCapabilities.ts
│ │ │ ├── WebFeatureServiceCatalogGroup.ts
│ │ │ ├── WebFeatureServiceCatalogItem.ts
│ │ │ ├── WebMapServiceCapabilities.ts
│ │ │ ├── WebMapServiceCapabilitiesStratum.ts
│ │ │ ├── WebMapServiceCatalogGroup.ts
│ │ │ ├── WebMapServiceCatalogItem.ts
│ │ │ ├── WebMapTileServiceCapabilities.ts
│ │ │ ├── WebMapTileServiceCatalogGroup.ts
│ │ │ ├── WebMapTileServiceCatalogItem.ts
│ │ │ ├── WebProcessingServiceCapabilities.ts
│ │ │ ├── WebProcessingServiceCatalogFunction.ts
│ │ │ ├── WebProcessingServiceCatalogFunctionJob.ts
│ │ │ └── WebProcessingServiceCatalogGroup.ts
│ │ ├── ResultPendingCatalogItem.ts
│ │ ├── SdmxJson
│ │ │ ├── SdmxJsonCatalogGroup.ts
│ │ │ ├── SdmxJsonCatalogItem.ts
│ │ │ ├── SdmxJsonDataflowStratum.ts
│ │ │ ├── SdmxJsonServerStratum.ts
│ │ │ └── SdmxJsonStructureMessage.ts
│ │ ├── addUserCatalogMember.ts
│ │ ├── addUserFiles.ts
│ │ ├── createCatalogItemFromFileOrUrl.ts
│ │ ├── createStubCatalogItem.ts
│ │ ├── proxyCatalogItemUrl.ts
│ │ ├── registerCatalogMembers.ts
│ │ └── removeUserAddedData.ts
│ ├── Cesium.ts
│ ├── DefaultTimelineModel.ts
│ ├── Definition
│ │ ├── CommonStrata.ts
│ │ ├── CreateModel.ts
│ │ ├── FlattenedFromTraits.ts
│ │ ├── LoadableStratum.ts
│ │ ├── Model.ts
│ │ ├── ModelFactory.ts
│ │ ├── ModelPropertiesFromTraits.ts
│ │ ├── StratumFromTraits.ts
│ │ ├── StratumOrder.ts
│ │ ├── addModelStrataView.ts
│ │ ├── createCombinedModel.ts
│ │ ├── createStratumInstance.ts
│ │ ├── hasTraits.ts
│ │ ├── saveModelToJson.ts
│ │ ├── saveStratumToJson.ts
│ │ ├── updateModelFromJson.ts
│ │ └── upsertModelFromJson.ts
│ ├── ErrorServiceProviders
│ │ ├── ErrorService.ts
│ │ └── StubErrorServiceProvider.ts
│ ├── Feature
│ │ ├── Feature.ts
│ │ ├── FeatureData.ts
│ │ ├── FeatureInfoContext.ts
│ │ └── ImageryLayerFeatureInfo.ts
│ ├── FunctionParameters
│ │ ├── BooleanParameter.ts
│ │ ├── DateParameter.ts
│ │ ├── DateTimeParameter.ts
│ │ ├── EnumerationParameter.ts
│ │ ├── FunctionParameter.ts
│ │ ├── GeoJsonParameter.ts
│ │ ├── InfoParameter.ts
│ │ ├── LineParameter.ts
│ │ ├── NumberParameter.ts
│ │ ├── PointParameter.ts
│ │ ├── PolygonParameter.ts
│ │ ├── RectangleParameter.ts
│ │ ├── RegionParameter.ts
│ │ ├── RegionTypeParameter.ts
│ │ ├── SelectAPolygonParameter.ts
│ │ └── StringParameter.ts
│ ├── GlobeOrMap.ts
│ ├── HasLocalData.ts
│ ├── IElementConfig.ts
│ ├── InitSource.ts
│ ├── Internationalization.ts
│ ├── ItemSearchProviders
│ │ ├── EnumIndex.ts
│ │ ├── Index.ts
│ │ ├── IndexedItemSearchProvider.ts
│ │ ├── ItemSearchProvider.ts
│ │ ├── ItemSearchProviders.ts
│ │ ├── NumericIndex.ts
│ │ ├── TextIndex.ts
│ │ ├── Types.ts
│ │ └── joinUrl.ts
│ ├── Leaflet.ts
│ ├── LeafletAttribution.ts
│ ├── LocationMarkerUtils.ts
│ ├── MapInteractionMode.ts
│ ├── NoViewer.ts
│ ├── RelatedMaps.ts
│ ├── SearchProviders
│ │ ├── AustralianGazetteerSearchProvider.ts
│ │ ├── BingMapsSearchProvider.ts
│ │ ├── CatalogIndex.ts
│ │ ├── CatalogSearchProvider.ts
│ │ ├── CesiumIonSearchProvider.ts
│ │ ├── NominatimSearchProvider.ts
│ │ ├── SearchBarModel.ts
│ │ ├── SearchModelFactory.ts
│ │ ├── SearchProviderFactory.ts
│ │ ├── SearchProviderResults.ts
│ │ ├── SearchResult.ts
│ │ ├── StubSearchProvider.ts
│ │ ├── createStubSearchProvider.ts
│ │ ├── registerSearchProviders.ts
│ │ └── upsertSearchProviderFromJson.ts
│ ├── SelectableDimensions
│ │ └── SelectableDimensions.ts
│ ├── ShareDataService.ts
│ ├── StoryVideoSettings.ts
│ ├── Terria.ts
│ ├── TimelineStack.ts
│ ├── UserDrawing.ts
│ ├── ViewerMode.ts
│ ├── ViewingControls.ts
│ ├── Workbench.ts
│ ├── Workflows
│ │ ├── SelectableDimensionWorkflow.ts
│ │ └── TableStylingWorkflow.ts
│ ├── getAncestors.ts
│ ├── getToken.ts
│ └── sendFeedback.ts
├── ReactViewModels
│ ├── MouseCoords.ts
│ ├── NotificationState.ts
│ ├── SearchState.ts
│ ├── ViewState.ts
│ ├── defaultHelpContent.ts
│ ├── defaultTerms.ts
│ └── defaultTourPoints.ts
├── ReactViews
│ ├── ActionBar
│ │ ├── ActionBar.tsx
│ │ ├── ActionBarGroup.tsx
│ │ ├── ActionBarPortal.tsx
│ │ ├── ActionButton.tsx
│ │ └── StyledButton.tsx
│ ├── Analytics
│ │ ├── BooleanParameterEditor.tsx
│ │ ├── BooleanParameterGroupEditor.jsx
│ │ ├── DateParameterEditor.tsx
│ │ ├── DateTimeParameterEditor.tsx
│ │ ├── EnumerationParameterEditor.tsx
│ │ ├── GenericParameterEditor.tsx
│ │ ├── GeoJsonParameterEditor.jsx
│ │ ├── InfoParameterEditor.tsx
│ │ ├── InvokeFunction.jsx
│ │ ├── LineParameterEditor.jsx
│ │ ├── NumberParameterEditor.tsx
│ │ ├── ParameterEditor.jsx
│ │ ├── PointParameterEditor.jsx
│ │ ├── PolygonParameterEditor.jsx
│ │ ├── RectangleParameterEditor.jsx
│ │ ├── RegionParameterEditor.jsx
│ │ ├── RegionPicker.jsx
│ │ ├── RegionTypeParameterEditor.jsx
│ │ ├── SelectAPolygonParameterEditor.tsx
│ │ ├── invoke-function.scss
│ │ ├── invoke-function.scss.d.ts
│ │ ├── parameter-editors.scss
│ │ └── parameter-editors.scss.d.ts
│ ├── BadgeBar.tsx
│ ├── BottomDock
│ │ ├── BottomDock.tsx
│ │ ├── ChartDisclaimer.tsx
│ │ ├── MapDataCount.tsx
│ │ ├── Timeline
│ │ │ ├── CesiumTimeline.jsx
│ │ │ ├── DateFormats.ts
│ │ │ ├── DatePicker
│ │ │ │ ├── CenturyView.tsx
│ │ │ │ ├── DateTimePickerStyles.ts
│ │ │ │ ├── DayView.tsx
│ │ │ │ ├── HourView.tsx
│ │ │ │ ├── MonthView.tsx
│ │ │ │ ├── TimeListView.tsx
│ │ │ │ ├── YearView.tsx
│ │ │ │ └── utils.ts
│ │ │ ├── DateTimePicker.tsx
│ │ │ ├── Timeline.d.ts
│ │ │ ├── Timeline.jsx
│ │ │ ├── TimelineControls.jsx
│ │ │ ├── cesium-timeline.scss
│ │ │ ├── cesium-timeline.scss.d.ts
│ │ │ ├── timeline-controls.scss
│ │ │ ├── timeline-controls.scss.d.ts
│ │ │ ├── timeline.scss
│ │ │ └── timeline.scss.d.ts
│ │ └── chart-disclaimer.scss
│ ├── CleanDropdownPanel
│ │ └── CleanDropdownPanel.jsx
│ ├── Clipboard.tsx
│ ├── Context
│ │ ├── ContextProviders.tsx
│ │ ├── ViewStateContext.tsx
│ │ └── index.ts
│ ├── Custom
│ │ ├── ApiTableCustomComponent.ts
│ │ ├── Chart
│ │ │ ├── BottomDockChart.tsx
│ │ │ ├── ChartExpandAndDownloadButtons.tsx
│ │ │ ├── ChartPanel.tsx
│ │ │ ├── ChartPanelDownloadButton.tsx
│ │ │ ├── FeatureInfoPanelChart.tsx
│ │ │ ├── Glyphs.ts
│ │ │ ├── Legends.jsx
│ │ │ ├── LineAndPointChart.tsx
│ │ │ ├── LineChart.tsx
│ │ │ ├── MomentLinesChart.tsx
│ │ │ ├── MomentPointsChart.tsx
│ │ │ ├── PointOnMap.tsx
│ │ │ ├── Tooltip.tsx
│ │ │ ├── ZoomX.tsx
│ │ │ ├── bottom-dock-chart.scss
│ │ │ ├── bottom-dock-chart.scss.d.ts
│ │ │ ├── chart-expand-and-download-buttons.scss
│ │ │ ├── chart-expand-and-download-buttons.scss.d.ts
│ │ │ ├── chart-panel-download-button.scss
│ │ │ ├── chart-panel-download-button.scss.d.ts
│ │ │ ├── chart-panel.scss
│ │ │ ├── chart-panel.scss.d.ts
│ │ │ ├── chart-preview.scss
│ │ │ ├── chart-preview.scss.d.ts
│ │ │ ├── chart.scss
│ │ │ ├── chart.scss.d.ts
│ │ │ ├── downloadHrefWorker.js
│ │ │ ├── legends.scss.d.ts
│ │ │ ├── tooltip.scss
│ │ │ ├── tooltip.scss.d.ts
│ │ │ ├── types.ts
│ │ │ └── utils.tsx
│ │ ├── ChartCustomComponent.ts
│ │ ├── Collapsible
│ │ │ ├── Collapsible.tsx
│ │ │ └── collapsible.scss.d.ts
│ │ ├── CollapsibleCustomComponent.ts
│ │ ├── CsvChartCustomComponent.ts
│ │ ├── CustomComponent.ts
│ │ ├── ExternalLink.tsx
│ │ ├── FeedbackLinkCustomComponent.tsx
│ │ ├── SOSChartCustomComponent.ts
│ │ ├── TerriaTooltip.tsx
│ │ ├── parseCustomHtmlToReact.ts
│ │ ├── parseCustomMarkdownToReact.ts
│ │ └── registerCustomComponentTypes.ts
│ ├── DataCatalog
│ │ ├── CatalogGroup.jsx
│ │ ├── CatalogItem.tsx
│ │ ├── DataCatalog.jsx
│ │ ├── DataCatalogGroup.tsx
│ │ ├── DataCatalogItem.tsx
│ │ ├── DataCatalogMember.jsx
│ │ ├── DataCatalogReference.tsx
│ │ ├── DisplayGroupHelper.ts
│ │ ├── data-catalog-group.scss
│ │ ├── data-catalog-group.scss.d.ts
│ │ ├── data-catalog-item.scss.d.ts
│ │ ├── data-catalog.scss
│ │ ├── data-catalog.scss.d.ts
│ │ └── toggleItemOnMapFromCatalog.ts
│ ├── Disclaimer.d.ts
│ ├── Disclaimer.jsx
│ ├── Drag
│ │ ├── DragWrapper.tsx
│ │ └── useDraggable.ts
│ ├── DragDropFile.tsx
│ ├── DragDropNotification.tsx
│ ├── Errors
│ │ └── RaiseToUserErrorBoundary.tsx
│ ├── ExplorerWindow
│ │ ├── ExplorerWindow.tsx
│ │ ├── ModalPopup.tsx
│ │ ├── Tabs.d.ts
│ │ ├── Tabs.jsx
│ │ ├── Tabs
│ │ │ ├── DataCatalogTab.tsx
│ │ │ ├── MyDataTab
│ │ │ │ ├── AddData.jsx
│ │ │ │ ├── CesiumIonConnector.tsx
│ │ │ │ ├── FileInput.jsx
│ │ │ │ ├── MyDataTab.jsx
│ │ │ │ ├── add-data.scss
│ │ │ │ ├── add-data.scss.d.ts
│ │ │ │ ├── cesium-ion-connector.scss
│ │ │ │ ├── cesium-ion-connector.scss.d.ts
│ │ │ │ ├── file-input.scss
│ │ │ │ ├── file-input.scss.d.ts
│ │ │ │ ├── my-data-tab.scss
│ │ │ │ └── my-data-tab.scss.d.ts
│ │ │ ├── data-catalog-tab.scss
│ │ │ └── data-catalog-tab.scss.d.ts
│ │ ├── explorer-window.scss
│ │ ├── explorer-window.scss.d.ts
│ │ ├── tabs.scss
│ │ └── tabs.scss.d.ts
│ ├── FeatureInfo
│ │ ├── FeatureInfoCatalogItem.tsx
│ │ ├── FeatureInfoDownload.tsx
│ │ ├── FeatureInfoPanel.tsx
│ │ ├── FeatureInfoPanelButton.tsx
│ │ ├── FeatureInfoSection.tsx
│ │ ├── feature-info-catalog-item.scss
│ │ ├── feature-info-catalog-item.scss.d.ts
│ │ ├── feature-info-download.scss
│ │ ├── feature-info-download.scss.d.ts
│ │ ├── feature-info-panel.scss
│ │ ├── feature-info-panel.scss.d.ts
│ │ ├── feature-info-section.scss
│ │ ├── feature-info-section.scss.d.ts
│ │ ├── generateCesiumInfoHTMLFromProperties.ts
│ │ ├── getFeatureProperties.ts
│ │ └── mustacheExpressions.ts
│ ├── Feedback
│ │ ├── FeedbackButtonController.ts
│ │ └── FeedbackForm.tsx
│ ├── Generic
│ │ ├── Caret.jsx
│ │ ├── CloseButton.tsx
│ │ ├── Dropdown.tsx
│ │ ├── Editor.jsx
│ │ ├── MoreOrLess.jsx
│ │ ├── OutsideClickHandler.tsx
│ │ ├── PrefaceBox.tsx
│ │ ├── Prompt.d.ts
│ │ ├── Prompt.jsx
│ │ ├── Responsive.tsx
│ │ ├── Timer
│ │ │ ├── Timer.jsx
│ │ │ ├── drawTimer.js
│ │ │ ├── timer.scss
│ │ │ └── timer.scss.d.ts
│ │ ├── TooltipWrapper.tsx
│ │ ├── dropdown.scss
│ │ ├── dropdown.scss.d.ts
│ │ ├── editor.skin.min.css
│ │ ├── prompt.scss
│ │ └── prompt.scss.d.ts
│ ├── Guide
│ │ ├── Guide.jsx
│ │ ├── SatelliteGuide.jsx
│ │ ├── guide.scss
│ │ ├── guide.scss.d.ts
│ │ └── satelliteGuideData.js
│ ├── HOCs
│ │ ├── measureElement.tsx
│ │ ├── withControlledVisibility.tsx
│ │ ├── withFallback.tsx
│ │ └── withTerriaRef.tsx
│ ├── HelpScreens
│ │ ├── HelpPrompt.tsx
│ │ ├── SatelliteHelpPrompt.tsx
│ │ ├── help-panel.scss
│ │ ├── help-panel.scss.d.ts
│ │ ├── help-screen-window.scss
│ │ ├── obscure-overlay.scss
│ │ └── obscure-overlay.scss.d.ts
│ ├── Hooks
│ │ ├── useKeyPress.js
│ │ ├── useRefForTerria.ts
│ │ └── useWindowSize.ts
│ ├── Loader.tsx
│ ├── LocationItem.jsx
│ ├── Map
│ │ ├── BottomBar
│ │ │ ├── BottomBar.tsx
│ │ │ ├── Credits
│ │ │ │ ├── Credit.tsx
│ │ │ │ ├── Credit.type.ts
│ │ │ │ ├── Credits.tsx
│ │ │ │ ├── CreditsContainer.tsx
│ │ │ │ ├── DataAttribution
│ │ │ │ │ └── DataAttributionModal.tsx
│ │ │ │ ├── MapCreditLogo.tsx
│ │ │ │ ├── MapCredits.tsx
│ │ │ │ ├── Spacer.tsx
│ │ │ │ ├── TerriaLogo.tsx
│ │ │ │ └── index.ts
│ │ │ ├── DistanceLegend.tsx
│ │ │ ├── LocationBar.tsx
│ │ │ └── index.ts
│ │ ├── BottomLeftBar
│ │ │ └── BottomLeftBar.tsx
│ │ ├── MapColumn.tsx
│ │ ├── MapNavigation
│ │ │ ├── CollapsedNavigation.tsx
│ │ │ ├── Items
│ │ │ │ ├── AugmentedVirtualityTool.tsx
│ │ │ │ ├── Compass
│ │ │ │ │ ├── Compass.tsx
│ │ │ │ │ ├── GyroscopeGuidance.d.ts
│ │ │ │ │ ├── GyroscopeGuidance.jsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── MapNavigationItem.tsx
│ │ │ │ ├── MeasureTool.ts
│ │ │ │ ├── MyLocation.ts
│ │ │ │ ├── ToggleSplitterTool.ts
│ │ │ │ ├── ZoomControl.tsx
│ │ │ │ └── index.ts
│ │ │ ├── MapNavigation.tsx
│ │ │ ├── filterViewerAndScreenSize.ts
│ │ │ ├── index.ts
│ │ │ ├── registerMapNavigations.tsx
│ │ │ └── zoom_control.scss.d.ts
│ │ ├── MenuBar
│ │ │ ├── HelpButton
│ │ │ │ ├── HelpButton.tsx
│ │ │ │ ├── help-button.scss
│ │ │ │ └── help-button.scss.d.ts
│ │ │ ├── MenuBar.d.ts
│ │ │ ├── MenuBar.jsx
│ │ │ ├── StoryButton
│ │ │ │ ├── StoryButton.tsx
│ │ │ │ ├── story-button.scss
│ │ │ │ └── story-button.scss.d.ts
│ │ │ ├── menu-bar.scss
│ │ │ └── menu-bar.scss.d.ts
│ │ ├── Panels
│ │ │ ├── BaseOuterPanel.js
│ │ │ ├── DropdownPanel.jsx
│ │ │ ├── HelpPanel
│ │ │ │ ├── HelpPanel.d.ts
│ │ │ │ ├── HelpPanel.jsx
│ │ │ │ ├── HelpPanelItem.jsx
│ │ │ │ ├── HelpVideoPanel.jsx
│ │ │ │ ├── StyledHtml.jsx
│ │ │ │ ├── TrainerPane.jsx
│ │ │ │ ├── VideoGuide.d.ts
│ │ │ │ ├── VideoGuide.jsx
│ │ │ │ ├── help-panel.scss
│ │ │ │ └── help-panel.scss.d.ts
│ │ │ ├── InnerPanel.jsx
│ │ │ ├── LangPanel
│ │ │ │ └── LangPanel.tsx
│ │ │ ├── MobilePanel.jsx
│ │ │ ├── SettingPanel.tsx
│ │ │ ├── SharePanel
│ │ │ │ ├── AdvancedOptions
│ │ │ │ │ ├── AdvancedOptions.tsx
│ │ │ │ │ ├── EmbedSection.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── BuildShareLink.ts
│ │ │ │ ├── Print
│ │ │ │ │ ├── PrintDatasets.tsx
│ │ │ │ │ ├── PrintSection.tsx
│ │ │ │ │ ├── PrintSource.tsx
│ │ │ │ │ ├── PrintView.tsx
│ │ │ │ │ ├── PrintViewButtons.tsx
│ │ │ │ │ ├── PrintViewMap.tsx
│ │ │ │ │ └── PrintWorkbench.tsx
│ │ │ │ ├── SharePanel.tsx
│ │ │ │ ├── SharePanelContent.tsx
│ │ │ │ ├── ShareUrl
│ │ │ │ │ ├── ShareUrl.tsx
│ │ │ │ │ ├── ShareUrlBookmark.tsx
│ │ │ │ │ ├── ShareUrlWarning.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── StorySharePanel.jsx
│ │ │ │ ├── StyledHr.tsx
│ │ │ │ ├── share-panel.scss
│ │ │ │ └── share-panel.scss.d.ts
│ │ │ ├── ToolsPanel
│ │ │ │ ├── CountDatasets.tsx
│ │ │ │ ├── ToolsPanel.jsx
│ │ │ │ ├── tools-panel.scss
│ │ │ │ └── tools-panel.scss.d.ts
│ │ │ ├── panel.scss
│ │ │ ├── panel.scss.d.ts
│ │ │ ├── setting-panel.scss
│ │ │ └── setting-panel.scss.d.ts
│ │ ├── ProgressBar.tsx
│ │ ├── TerriaViewerWrapper
│ │ │ ├── Splitter
│ │ │ │ ├── Splitter.tsx
│ │ │ │ └── dragHook.ts
│ │ │ ├── TerriaViewerWrapper.tsx
│ │ │ └── index.ts
│ │ ├── Toast.tsx
│ │ └── map-navigation.scss.d.ts
│ ├── MapIconButton
│ │ └── MapIconButton.tsx
│ ├── Mobile
│ │ ├── MobileHeader.d.ts
│ │ ├── MobileHeader.jsx
│ │ ├── MobileMenu.jsx
│ │ ├── MobileMenuItem.tsx
│ │ ├── MobileModalWindow.jsx
│ │ ├── MobileSearch.jsx
│ │ ├── mobile-header.scss
│ │ ├── mobile-header.scss.d.ts
│ │ ├── mobile-menu-item.scss
│ │ ├── mobile-menu-item.scss.d.ts
│ │ ├── mobile-menu.scss
│ │ ├── mobile-menu.scss.d.ts
│ │ ├── mobile-modal-window.scss
│ │ ├── mobile-modal-window.scss.d.ts
│ │ ├── mobile-search.scss
│ │ └── mobile-search.scss.d.ts
│ ├── Notification
│ │ ├── MapInteractionWindow.tsx
│ │ ├── Notification.tsx
│ │ ├── NotificationWindow.jsx
│ │ ├── map-interaction-window.scss
│ │ ├── map-interaction-window.scss.d.ts
│ │ ├── notification-window.scss
│ │ ├── notification-window.scss.d.ts
│ │ ├── shareConvertNotification.tsx
│ │ └── terriaErrorNotification.tsx
│ ├── Preview
│ │ ├── DataPreview.jsx
│ │ ├── DataPreviewMap.jsx
│ │ ├── DataPreviewSections.jsx
│ │ ├── DataPreviewUrl.jsx
│ │ ├── Description.d.ts
│ │ ├── Description.jsx
│ │ ├── ExportData.tsx
│ │ ├── GroupPreview.jsx
│ │ ├── MappablePreview.jsx
│ │ ├── MetadataTable.jsx
│ │ ├── WarningBox.tsx
│ │ ├── data-preview-map.scss
│ │ ├── data-preview-map.scss.d.ts
│ │ ├── data-preview.scss
│ │ ├── data-preview.scss.d.ts
│ │ ├── mappable-preview.scss
│ │ ├── mappable-preview.scss.d.ts
│ │ ├── metadata-table.scss
│ │ └── metadata-table.scss.d.ts
│ ├── PrivateIndicator
│ │ └── PrivateIndicator.tsx
│ ├── ReactViewHelpers
│ │ └── highlightKeyword.jsx
│ ├── RelatedMaps
│ │ ├── RelatedMaps.tsx
│ │ ├── related-maps.scss
│ │ └── related-maps.scss.d.ts
│ ├── Search
│ │ ├── Breadcrumbs.jsx
│ │ ├── LocationSearchResults.tsx
│ │ ├── SearchBox.jsx
│ │ ├── SearchBoxAndResults.tsx
│ │ ├── SearchHeader.tsx
│ │ ├── SearchResult.tsx
│ │ ├── search-header.scss
│ │ ├── search-header.scss.d.ts
│ │ ├── sidebar-dataset-search-results.scss
│ │ ├── sidebar-dataset-search-results.scss.d.ts
│ │ ├── sidebar-search.scss
│ │ └── sidebar-search.scss.d.ts
│ ├── SelectableDimensions
│ │ ├── Button.tsx
│ │ ├── Checkbox.tsx
│ │ ├── Color.tsx
│ │ ├── ColorSchemeOptionRenderer.tsx
│ │ ├── Group.tsx
│ │ ├── MarkerOptionRenderer.tsx
│ │ ├── Numeric.tsx
│ │ ├── Select.tsx
│ │ ├── SelectableDimension.tsx
│ │ └── Text.tsx
│ ├── SidePanel
│ │ ├── Branding.tsx
│ │ ├── FullScreenButton.d.ts
│ │ ├── FullScreenButton.jsx
│ │ ├── SidePanel.tsx
│ │ ├── full_screen_button.scss
│ │ ├── full_screen_button.scss.d.ts
│ │ ├── side-panel.scss
│ │ └── side-panel.scss.d.ts
│ ├── StandardUserInterface
│ │ ├── ExperimentalFeatures.tsx
│ │ ├── GlobalTerriaStyles.ts
│ │ ├── Portal.tsx
│ │ ├── SidePanelContainer.tsx
│ │ ├── StandardTheme.tsx
│ │ ├── StandardUserInterface.tsx
│ │ ├── TrainerBar
│ │ │ └── TrainerBar.tsx
│ │ ├── customizable
│ │ │ ├── Groups.jsx
│ │ │ ├── MenuButton.tsx
│ │ │ ├── MenuItem.jsx
│ │ │ ├── MenuPanel.jsx
│ │ │ ├── ResponsiveSwitch.jsx
│ │ │ ├── menu-button.scss
│ │ │ └── menu-button.scss.d.ts
│ │ ├── index.ts
│ │ ├── processCustomElements.d.ts
│ │ ├── processCustomElements.jsx
│ │ ├── standard-user-interface.scss
│ │ └── standard-user-interface.scss.d.ts
│ ├── Story
│ │ ├── Story.tsx
│ │ ├── StoryBuilder.tsx
│ │ ├── StoryEditor.d.ts
│ │ ├── StoryEditor.jsx
│ │ ├── StoryPanel
│ │ │ ├── StoryBody.tsx
│ │ │ ├── StoryButtons.tsx
│ │ │ ├── StoryFooterBar.tsx
│ │ │ ├── StoryPanel.tsx
│ │ │ └── TitleBar.tsx
│ │ ├── story-builder.scss
│ │ ├── story-builder.scss.d.ts
│ │ ├── story-editor.scss
│ │ ├── story-editor.scss.d.ts
│ │ ├── story-panel.scss
│ │ └── story-panel.scss.d.ts
│ ├── Tools
│ │ ├── ClippingBox
│ │ │ ├── ClippingBoxToolLauncher.tsx
│ │ │ └── RepositionClippingBox.tsx
│ │ ├── DiffTool
│ │ │ ├── DatePicker.tsx
│ │ │ ├── DiffTool.tsx
│ │ │ ├── LocationPicker.tsx
│ │ │ └── diff-tool.scss.d.ts
│ │ ├── ItemSearchTool
│ │ │ ├── BackButton.tsx
│ │ │ ├── ErrorComponent.tsx
│ │ │ ├── ItemSearchTool.tsx
│ │ │ ├── LazyItemSearchTool.tsx
│ │ │ ├── Loading.tsx
│ │ │ ├── MapEffects.tsx
│ │ │ ├── SearchForm.tsx
│ │ │ └── SearchResults.tsx
│ │ ├── PedestrianMode
│ │ │ ├── DropPedestrianToGround.tsx
│ │ │ ├── Marker.ts
│ │ │ ├── MiniMap.tsx
│ │ │ ├── MouseTooltip.tsx
│ │ │ ├── MovementControls.tsx
│ │ │ ├── MovementsController.ts
│ │ │ └── PedestrianMode.tsx
│ │ ├── Tool.tsx
│ │ └── ToolModal.tsx
│ ├── Tour
│ │ ├── TourExplanationBox.tsx
│ │ ├── TourIndicator.jsx
│ │ ├── TourOverlay.jsx
│ │ ├── TourPortal.d.ts
│ │ ├── TourPortal.jsx
│ │ ├── TourPrefaceBox.tsx
│ │ ├── TourProgressDot.jsx
│ │ └── tour-helpers.ts
│ ├── Transitions
│ │ ├── FadeIn
│ │ │ ├── FadeIn.tsx
│ │ │ ├── fade-in.scss
│ │ │ └── fade-in.scss.d.ts
│ │ └── SlideUpFadeIn
│ │ │ ├── SlideUpFadeIn.tsx
│ │ │ ├── slide-up-fade-in.scss
│ │ │ └── slide-up-fade-in.scss.d.ts
│ ├── WelcomeMessage
│ │ ├── WelcomeMessage.d.ts
│ │ ├── WelcomeMessage.jsx
│ │ ├── welcome-message.scss
│ │ └── welcome-message.scss.d.ts
│ ├── Workbench
│ │ ├── Controls
│ │ │ ├── ChartItemSelector.tsx
│ │ │ ├── ColorScaleRangeSection.d.ts
│ │ │ ├── ColorScaleRangeSection.jsx
│ │ │ ├── DateTimeSelectorSection.tsx
│ │ │ ├── FilterSection.d.ts
│ │ │ ├── FilterSection.jsx
│ │ │ ├── GeneratedControlSection.tsx
│ │ │ ├── LeftRightSection.tsx
│ │ │ ├── Legend.tsx
│ │ │ ├── OpacitySection.tsx
│ │ │ ├── SatelliteImageryTimeFilterSection.d.ts
│ │ │ ├── SatelliteImageryTimeFilterSection.jsx
│ │ │ ├── ScaleWorkbenchInfo.tsx
│ │ │ ├── SelectableDimensionSection.tsx
│ │ │ ├── ShortReport.tsx
│ │ │ ├── TimerSection.d.ts
│ │ │ ├── TimerSection.jsx
│ │ │ ├── ViewingControls.tsx
│ │ │ ├── WorkbenchItemControls.tsx
│ │ │ ├── colorscalerange-section.scss
│ │ │ ├── colorscalerange-section.scss.d.ts
│ │ │ ├── concept-viewer.scss.d.ts
│ │ │ ├── filter-section.scss
│ │ │ ├── filter-section.scss.d.ts
│ │ │ ├── legend.scss
│ │ │ ├── legend.scss.d.ts
│ │ │ ├── satellite-imagery-time-filter-section.scss
│ │ │ ├── satellite-imagery-time-filter-section.scss.d.ts
│ │ │ ├── timer-section.scss
│ │ │ └── timer-section.scss.d.ts
│ │ ├── PositionRightOfWorkbench.tsx
│ │ ├── TerrainSide.tsx
│ │ ├── Workbench.tsx
│ │ ├── WorkbenchButton.tsx
│ │ ├── WorkbenchItem.tsx
│ │ ├── WorkbenchList.tsx
│ │ ├── WorkbenchSplitScreen.tsx
│ │ └── sortable.css
│ ├── Workflow
│ │ ├── Panel.tsx
│ │ ├── PanelMenu.tsx
│ │ ├── SelectableDimensionWorkflow.tsx
│ │ ├── WorkflowPanel.tsx
│ │ └── WorkflowPanelPortal.tsx
│ ├── location-item.scss
│ ├── location-item.scss.d.ts
│ └── useCallbackRef.ts
├── Sass
│ ├── common
│ │ ├── _base.scss
│ │ ├── _buttons.scss
│ │ ├── _default_variables.scss
│ │ ├── _form.scss
│ │ ├── _icons.scss
│ │ ├── _labels.scss
│ │ ├── _mixins.scss
│ │ └── _variables.scss
│ ├── exports
│ │ ├── _variables-export.scss
│ │ └── _variables-export.scss.d.ts
│ └── global
│ │ ├── _datePicker.scss
│ │ ├── _datePickerOverride.scss
│ │ ├── _leaflet.scss
│ │ ├── _normalize.scss
│ │ ├── _slider.scss
│ │ ├── _sortable.scss
│ │ └── global.scss
├── Styled
│ ├── AnimatedSpinnerIcon.tsx
│ ├── Box.tsx
│ ├── Button.tsx
│ ├── ButtonAsLabel.tsx
│ ├── Checkbox
│ │ ├── Checkbox.tsx
│ │ ├── Elements
│ │ │ ├── CheckboxIcon.tsx
│ │ │ └── HiddenCheckbox.tsx
│ │ ├── index.ts
│ │ └── types.ts
│ ├── Hr.tsx
│ ├── Icon.tsx
│ ├── IconWrapper.tsx
│ ├── Input.tsx
│ ├── List.tsx
│ ├── Select.tsx
│ ├── Spacing.tsx
│ ├── Styled.types.ts
│ ├── Text.tsx
│ └── mixins.ts
├── Table
│ ├── ColorStyleLegend.ts
│ ├── Csv.ts
│ ├── MergedStyleMapLegend.ts
│ ├── StyleMapLegend.ts
│ ├── TableAutomaticStylesStratum.ts
│ ├── TableColorMap.ts
│ ├── TableColumn.ts
│ ├── TableColumnType.ts
│ ├── TableFeatureInfoStratum.ts
│ ├── TableLegendStratum.ts
│ ├── TableStyle.ts
│ ├── TableStyleMap.ts
│ ├── createLongitudeLatitudeFeaturePerId.ts
│ ├── createLongitudeLatitudeFeaturePerRow.ts
│ ├── createRegionMappedImageryProvider.ts
│ ├── getFeatureStyle.ts
│ └── tableFeatureInfoContext.ts
├── ThirdParty
│ ├── @mapbox
│ │ └── togeojson
│ │ │ └── index.d.ts
│ ├── arcgis-pbf-parser
│ │ └── index.d.ts
│ ├── assimpjs
│ │ └── index.d.ts
│ ├── global.d.ts
│ ├── html-to-react
│ │ └── index.d.ts
│ ├── javascript-natural-sort
│ │ └── index.d.ts
│ ├── mapbox__geojson-merge
│ │ └── index.d.ts
│ ├── mapbox__point-geometry
│ │ └── index.d.ts
│ ├── point-in-polygon
│ │ └── index.d.ts
│ ├── proj4-fully-loaded
│ │ └── index.d.ts
│ ├── react-anything-sortable
│ │ └── index.d.ts
│ ├── react-datepicker
│ │ └── index.d.ts
│ ├── react-shallow-testutils
│ │ └── index.d.ts
│ ├── styled-components
│ │ └── index.d.ts
│ ├── terriajs-cesium-extra
│ │ └── index.d.ts
│ ├── terriajs-html2canvas
│ │ └── index.d.ts
│ ├── thredds-catalog-crawler
│ │ └── index.d.ts
│ ├── worker-loader.d.ts
│ ├── xml2json.d.ts
│ └── xml2json.js
├── Traits
│ ├── ArrayNestedStrataMap.ts
│ ├── BoxDrawingTraits.ts
│ ├── Decorators
│ │ ├── anyTrait.ts
│ │ ├── modelReferenceArrayTrait.ts
│ │ ├── modelReferenceTrait.ts
│ │ ├── objectArrayTrait.ts
│ │ ├── objectTrait.ts
│ │ ├── primitiveArrayTrait.ts
│ │ └── primitiveTrait.ts
│ ├── ModelReference.ts
│ ├── ModelTraits.ts
│ ├── NestedStrataMap.ts
│ ├── SearchProviders
│ │ ├── BingMapsSearchProviderTraits.ts
│ │ ├── CatalogSearchProviderTraits.ts
│ │ ├── CesiumIonSearchProviderTraits.ts
│ │ ├── LocationSearchProviderTraits.ts
│ │ ├── NominatimSearchProviderTraits.ts
│ │ ├── SearchBarTraits.ts
│ │ ├── SearchProviderTraits.ts
│ │ └── WebFeatureServiceSearchProviderTraits.ts
│ ├── Stratified.ts
│ ├── Trait.ts
│ ├── TraitsClasses
│ │ ├── ApiRequestTraits.ts
│ │ ├── ApiTableCatalogItemTraits.ts
│ │ ├── ArcGisCatalogGroupTraits.ts
│ │ ├── ArcGisFeatureServerCatalogGroupTraits.ts
│ │ ├── ArcGisFeatureServerCatalogItemTraits.ts
│ │ ├── ArcGisImageServerCatalogItemTraits.ts
│ │ ├── ArcGisMapServerCatalogGroupTraits.ts
│ │ ├── ArcGisMapServerCatalogItemTraits.ts
│ │ ├── ArcGisPortalCatalogGroupTraits.ts
│ │ ├── ArcGisPortalItemFormatTraits.ts
│ │ ├── ArcGisPortalItemTraits.ts
│ │ ├── ArcGisPortalSharedTraits.ts
│ │ ├── ArcGisTerrainCatalogItemTraits.ts
│ │ ├── AssImpCatalogItemTraits.ts
│ │ ├── AttributionTraits.ts
│ │ ├── AutoRefreshingTraits.ts
│ │ ├── BaseMapTraits.ts
│ │ ├── BingMapsCatalogItemTraits.ts
│ │ ├── CartoMapV1CatalogItemTraits.ts
│ │ ├── CartoMapV3CatalogItemTraits.ts
│ │ ├── CatalogFunctionJobTraits.ts
│ │ ├── CatalogFunctionTraits.ts
│ │ ├── CatalogGroupTraits.ts
│ │ ├── CatalogIndexReferenceTraits.ts
│ │ ├── CatalogMemberReferenceTraits.ts
│ │ ├── CatalogMemberTraits.ts
│ │ ├── Cesium3DTilesCatalogItemTraits.ts
│ │ ├── Cesium3dTilesTraits.ts
│ │ ├── CesiumIonTraits.ts
│ │ ├── CesiumTerrainCatalogItemTraits.ts
│ │ ├── ChartPointOnMapTraits.ts
│ │ ├── ChartTraits.ts
│ │ ├── CkanCatalogGroupTraits.ts
│ │ ├── CkanItemReferenceTraits.ts
│ │ ├── CkanResourceFormatTraits.ts
│ │ ├── CkanSharedTraits.ts
│ │ ├── ClippingPlanesTraits.ts
│ │ ├── CogCatalogItemTraits.ts
│ │ ├── CompositeCatalogItemTraits.ts
│ │ ├── CsvCatalogItemTraits.ts
│ │ ├── CswCatalogGroupTraits.ts
│ │ ├── CzmlCatalogItemTraits.ts
│ │ ├── DiffableTraits.ts
│ │ ├── DimensionTraits.ts
│ │ ├── DiscreteTimeTraits.ts
│ │ ├── DiscretelyTimeVaryingTraits.ts
│ │ ├── ExportWebCoverageServiceTraits.ts
│ │ ├── ExportableTraits.ts
│ │ ├── FeatureInfoTraits.ts
│ │ ├── FeaturePickingTraits.ts
│ │ ├── GeoJsonCatalogItemTraits.ts
│ │ ├── GeoJsonTraits.ts
│ │ ├── GeoRssCatalogItemTraits.ts
│ │ ├── GetCapabilitiesTraits.ts
│ │ ├── GltfCatalogItemTraits.ts
│ │ ├── GltfTraits.ts
│ │ ├── GpxCatalogItemTraits.ts
│ │ ├── GroupTraits.ts
│ │ ├── GtfsCatalogItemTraits.ts
│ │ ├── GtfsModelTraits.ts
│ │ ├── HeadingPitchRollTraits.ts
│ │ ├── HighlightColorTraits.ts
│ │ ├── I3SCatalogItemTraits.ts
│ │ ├── I3STraits.ts
│ │ ├── ImageryProviderTraits.ts
│ │ ├── IonImageryCatalogItemTraits.ts
│ │ ├── ItemPropertiesTraits.ts
│ │ ├── KmlCatalogItemTraits.ts
│ │ ├── LatLonHeightTraits.ts
│ │ ├── LayerOrderingTraits.ts
│ │ ├── LegendOwnerTraits.ts
│ │ ├── LegendTraits.ts
│ │ ├── MagdaDistributionFormatTraits.ts
│ │ ├── MagdaReferenceTraits.ts
│ │ ├── MapboxMapCatalogItemTraits.ts
│ │ ├── MapboxStyleCatalogItemTraits.ts
│ │ ├── MapboxVectorTileCatalogItemTraits.ts
│ │ ├── MappableTraits.ts
│ │ ├── MinMaxLevelTraits.ts
│ │ ├── OpacityTraits.ts
│ │ ├── OpenDataSoftCatalogGroupTraits.ts
│ │ ├── OpenDataSoftCatalogItemTraits.ts
│ │ ├── OpenStreetMapCatalogItemTraits.ts
│ │ ├── PlaceEditorTraits.ts
│ │ ├── ReferenceTraits.ts
│ │ ├── ResultPendingCatalogItemTraits.ts
│ │ ├── ScaleByDistanceTraits.ts
│ │ ├── SdmxCatalogGroupTraits.ts
│ │ ├── SdmxCatalogItemTraits.ts
│ │ ├── SdmxCommonTraits.ts
│ │ ├── SearchableItemTraits.ts
│ │ ├── SenapsLocationsCatalogItemTraits.ts
│ │ ├── SensorObservationCatalogItemTraits.ts
│ │ ├── ShadowTraits.ts
│ │ ├── ShapefileCatalogItemTraits.ts
│ │ ├── SocrataCatalogGroupTraits.ts
│ │ ├── SocrataMapViewCatalogItemTraits.ts
│ │ ├── SplitItemReferenceTraits.ts
│ │ ├── SplitterTraits.ts
│ │ ├── StyleTraits.ts
│ │ ├── Table
│ │ │ ├── ChartStyleTraits.ts
│ │ │ ├── ColorStyleTraits.ts
│ │ │ ├── ColumnTraits.ts
│ │ │ ├── LabelStyleTraits.ts
│ │ │ ├── OutlineStyleTraits.ts
│ │ │ ├── PointSizeStyleTraits.ts
│ │ │ ├── PointStyleTraits.ts
│ │ │ ├── StyleMapTraits.ts
│ │ │ ├── StyleTraits.ts
│ │ │ ├── TableTraits.ts
│ │ │ ├── TimeStyleTraits.ts
│ │ │ └── TrailStyleTraits.ts
│ │ ├── TerriaReferenceTraits.ts
│ │ ├── ThreddsCatalogGroupTraits.ts
│ │ ├── ThreddsItemReferenceTraits.ts
│ │ ├── TimeFilterTraits.ts
│ │ ├── TimeVaryingTraits.ts
│ │ ├── TransformationTraits.ts
│ │ ├── UrlReferenceTraits.ts
│ │ ├── UrlTemplateImageryCatalogItemTraits.ts
│ │ ├── UrlTraits.ts
│ │ ├── WebFeatureServiceCatalogGroupTraits.ts
│ │ ├── WebFeatureServiceCatalogItemTraits.ts
│ │ ├── WebMapServiceCatalogGroupTraits.ts
│ │ ├── WebMapServiceCatalogItemTraits.ts
│ │ ├── WebMapTileServiceCatalogGroupTraits.ts
│ │ ├── WebMapTileServiceCatalogItemTraits.ts
│ │ ├── WebProcessingServiceCatalogFunctionJobTraits.ts
│ │ ├── WebProcessingServiceCatalogFunctionTraits.ts
│ │ ├── WebProcessingServiceCatalogGroupTraits.ts
│ │ ├── YDYRCatalogFunctionJobTraits.ts
│ │ └── YDYRCatalogFunctionTraits.ts
│ ├── TraitsConstructor.ts
│ ├── mixTraits.ts
│ └── traitsClassToModelClass.ts
└── ViewModels
│ ├── CompositeBar
│ ├── CompositeBarItemController.ts
│ └── CompositeBarModel.ts
│ ├── FeatureInfoPanel.ts
│ ├── FileDragDropListener.ts
│ ├── MapNavigation
│ ├── MapNavigationItemController.ts
│ ├── MapNavigationModel.ts
│ └── MapToolbar.ts
│ ├── TerriaViewer.ts
│ ├── UploadDataTypes.ts
│ ├── ViewingControlsMenu.ts
│ ├── WorkbenchItem
│ ├── Inputs.ts
│ └── index.ts
│ ├── updateApplicationOnHashChange.ts
│ └── updateApplicationOnMessageFromParentWindow.js
├── netlify.toml
├── package.json
├── project.inlang
└── settings.json
├── requirements.txt
├── terria-logo.png
├── terria-screenshot.png
├── test
├── .eslintrc.js
├── Core
│ ├── CorsProxySpec.js
│ ├── JsonSpec.ts
│ ├── ResultSpec.ts
│ ├── TerriaErrorSpec.ts
│ ├── addedByUserSpec.ts
│ ├── createDiscreteTimesSpec.ts
│ ├── getPathSpec.ts
│ ├── markdownToHtmlSpec.ts
│ ├── scaleDenominatorToLevelSpec.ts
│ ├── sortedIndicesSpec.js
│ └── uriHelpersSpec.ts
├── Data
│ └── RegionMappingJsonSpec.js
├── Helpers
│ └── SimpleCatalogItem.ts
├── Language
│ └── languageHelpersSpec.ts
├── Map
│ ├── DragPointsSpec.js
│ ├── EarthGravityModel1996Spec.js
│ ├── PickedFeaturesSpec.ts
│ ├── ReprojectSpec.ts
│ ├── StyledHtmlSpec.tsx
│ └── featureDataToGeoJsonSpec.ts
├── ModelMixins
│ ├── CatalogMemberMixinSpec.ts
│ ├── Cesium3dTilesMixinSpec.ts
│ ├── ClippingPlanesMixinSpec.ts
│ ├── DiffableMixinSpec.ts
│ ├── DiscretelyTimeVaryingMixinSpec.ts
│ ├── ExportWebCoverageServiceMixinSpec.ts
│ ├── GltfMixinSpec.ts
│ ├── MinMaxLevelMixinSpec.ts
│ ├── SearchProviders
│ │ └── SearchProviderMixinSpec.ts
│ ├── TableMixinSpec.ts
│ ├── TileErrorHandlerMixinSpec.ts
│ └── TimeFilterMixinSpec.ts
├── Models
│ ├── AugmentedVirtualitySpec.js
│ ├── BaseMaps
│ │ └── BaseMapsModelSpec.ts
│ ├── BoxDrawingSpec.ts
│ ├── CameraViewSpec.js
│ ├── Catalog
│ │ ├── CatalogFunctions
│ │ │ ├── YDYRCatalogFunctionJobSpec.ts
│ │ │ └── YDYRCatalogFunctionSpec.ts
│ │ ├── CatalogGroupSpec.ts
│ │ ├── CatalogGroups
│ │ │ ├── OpenDataSoftCatalogGroupSpec.ts
│ │ │ ├── SocrataCatalogGroupSpec.ts
│ │ │ └── ThreddsCatalogGroupSpec.ts
│ │ ├── CatalogItems
│ │ │ ├── ApiTableCatalogItemSpec.ts
│ │ │ ├── AssImpCatalogItemSpec.ts
│ │ │ ├── BingMapsCatalogItemSpec.ts
│ │ │ ├── CartoMapV1CatalogItemSpec.ts
│ │ │ ├── CartoMapV3CatalogItemSpec.ts
│ │ │ ├── Cesium3DTilesCatalogItemSpec.ts
│ │ │ ├── CesiumTerrainCatalogItemSpec.js
│ │ │ ├── CesiumTerrainCatalogItemSpec.ts
│ │ │ ├── CogCatalogItemSpec.ts
│ │ │ ├── CompositeCatalogItemSpec.ts
│ │ │ ├── CsvCatalogItemTsSpec.ts
│ │ │ ├── CzmlCatalogItemSpec.ts
│ │ │ ├── GeoJsonCatalogItemSpec.ts
│ │ │ ├── GeoRssCatalogItemSpec.ts
│ │ │ ├── GltfCatalogItemSpec.ts
│ │ │ ├── GpxCatalogItemSpec.ts
│ │ │ ├── I3SCatalogItemSpec.ts
│ │ │ ├── ImageryLayerCatalogItemSpec.js
│ │ │ ├── IonImageryCatalogItemSpec.ts
│ │ │ ├── KmlCatalogItemSpec.js
│ │ │ ├── MapboxVectorTileCatalogItemSpec.ts
│ │ │ ├── OpenDataSoftCatalogItemSpec.ts
│ │ │ ├── OpenStreetMapCatalogItemSpec.ts
│ │ │ ├── SenapsCatalogItemSpec.ts
│ │ │ ├── SensorObservationServiceCatalogItemSpec.ts
│ │ │ ├── ShapefileCatalogItemSpec.ts
│ │ │ ├── SocrataMapViewCatalogItemSpec.ts
│ │ │ ├── TerrainCatalogItemSpec.js
│ │ │ └── UrlTemplateImageryCatalogItemSpec.ts
│ │ ├── CatalogMemberSpec.js
│ │ ├── CatalogReferences
│ │ │ ├── CatalogIndexReferenceSpec.ts
│ │ │ ├── SplitItemReferenceSpec.ts
│ │ │ └── TerriaReferenceSpec.ts
│ │ ├── Ckan
│ │ │ ├── CkanCatalogGroupSpec.ts
│ │ │ └── CkanItemReferenceSpec.ts
│ │ ├── Gtfs
│ │ │ └── GtfsCatalogItemSpec.ts
│ │ ├── Ows
│ │ │ ├── CswCatalogGroupSpec.ts
│ │ │ ├── WebFeatureServiceCatalogGroupSpec.ts
│ │ │ ├── WebFeatureServiceCatalogItemSpec.ts
│ │ │ ├── WebMapServiceCatalogGroupSpec.ts
│ │ │ ├── WebMapServiceCatalogItemSpec.ts
│ │ │ ├── WebMapTileServiceCatalogGroupSpec.ts
│ │ │ ├── WebMapTileServiceCatalogItemSpec.ts
│ │ │ ├── WebProcessingServiceCatalogFunctionSpec.ts
│ │ │ ├── WebProcessingServiceCatalogGroupSpec.ts
│ │ │ └── WebProcessingServiceCatalogJobSpec.ts
│ │ ├── SdmxJson
│ │ │ ├── SdmxJsonCatalogGroupSpec.ts
│ │ │ └── SdmxJsonCatalogItemSpec.ts
│ │ ├── allCatalogModelsSpec.ts
│ │ ├── createCombinedModelSpec.ts
│ │ ├── createUrlReferenceFromUrlSpec.ts
│ │ └── esri
│ │ │ ├── ArcGisCatalogGroupSpec.ts
│ │ │ ├── ArcGisFeatureServerCatalogGroupSpec.ts
│ │ │ ├── ArcGisFeatureServerCatalogItemSpec.ts
│ │ │ ├── ArcGisImageServerCatalogItemSpec.ts
│ │ │ ├── ArcGisMapServerCatalogGroupSpec.ts
│ │ │ ├── ArcGisMapServerCatalogItemSpec.ts
│ │ │ ├── ArcGisPortalCatatalogGroupSpec.ts
│ │ │ ├── ArcGisPortalReferenceItemSpec.ts
│ │ │ └── esriLineStyleSpec.ts
│ ├── CesiumSpec.ts
│ ├── Definition
│ │ ├── StratumOrderSpec.ts
│ │ ├── updateModelFromJsonSpec.ts
│ │ └── upsertModelFromJsonSpec.ts
│ ├── ErrorServiceSpec.ts
│ ├── FunctionParameters
│ │ ├── DateParameterSpec.ts
│ │ └── DateTimeParameterSpec.ts
│ ├── ItemSearchProviders
│ │ ├── CatalogIndexSpec.ts
│ │ ├── IndexedItemSearchProviderSpec.ts
│ │ └── NumericIndexSpec.ts
│ ├── LeafletSpec.js
│ ├── LeafletSpec.ts
│ ├── MagdaReferenceSpec.ts
│ ├── MapNavigation
│ │ └── MapNavigationModelSpec.ts
│ ├── MapboxMapCatalogItemSpec.ts
│ ├── MapboxStyleCatalogItemSpec.ts
│ ├── SearchProviders
│ │ ├── AustralianGazetteerSearchProviderSpec.ts
│ │ ├── BingMapsSearchProviderSpec.ts
│ │ ├── CesiumIonSearchProviderSpec.ts
│ │ └── LocationSearchProviderSpec.ts
│ ├── SelectableDimensionSpec.ts
│ ├── TerriaSpec.ts
│ ├── TimeSeriesStackSpec.js
│ ├── TimelineStackSpec.ts
│ ├── UserDrawingSpec.ts
│ ├── WorkbenchSpec.ts
│ ├── Workflows
│ │ └── SelectableDimensionWorkflowSpec.ts
│ ├── getAncestorsSpec.ts
│ ├── parseCustomHtmlToReactSpec.js
│ ├── parseCustomHtmlToReactSpec.tsx
│ ├── parseCustomMarkdownToReactSpec.js
│ └── parseCustomMarkdownToReactTsSpec.ts
├── ReactViewModels
│ ├── NotificationStateSpec.ts
│ └── ViewStateSpec.ts
├── ReactViews
│ ├── BottomDock
│ │ ├── BottomDockSpec.tsx
│ │ └── MapDataCountSpec.tsx
│ ├── ChartSpec.jsx
│ ├── ClipboardSpec.tsx
│ ├── Custom
│ │ └── Chart
│ │ │ ├── BottomDockChartSpec.tsx
│ │ │ ├── ChartCustomComponentSpec.tsx
│ │ │ ├── CsvChartCustomComponentSpec.tsx
│ │ │ ├── FeatureInfoPanelChartSpec.tsx
│ │ │ ├── MomentPointsChartSpec.tsx
│ │ │ └── PointOnMapSpec.tsx
│ ├── DataCatalog
│ │ ├── CatalogGroupSpec.tsx
│ │ └── DataCatalogItemSpec.tsx
│ ├── DataCatalogSpec.jsx
│ ├── DateTimePicker
│ │ └── DateTimePickerSpec.tsx
│ ├── DimensionSelectorSectionSpec.tsx
│ ├── DisclaimerSpec.tsx
│ ├── Drag
│ │ └── DragWrapperSpec.tsx
│ ├── FeatureInfoPanelSpec.tsx
│ ├── FeatureInfoSectionSpec.tsx
│ ├── Generic
│ │ └── PromptSpec.tsx
│ ├── Map
│ │ ├── Navigation
│ │ │ └── Compass
│ │ │ │ ├── CompassSpec.tsx
│ │ │ │ └── GyroscopeGuidanceSpec.tsx
│ │ └── Panels
│ │ │ ├── HelpPanel
│ │ │ ├── HelpPanelSpec.tsx
│ │ │ └── VideoGuideSpec.tsx
│ │ │ ├── LangPanel
│ │ │ └── LangPanelSpec.tsx
│ │ │ └── SharePanel
│ │ │ └── BuildShareLinkSpec.ts
│ ├── MeasureToolSpec.jsx
│ ├── Mobile
│ │ └── MobileHeaderSpec.tsx
│ ├── MoreShallowTools.ts
│ ├── Preview
│ │ └── DescriptionSpec.tsx
│ ├── ScalesSpec.jsx
│ ├── Search
│ │ ├── BreadcrumbsSpec.tsx
│ │ ├── SearchBoxAndResultsSpec.tsx
│ │ └── SearchBoxSpec.tsx
│ ├── ShortReportSpec.tsx
│ ├── SidePanel
│ │ └── BrandingSpec.tsx
│ ├── StandardUserInterface
│ │ └── TrainerBar
│ │ │ ├── TrainerBarSpec.tsx
│ │ │ └── test-help-content.js
│ ├── StandardUserInterfaceSpec.jsx
│ ├── Story
│ │ ├── StoryPanel
│ │ │ └── StoryBodySpec.tsx
│ │ └── StorySpec.jsx
│ ├── TimelineSpec.jsx
│ ├── ToolSpec.tsx
│ ├── Tools
│ │ ├── ItemSearchTool
│ │ │ ├── ItemSearchToolSpec.tsx
│ │ │ ├── MockSearchableItem.ts
│ │ │ ├── SearchFormSpec.tsx
│ │ │ └── SearchResultsSpec.tsx
│ │ └── PedestrianMode
│ │ │ └── MovementsControllerSpec.ts
│ ├── Tour
│ │ └── TourPortalSpec.tsx
│ ├── WarningBoxSpec.tsx
│ ├── WelcomeMessageSpec.tsx
│ ├── Workbench
│ │ ├── Controls
│ │ │ ├── ChartItemSelectorSpec.tsx
│ │ │ ├── DateTimePickerSpec.tsx
│ │ │ ├── DateTimeSelectorSectionSpec.tsx
│ │ │ ├── FilterSectionSpec.tsx
│ │ │ ├── IdealZoomSpec.tsx
│ │ │ ├── LegendSpec.tsx
│ │ │ └── ViewingControlsSpec.tsx
│ │ └── WorkbenchItemSpec.jsx
│ ├── Workflows
│ │ └── WorkflowPanelSpec.tsx
│ ├── renderAndSubscribeSpec.js
│ └── withContext.tsx
├── SpecHelpers.ts
├── SpecMain.ts
├── Table
│ ├── CsvSpec.ts
│ ├── TableColumnSpec.ts
│ └── TableStyleSpec.ts
├── Traits
│ ├── UrlTraitsSpec.ts
│ ├── objectArrayTraitSpec.ts
│ ├── objectTraitSpec.ts
│ └── traitsClassToModelClassSpec.ts
├── Types
│ ├── FlattenedFromTraitsSpec.ts
│ ├── ModelPropertiesFromTraitsSpec.ts
│ ├── StratumFromTraitsSpec.ts
│ ├── TraitsForTesting.ts
│ ├── TypeChecks.ts
│ ├── TypeConditionalsSpec.ts
│ └── TypeModifiersSpec.ts
├── Utility
│ ├── CustomMatchers.js
│ └── loadAndStubTextResources.js
├── ViewModels
│ ├── FeatureInfoPanelSpec.ts
│ ├── MapNavigation
│ │ └── MapToolbarSpec.ts
│ ├── TerriaViewerSpec.ts
│ ├── UploadDataTypesSpec.ts
│ └── ViewingControlsMenuSpec.ts
└── jasmine.d.ts
├── tsconfig-node.json
├── tsconfig.json
├── wwwroot
├── SpecRunner.html
├── cesium-ion-oauth2.html
├── data
│ ├── WW15MGH.DAC
│ ├── regionMapping.json
│ └── regionids
│ │ ├── region_map-ABARES_CODE_ABARES_Ag_Regions.json
│ │ ├── region_map-ABARES_NAME_ABARES_Ag_Regions.json
│ │ ├── region_map-ADD_2016_AUST_ADD_CODE16.json
│ │ ├── region_map-ADD_2016_AUST_ADD_NAME16.json
│ │ ├── region_map-AEC_FED_2017_AMLS_FED_ABB.json
│ │ ├── region_map-CED_CODE18_CED_2018.json
│ │ ├── region_map-CED_NAME18_CED_2018.json
│ │ ├── region_map-CommonwealthElectoralDivision_2007_ced_code_2007.json
│ │ ├── region_map-CommonwealthElectoralDivision_2007_ced_name_2007.json
│ │ ├── region_map-CommonwealthElectoralDivision_2010_ced_code_2010.json
│ │ ├── region_map-CommonwealthElectoralDivision_2010_ced_name_2010.json
│ │ ├── region_map-CommonwealthElectoralDivision_2013_ced_code_2013.json
│ │ ├── region_map-CommonwealthElectoralDivision_2013_ced_name_2013.json
│ │ ├── region_map-ELB_NAME_2019_ELB_2019.json
│ │ ├── region_map-ELB_NAME_2021_ELB_2021.json
│ │ ├── region_map-FID_ADD_2011_AUST_ADD_CODE.json
│ │ ├── region_map-FID_ADD_2011_AUST_ADD_NAME.json
│ │ ├── region_map-FID_AUS_2011_AUST_AUS_CODE.json
│ │ ├── region_map-FID_AUS_ESA_09_ESA_CODE.json
│ │ ├── region_map-FID_AUS_ESA_09_ESA_NAME.json
│ │ ├── region_map-FID_CED_2011_AUST_CED_CODE.json
│ │ ├── region_map-FID_CED_2011_AUST_CED_NAME.json
│ │ ├── region_map-FID_CED_2013_AUST_CED_CODE13.json
│ │ ├── region_map-FID_CED_2013_AUST_CED_NAME13.json
│ │ ├── region_map-FID_CED_2016_AUST_CED_CODE16.json
│ │ ├── region_map-FID_CED_2016_AUST_CED_NAME16.json
│ │ ├── region_map-FID_COM20111216_ELB_region_ELECT_DIV.json
│ │ ├── region_map-FID_COM20160509_ELB_DIV_ID.json
│ │ ├── region_map-FID_COM20160509_ELB_ELECT_DIV.json
│ │ ├── region_map-FID_GCCSA_2011_AUST_GCC_CODE11.json
│ │ ├── region_map-FID_GCCSA_2011_AUST_GCC_NAME11.json
│ │ ├── region_map-FID_IARE_2011_AUST_IA_CODE11.json
│ │ ├── region_map-FID_ILOC_2011_AUST_IL_CODE11.json
│ │ ├── region_map-FID_IREG_2011_AUST_IR_CODE11.json
│ │ ├── region_map-FID_LGA_2011_AUST_LGA_CODE11.json
│ │ ├── region_map-FID_LGA_2011_AUST_LGA_NAME11.json
│ │ ├── region_map-FID_LGA_2011_AUST_STE_NAME11.json
│ │ ├── region_map-FID_LGA_2013_AUST_LGA_CODE13.json
│ │ ├── region_map-FID_LGA_2013_AUST_LGA_NAME13.json
│ │ ├── region_map-FID_LGA_2013_AUST_STE_NAME11.json
│ │ ├── region_map-FID_LGA_2013_AUST_STE_NAME13.json
│ │ ├── region_map-FID_LGA_2015_AUST_LGA_CODE15.json
│ │ ├── region_map-FID_LGA_2015_AUST_LGA_NAME15.json
│ │ ├── region_map-FID_LGA_2015_AUST_STE_NAME15.json
│ │ ├── region_map-FID_NRMR_2011_AUST_NRMR_CODE.json
│ │ ├── region_map-FID_NRMR_2011_AUST_NRMR_NAME.json
│ │ ├── region_map-FID_PHN_boundaries_AUS_Sep2015_V5_PHN_Code.json
│ │ ├── region_map-FID_POA_2011_AUST_POA_CODE.json
│ │ ├── region_map-FID_RA_2011_AUST_RA_CODE11.json
│ │ ├── region_map-FID_SA1_2011_AUST_SA1_7DIG11.json
│ │ ├── region_map-FID_SA1_2011_AUST_SA1_MAIN11.json
│ │ ├── region_map-FID_SA2_2011_AUST_SA2_5DIG11.json
│ │ ├── region_map-FID_SA2_2011_AUST_SA2_MAIN11.json
│ │ ├── region_map-FID_SA2_2011_AUST_SA2_NAME11.json
│ │ ├── region_map-FID_SA3_2011_AUST_SA3_CODE11.json
│ │ ├── region_map-FID_SA3_2011_AUST_SA3_NAME11.json
│ │ ├── region_map-FID_SA4_2011_AUST_SA4_CODE11.json
│ │ ├── region_map-FID_SA4_2011_AUST_SA4_NAME11.json
│ │ ├── region_map-FID_SED_2011_AUST_SED_CODE.json
│ │ ├── region_map-FID_SED_2011_AUST_SED_NAME.json
│ │ ├── region_map-FID_SOSR_2011_AUST_SSR_CODE11.json
│ │ ├── region_map-FID_SOS_2011_AUST_SOS_CODE11.json
│ │ ├── region_map-FID_SSC_2011_AUST_SSC_CODE.json
│ │ ├── region_map-FID_SSC_2011_AUST_SSC_NAME.json
│ │ ├── region_map-FID_STE_2011_AUST_STE_CODE11.json
│ │ ├── region_map-FID_STE_2011_AUST_STE_NAME11.json
│ │ ├── region_map-FID_SUA_2011_AUST_SUA_CODE11.json
│ │ ├── region_map-FID_SUA_2011_AUST_SUA_NAME11.json
│ │ ├── region_map-FID_TM_WORLD_BORDERS_ISO2.json
│ │ ├── region_map-FID_TM_WORLD_BORDERS_ISO3.json
│ │ ├── region_map-FID_TM_WORLD_BORDERS_NAME.json
│ │ ├── region_map-FID_TR_2013_AUST_TR_CODE13.json
│ │ ├── region_map-FID_TR_2015_AUST_TR_CODE15.json
│ │ ├── region_map-FID_UCL_2011_AUST_UCL_CODE11.json
│ │ ├── region_map-GCCSA_2016_AUST_GCC_CODE16.json
│ │ ├── region_map-GCCSA_2016_AUST_GCC_NAME16.json
│ │ ├── region_map-GCCSA_2021_GCCSA_2021.json
│ │ ├── region_map-GCCSA_NAME_2021_GCCSA_2021.json
│ │ ├── region_map-LGA_2016_AUST_LGA_CODE16.json
│ │ ├── region_map-LGA_2017_AUST_LGA_CODE17.json
│ │ ├── region_map-LGA_2017_AUST_LGA_NAME17.json
│ │ ├── region_map-LGA_2018_AUST_LGA_CODE18.json
│ │ ├── region_map-LGA_2018_AUST_LGA_NAME18.json
│ │ ├── region_map-LGA_2019_LGA_2019.json
│ │ ├── region_map-LGA_2021_LGA_2021.json
│ │ ├── region_map-NZ_AU2017_HD_Clipped_AU2017.json
│ │ ├── region_map-NZ_AU2017_HD_Clipped_AU2017_NAM.json
│ │ ├── region_map-NZ_MB2017_HD_Clipped_MB2017.json
│ │ ├── region_map-POA_2016_AUST_POA_CODE16.json
│ │ ├── region_map-RRA_Name_Regional_Recovery_Areas.json
│ │ ├── region_map-SA1_2016_AUST_SA1_7DIG16.json
│ │ ├── region_map-SA1_2016_AUST_SA1_MAIN16.json
│ │ ├── region_map-SA1_2021_SA1_2021.json
│ │ ├── region_map-SA2_2016_AUST_SA2_5DIG16.json
│ │ ├── region_map-SA2_2016_AUST_SA2_MAIN16.json
│ │ ├── region_map-SA2_2016_AUST_SA2_NAME16.json
│ │ ├── region_map-SA2_2021_SA2_2021.json
│ │ ├── region_map-SA2_NAME_2021_SA2_2021.json
│ │ ├── region_map-SA3_2016_AUST_SA3_CODE16.json
│ │ ├── region_map-SA3_2016_AUST_SA3_NAME16.json
│ │ ├── region_map-SA3_2021_SA3_2021.json
│ │ ├── region_map-SA3_NAME_2021_SA3_2021.json
│ │ ├── region_map-SA4_2016_AUST_SA4_CODE16.json
│ │ ├── region_map-SA4_2016_AUST_SA4_NAME16.json
│ │ ├── region_map-SA4_2021_SA4_2021.json
│ │ ├── region_map-SA4_NAME_2021_SA4_2021.json
│ │ ├── region_map-SED_CODE16_SED_2016.json
│ │ ├── region_map-SED_CODE18_SED_2018.json
│ │ ├── region_map-SED_NAME16_SED_2016.json
│ │ ├── region_map-SED_NAME18_SED_2018.json
│ │ ├── region_map-SSC_2016_AUST_SSC_CODE16.json
│ │ ├── region_map-SSC_2016_AUST_SSC_NAME16.json
│ │ ├── region_map-STE_2016_AUST_STE_CODE16.json
│ │ ├── region_map-STE_2016_AUST_STE_NAME16.json
│ │ ├── region_map-fid_asgc06_cd_CD_CODE06.json
│ │ ├── region_map-fid_asgc06_sla_SLA_5DIGIT.json
│ │ ├── region_map-fid_asgc06_sla_SLA_CODE06.json
│ │ ├── region_map-fid_asgc06_sla_SLA_NAME06.json
│ │ ├── region_map-ibra7_regions_REG_CODE_7.json
│ │ ├── region_map-ibra7_regions_REG_NAME_7.json
│ │ ├── region_map-ibra7_subregions_SUB_CODE_7.json
│ │ └── region_map-ibra7_subregions_SUB_NAME_7.json
├── images
│ ├── Australia.png
│ ├── NM-LocationTarget.svg
│ ├── TimelineIcons.png
│ ├── ajax-loader.gif
│ ├── ar-realign-guide.gif
│ ├── australian-topo.png
│ ├── bing-aerial-labels-wide-low-quality.jpg
│ ├── bing-aerial-labels-wide.png
│ ├── bing-aerial-labels.png
│ ├── bing-aerial.png
│ ├── bing-maps-roads.png
│ ├── blank.png
│ ├── compass-rotation-marker.svg
│ ├── data-stories-getting-started.jpg
│ ├── difference-pin.png
│ ├── feature.gif
│ ├── google_on_non_white_hdpi.png
│ ├── guides
│ │ ├── satellite-feature.jpg
│ │ ├── satellite-location.jpg
│ │ ├── satellite-styles.jpg
│ │ ├── satellite-time.jpg
│ │ └── satellite-zoom.jpg
│ ├── height-controls.svg
│ ├── hydro.png
│ ├── icons
│ │ ├── about.svg
│ │ ├── accordion-close.svg
│ │ ├── accordion-open.svg
│ │ ├── add.svg
│ │ ├── ar-hover.svg
│ │ ├── ar-hover0.svg
│ │ ├── ar-hover1.svg
│ │ ├── ar-hover2.svg
│ │ ├── ar-off.svg
│ │ ├── ar-on.svg
│ │ ├── ar-realign.svg
│ │ ├── ar-reset-alignment.svg
│ │ ├── arrow-down.svg
│ │ ├── back-to-start.svg
│ │ ├── backward.svg
│ │ ├── bar-chart.svg
│ │ ├── bulb.svg
│ │ ├── calendar.svg
│ │ ├── calendar2.svg
│ │ ├── cancel.svg
│ │ ├── checkbox-checked.svg
│ │ ├── checkbox-indeterminate.svg
│ │ ├── checkbox-off.svg
│ │ ├── checkbox-on.svg
│ │ ├── checkbox.svg
│ │ ├── circle-empty.svg
│ │ ├── circlef-full.svg
│ │ ├── close-circle-20.svg
│ │ ├── close-circle.svg
│ │ ├── close-light.svg
│ │ ├── close-tool.svg
│ │ ├── close.svg
│ │ ├── closed.svg
│ │ ├── collapse.svg
│ │ ├── compare-both-panels.svg
│ │ ├── compare-left-panel.svg
│ │ ├── compare-right-panel.svg
│ │ ├── compare.svg
│ │ ├── compass-inner-arrows.svg
│ │ ├── compass-inner-background.svg
│ │ ├── compass-inner.svg
│ │ ├── compass-outer-enlarged.svg
│ │ ├── compass-outer-skeleton.svg
│ │ ├── compass-outer.svg
│ │ ├── compass-rotation-marker.svg
│ │ ├── controls.svg
│ │ ├── data.svg
│ │ ├── dataCatalog.svg
│ │ ├── date-picker-icon.svg
│ │ ├── decrease.svg
│ │ ├── difference.svg
│ │ ├── disable.svg
│ │ ├── dismiss-20.svg
│ │ ├── download-new.svg
│ │ ├── download.svg
│ │ ├── drag-drop.svg
│ │ ├── edit-story.svg
│ │ ├── editor.svg
│ │ ├── enable.svg
│ │ ├── expand.svg
│ │ ├── expandAll.svg
│ │ ├── external-link.svg
│ │ ├── eye.svg
│ │ ├── feedback.svg
│ │ ├── file.svg
│ │ ├── folder-open.svg
│ │ ├── folder.svg
│ │ ├── forward.svg
│ │ ├── gallery.svg
│ │ ├── geolocation.svg
│ │ ├── getting-started-icon.svg
│ │ ├── globe.svg
│ │ ├── help-2.svg
│ │ ├── help-thick.svg
│ │ ├── help.svg
│ │ ├── increase.svg
│ │ ├── info.svg
│ │ ├── interact.svg
│ │ ├── left-small.svg
│ │ ├── left.svg
│ │ ├── line-chart.svg
│ │ ├── link.svg
│ │ ├── loader.svg
│ │ ├── localfile.svg
│ │ ├── location-thick.svg
│ │ ├── location.svg
│ │ ├── location2.svg
│ │ ├── lock.svg
│ │ ├── loop.svg
│ │ ├── map-data-active.svg
│ │ ├── map-data-inactive.svg
│ │ ├── map.svg
│ │ ├── maximize.svg
│ │ ├── measure.svg
│ │ ├── menu-dotted.svg
│ │ ├── menu.svg
│ │ ├── minimize.svg
│ │ ├── minus.svg
│ │ ├── more-items.svg
│ │ ├── next.svg
│ │ ├── one-two-three.svg
│ │ ├── opened.svg
│ │ ├── pause.svg
│ │ ├── pedestrian.svg
│ │ ├── play-inverted.svg
│ │ ├── play-story.svg
│ │ ├── play.svg
│ │ ├── plus-list-20.svg
│ │ ├── plus.svg
│ │ ├── previous.svg
│ │ ├── pulling-away-layers-icon.svg
│ │ ├── questionmark.svg
│ │ ├── radio-off.svg
│ │ ├── radio-on.svg
│ │ ├── recapture.svg
│ │ ├── refresh.svg
│ │ ├── remotefile.svg
│ │ ├── remove.svg
│ │ ├── revert.svg
│ │ ├── right-small.svg
│ │ ├── right.svg
│ │ ├── right2.svg
│ │ ├── satellite.svg
│ │ ├── search.svg
│ │ ├── selected.svg
│ │ ├── settings.svg
│ │ ├── share.svg
│ │ ├── show-less.svg
│ │ ├── show-more.svg
│ │ ├── sphere.svg
│ │ ├── splitter.svg
│ │ ├── splitterOff.svg
│ │ ├── splitterOn.svg
│ │ ├── story.svg
│ │ ├── switch-off.svg
│ │ ├── switch-on.svg
│ │ ├── sydney_bus_icon_smaller.png
│ │ ├── take-the-tour-icon.svg
│ │ ├── timeline.svg
│ │ ├── trashcan.svg
│ │ ├── upload-thin.svg
│ │ ├── upload.svg
│ │ ├── user.svg
│ │ ├── video.svg
│ │ ├── view-story.svg
│ │ ├── zoom-in.svg
│ │ ├── zoom-out.svg
│ │ └── zoom-reset.svg
│ ├── map-paperPin.svg
│ ├── map-pin.png
│ ├── map-pin.svg
│ ├── minimap-nav.svg
│ ├── mouse-control.svg
│ ├── natural-earth.png
│ ├── openstreetmap.png
│ ├── panel-bg.png
│ ├── preview.svg
│ ├── terria-watermark.svg
│ ├── time-series-guide.jpg
│ ├── wasd.svg
│ └── welcome-bg.jpg
├── index.html
├── languages
│ ├── ar
│ │ └── translation.json
│ ├── ca
│ │ └── translation.json
│ ├── cs
│ │ └── translation.json
│ ├── de
│ │ └── translation.json
│ ├── el
│ │ └── translation.json
│ ├── en
│ │ └── translation.json
│ ├── es
│ │ └── translation.json
│ ├── eu
│ │ └── translation.json
│ ├── fr
│ │ └── translation.json
│ ├── id
│ │ └── translation.json
│ ├── it
│ │ └── translation.json
│ ├── ja
│ │ └── translation.json
│ ├── km
│ │ └── translation.json
│ ├── ko
│ │ └── translation.json
│ ├── lo
│ │ └── translation.json
│ ├── lzh
│ │ └── translation.json
│ ├── my
│ │ └── translation.json
│ ├── nb_NO
│ │ └── translation.json
│ ├── pt_BR
│ │ └── translation.json
│ ├── ru
│ │ └── translation.json
│ ├── si
│ │ └── translation.json
│ ├── sw
│ │ └── translation.json
│ ├── ta
│ │ └── translation.json
│ ├── th
│ │ └── translation.json
│ ├── tr
│ │ └── translation.json
│ ├── vi
│ │ └── translation.json
│ └── zh_Hans
│ │ └── translation.json
├── models
│ └── prism-train.glb
├── test
│ ├── ArcGisFeatureServer
│ │ ├── Parks
│ │ │ ├── 3.json
│ │ │ └── layer.json
│ │ ├── Redlands_Emergency_Vehicles
│ │ │ └── featureServer.json
│ │ ├── Tiled
│ │ │ ├── act-veg-map.json
│ │ │ ├── feature-pick.geojson
│ │ │ └── test-tile.pbf
│ │ ├── Water_Network
│ │ │ ├── 2.json
│ │ │ └── layer.json
│ │ ├── Water_Network_Multi
│ │ │ ├── 2.json
│ │ │ ├── layer.json
│ │ │ ├── layerB.json
│ │ │ └── layerC.json
│ │ ├── Wildfire
│ │ │ └── 1.json
│ │ └── styles
│ │ │ ├── layer.json
│ │ │ └── lines.json
│ ├── ArcGisImageServer
│ │ ├── rasterFns
│ │ │ ├── imageserver.json
│ │ │ └── legend.json
│ │ ├── tile
│ │ │ ├── identify.json
│ │ │ ├── imageserver.json
│ │ │ └── legend.json
│ │ └── time
│ │ │ ├── identify.json
│ │ │ ├── imageserver.json
│ │ │ └── legend.json
│ ├── ArcGisMapServer
│ │ ├── Dynamic_National_Map_Hydrography_and_Marine
│ │ │ ├── 31.json
│ │ │ ├── 32.json
│ │ │ ├── layers.json
│ │ │ ├── legend.json
│ │ │ ├── mapserver.json
│ │ │ └── token.json
│ │ ├── LayerWithTiles
│ │ │ ├── layers.json
│ │ │ ├── legend.json
│ │ │ └── mapserver.json
│ │ ├── Redlands_Emergency_Vehicles
│ │ │ ├── 17.json
│ │ │ └── mapServer.json
│ │ ├── Residential_Dwelling_Density
│ │ │ └── mapServer.json
│ │ ├── SingleFusedMapCache
│ │ │ ├── layers.json
│ │ │ ├── legend.json
│ │ │ └── mapserver.json
│ │ └── time-enabled.json
│ ├── ArcGisPortal
│ │ ├── group-2dfa6cfea7774d9585700059e1fc8219-items-search.json
│ │ ├── group-c86af18fa4a74336b1feee2a0ee4883d-items-search.json
│ │ ├── group-search-results.json
│ │ ├── item-data.json
│ │ ├── item.json
│ │ ├── search-result.json
│ │ └── user-info.json
│ ├── ArcGisServer
│ │ └── sampleserver6
│ │ │ ├── 911CallsHotspotMS.json
│ │ │ ├── AGP.json
│ │ │ ├── CensusMS.json
│ │ │ ├── CommercialDamageAssessmentFS.json
│ │ │ ├── CommercialDamageAssessmentMS.json
│ │ │ ├── CommunityAddressingFS.json
│ │ │ ├── CommunityAddressingMS.json
│ │ │ ├── Elevation.json
│ │ │ └── services.json
│ ├── AssImp
│ │ ├── README.md
│ │ ├── cube_texture.png
│ │ ├── cube_with_materials.mtl
│ │ ├── cube_with_materials.obj
│ │ └── zip-test.zip
│ ├── CKAN
│ │ ├── search-result.json
│ │ ├── taxation-statistics-package.json
│ │ ├── taxation-statistics-wms-resource.json
│ │ ├── vic-wms-layer-resource.json
│ │ └── wms-no-layer-resource.json
│ ├── CZML
│ │ ├── Vehicle.czml
│ │ ├── glowing_polyline.czml
│ │ ├── simple.czml
│ │ ├── timeVaryingDescription.czml
│ │ ├── verysimple.czml
│ │ ├── withProperties.czml
│ │ └── withTimeVaryingProperties.czml
│ ├── CartoMapV3
│ │ ├── query-geojson-response.json
│ │ ├── query-response.json
│ │ ├── table-geojson-response.json
│ │ └── table-response.json
│ ├── Cesium3DTiles
│ │ └── tileset.json
│ ├── GeoJSON
│ │ ├── EsriEnvelope.geojson
│ │ ├── api-list.geojson
│ │ ├── api.geojson
│ │ ├── bike_racks.geojson
│ │ ├── bike_racks.zip
│ │ ├── cemeteries.geojson
│ │ ├── cemeteries.zip
│ │ ├── empty-geoms.geojson
│ │ ├── gme.geojson
│ │ ├── gme.zip
│ │ ├── height.geojson
│ │ ├── multipoint.geojson
│ │ ├── multipolygon.geojson
│ │ ├── points.geojson
│ │ ├── polygon.geojson
│ │ ├── polygon.topojson
│ │ ├── polyline.geojson
│ │ ├── test-descriptions.geojson
│ │ ├── test-styles.geojson
│ │ ├── time-based-automatic-styles.geojson
│ │ ├── time-based.geojson
│ │ └── two_features.geojson
│ ├── GeoRSS
│ │ ├── atom
│ │ │ ├── atom.xml
│ │ │ ├── badItem.xml
│ │ │ ├── box.xml
│ │ │ ├── combineGeometry.xml
│ │ │ ├── gmlLineString.xml
│ │ │ ├── gmlPoint.xml
│ │ │ ├── gmlPolygon.xml
│ │ │ ├── line.xml
│ │ │ ├── point.xml
│ │ │ ├── polygon.xml
│ │ │ └── w3cPoint.xml
│ │ ├── geoRssName.xml
│ │ ├── geoRssWithoutName.xml
│ │ └── rss2
│ │ │ ├── badItem.xml
│ │ │ ├── box.xml
│ │ │ ├── combineGeometry.xml
│ │ │ ├── gmlLineString.xml
│ │ │ ├── gmlPoint.xml
│ │ │ ├── gmlPolygon.xml
│ │ │ ├── line.xml
│ │ │ ├── point.xml
│ │ │ ├── polygon.xml
│ │ │ ├── rss2.xml
│ │ │ └── w3cPoint.xml
│ ├── GetCapabilities
│ │ ├── BOM.xml
│ │ ├── GeographicOnly.xml
│ │ └── WebMercatorAndGeographic.xml
│ ├── IndexedItemSearchProvider
│ │ ├── 0.csv
│ │ ├── 1.csv
│ │ └── resultsData.csv
│ ├── JSON-api
│ │ ├── position_api_response.json
│ │ └── value_api_response.json
│ ├── KML
│ │ ├── vic_police.kml
│ │ └── vic_police.kmz
│ ├── Magda
│ │ ├── map-config-basic.json
│ │ ├── map-config-dereferenced-new.json
│ │ ├── map-config-dereferenced.json
│ │ ├── map-config-inline-init.json
│ │ ├── map-config-v7.json
│ │ └── shareKeys
│ │ │ ├── 12f26f07-f39e-4753-979d-2de01af54bd1.json
│ │ │ ├── 6b24aa39-1aa7-48d1-b6a6-9e755aff4476.json
│ │ │ ├── bfc69476-1c85-4208-9046-4f736bab9b8e.json
│ │ │ ├── map-config-example-new.json
│ │ │ └── map-config-example-old.json
│ ├── SDMX-JSON
│ │ ├── agency-scheme.json
│ │ ├── category-scheme.json
│ │ ├── data-noregion.csv
│ │ ├── data-region-time.csv
│ │ ├── data-region.csv
│ │ ├── data-single-region-time.csv
│ │ ├── dataflow-noregion.json
│ │ ├── dataflow-region-time.json
│ │ ├── dataflow-region.json
│ │ └── old
│ │ │ ├── data-as-obs-repeated-dim.json
│ │ │ ├── data-as-observations.json
│ │ │ ├── data-foo-2013.json
│ │ │ ├── data-foo-BD2-2011_2013.json
│ │ │ ├── data-foo-BD2-2013.json
│ │ │ ├── data-foo2-2013.json
│ │ │ ├── data-no-concepts-2013.json
│ │ │ ├── data-nonspatial.json
│ │ │ ├── data-ste-no-year.json
│ │ │ ├── dataflow-foo.json
│ │ │ └── regionMappingSdmx.json
│ ├── Senaps
│ │ ├── locations.json
│ │ ├── locations_filtered.json
│ │ ├── streams.json
│ │ └── streams_filtered.json
│ ├── Shapefile
│ │ ├── bike_racks.zip
│ │ └── cemeteries.zip
│ ├── Socrata
│ │ ├── facets.json
│ │ ├── search.json
│ │ └── view.json
│ ├── Terria
│ │ └── applyInitData
│ │ │ ├── FeatureServer
│ │ │ ├── esri_feature_server.json
│ │ │ └── esri_feature_server_no_tiling.json
│ │ │ ├── MagdaReference
│ │ │ ├── group_record.json
│ │ │ └── wms_record.json
│ │ │ ├── MapServer
│ │ │ ├── mapServerSimpleGroup.json
│ │ │ └── mapServerWithError.json
│ │ │ └── WmsServer
│ │ │ └── capabilities.xml
│ ├── WCS
│ │ └── DescribeCoverage.xml
│ ├── WFS
│ │ ├── getCapabilities.xml
│ │ └── getWithFilter.xml
│ ├── WMS
│ │ ├── bad_datetime.xml
│ │ ├── colorscalerange.xml
│ │ ├── comma_sep_datetimes.xml
│ │ ├── comma_sep_datetimes_inherited.xml
│ │ ├── comms_geoserver.xml
│ │ ├── multiple_metadata_url.xml
│ │ ├── multiple_style_legend_url.xml
│ │ ├── ncwms2_service.xml
│ │ ├── ncwms_service.xml
│ │ ├── no_legend_url.xml
│ │ ├── period_date_notime.xml
│ │ ├── period_datetimes.xml
│ │ ├── period_datetimes_crossing_leap_second.xml
│ │ ├── period_datetimes_many_intervals.xml
│ │ ├── period_datetimes_multiple_units.xml
│ │ ├── single_metadata_url.xml
│ │ ├── single_period_datetimes.xml
│ │ ├── single_style_legend_url.xml
│ │ ├── single_style_multiple_legend_urls.xml
│ │ ├── styles_and_dimensions.xml
│ │ ├── wms_1_1_1.xml
│ │ ├── wms_crs.xml
│ │ ├── wms_esri.xml
│ │ ├── wms_esri_2.xml
│ │ └── wms_nested_groups.xml
│ ├── WMTS
│ │ └── with_tilematrix.xml
│ ├── WPS
│ │ ├── ExecuteResponse.xml
│ │ ├── FailedExecuteResponse.xml
│ │ ├── GetCapabilities.xml
│ │ ├── PendingExecuteResponse.xml
│ │ └── ProcessDescriptions.xml
│ ├── cogs
│ │ ├── 32756.tif
│ │ └── 4326.tif
│ ├── csv
│ │ ├── 100addresses.csv
│ │ ├── 3000s.csv
│ │ ├── 55k-SA1s.csv
│ │ ├── CED_2018_CED_CODE18.csv
│ │ ├── CED_2018_CED_NAME18.csv
│ │ ├── ELB_2019_ELB_NAME_2019.csv
│ │ ├── RDA_LGA_2015_16.csv
│ │ ├── SED_2016_SED_CODE16.csv
│ │ ├── SED_2016_SED_NAME16.csv
│ │ ├── SED_2018_SED_CODE18.csv
│ │ ├── SED_2018_SED_NAME18.csv
│ │ ├── address_to_lat_long.csv
│ │ ├── bad-dates.csv
│ │ ├── blank_line.csv
│ │ ├── dupe_lgas.csv
│ │ ├── gccsa.csv
│ │ ├── iare.csv
│ │ ├── iloc.csv
│ │ ├── ireg.csv
│ │ ├── lat_lon-missing_val.csv
│ │ ├── lat_lon.csv
│ │ ├── lat_lon_badvalue.csv
│ │ ├── lat_lon_blankvalue.csv
│ │ ├── lat_lon_date_value.csv
│ │ ├── lat_lon_enum.csv
│ │ ├── lat_lon_enum_date_id.csv
│ │ ├── lat_lon_enum_date_id2.csv
│ │ ├── lat_lon_enum_date_id_update.csv
│ │ ├── lat_lon_enum_date_id_with_regions.csv
│ │ ├── lat_lon_enum_date_year.csv
│ │ ├── lat_lon_enum_lots.csv
│ │ ├── lat_lon_enum_lots2.csv
│ │ ├── lat_lon_enum_moving_date_unsorted.csv
│ │ ├── lat_lon_enum_postcode.csv
│ │ ├── lat_lon_enum_val.csv
│ │ ├── lat_lon_name_url_col.csv
│ │ ├── lat_lon_name_value.csv
│ │ ├── lat_lon_novals.csv
│ │ ├── lat_lon_nullvalue.csv
│ │ ├── lat_lon_timeseries.csv
│ │ ├── lat_lon_val.csv
│ │ ├── lat_lon_val_with_duplicate_row.csv
│ │ ├── lat_long_enum_moving_date.csv
│ │ ├── legend-decimal-places.csv
│ │ ├── lga_code_2011.csv
│ │ ├── lga_code_2015.csv
│ │ ├── lga_elevation_date.csv
│ │ ├── lga_fuzzy_val.csv
│ │ ├── lga_state_disambig.csv
│ │ ├── lga_value_enum.csv
│ │ ├── lga_value_enum2.csv
│ │ ├── mini_ced.xml
│ │ ├── minimal.csv
│ │ ├── missingNumberFormatting.csv
│ │ ├── org_lat_lon_missing.csv
│ │ ├── parking-sensor-data.csv
│ │ ├── phn.csv
│ │ ├── postcode_date_value.csv
│ │ ├── postcode_date_value_missing_date.csv
│ │ ├── postcode_enum.csv
│ │ ├── postcode_enum_lots.csv
│ │ ├── postcode_enum_lots2.csv
│ │ ├── postcode_lga_val_enum.csv
│ │ ├── postcode_novals.csv
│ │ ├── postcode_val_enum.csv
│ │ ├── postcode_val_enum2.csv
│ │ ├── postcode_val_enum_start_end.csv
│ │ ├── postcode_val_enum_time.csv
│ │ ├── postcode_year_value.csv
│ │ ├── postcodetest.csv
│ │ ├── ra.csv
│ │ ├── regionMapping.json
│ │ ├── regionMappingDupeIds.json
│ │ ├── sample_aremi_available_distribution_capacity.csv
│ │ ├── sample_aremi_peak_day_capacity.csv
│ │ ├── sos.csv
│ │ ├── sosr.csv
│ │ ├── sua.csv
│ │ ├── sua_name.csv
│ │ ├── tr.csv
│ │ ├── ucl.csv
│ │ ├── val_enum_postcode.csv
│ │ └── youth-unemployment-rate-2018.csv
│ ├── csv_nongeo
│ │ ├── A_1d.csv
│ │ ├── A_2d.csv
│ │ ├── A_5d.csv
│ │ ├── B_1d.csv
│ │ ├── B_2d.csv
│ │ ├── B_5d.csv
│ │ ├── C_1d.csv
│ │ ├── C_2d.csv
│ │ ├── C_5d.csv
│ │ ├── time_series.csv
│ │ ├── time_series2.csv
│ │ ├── x_height.csv
│ │ ├── xy.csv
│ │ └── xy2.csv
│ ├── csw
│ │ ├── Example1GetDomain.xml
│ │ ├── Example1GetRecordsPage1.xml
│ │ ├── Example1GetRecordsPage2.xml
│ │ ├── Example1GetRecordsPage3.xml
│ │ └── ReferencesWithoutProtocol.xml
│ ├── gltf
│ │ └── Cesium_Air.glb
│ ├── gpx
│ │ └── example.gpx
│ ├── gtfs
│ │ ├── bus.png
│ │ └── vic-metro-vehicle-positions.pbf
│ ├── init
│ │ ├── arcgis.json
│ │ ├── bom.json
│ │ ├── cesium3dtiles.json
│ │ ├── charts.json
│ │ ├── composite.json
│ │ ├── configProxy.json
│ │ ├── csv.json
│ │ ├── csw.json
│ │ ├── czml-with-template-0.json
│ │ ├── czml-with-template-1.json
│ │ ├── czml-with-template.json
│ │ ├── czml.json
│ │ ├── geojson-with-template.json
│ │ ├── gltf.json
│ │ ├── ion.json
│ │ ├── openEnablePopups.json
│ │ ├── polling.json
│ │ ├── sdmx-abs.json
│ │ ├── sdmx.json
│ │ ├── serverconfig.json
│ │ ├── sos.json
│ │ ├── terrain.json
│ │ ├── terriaAnalytics.json
│ │ ├── test-dateFormat.json
│ │ ├── test-tablestyle.json
│ │ ├── timeseries.json
│ │ ├── wfs.json
│ │ ├── wms-v8.json
│ │ ├── wms.json
│ │ └── wps.json
│ ├── mvt
│ │ ├── nsw-lga-mvt
│ │ │ ├── 9
│ │ │ │ └── 470
│ │ │ │ │ └── 307.pbf
│ │ │ ├── 10
│ │ │ │ ├── 941
│ │ │ │ │ ├── 614.pbf
│ │ │ │ │ └── 615.pbf
│ │ │ │ └── 942
│ │ │ │ │ ├── 614.pbf
│ │ │ │ │ └── 615.pbf
│ │ │ └── 11
│ │ │ │ └── 1883
│ │ │ │ └── 1230.pbf
│ │ └── single-layer-mvt
│ │ │ ├── 0
│ │ │ └── 0
│ │ │ │ └── 0.pbf
│ │ │ ├── 1
│ │ │ └── 1
│ │ │ │ └── 1.pbf
│ │ │ ├── 2
│ │ │ └── 3
│ │ │ │ └── 2.pbf
│ │ │ ├── 3
│ │ │ ├── 6
│ │ │ │ └── 4.pbf
│ │ │ └── 7
│ │ │ │ ├── 4.pbf
│ │ │ │ └── 5.pbf
│ │ │ ├── 4
│ │ │ ├── 12
│ │ │ │ └── 9.pbf
│ │ │ ├── 13
│ │ │ │ ├── 8.pbf
│ │ │ │ └── 9.pbf
│ │ │ └── 14
│ │ │ │ ├── 10.pbf
│ │ │ │ ├── 8.pbf
│ │ │ │ └── 9.pbf
│ │ │ └── metadata.json
│ ├── ods
│ │ ├── datasets-over-100-1.json
│ │ ├── datasets-over-100-2.json
│ │ ├── datasets.json
│ │ ├── facets.json
│ │ ├── weather-station-100.json
│ │ ├── weather-station-dataset.json
│ │ └── weather-station-groupby.json
│ ├── regionMapping
│ │ ├── additionalRegion.json
│ │ └── region_map-SOME_OTHER_REGION.json
│ ├── sos
│ │ ├── GetFeatureOfInterestRequest.xml
│ │ ├── GetFeatureOfInterestResponse.xml
│ │ ├── GetFeatureOfInterestResponse_Invalid.xml
│ │ ├── GetFeatureOfInterestResponse_NoMembers.xml
│ │ ├── GetObservationResponse_Daily.xml
│ │ └── GetObservationResponse_Yearly.xml
│ ├── stories
│ │ └── TerriaJS App
│ │ │ └── my-story
│ └── thredds
│ │ ├── catalog.xml
│ │ ├── sub-catalog-a
│ │ └── catalog.xml
│ │ └── sub-catalog-b
│ │ ├── c_from_b.xml
│ │ └── catalog.xml
└── third_party
│ ├── SpecRunner.html
│ └── jasmine-2.99.0
│ ├── MIT.LICENSE
│ ├── boot.js
│ ├── console.js
│ ├── jasmine-html.js
│ ├── jasmine.css
│ ├── jasmine.js
│ └── jasmine_favicon.png
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "corejs": 3,
7 | "useBuiltIns": "usage"
8 | }
9 | ],
10 | ["@babel/preset-react", { "runtime": "automatic" }],
11 | ["@babel/preset-typescript", { "allowNamespaces": true }]
12 | ],
13 | "plugins": [
14 | ["@babel/plugin-proposal-decorators", { "legacy": true }],
15 | "babel-plugin-styled-components"
16 | ],
17 | "assumptions": {
18 | "setPublicClassFields": false
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
14 | [doc/**.md]
15 | # mkdocs requires 4 spaces. With 2 space indents, nested lists do not work
16 | indent_size = 4
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | CHANGES.md merge=union
2 | *.enc binary
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Update .prettierignore whenever this file changes
2 | docs/
3 | node_modules/
4 | .idea/
5 | build/
6 | error.log
7 | output.log
8 | npm-debug.log
9 | .DS_Store
10 | terria.lib.js
11 | terriajs-server.log
12 | terriajs.pid
13 | /wwwroot/doc/
14 | /wwwroot/schema/
15 | /wwwroot/user-guide/
16 | /coverage/
17 | package-lock.json
18 | *.swp
19 | dist
20 | .history/
21 | ts-out/
22 |
23 | # Catalog index generation files
24 | catalog-index*.json
25 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/.gitmodules
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npx pretty-quick --staged
5 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .history/
2 | Cesium/Tools/
3 | Cesium/ThirdParty/
4 | Cesium/Apps/
5 | Cesium/Documentation/
6 | Cesium/launches/
7 | Cesium/Specs/
8 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v20.18.3
2 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "none",
3 | "tabWidth": 2
4 | }
5 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["inlang.vs-code-extension"]
3 | }
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules/typescript/lib"
3 | }
4 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=733558
3 | // for the documentation about the tasks.json format
4 | "version": "2.0.0",
5 | "tasks": [
6 | {
7 | "type": "npm",
8 | "script": "build-for-node",
9 | "problemMatcher": ["$tsc"],
10 | "group": "build"
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/architecture/0000-record-architecture-decisions.md:
--------------------------------------------------------------------------------
1 | # 0. Record architecture decisions
2 |
3 | Date: 2019-07-18
4 |
5 | ## Status
6 |
7 | Accepted
8 |
9 | ## Context
10 |
11 | We need to record the architectural decisions made on this project.
12 |
13 | ## Decision
14 |
15 | We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions).
16 |
17 | ## Consequences
18 |
19 | We will have to write docs. 😱
20 |
21 | See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools).
22 |
--------------------------------------------------------------------------------
/architecture/imgs/weblate_process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/architecture/imgs/weblate_process.png
--------------------------------------------------------------------------------
/buildprocess/.eslintrc.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | module.exports = {
4 | env: {
5 | browser: false,
6 | node: true
7 | },
8 | rules: {
9 | "no-sync": 0
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/buildprocess/ci-google-cloud-key.json.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/buildprocess/ci-google-cloud-key.json.enc
--------------------------------------------------------------------------------
/buildprocess/jsdoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "tags": {
3 | "allowUnknownTags": true,
4 | "dictionaries": ["jsdoc", "closure"]
5 | },
6 | "source": {
7 | "includePattern": ".+\\.((js(doc)?))$",
8 | "excludePattern": "((^|\\/|\\\\)_)|(^ThirdParty/)"
9 | },
10 | "plugins": ["plugins/markdown"],
11 | "opts": {
12 | "recurse": true,
13 | "encoding": "utf8",
14 | "destination": "./wwwroot/doc/reference/"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/buildprocess/karma-firefox.conf.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var createKarmaBaseConfig = require("./createKarmaBaseConfig");
4 |
5 | module.exports = function (config) {
6 | var options = Object.assign({}, createKarmaBaseConfig(config), {
7 | browsers: ["Firefox"]
8 | });
9 |
10 | config.set(options);
11 | };
12 |
--------------------------------------------------------------------------------
/buildprocess/karma-local.conf.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var createKarmaBaseConfig = require("./createKarmaBaseConfig");
4 |
5 | module.exports = function (config) {
6 | var options = Object.assign({}, createKarmaBaseConfig(config), {
7 | detectBrowsers: {
8 | enabled: true,
9 | usePhantomJS: false
10 | }
11 | });
12 |
13 | options.frameworks.push("detectBrowsers");
14 | options.reporters.push("coverage-istanbul");
15 | options.coverageIstanbulReporter = {
16 | reports: ["html", "text-summary", "lcovonly"]
17 | };
18 | config.set(options);
19 | };
20 |
--------------------------------------------------------------------------------
/buildprocess/removeCesiumDebugPragmas.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var regexp =
4 | /\/\/>>includeStart\('debug', pragmas\.debug\);?[^]*?\/\/>>includeEnd\('debug'\);?/g;
5 |
6 | module.exports = function (source) {
7 | if (this && this.cacheable) {
8 | this.cacheable();
9 | }
10 | return source.replace(regexp, "");
11 | };
12 |
--------------------------------------------------------------------------------
/buildprocess/runExternalModule.js:
--------------------------------------------------------------------------------
1 | var spawnSync = require("child_process").spawnSync;
2 | var PluginError = require("plugin-error");
3 |
4 | function runExternalModule(module, args) {
5 | var modulePath = require.resolve(module);
6 |
7 | var result = spawnSync("node", [modulePath].concat(args), {
8 | stdio: "inherit",
9 | shell: false
10 | });
11 | if (result.status !== 0) {
12 | throw new PluginError(module, "External module exited with an error.", {
13 | showStack: false
14 | });
15 | }
16 | }
17 |
18 | module.exports = runExternalModule;
19 |
--------------------------------------------------------------------------------
/buildprocess/webpack.config.dev.js:
--------------------------------------------------------------------------------
1 | module.exports = require("./webpack.config.make")(true);
2 |
--------------------------------------------------------------------------------
/doc/CNAME:
--------------------------------------------------------------------------------
1 | docs.terria.io
--------------------------------------------------------------------------------
/doc/connecting-to-data/catalog-functions.md:
--------------------------------------------------------------------------------
1 | # Catalog Functions
2 |
3 | This file is automatically generated
4 |
5 | See https://docs.terria.io/guide/connecting-to-data/catalog-functions/
6 |
--------------------------------------------------------------------------------
/doc/connecting-to-data/catalog-groups.md:
--------------------------------------------------------------------------------
1 | # Catalog Groups
2 |
3 | This file is automatically generated
4 |
5 | See https://docs.terria.io/guide/connecting-to-data/catalog-groups/
6 |
--------------------------------------------------------------------------------
/doc/connecting-to-data/catalog-items.md:
--------------------------------------------------------------------------------
1 | # Catalog Items
2 |
3 | This file is automatically generated
4 |
5 | See https://docs.terria.io/guide/connecting-to-data/catalog-items/
6 |
--------------------------------------------------------------------------------
/doc/connecting-to-data/catalog-references.md:
--------------------------------------------------------------------------------
1 | # Catalog References
2 |
3 | This file is automatically generated
4 |
5 | See https://docs.terria.io/guide/connecting-to-data/catalog-references/
6 |
--------------------------------------------------------------------------------
/doc/connecting-to-data/catalog-type-details/.placeholder:
--------------------------------------------------------------------------------
1 | This directory is used for auto-generated documentation - see buildprocess/generateDocs.ts
2 |
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/default-data-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/default-data-view.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/edit-style.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/edit-style.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/feature_info_with_time_series.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/feature_info_with_time_series.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/model-dim.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/model-dim.jpeg
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/no_template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/no_template.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/styling-side-panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/styling-side-panel.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/customizing-data-appearance/img/template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/customizing-data-appearance/img/template.png
--------------------------------------------------------------------------------
/doc/connecting-to-data/open-item-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/connecting-to-data/open-item-search.png
--------------------------------------------------------------------------------
/doc/contributing/img/making_a_trait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/contributing/img/making_a_trait.png
--------------------------------------------------------------------------------
/doc/contributing/img/no-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/contributing/img/no-map.png
--------------------------------------------------------------------------------
/doc/contributing/img/runtime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/contributing/img/runtime.png
--------------------------------------------------------------------------------
/doc/contributing/img/stratum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/contributing/img/stratum.png
--------------------------------------------------------------------------------
/doc/customizing/server-side-config.md:
--------------------------------------------------------------------------------
1 | Coming soon!
2 |
3 | In the meantime, see [https://github.com/TerriaJS/terriajs-server](https://github.com/TerriaJS/terriajs-server).
4 |
--------------------------------------------------------------------------------
/doc/index-redirect.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | User Guide
7 |
8 |
9 |
--------------------------------------------------------------------------------
/doc/terria.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TerriaJS/terriajs/a5550dcd697544d6035467b874e9a82da425d909/doc/terria.png
--------------------------------------------------------------------------------
/lib/Charts/ChartData.ts:
--------------------------------------------------------------------------------
1 | export interface ChartPoint {
2 | readonly x: number | Date;
3 | readonly y: number;
4 | }
5 |
--------------------------------------------------------------------------------
/lib/Charts/getChartColorForId.ts:
--------------------------------------------------------------------------------
1 | import createColorForIdTransformer from "../Core/createColorForIdTransformer";
2 |
3 | export default createColorForIdTransformer();
4 |
--------------------------------------------------------------------------------
/lib/Core/AbstractConstructor.ts:
--------------------------------------------------------------------------------
1 | type AbstractConstructor = abstract new (...args: any[]) => T;
2 | export default AbstractConstructor;
3 |
--------------------------------------------------------------------------------
/lib/Core/Class.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * A class whose instances are of type T. The class may be abstract.
3 | */
4 | export default interface Class {
5 | prototype: T;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Core/Constructor.ts:
--------------------------------------------------------------------------------
1 | type Constructor = new (...args: any[]) => T;
2 | export default Constructor;
3 |
--------------------------------------------------------------------------------
/lib/Core/LatLonHeight.ts:
--------------------------------------------------------------------------------
1 | export default interface LatLonHeight {
2 | latitude: number;
3 | longitude: number;
4 | height?: number;
5 | }
6 |
7 | export function isLatLonHeight(obj: any): obj is LatLonHeight {
8 | if (obj) {
9 | return (
10 | Number.isFinite(obj.latitude) &&
11 | Number.isFinite(obj.longitude) &&
12 | (Number.isFinite(obj.height) || obj.height === undefined)
13 | );
14 | } else return false;
15 | }
16 |
--------------------------------------------------------------------------------
/lib/Core/ServerConfig.d.ts:
--------------------------------------------------------------------------------
1 | declare class ServerConfig {
2 | config: unknown;
3 | init(serverConfigUrl: string): Promise;
4 | }
5 |
6 | export default ServerConfig;
7 |
--------------------------------------------------------------------------------
/lib/Core/ensureSuffix.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Ensures that the given `str` ends with the given `char`.
3 | *
4 | */
5 | export default function ensureSuffix(str: string, char: string): string {
6 | return str.endsWith(char) ? str : `${str}${char}`;
7 | }
8 |
--------------------------------------------------------------------------------
/lib/Core/filterOutUndefined.ts:
--------------------------------------------------------------------------------
1 | import { NotUndefined } from "./TypeModifiers";
2 |
3 | export default function filterOutUndefined(array: Array) {
4 | return array.filter((x) => x !== undefined) as Array>;
5 | }
6 |
--------------------------------------------------------------------------------
/lib/Core/flatten.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Flattens an array of arrays, into an array, eg. [[0, 1], [2, 3], [4, 5]] => [0, 1, 2, 3, 4, 5].
3 | * Based on the example at
4 | * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
5 |
6 | */
7 | export default function flatten(arrayOfArrays: T[][]): T[] {
8 | return arrayOfArrays.reduce(function (a, b) {
9 | return a.concat(b);
10 | }, []);
11 | }
12 |
--------------------------------------------------------------------------------
/lib/Core/getDereferencedIfExists.ts:
--------------------------------------------------------------------------------
1 | import { BaseModel } from "../Models/Definition/Model";
2 | import GroupMixin from "../ModelMixins/GroupMixin";
3 | import ReferenceMixin from "../ModelMixins/ReferenceMixin";
4 |
5 | export default function getDereferencedIfExists(
6 | item: BaseModel | GroupMixin.Instance
7 | ): BaseModel | GroupMixin.Instance {
8 | if (ReferenceMixin.isMixedInto(item) && item.target) {
9 | return item.target;
10 | }
11 | return item;
12 | }
13 |
--------------------------------------------------------------------------------
/lib/Core/hashFromString.ts:
--------------------------------------------------------------------------------
1 | /** Returns a 32-bit integer hash of a string. '' => 0. */
2 |
3 | export default function hashFromString(s: string) {
4 | return Math.abs(
5 | s.split("").reduce(function (prev, c) {
6 | const hash = (prev << 5) - prev + c.charCodeAt(0);
7 | return hash;
8 | }, 0)
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/lib/Core/isDefined.ts:
--------------------------------------------------------------------------------
1 | export default function isDefined(value: T | undefined | null): value is T {
2 | return value !== undefined && value !== null;
3 | }
4 |
--------------------------------------------------------------------------------
/lib/Core/isReadOnlyArray.ts:
--------------------------------------------------------------------------------
1 | export default function isReadOnlyArray(
2 | value?: T | ReadonlyArray
3 | ): value is ReadonlyArray {
4 | return Array.isArray(value);
5 | }
6 |
--------------------------------------------------------------------------------
/lib/Core/loadArrayBuffer.ts:
--------------------------------------------------------------------------------
1 | import Resource from "terriajs-cesium/Source/Core/Resource";
2 |
3 | export default function loadArrayBuffer(
4 | urlOrResource: string,
5 | headers?: any
6 | ): Promise {
7 | return Resource.fetchArrayBuffer({ url: urlOrResource, headers: headers })!;
8 | }
9 |
--------------------------------------------------------------------------------
/lib/Core/loadText.ts:
--------------------------------------------------------------------------------
1 | import Resource from "terriajs-cesium/Source/Core/Resource";
2 |
3 | async function loadText(urlOrResource: string | Resource): Promise {
4 | const resource = (Resource as any).createIfNeeded(urlOrResource) as Resource;
5 | const response = resource.fetchText();
6 | if (response === undefined) {
7 | throw new Error("Request throttled");
8 | }
9 | return response;
10 | }
11 |
12 | export default loadText;
13 |
--------------------------------------------------------------------------------
/lib/Core/loadWithXhr.d.ts:
--------------------------------------------------------------------------------
1 | import Resource from "terriajs-cesium/Source/Core/Resource";
2 |
3 | interface Options extends Resource.ConstructorOptions {
4 | responseType?: string;
5 | headers?: any;
6 | overrideMimeType?: string;
7 | method?: "GET" | "POST" | "PUT";
8 | data?: any;
9 | }
10 |
11 | declare function loadWithXhr(options: Options): Promise;
12 |
13 | export default loadWithXhr;
14 |
--------------------------------------------------------------------------------
/lib/Core/math.ts:
--------------------------------------------------------------------------------
1 | export function getMax(nums: number[]) {
2 | let len = nums.length;
3 | if (len === 0) return undefined;
4 |
5 | let max = -Infinity;
6 |
7 | while (len--) {
8 | max = nums[len] > max ? nums[len] : max;
9 | }
10 | return max;
11 | }
12 |
13 | export function getMin(nums: number[]) {
14 | let len = nums.length;
15 | if (len === 0) return undefined;
16 |
17 | let min = Infinity;
18 |
19 | while (len--) {
20 | min = nums[len] < min ? nums[len] : min;
21 | }
22 | return min;
23 | }
24 |
--------------------------------------------------------------------------------
/lib/Core/prerequisites.js:
--------------------------------------------------------------------------------
1 | // Use this file to install polyfills and configure packages.
2 |
3 | import { configure } from "mobx";
4 |
5 | configure({
6 | computedRequiresReaction: true,
7 | enforceActions: "observed"
8 | });
9 |
--------------------------------------------------------------------------------
/lib/Core/regexMatches.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns array of capture groups for each match
3 | */
4 |
5 | export function regexMatches(regex: RegExp, str: string) {
6 | const m: string[][] = [];
7 | let matches: RegExpExecArray | null;
8 |
9 | while ((matches = regex.exec(str))) {
10 | matches.splice(0, 1);
11 | m.push(matches.map(decodeURIComponent));
12 | }
13 | return m;
14 | }
15 |
--------------------------------------------------------------------------------
/lib/Core/replaceUnderscores.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Replace all underscores in the string with spaces. If the argument is not a string, return it unchanged.
3 | * @param string The string to replace. If the argument is not a string, does nothing.
4 | * @return The argument with all underscores replaced with spaces. If the argument is not a string, returns the argument unchanged.
5 | */
6 | function replaceUnderscores(str: any): typeof str {
7 | return typeof str === "string" || str instanceof String
8 | ? str.replace(/_/g, " ")
9 | : str;
10 | }
11 |
12 | export default replaceUnderscores;
13 |
--------------------------------------------------------------------------------
/lib/Core/runLater.ts:
--------------------------------------------------------------------------------
1 | import defaultValue from "terriajs-cesium/Source/Core/defaultValue";
2 |
3 | export default function runLater(
4 | functionToRunLater: () => T,
5 | milliseconds?: number
6 | ) {
7 | milliseconds = defaultValue(milliseconds, 0);
8 |
9 | return new Promise((resolve, reject) => {
10 | setTimeout(() => {
11 | try {
12 | resolve(functionToRunLater());
13 | } catch (e) {
14 | reject(e);
15 | }
16 | }, milliseconds);
17 | });
18 | }
19 |
--------------------------------------------------------------------------------
/lib/Core/setsAreEqual.ts:
--------------------------------------------------------------------------------
1 | export function setsAreEqual(left: Set | T[], right: Set | T[]) {
2 | if (Array.isArray(left)) left = new Set(left);
3 |
4 | if (Array.isArray(right)) right = new Set(right);
5 |
6 | if (left === right) {
7 | return true;
8 | }
9 |
10 | if (left.size !== right.size) {
11 | return false;
12 | }
13 |
14 | const union = new Set([...left, ...right]);
15 |
16 | return union.size === left.size && union.size === right.size;
17 | }
18 |
--------------------------------------------------------------------------------
/lib/Core/timeout.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns a promise that resolves in milliseconds.
3 | */
4 | export default function timeout(milliseconds: number): Promise {
5 | return new Promise((resolve) => window.setTimeout(resolve, milliseconds));
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Core/triggerResize.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Trigger a window resize event.
3 | */
4 | export default function triggerResize() {
5 | try {
6 | window.dispatchEvent(new Event("resize"));
7 | } catch (_e) {
8 | const evt = window.document.createEvent("UIEvents");
9 | evt.initUIEvent("resize", true, false, window, 0);
10 | window.dispatchEvent(evt);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/Core/types.ts:
--------------------------------------------------------------------------------
1 | export type constVoid = () => void;
2 |
--------------------------------------------------------------------------------
/lib/Core/uriHelpers.ts:
--------------------------------------------------------------------------------
1 | import type URI from "urijs";
2 |
3 | export const getUriWithoutPath = (anyUri: URI) => {
4 | if (!anyUri) {
5 | return undefined;
6 | }
7 | const port = anyUri.port();
8 | const portToConcat = port ? `:${port}` : "";
9 | const uriWithoutPath = `${anyUri.protocol()}://${anyUri.hostname()}${portToConcat}/`;
10 | return uriWithoutPath;
11 | };
12 |
--------------------------------------------------------------------------------
/lib/Map/ColorMap/ColorMap.ts:
--------------------------------------------------------------------------------
1 | import Color from "terriajs-cesium/Source/Core/Color";
2 | import JsonValue from "../../Core/Json";
3 |
4 | export default abstract class ColorMap {
5 | abstract mapValueToColor(value: JsonValue | undefined): Readonly;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Map/DragPoints/DragPoints.d.ts:
--------------------------------------------------------------------------------
1 | import CustomDataSource from "terriajs-cesium/Source/DataSources/CustomDataSource";
2 | import Terria from "../../Models/Terria";
3 |
4 | declare class DragPoints {
5 | constructor(
6 | terria: Terria,
7 | pointMovedCallback: (draggableObjects: CustomDataSource) => void
8 | );
9 |
10 | setUp(): void;
11 | updateDraggableObjects(draggableObjects: CustomDataSource): void;
12 | getDragCount(): number;
13 | resetDragCount(): void;
14 | destroy(): void;
15 | }
16 |
17 | export default DragPoints;
18 |
--------------------------------------------------------------------------------
/lib/Map/Icons/Maki/README.md:
--------------------------------------------------------------------------------
1 | # Maki Icons
2 |
3 | https://labs.mapbox.com/maki-icons/
4 |
5 | ## How to generate
6 |
7 | https://labs.mapbox.com/maki-icons/editor/
8 |
9 | We only use the [`iconset-all_maki_icons.json`](./iconset-all_maki_icons.json) file, not the individual SVGs
10 |
--------------------------------------------------------------------------------
/lib/Map/Leaflet/LeafletScene.ts:
--------------------------------------------------------------------------------
1 | import CesiumEvent from "terriajs-cesium/Source/Core/Event";
2 | import L from "leaflet";
3 |
4 | export default class LeafletScene {
5 | readonly map: L.Map;
6 | readonly featureClicked = new CesiumEvent();
7 | readonly featureMousedown = new CesiumEvent();
8 | constructor(map: L.Map) {
9 | this.map = map;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/Map/SizeMap/ConstantPointSizeMap.ts:
--------------------------------------------------------------------------------
1 | import PointSizeMap from "./PointSizeMap";
2 |
3 | export default class ConstantPointSizeMap extends PointSizeMap {
4 | constructor(readonly pointSize: number) {
5 | super();
6 | }
7 |
8 | mapValueToPointSize(_value: string | number | null | undefined): number {
9 | return this.pointSize;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/Map/SizeMap/PointSizeMap.ts:
--------------------------------------------------------------------------------
1 | export default abstract class PointSizeMap {
2 | abstract mapValueToPointSize(
3 | value: string | number | null | undefined
4 | ): number;
5 | }
6 |
--------------------------------------------------------------------------------
/lib/Map/Vector/EarthGravityModel1996.d.ts:
--------------------------------------------------------------------------------
1 | declare class EarthGravityModel1996 {
2 | readonly minimumHeight: number;
3 | readonly maximumHeight: number;
4 |
5 | constructor(gridFileUrl: string);
6 |
7 | getHeight(longitude: number, latitude: number): Promise;
8 | }
9 |
10 | export default EarthGravityModel1996;
11 |
--------------------------------------------------------------------------------
/lib/Models/Catalog/CatalogGroup.ts:
--------------------------------------------------------------------------------
1 | import CatalogMemberMixin from "../../ModelMixins/CatalogMemberMixin";
2 | import GroupMixin from "../../ModelMixins/GroupMixin";
3 | import CatalogGroupTraits from "../../Traits/TraitsClasses/CatalogGroupTraits";
4 | import CreateModel from "../Definition/CreateModel";
5 |
6 | export default class CatalogGroup extends GroupMixin(
7 | CatalogMemberMixin(CreateModel(CatalogGroupTraits))
8 | ) {
9 | static readonly type = "group";
10 |
11 | get type() {
12 | return CatalogGroup.type;
13 | }
14 |
15 | protected forceLoadMembers(): Promise {
16 | return Promise.resolve();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/Models/Catalog/CatalogMemberFactory.ts:
--------------------------------------------------------------------------------
1 | import ModelFactory from "../Definition/ModelFactory";
2 |
3 | const CatalogMemberFactory = new ModelFactory();
4 | export default CatalogMemberFactory;
5 |
--------------------------------------------------------------------------------
/lib/Models/Catalog/removeUserAddedData.ts:
--------------------------------------------------------------------------------
1 | import { BaseModel } from "../Definition/Model";
2 | import Terria from "../Terria";
3 | import CommonStrata from "../Definition/CommonStrata";
4 |
5 | /**
6 | * Remove a user added data item or group
7 | */
8 | export default function (terria: Terria, target: BaseModel) {
9 | terria.catalog.userAddedDataGroup.remove(CommonStrata.user, target);
10 | }
11 |
--------------------------------------------------------------------------------
/lib/Models/Definition/CommonStrata.ts:
--------------------------------------------------------------------------------
1 | enum CommonStrata {
2 | defaults = "defaults",
3 | underride = "underride",
4 | definition = "definition",
5 | override = "override",
6 | user = "user"
7 | }
8 |
9 | export default CommonStrata;
10 |
--------------------------------------------------------------------------------
/lib/Models/ErrorServiceProviders/ErrorService.ts:
--------------------------------------------------------------------------------
1 | import TerriaError from "../../Core/TerriaError";
2 | import { ConfigParameters } from "../Terria";
3 | export interface ErrorServiceOptions {
4 | provider?: string;
5 | configuration: any;
6 | }
7 |
8 | /**
9 | * The interface that all valid error service providers must implement.
10 | */
11 | export interface ErrorServiceProvider {
12 | init: (config: ConfigParameters) => void;
13 | error: (error: string | Error | TerriaError) => void;
14 | }
15 |
--------------------------------------------------------------------------------
/lib/Models/ErrorServiceProviders/StubErrorServiceProvider.ts:
--------------------------------------------------------------------------------
1 | import TerriaError from "../../Core/TerriaError";
2 | import { ErrorServiceProvider } from "./ErrorService";
3 |
4 | /**
5 | * A stub error service provider that does nothing.
6 | */
7 | export default class StubErrorServiceProvider implements ErrorServiceProvider {
8 | init() {}
9 | error(_error: string | Error | TerriaError) {}
10 | }
11 |
--------------------------------------------------------------------------------
/lib/Models/Feature/FeatureInfoContext.ts:
--------------------------------------------------------------------------------
1 | import { JsonObject } from "../../Core/Json";
2 | import TerriaFeature from "./Feature";
3 |
4 | /** This model can be used to inject properties into FeatureInfoSections context. These properties will be accessible from featureInfoTemplate mustache template.
5 | */
6 | interface FeatureInfoContext {
7 | featureInfoContext: (f: TerriaFeature) => JsonObject | undefined;
8 | }
9 |
10 | namespace FeatureInfoContext {
11 | export function is(model: any): model is FeatureInfoContext {
12 | return "featureInfoContext" in model;
13 | }
14 | }
15 |
16 | export default FeatureInfoContext;
17 |
--------------------------------------------------------------------------------
/lib/Models/FunctionParameters/RegionTypeParameter.ts:
--------------------------------------------------------------------------------
1 | import FunctionParameter from "./FunctionParameter";
2 |
3 | export default class RegionTypeParameter extends FunctionParameter {
4 | static readonly type = "regionType";
5 | readonly type = "regionType";
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Models/FunctionParameters/StringParameter.ts:
--------------------------------------------------------------------------------
1 | import FunctionParameter from "./FunctionParameter";
2 |
3 | export default class StringParameter extends FunctionParameter {
4 | static readonly type = "string";
5 | readonly type = "string";
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Models/HasLocalData.ts:
--------------------------------------------------------------------------------
1 | interface HasLocalData {
2 | hasLocalData: boolean;
3 | setFileInput(file: File): void;
4 | }
5 |
6 | namespace HasLocalData {
7 | export function is(model: any): model is HasLocalData {
8 | return "hasLocalData" in model;
9 | }
10 | }
11 |
12 | export default HasLocalData;
13 |
--------------------------------------------------------------------------------
/lib/Models/IElementConfig.ts:
--------------------------------------------------------------------------------
1 | export default interface IElementConfig {
2 | visible?: boolean;
3 | }
4 |
--------------------------------------------------------------------------------
/lib/Models/ItemSearchProviders/ItemSearchProviders.ts:
--------------------------------------------------------------------------------
1 | import Constructor from "../../Core/Constructor";
2 | import ItemSearchProvider from "./ItemSearchProvider";
3 | import IndexedItemSearchProvider from "./IndexedItemSearchProvider";
4 |
5 | export const ItemSearchProviders: Map<
6 | string,
7 | Constructor
8 | > = new Map([["indexed", IndexedItemSearchProvider]]);
9 |
10 | export function registerItemSearchProvider(
11 | type: string,
12 | providerClass: Constructor
13 | ) {
14 | ItemSearchProviders.set(type, providerClass);
15 | }
16 |
--------------------------------------------------------------------------------
/lib/Models/ItemSearchProviders/Types.ts:
--------------------------------------------------------------------------------
1 | export type IndexBase = {
2 | type: IndexType;
3 | load(indexRootUrl: string, valueHint: QueryType): Promise;
4 | search(query: QueryType, queryOptions?: any): Promise>;
5 | };
6 |
7 | export enum IndexType {
8 | numeric = "numeric",
9 | enum = "enum",
10 | text = "text"
11 | }
12 |
13 | export const indexTypes = Object.keys(IndexType);
14 |
--------------------------------------------------------------------------------
/lib/Models/ItemSearchProviders/joinUrl.ts:
--------------------------------------------------------------------------------
1 | import URI from "urijs";
2 |
3 | export default function joinUrl(rootUrl: string, url: string) {
4 | const uri = URI(url);
5 | return uri.is("absolute") ? url : uri.absoluteTo(rootUrl).toString();
6 | }
7 |
--------------------------------------------------------------------------------
/lib/Models/SearchProviders/SearchModelFactory.ts:
--------------------------------------------------------------------------------
1 | import LocationSearchProviderMixin from "../../ModelMixins/SearchProviders/LocationSearchProviderMixin";
2 | import { ModelConstructor } from "../Definition/Model";
3 | import ModelFactory from "../Definition/ModelFactory";
4 |
5 | export class SearchModelFactory extends ModelFactory {
6 | register(
7 | type: string,
8 | constructor: ModelConstructor
9 | ) {
10 | super.register(type, constructor);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/Models/SearchProviders/SearchProviderFactory.ts:
--------------------------------------------------------------------------------
1 | import { SearchModelFactory } from "./SearchModelFactory";
2 |
3 | const SearchProviderFactory = new SearchModelFactory();
4 | export default SearchProviderFactory;
5 |
--------------------------------------------------------------------------------
/lib/Models/StoryVideoSettings.ts:
--------------------------------------------------------------------------------
1 | export interface StoryVideoSettings {
2 | videoUrl: string;
3 | }
4 |
--------------------------------------------------------------------------------
/lib/ReactViews/Analytics/InfoParameterEditor.tsx:
--------------------------------------------------------------------------------
1 | import { observer } from "mobx-react";
2 | import { Component } from "react";
3 | import InfoParameter from "../../Models/FunctionParameters/InfoParameter";
4 | import parseCustomMarkdownToReact from "../Custom/parseCustomMarkdownToReact";
5 |
6 | @observer
7 | export default class InfoParameterEditor extends Component<{
8 | parameter: InfoParameter;
9 | }> {
10 | render() {
11 | return (
12 |
13 | {this.props.parameter.value &&
14 | parseCustomMarkdownToReact(this.props.parameter.value)}
15 |
16 | );
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/lib/ReactViews/BottomDock/Timeline/DatePicker/utils.ts:
--------------------------------------------------------------------------------
1 | export const monthNames = [
2 | "Jan",
3 | "Feb",
4 | "Mar",
5 | "Apr",
6 | "May",
7 | "Jun",
8 | "Jul",
9 | "Aug",
10 | "Sep",
11 | "Oct",
12 | "Nov",
13 | "Dec"
14 | ];
15 |
16 | export const daysInMonth = (month: number, year: number) => {
17 | const n = new Date(year, month, 0).getDate();
18 |
19 | return Array.from(Array(n).keys());
20 | };
21 |
--------------------------------------------------------------------------------
/lib/ReactViews/BottomDock/Timeline/Timeline.d.ts:
--------------------------------------------------------------------------------
1 | import type { Component } from "react";
2 | import IElementConfig from "../../../Models/IElementConfig";
3 | import Terria from "../../../Models/Terria";
4 |
5 | interface PropsType {
6 | terria: Terria;
7 | locale?: unknown;
8 | elementConfig?: IElementConfig;
9 | }
10 |
11 | declare class Timeline extends Component {}
12 |
13 | export default Timeline;
14 |
--------------------------------------------------------------------------------
/lib/ReactViews/BottomDock/Timeline/cesium-timeline.scss.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace CesiumTimelineScssNamespace {
2 | export interface ICesiumTimelineScss {
3 | cesiumTimeline: string;
4 | }
5 | }
6 |
7 | declare const CesiumTimelineScssModule: CesiumTimelineScssNamespace.ICesiumTimelineScss & {
8 | /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */
9 | locals: CesiumTimelineScssNamespace.ICesiumTimelineScss;
10 | };
11 |
12 | export = CesiumTimelineScssModule;
13 |
--------------------------------------------------------------------------------
/lib/ReactViews/BottomDock/Timeline/timeline-controls.scss:
--------------------------------------------------------------------------------
1 | @use "../../../Sass/common/_variables";
2 |
3 | .controls {
4 | display: table-cell;
5 | width: 120px;
6 | vertical-align: middle;
7 | }
8 |
9 | .timeline__control {
10 | height: 29px;
11 | width: 29px;
12 | composes: btn from "../../../Sass/common/_buttons.scss";
13 | svg {
14 | height: 25px;
15 | width: 25px;
16 | fill: #ffffff;
17 | }
18 |
19 | &.is-active {
20 | svg {
21 | fill: variables.$color-primary;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/ReactViews/BottomDock/chart-disclaimer.scss:
--------------------------------------------------------------------------------
1 | @use "../../Sass/common/variables";
2 | @use "../../Sass/common/mixins";
3 |
4 | .chart-disclaimer-panel {
5 | background: #9a4b4b;
6 | color: white;
7 | padding: 1px variables.$padding;
8 | font-size: 0.8rem;
9 | p {
10 | margin: variables.$padding 0px;
11 | a,
12 | a:visited {
13 | color: white;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/lib/ReactViews/Context/ContextProviders.tsx:
--------------------------------------------------------------------------------
1 | import { ReactNode } from "react";
2 | import { DefaultTheme, ThemeProvider } from "styled-components";
3 | import ViewState from "../../ReactViewModels/ViewState";
4 | import { ViewStateProvider } from "./ViewStateContext";
5 |
6 | export const ContextProviders = (props: {
7 | viewState: ViewState;
8 | theme: DefaultTheme | ((theme: DefaultTheme) => DefaultTheme);
9 | children: ReactNode[];
10 | }) => (
11 |
12 | {props.children}
13 |
14 | );
15 |
--------------------------------------------------------------------------------
/lib/ReactViews/Context/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./ViewStateContext";
2 | export * from "./ContextProviders";
3 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/Glyphs.ts:
--------------------------------------------------------------------------------
1 | import {
2 | GlyphCircle,
3 | GlyphCross,
4 | GlyphDiamond,
5 | GlyphSquare,
6 | GlyphStar,
7 | GlyphTriangle,
8 | GlyphWye
9 | } from "@visx/glyph";
10 |
11 | const Glyphs = {
12 | circle: GlyphCircle,
13 | cross: GlyphCross,
14 | diamond: GlyphDiamond,
15 | square: GlyphSquare,
16 | star: GlyphStar,
17 | triangle: GlyphTriangle,
18 | wye: GlyphWye
19 | };
20 |
21 | export type GlyphStyle = keyof typeof Glyphs;
22 |
23 | export default Glyphs;
24 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/bottom-dock-chart.scss:
--------------------------------------------------------------------------------
1 | @use "../../../Sass/common/_variables";
2 | @use "../../../Sass/common/mixins";
3 |
4 | .empty {
5 | text-align: center;
6 | margin-top: 130px;
7 | }
8 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/bottom-dock-chart.scss.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace BottomDockChartScssNamespace {
2 | export interface IBottomDockChartScss {
3 | empty: string;
4 | }
5 | }
6 |
7 | declare const BottomDockChartScssModule: BottomDockChartScssNamespace.IBottomDockChartScss & {
8 | /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */
9 | locals: BottomDockChartScssNamespace.IBottomDockChartScss;
10 | };
11 |
12 | export = BottomDockChartScssModule;
13 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/chart-panel-download-button.scss.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace ChartPanelDownloadButtonScssNamespace {
2 | export interface IChartPanelDownloadButtonScss {
3 | "btn-download": string;
4 | btnDownload: string;
5 | }
6 | }
7 |
8 | declare const ChartPanelDownloadButtonScssModule: ChartPanelDownloadButtonScssNamespace.IChartPanelDownloadButtonScss & {
9 | /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */
10 | locals: ChartPanelDownloadButtonScssNamespace.IChartPanelDownloadButtonScss;
11 | };
12 |
13 | export = ChartPanelDownloadButtonScssModule;
14 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/chart.scss:
--------------------------------------------------------------------------------
1 | @use "../../../Sass/common/_variables";
2 | @use "../../../Sass/common/mixins";
3 |
4 | .noData {
5 | display: flex;
6 | justify-content: center;
7 | align-items: center;
8 | }
9 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/chart.scss.d.ts:
--------------------------------------------------------------------------------
1 | // This file is automatically generated.
2 | // Please do not change this file!
3 | interface CssExports {
4 | 'noData': string;
5 | }
6 | declare var cssExports: CssExports;
7 | export = cssExports;
8 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/legends.scss.d.ts:
--------------------------------------------------------------------------------
1 | // This file is automatically generated.
2 | // Please do not change this file!
3 | interface CssExports {
4 | 'legends': string;
5 | }
6 | declare var cssExports: CssExports;
7 | export = cssExports;
8 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Chart/types.ts:
--------------------------------------------------------------------------------
1 | import type { scaleLinear, scaleTime } from "@visx/scale";
2 |
3 | export type XScale =
4 | | ReturnType>
5 | | ReturnType>;
6 | export type YScale = ReturnType>;
7 |
8 | export interface Scales {
9 | x: XScale;
10 | y: YScale;
11 | }
12 |
13 | export type ChartZoomFunction = (scales: {
14 | x: (arg0: number | Date) => number;
15 | y: (arg0: number) => number;
16 | }) => void;
17 |
18 | export interface ChartZoomHandle {
19 | doZoom: ChartZoomFunction;
20 | }
21 |
--------------------------------------------------------------------------------
/lib/ReactViews/Custom/Collapsible/collapsible.scss.d.ts:
--------------------------------------------------------------------------------
1 | // This file is automatically generated.
2 | // Please do not change this file!
3 | interface CssExports {
4 | 'body': string;
5 | 'btn': string;
6 | 'header': string;
7 | 'is-inverse': string;
8 | 'is-open': string;
9 | 'isInverse': string;
10 | 'isOpen': string;
11 | 'root': string;
12 | }
13 | declare var cssExports: CssExports;
14 | export = cssExports;
15 |
--------------------------------------------------------------------------------
/lib/ReactViews/DataCatalog/data-catalog.scss.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace DataCatalogScssNamespace {
2 | export interface IDataCatalogScss {
3 | "data-catalog": string;
4 | dataCatalog: string;
5 | label: string;
6 | }
7 | }
8 |
9 | declare const DataCatalogScssModule: DataCatalogScssNamespace.IDataCatalogScss & {
10 | /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */
11 | locals: DataCatalogScssNamespace.IDataCatalogScss;
12 | };
13 |
14 | export = DataCatalogScssModule;
15 |
--------------------------------------------------------------------------------
/lib/ReactViews/Disclaimer.d.ts:
--------------------------------------------------------------------------------
1 | import type { Component } from "react";
2 |
3 | declare class Disclaimer extends Component