text:
# Change Log

#### next release (8.3.3)

- [The next improvement]

#### 8.3.2 - 2023-08-11

- Fixed a bug when restoring timefilter from a share link having more than one imagery item with the same base URL (but different layer names).
- Fix WPS duplicate display of analysis results when loaded through a share URL
- Upgraded babel packages.

#### 8.3.1 - 2023-06-29

- **Breaking changes:**
  - Switched GoogleAnalytics to use Google Analytics 4 properties. Google's Universal properties no longer accept data from 01/07/2023, so migration is necessary anyway.
- Fix error when adding deeply nested references in search results.
- Add new option `focusWorkbenchItems` to `initialCamera` setting to focus the camera on workbench items when the app loads.
- Fixed bug where sharelinks created with no visible horizon would default to homeCamera view
- Improved calculation of 2D view from 3D view when no horizon visible
- Improve WMS and WFS error messages when requested layer names or type names are not present in GetCapabilities.

#### 8.3.0 - 2023-05-22

- **Breaking changes:**

  - **Upgraded Mobx to version 6.7.x**
  - **Upgraded Typescript to version 4.9.x**
  - See https://github.com/TerriaJS/terriajs/discussions/6787 for how to upgrade your map

#### 8.2.29 - 2023-05-18

- Fix app crash when rendering feature info with a custom title.
- Added new `CkanCatalogGroup` traits `resourceIdTemplate` and `restrictResourceIdTemplateToOrgsWithNames` to generate custom resource IDs for CKAN resources with unstable IDs.
- Fix `acessType` resolution for `MagdaReference` so that it uses the default terria resolution strategy when `magdaRecord` is not defined.

#### 8.2.28 - 2023-04-28

- Refactored TerriaViewer to expose a promise `terriaViewer.viewerLoadPromise` for async loading of viewers.
- Fix location point ideal zoom bug in 3D mode map.
- Add `EPSG:7844` to `Proj4Definitions`.
- TSify `Proj4Definitions` and `Reproject` modules.
- Update the docs for `excludeMembers`: mention the group/item id support
- Simplified `MapToolbar` API.

#### 8.2.27 - 2023-04-05

- Change icon used for display group remove button
- Make access control UI compatible to Magda v1 and v2 with v2 overriding v1.
- Remove karma-sauce-launcher dependency
- Add method `addFileDragDropListener` for receiving callbacks when user drags-n-drops a file.
- Improve `BoxDrawing` drag interaction.
- Fix a bug where `BoxDrawing` sometimes causes the map to loose pan and zoom interactivity.
- Optimize `LocationBar` component to reduce number of renders on mouse move.
- Optimize `Compass` component to reduce renders on each frame.
- Add `children` optional property to StandardUserInterfaceProps interface
- Add support for ArcGis MapServer with `TileOnly` capability - for example layers served from ArcGis Online. This is supported through `ArcGisMapServerCatalogItem`, `ArcGisMapServerCatalogGroup` and `ArcGisCatalogGroup`.

#### 8.2.26 - 2023-03-21

- Upgraded to terriajs-server 4.0.0.
- Added new `gulp dev` task that runs terriajs-server and `gulp watch` (incremental specs build) at the same time.

#### 8.2.25 - 2023-03-20

- Export `registerUrlHandlerForCatalogMemberType` for registering new url handler for catalog types.
- BoxDrawing changes:
  - Adds a new option called disableVerticalMovement to BoxDrawing which if set to true disables up/down motion of the box when dragging the top/bottom sides of the box.
  - Keeps height (mostly) steady when moving the box laterally on the map. Previously the height of the box used to change wrt to the ellipsoid/surface.
  - Fixes a bug that caused map panning and zooming to break when interacting with multiple active BoxDrawings.
  - Removed some code that was causing too much drift between mouse cursor and model when moving the model laterally on the map.
- Replaces addRemoteUploadType and addLocalUploadType with addOrReplaceRemoteFileUploadType and addOrReplaceLocalFileUploadType.

#### 8.2.24 - 2023-03-06

- Reimplement error message and default to 3d smooth mode when Cesium Ion Access Token is invalid.
- Layers shown via a share URL are now logged as a Google Analytics event
- Show an Add All / Remove All button for catalog groups when an optional `displayGroup` trait is true
- Rename the Map Settings "Raster Map Quality" slider to be just "Map Quality" as it also affects other things than raster data.
- Dragn-n-drop should respect disableZoomTo setting
- Fixed #6702 Terrain Hides Underground Features not working
- Add className prop for MyData tab so that it can be styled externally

#### 8.2.23 - 2023-01-06

- Only add groups to `CatalogIndex` if they aren't empty
- `BoxDrawing` improvements:
  - Added option `drawNonUniformScaleGrips` to enable/disable uniform-scaling
  - Set limit on the size of scaling grips relative to the size of the box
  - Small improvement to move interaction that prevents the box from locking up when trying to move at a camera angle parallel to the ground
  - Restore modified map state to the previous setting when interaction stops
- Fix bug in Cesium and Leaflet maps that resulted in `DataSource`s getting rendered even after their parent items are removed from the workbench.
- GltfMixin changes:
  - Refactors code to use stable `DataSource` and `Entity` values instead of re-creating them everytime `mapItems` is recomputed.
  - Disable zoom to for the item when position is unknown.
- Add `UploadDataTypes` API for extending the supported local and remote upload data types.
- Add option to upload terria web data (via url to json file/service)
- Refactor `Cesium3dTileMixin`.
- Updated related maps to fit mobile screens.
- Extend `responseDataPath` trait of `ApiTableCatalogItem` with support for mapping over arrays and collecting nested object values.
- Add `MapToolbar.addToolButton()` API for adding a tool button to the map navigation menu.
- Add `ActionBar` component for showing a floating menu bar at the bottom of the map.

#### 8.2.22 - 2022-12-02

- Protomaps Polygon features now only use `PolygonSymbolizer` (instead of `PolygonSymbolizer` and `LineSymbolizer`)
- Add `horizontalOrigin` and `verticalOrigin` to `TableLabelTraits`
- `TableStylingWorkflow` improvements:
  - Add more options to advanced mode (style title, hide style, long/lat column, time properties)
  - "Style" dropdown now shows `TableStyles` instead of `TableColumns`
  - Show "Variable" in "Fill color" if color column name doesn't match style name (eg style isn't generated by `TableAutomaticStylesStratum`)
  - Add symbology dropdown to advanced mode (was only showing in basic mode)
  - Add label and trail styling
  - When creating a new `bin` or `enum` value, the `null` ("default") values will be copied across.
- Move all Table related Traits to `lib/Traits/TraitsClasses/Table/` directory
- Handle errors thrown in `Cesium._attachProviderCoordHooks`. This fixes a bug where some WMTS layers break feature picking.
- Fix `Legend` outline bug - where invalid `boxStyle` meant old legend styles may be visible
- Fix `baseMapContrastColor` reactivity in `GeojsonMixin` - mvt was not updating when the basemap changes
- Add `SelectableDimensionMultiEnum` - A enum SelectableDimension that allows multiple values to be selected
- Fix `SelectableDimensionNumeric` handling of invalid values
- `ColorStyleLegend` will use `colorColumn` title by default. It will fallback to `TableStyle.title`
- Add `children` optional property to StandardUserInterfaceProps interface
- Fix `MapboxVectorTileCatalogItem` feature highlighting - this requires use of `idProperty` trait (also added `idProperty` to `ProtomapsImageryProvider`)
- Fix `MapboxVectorTileCatalogItem` `fillColor` also applying to Line features
- Add `maximumNativeZoom` to `ProtomapsImageryProvider`
- Fix image markers (eg `marker = "data:image/png;base64,..."`)
- Fix `AssimpCatalogItem` to correctly handle zip archives that contain files inside a root folder.

#### 8.2.21 - 2022-11-10

