@rio-cloud/rio-uikit 0.16.1 → 0.16.2-beta.3

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.
Files changed (241) hide show
  1. package/ColorScheme.d.ts +4 -0
  2. package/ColorScheme.js +2 -0
  3. package/Colors.js +1 -1
  4. package/TruckLayer.js +1 -1
  5. package/components/assetTree/Tree.js +1 -1
  6. package/components/charts/chartHelper.js +1 -1
  7. package/components/map/components/Map.js +147 -130
  8. package/components/map/components/constants.js +4 -1
  9. package/components/map/components/features/layers/RoadRestrictionLayer.js +26 -0
  10. package/components/map/components/features/layers/TrafficLayer.js +19 -6
  11. package/components/map/components/features/layers/baselayers/DefaultRasterLayer.js +20 -0
  12. package/components/map/components/features/layers/baselayers/DefaultVectorLayer.js +14 -0
  13. package/components/map/components/features/layers/baselayers/FleetStyleLayer.js +13 -17
  14. package/components/map/components/features/layers/baselayers/SatelliteLayer.js +13 -17
  15. package/components/map/components/features/layers/baselayers/TerrainLayer.js +13 -17
  16. package/components/map/components/features/layers/baselayers/useBaseLayer.js +41 -0
  17. package/components/map/components/mapUtils.js +4 -1
  18. package/components/mapMarker/ClusterMapMarker.js +2 -2
  19. package/components/mapMarker/SingleMapMarker.js +2 -2
  20. package/components/sidebars/Sidebar.js +2 -2
  21. package/hooks/useHereMap.ts +23 -0
  22. package/hooks/useScripts.ts +52 -0
  23. package/hooks/useScrollPosition.js +72 -0
  24. package/index.js +4 -1
  25. package/lib/es/ColorScheme.d.ts +4 -0
  26. package/lib/es/ColorScheme.js +18 -0
  27. package/lib/es/Colors.js +1 -1
  28. package/lib/es/TruckLayer.js +2 -2
  29. package/lib/es/components/assetTree/Tree.js +1 -1
  30. package/lib/es/components/charts/chartHelper.js +1 -1
  31. package/lib/es/components/map/components/Map.js +145 -125
  32. package/lib/es/components/map/components/constants.js +3 -0
  33. package/lib/es/components/map/components/features/layers/RoadRestrictionLayer.js +34 -0
  34. package/lib/es/components/map/components/features/layers/TrafficLayer.js +18 -6
  35. package/lib/es/components/map/components/features/layers/baselayers/DefaultRasterLayer.js +26 -0
  36. package/lib/es/components/map/components/features/layers/baselayers/DefaultVectorLayer.js +21 -0
  37. package/lib/es/components/map/components/features/layers/baselayers/FleetStyleLayer.js +13 -18
  38. package/lib/es/components/map/components/features/layers/baselayers/SatelliteLayer.js +13 -18
  39. package/lib/es/components/map/components/features/layers/baselayers/TerrainLayer.js +13 -18
  40. package/lib/es/components/map/components/features/layers/baselayers/useBaseLayer.js +49 -0
  41. package/lib/es/components/map/components/mapUtils.js +6 -3
  42. package/lib/es/components/mapMarker/ClusterMapMarker.js +2 -2
  43. package/lib/es/components/mapMarker/SingleMapMarker.js +2 -2
  44. package/lib/es/components/sidebars/Sidebar.js +2 -2
  45. package/lib/es/hooks/useHereMap.ts +23 -0
  46. package/lib/es/hooks/useScripts.ts +52 -0
  47. package/lib/es/hooks/useScrollPosition.js +80 -0
  48. package/lib/es/index.js +24 -1
  49. package/lib/es/mapIndex.js +2 -2
  50. package/lib/es/styles/components/Activity.less +9 -10
  51. package/lib/es/styles/components/ApplicationHeader.less +24 -29
  52. package/lib/es/styles/components/ApplicationLayout.less +7 -7
  53. package/lib/es/styles/components/AssetTree.less +30 -28
  54. package/lib/es/styles/components/AutoSuggest.less +2 -2
  55. package/lib/es/styles/components/BottomSheet.less +1 -2
  56. package/lib/es/styles/components/Carousel.less +13 -9
  57. package/lib/es/styles/components/Checkbox.less +15 -16
  58. package/lib/es/styles/components/ClearableInput.less +3 -3
  59. package/lib/es/styles/components/Counter.less +12 -12
  60. package/lib/es/styles/components/DataTabs.less +2 -2
  61. package/lib/es/styles/components/DatePicker.less +27 -27
  62. package/lib/es/styles/components/Dialog.less +15 -11
  63. package/lib/es/styles/components/Dropdown.less +11 -11
  64. package/lib/es/styles/components/Expander.less +7 -7
  65. package/lib/es/styles/components/ListMenu.less +8 -8
  66. package/lib/es/styles/components/MapHere.less +3 -2
  67. package/lib/es/styles/components/MapMarker.less +16 -17
  68. package/lib/es/styles/components/MapSettings.less +5 -5
  69. package/lib/es/styles/components/NoData.less +1 -1
  70. package/lib/es/styles/components/Notification.less +12 -12
  71. package/lib/es/styles/components/RadioButton.less +11 -12
  72. package/lib/es/styles/components/Resizer.less +1 -1
  73. package/lib/es/styles/components/Select.less +16 -26
  74. package/lib/es/styles/components/Sidebar.less +29 -21
  75. package/lib/es/styles/components/Slider.less +18 -18
  76. package/lib/es/styles/components/Spinner.less +6 -6
  77. package/lib/es/styles/components/StatsWidget.less +5 -5
  78. package/lib/es/styles/components/SteppedProgressBar.less +32 -29
  79. package/lib/es/styles/components/SupportMarker.less +1 -1
  80. package/lib/es/styles/components/Switch.less +8 -8
  81. package/lib/es/styles/components/TableSettingsDialog.less +7 -7
  82. package/lib/es/styles/components/TableToolbar.less +1 -1
  83. package/lib/es/styles/components/Tag.less +10 -10
  84. package/lib/es/styles/components/Timeline.less +3 -3
  85. package/lib/es/styles/components/Tooltip.less +10 -10
  86. package/lib/es/styles/design/badges.less +10 -10
  87. package/lib/es/styles/design/border.less +1 -1
  88. package/lib/es/styles/design/breadcrumbs.less +2 -2
  89. package/lib/es/styles/design/button-groups.less +25 -1
  90. package/lib/es/styles/design/buttons.less +53 -109
  91. package/lib/es/styles/design/callouts.less +3 -3
  92. package/lib/es/styles/design/code.less +4 -6
  93. package/lib/es/styles/design/colors.less +20 -20
  94. package/lib/es/styles/design/form-input-groups.less +4 -4
  95. package/lib/es/styles/design/form-inputs.less +33 -31
  96. package/lib/es/styles/design/images.less +2 -2
  97. package/lib/es/styles/design/labels.less +11 -11
  98. package/lib/es/styles/design/list-group.less +14 -12
  99. package/lib/es/styles/design/navs.less +27 -27
  100. package/lib/es/styles/design/normalize.less +0 -9
  101. package/lib/es/styles/design/pagination.less +10 -10
  102. package/lib/es/styles/design/panels.less +10 -10
  103. package/lib/es/styles/design/popovers.less +8 -8
  104. package/lib/es/styles/design/progress-bars.less +8 -8
  105. package/lib/es/styles/design/shadows.less +14 -7
  106. package/lib/es/styles/design/tables.less +68 -106
  107. package/lib/es/styles/design/text.less +5 -19
  108. package/lib/es/styles/design/theme.less +10 -10
  109. package/lib/es/styles/design/thumbnails.less +2 -2
  110. package/lib/es/styles/design/type.less +4 -4
  111. package/lib/es/styles/design/wells.less +1 -1
  112. package/lib/es/styles/mapping/color-map.less +65 -64
  113. package/lib/es/styles/mixins/_imports.less +14 -0
  114. package/lib/es/styles/mixins/buttons.less +24 -56
  115. package/lib/es/styles/mixins/forms.less +19 -55
  116. package/lib/es/styles/mixins/hsl.less +19 -0
  117. package/lib/es/styles/mixins/panels.less +2 -2
  118. package/lib/es/styles/print/print.less +7 -7
  119. package/lib/es/styles/rio-uikit-core.less +2 -2
  120. package/lib/es/styles/rio-uikit-print-utilities.less +2 -2
  121. package/lib/es/styles/rio-uikit-responsive-utilities.less +2 -2
  122. package/lib/es/styles/variables/_index.less +196 -0
  123. package/lib/es/styles/variables/colors.json +67 -0
  124. package/lib/es/styles/variables/concated_css_variables.less +66 -0
  125. package/lib/es/styles/variables/dark_colors.less +88 -0
  126. package/lib/es/styles/variables/dark_css_variables.less +28 -0
  127. package/lib/es/styles/variables/dark_css_variables_map.less +96 -0
  128. package/lib/es/styles/variables/light_colors.less +92 -0
  129. package/lib/es/styles/variables/light_css_variables.less +17 -0
  130. package/lib/es/styles/variables/light_css_variables_map.less +100 -0
  131. package/lib/es/styles/variables/screens.less +7 -0
  132. package/lib/es/styles/variables/text.less +23 -0
  133. package/lib/es/themes/BuyButton/styles/rio-buyButton.less +13 -8
  134. package/lib/es/themes/MAN/styles/man-uikit.less +3 -0
  135. package/lib/es/themes/SCANIA/styles/scania-uikit.less +3 -0
  136. package/lib/es/themes/Volkswagen/styles/vw-uikit.less +21 -30
  137. package/lib/es/themes/Website/styles/rio-website.less +145 -120
  138. package/lib/es/themes/Xmas/styles/rio-xmas.less +59 -29
  139. package/lib/es/types.ts +6 -1
  140. package/lib/es/useScrollPosition.d.ts +4 -0
  141. package/lib/es/useScrollPosition.js +13 -0
  142. package/lib/es/utils/colorScheme.js +59 -0
  143. package/lib/es/utils/init.js +2 -0
  144. package/lib/es/version.json +1 -1
  145. package/mapIndex.js +1 -1
  146. package/package.json +4 -3
  147. package/styles/components/Activity.less +9 -10
  148. package/styles/components/ApplicationHeader.less +24 -29
  149. package/styles/components/ApplicationLayout.less +7 -7
  150. package/styles/components/AssetTree.less +30 -28
  151. package/styles/components/AutoSuggest.less +2 -2
  152. package/styles/components/BottomSheet.less +1 -2
  153. package/styles/components/Carousel.less +13 -9
  154. package/styles/components/Checkbox.less +15 -16
  155. package/styles/components/ClearableInput.less +3 -3
  156. package/styles/components/Counter.less +12 -12
  157. package/styles/components/DataTabs.less +2 -2
  158. package/styles/components/DatePicker.less +27 -27
  159. package/styles/components/Dialog.less +15 -11
  160. package/styles/components/Dropdown.less +11 -11
  161. package/styles/components/Expander.less +7 -7
  162. package/styles/components/ListMenu.less +8 -8
  163. package/styles/components/MapHere.less +3 -2
  164. package/styles/components/MapMarker.less +16 -17
  165. package/styles/components/MapSettings.less +5 -5
  166. package/styles/components/NoData.less +1 -1
  167. package/styles/components/Notification.less +12 -12
  168. package/styles/components/RadioButton.less +11 -12
  169. package/styles/components/Resizer.less +1 -1
  170. package/styles/components/Select.less +16 -26
  171. package/styles/components/Sidebar.less +29 -21
  172. package/styles/components/Slider.less +18 -18
  173. package/styles/components/Spinner.less +6 -6
  174. package/styles/components/StatsWidget.less +5 -5
  175. package/styles/components/SteppedProgressBar.less +32 -29
  176. package/styles/components/SupportMarker.less +1 -1
  177. package/styles/components/Switch.less +8 -8
  178. package/styles/components/TableSettingsDialog.less +7 -7
  179. package/styles/components/TableToolbar.less +1 -1
  180. package/styles/components/Tag.less +10 -10
  181. package/styles/components/Timeline.less +3 -3
  182. package/styles/components/Tooltip.less +10 -10
  183. package/styles/design/badges.less +10 -10
  184. package/styles/design/border.less +1 -1
  185. package/styles/design/breadcrumbs.less +2 -2
  186. package/styles/design/button-groups.less +25 -1
  187. package/styles/design/buttons.less +53 -109
  188. package/styles/design/callouts.less +3 -3
  189. package/styles/design/code.less +4 -6
  190. package/styles/design/colors.less +20 -20
  191. package/styles/design/form-input-groups.less +4 -4
  192. package/styles/design/form-inputs.less +33 -31
  193. package/styles/design/images.less +2 -2
  194. package/styles/design/labels.less +11 -11
  195. package/styles/design/list-group.less +14 -12
  196. package/styles/design/navs.less +27 -27
  197. package/styles/design/normalize.less +0 -9
  198. package/styles/design/pagination.less +10 -10
  199. package/styles/design/panels.less +10 -10
  200. package/styles/design/popovers.less +8 -8
  201. package/styles/design/progress-bars.less +8 -8
  202. package/styles/design/shadows.less +14 -7
  203. package/styles/design/tables.less +68 -106
  204. package/styles/design/text.less +5 -19
  205. package/styles/design/theme.less +10 -10
  206. package/styles/design/thumbnails.less +2 -2
  207. package/styles/design/type.less +4 -4
  208. package/styles/design/wells.less +1 -1
  209. package/styles/mapping/color-map.less +65 -64
  210. package/styles/mixins/_imports.less +14 -0
  211. package/styles/mixins/buttons.less +24 -56
  212. package/styles/mixins/forms.less +19 -55
  213. package/styles/mixins/hsl.less +19 -0
  214. package/styles/mixins/panels.less +2 -2
  215. package/styles/print/print.less +7 -7
  216. package/styles/rio-uikit-core.less +2 -2
  217. package/styles/rio-uikit-print-utilities.less +2 -2
  218. package/styles/rio-uikit-responsive-utilities.less +2 -2
  219. package/styles/variables/_index.less +196 -0
  220. package/styles/variables/colors.json +67 -0
  221. package/styles/variables/concated_css_variables.less +66 -0
  222. package/styles/variables/dark_colors.less +88 -0
  223. package/styles/variables/dark_css_variables.less +28 -0
  224. package/styles/variables/dark_css_variables_map.less +96 -0
  225. package/styles/variables/light_colors.less +92 -0
  226. package/styles/variables/light_css_variables.less +17 -0
  227. package/styles/variables/light_css_variables_map.less +100 -0
  228. package/styles/variables/screens.less +7 -0
  229. package/styles/variables/text.less +23 -0
  230. package/themes/BuyButton/styles/rio-buyButton.less +13 -8
  231. package/themes/MAN/styles/man-uikit.less +3 -0
  232. package/themes/SCANIA/styles/scania-uikit.less +3 -0
  233. package/themes/Volkswagen/styles/vw-uikit.less +21 -30
  234. package/themes/Website/styles/rio-website.less +145 -120
  235. package/themes/Xmas/styles/rio-xmas.less +59 -29
  236. package/types.ts +6 -1
  237. package/useScrollPosition.d.ts +4 -0
  238. package/useScrollPosition.js +2 -0
  239. package/utils/colorScheme.js +50 -0
  240. package/utils/init.js +2 -0
  241. package/version.json +1 -1
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/ColorScheme' {
2
+ export function getColorScheme(): string;
3
+ export function setColorScheme(scheme: 'dark' | 'light' | 'default' | 'system'): void;
4
+ }
package/ColorScheme.js ADDED
@@ -0,0 +1,2 @@
1
+ import { getColorScheme as _getColorScheme, setColorScheme as _setColorScheme } from './utils/colorScheme';
2
+ export { _getColorScheme as getColorScheme, _setColorScheme as setColorScheme };
package/Colors.js CHANGED
@@ -1,2 +1,2 @@
1
- import _colors from './styles/shared/colors.json';
1
+ import _colors from './styles/variables/colors.json';
2
2
  export { _colors as default };
