react-spatial 1.1.4-beta.1 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -238,7 +238,18 @@ var Permalink = /*@__PURE__*/(function (Component) {
238
238
  var params = ref.params;
239
239
  var history = ref.history;
240
240
  var oldParams = qs.parse(window.location.search);
241
- var parameters = Object.assign({}, oldParams, params, this.state);
241
+ var parameters = Object.assign({}, oldParams, this.state, params);
242
+
243
+ // Remove parameters that are undefined or null
244
+ Object.entries(parameters).forEach(function (ref) {
245
+ var key = ref[0];
246
+ var value = ref[1];
247
+
248
+ if (value === undefined || value === null) {
249
+ delete parameters[key];
250
+ }
251
+ });
252
+
242
253
  // encodeURI to encode spaces, accents, etc. but not characters like ;,/?:@&=+$-_.!~*'()
243
254
  var qStr = encodeURI(qs.stringify(parameters, { encode: false }));
244
255
  var search = qStr ? ("?" + qStr) : '';
@@ -1 +1 @@
1
- {"version":3,"file":"Permalink.js","sources":["../../../src/components/Permalink/Permalink.js"],"sourcesContent":["import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\nimport OLMap from 'ol/Map';\nimport { unByKey } from 'ol/Observable';\nimport LayerService from '../../LayerService';\n\nconst propTypes = {\n /**\n * Either 'react-router' history object:\n * https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/history.md<br>\n * or default fallback as HTML5 History:\n * https://developer.mozilla.org/en-US/docs/Web/API/History\n */\n history: PropTypes.shape({\n replace: PropTypes.func,\n }),\n\n /**\n * Layers provider.\n */\n layerService: PropTypes.instanceOf(LayerService),\n\n /**\n * An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\n map: PropTypes.instanceOf(OLMap),\n\n /**\n * Params to be written in url.\n */\n params: PropTypes.object,\n\n /**\n * Maximum number of decimals allowed for coordinates.\n */\n coordinateDecimals: PropTypes.number,\n\n /**\n * Determine if the layer is hidden in the permalink or not.\n *\n * @param {object} item The item to hide or not.\n *\n * @return {bool} true if the item is not displayed in the permalink\n */\n isLayerHidden: PropTypes.func,\n};\n\nconst defaultProps = {\n history: null,\n layerService: null,\n map: null,\n params: {},\n coordinateDecimals: 2,\n isLayerHidden: () => {\n return false;\n },\n};\n\n/**\n * This component handles permalink logic. Injecting an\n * __[ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html)__\n * will add the *map center* (x, y) and the *zoom* (z) parameters to the permalink.\n * Injecting a\n * __[layerService](https://github.com/geops/react-spatial/blob/master/src/LayerService.js)__\n * (including at least one layer)\n * will add the *baselayers* and/or *layers* parameters. Further parameters can\n * be added using __params__.\n */\nclass Permalink extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.moveEndRef = null;\n this.updateLayers = this.updateLayers.bind(this);\n }\n\n componentDidMount() {\n const { map, layerService, isLayerHidden } = this.props;\n if (map) {\n this.moveEndRef = map.on('moveend', () => {\n this.onMapMoved();\n });\n }\n\n if (layerService) {\n this.updateLayerService();\n\n // set layer visibility based on 'layers' parameter.\n const urlParams = qs.parse(window.location.search);\n\n if (urlParams.layers) {\n const visibleLayers = urlParams.layers.split(',');\n layerService.getLayersAsFlatArray().forEach((l) => {\n if (visibleLayers.includes(l.key)) {\n l.setVisible(true);\n } else if (\n !l.isBaseLayer &&\n !l.hasVisibleChildren() &&\n !isLayerHidden(l)\n ) {\n l.setVisible(false);\n }\n });\n }\n\n // Set baser layer visibility based on 'baseLayers' parameter.\n const visibleBaseLayers = (urlParams.baselayers || '').split(',');\n layerService.getBaseLayers().forEach((baseLayer) => {\n if (baseLayer.key === visibleBaseLayers[0]) {\n baseLayer.setVisible(true); // The radio group will hide the others baseLayers automatically\n }\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { map, layerService } = this.props;\n\n if (layerService !== prevProps.layerService) {\n this.updateLayerService();\n }\n\n if (map !== prevProps.map) {\n this.moveEndRef = map.on('moveend', () => {\n return this.onMapMoved();\n });\n }\n\n this.updateHistory();\n }\n\n componentWillUnmount() {\n const { layerService, map } = this.props;\n\n if (map) {\n unByKey(this.moveEndRef);\n }\n\n if (layerService) {\n layerService.un('change:layers', this.updateLayers);\n layerService.un('change:visible', this.updateLayers);\n }\n }\n\n onMapMoved() {\n const { map } = this.props;\n const mapView = map.getView();\n const { center } = mapView.getProperties();\n\n this.setState({\n x: this.roundCoord(center[0]),\n y: this.roundCoord(center[1]),\n // rounds zoom to two digits max.\n z: +`${Math.round(`${parseFloat(mapView.getZoom())}e+2`)}e-2`,\n });\n }\n\n roundCoord(val) {\n const { coordinateDecimals } = this.props;\n return parseFloat(val.toFixed(coordinateDecimals));\n }\n\n updateLayerService() {\n const { layerService } = this.props;\n if (layerService) {\n layerService.un('change:visible', this.updateState);\n layerService.un('change:layers', this.updateLayers);\n this.updateLayers();\n layerService.on('change:layers', this.updateLayers);\n layerService.on('change:visible', this.updateLayers);\n }\n }\n\n updateLayers() {\n const { layerService, isLayerHidden } = this.props;\n const baseLayers = layerService.getBaseLayers();\n const idx = baseLayers.findIndex((l) => {\n return l.visible;\n });\n if (idx !== -1) {\n const baseLayerVisible = baseLayers.splice(idx, 1);\n baseLayers.unshift(baseLayerVisible[0]);\n }\n\n this.setState({\n layers: layerService\n .getLayersAsFlatArray()\n .filter((l) => {\n return (\n !l.isBaseLayer &&\n l.visible &&\n (!l.hasVisibleChildren() ||\n (l.children || []).every((child) => {\n return isLayerHidden(child);\n })) &&\n !isLayerHidden(l)\n );\n })\n .map((l) => {\n return l.key;\n })\n .join(),\n baselayers:\n baseLayers.length > 1\n ? baseLayers\n .map((l) => {\n return l.key;\n })\n .join()\n : undefined,\n });\n }\n\n updateHistory() {\n const { params, history } = this.props;\n const oldParams = qs.parse(window.location.search);\n const parameters = { ...oldParams, ...params, ...this.state };\n // encodeURI to encode spaces, accents, etc. but not characters like ;,/?:@&=+$-_.!~*'()\n const qStr = encodeURI(qs.stringify(parameters, { encode: false }));\n const search = qStr ? `?${qStr}` : '';\n\n if (\n (!qStr && window.location.search) ||\n (qStr && search !== window.location.search)\n ) {\n if (history) {\n history.replace({ search });\n } else {\n const { hash } = window.location;\n window.history.replaceState(\n undefined,\n undefined,\n `${search}${hash || ''}`,\n );\n }\n }\n }\n\n render() {\n return null;\n }\n}\n\nPermalink.propTypes = propTypes;\nPermalink.defaultProps = defaultProps;\n\nexport default Permalink;\n"],"names":["const","super","this"],"mappings":"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"}
1
+ {"version":3,"file":"Permalink.js","sources":["../../../src/components/Permalink/Permalink.js"],"sourcesContent":["import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\nimport OLMap from 'ol/Map';\nimport { unByKey } from 'ol/Observable';\nimport LayerService from '../../LayerService';\n\nconst propTypes = {\n /**\n * Either 'react-router' history object:\n * https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/history.md<br>\n * or default fallback as HTML5 History:\n * https://developer.mozilla.org/en-US/docs/Web/API/History\n */\n history: PropTypes.shape({\n replace: PropTypes.func,\n }),\n\n /**\n * Layers provider.\n */\n layerService: PropTypes.instanceOf(LayerService),\n\n /**\n * An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\n map: PropTypes.instanceOf(OLMap),\n\n /**\n * Params to be written in url.\n */\n params: PropTypes.object,\n\n /**\n * Maximum number of decimals allowed for coordinates.\n */\n coordinateDecimals: PropTypes.number,\n\n /**\n * Determine if the layer is hidden in the permalink or not.\n *\n * @param {object} item The item to hide or not.\n *\n * @return {bool} true if the item is not displayed in the permalink\n */\n isLayerHidden: PropTypes.func,\n};\n\nconst defaultProps = {\n history: null,\n layerService: null,\n map: null,\n params: {},\n coordinateDecimals: 2,\n isLayerHidden: () => {\n return false;\n },\n};\n\n/**\n * This component handles permalink logic. Injecting an\n * __[ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html)__\n * will add the *map center* (x, y) and the *zoom* (z) parameters to the permalink.\n * Injecting a\n * __[layerService](https://github.com/geops/react-spatial/blob/master/src/LayerService.js)__\n * (including at least one layer)\n * will add the *baselayers* and/or *layers* parameters. Further parameters can\n * be added using __params__.\n */\nclass Permalink extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.moveEndRef = null;\n this.updateLayers = this.updateLayers.bind(this);\n }\n\n componentDidMount() {\n const { map, layerService, isLayerHidden } = this.props;\n if (map) {\n this.moveEndRef = map.on('moveend', () => {\n this.onMapMoved();\n });\n }\n\n if (layerService) {\n this.updateLayerService();\n\n // set layer visibility based on 'layers' parameter.\n const urlParams = qs.parse(window.location.search);\n\n if (urlParams.layers) {\n const visibleLayers = urlParams.layers.split(',');\n layerService.getLayersAsFlatArray().forEach((l) => {\n if (visibleLayers.includes(l.key)) {\n l.setVisible(true);\n } else if (\n !l.isBaseLayer &&\n !l.hasVisibleChildren() &&\n !isLayerHidden(l)\n ) {\n l.setVisible(false);\n }\n });\n }\n\n // Set baser layer visibility based on 'baseLayers' parameter.\n const visibleBaseLayers = (urlParams.baselayers || '').split(',');\n layerService.getBaseLayers().forEach((baseLayer) => {\n if (baseLayer.key === visibleBaseLayers[0]) {\n baseLayer.setVisible(true); // The radio group will hide the others baseLayers automatically\n }\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { map, layerService } = this.props;\n\n if (layerService !== prevProps.layerService) {\n this.updateLayerService();\n }\n\n if (map !== prevProps.map) {\n this.moveEndRef = map.on('moveend', () => {\n return this.onMapMoved();\n });\n }\n\n this.updateHistory();\n }\n\n componentWillUnmount() {\n const { layerService, map } = this.props;\n\n if (map) {\n unByKey(this.moveEndRef);\n }\n\n if (layerService) {\n layerService.un('change:layers', this.updateLayers);\n layerService.un('change:visible', this.updateLayers);\n }\n }\n\n onMapMoved() {\n const { map } = this.props;\n const mapView = map.getView();\n const { center } = mapView.getProperties();\n\n this.setState({\n x: this.roundCoord(center[0]),\n y: this.roundCoord(center[1]),\n // rounds zoom to two digits max.\n z: +`${Math.round(`${parseFloat(mapView.getZoom())}e+2`)}e-2`,\n });\n }\n\n roundCoord(val) {\n const { coordinateDecimals } = this.props;\n return parseFloat(val.toFixed(coordinateDecimals));\n }\n\n updateLayerService() {\n const { layerService } = this.props;\n if (layerService) {\n layerService.un('change:visible', this.updateState);\n layerService.un('change:layers', this.updateLayers);\n this.updateLayers();\n layerService.on('change:layers', this.updateLayers);\n layerService.on('change:visible', this.updateLayers);\n }\n }\n\n updateLayers() {\n const { layerService, isLayerHidden } = this.props;\n const baseLayers = layerService.getBaseLayers();\n const idx = baseLayers.findIndex((l) => {\n return l.visible;\n });\n if (idx !== -1) {\n const baseLayerVisible = baseLayers.splice(idx, 1);\n baseLayers.unshift(baseLayerVisible[0]);\n }\n\n this.setState({\n layers: layerService\n .getLayersAsFlatArray()\n .filter((l) => {\n return (\n !l.isBaseLayer &&\n l.visible &&\n (!l.hasVisibleChildren() ||\n (l.children || []).every((child) => {\n return isLayerHidden(child);\n })) &&\n !isLayerHidden(l)\n );\n })\n .map((l) => {\n return l.key;\n })\n .join(),\n baselayers:\n baseLayers.length > 1\n ? baseLayers\n .map((l) => {\n return l.key;\n })\n .join()\n : undefined,\n });\n }\n\n updateHistory() {\n const { params, history } = this.props;\n const oldParams = qs.parse(window.location.search);\n const parameters = { ...oldParams, ...this.state, ...params };\n\n // Remove parameters that are undefined or null\n Object.entries(parameters).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n delete parameters[key];\n }\n });\n\n // encodeURI to encode spaces, accents, etc. but not characters like ;,/?:@&=+$-_.!~*'()\n const qStr = encodeURI(qs.stringify(parameters, { encode: false }));\n const search = qStr ? `?${qStr}` : '';\n\n if (\n (!qStr && window.location.search) ||\n (qStr && search !== window.location.search)\n ) {\n if (history) {\n history.replace({ search });\n } else {\n const { hash } = window.location;\n window.history.replaceState(\n undefined,\n undefined,\n `${search}${hash || ''}`,\n );\n }\n }\n }\n\n render() {\n return null;\n }\n}\n\nPermalink.propTypes = propTypes;\nPermalink.defaultProps = defaultProps;\n\nexport default Permalink;\n"],"names":["const","super","this"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-spatial",
3
3
  "description": "Components to build React map apps.",
4
- "version": "1.1.4-beta.1",
4
+ "version": "1.1.4",
5
5
  "license": "MIT",
6
6
  "dependencies": {
7
7
  "@geops/geops-ui": "0.1.13",