- Add check for WFS `layer.OtherSRS` in `buildSrsNameObject`
- Add `overridesBaseUrl` to `LanguageOptions`. This can be used to set the base URL for language override namespace translation files (see [client-side-config.md#LanguageConfiguration](./doc/customizing/client-side-config.md#LanguageConfiguration))
- Add `aboutButtonHrefUrl` to `configParameters`. Defaults to `"about.html"`. If set to `null`, then the About button will not be shown.
- Add `refreshIntervalTemplate` to `OpenDataSoftCatalogItemTraits` - this can be used to set `refreshInterval` using Mustache template rendered on ODS Dataset JSON object
- Add `plugins` property to `ConfigParameters` type
- Add more supported 4326 and 3857 CRS strings for WFS (eg `"urn:ogc:def:crs:EPSG::3857"` and `"urn:x-ogc:def:crs:EPSG:3857"`)

#### 8.2.20 - 2022-10-20

- Handle errors thrown in `ImageryProviderLeafletTileLayer.pickFeatures`. This fixes a bug where some WMTS layers break feature picking (in Leaflet/2D mode)

#### 8.2.19 - 2022-10-20

- Handle errors thrown in `Cesium._attachProviderCoordHooks`. This fixes a bug where some WMTS layers break feature picking.

#### 8.2.18 - 2022-10-19

- Fix `RelatedMaps` default broken URLs
- Add `mergeGroupsByName` trait to `GroupTraits` - this will merge all group members with the same name
- Fix bug with "propagate `knownContainerUniqueIds` across references and their target" - missing `runInAction`
- Add Carto v3 Maps API support for `table` and `query` endpoint (only GeoJSON - not MVT yet)
- Moved `activeStyle` default from `TableMixin` to `TableAutomaticStyleStratum`. The default `activeStyle` will now not pick a `hidden` `TableStyle`.
- Pin `flexsearch` version to `0.7.21` - as incorrect types are shipped in version `0.7.31`
- Only preload next timestep of timeseries rasters (WMS & ArcGIS MapServer) when animating the item on the map.
- Added error message if cesium stops rendering
- Add `enabled` to `TableStyleMapTraits` - which defaults to `true`
- Add `TableLabelStyleTraits` - this can be used to add `LabelGraphics` to point features (table or geojson)
- Add `TableTrailStyleTraits` - this can be used to add `PathGraphics` to time-series point features (table or geojson)
- Added missing `proxyCatalogItemUrl` to GeoJson, Shapefile, Gltf and AssImp catalog items.
- Added support for `OpenDataSoftCatalogGroup` with more than 100 datasets.
- Added `refreshIntervalTemplate` to `OpenDataSoftCatalogItemTraits` - this can be used to set `refreshInterval` using Mustache template rendered on ODS Dataset JSON object.
- Performance optimisation for time-series `TableMixin`
- Tweak `generateCatalogIndex` to use less memory. (+ add `diffCatalogIndex.js` script to show added/removed members between two catalog index files)
- Migrated `/#tools=1` to version 8.
- Removed dummy function `Terria.getUserProperty`.
- Removed unused version 7 React components.
- Fix Cesium `stoppedRenderingMessage`

#### 8.2.17 - 2022-09-23

- Fix region mapping feature `rowIds` incorrect type.

#### 8.2.16 - 2022-09-23

- Make srsName and outputFormat for WFS requests dynamic
- Added `excludeInactiveDatasets` to `CkanCatalogGroup` (`true` by default). This will filter out CKAN Datasets which have `state` or `data_state` (data.gov.au specific) **not** set to `"active"`.
- Fix `isTerriaFeatureData` bug - not checking `isJsonObject`
- Add `.logError()` to all usage of `updateModelFromJson` where the `Result` object is ignored
- Move `RelatedMaps` to terriajs. They are now generated from `configParameters` (see [`doc/customizing/client-side-config.md`](./doc/customizing/client-side-config.md#relatedmap))

#### 8.2.15 - 2022-09-16

- Fix bug with "propagate `knownContainerUniqueIds` across references and their target" - missing `runInAction`

#### 8.2.14 - 2022-09-15

- Moved map credits to map column so it don't get hidden by chart panel.
- TSified `FeatureInfo*.tsx`
  - `describeFromProperties` is now `generateCesiumInfoHTMLFromProperties`
  - `FeatureInfoSection` has been split up into `FeatureInfoSection.tsx`, `getFeatureProperties`, `mustacheExpressions` and `generateCesiumInfoHTMLFromProperties`
- Fix `{{terria.currentTime}}` in feature info template
- Add `{{terria.rawDataTable}}` in feature info template - to show raw data HTML table
- Added `TableFeatureInfoStratum` - which adds default feature info template to `TableMixin`
- Add `FeatureInfoContext` - used to inject properties into `FeatureInfoSections` context. These properties will be accessible from `featureInfoTemplate` mustache template.
  - `tableFeatureInfoContext` adds time series chart properties using `FeatureInfoContext` (`getChartDetails` has been removed)
- Move `maximumShownFeatureInfos` from `WebMapServiceCatalogItemTraits` to `MappableTraits`
- Remove `featureInfoUrlTemplate` from `OpenDataSoftCatalogItem` - as it is incompatible with time varying datasets
- Removed `formatNumberForLocale` - we now use `Number.toLocaleString`
- Rename `Feature` to `TerriaFeature` - improve typing and usage across code-base
  - Added `data: TerriaFeatureData` - which is used to pass Terria-specific properties around (eg `rowIds`)
- Added `loadingFeatureInfoUrl` to `FeatureInfoUrlTemplateMixin`
- Move `Cesium.ts` `ImageryLayer` feature picking to `cesium.pickImageryLayerFeatures()`
- Move `lib/Core/propertyGetTimeValues.js` into `lib/ReactViews/FeatureInfo/getFeatureProperties.ts`
- Add `showFeatureInfoDownloadWithTemplate` to `FeatureInfoTraits` - Toggle to show feature info download **if** a `template` has been provided. If no `template` is provided, then download will always show.
- Fix support for `initUrls` in `startData.initSources`
- Propagate `knownContainerUniqueIds` across references and their target.
- Show scrollbar for story content in Safari iOS.
- Use `document.baseURI` for building share links instead of `window.location`.

#### 8.2.13 - 2022-09-01

- Fix pedestrian drop behaviour so that the camera heading stays unchanged even after the drop
- Fixed a bug causing incorrect loading of EPSG:4326 layers in WMS v1.3.0 by sending wrong `bbox` in GetMap requests.
- Improve the CKAN model robustness by removing leading and trailing spaces in wms layer names.
- Load all `InitSources` sequentially instead of asyncronosly
- Fix `DOMPurify.sanitize` call in `PrintView`
- Fix warning for WFS item exceeding max displayable features
- Upgrade prettier to version 2.7.1

#### 8.2.12 - 2022-08-10

- Dropped "optional" from the prompt text in file upload modal for both local and web data.
- Changed the text for the first file upload option from "Auto-detect (recommended)" to simply "File type" for local files and "File or web service type" for web urls.
- Automatically suffix supported extension list to the entries in file type dropdown to improve clarity.
- Removed IFC from upload file type (until further testing).
- Move `CkanCatalogGroup` "ungrouped" group to end of members

#### 8.2.11 - 2022-08-08

- Add ability to customise the getting started video in the StoryBuilder panel
- Set cesium base URL by default so that cesium assets are resolved correctly
- Add `cesiumBaseUrl` to `TerriaOptions` for overriding the default cesium base url setting
- Fix broken Bing map logo in attributions
- Added ability to customise the getting started video in the StoryBuilder panel.
- Fixed a bug where menu items were rendered in the wrong style if the window was resized from small to large, or large to small.
- Strongly type `item` in WorkbenchItem and remove `show` toggle for non `Mappable` items.
- Add `configParameters.regionMappingDefinitionsUrls` - to support multiple URLs for region mapping definitions - if multiple provided then the first matching region will be used (in order of URLs)
  - `configParameters.regionMappingDefinitionsUrl` still exists but is deprecated - if defined it will override `regionMappingDefinitionsUrls`
- `TableMixin.matchRegionProvider` now returns `RegionProvider` instead of `string` region type. (which exists at `regionProvider.regionType`)
- Fix `shouldShorten` property in catalog and story `ShareUrl`
- Fix `shortenShareUrls` user property
- Add `videoCoverImageOpacity` option to `HelpContentItem` so that we can fade the background of help video panels.
- Fix a bug where all `HelpVideoPanel`s were being rendered resulting in autoplayed videos playing at random.
- Add `getFeatureInfoUrl` and `getFeatureInfoParameters` to `WebMapServiceCatalogItemTraits`
- Fix `SearchBoxAndResults` Trans values
- Fix `generateCatalogIndex` for nested references
- Fix `SearchBox` handling of `searchWithDebounce` when `debounceDuration` prop changes. It now fushes instead of cancels.

#### 8.2.10 - 2022-08-02

- **Breaking changes:**
  - **Minimum NodeJS version is now 14**
- Consolidate `HasLocalData` interface
- Add `GlTf` type definition (v2)
- Add `gltfModelUrl` to `GltfMixin` - this must be implemented by Models which use `GltfMixin`
- Moved `GltfCatalogItem` to `lib/Models/Catalog/Gltf/GltfCatalogItem.ts`
- Add experimental client-side 3D file conversion using [`assimpjs`](https://github.com/kovacsv/assimpjs) ([emscripten](https://emscripten.org) interface for the [assimp](https://github.com/assimp/assimp) library)
  - This supports `zip` files and `HasLocalData` - but is not in `getDataType` as the scene editor (closed source) is required to geo-reference
  - Supports over 40 formats - including Collada, obj, Blender, DXF - [full list](https://github.com/assimp/assimp/blob/master/doc/Fileformats.md)
- Add `description` to `getDataType` - this will be displayed between Step 1 and Step 2
- Add warning message to `GltfMixin` when showing in 2D mode (Leaflet)
- Upgrade `husky` to `^8.0.1`
- Prevent looping when navigating between scenes in StoryPanel using keyboard arrows
- Fix bug where StoryPanel keyboard navigation persists after closing StoryPanel
- Fix select when clicking on multiple features in 2D (#5660)
- Implemented support for `featureInfoUrlTemplate` on 2D vector features (#5660)
- Implemented FeatureInfoMixin in GeojsonMixin (#5660)
- `GpxCatalogItem` now use `GeojsonMixin` for loading data. (#5660)
- `GeoRssCatalogItem` now use `GeojsonMixin` for loading data. (#5660)
- Upgrade i18next to `v21`
- Limit workbench item title to 2 lines and show overflow: ellipsis after.
- Add `allowFeaturePicking` trait to Cesium3dTileMixin.
- Feature Info now hidden on Cesium3dTiles items if `allowFeaturePicking` set to false. Default is true.
- Add `initFragmentPaths` support for hostnames different to `configUrl`/`applicationUrl`
- Add DOMPurify to `parseCustomHtmlToReact` (it was already present in `parseCustomMarkdownToReact`)
- Update `html-to-react` to `1.4.7`
- Add `ViewState` React context provider to `StandardUserInterface` - instead of passing `viewState` or `terria` props through components, please use
  - `useViewState` hook
  - `withViewState` HOC
- Move `GlobalTerriaStyles` from `StandardUserInterface` to separate file
- Add `ExternalLinkWithWarning` component - this will replace all URLs in story body and add a warning message when URLs are clicked on.
- Fixed a bug where adding `CesiumTerrainCatalogItem` to workbench didn't apply it when `configParameters.cesiumTerrainAssetId` or `configParameters.cesiumTerrainUrl` was set.
- `CesiumTerrainCatalogItem` will now show a status `In use` or `Not in use` in the workbench.
- Rewrote `CesiumTerrainCatalogItem` to handle and report network errors.
- Set `JulianDate.toIso8601` second precision to nanosecond - this prevents weird date strings with scientific/exponent notation (eg `2008-05-07T22:54:45.7275957614183426e-11Z`)
- Add attribution for Natural Earth II and NASA Black Marble basemaps.

#### 8.2.9 - 2022-07-13

- Pin `html-to-react` to `1.4.5` due to ESM module in dependency (`parse5`) breaking webpack
- Add step to `"Deploy TerriaMap"` action to save `yarn.lock` after `sync-dependencies` (for debug purposes)
- TSIfy `SharePanel`
- Move `includeStoryInShare` out of `ViewState` into local state
- Implement ability to navigate between scenes in StoryPanel using keyboard arrows
- Rename `FeatureInfoMixin` to `FeatureInfoUrlTemplateMixin`
- Move `featureInfoTemplate` and `showStringIfPropertyValueIsNull` from `FeatureInfoTraits` to `MappableTraits` (all mappable catalog items)
- Remove `FeatureInfoUrlTemplateTraits` from all models that don't use `FeatureInfoUrlTemplateMixin`
- Fix "Regions: xxx" short report showing for non region mapped items
- Fix `showInChartPanel` default for mappable items

#### 8.2.8 - 2022-07-04

- Improve Split/compare error handling
- Fix `itemProperties` split bug
- Table styling is disabled if `MultiPoint` are in GeoJSON
- Add `GeoJsonTraits.useOutlineColorForLineFeatures` - If enabled, `TableOutlineStyleTraits` will be used to color Line Features, otherwise `TableColorStyleTraits` will be used.
- Fix feature highliting for `Line`, `MultiLine` and `MultiPoint`
- Await Internationalisation initialisation in `Terria.start`
- `UserDrawing.messageHeader` can now also be `() => string`

#### 8.2.7 - 2022-06-30

- Fix `WorkbenchItem` title height
- Add region map info and move "No Data" message to `InfoSections` in `TableAutomaticStylesStratum`
- Fix missing `TableColorStyleTraits.legend` values in `ColorStyleLegend`
- Fix `DateTimeSelectorSection.changeDateTime()` binding.
- `RegionProvider.find*Variable` functions now try to match with and without whitespace (spaces, hyphens and underscores)
- Clean up `regionMapping.json` descriptions
- Implement Leaflet credits as a react component, so it is easier to maintain them. Leaflet view now show terria extra credits.
- Implement Cesium credits as a react component, so it is easier to maintain them.
- Implement data attribution modal for map data attributions/credits. Used by both Leaflet and Cesium viewers.
- Fixed translation of Leaflet and Cesium credits.
- TSXify `ChartPanelDownloadButton`
- `ChartPanelDownloadButton` will now only export columns which are visible in chart
- Cleanup `Mixin` and `Traits` inheritance
- Wrap the following components in `observer` - `ChartItem`, `LineChart`, (chart) `Legends`, `ChartPanelDownloadButton`
- Improve TerriaReference error logging
- Fix handling GeoJSON if features have null geometry
- Fix bug where map tools names appear as translation strings
- Allow IFC files to be added to a map from local or web data (Requires non-open source plugin)
- Rename `useTranslationIfExists` to `applyTranslationIfExists` so it doesn't look like a React hook.
- Added a required parameter i18n to `applyTranslationIfExists` to avoid having stale translated strings when the language changes.
- Fix `StoryBuilder` remove all text color
- Fix `FeatureInfoPanel` `Loader` color

#### 8.2.6 - 2022-06-17

- **Breaking changes:**
  - Changed translation resolution. Now the "translation" namespace loads only from `${terria.baseUrl}/languages/{{lng}}/translation.json` (TerriaJS assets) and "languageOverrides" loads from `languages/{{lng}}/languageOverrides.json` (a TerriaMap's assets)
- Removed EN & FR translation files from bundle. All translation files are now loaded on demand.
- Moved translation files from `lib/Language/*/translation.json` to `wwwroot/languages/*/translation.json`.
- Fixed default 3d-tiles styling to add a workaround for a Cesium bug which resulted in wrong translucency value for point clouds.
- Remove Pell dependency, now replaced with TinyMCE (WYSIWYG editor library).
- Added `beforeRestoreAppState` hook for call to `Terria.start()` which gets called before state is restored from share data.
- Made `order` optional for `ICompositeBarItem`.
- Fix `includes` path for `url-loader` rule so that it doesn't incorrectly match package names with `terriajs` as prefix.
- Add help button for bookmarking sharelinks to SharePanel (if that help item exists in config)

#### 8.2.5 - 2022-06-07

- Add Google Analytics event for drag and drop of files onto map.
- Allow users to choose whether Story is included in Share
- Fixed bug that broke Cesium when WebGL was not available. Reverts to Leaflet.
- Fixed bug where `new Terria()` constructror would try to access `document` and throw an error when running in NodeJS.
- Add WPS support for `Date` (additional to existing `DateTime`) and support for `ComplexData` `Date`/`DateTime` WPS Inputs.
- TSXified `StandardUserInterface` and some other components. If your TerriaMap imports `StandardUserInterface.jsx` remove the `.jsx` extension so webpack can find the new `.tsx` file.
- Fix use of `baseMapContrastColor` in region mapping/protomaps and remove `MAX_SELECTABLE_DIMENSION_OPTIONS`.
- `mapItems` can now return arbitrary Cesium primitives.
- Added progress of 3DTiles data source loading to Progress Bar.
- ProgressBar colour now depends on baseMapContrastColor - improves visibility on light map backgrounds.
- Update `terriajs-cesium` to `1.92.0`.
- Replace Pell WYSIWYG editor library with TinyMCE, allows richer editing of Stories in the Story Builder
- Added support for using Compare / Split Screen mode with Cesium 3D Tiles.
- Fix `BottomDock.handleClick` binding
- Use the theme base font to style story share panel.
- Fix problem with Story Prompt not showing
- Fix global body style (font and focus purple)
- Add `color:inherit` to `Button`

#### 8.2.4 - 2022-05-23

- Update protomaps to `1.19.0` - now using offical version.
- Fix Table/VectorStylingWorkflow for datasets with no columns/properties to visualise
- Improve default `activeStyle` in `TableMixin` - if no `scalar` style is found then find first style with enum, text and finally region.
- Add Mustache template support to `modelDimensions` for string properties in `option.value` (with the catalog member as context)
- Added a check for disableExport in ChartPanelDownloadButton.jsx. Prevents download button rendering.
- Fix `CatalogIndex` types
- Moved code for retrieving a model by id, share key or CatalogIndex to a new function `terria.getModelByIdShareKeyOrCatalogIndex`.
- Updated handling of `previewedItemId` to use new function `terria.getModelByIdShareKeyOrCatalogIndex`. This will now use CatalogIndex if the `previewedItemId` cannot be found in models or model share keys.
- Fixed a race condition inside ModalPopup that caused the explorer panel (data catalogue) to be stuck hidden until refresh.
- Fix bug that broke the `DiffTool` preventing it from opening.
- TSify `BottomDock` and `measureElement` components.
- Fixed a bug in `GltfMixin` which resulted in some traits missing from `GltfCatalogItem` and broke tools like the scene editor.
- Leaflet attribution can be set through `config.leafletAttributionPrefix`. Attribution HTML string to show on Leaflet maps. Will use Leaflet's default if undefined. To hide Leaflet attribution - set `leafletAttributionPrefix:""`
- Re-add missing `helpPanel.mapUserGuide` translation string
- Fix `sortMembersBy` for child `Groups` and `References`
- Add `raiseError` convenience method to `TerriaError`
- Improve `filterOutUndefined` types
- Add [Maki icons](https://labs.mapbox.com/maki-icons/) - these can be used in `TablePointStyleTraits`. For example `marker = "hospital"`
- Rename `ProtomapsImageryProvider.duplicate()` to `ProtomapsImageryProvider.clone()`.
- Add [`ts-essentials` library](https://github.com/ts-essentials/ts-essentials) - "a set of high-quality, useful TypeScript types that make writing type-safe code easier"
- `GeojsonMixin` improvements
  - `uveMvt` is now `useTableStylingAndProtomaps`
  - If `useTableStylingAndProtomaps` is true, then protomaps is used for Line and Polygon features, and `TableMixin` is used for Point features (see `createLongitudeLatitudeFeaturePerRow()`)
  - `GeoJsonTraits.style` is now only supported by Cesium primitives (if defined, then `useTableStylingAndProtomaps` will be false). Instead you can use `TableStyleTraits`
- `TableMixin` improvements
  - Add new `TableStyleMap` model, this is used to support `enum`, `bin` and `null` styles for the following:
    - `TablePointStyleTraits` - this supports markers (URLs or Maki icons) and rotation, width, height and pixelOffset.
    - Add `TableOutlineStyleTraits` - this supports color and width.
  - Legends are now handled by `TableAutomaticLegendStratum`
  - Legends will be merged across `TableStyleMaps` and `TableColorMap` - for example, marker icons will be shown in legend with correct colors. See `MergedStyleMapLegend`
  - Default `activeStyle` is now picked by finding the first column of type `scalar`, and then the first column of type `enum`, then `text` and then finally `region`.
- `ArcGisFeatureServiceCatalogItem` now uses Table styling and `protomaps`
- Adapted `BaseModel.addObject` to handle adding objects to `ArrayTraits` with `idProperty="index"` and `isRemoval`. The new object will be placed at the end of the array (across all strata).
- Add `allowCustomInput` property to `SelectableDimensionGroup` - if true then `react-select` will allow custom user input.
- `TableStylingWorkflow` improvements
  - Better handling of swapping between different color scheme types (eg enum or bin)
  - Add point, outline and point-size traits

#### 8.2.3 - 2022-04-22

- **Breaking changes:**
  - `CkanItemReference` no longer copies `default` stratum to target - please use `itemProperties` instead.
- **Revert** Use CKAN Dataset `name` property for WMS `layers` as last resort.
- Add support for `WebMapServiceCatalogGroup` to `CkanItemReference` - this will be used instead of `WebMapServiceCatalogItem` if WMS `layers` can't be identified from CKAN resource metadata.
  - Add `allowEntireWmsServers` to `CkanCatalogGroupTraits` - defaults to `true`
- Ignore WMS `Layers` with duplicate `Name` properties
- Fix selectable dimensions passing reactive objects and arrays to updateModelFromJson (which could cause problems with array detection).

#### 8.2.2 - 2022-04-19

- Fixed a whitescreen with PrintView.

#### 8.2.1 - 2022-04-13

- Fixed selectable-dimension checkbox group rendering bug where the group is hidden when it has empty children.

#### 8.2.0 - 2022-04-12

- **Breaking changes:**
  - Multiple changes to `GtfsCatalogItem`:
    - Removed `apiKey` in favour of more general `headers`
    - Removed unused `bearingDirectionProperty` & `compassDirectionProperty`
    - `image` is no longer resolved relative to the TerriaJS asset folder. This will allow using relative URLs for assets that aren't inside the TerriaJS asset folder. Prepend "build/TerriaJS/" (the value of `terria.baseUrl`) to any existing relative `image` urls.
- Added `colorModelsByProperty` to `GtfsCatalogItem` which will colour 1 model differently for different vehichles based on properties matched by regular expression. E.g. colour a vehicle model by which train line the vehicle is travelling on.
- Fixed a bug where cross-origin billboard images threw errors in Leaflet mode when trying to recolour the image.
- Changed rounding of the numbers of the countdown timer in the workbench UI for items that use polling. The timer wil now show 00:00 for at most 500ms (instead of a full second). This means that for timers that are a multiple of 1000ms the timer will now show 00:01 for the last second before polling, instead of 00:00.
- TSified `BuildShareLink`, `InitSourceData` and `ShareData`.
- Added `HasLocalData` interface - which has `hasLocalData` property to implement.
- Added `ModelJson` interface - which provides loose type hints for Model JSON.
- Added `settings` object to `InitSourceData` - provides `baseMaximumScreenSpaceError, useNativeResolution, alwaysShowTimeline, baseMapId, terrainSplitDirection, depthTestAgainstTerrainEnabled` - these properties are now saved in share links/stories.
- Moved `setAlwaysShowTimeline` logic from `SettingsPanel` to `TimelineStack.ts`.

#### 8.1.27 - 2022-04-08

- Use CKAN Dataset `name` property for WMS `layers` as last resort.
- Set CKAN Group will now set CKAN Item `name` in `definition` stratum.
- Ignore GeoJSON Features with no geometry.
- Fix feedback link styling.
- Improve `CatalogIndexReference` error messages.

#### 8.1.26 - 2022-04-05

- **Breaking changes**
  - All dynamic groups (eg `WebMapServiceCatalogGroup`) will create members and set `definition` strata (instead of `underride`)
- New `GltfMixin`, which `GltfCatalogItem` now uses.
- Hook up `beforeViewerChanged` and `afterViewerChanged` events so they are
  triggered on viewer change. They are raised only on change between 2D and 3D
  viewer mode.
- Removed references to conversion service which is no longer used in version >=8.0.0.
- Added experimental routing system - there may be breaking changes to this system in subsequent patch releases for a short time. The routes currently include:
  - `/story/:share-id` ➡ loads share JSON from a URL `${configParameters.storyRouteUrlPrefix}:share-id` (`configParameters.storyRouteUrlPrefix` must have a trailing slash)
  - `/catalog/:id` ➡ opens the data catalogue to the specified member
- Fixed a polyline position update bug in `LeafletVisualizer`. Polylines with time varying position will now correctly animate in leaflet mode.
- Change button cursor to pointer
- Add `GeoJsonTraits.filterByProperties` - this can be used to filter GeoJSON features by properties
- Add GeoJSON `czmlTemplate` support for `Polygon/MultiPolygon`
- Add custom `heightOffset` property to `czmlTemplate`
- Fixed a bug where Cesium3DTilePointFeature info is not shown when being clicked.
- Added optional `onDrawingComplete` callback to `UserDrawing` to receive drawn points or rectangle when the drawing is complete.
- Fixed a bug in `BoxDrawing` where the box can be below ground after initialization even when setting `keepBoxAboveGround` to true.
- Add `itemProperties`, `itemPropertiesByType` and `itemPropertiesByIds` to `GroupTraits` and `ReferenceTraits`.
  - Properties set `override` strata
  - Item properties will be set in the following order (highest to lowest priority) `itemPropertiesByIds`, `itemPropertiesByType`, `itemProperties`.
  - If a parent group has `itemProperties`, `itemPropertiesByType` or `itemPropertiesByIds` - then child groups will have these values copied to `underride` when the parent group is loaded
  - Similarly with references.
- Fix `viewCatalogMember` bug - where `_previewItem` was being set too late.
- Improve error message in `DataPreview` for references.
- Fix alignment of elements in story panel and move some styling from scss to styled components
- Click on the stories button opens a story builder (button on the left from story number)
- Added ASGS 2021 regions to region mapping:
  - SA1-4 (e.g. sa3_code_2021)
  - GCCSA
  - STE & AUS (aliased to existing 2011/2016 data due to no change in geometry, names & codes)
- Added LGA regions from 2019 & 2021 to region mapping - only usable by lga code
- Increase `ForkTsCheckerWebpackPlugin` memoryLimit to 4GB
- Add `renderInline` option to markdownToHtml/React + TSify files
- Organise `lib/Map` into folder structure
- When `modelDimensions` are changed, `loadMapItems()` is automatically called
- Add `featureCounts` to `GeoJsonMixin` - this tracks number of GeoJSON Features by type
- Add `polygon-stroke`, `polyline-stroke` and `marker-stroke` to GeoJSON `StyleTraits` - these are only applied to geojson-vt features (not Cesium Primitives)
- TableMixin manual region mapping dimensions are now in a `SelectableDimensionGroup`
- Fix misc font/color styles
- Create reusable `StyledTextArea` component
- `Collapsible` improvements:
  - Add `"checkbox"` `btnStyle`
  - `onToggle` can now stop event propagation
  - `title` now supports custom markdown
- Add `rightIcon` and `textLight` props to `Button`
- New `addTerriaScrollbarStyles` scss mixin
- `TableAutomaticStylesStratum` now creates `styles` for every column - but will hide columns depending on `TableColumnType`
- `TableAutomaticStylesStratum.numberFormatOptions` is now `TableStyle.numberFormatOptions`
- Implement `TableColorStyleTraits.legendTicks` - this will determine number of ticks for `ContinuousColorMap` legends
- `DiscreteColorMap` will now use `minimumValue`/`maximumValue` to calculate bins
- `SelectableDimensions` improvements
  - Add `color`, `text`, `numeric` and `button` types
  - Add `onToggle` function to `SelectableDimensionGroup`
  - `Group` and `CheckboxGroup` now share the same UI and use `Collapsible`
  - `enum` (previously `select`) now uses `react-select` component
  - `color` uses `react-color` component
  - `DimensionSelectorSection` / `DimensionSelector*` are now named the same as the model - eg `SelectableDimension`
- Create `Portal`, `PortalContainer`,`SidePanelContainer` and `WorkflowPanelContainer`. There are used by `WorkflowPanel`.
- Create `WorkflowPanel` - a basic building block for creating Workflows that sit on top of the workbench
  - It has three reusable components, `Panel`, `PanelButton`, `PanelMenu`
- Create `selectableDimensionWorkflow` - This uses `WorkflowPanel` to show `SelectableDimensions` in a separate side panel.
  - `TableStylingWorkflow` - set styling options for TableMixin models
  - `VectorStylingWorkflow` - this extends `TableStylingWorkflow` - used to set styling options for GeoJsonMixin models (for Protomaps/geojson-vt only)
- Create `viewingControls` concept. This can be used to add menu items to workbench items menu (eg "Remove", "Export", ...)
  - TSXify `ViewingControls`
- Add temporary `legendButton` property - this is used to show a "Custom" button above the Legend if custom styling has been applied
  - This uses new `TableStyle.isCustom` property
- Move workbench item controls from `WorkbenchItem.jsx` `WorkbenchItemControls.tsx`
- Add `UrlTempalteImageryCatalogItem`, rename `RasterLayerTraits` to `ImageryProviderTraits` and add some properties.
- Added `ViewingControlsMenu` for making catalog wide extensions to viewing controls options.
- Added `MapToolbar`, a simpler API for adding buttons to the map navigation menu for the most common uses cases.
- Added `BoxDrawing` creation methods `fromTransform` and `fromTranslationRotationScale`.
- Fixed a bug where `zoom` hangs for catalog items with trait named `position`.
- Moved workflows to `Models/Workflows` and added helper method `runWorkflow` to invoke a workflow.
- Change NaturalEarth II basemap to use `url-template-imagery`
- Remove Gnaf API related files as the service was terminated.

#### 8.1.25 - 2022-03-16

- Fix broken download link for feature info panel charts when no download urls are specified.
- Fixed parameter names of WPS catalog functions.
- Improve WMS 1.1.1 support
  - Added `useWmsVersion130` trait - Use WMS version 1.3.0. True by default (unless `url` has `"version=1.1.1"` or `"version=1.1.0"`), if false, then WMS version 1.1.1 will be used.
  - Added `getFeatureInfoFormat` trait - Format parameter to pass to GetFeatureInfo requests. Defaults to "application/json", "application/vnd.ogc.gml", "text/html" or "text/plain" - depending on GetCapabilities response
- Add `legendBackgroundColor` to `LegendOwnerTraits` and `backgroundColor` to `LegendTraits`
- Add `sld_version=1.1.0` to `GetLegendGraphics` requests
- Filter `"styles","version","format","srs","crs"` conflicting query parameters from WMS `url`
- WMS `styles`, `tileWidth`, `tileHeight` and `crs`/`srs` will use value in `url` if it is defined (similar to existing behavior with `layers`)
- WMS will now show warning if invalid `layers` (eg if the specified `layers` don't exist in `GetCapabilities`)
- ArcGisFeatureServerCatalogItem can now load more than the maximum feature limit set by the server by making multiple requests, and uses GeojsonMixin
- Avoid creating duplication in categories in ArcGisPortalCatalogGroup.
- Fix `CatalogMemberMixin.hasDescription` null bug
- `TableStyle` now calculates `rectangle` for point based styles
- Fixed error installing dependencies by changing dependency "pell" to use github protocol rather than unencrypted Git protocol, which is no longer supported by GitHub as of 2022-03-15.

#### 8.1.24 - 2022-03-08

- Ignores duplicate model ids in members array in `updateModelFromJson`
- Add support for `crs` property in GeoJSON `Feature`
- Add feature highlighting for Protomaps vector tiles
- Add back props `localDataTypes` and `remoteDataTypes` to the component `MyData` for customizing list of types shown in file upload modal.

#### 8.1.23 - 2022-02-28

- **Breaking changes**:
  - `IDEAL ZOOM` can be customised by providing `lookAt` or `camera` for `idealZoom` in `MappableTraits`. The `lookAt` takes precedence of `camera` if both exist. The values for `camera` can be easily obtained from property `initialCamera` by calling shared link api .

* Fixed crash caused by ArcGisMapServerCatalogItem layer missing legend.
* Refactored StoryPanel and made it be collapsible
* Added animation.ts as a utility function to handle animation end changes (instead of using timeout)
* Fixed a bug where `buildShareLink` serialised the feature highlight model & geometry. Picked features are still serialised and geometry is reloaded on accessing the share link.

#### 8.1.22 - 2022-02-18

- Added play story button in mobile view when there is an active story
- `IDEAL ZOOM` can be customised by providing `idealZoom` property in `MappableTraits`.
- Fix `AddData` options

#### 8.1.21 - 2022-02-08

- Fixed bug where WMS layer would crash terria if it had no styles, introduced in 8.1.14

#### 8.1.20 - 2022-02-04

- Fixed whitescreen on Print View in release/production builds

#### 8.1.19 - 2022-01-25

- Add WMS support for `TIME=current`
- Only show `TableMixin.legends` if we have rows in dataColumnMajor and mapItems to show
- Add `WebMapServiceCatalogGroup.perLayerLinkedWcs`, this can be used to enable `ExportWebCoverageService` for **all** WMS layers. `item.linkedWcsCoverage` will be set to the WMS layer `Name` if it is defined, layer `Title` otherwise.
- MagdaReference can use addOrOverrideAspects trait to add or override "terria" aspect of target.
- Added new print preview page that opens up in a new window
- TSXified PrintView

#### 8.1.18 - 2022-01-21

- Add missing default Legend to `TableAutomaticStylesStratum.defaultStyle`
- Fix a bug in CompositeCatalogItem that causes share URLs to become extremely long.
- Fix `OpacitySection` number precision.
- Add `sortMembersBy` to `GroupTraits`. This can be set to sort group member models - For example `sortMembersBy = "name"` will alphabetically sort members by name.
- Remove `theme.fontImports` from `GlobalTerriaStyles` - it is now handled in `TerriaMap/index.js`
- Add check to `featureDataToGeoJson.getEsriFeature` to make sure geometry exists

#### 8.1.17 - 2022-01-12

- **Breaking changes**:
  - Minimum node version is now 12 after upgrading node-sass dependency

* Automatically cast property value to number in style expressions generated for 3d tiles filter.
* Re-enable procedure and observable selectors for SOS items.
* Fix broken "Ideal zoom" for TableMixin items.
* The opacity of 3d tiles can now be changed with the opacity slider in the workbench
* RasterLayerTraits and Cesium3dTilesTraits now share the newly created OpacityTraits
* `disableOpacityControl` is now a trait and can be set in the catalog.
* TSXified OpacitySection
* Upgrade compiler target from es2018 to es2019
* Fix default table style legends
* Remove SOS defaults legend workaround
* Update NodeJS version to 14 in `npm-publish` GitHub action

#### 8.1.16 - 2021-12-23

- Added region mapping support for Commonwealth Electoral Divisions as at 2 August 2021 (AEC) as com_elb_name_2021.

#### 8.1.15 - 2021-12-22

- Fix sharelink bug, and make `isJson*` type checks more rigorous
- Remove `uniqueId` from `CatalogMemberMixin.nameInCatalog` and add it as fallback to `CatalogMemberMixin.name`
- Add `shareKeys` and `nameInCatalog` to `CatalogIndexReference`.
- Remove `description` field from `CatalogIndex`
  - The `CatalogIndex` can now be used to resolve models in sharelinks
- Add support for zipped `CatalogIndex` json files.
- Fix `SplitReferences` which use `shareKeys`
- Make `isJson*` type assertion functions more rigorous
  - Add `deep` parameter, so you can use old "shallow" type check for performance reasons if needed
- Add Shapefile to `CkanDefaultFormatsStratum`
- Fix `ArcGisMapServerCatalogItem` metadata bug
- Remove legend traits from CatalogMemberMixin, replacing them with LegendOwnerTraits, and add tests to enforce correct use of legends.
- Add better support for retreiving GeoJsonCatalogItem data through APIs, including supporting geojson nested within json objects
- Fixed `ContinuousColorMap` min/max value bug.
- `TableStyle.outlierColor` is now only used if `zFilter` is active, or `colorTraits.outlierColor` is defined
- Add `forceConvertResultsToV8` to `WebProcessingServiceCatalogFunction`. If your WPS processes are returning v7 json, you will either need to set this to `true`, or set `version: 0.0.1` in JSON output (which will then be automatically converted to v8)
- Cleanup `CatalogFunction` error handling
- Fix `SelectAPolygonParameterEditor` feature picking (tsified)
- Add `WebMapServiceCatalogItem.rectangle` support for multiple WMS layers
- Fix picked feature highlighting for ArcGis REST API features (and TSify `featureDataToGeoJson`)
- Re-enable GeoJSON simple styling - now if more than 50% of features have [simple-style-spec properties](https://github.com/mapbox/simplestyle-spec) - automatic styling will be disabled (this behaviour can be disabled by setting `forceCesiumPrimitives = false`)
- Don't show `TableMixin` `legends` or `mapItems` if no data
- Fix `GeoJsonCatalogItem.legends`
- Add `isOpen` to `TerriaReferenceTraits`

#### 8.1.14 - 2021-12-13

- **Breaking changes**:
  - `Result.throwIfUndefined()` will now only throw if `result.value` is undefined - regardless of `result.error`

* Reimplement option to zoom on item when adding it to workbench, `zoomOnAddToWorkbench` is added to `MappableTraits`.
* Update terria-js cesium to `1.81.3`
* Re-allowed models to be added to `workbench` if the are not `Mappable` or `Chartable`
* Moved `WebMapServiceCatalogItem.GetCapbilitiesStratum` to `lib\Models\Catalog\Ows\WebMapServiceCapabilitiesStratum.ts`
* Moved `WebMapServiceCatalogItem.DiffStratum` to `DiffableMixin`
* `callWebCoverageService` now uses version WCS `2.0.0`
  - All WCS export functionality is now in `ExportWebCoverageServiceMixin`
  - Added `WebCoverageServiceParameterTraits` to `WebMapServiceCatalogItemTraits.linkedWcsParameters`. It includes `outputFormat` and `outputCrs`
  - Will attempt to use native CRS and format (from `DescribeCoverage`)
  - No longer sets `width` or `height` - so export will now return native resolution
* Anonymize user IP when using google analytics.
* Fix crash when TableMixin-based catalog item had invalid date values
* Fix `WebMapServiceCatalogItem.styles` if `supportsGetLegendGraphics = false`. This means that if a WMS server doesn't support `GetLegendGraphics` requests, the first style will be set as the default style.

#### 8.1.13 - 2021-12-03

- Paramerterised the support email on the help panel to use the support email in config
- Refactored `TableColumn get type()` to move logic into `guessColumnTypeFromValues()`
- `TableMixin.activeStyle` will set `TableColumnType = hidden` for `scalar` columns with name `"id"`, `"_id_"` or `"fid"`
- Fix bug `TableColumn.type = scalar` even if there were no values.
- Table columns named `"easting"` and `"northing"` are now hidden by default from styles
- `TableColumn.type = enum` requires at least 2 unique values (including null) to be selected by default
- Tweak automatic `TableColumn.type = Enum` for wider range of values
- Exporting `TableMixin` will now add proper file extensions
- Added `TimeVaryingTraits.timeLabel` trait to change label on `DateTimeSelectorSection` (defaults to "Time:")
  - This is set to `timeColumn.title`
- `TableColumn` will try to generate prettier `title` by un-camel casing, removing underscores and capitalising words
- `TableStyle` `startDates`, `finishDates` and `timeIntervals` will only set values for valid `rowGroups` (invalid rows will be set to `null`). For example, this means that rows with invalid regions will be ignored.
- Add "Disable style" option to `TableMixin.styleDimensions` - it can be enabled with `TableTraits.showDisableStyleOption`
- Added `timeDisableDimension` to `TableMixin` - this will render a checkbox to disable time dimension if `rowGroups` only have a single time interval per group (i.e. features aren't "moving" across time) - it can be enabled with `TableTraits.showDisableTimeOption` - `TableAutomaticStylesStratum` will automatically enable this if at least 50% of rowGroups only have one unique time interval (i.e. they don't change over time)\
- Remove border from region mapping if no data
- Add `baseMapContrastColor` and `constrastColor` to `BaseMapModel`
- Fixed `TableMixin.defaultTableStyle.legends` - `defaultTableStyle` is now not observable - it is created once in the `contructor`
- Removed `Terria.configParameters.enableGeojsonMvt` - geojson-vt/Protomaps is now used by default
- `GpxCatalogItem` now uses `GeojsonMixin`
- Add an external link icon to external hyperlink when using method `parseCustomHtmlToReact`. This feature can be switched off by passing `{ disableExternalLinkIcon: true }` in `context` argument.
- Tsify `sendFeedback.ts` and improve error messages/notifications
- Removed unused overrideState from many DataCatalog React components.
- Fixed a bug where adding a timeseries dataset from the preview map's Add to map button didn't add the dataset to the `timelineStack`.
- Fixed incorrect colour for catalog item names in the explorer panel when using dynamic theming.
- Moved `CatalogIndex` loading from constructor (called in `Terria.start`) to `CatalogSearchProvider.doSearch` - this means the index will only be loaded when the user does their first search
- Add basic auth support to `generateCatalogIndex`, fix some bugs and improve performance
- Update terria-js cesium to `1.81.2`
- Add `uniqueId` as fallback to `nameInCatalog`
- Remove duplicated items from `OpenDataSoftGroup` and `SocrataGroup`

#### 8.1.12 - 2021-11-18

- Bigger zoom control icons.
- Modified "ideal zoom" to zoom closer to tilesets and datasources.
- Added `configParameters.feedbackPostamble`. Text showing at the bottom of feedback form, supports the internationalization using the translation key
- `GeoJsonMixin.style["stroke-opacity"]` will now also set `polygonStroke.alpha` and `polylineStroke.alpha`
- Reduce `GeoJsonMixin` default stroke width from `2` to `1`
- Add `TableMixin` styling to `GeoJsonMixin` - it will treat geojson feature properties as "rows" in a table - which can be styled in the same way as `TableMixin` (eg CSV). This is only enabled for geojson-vt/Protomaps (which requires `Terria.configParameters.enableGeojsonMvt = true`). For more info see `GeojsonMixin.forceLoadMapItems()`
  - This can be disabled using `GeojsonTraits.disableTableStyle`
- Opacity and splitting is enabled for Geojson (if using geojson-vt/protomaps)
- Replaced `@types/geojson` Geojson types with `@turf/helpers`
- In `GeojsonMixin` replaced with `customDataLoader`, `loadFromFile` and `loadFromUrl` with `forceLoadGeojsonData`
- `GeojsonMixin` will now convert all geojson objects to FeatureCollection
- Exporting `GeojsonMixin` will now add proper file extensions
- `WebFeatureServiceCatalogItem` now uses `GeoJsonMixin`
- Fix `ProtomapsImageryProvider` geojson feature picking over antimeridian
- Add Socrata group to "Add web data
- Added "marker-stroke-width", "polyline-stroke-width", "polygon-stroke-width" to `GeojsonStyleTraits` (Note these are not apart of [simplestyle-spec](https://github.com/mapbox/simplestyle-spec/tree/master/1.1.0) and can only be used with `geojson-vt`)
- Add a method refreshCatalogMembersFromMagda to Terria class.
- Renable `useNativeResolution` on mobile
- Store `useNativeResolution`, `baseMaximumScreenSpaceError` as local properties
- Moved CKAN default `supportedFormats` to `CkanDefaultFormatsStratum`
- Add properties to `CkanResourceFormatTraits`
  - `maxFileSize` to filter out resources with large files (default values: GeoJSON = 150MB, KML = 30MB, CZML = 50MB)
  - `removeDuplicates` (which defaults to true) so we don't get duplicate formats for a dataset (it will check `resource.name`)
    - If there are multiple matches, then the newest (from resource.created property) will be used
  - `onlyUseIfSoleResource` to give a given resource format unless that is all that exists for a dataset
- Add CKAN `useSingleResource`, if `true`, then the highest match from `supportedResourceFormats` will be used for each dataset
- ArcGis Map/Feature Service will now set CRS from `latestWkid` if it exists (over `wkid`)
- Fix CKAN ArcGisFeatureService resources
- ArcGisFeatureServer will now set `outSR=4326` so we don't need to reproject client-side

#### 8.1.11 - 2021-11-15

- Fix `SettingsPanel` type issue

#### 8.1.10 - 2021-11-15

- Fix `CswCatalogGroup` XML types
- Added `MAINCODE` aliases for all ABS Statistical Area regions that were missing them.
- Fixed `superGet` replacement in webpack builds with babel versions `7.16.0` and above.

#### 8.1.9 - 2021-11-01

- TSify workbench splitter control and fix broken styling.
- Fix app crash when opening AR tool.

#### 8.1.8 - 2021-10-29

- Tsified `SettingPanel`
- Moved `setViewerMode` function from `Terria` class to `ViewerMode`
- Refactored checkbox to use children elements for label instead of label
  property, `isDisabled`, `isChecked` and `font-size: inherit` style is passed
  to each child element (so propper styling is maintained)
- Fix an internal bug where Cesium.prototype.observeModelLayer() fails to remove 3D tilesets in certain cases.
- Rename `TerriaError._shouldRaiseToUser` to `overrideRaiseToUser`
  - Note: `userProperties.ignoreError = "1"` will take precedence over `overrideRaiseToUser = true`
- Fix `overrideRaiseToUser` bug causing `overrideRaiseToUser` to be set to `true` in `TerriaError.combine`
- Add `rollbar.warning` for `TerriaErrorSeverity.Warning`
- Disable `zFilter` by default
- Remove use of word "outlier" in zFilter dimension and legend item (we now use "Extreme values")
- Add `cursor:pointer` to `Checkbox`
- Fix `MapNavigation` getter/setter `visible` bug.
  - Replace `CompositeBarItemController` `visible` setter with `setVisible` function
- Use `yarn` in CI scripts (and upgrade node to v14)
- Fix app crash when previewing a nested reference in the catalog (eg when viewing an indexed search result where the result is a reference).
- Ported feaure from v7 to set WMS layers property from the value of `LAYERS`, `layers` or `typeName` from query string of CKAN resource URL.

#### 8.1.4 - 2021-10-15

- Make flex-search usage (for `CatalogIndex`) web-worker based
- Add `completeKnownContainerUniqueIds` to `Model` class - This will recursively travese tree of knownContainerUniqueIds models to return full list of dependencies
- Add all models from `completeKnownContainerUniqueIds` to shareData.models (even if they are empty)

#### 8.1.3 - 2021-10-14

- Reimplement map viewer url param
- Added `terriaError.importance` property. This can be set to adjust which error messages are presented to the user.
  - `terriaErrorNotification` and `WarningBox` will use the error message with highest importance to show to the user ("Developer details" remains unchanged)
- Add `terriaError.shouldRaiseToUser` override, this can be used to raise errors with `Warning` severity.
- `terriaError.raisedToError` will now check if **any** `TerriaError` has been raised to the user in the tree.
- `workbench.add()` will now keep items which only return `Warning` severity `TerriaErrors` after loading.
- Improve SDMX error messages for no results
- Fix SDMX FeatureInfoSection time-series chart to only show if data exists.
- Improve GeoJSON CRS projection error messages
- Add `Notification` `onDismiss` and `ignore` properties.
- Fix `AsyncLoader` result bug
- Remove `Terria.error` event handler
- Refactor `workbench.add` to return `Result`
- Consolidated network request / CORS error message - it is now in `t("core.terriaError.networkRequestMessage")`.
  - It can be injected into other translation strings like so: `"groupNotAvailableMessage": "$t(core.terriaError.networkRequestMessage)"`
  - Or, you can use `networkRequestError(error)` to wrap up existing `TerriaError` objects
- Fix incorrect default `configParameters.feedbackPreamble`
- Fix incorrect default `configParameters.proj4def` - it is now `"proj4def/"`
- Fix Branding component. It wasn't wrapped in `observer` so it kept getting re-rendered
- Add `FeedbackLink` and `<feedbacklink>` custom component - this can be used to add a button to open feedback dialog (or show `supportEmail` in feedback is disabled)
- Fix `ContinuousColorMap` `Legend` issue due to funky JS precision
- Fix mobx computed cycle in `CkanDatasetStratum` which was making error messages for failed loading of CKAN items worse.

#### 8.1.2 - 2021-10-01

- Removed duplicate Help icon and tooltip from the map navigation menu at the bottom as it is now shown in the top menu.
- Fixed a bug where the app shows a scrollbar in some instances.
- Wrap clean initSources with action.
- Modified `TerriaReference` to retain its name when expanded. Previously, when the reference is expanded, it will assume the name of the group or item of the target.
- Proxy `catalogIndex.url`

#### 8.1.1 - 2021-09-30

- **Breaking changes:**
  - `blacklist` has been renamed to `excludeMembers` for `ArcGisPortalCatalogGroup` and `CkanCatalogGroup`.

* Tsifyied and refactored `RegionProvider` and `RegionProviderList`, and re-enabled `loadRegionIDs`
* `TableColorMap` `minimumValue` and `maximumValue` will now take into account valid regions.
* `tableMixin.loadRegionProviderList()` is now called in `tableMixin.forceLoadMapItems()` instead of `mappableMixin.loadMapItems()`
* Add TableColumn and TableStyle `ready` computed property. Columns will only be rendered if `ready` is `true`. At the moment it is only used to wait until `loadRegionIDs` has finished.
* Moved region mapping `ImageryProvider` code to `lib/Table/createRegionMappedImageryProvider.ts`
* Fix `ChartPanel` import `Result` bug.
* Improve handling of featureInfoTemplate for composite catalog items.
* Mobile help menu will now show a link to map user guide if it is configured in `Terria.configParameters.helpItems`.
* Fixed the layout of items in mobile navigation
* Add Mapbox Vector Tile support. This is using [protomaps.js](https://github.com/protomaps/protomaps.js) in the new `ProtomapsImageryProvider`. This includes subset of MVT style specification JSON support.
* `MapboxVectorCanvasTileLayer` is now called `ImageryProviderLeafletGridLayer`
* `CesiumTileLayer` is now called `ImageryProviderLeafletTileLayer`.
* Added `geojson-vt` support to `GeoJsonMixin`, which will tile geojson into vector tiles on the fly, and use the new `ProtomapsImageryProvider`.
* Added `configParameter.enableGeojsonMvt` temporary feature flag for experimental Geojson-Mapbox vector tiles. Default is `false`.
* Added `forceCesiumPrimitives` to `GeoJsonTraits`. This can be used to render cesium primitives instead of Mapbox vector-tiles (if `configParameter.enableGeojsonMvt` is `true`)
* Add `scale` observable to `TerriaViewer`. This will give distance between two pixels at the bottom center of the screen in meters.
* Fixed `withControlledVisibility` method to inherit `propTypes` of its wrapped component.
* Added `MinMaxLevelMixin` and `MinMaxLevelTraits` to handle defining min and max scale denominator for layers.
* Extracted function `scaleToDenominator` to core - for conversion of scale to zoom level.
* Share/start data conversion will now only occur if `version` property is `0.x.x`. Previously, it was `version` property is **not** `8.x.x`
* Filter table column values by Z Score. This is controlled by the following `TableColorStyleTraits`:
  - `zScoreFilter` - Treat values outside of specifed z-score as outliers, and therefore do not include in color scale. This value is magnitude of z-score - it will apply to positive and negative z-scores. For example a value of `2` will treat all values that are 2 or more standard deviations from the mean as outliers. This must be defined to be enabled - currently it is only enabled for SDMX (with `zScoreFilter=4`).
  - `zScoreFilterEnabled - True, if z-score filter is enabled
  - `rangeFilter` - This is applied after the `zScoreFilter`. It is used to effectively 'disable' the zScoreFilter if it doesn't cut at least the specified percange of the range of values (for both minimum and maximum value). For exmaple if `rangeFilter = 0.2`, then the zScoreFilter will only be effective if it cuts at least 20% of the range of values from the minimum and maximum value
* Add `outlierColor` to `ContinuousColorMap`
* Add `placement` to `SelectableDimension`. This can be used to put `SelectableDimension` below legend using `placement = "belowLegend`
* Add `SelectableDimensionCheckbox` (and rename `SelectableDimension` to `SelectableDimensionSelect`)
* Add `outlierFilterDimension` checkbox `SelectableDimension` to workbench to enable/disable dimension
* Extend `tableStyle.rowGroups` to regions
* Fix `spreadFinishTime` bug
* Fix diverging `ContinuousColorMap` - it will now center color scale around 0.
* Refactor `SocrataMapViewCatalogItem` to use `GeoJsonMixin`
* `SocrataCatalogGroup` will not not return groups for Facets if there is only one - so it skips an unnecessary group level.
* Update protomaps.js to `1.5.0`
* SDMX will now disable the region column if less than 2 valid regions have been found
* Set `spreadStartTime` and `spreadFinishTime` to `true` for SDMX
* Add SDMX `metadataURLs` from dataflow annotations
* Improve SDMX chart titles
* `TableMixin` will now remove data if an error occurs while calling `forceLoadTableData`
* Make `regionColumn` `isNullable` - this means region column can be disabled by setting to `null`.
* Fix scalar column color map with a single value
* TableMixin will now clear data if an error occurs while calling `forceLoadTableData`
* `TableMixin` will now not return `mapItems` or `chartItems` if `isLoading`
* SDMX will now use `initialTimeSource = stop`
* Fix `duplicateModels` duplicating observables across multiple models
* Support group models in workbench -- All members will be automatically added to the map.
* Added location search button to welcome modal in mobile view.
* Add `DataUrlTraits` to `CatalogMemberTraits.dataUrls`. It contains an array of data URLS (with optional `title` which will render a button). It is handled the same as `MetadataUrls` except there is a `type` property which can be set to `wcs`, `wfs`... to show info about the URL.
* Made search location bar span full width in mobile view.
* Automatically hide mobile modal window when user is interacting with the map.
* Disabled feature search in mobile
* Disabled export (clip&ship) in mobile
* Fixed misplaced search icon in mobile safari.
* Prevents story text from covering the whole screen in mobile devices.
* Add `CatalogIndex`, `CatalogIndexReference` and `generateCatalogIndex()` script. These can be used to generate a static JSON index of a terria catalog - which can then be searched through using `flexsearch`
* Added `weakReference` flag `ReferenceMixin`, this can be used to treat References more like a shortcut (this means that `sourceReference` isn't used when models are shared/added to the workbench - the `target` is used instead)
* GroupMixin.isMixedInto and MappableMixin.isMixedInto are now more strict - and won't pass for for References with `isMappable` or `isGroup`.
* `Workbench.add` can now handle nested `References` (eg `CatalogIndexReference -> CkanReference -> WMSCatalogItem`).
* Add `description` trait to `CatalogMemberReferenceTraits`
* Added `excludeMembers` property to `GroupTraits` (this replaced the `blacklist` property in v7). It is an array of strings of excluded group and item names. A group or item name that appears in this list will not be shown to the user. This is case-insensitive and will also apply to all child/nested groups
* Fixes an app crash on load in iOS-Safari mobile which was happening when rendering help panel tooltips.
* Fixed `WebMapServiceCatalogItem` not sending additional `parameters` in `GetFeatureInfo` queries.
* Changed mobile header icons and improved styling.
* Fixed a problem with computeds and AsyncLoader when loading `mapItems` (and hence children's `mapItems`) of a CompositeCatalogItem.
* Fix `YDYRCatalogFunction` `description`
* Extend input field for search in mobile view to full width of the page.
* Automatically hide mobile modal window when user is interacting with the map (like picking a point or drawing a shape).
* Adjusted styling of x-axis labels in feature info panel to prevent its clipping.
* When expanding charts from the same catalog item, we now create a new item if the expanded chart has a different title from the previously expanded chart for the same item. This behavior matches the behavior in `v7`.
* Improve status message when feature info panel chart is loading
* Fix broken chart panel download button.
* Changed @vx/_ dependencies to @visx/_ which is the new home of the chart library
* The glyph style used for chart points can now be customized.
* Added `TerriaReference` item, useful for mounting a catalog tree from an external init file at any position in the current map's catalog tree.
* Changed @vx/_ dependencies to @visx/_ which is the new home of the chart library
* The glyph style used for chart points can now be customized.
* Chart tooltip and legend bar can now fit more legends gracefully.

#### 8.1.0 - 2021-09-08

- **Breaking changes:**
  - Overhaul of map navigation: items no longer added inside UserInterface using <Nav> jsx.

* New version of map navigation ([#5062](https://github.com/TerriaJS/terriajs/pull/5062))
  - It consists of
    - a high level api `MapNavigationModel` for managing the navigation items, which is responsible for managing the state of navigation items. It is passing commands to invidual item controller.
    - a `MapNavigationItemController` that holds and control the state of navigation item. When new navigation item is created it should extend controller and provide the definition on how it state should be updated.
  - Terria exposes instance of navigation model to the world.
  - Converted all existing navigation items to utilise new navigation model, and registered them in terria navigation model (`registerMapNavigations.tsx`).
  - Resolved issue with some navigation items not being clickable on mobile due to overlap from others.
* Fixed a bug in Difference tool where difference image was showing with zero opacity in some situations.
* Fixed `CzmlCatalogItem` to react correctly to input data changes.

#### 8.0.1 - 2021-09-06

- Added `catalog-converter` support for v7 `#start` data.
- add french Help button translation
- Enable FeatureInfoSectionSpec tests
- Add `itemProperties` to `ArcGisMapServerCatalogGroupTraits` so that `ArcGisMapServerCatalogGroup` can override relevant traits of its layers.
- Add `feature` object to `FeatureInfoSection.getTemplateData`
- Add a way to replace text in feature info templates. See [Replace text](doc/connecting-to-data/customizing-data-appearance/feature-info-template.md) for details.
- Fixed unnecessary model reloads or recomputing of `mapItems` when switching between story scenes.
- Fixed story reset button.
- Moved help button to the top menu

#### 8.0.0 - 2021-08-13

- **Breaking changes**:
  - Require `translate#` in front of translatable content id in `config.json` (i.e. `helpContent`).
  - `colorPalette` no longer supports a list of CSS colors (eg `rgb(0,0,255)-rgb(0,255,0)-rgb(255,0,0)`). Instead please use `binColors`.
  - Organise `Traits` folder into `Traits/Decorators` and `Traits/TraitsClasses`
  - Renamed all mixin instance type definitions to `XMixin.Instance`.
  - Basemaps are now defined as `baseMaps` object (see [baseMaps object docs](./doc/customizing/initialization-files.md#basemaps))
    - list of available basemaps is defined in `baseMaps.items`. This list is combined with default base maps so it's possible to override defaults
    - definition of `initBaseMapId` and `initBaseMapName` are moved to `baseMaps.defaultBaseMapId` and `baseMaps.defaultBaseMapName`
    - `previewBaseMapId` is moved to `baseMaps.previewBaseMapId`
    - implemented `baseMaps.enabledBaseMaps` array of base map ids to define a list of baseMaps available to user
    - updated docs for `baseMaps`
  - `$color-splitter` and `theme.colorSplitter` has been replaced with `$color-secondary` and `theme.colorSecondary`
  - `canZoomTo` has bee replaced with `disableZoomTo` in `MappableTraits`
  - `showsInfo` has been replaced with `disableAboutData` in `CatalogMemberTraits`
  - `AsyncLoader` loadXXX methods now return `Result` with `errors` **they no longer throw errors** - if you need errors to be thrown you can use `(await loadXX).throwIfError()`.
  - Removed `openGroup()` - it is replaced by `viewState.viewCatalogMember`
  - Renamed `ReferenceMixin.is` to `ReferenceMixin.isMixedInto`

* Fixed a bug with numeric item search where it sometimes fails to return all matching values.
* Respect order of objects from lower strata in `objectArrayTrait`.
* Fix datetime button margin with scroll in workbench.
* Fix checkbox when click happen on svg icon. (#5550)
* Added progress indicator when loading item search tool.
* Add `nullColor` to `ConstantColorMap` - used when `colorColumn` is of type `region` to hide regions where rows don't exist.
* `TableStyles` will only be created for `text` columns if there are no columns of type `scalar`, `enum` or `region`.
* Moved `TableStyle.colorMap` into `TableColorMap`
* Replaced `colorbrewer.json` with `d3-scale-chromatic` - we now support d3 color scales (in addition to color brewer) - see https://github.com/d3/d3-scale-chromatic
* Added `ContinuousColorMap` - it will now be used by default for `scalar` columns
  - To use `DiscreteColorMap` - you will need to set `numberOfBins` to something other than `0`.
* `TableColorMap` default color palette for `scalar` columns is not `Reds` instead of `RdYlOr`
* Legends for `scalar` columns will now calculate optimal `numberFormatOptions.maximumFractionDigits` and `numberFormatOptions.minimumFractionDigits`
* Fix sharing user added data of type "Auto-detect".
* #5605 tidy up format string used in `MagdaReference`
* Fix wms feature info returning only one feature
* `WebMapServiceCatalogGroup` will now create layer auto-IDs using `Name` field to avoid ID clashes.
* Added `GroupMixin` `shareKey` generation for members - if the group has `shareKeys`.
* Organise `Traits` folder into `Traits/Decorators` and `Traits/TraitsClasses
* Organise `Traits` folder into `Traits/Decorators` and `Traits/TraitsClasses`
* I18n-ify shadow options in 3DTiles and some strings in feature info panel.
* Fix `StyledIcon` css `display` clash
* Limit `SelectableDimension` options to 1000 values
* Added support for `SocrataCatalogGroup` and `SocrataMapViewCatalogGroup`
  - Notes on v7 to v8 Socrata integration:
    - Share links are not preserved
    - Added basic support for dataset resources
* Organise `Models` directory into multiple sub-directories (#5626)
  - New model related classes are moved to `Models/Definition`
  - Catalog related files are moved to `Models/Catalog`
    - ESRI, OWS, GTFS and CKAN related files are moved to their own sub-directories in `Models/Catalog/`
    - Other Catalog items related files are moved to `Models/Catalog/CatalogItems`
    - Other Catalog items related files are moved to `Models/Catalog/CatalogGroups`
    - Catalog functions related files are moved to `Models/Catalog/CatalogFunction`
  - Removed unused Models files
* Modified BadgeBar to be more tolerant to longer strings
* Added `MapboxMapCatalogItem`.
* Added `MapboxStyleCatalogItem`.
* Fix splitter thumb icon vertical position
* Renamed all mixin instance type definitions to `XMixin.Instance`.
* Clean up `ViewControl` colors
  - `$color-splitter` and `theme.colorSplitter` has been replaced with `$color-secondary` and `theme.colorSecondary`
* Clean up `SplitterTraits`
  - `SplitterTraits` is now included in `RasterLayerTraits`
  - Removed `supportsSplitter` variable
  - Added `disableSplitter` trait
* Clean up `canZoomTo`
  - Replaced with `disableZoomTo` in `MappableTraits`
* Clean up `showsInfo`
  - Replaced with `disableAboutData` in `CatalogMemberTraits`
* Add `TerriaErrorSeverity` enum, values can be `Error` or `Warning`.
  - Errors with severity `Error` are presented to the user. `Warning` will just be printed to console.
  - By default, errors will use `Error`
  - `TerriaErrorSeverity` will be copied through nested `TerriaErrors` on creation (eg if you call `TerriaError.from()` on a `Warning` then the parent error will also be `Warning`)
  - Loading models from share links or stories will use `Warning` if the model is **not in the workbench**, otherwise it will use `Error`.
* In `terriaErrorNotification` - show `error.message` (as well as `error.stack`) if `error.stack` is defined
* `AsyncLoader` now has an observable `result` property.
* `viewState.viewCatalogMember()` now handles loading catalog members, opening groups and showing "Add Data" window.
* Fix `MagdaReference` `forceLoadReference` bug.
* Clean up `CkanCatalogGroup` loading - errors are no-longer swallowed.
* Clean up `3dTilesMixin` loading - errors are no-longer swallowed.
* Fix `DataPreviewSections` info section bug.
* Move `FeedbackForm` `z-index` to same as `Notification` - this is so it will appear above Data catalog.
* Added `result.raiseError()`, `result.pushErrorTo()` and `result.clone()` helper methods - and `Result.combine()` convenience function
* Renamed `ReferenceMixin.is` to `ReferenceMixin.isMixedInto`
* Added support for logging to external error service and configuring it via config parameters. See `errorService` in [client configuration](doc/customizing/client-side-config.md).
* Fix `DiscreteColorMap` bug with `binColors` and added warning message if `colorPalette` is invalid.
* Fix `EnumColorMap` bug with `binColors`
* Moved d3-scale-chromatic code into `tableColorMap.colorScaleCategorical()` and `tableColorMap.colorScaleContinuous()`
* Disabled welcome popup for shared stories
* Add WMS support for default value of time dimension.
* Make CompositeCatalogItem sync visibility to its members.
* Add `description` and `example` static properties to `Trait`, and added `@traitClass` decorator.
* Add `parent` property to `Trait`, which contains parent `TraitClass`.
* New model-generated documentation in `generateDocs.ts`
* Refactored some `Traits` classes so they use `mixTraits` instead of extending other `Traits` classes.
* Allow translation of some components.
* Fixed a bug which prevented adding any reference catalog item while the story is playing.
* Bumped terriajs-server to ^3.3.3

#### 8.0.0-alpha.87

- Re-add basemap images to terriajs rather than requiring all TerriaMaps to have those basemap images. Default basemaps will use those images.
- Data from TableMixin always overrides other feature information (e.g. from vector tiles in region mapping) by column name and title for feature info templating (consistent with v7).
- Fixed point entity creation for TableMixin where different columns are used for point size and colour.
- Changed MappableMixin's initialMessage to show while map items are loaded. Map items could be displayed behind the disclaimer before a user accepts the disclaimer.
- Fixed a cyclic dependency between initialMessage and app spinner (globe gif greysreen) that caused the app spinner to be present forever when loading a share link.
- Removed hardcoded credit links and made it configurable via terria config parameters.
- Disable `TableMixin` time column if only one unique time interval

#### 8.0.0-alpha.86

- **Breaking changes**:
  - `EnumColorMap` will only be used for enum `TableColumns` with number of unique values <= number of bins

* Add `options` to CSV papaparsing
* `TableMixin` will now only show points **or** region mapping - not both
* Add `FeatureInfoMixin` support for 2D vector features (in Cesium only)
* `TableStyles` are now hidden from the "Display Variable" selector if the number of colors (enumColors or numberOfBins) is less than 2. As a ColorMap with a single color isn't super useful.
* Improved default `TableColumn.isSampled` - it will be false if a binary column is detected (0 or 1)
* Improved default Table charting - now a time column will be used for xAxis by default
* Added `spreadFinishTime` - which works same way as `spreadStartTime` - if `true`, finish time of feature will be "spread" so that all features are displayed at the latest time step.
* Added support for `OpenDataSoft` - only point or region based features + timeseries
* `GeoJsonMixin`-based catalog items with polygon features can be extruded if a `heightProperty` is specified.
* Bugfix to make time-based geojson work when there are multiple features with the same time property value.
* Add `czmlTemplate` to `GeoJsonTraits` - it can be used to replace GeoJSON Point features with a CZML packet.
* Made the moment points in the chart optionally clickable.

#### 8.0.0-alpha.85

- **Breaking changes**:
  - Removed `registerAnalytics.js`
  - Removed `HelpMenuPanel.jsx`

* Added analytic events related to story, share and help menu items, Also refactored events to use category and action enums.
* Remove table style `SelectableDimension` from SDMX
* `GyroscopeGuidance` can now be translated.
* Wraps tool title bar text using `...`.

#### 8.0.0-alpha.84

- Fix `ArcGisMapServerCatalogGroup` infinite loading by removing the cycle of calling `loadMembers` that was present in the `DataCatalogGroup` React component. However calling `loadMembers` is still not cached as it should for `ArcGisMapServerCatalogGroup`, and the infinite loading bug could return.
- Fix bug `selectableDimensions` bug in `Cesium3dTilesMixin` and `GltfCatalogItem`.

#### 8.0.0-alpha.83

- Add `modelDimensions` to `CatalogMemberMixin` - this can be used to apply model stratum with a `SelectableDimension` (i.e. a drop-down menu).
- `GeoJsonMixin`-based catalog items can now be styled based on to their properties through traits.
- `GeoJsonMixin`-based catalog items can now vary over time if a `timeProperty` is specified.

#### 8.0.0-alpha.82

- **Breaking changes**:
  - IndexedItemSearchProvider: (bounding) `radius` option is no longer supported in `resultsData.csv` of search indexes.

* Show a toast and spinner icon in the "Ideal zoom" button when the map is zooming.
* `zoomTo()` will return a promise that resolves when the zoom animation is complete.
* Modifies `IndexedItemSearchProvider` to reflect changes to `terriajs-indexer` file format.
* Move feature info timeseries chart funtion to `lib\Table\getChartDetailsFn.ts`
* Fix feature info timeseries chart for point (lat/long) timeseries
* Feature info chart x-values are now be sorted in acending order
* Remove merging rows by ID for `PER_ROW` data in `ApiTableCatalogItem`
* Make `ApiTableCatalogItem` more compatible with Table `Traits`
  - `keyToColumnMapping` has been removed, now columns must be defined in `columns` `TableColumnTraits` to be copied from API responses.
* Move notification state change logic from ViewState into new class `NotificationState`
* Catalog items can now show a disclaimer or message before loading through specifying `InitialMessageTraits`
* Added Leaflet hack to remove white-gaps between tiles (https://github.com/Leaflet/Leaflet/issues/3575#issuecomment-688644225)
* Disabled pedestrian mode in mobile view.
* Pedestrian mode will no longer respond to "wasd" keys when the user is typing in some input field.
* Fix references to old `viewState.notification`.
* wiring changeLanguage button to useTranslation hook so that it can be detected in client maps
* Add `canZoomTo` to `TableMixin`
* SDMX changes:
  - Add better SDMX server error messages
  - `conceptOverrides` is now `modelOverrides` - as dataflow dimension traits can now be overridden by codelist ID (which is higher priortiy than concept ID)
  - Added `regionTypeReplacements` to `modelOverride`- to manually override detected regionTypes
  - `modelOverrides` are created for SDMX common concepts `UNIT_MEASURE`, `UNIT_MULT` and `FREQ`
    - `UNIT_MEASURE` will be displayed on legends and charts
    - `UNIT_MULT` will be used to multiple the primary measure by `10^x`
    - `FREQ` will be displayed as "units" in Legends and charts (eg "Monthly")
  - Single values will now be displayed in `ShortReportSections`
  - Custom feature info template to show proper dimension names + time-series chart
  - Smarter region-mapping
  - Removed `viewMode` - not needed now due to better handling of time-series
* Fix `DimensionSelector` Select duplicate ids.
* Add Leaflet splitter support for region mapping
* Fix Leaflet splitter while zooming and panning map
* Split `TableMixin` region mapping `ImageryParts` and `ImageryProvider` to improve opacity/show performance
* Removed `useClipUpdateWorkaround` from Mapbox/Cesium TileLayers (for Leaflet) - because we no longer support IE
* Fix overwriting `previewBaseMapId` with `initBaseMapId` by multiple `initData`.
* GeoJSON Mixin based catalog items can now call an API to retrieve their data as well as fetching it from a url.
* Changes to loadJson and loadJsonBlob to POST a request body rather than always make a GET request.
* Added ApiRequestTraits, and refactor ApiTableCatalogItemTraits to use it. `apiUrl` is now `url`.

#### 8.0.0-alpha.81

- Fix invalid HTML in `DataPreviewSections`.
- Fix pluralisation of mapDataState to support other languages.
- Fix CSW `Stratum` name bug.
- Add `#configUrl` hash parameter for **dev environment only**. It can be used to overwrite Terria config URL.

#### 8.0.0-alpha.80

- Removed `Disclaimer` deny or cancel button when there is no `denyAction` associated with it.

#### 8.0.0-alpha.79

- Make `InfoSections` collapsible in `DataPreview`. This adds `show` property to `InfoSectionTraits`.
  - `WebMapServiceCatalogItem` service description and data description are now collapsed by default.
- Revert commit https://github.com/TerriaJS/terriajs/commit/668ee565004766b64184cd2941bbd53e05068ebb which added `enzyme` devDependency.
- Aliases `lodash` to `lodash-es` and use `babel-plugin-lodash` reducing bundle size by around 1.09MB.
- Fix CkanCatalogGroup filterQuery issue. [#5332](https://github.com/TerriaJS/terriajs/pull/5332)
- Add `cesiumTerrainAssetId` to config.json to allow configuring default terrain.
- Added in language toggle and first draft of french translation.json
  - This is enabled via language languageConfiguration.enabled inside config.json and relies on the language being both enumerated inside languageConfiguration.langagues and availble under {code}/translation.json
- Updated to terriajs-cesium 1.81
- Create the Checkbox component with accessibility in mind.
- Convert `FeedbackForm` to typescript.

#### 8.0.0-alpha.78

- Add `ignoreErrors` url parameter.

#### 8.0.0-alpha.77

- **Breaking changes**:
  - `terria.error.raiseEvent` and `./raiseErrorToUser.ts` have been replaced with `terria.raiseErrorToUser`.
  - `terria.error.addEventListener` has been replaced with `terria.addErrorEventListener`

* New Error handling using `Result` and `TerriaError` now applied to initial loading, `updateModelFromJson()`, `upsertModelFromJson()` and `Traits.fromJson()`. This means errors will propagate through these functions, and a stacktrace will be displayed.
  - `Result` and the new features of `TerriaError` should be considered unstable and may be extensively modified or removed in future 8.0.0-alpha.n releases
* New `terriaErrorNotification()` function, which wraps up error messages.
* `TerriaError` can now contain "child" errors - this includes a few new methods: `flatten()` and `createParentError()`. It also has a few new convenience functions: `TerriaError.from()` and `TerriaError.combine()`.
* Convert `Branding.jsx` to `.tsx`
* Added `configParams.brandBarSmallElements` to set Branding elements for small screen (also added theme props)
* Add `font` variables and `fontImports` to theme - this can be used to import CSS fonts.
* Convert `lib/Styled` `.jsx` files to `.tsx` (including Box, Icon, Text). The most significant changes to these interfaces are:
  - `Box` no longer accepts `<Box positionAbsolute/>` and this should now be passed as `<Box position="absolute"/>`.
  - `Text`'s `styledSize` has been removed. Use the `styledFontSize` prop.
  - `ButtonAsLabel` no longer accepts `dark`. A dark background is now used when `light` is false (or undefined).
* Fixes CZML catalog item so that it appears on the timeline.
* Enable `theme` config parameter. This can now be used to override theme properties.

#### 8.0.0-alpha.76

- Added support for setting custom concurrent request limits per domain through `configParameters.customRequestSchedulerLimits`.
- Added `momentChart` to region-mapped timeseries
- Add time-series chart (in FeatureInfo) for region-mapped timeseries
- Only show `TableMixin` chart if it has more than one
- Add `TableChartStyle` name trait.

#### 8.0.0-alpha.75

- Fix `NotificationWindow` bug with `message`.
- Re-add `loadInitSources` to `Terria.updateApplicationUrl()`
- Added support for `elements` object in catalogue files (aka init files).
  - Using this object you can hide/show most UI elements individually.
  - See https://github.com/TerriaJS/terriajs/pull/5131. More in-depth docs to come.

#### 8.0.0-alpha.74

- Fix JS imports of `TerriaError`

#### 8.0.0-alpha.73

- Add `title` parameter in `raiseErrorToUser` to overwrite error title.
- Added some error handling in `Terria.ts` to deal with loading init sources.
- TSify `updateApplicationOnHashChange` + remove `loadInitSources` from `Terria.updateApplicationUrl()`

#### 8.0.0-alpha.72

- **Breaking changes**:
  - Added clippingRectangle to ImageryParts.
  - Any item that produces ImageryParts in mapItems (any raster items) must now also provide a clippingRectangle.
  - This clippingRectangle should be derived from this.cesiumRectangle (a new computed property) & this.clipToRectangle as demonstrated in many raster catalog items (e.g. OpenStreetMapCatalogItem.ts).

* Adds experimental ApiTableCatalogItem.
* Fixes a bug where FeatureInfoDownload tries to serialize a circular object
* Added `removeDuplicateRows` to `TableTraits`
* `forceLoadTableData` can now return undefined - which will leave `dataColumnMajor` unchanged
* Fix sharing preview item.
* Added z-index to right button group in mobile header menu
* Added cesiumRectangle computed property to MappableMixin. This is computed from the `rectangle` Trait.
* Fixed a Cesium render crash that occured when a capabilities document specified larger bounds than the tiling scheme's supported extent (bug occured with esri-mapServer but wms was probably also affected).
* In fixing Cesium render crash above clipping rectangles are now added to Cesium ImageryLayer (or Leaflet CesiumTileLayer) rather than being included in the ImageryProvider. ImageryParts has been updated to allow passing the clipping rectangle through to Cesium.ts and Leaflet.ts where ImageryLayer/CesiumTileLayer objects are created.

#### 8.0.0-alpha.71

- Fix accidental translation string change in 8.0.0-alpha.70

#### 8.0.0-alpha.70

- **Breaking changes**:
  - Merge `Chartable` and `AsyncChartableMixin` into new **`ChartableMixin`** + `loadChartItems` has been replaced by `loadMapItems`.
  - To set base map use `terriaViewer.setBaseMap()` instead of `terriaViewer.basemap = ...`
  - Incorrect usage of `AsyncLoader` **will now throw errors**

* Add `hideInBaseMapMenu` option to `BaseMapModel`.
* Change default basemap images to relative paths.
* Add `tileWidth` and `tileHeight` traits to `WebMapServiceCatalogItem`.
* Add docs about `AsyncLoader`
* Remove interactions between AsyncLoaders (eg calling `loadMetadata` from `forceLoadMapItems`)
* ... Instead, `loadMapItems` will call `loadMetadata` before triggering its own `AsyncLoader`
* Add `isLoading` to `CatalogMemberMixin` (combines `isLoading` from all the different `AsyncLoader`)
* Move `Loader` (spinner) from `Legend` to `WorkbenchItem`.
* Merge `Chartable` and `AsyncChartableMixin` into **`ChartableMixin`** + remove `AsyncLoader` functionality from `ChartableMixin` - it is now all handled by `loadMapItems`.
* Removed `AsyncLoader` functionality from `TableMixin` - it is now handled by `loadMapItems`.
  - `TableMixin.loadRegionProviderList()` is now called in `MappableMixin.loadMapItems()`
* Added `TerriaViewer.setBaseMap()` function, this now calls `loadMapItems` on basemaps
* Fix load of persisted basemap
* Fix sharing of base map
* Added backward compatibility for `baseMapName` in `initData` (eg share links)
* Add `WebMapService` support for WGS84 tiling scheme

#### 8.0.0-alpha.69

- **Breaking changes**:
  - Basemaps are now configured through catalog JSON instead of TerriaMap - see https://github.com/TerriaJS/terriajs/blob/13362e8b6e2a573b26e1697d9cfa5bae328f7cff/doc/customizing/initialization-files.md#basemaps

* Updated terriajs-cesium to version 1.79.1
* Make base maps configurable from init files and update documentation for init files [#5140](https://github.com/TerriaJS/terriajs/pull/5140).

#### 8.0.0-alpha.68

- Remove points from rectangle `UserDrawing`
- Fix clipboard typing error.
- Ported `WebProcessingServiceCatalogGroup`.
- Add CSW Group support
- Revert "remove wmts interfaces from ows interfaces" (873aa70)
- Add `math-expression-evaluator` library and `ColumnTransformationTraits`. This allows expressions to be used to transform column values (for example `x+10` to add 10 to all values).
- Fix bug in `TableColumn.title` getter.
- Add support for TableColumn quarterly dates in the format yyyy-Qx (eg 2020-Q1).
- Fix region mapping feature highlighting.
- Update clipboard to fix clipboard typing error.
- Added direction indicator to the pedestrian mode minimap.
- Limit up/down look angle in pedestrian mode.
- Automatically disable pedestrian mode when map zooms to a different location.
- Add support for time on `ArcGisMapServerCatalogItem`
- Merge `Mappable` and `AsyncMappableMixin` into **`MappableMixin`**.
- Fixed a issue when multiple filters are set to Cesium3DTilesCatalogItem
- Async/Awaitify `Terria.ts` + fix share links loading after `loadInitSources`.
- Tsified `TerriaError` + added support for "un-rendered" `I18nTranslateString`
- Tsified `raiseErrorToUser` + added `wrapErrorMessage()` to wrap error message in something more user friendly (using `models.raiseError.errorMessage` translation string).

#### 8.0.0-alpha.67

- TSify `Loader` function.
- Added walking mode to pedestrian mode which clamps the pedestrain to a fixed height above the surface.
- Upgraded catalog-converter to fix dependency version problem and ensure that all imports are async to reduce main bundle size.

#### 8.0.0-alpha.66

- **Breaking changes**:
  - Changed merging behaviour of Trait legends (of type `LegendTraits`) in `CatalogMemberTraits`. This affects legends on all `CatalogMember` models. Legend objects in higher strata now replace values in lower strata that match by index, rather than merging properties with them.

* Add `MetadataUrlTraits` to `CatalogMemberTraits.metadataUrls`. It contains an array of metadata URLS (with optional `title` which will render a button)
* Restore `cesiumTerrainUrl` config parameter. [#5124](https://github.com/TerriaJS/terriajs/pull/5124)
* I18n-ify strings in settings panel. [#5124](https://github.com/TerriaJS/terriajs/pull/5124)
* Moved `DataCustodianTraits` into `CatalogMemberTraits` and `CatalogMemberReferenceTraits`.
* `TableMixin` styles ("Display variables") will now look for column title if style title is undefined
* Add fallback colours when Color.fromCssColorString is used.
* Allow nullable `timeColumn` in table styles. Useful for turning off auto-detection of time columns.
* Added tool for searching inside catalog items. Initial implementation works for indexed 3d tilesets.
* Added support for shapefile with `ShapefileCatalogItem`
* Added `GeoJsonMixin` for handling the loading of geojson data.
* Extended the `GeoJsonCatalogItem` to support loading of zip files.
* Fixed broken feature highlighting for raster layers.
* Show a top angle view when zooming to a small feature/building from the item search result.
* Fix `TableTimeStyleTraits.idColumns` trait type.
* Added a new `lineAndPoint` chart type
* CustomChartComponent now has a "chart-type" attribute
* Fix `ArcGisMapServerCatalogItem` layer ID and legends bug
* Re-add region mapping `applyReplacements`.
* Added `SearchParameterTraits` to item search for setting a human readable `name` or passing index specific `queryOptions` for each parameter through the catalog.
* Added `AttributionTraits` to mappable and send it as property when creating Cesium's data sources and imagery providers. [#5167](https://github.com/TerriaJS/terriajs/pull/5167)
* Fixed an issue where a TerriaMap sometimes doesn't build because of typing issues with styled-components.
* Renamed `options` to `providerOptions` in `SearchableItemTraits`.
* Fix `CkanCatalogGroup.groupBy = "none"` members
* Fix `TableMixin` region mapping feature props and make Long/Lat features use column titles (if it exists) to match v7 behaviour.
* Add support for `CkanItemReference` `wms_layer` property
* Add support for `ArcGisMapServerCatalogGroup` to use `sublayerIds`.
* Added Pedestrian mode for easily navigating the map at street level.
* Clean up `LayerOrderingTraits`, remove `WorkbenchItem` interface, fix `keepOnTop` layer insert/re-ordering.
* Remove `wordBreak="break-all"` from Box surrounding DataPreview
* Re-added merging of csv row properties and vector tile feature properties for feature info (to match v7 behaviour).
* Fixes a bug in pedestrian mode where dropping the pedestrian in northern hemisphere will position the camera underground.
* Implement highlight/hide all actions for results of item search.
* Disable pickFeatures for WMS `_nextImageryParts`.
* Fix Leaflet `ImageryLayer` feature info sorting
* Fix hard-coded colour value in Story
* Use `configParameters.cesiumIonAccessToken` in `IonImageryCatalogItem`
* Added support for skipping comments in CSV files
* Fix WMS GetLegendGraphics request `style` parameter
* Loosen Legend `mimeType` check - so now it will treat the Legend URL as an image if the `mimeType` matches **OR** the file extension matches (previously, if `mimeType` was defined, then it wouldn't look at filetype extension)
* Fix `DiffTool` date-picker label `dateComparisonB`
* Fix app crash when switching different tools.
* Create `merge` `TraitsOption` for `objectArrayTrait`
* Move `Description` `metadataUrls` above `infoSections`.
* Upgraded i18next and i18next-http-backend to fix incompatibility.
* Added support for dd/mm/yyyy, dd-mm-yyyy and mm-dd-yyyy date formats.

#### 8.0.0-alpha.65

- Fixed SDMX-group nested categories
- SDMX-group will now remove top-level groups with only 1 child

#### 8.0.0-alpha.64

- Fixed WMS style selector bug.
- `layers` trait for `ArcGisMapServerCatalogItem` can now be a comma separated string of layer IDs or names. Names will be auto-converted to IDs when making the request.

#### 8.0.0-alpha.63

- Add `v7initializationUrls` to terria config. It will convert catalogs to v8 and print warning messages to console.
- Add `shareKeys` support for Madga map-config maps (through `terria` aspect)
- Revert WMS-group item ID generation to match v7
- Add `addShareKeysToMembers` to `GroupMixin` to generate `shareKeys` for dynamic groups (eg `wms-group)
- Added `InitDataPromise` to `InitSources`
- Add reverse `modelIdShareKeysMap` map - `model.id` -> `shareKeys`
- Upgraded `catalog-converter` to 0.0.2-alpha.4
- Reverted Legend use of `object` instead of `img` - sometimes it was showing html error responses
- Legend will now hide if an error is thrown
- Update youtube urls to nocookie version
- Share link conversion (through `catalog-converter`) is now done client-side
- Fix Geoserver legend font colour bug
- Remove legend broken image icon
- Added high-DPI legends for geoserver WMS (+ font size, label margin and a few other tweaks)
- `LegendTraits` is now part of `CatalogMemberTraits`
- Add `imageScaling` to `LegendTraits`
- WMS now `isGeoserver` if "geoserver` is in the URL
- Add WMS `supportsGetLegendRequest` trait
- Improved handling of WMS default styles

#### 8.0.0-alpha.62

- Fixed an issue with not loading the base map from init file and an issue with viewerMode from init files overriding the persisted viewerMode
- Fixed issues surrounding tabbed catalog mode
- Now uses `catalog-converter` to convert terriajs json in WPS response from v7 to v8.
- Fixed a bug in `UserDrawing` which caused points to not be plotted on the map.
- Fixed app crash when switching between different types of parameter in `GeoJsonParameterEditor`.
- Fixed errors when previewing an item in a group that is open by default (`isOpen: true` in init file).
- Fixed mobx warnings when loading geojson catalog items.
- Add `multiplierDefaultDeltaStep` Trait, which tries to calculate sensible multiplier for `DistrectelyTimeVarying` datasets. By default it is set to 2, which results in a new timestep being displayed every 2 seconds (on average) if timeline is playing.
- Hide info sections with empty content in the explorer preview.
- Port `shareKeys` from version 7
- Update/re-enable `GeoJsonCatalogItemSpec` for v8.
- add `DataCustodianTraits` to `WebMapServiceCatalogGroupTraits`
- Changed behaviour of `updateModelFromJson` such that catalog groups with the same id/name from different json files will be merged into one single group.
- Fixed error when selecting an existing polygon in WPS input form.
- Upgraded `catalog-converter` to 0.0.2-alpha.3.

#### 8.0.0-alpha.61

- New `CatalogFunctionMixin` and `CatalogFunctionJobMixin`
- Tsified `FunctionParameters`
- New `YourDataYourRegions` `CatalogFunctionMixin`
- Added `inWorkbench` property
- Added `addModelToTerria` flag to `upsertModelFromJson` function
- Added `DataCustodianTraits` to `WebMapServiceCatalogItem`
- Added `disableDimensionSelectors` trait to `WebMapServiceCatalogItem`. Acheives the same effect of `disableUserChanges` in v7.
- Temporarily stopped using `papaparse` for fetching Csv urls till an upstream bug is fixed.
- Fix async bug with loading `ReferenceMixin` and then `Mappable` items in `initSources`
- Remove `addToWorkbench`, it has been replaced with `workbench.add`
- Improve handling of `ArcGisMapServerCatalogItem` when dealing with tiled layers.
- Ensure there aren't more bins than unique values for a `TableStyle`
- Add access control properties to items fetched from Esri Portal.
- Improves magda based root group mimic behaviour introdcued in 8.0.0-alpha.57 by adding `/` to `knownContainerUniqueIds` when `map-config*` is encountered
- Fixed broken chart disclaimers in shared views.
- Fixed a bug where chart disclaimers were shown even for chart items disabled in the workbench.
- Fixed a bug where charts with titles containing the text "lat" or "lon" were hidden from feature info panel.
- Fixed a bug that occurred when loading config from magda. `initializationUrls` are now applied even if `group` aspect is not set

#### 8.0.0-alpha.60

- Fix WMS legend for default styles.
- Request transparent legend from GeoServer.
- Reverted the following due to various issues with datasets:
  - Add basic routing support
  - Add better page titles when on various routes of the application
  - Add prerendering support on `/catalog/` routes (via `prerender-end` event &
    allowing TerriaMap to hit certain routes)

#### 8.0.0-alpha.59

- Update magda error message
- Add a short report section if trying to view a `3d-tiles` item in a 2d map.
- Fix bug in `Terria.interpretStartData`.
- Add `ThreddsCatalogGroup` model.
- Port `supportsColorScaleRange`, `colorScaleMinimum` and `colorScaleMaximimum` from `master` to `WebMapServiceCatalogItem` model.
- Ported MapboxVectorTileCatalogItem ("mvt").
- When expanding a chart from the feature info panel, we now place a colored dot on the map where the chart was generated from.
- Add basic routing support
- Add better page titles when on various routes of the application
- Add prerendering support on `/catalog/` routes (via `prerender-end` event &
  allowing TerriaMap to hit certain routes)
- Update `WorkbenchButton` to allow for links rather than buttons, including
  changing About Data to a link

#### 8.0.0-alpha.58

- Add `FeatureInfoTraits` to `ArcGisMapServerCatalogItem`
- Fix zooming bug for datasets with invalid bounding boxes.
- Add new model for `ArcGisTerrainCatalogItem`.
- Add 3D Tiles to 'Add web data' dropdown.
- Fix naming of item in a `CkanCatalogGroup` when using an item naming scheme other than the default.

#### 8.0.0-alpha.57

- Fix memoization of `traitsClassToModelClass`.
- Chart expanded from feature info panel will now by default show only the first chart line.
- Chart component attribtues `column-titles` and `column-units` will now accept a simpler syntax like: "Time,Speed" or "ms,kmph"
- Fix presentation of the WMS Dimension metadata.
- Magda based maps now mimic "root group uniqueId === '/'" behaviour, so that mix and matching map init approaches behave more consistently

#### 8.0.0-alpha.56

- Add `itemProperties` trait to `WebMapMapCatalogGroup`.
- Add support for `formats` traits within `featureInfoTemplate` traits.
- Fix handling of `ArcGisPortalItemReference` for when a feature layer contains multiple sublayers.
- Implemented new compass design.

#### 8.0.0-alpha.55

- Upgraded to patched terriajs-cesium v1.73.1 to avoid build error on node 12 & 14.

#### 8.0.0-alpha.54

- Add a `infoAsObject` property to the `CatalogMemberMixin` for providing simpler access to `info` entries within templating
- Add a `contentAsObject` trait to `InfoSectionTraits` where a json object is more suitable than a string.
- Add `serviceDescription` and `dataDescription` to `WebMapServiceCatalogItem` info section.
- Extend `DataPreviewSections.jsx` to support Mustache templates with context provided by the catalog item.
- Add support for `initializationUrls` when loading configuration from Magda.
- Add `:only-child` styling for `menu-bar.scss` to ensure correctly rounded corners on isolated buttons.
- Improve Branding component for mobile header
- Add support for `displayOne` configuration parameter to choose which brand element to show in mobile view
- Update Carto basemaps URL and attribution.
- Add `clipToRectangle` trait to `RasterLayerTraits` and implement on `WebMapServiceCatalogItem`, `ArcGisMapServiceCatalogItem`, `CartoMapCatalogItem`, `WebMapTileServiceCatalogItem`.
- Allow Magda backed maps to use an inline `terria-init` catalog without it getting overwritten by map-config before it can be parsed
- Deprecated `proxyableDomainsUrl` configuration parameter in favour of `serverconfig` route
- Ported a support for `GpxCatalogItem`.
- Feature info is now shareable.
- Add option `canUnsetFeaturePickingState` to `applyInitData` for unsetting feature picking state if it is missing from `initData`. Useful for showing/hiding feature info panel when switching through story slides.
- Properly render for polygons with holes in Leaflet.
- Fixes a bug that showed the chart download button when there is no downloadable source.
- Add `hideWelcomeMessage` url parameter to allow the Welcome Message to be disabled for iframe embeds or sharing scenarios.
- Ensure the `chartDisclaimer` is passed from catalog items to derived chart items.
- Don't calculate a `rectangle` on a `ArcGisPortalReferenceItem` as they appear to contain less precision than the services they point to.
- Allow an `ArcGisPortalReferenceItem` to belong to multiple `CatalogGroup`'s.
- Fix argis reference bug.
- Made possible to internationalize tour contend.
- Added TileErrorHandlerMixin for handling raster layer tile errors.
- Fixed a bug that caused the feature info chart for SOS items to not load.
- SOS & CSV charts are now shareable.

#### 8.0.0-alpha.53

- Ported an implementation of CatalogSearchProvider and set it as the default
- Notification window & SatelliteImageryTimeFilterSection now uses theme colours
- Improved look and feel of `StyledHtml` parsing
- Fix `applyAriaId` on TooltipWrapper causing prop warnings
- Make share conversion notification more pretty (moved from `Terria.ts` to `shareConvertNotification.tsx`)
- Tsxify `Collapsible`
- `ShortReportSections` now uses `Collapsible`
- Add `onToggle`, `btnRight`, `btnStyle`, `titleTextProps` and `bodyBoxProps` props in `Collapsible`
- Add `Notification.message` support for `(viewState: ViewState) => React.ReactNode`
- Added splitting support to `WebMapTileServiceCatalogItem`.

#### 8.0.0-alpha.52

- Prevent duplicate loading of GetCapabilities
- Update the `GtfsCatalogItem` to use the `AutoRefreshingMixin`.
- Add a condition to the `AutoRefreshingMixin` to prevent unnecessary polling when an item is disabled in the workbench.
- Upgraded to Cesium v1.73.
- Removed any references to `BingMapsApi` (now deprecated).
- Add support for resolving `layers` parameter from `Title` and not just `Name` in `WebMapServiceCatalogItem`.
- Change TrainerBar to show all steps even if `markdownDescription` is not provided

#### 8.0.0-alpha.51

- Add WMTS group/item support
- Create `OwsInterfaces` to reduce duplicate code across OWS servies
- Fix story prompt being permanent/un-dismissable
- Fixed a bug that caused the feature info chart for SOS items to not load.

#### 8.0.0-alpha.50

- Support for searching WFS features with WebFeatureServiceSearchProvider
- WFS-based AustralianGazetteerSearchProvider
- Fixed a bug causing users to be brought back to the Data Catalogue tab when clicking on an auto-detected user added catalogue item.
- Fixed a bug causing Data Preview to not appear under the My Data tab.
- Fix WMS style `DimensionSelector` for layers with no styles
- Add WMS legend for items with no styles
- Add warning messages if catalog/share link has been converted by `terriajs-server`.
- Update the scroll style in `HelpVideoPanel` and `SidePanel` helpful hints.
- Updated leaflet attribution to match the style of cesium credits.
- Remove `@computed` props from `WebFeatureServiceCapabilities`
- Fixed bug causing the Related Maps dropdown to be clipped.
- Add SDMX-json support for groups and items (using SDMX-csv for data queries)
- `TableMixin` now uses `ExportableMixin` and `AsyncMappableMixin`
- Move region provider loading in `TableMixin` `forceLoadTableMixin` to `loadRegionProviderList`
- Added `TableAutomaticStylesStratum.stratumName` instead of hard-coded strings
- Added `Dimension` interface for `SelectableDimension` - which can be used for Traits
- Make `SelectableDimension.options` optional

#### 8.0.0-alpha.49

- WMS GetFeatureInfo fix to ensure `style=undefined` is not sent to server
- Add support for splitting CSVs (TableMixins) that are using region mapping.
- `addUserCatalogMember` will now call `addToWorkbench` instead of `workbench.add`.
- Replaces `ShadowSection` with `ShadowMixin` using `SelectableDimensions`
- Fix Webpack Windows path issue
- Updated icons for view and edit story in the hamburger menu.
- Implemented new design for story panel.

#### 8.0.0-alpha.48

- Allow `cacheDuration` to be set on `ArcGisPortalCatalogGroup` and `ArcGisPortalItemReference`.
- Set default `ArcGisPortalCatalogGroup` item sorting by title using REST API parameter.
- Call `registerCatalogMembers` before running tests and remove manual calls to `CatalogMemberFactory.register` and `UrlMapping.register` in various tests so that tests reflect the way the library is used.
- Updated stratum definitions which used hardcoded string to use `CommonStrata` values.

#### 8.0.0-alpha.47

- Removed hard coded senaps base url.
- Added option for manual Table region mapping with `enableManualRegionMapping` TableTrait. This provides `SelectableDimensions` for the region column and region type.
- Added WMS Dimensions (using `SelectableDimensions`)
- Added WMS multi-layer style, dimension and legend support.
- Merged the `StyleSelector` and `DimensionsSelector`, and created a `SelectableDimensions` interface.
- Added `chartColor` trait for DiscretelyTimeVarying items.
- Replaced all instances of `createInfoSection` and `newInfo` with calls to `createStratumInstance` using an initialisation object.
- Added trait `leafletUpdateInterval` to RasterLayerTraits.
- Fix styling of WFS and GeoRSS.
- Fixed a bug that caused re-rendering of xAxis of charts on mouse move. Chart cursor should be somewhat faster as a result of this fix.
- Fixed a bug that caused some catalogue items to remain on the map after clicking "Remove all" on the workbench.
- Deleted old `ChartDisclaimer.jsx`
- Moved `DiscretelyTimeVaryingMixin` from `TableAutomaticStylesStratum` to `TableMixin`
- Added basic region-mapping time support
- Add short report to `ArcGisFeatureServerItem` for exceeding the feature limit.
- Added shift-drag quick zoom

#### 8.0.0-alpha.46

- Fixed i18n initialisation for magda based configurations

#### 8.0.0-alpha.45

- Upgraded to Cesium v1.71.
- Change `ExportableData` interface to `ExportableMixin` and add `disableExport` trait.
- Add basic WFS support with `WebFeatureServiceCatalogGroup` and `WebFeatureServiceCatalogItem`
- Update style of diff tool close button to match new design
- Remove sass code from the `HelpPanel` component
- Added an option for translation override from TerriaMap
- Help content, trainer bar & help terms can use translation overrides
- Accepts `backend` options under a new `terria.start()` property, `i18nOptions`
- Use `wms_api_url` for CKAN resources where it exists
- Tsxified `DateTimePicker` and refactored `objectifiedDates` (moved to `DiscretelyTimeVaryingMixin`).
- Update style of 'Change dates' button in delta to be underlined
- Fix issue with delta 'Date comparison' shifting places when querying new location
- Shows a disabled splitter button when entering diff
- Make Drag & Drop work again (tsxify `DragDropFile.tsx` and refactor `addUserFiles.ts`)
- Add `TimeVarying.is` function

#### 8.0.0-alpha.44

- Pass `format` trait on `TableColumnTraits` down to `TableAutomaticStylesStratum` for generating legends
- Add `multipleTitles` and `maxMultipleTitlesShowed` to `LegendItemTraits`
- Aggregate legend items in `createLegendItemsFromEnumColorMap` by colour, that is merge legend items with the same colour (using `multipleTitles`)
- Only generate `tableStyles` for region columns if no other styles exist
- TableAutomaticStylesStratum & CsvCatalogItem only returns unique `discreteTimes`s now
- Specified specific terriajs config for ForkTsCheckerWebpackPlugin

#### 8.0.0-alpha.43

- Replace<EMAIL_ADDRESS>dependency with our own warning box component. This removes all `pancake` processes which were sometimes problematic.

#### 8.0.0-alpha.42

- Added ArcGIS catalog support via ArcGisPortalItemReference

#### 8.0.0-alpha.41

- Add `cacheDuration` and `forceProxy` to `UrlTraits` and add `cacheDuration` defaults to various catalog models.
- Tsify `proxyCatalogItemUrl`.
- Simplified SidePanel React refs by removing the double wrapping of the `withTerriaRef()` HOC
- Merged `withTerriaRef()` HOC with `useRefForTerria()` hook logic
- Breadcrumbs are always shown instead of only when doing a catalog search

#### 8.0.0-alpha.40

- Improve info section of `WebMapServiceCatalogItem` with content from GetCapabilities
- Re-implement `infoSectionOrder` as `CatalogMember` trait.
- Add `infoWithoutSources` getter to `CatalogMemberMixin` to prevent app crash when using `hideSources`
- Add support for nested WMS groups
- Added breadcrumbs when clicking on a catalogue item from a catalogue search

#### 8.0.0-alpha.39

- Development builds sped up by 3~20x - ts-loader is now optional & TypeScript being transpiled by babel-loader, keeping type check safety on a separate thread

#### 8.0.0-alpha.38

- Add `show` to `ShortReportTraits` and Tsxify `ShortReport`
- Convert `ShortReport` to styled-components, add accordian-like UI
- 3D tiles support is now implemented as a Mixin.

#### 8.0.0-alpha.37

- Add `refreshEnabled` trait and `AsyncMappableMixin` to `AutoRefreshMixin`
- Ensure `CkanCatalogGroup` doesn't keep re-requesting data when opening and closing groups.
- Add `typeName` to `CatalogMemberMixin`
- Add `header` option to `loadText`
- Add `isMixedInto` function for `AsyncMappableMixin` and `AsyncChartableMixin`
- Added file upload support for `GltfCatalogItem`. The supported extension is glb.
- Improve runtime themeing via styled components across main UI components
- Updated default welcome video defaults to a newer, slower video
- Difftool will now pick any existing marked location (like from a search result) and filter imagery for that location.
- Updated labelling & copy in Difftool to clarify workflow
- ChartCustomComponent now `abstract`, no longer specific to CSV catalog items. Implement it for custom feature info charts.
- Update date picker to use theme colours
- Removed some sass overrides on `Select` through `StyleSelectorSection`
- Update LeftRightSection to use theme colours
- Ported `GeoRssCatalogItem` to mobx, added support to skip entries without geometry.
- Update Difftool BottomPanel UI to clearer "area filter" and date pickers
- Update Difftool BottomPanel to load into Terria's BottomDock
- Rearrange MapButton layout in DOM to properly reflow with BottomDock
- Update Difftool MainPanel to not get clipped by BottomDock
- Rearrange MapDataCount to exist inside MapColumn for more correct DOM structure & behaviour
- Re-added chart disclaimer.

#### mobx-36

- Added `pointer-events` to `MapNavigation` and `MenuBar` elements, so the bar don't block mouse click outside of the button.
- Fixes "reminder pop-up" for help button being unclickable
- Use `useTranslation` instead of `withTranslation` in functional component (`MapDataCount`)
- Make welcome video url and placeholder configurable via configparameters
- Added `ExportableData` interface.
- Added `ExportData` component for data catalog.
- Added WCS "clip and ship" for WMS
- Added basic CSV export function
- Extend `UserDrawing` to handle rectangles
- Tsxify `MapInteractionMode`
- Changed default orientation for `GltfCatalogItem` to no rotation, instead of zero rotation wrt to terrain
- Added a title to welcome message video

#### mobx-35

- Add "Upload" to tour points
- Add tooltips anywhere required in UI via `parseCustomMarkdownToReactWithOptions` & customisable via `helpContentTerms`
- Add "map state" map data count to highlight state of map data
- Add a reminder "pop-up" that shows the location of the help button
- Fix bug causing story pop-up to be off screen
- Fix bug causing helpful hints to be cut off on smaller screens
- Changed the `Tool` interface, now accepting prop `getToolComponent` instead of `toolComponent`
- Added `ToolButton` for loading/unloading a tool
- Added `TransformationTraits` that can be used to change position/rotation/scale of a model.
- Merge master into mobx. This includes:
  - Upgraded to Cesium v1.68.
  - Story related enhancements:
    - Added a title to story panel with ability to close story panel.
    - Added a popup on remove all stories.
    - Added button for sharing stories.
    - Added a question popup on window close (if there are stories on the map so users don't lose their work).
- Added a new `editor` Icon
- Changed `ToolButton` to show the same icon in open/close state. Previously it showed a close icon in close state.

#### mobx-34

- Bug fix for `DatePicker` in `BottomDock` causing app crash
- Made changes to the video modals: close button has been added, pressing escape now closes the component and some basic unit tests created
- Updated the video modal for _Data Stories: Getting Started_ to use the new `VideoGuide` component
- Tweaked MyData/AddData tabs to make it possible to invoke them without using the `ExplorerWindow` component and also customize the extensions listed in the dropdown.
- Fix the timeline stack handling for when there are multiple time-enabled layers
- Ported timeseries tables.
- Extended the support for styles for ESRI ArcGis Feature Server. Line styles are supported for lines and polygon outlines in both Cesium and Leaflet viewer. #4405
- Fix polygon outline style bug.
- Add a unit test for polygon outline style.
- Add TrainerPane/TrainerBar "Terry the task trainer"
- Use `1.x.x` of `karma-sauce-launcher` to fix CI build failures
- Stop unknown icons specified in config.json from crashing UI
- Creates a `ShadowTraits` class that is shared by `GltfCatalogItem` and `Cesium3DTilesCatalogItem`.
- Fixed a bug where user added data was removed from catalogue when Remove from map button in data catalog is clicked.
- Fix leaflet zoom to work when bounding rectangle exists but doesn't have bounds defined

#### mobx-33

- Updated generic select so icon doesn't block click
- Re-added loading bar for leaflet & cesium viewers

#### mobx-32

- Made expanded SOS chart item shareable.
- Fixed a regression bug where the time filter is shown for all satellite imagery items
- Add unit tests for `WelcomeMessage` and `Disclaimer`
- Fixed minor UI errors in console
- Replaced helpful hints text with the new version
- Made the shapes of some of the workbench components rounded
- Add `clampToGround` property on to holes within polygons in `GeoJsonCatalogItem`
- Set default `clampToGround` trait to `true` for `GeoJsonCatalogItem`
- Fixed a bug where WMS items caused type errors in newer babel and typescript builds, due to mixed mixin methods on DiffableMixin & DiscretelyTimeVaryingMixin
- Fixed a bug where KmlCatalogItem did not use the proxy for any urls.
- Add support for `CkanCatalogGroup` and `CkanItemReference`.
- Added unit test to ensure getAncestors behaviour
- Hide the chart legend if there are more than four items to prevent things like FeatureInfo being pushed out of the view and the map resizing.
- Prevent addedByUser stack overflow
- Fixed a chart bug where moment points do not stick to the basis item when they are of different scale.
- Fixed a bug where the moment point selection highlight is lost when changing the satellite imagery date.
- Removed sass from Clipboard
- Updated LocationSearchResults to support multiple search providers
- Replaced lifesaver icon on the help button with a question mark button
- Fix handling of points and markers around the anti-meridian in the `LeafletVisualizer`.
- Fixed difference tool losing datepicker state by keeping it mounted
- Disabled unhelpful Help button when in `useSmallScreenInterface`
- Fixed a bug where a single incorrect catalog item in a group would prevent subsequent items from loading.
- Improved catalog parsing to include a stub (`StubCatalogItem`) when terriajs can't parse something

#### mobx-31

- Fixes broken time filter location picker when other features are present on the map.
- Fixes the feature info panel button to show imagery at the selected location.
- Added `hideSource` trait to `CatalogMemberTraits`. When set to true source URL won't be visible in the explorer window.
- Added `Title`, `ContactInformation`, `Fees` to the `CapabilitiesService` interface so they are pulled on metadata load.
- Resolved name issue of `WebMapServiceCapabilities`. Now it returns a name resolved from `capabilities` unless it is set by user.
- Added setting of `isOpenInWorkbench`, `isExperiencingIssues`, `hideLegendInWorkbench`, `hideSource` strats for `WebMapServiceCatalogItem` from `WebMapServiceCatalogGroup`.

#### mobx-30

- Ported welcome message to mobx with new designs
- Updated CI clientConfig values to include new help panel default
- Bumped explicit base typescript to 3.9.2
- Lock rollbar to 2.15.2
- Ported disclaimer to mobx with new designs
- Added diff tool for visualizing difference (delta) of images between 2 dates for services that support it.
- Updated workbench ViewingControls styles to line up with icons
- Prevent re-diff on workbench items that are already a diff
- Updated splitter to force trigger resizes so it catches up on any animation delays from the workbench
- Update workbench to trigger resize events onTransitionEnd on top of view-model-triggers
- Added satellite imagery to help panel
- Stop disclaimer clashing with welcome message by only loading WelcomeMessage after disclaimer is no longer visible
- Fixes a difftool bug where left/right items loose their split direction settings when the tool is reset
- Fixes a splitter bug where split direction is not applied to new layers.
- Re-added satellite guide prompt option via `showInAppGuides`
- Changed tour "go back 1 tour point" messaging from "previous" to "back"

#### mobx-29

- Fix handling of urls on `Cesium3DTilesCatalogItem` related to proxying and getting confused between Resource vs URL.
- Renamed `UrlReference.createUrlReferenceFromUrlReference` to `UrlReference.createCatalogMemberFromUrlReference`
- Moved url to catalog member mapping from `createUrlRefernceFromUrl.register` to `UrlToCatalogMemberMapping` (now in `UrlReference.ts` file)
- Added in-app tour framework & base tour items
- Make the help panel customisable for different maps by modifying `config.json`
- Added generic styled select
- Remove maxZoom from leaflet map.
- Run & configure prettier on terriajs lib/ json files
- Changed most of the icons for the `MapNavigation` section (on the right hand side) of the screen
- Added a close button to story panel
- Made `MapIconButton` to animate when expanding
- Remove requirement for browser to render based on make half pixel calculations for the Compass & stop it jumping around when animating

#### mobx-28

- Fix SASS exports causing some build errors in certain webpack conditions

#### mobx-1 through mobx-27

- Fixed DragDropFile and `createCatalogItemFromFileOrUrl` which wasn't enabled/working in mobx, added tests for `createCatalogItemFromFileOrUrl` and renamed `createCatalogItemFromUrl` to `createUrlRefernceFromUrl`.
- Fixed bug in StratumOrder where `sortBottomToTop` would sort strata in the wrong order.
- Allow member re-ordering via GroupMixin's `moveMemberToIndex`
- Fixed a bug where `updateModelFromJson` would ignore its `replaceStratum` parameter.
- Re-added Measure Tool support
- Re-added `CartoMapCatalogItem`
- Re-implemented `addedByUser` to fix bug where previews of user added data would appear in the wrong tab.
- Added header options for loadJson5, & allow header overrides on MagdaReference loading
- Re-added some matcher-type mappings in `registerCatalogMembers`.
- Added `UrlReference` to represent catalog items created from a url with an auto-detected type.
- Modified `upsertModelFromJson` so that when no `id` is provided, the `uniqueId` generated from `localId` or `name` is incremented if necessary to make it unique.
- Re-enable search components if SearchProvider option provided
- Modified tests to not use any real servers.
- Fixed bug causing workbench items to be shared in the wrong order.
- Fix bug where urls in the feature info panel weren't turned into hyperlinks
- Fix preview map's base map and bounding rectangle size
- Fixed positioning of the buttons at the bottom and the timeline component on mobile
- Added `hasLocalData` property to indicate when a catalog item contains local data. This property is used to determine whether the item can be shared or not.
- Fixed bug causing user added data to not be shared. Note that user added catalog item urls are now set at the user stratum rather than the definition stratum.
- Added the ability to filter location search results by an app-wide bounding box configuration parameter
- Re-introduce UI elements for search when a catalogSearchProvider is provided
- Fix bug that prevented live transport data from being hidden
- Hide opacity control for point-table catalog items.
- Fixed bug where `Catalog` would sometimes end up with an undefined `userAddedDataGroup`.
- Show About Data for all items by default.
- Fixed translation strings for the descriptive text about WMS and WFS URLs in the data catalogue.
- Fix bug that throws an error when clicking on ArcGIS Map Service features
- Fix initialisation of `terria`'s `shareDataService`.
- Support Zoom to Data on `CsvCatalogItem` when data has lat-lon columns.
- Add a trait called `showShadowUi` to `Cesium3DTilesCatalogItem` which hide shadows on workbench item UI.
- Re-added `ArcGisFeatureServerCatalogItem` and `ArcGisFeatureServerCatalogGroup`
- Prevent TerriaMap from crashing when timeline is on and changing to 2D
- Rewrite charts using `vx` svg charting library.
- Fixed bug causing `ArcGisFeatureServerCatalogItem` to throw an error when a token is included in the proxy url.
- Fix a bug for zooming to `ArcGisMapServerCatalogItem` layers
- Modified creation of catalog item from urls to set the item name to be the url at the defaults stratum rather than the definition stratum. This prevents actual item names at load strata from being overridden by a definition stratum name which is just a url.
- Fixed a bug causing highlighting of features with `_cesium3DTileFeature` to sometimes stop working. Also changed highlight colour to make it more visible.
- Fixed bug causing user added data with an auto-detected data type to not be shared properly.
- Modified `addToWorkbench` so that when a catalog item fails to load it is removed from the workbench and an error message is displayed.
- Add support for feature picking on region mapped datasets
- Revamp map buttons at top to support two menu configuration
- Viewer (2d/3d/3d-non-terrain) & basemap preferences are persisted to local storage again, and loaded back at startup
- Dramatically simplified map button styling (pre-styled-components)
- Allow DropdownPanel(InnerPanel) to show centered instead of offset toward the left
- Added AccessControlMixin for tracking access control of a given MagdaReference
- Add a legend title trait
- Show private or public dataset status on data catalog UI via AccessControlMixin
- Added `pointSizeMap` to `TableStyle` to allow point size to be scaled by value
- Added `isExperiencingIssues` to `CatalogMemberTraits`. When set to true, an alert is displayed above the catalog item description.
- Add gyroscope guidance
- Enable StyleSelectorSection workbench control for `WebMapServiceCatalogItem`
- New-new ui
- Add WIP help panes
- Added "Split Screen Mode" into workbench
- Moved excess workbench viewing controls into menu
- Updated bottom attribution styling
- Begin styled components themeing
- Make `clampToGround` default to true for `ArcGisFeatureServerCatalogItemTraits` to stop things from floating
- Add fix for `WebMapServiceCatalogItem` in `styleSelector` to prevent crash.
- Revert changes to `StyleSelectorSelection` component and refactor `WebMapServiceCatalogItem` styleSelector getter.
- Added a temporary fix for bug where a single model failing to load in `applyInitData` in `Terria` would cause other models in the same `initData` object to not load as well.
- Change gyroscope focus/h

repository: TerriaJS/terriajs

branch_name: refs/heads/main

gha_language: TypeScript

repo_name: TerriaJS/terriajs