package/TruckLayer.js CHANGED
@@ -1,2 +1,2 @@
1
- import { default as _TruckLayer } from './components/map/components/features/layers/TruckLayer';
1
+ import { default as _TruckLayer } from './components/map/components/features/layers/RoadRestrictionLayer';
2
2
  export { _TruckLayer as default };
@@ -643,7 +643,7 @@ Tree.propTypes = {
643
643
  firstName: PropTypes.string,
644
644
  lastName: PropTypes.string.isRequired
645
645
  })]).isRequired,
646
- info: PropTypes.string,
646
+ info: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
647
647
  type: PropTypes.string.isRequired,
648
648
  groupIds: PropTypes.arrayOf(PropTypes.string),
649
649
  className: PropTypes.string
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- import colors from '../../styles/shared/colors.json';
4
+ import colors from '../../styles/variables/colors.json';
5
5
  var brightColors = ['color-warmup-corn', 'color-coldplay-khaki'];
6
6
  export var defaultChartColors = Object.keys(colors).reverse().filter(function (key) {
7
7
  return !brightColors.includes(key);
@@ -4,8 +4,6 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  var _PropTypes$shape;
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
- /* eslint-disable no-undef, camelcase */
8
-
9
7
  import React, { useRef, useState, useEffect } from 'react';
10
8
  import PropTypes from 'prop-types';
11
9
  import isFunction from 'lodash/fp/isFunction';
@@ -15,22 +13,55 @@ import throttle from 'lodash/fp/throttle';
15
13
  import mapProps from '../utils/proptypes';
16
14
  import addEventListener from '../../../utils/addEventListener';
17
15
  import '../herePolyfill';
18
- import { MAP_TYPE_DEFAULT, MAP_TYPE_FLEET_STYLE, MAP_TYPE_SATELLITE, MAP_TYPE_TERRAIN, MAP_LAYER_INCIDENTS, MAP_LAYER_TRAFFIC, MAP_LAYER_ROAD_RESTRICTIONS, TILE_SIZE, HIGH_RES_PPI } from './constants';
19
- // import MapSettings from './features/old/MapSettings';
16
+ import { MAP_TYPE_DEFAULT, MAP_TYPE_FLEET_STYLE, MAP_TYPE_SATELLITE, MAP_TYPE_TERRAIN, MAP_LAYER_INCIDENTS, MAP_LAYER_TRAFFIC, MAP_LAYER_ROAD_RESTRICTIONS, TILE_SIZE } from './constants';
20
17
  import ZoomButtons from './features/settings/ZoomButtons';
21
18
  import IncidentsLayer from './features/layers/IncidentsLayer';
22
19
  import TrafficLayer from './features/layers/TrafficLayer';
23
- import TruckLayer from './features/layers/TruckLayer';
24
- import DefaultLayer from './features/layers/baselayers/DefaultLayer';
20
+ import RoadRestrictionLayer from './features/layers/RoadRestrictionLayer';
21
+ import DefaultVectorLayer from './features/layers/baselayers/DefaultVectorLayer';
22
+ import DefaultRasterLayer from './features/layers/baselayers/DefaultRasterLayer';
25
23
  import FleetStyleLayer from './features/layers/baselayers/FleetStyleLayer';
26
24
  import SatelliteLayer from './features/layers/baselayers/SatelliteLayer';
27
25
  import TerrainLayer from './features/layers/baselayers/TerrainLayer';
28
26
  import { addEventListenerMap, removeEventListenerMap } from '../utils/eventHandling';
29
27
  import { MapContext, MapSettingsContext } from './context';
30
- import { createUtils } from './mapUtils';
31
- export var NO_CREDENTIALS_ERROR_MESSAGE = 'Cannot instantiate PlainMap. Missing credentials property.';
28
+ import { createUtils, getPPI } from './mapUtils';
29
+ export var NO_CREDENTIALS_ERROR_MESSAGE = 'Cannot instantiate the Map. Missing credentials property.';
32
30
  var RESIZE_THROTTLE = 1100; // 100 more than the ApplicationLayout handler
33
31
 
32
+ // Note: "apikey" used by Here v3.1 whereas "app_id" and "app_code" are used by the 3.0 API
33
+ // The Here API 3.1 works a little different and by default uses WebGL rendering
34
+ // See Migration guide: https://developer.here.com/documentation/maps/3.1.37.0/dev_guide/topics/migration.html
35
+ var getPlatform = function getPlatform(credentials) {
36
+ return new H.service.Platform({
37
+ apikey: credentials.apikey || credentials.api_key,
38
+ app_id: credentials.app_id,
39
+ app_code: credentials.app_code
40
+ });
41
+ };
42
+
43
+ // Obtain the default map types from the platform object:
44
+ var createDefaultLayers = function createDefaultLayers(platform, language, darkMode) {
45
+ return platform.createDefaultLayers({
46
+ lg: language,
47
+ lg2: 'de',
48
+ // Only needed for a raster based map
49
+ tileSize: TILE_SIZE,
50
+ ppi: getPPI(),
51
+ // default style for default raster layer
52
+ style: !darkMode && 'mini'
53
+ });
54
+ };
55
+ var getHereUi = function getHereUi(hereMap, defaultLayers, showScaleBar) {
56
+ var hereUi = H.ui.UI.createDefault(hereMap, defaultLayers);
57
+ if (hereUi) {
58
+ hereUi.getControl('scalebar').setVisibility(showScaleBar);
59
+ hereUi.getControl('scalebar').setAlignment('bottom-left');
60
+ hereUi.getControl('mapsettings').setVisibility(false);
61
+ hereUi.removeControl('zoom');
62
+ }
63
+ return hereUi;
64
+ };
34
65
  var getBounds = function getBounds(boundingBox) {
35
66
  var top = boundingBox.top,
36
67
  left = boundingBox.left,
@@ -38,41 +69,47 @@ var getBounds = function getBounds(boundingBox) {
38
69
  right = boundingBox.right;
39
70
  return new H.geo.Rect(top, left, bottom, right);
40
71
  };
41
- var getLayer = function getLayer(api, layer, language) {
72
+ var getLayer = function getLayer(api, layer, language, useWebGL) {
42
73
  switch (layer) {
43
74
  case MAP_LAYER_TRAFFIC:
44
75
  return /*#__PURE__*/React.createElement(TrafficLayer, {
45
76
  api: api,
46
77
  language: language,
47
78
  key: layer,
48
- layerIndex: 1
79
+ useWebGL: useWebGL
49
80
  });
50
81
  case MAP_LAYER_INCIDENTS:
51
82
  return /*#__PURE__*/React.createElement(IncidentsLayer, {
52
83
  api: api,
53
84
  language: language,
54
- key: layer,
55
- layerIndex: 2
85
+ key: layer
56
86
  });
57
87
  case MAP_LAYER_ROAD_RESTRICTIONS:
58
- return /*#__PURE__*/React.createElement(TruckLayer, {
88
+ return /*#__PURE__*/React.createElement(RoadRestrictionLayer, {
59
89
  api: api,
60
90
  language: language,
61
91
  key: layer,
62
- layerIndex: 3
92
+ useWebGL: useWebGL
63
93
  });
64
94
  default:
65
95
  null;
66
96
  }
67
97
  };
68
- var getBaseLayer = function getBaseLayer(api, baseLayer, language) {
98
+ var getBaseLayer = function getBaseLayer(api, baseLayer, language, useWebGL, darkMode) {
69
99
  switch (baseLayer) {
70
100
  case MAP_TYPE_DEFAULT:
71
- return /*#__PURE__*/React.createElement(DefaultLayer, {
72
- api: api,
73
- language: language,
74
- key: baseLayer
75
- });
101
+ {
102
+ return useWebGL ? /*#__PURE__*/React.createElement(DefaultVectorLayer, {
103
+ api: api,
104
+ language: language,
105
+ key: baseLayer
106
+ }) : /*#__PURE__*/React.createElement(DefaultRasterLayer, {
107
+ api: api,
108
+ language: language,
109
+ key: baseLayer,
110
+ darkMode: darkMode
111
+ });
112
+ }
76
113
  case MAP_TYPE_FLEET_STYLE:
77
114
  return /*#__PURE__*/React.createElement(FleetStyleLayer, {
78
115
  api: api,
@@ -95,7 +132,7 @@ var getBaseLayer = function getBaseLayer(api, baseLayer, language) {
95
132
  null;
96
133
  }
97
134
  };
98
- var enhanceChildren = function enhanceChildren(children, api) {
135
+ var enrichChildrenWithApi = function enrichChildrenWithApi(children, api) {
99
136
  return React.Children.map(children, function (child) {
100
137
  if (child) {
101
138
  return /*#__PURE__*/React.cloneElement(child, {
@@ -114,6 +151,14 @@ var getStyle = function getStyle(height, width) {
114
151
  }
115
152
  return style;
116
153
  };
154
+
155
+ // https://developer.here.com/documentation/maps/3.1.37.0/api_reference/H.service.Platform.html#createDefaultLayers
156
+ var getMapRenderingEngine = function getMapRenderingEngine(defaultLayers, useWebGL, darkMode) {
157
+ if (useWebGL) {
158
+ return defaultLayers.vector.normal.map;
159
+ }
160
+ return darkMode ? defaultLayers.raster.normal.mapnight : defaultLayers.raster.normal.map;
161
+ };
117
162
  var Map = function Map(props) {
118
163
  var children = props.children,
119
164
  credentials = props.credentials,
@@ -139,7 +184,9 @@ var Map = function Map(props) {
139
184
  onZoomIn = props.onZoomIn,
140
185
  onZoomOut = props.onZoomOut,
141
186
  mapSettingsTooltip = props.mapSettingsTooltip,
142
- mapSettings = props.mapSettings;
187
+ mapSettings = props.mapSettings,
188
+ useWebGL = props.useWebGL,
189
+ darkMode = props.darkMode;
143
190
  var mapRef = useRef(null);
144
191
  var _useState = useState(false),
145
192
  _useState2 = _slicedToArray(_useState, 2),
@@ -147,107 +194,80 @@ var Map = function Map(props) {
147
194
  setMapInitialized = _useState2[1];
148
195
  var _useState3 = useState(),
149
196
  _useState4 = _slicedToArray(_useState3, 2),
150
- herePlatform = _useState4[0],
151
- setHerePlatform = _useState4[1];
152
- var _useState5 = useState(),
197
+ api = _useState4[0],
198
+ setApi = _useState4[1];
199
+ var _useState5 = useState(mapType),
153
200
  _useState6 = _slicedToArray(_useState5, 2),
154
- api = _useState6[0],
155
- setApi = _useState6[1];
156
- var _useState7 = useState(mapType),
201
+ baseLayer = _useState6[0],
202
+ setBaseLayer = _useState6[1];
203
+ var _useState7 = useState(mapLayer),
157
204
  _useState8 = _slicedToArray(_useState7, 2),
158
- baseLayer = _useState8[0],
159
- setBaseLayer = _useState8[1];
160
- var _useState9 = useState(mapLayer),
205
+ activeLayers = _useState8[0],
206
+ setActiveLayers = _useState8[1];
207
+ var _useState9 = useState(externalShowCluster),
161
208
  _useState10 = _slicedToArray(_useState9, 2),
162
- activeLayers = _useState10[0],
163
- setActiveLayers = _useState10[1];
164
- var _useState11 = useState(externalShowCluster),
165
- _useState12 = _slicedToArray(_useState11, 2),
166
- showCluster = _useState12[0],
167
- setShowCluster = _useState12[1];
209
+ showCluster = _useState10[0],
210
+ setShowCluster = _useState10[1];
211
+ var devicePixelRatio = window.devicePixelRatio || 1;
168
212
  useEffect(function () {
169
- if (!herePlatform) {
170
- var platform = new H.service.Platform({
171
- // Note: "apikey" used by Here v3.1 whereas "app_id" and "app_code" are used by the 3.0 API
172
- apikey: credentials.apikey || credentials.api_key,
173
- app_id: credentials.app_id,
174
- app_code: credentials.app_code
175
- });
176
- setHerePlatform(platform);
177
- var defaultLayers = platform.createDefaultLayers({
178
- tileSize: TILE_SIZE,
179
- ppi: window.devicePixelRatio > 1 ? HIGH_RES_PPI : undefined,
180
- lg: language,
181
- lg2: 'en'
182
- });
183
- var bounds = boundingBox && getBounds(boundingBox);
184
- var newHereMap = new H.Map(mapRef.current, defaultLayers.raster.normal.map, {
185
- zoom: zoom,
186
- center: center,
187
- bounds: bounds,
188
- // Removed window.devicePixelRatio || 1 since it was zooming out when devicePixelRatio > 1
189
- pixelRatio: 1,
190
- // need to be set for better performence of legacy map
191
- engineType: H.map.render.RenderEngine.EngineType.P2D
192
- });
213
+ var platform = getPlatform(credentials);
214
+ var defaultLayers = createDefaultLayers(platform, language, darkMode);
215
+ var bounds = boundingBox && getBounds(boundingBox);
216
+ var mapRenderingEngine = getMapRenderingEngine(defaultLayers, useWebGL, darkMode);
193
217
 
194
- // Add a resize listener to make sure that the map occupies the whole container
195
- var resizeListener = addEventListener(window, 'resize', throttle(RESIZE_THROTTLE, function () {
196
- return newHereMap.getViewPort().resize();
197
- }));
198
- var orientationChangeListener = addEventListener(window, 'orientationchange', throttle(RESIZE_THROTTLE, function () {
199
- return newHereMap.getViewPort().resize();
200
- }));
201
- setMapInitialized(true);
202
- var newHereMapEvents = !disableMapEvents && new H.mapevents.MapEvents(newHereMap);
203
- var newHereBehavior = !disableMapEvents && !disableBehavior && new H.mapevents.Behavior(newHereMapEvents);
204
- if (newHereBehavior) {
205
- newHereBehavior.disable(H.mapevents.Behavior.Feature.FRACTIONAL_ZOOM);
206
- }
207
- addEventListenerMap(newHereMap, eventListenerMap, newHereMap);
208
- var hereUi = H.ui.UI.createDefault(newHereMap, defaultLayers);
209
- if (hereUi) {
210
- hereUi.getControl('scalebar').setVisibility(showScaleBar);
211
- hereUi.getControl('scalebar').setAlignment('bottom-left');
212
- hereUi.getControl('mapsettings').setVisibility(false);
213
- hereUi.removeControl('zoom');
214
- }
215
- var newSettings = {
218
+ // Instantiate (and display) a map object:
219
+ var hereMap = new H.Map(mapRef.current, mapRenderingEngine, {
220
+ zoom: zoom,
221
+ center: center,
222
+ bounds: bounds,
223
+ pixelRatio: devicePixelRatio,
224
+ // Need to be set for better performence of raster based map
225
+ engineType: useWebGL ? undefined : H.map.render.RenderEngine.EngineType.P2D
226
+ });
227
+
228
+ // Add a resize listener to make sure that the map occupies the whole container
229
+ var resizeListener = addEventListener(window, 'resize', throttle(RESIZE_THROTTLE, function () {
230
+ return hereMap.getViewPort().resize();
231
+ }));
232
+ var orientationChangeListener = addEventListener(window, 'orientationchange', throttle(RESIZE_THROTTLE, function () {
233
+ return hereMap.getViewPort().resize();
234
+ }));
235
+ setMapInitialized(true);
236
+ var hereMapEvents = !disableMapEvents && new H.mapevents.MapEvents(hereMap);
237
+ var hereBehavior = !(disableMapEvents || disableBehavior) && new H.mapevents.Behavior(hereMapEvents);
238
+ addEventListenerMap(hereMap, eventListenerMap, hereMap);
239
+ setApi({
240
+ credentials: credentials,
241
+ defaultLayers: defaultLayers,
242
+ group: hereMap,
243
+ map: hereMap,
244
+ mapEvents: hereMapEvents,
245
+ behavior: hereBehavior,
246
+ platform: platform,
247
+ ui: getHereUi(hereMap, defaultLayers, showScaleBar),
248
+ utils: createUtils(hereMap),
249
+ settings: {
216
250
  baseLayer: baseLayer,
217
251
  mapLayer: activeLayers,
218
252
  showCluster: showCluster
219
- };
220
- setApi({
221
- credentials: credentials,
222
- defaultLayers: defaultLayers,
223
- group: newHereMap,
224
- map: newHereMap,
225
- mapEvents: newHereMapEvents,
226
- behavior: newHereBehavior,
227
- platform: platform,
228
- ui: hereUi,
229
- settings: newSettings,
230
- utils: createUtils(newHereMap)
231
- });
232
- return function () {
233
- if (newHereMap) {
234
- removeEventListenerMap(newHereMap);
235
- if (newHereMapEvents) {
236
- newHereMapEvents.dispose();
237
- }
238
- if (resizeListener) {
239
- resizeListener.remove();
240
- }
241
- if (orientationChangeListener) {
242
- orientationChangeListener.remove();
243
- }
244
- //console.log('Destroy map', newHereMap);
245
- newHereMap.dispose();
246
- // setTimeout(() => newHereMap.dispose(), 0);
253
+ }
254
+ });
255
+ return function () {
256
+ if (hereMap) {
257
+ removeEventListenerMap(hereMap);
258
+ if (hereMapEvents) {
259
+ hereMapEvents.dispose();
247
260
  }
248
- };
249
- }
250
- }, []);
261
+ if (resizeListener) {
262
+ resizeListener.remove();
263
+ }
264
+ if (orientationChangeListener) {
265
+ orientationChangeListener.remove();
266
+ }
267
+ hereMap.dispose();
268
+ }
269
+ };
270
+ }, [useWebGL, darkMode]);
251
271
 
252
272
  // Update BoundingBox from outside
253
273
  useEffect(function () {
@@ -324,25 +344,17 @@ var Map = function Map(props) {
324
344
  }));
325
345
  };
326
346
  var handleZoomIn = function handleZoomIn() {
327
- var z = api.map.getZoom();
347
+ var z = Math.round(api.map.getZoom());
328
348
  var newZoom = z + 1;
329
349
  onZoomIn(newZoom, z);
330
350
  api.map.setZoom(newZoom, true);
331
351
  };
332
352
  var handleZoomOut = function handleZoomOut() {
333
- var z = api.map.getZoom();
353
+ var z = Math.round(api.map.getZoom());
334
354
  var newZoom = z - 1;
335
355
  onZoomOut(newZoom, z);
336
356
  api.map.setZoom(newZoom, true);
337
357
  };
338
- var renderChildren = function renderChildren() {
339
- if (!children) {
340
- return null;
341
- }
342
- return /*#__PURE__*/React.createElement("div", {
343
- className: 'MapElements'
344
- }, isFunction(children) ? children(api) : enhanceChildren(children, api));
345
- };
346
358
  var style = getStyle(height, width);
347
359
  var autoHeightClass = isEmpty(style) ? 'height-100pct' : '';
348
360
  var hideZoomButtons = disableBehavior;
@@ -367,11 +379,12 @@ var Map = function Map(props) {
367
379
  onShowClusterChange: handleShowClusterChange,
368
380
  mapSettingsTooltip: mapSettingsTooltip
369
381
  }
370
- }, mapSettings), getBaseLayer(api, baseLayer, language), map(function (layer) {
371
- return getLayer(api, layer, language);
372
- }, activeLayers), renderChildren()));
382
+ }, mapSettings), getBaseLayer(api, baseLayer, language, useWebGL, darkMode), map(function (layer) {
383
+ return getLayer(api, layer, language, useWebGL);
384
+ }, activeLayers), children && /*#__PURE__*/React.createElement("div", {
385
+ className: 'MapElements'
386
+ }, isFunction(children) ? children(api) : enrichChildrenWithApi(children, api))));
373
387
  };
374
- ;
375
388
  Map.TYPE_DEFAULT = MAP_TYPE_DEFAULT;
376
389
  Map.TYPE_FLEET_STYLE = MAP_TYPE_FLEET_STYLE;
377
390
  Map.TYPE_SATELLITE = MAP_TYPE_SATELLITE;
@@ -393,7 +406,9 @@ Map.defaultProps = {
393
406
  onMapLayerChange: function onMapLayerChange() {},
394
407
  onShowClusterChange: function onShowClusterChange() {},
395
408
  onZoomIn: function onZoomIn() {},
396
- onZoomOut: function onZoomOut() {}
409
+ onZoomOut: function onZoomOut() {},
410
+ useWebGL: false,
411
+ darkMode: false
397
412
  };
398
413
  Map.propTypes = {
399
414
  credentials: PropTypes.shape((_PropTypes$shape = {}, _defineProperty(_PropTypes$shape, 'app_id', PropTypes.string), _defineProperty(_PropTypes$shape, 'app_code', PropTypes.string), _defineProperty(_PropTypes$shape, 'api_key', PropTypes.string), _defineProperty(_PropTypes$shape, "apikey", PropTypes.string), _PropTypes$shape)).isRequired,
@@ -420,6 +435,8 @@ Map.propTypes = {
420
435
  onZoomOut: PropTypes.func,
421
436
  getApi: PropTypes.func,
422
437
  mapSettingsTooltip: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
423
- mapSettings: PropTypes.node
438
+ mapSettings: PropTypes.node,
439
+ useWebGL: PropTypes.bool,
440
+ darkMode: PropTypes.bool
424
441
  };
425
442
  export default Map;
@@ -8,4 +8,7 @@ export var MAP_LAYER_ROAD_RESTRICTIONS = 'ROAD_RESTRICTIONS';
8
8
  export var FORMAT = 'png8';
9
9
  export var TILE_SIZE = 256;
10
10
  export var TILE_TYPE = 'maptile';
11
- export var HIGH_RES_PPI = 320;
11
+ export var HIGH_RES_PPI = 320;
12
+
13
+ // https://3.base.maps.ls.hereapi.com/maptile/2.1/maptile/da6f196b15/normal.day/11/1086/709/256/png8?xnlp=CL_JSMv3.1.37.0&apikey=Kls87GMD8WOPMBac1vgJ0eWYpSw1YzSXtXNcWHtZf5w&style=alps&lg=eng
14
+ // https://3.base.maps.ls.hereapi.com/maptile/2.1/maptile/da6f196b15/normal.day/11/1086/709/256/png8?xnlp=CL_JSMv3.1.37.0&apikey=Kls87GMD8WOPMBac1vgJ0eWYpSw1YzSXtXNcWHtZf5w&ppi=320&lg=en&lg2=de
@@ -0,0 +1,26 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["useWebGL"];
4
+ import { FORMAT, TILE_SIZE } from '../../constants';
5
+ import { getPPI } from '../../mapUtils';
6
+ import Layer from './Layer';
7
+ var createRoadRestrictionLayer = function createRoadRestrictionLayer(useWebGL) {
8
+ return function (api, language) {
9
+ return api.platform.getMapTileService({
10
+ type: 'base'
11
+ }).createTileLayer('truckonlytile', 'normal.day', TILE_SIZE, FORMAT, {
12
+ style: 'default',
13
+ lg: language,
14
+ ppi: useWebGL ? undefined : getPPI()
15
+ });
16
+ };
17
+ };
18
+ var RoadRestrictionLayer = function RoadRestrictionLayer(props) {
19
+ var useWebGL = props.useWebGL,
20
+ remainingProps = _objectWithoutProperties(props, _excluded);
21
+ var createLayer = createRoadRestrictionLayer(useWebGL);
22
+ return /*#__PURE__*/React.createElement(Layer, _extends({}, remainingProps, {
23
+ createLayer: createLayer
24
+ }));
25
+ };
26
+ export default RoadRestrictionLayer;
@@ -1,10 +1,20 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- /* eslint-disable no-undef */
3
- import React from 'react';
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["useWebGL"];
4
4
  import { FORMAT, TILE_SIZE } from '../../constants';
5
5
  import Layer from './Layer';
6
- var createTrafficLayer = function createTrafficLayer(api, language) {
7
- //return api.defaultLayers.vector.normal.traffic;
6
+ var createVebGlTrafficLayer = function createVebGlTrafficLayer(api, language) {
7
+ // use new Here 3.1 API traffic layer for WebGL
8
+ // https://developer.here.com/documentation/maps/3.1.37.0/dev_guide/topics/migration.html
9
+
10
+ // Create a traffic service and a corresponding provider.
11
+ var service = api.platform.getTrafficService();
12
+ var provider = new H.service.traffic.flow.Provider(service);
13
+
14
+ // Create a tile layer that can be added to the map
15
+ return new H.map.layer.TileLayer(provider);
16
+ };
17
+ var createRasterTrafficLayer = function createRasterTrafficLayer(api, language) {
8
18
  return api.platform.getMapTileService({
9
19
  type: 'traffic'
10
20
  }).createTileLayer('flowtile', 'normal.day.grey', TILE_SIZE, FORMAT, {
@@ -13,8 +23,11 @@ var createTrafficLayer = function createTrafficLayer(api, language) {
13
23
  });
14
24
  };
15
25
  var TrafficLayer = function TrafficLayer(props) {
16
- return /*#__PURE__*/React.createElement(Layer, _extends({}, props, {
17
- createLayer: createTrafficLayer
26
+ var useWebGL = props.useWebGL,
27
+ remainingProps = _objectWithoutProperties(props, _excluded);
28
+ var createLayerCallback = useWebGL ? createVebGlTrafficLayer : createRasterTrafficLayer;
29
+ return /*#__PURE__*/React.createElement(Layer, _extends({}, remainingProps, {
30
+ createLayer: createLayerCallback
18
31
  }));
19
32
  };
20
33
  export default TrafficLayer;
@@ -0,0 +1,20 @@
1
+ import { useBaseLayer } from './useBaseLayer';
2
+
3
+ // https://developer.here.com/documentation/map-tile/dev_guide/topics/resource-info.html
4
+
5
+ var DefaultRasterLayer = function DefaultRasterLayer(props) {
6
+ var api = props.api,
7
+ language = props.language,
8
+ darkMode = props.darkMode;
9
+ useBaseLayer({
10
+ api: api,
11
+ language: language,
12
+ mapTileServiceType: 'base',
13
+ scheme: 'normal.day',
14
+ additionalParameters: !darkMode && {
15
+ style: 'alps'
16
+ }
17
+ });
18
+ return null;
19
+ };
20
+ export default DefaultRasterLayer;
@@ -0,0 +1,14 @@
1
+ import { useBaseLayer } from './useBaseLayer';
2
+ var DefaultVectorLayer = function DefaultVectorLayer(props) {
3
+ var api = props.api,
4
+ language = props.language;
5
+ useBaseLayer({
6
+ api: api,
7
+ language: language,
8
+ mapTileServiceType: 'base',
9
+ scheme: 'normal.day',
10
+ additionalParameters: {}
11
+ });
12
+ return null;
13
+ };
14
+ export default DefaultVectorLayer;
@@ -1,20 +1,16 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
3
- import { FORMAT, TILE_SIZE } from '../../../constants';
4
- import BaseLayer from './BaseLayer';
5
- var createFleetStyleLayer = function createFleetStyleLayer(api, language, showTraffic) {
6
- var type = showTraffic ? 'traffic' : 'base';
7
- var tileType = showTraffic ? 'traffictile' : 'maptile';
8
- return api.platform.getMapTileService({
9
- type: type
10
- }).createTileLayer(tileType, 'normal.day', TILE_SIZE, FORMAT, {
11
- style: 'fleet',
12
- lg: language
13
- });
14
- };
1
+ import { useBaseLayer } from './useBaseLayer';
15
2
  var FleetStyleLayer = function FleetStyleLayer(props) {
16
- return /*#__PURE__*/React.createElement(BaseLayer, _extends({}, props, {
17
- createBaseLayer: createFleetStyleLayer
18
- }));
3
+ var api = props.api,
4
+ language = props.language;
5
+ useBaseLayer({
6
+ api: api,
7
+ language: language,
8
+ mapTileServiceType: 'base',
9
+ scheme: 'normal.day',
10
+ additionalParameters: {
11
+ style: 'fleet'
12
+ }
13
+ });
14
+ return null;
19
15
  };
20
16
  export default FleetStyleLayer;
@@ -1,20 +1,16 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
3
- import { FORMAT, TILE_SIZE } from '../../../constants';
4
- import BaseLayer from './BaseLayer';
5
- var createSatelliteLayer = function createSatelliteLayer(api, language, showTraffic) {
6
- var type = showTraffic ? 'traffic' : 'aerial';
7
- var tileType = showTraffic ? 'traffictile' : 'maptile';
8
- return api.platform.getMapTileService({
9
- type: type
10
- }).createTileLayer(tileType, 'hybrid.day', TILE_SIZE, FORMAT, {
11
- style: 'default',
12
- lg: language
13
- });
14
- };
1
+ import { useBaseLayer } from './useBaseLayer';
15
2
  var SatelliteLayer = function SatelliteLayer(props) {
16
- return /*#__PURE__*/React.createElement(BaseLayer, _extends({}, props, {
17
- createBaseLayer: createSatelliteLayer
18
- }));
3
+ var api = props.api,
4
+ language = props.language;
5
+ useBaseLayer({
6
+ api: api,
7
+ language: language,
8
+ mapTileServiceType: 'aerial',
9
+ scheme: 'hybrid.day',
10
+ additionalParameters: {
11
+ style: 'default'
12
+ }
13
+ });
14
+ return null;
19
15
  };
20
16
  export default SatelliteLayer;