@mwater/visualization 5.5.0 → 5.6.1

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 (275) hide show
  1. package/lib/ColorComponent.js +2 -2
  2. package/lib/MWaterContextComponent.d.ts +1 -1
  3. package/lib/MWaterGlobalFiltersComponent.d.ts +2 -2
  4. package/lib/MWaterGlobalFiltersComponent.js +11 -20
  5. package/lib/MWaterLoaderComponent.d.ts +4 -13
  6. package/lib/MWaterLoaderComponent.js +2 -11
  7. package/lib/TranslationsTabComponent.d.ts +34 -0
  8. package/lib/TranslationsTabComponent.js +256 -0
  9. package/lib/UndoStack.d.ts +2 -1
  10. package/lib/UndoStack.js +12 -6
  11. package/lib/dashboards/DashboardComponent.js +6 -5
  12. package/lib/dashboards/DashboardDesign.d.ts +1 -1
  13. package/lib/dashboards/ServerDashboardDataSource.d.ts +0 -1
  14. package/lib/dashboards/ServerDashboardDataSource.js +0 -25
  15. package/lib/dashboards/SettingsModalComponent.js +9 -233
  16. package/lib/datagrids/DatagridComponent.js +27 -2
  17. package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -3
  18. package/lib/datagrids/DatagridDesignerComponent.js +108 -120
  19. package/lib/datagrids/DatagridViewComponent.js +33 -6
  20. package/lib/datagrids/OrderBysDesignerComponent.d.ts +7 -7
  21. package/lib/datagrids/OrderBysDesignerComponent.js +19 -28
  22. package/lib/index.css +45 -2
  23. package/lib/index.d.ts +5 -5
  24. package/lib/index.js +2 -3
  25. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +8 -1
  26. package/lib/layouts/blocks/BlocksDisplayComponent.js +46 -4
  27. package/lib/maps/BufferLayer.d.ts +0 -13
  28. package/lib/maps/BufferLayer.js +24 -237
  29. package/lib/maps/BufferLayerDesign.d.ts +1 -1
  30. package/lib/maps/BufferLayerDesignerComponent.d.ts +1 -1
  31. package/lib/maps/BufferLayerDesignerComponent.js +2 -7
  32. package/lib/maps/ChoroplethLayer.d.ts +1 -16
  33. package/lib/maps/ChoroplethLayer.js +25 -358
  34. package/lib/maps/ChoroplethLayerDesign.d.ts +5 -2
  35. package/lib/maps/ChoroplethLayerDesigner.d.ts +10 -32
  36. package/lib/maps/ChoroplethLayerDesigner.js +58 -89
  37. package/lib/maps/ClusterLayer.d.ts +0 -9
  38. package/lib/maps/ClusterLayer.js +0 -250
  39. package/lib/maps/DirectMapDataSource.js +1 -48
  40. package/lib/maps/EditHoverOver.d.ts +4 -3
  41. package/lib/maps/EditHoverOver.js +3 -3
  42. package/lib/maps/GridLayer.d.ts +0 -15
  43. package/lib/maps/GridLayer.js +0 -212
  44. package/lib/maps/HoverContent.js +1 -1
  45. package/lib/maps/Layer.d.ts +1 -26
  46. package/lib/maps/Layer.js +0 -13
  47. package/lib/maps/LeafletMapComponent.js +10 -19
  48. package/lib/maps/MapComponent.d.ts +19 -35
  49. package/lib/maps/MapComponent.js +135 -77
  50. package/lib/maps/MapControlComponent.d.ts +4 -5
  51. package/lib/maps/MapControlComponent.js +5 -12
  52. package/lib/maps/MapDesign.d.ts +8 -0
  53. package/lib/maps/MapDesignerComponent.d.ts +2 -0
  54. package/lib/maps/MapDesignerComponent.js +7 -2
  55. package/lib/maps/MapLayerDataSource.d.ts +0 -4
  56. package/lib/maps/MapLayerViewDesignerComponent.d.ts +3 -1
  57. package/lib/maps/MapLayerViewDesignerComponent.js +5 -1
  58. package/lib/maps/MapLayersDesignerComponent.d.ts +2 -0
  59. package/lib/maps/MapLayersDesignerComponent.js +2 -1
  60. package/lib/maps/MapTranslationsTab.d.ts +15 -0
  61. package/lib/maps/MapTranslationsTab.js +47 -0
  62. package/lib/maps/MapUtils.d.ts +11 -0
  63. package/lib/maps/MapUtils.js +57 -1
  64. package/lib/maps/MapViewComponent.d.ts +1 -1
  65. package/lib/maps/MapViewComponent.js +1 -8
  66. package/lib/maps/MarkersLayer.d.ts +1 -14
  67. package/lib/maps/MarkersLayer.js +89 -254
  68. package/lib/maps/MarkersLayerDesign.d.ts +5 -1
  69. package/lib/maps/MarkersLayerDesignerComponent.d.ts +32 -57
  70. package/lib/maps/MarkersLayerDesignerComponent.js +158 -134
  71. package/lib/maps/ServerMapDataSource.d.ts +0 -1
  72. package/lib/maps/ServerMapDataSource.js +0 -25
  73. package/lib/maps/SwitchableTileUrlLayer.d.ts +0 -2
  74. package/lib/maps/SwitchableTileUrlLayer.js +0 -9
  75. package/lib/maps/TileUrlLayer.d.ts +0 -1
  76. package/lib/maps/TileUrlLayer.js +0 -5
  77. package/lib/maps/VectorMapViewComponent.js +13 -10
  78. package/lib/maps/symbols/font-awesome/asterisk.png +0 -0
  79. package/lib/maps/symbols/font-awesome/ban.png +0 -0
  80. package/lib/maps/symbols/font-awesome/beer.png +0 -0
  81. package/lib/maps/symbols/font-awesome/bell.png +0 -0
  82. package/lib/maps/symbols/font-awesome/bolt.png +0 -0
  83. package/lib/maps/symbols/font-awesome/building.png +0 -0
  84. package/lib/maps/symbols/font-awesome/bullseye.png +0 -0
  85. package/lib/maps/symbols/font-awesome/bus.png +0 -0
  86. package/lib/maps/symbols/font-awesome/caret-up.png +0 -0
  87. package/lib/maps/symbols/font-awesome/certificate.png +0 -0
  88. package/lib/maps/symbols/font-awesome/check-circle.png +0 -0
  89. package/lib/maps/symbols/font-awesome/check.png +0 -0
  90. package/lib/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
  91. package/lib/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
  92. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  93. package/lib/maps/symbols/font-awesome/cloud.png +0 -0
  94. package/lib/maps/symbols/font-awesome/comment.png +0 -0
  95. package/lib/maps/symbols/font-awesome/crosshairs.png +0 -0
  96. package/lib/maps/symbols/font-awesome/dot-circle-o.png +0 -0
  97. package/lib/maps/symbols/font-awesome/exclamation-circle.png +0 -0
  98. package/lib/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
  99. package/lib/maps/symbols/font-awesome/female.png +0 -0
  100. package/lib/maps/symbols/font-awesome/file.png +0 -0
  101. package/lib/maps/symbols/font-awesome/flag.png +0 -0
  102. package/lib/maps/symbols/font-awesome/flask.png +0 -0
  103. package/lib/maps/symbols/font-awesome/h-square.png +0 -0
  104. package/lib/maps/symbols/font-awesome/home.png +0 -0
  105. package/lib/maps/symbols/font-awesome/info-circle.png +0 -0
  106. package/lib/maps/symbols/font-awesome/male.png +0 -0
  107. package/lib/maps/symbols/font-awesome/medkit.png +0 -0
  108. package/lib/maps/symbols/font-awesome/mobile.png +0 -0
  109. package/lib/maps/symbols/font-awesome/plus-circle.png +0 -0
  110. package/lib/maps/symbols/font-awesome/plus-square.png +0 -0
  111. package/lib/maps/symbols/font-awesome/plus.png +0 -0
  112. package/lib/maps/symbols/font-awesome/square.png +0 -0
  113. package/lib/maps/symbols/font-awesome/star.png +0 -0
  114. package/lib/maps/symbols/font-awesome/thumbs-down.png +0 -0
  115. package/lib/maps/symbols/font-awesome/thumbs-up.png +0 -0
  116. package/lib/maps/symbols/font-awesome/ticket.png +0 -0
  117. package/lib/maps/symbols/font-awesome/times-circle.png +0 -0
  118. package/lib/maps/symbols/font-awesome/times.png +0 -0
  119. package/lib/maps/symbols/font-awesome/tint.png +0 -0
  120. package/lib/maps/symbols/font-awesome/tree.png +0 -0
  121. package/lib/maps/symbols/font-awesome/university.png +0 -0
  122. package/lib/maps/symbols/font-awesome/usd.png +0 -0
  123. package/lib/maps/symbols/font-awesome/user.png +0 -0
  124. package/lib/maps/symbols/font-awesome/users.png +0 -0
  125. package/lib/maps/symbols/font-awesome/wheelchair.png +0 -0
  126. package/lib/maps/symbols/sdf-ize.sh +93 -0
  127. package/lib/maps/vectorMaps.d.ts +6 -6
  128. package/lib/maps/vectorMaps.js +33 -45
  129. package/lib/mwater_table_selection/IndicatorsListComponent.d.ts +4 -2
  130. package/lib/mwater_table_selection/IndicatorsListComponent.js +103 -34
  131. package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.d.ts +18 -0
  132. package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.js +80 -0
  133. package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.d.ts +26 -0
  134. package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.js +237 -51
  135. package/lib/mwater_table_selection/MWaterTableSelectComponent.d.ts +2 -2
  136. package/lib/mwater_table_selection/MWaterTableSelectComponent.js +9 -4
  137. package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.d.ts +19 -0
  138. package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.js +111 -0
  139. package/lib/quickfilter/QuickfiltersComponent.d.ts +3 -102
  140. package/lib/quickfilter/QuickfiltersComponent.js +53 -110
  141. package/lib/quickfilter/TextLiteralComponent.d.ts +23 -47
  142. package/lib/quickfilter/TextLiteralComponent.js +85 -82
  143. package/lib/widgets/MapWidget.js +6 -3
  144. package/lib/widgets/text/ExprItemEditorComponent.d.ts +3 -8
  145. package/lib/widgets/text/ExprItemEditorComponent.js +36 -33
  146. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +1 -0
  147. package/package.json +3 -4
  148. package/src/ColorComponent.tsx +2 -2
  149. package/src/MWaterContextComponent.tsx +1 -1
  150. package/src/{MWaterGlobalFiltersComponent.ts → MWaterGlobalFiltersComponent.tsx} +32 -33
  151. package/src/{MWaterLoaderComponent.ts → MWaterLoaderComponent.tsx} +17 -18
  152. package/src/TranslationsTabComponent.tsx +429 -0
  153. package/src/UndoStack.ts +14 -6
  154. package/src/dashboards/DashboardComponent.tsx +6 -5
  155. package/src/dashboards/DashboardDesign.ts +1 -1
  156. package/src/dashboards/ServerDashboardDataSource.ts +0 -31
  157. package/src/dashboards/SettingsModalComponent.tsx +27 -383
  158. package/src/datagrids/DatagridComponent.tsx +36 -2
  159. package/src/datagrids/DatagridDesignerComponent.tsx +241 -229
  160. package/src/datagrids/DatagridViewComponent.tsx +44 -7
  161. package/src/datagrids/OrderBysDesignerComponent.tsx +61 -70
  162. package/src/index.css +45 -2
  163. package/src/index.ts +5 -11
  164. package/src/layouts/blocks/BlocksDisplayComponent.tsx +60 -5
  165. package/src/maps/BufferLayer.ts +30 -263
  166. package/src/maps/BufferLayerDesign.ts +1 -1
  167. package/src/maps/BufferLayerDesignerComponent.tsx +2 -7
  168. package/src/maps/ChoroplethLayer.ts +30 -394
  169. package/src/maps/ChoroplethLayerDesign.ts +5 -2
  170. package/src/maps/ChoroplethLayerDesigner.tsx +169 -165
  171. package/src/maps/ClusterLayer.ts +0 -274
  172. package/src/maps/DirectMapDataSource.ts +2 -61
  173. package/src/maps/EditHoverOver.tsx +9 -5
  174. package/src/maps/GridLayer.ts +0 -224
  175. package/src/maps/HoverContent.tsx +1 -1
  176. package/src/maps/Layer.ts +1 -35
  177. package/src/maps/LeafletMapComponent.tsx +10 -19
  178. package/src/maps/MapComponent.tsx +448 -0
  179. package/src/maps/MapControlComponent.tsx +41 -0
  180. package/src/maps/MapDesign.ts +6 -0
  181. package/src/maps/MapDesignerComponent.tsx +18 -1
  182. package/src/maps/MapLayerDataSource.ts +0 -5
  183. package/src/maps/MapLayerViewDesignerComponent.ts +9 -2
  184. package/src/maps/MapLayersDesignerComponent.ts +4 -1
  185. package/src/maps/MapTranslationsTab.tsx +53 -0
  186. package/src/maps/MapUtils.ts +61 -1
  187. package/src/maps/MapViewComponent.tsx +2 -8
  188. package/src/maps/MarkersLayer.ts +101 -275
  189. package/src/maps/MarkersLayerDesign.ts +7 -1
  190. package/src/maps/MarkersLayerDesignerComponent.tsx +436 -0
  191. package/src/maps/ServerMapDataSource.ts +0 -31
  192. package/src/maps/SwitchableTileUrlLayer.tsx +0 -11
  193. package/src/maps/TileUrlLayer.tsx +0 -6
  194. package/src/maps/VectorMapViewComponent.tsx +15 -15
  195. package/src/maps/symbols/font-awesome/asterisk.png +0 -0
  196. package/src/maps/symbols/font-awesome/ban.png +0 -0
  197. package/src/maps/symbols/font-awesome/beer.png +0 -0
  198. package/src/maps/symbols/font-awesome/bell.png +0 -0
  199. package/src/maps/symbols/font-awesome/bolt.png +0 -0
  200. package/src/maps/symbols/font-awesome/building.png +0 -0
  201. package/src/maps/symbols/font-awesome/bullseye.png +0 -0
  202. package/src/maps/symbols/font-awesome/bus.png +0 -0
  203. package/src/maps/symbols/font-awesome/caret-up.png +0 -0
  204. package/src/maps/symbols/font-awesome/certificate.png +0 -0
  205. package/src/maps/symbols/font-awesome/check-circle.png +0 -0
  206. package/src/maps/symbols/font-awesome/check.png +0 -0
  207. package/src/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
  208. package/src/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
  209. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  210. package/src/maps/symbols/font-awesome/cloud.png +0 -0
  211. package/src/maps/symbols/font-awesome/comment.png +0 -0
  212. package/src/maps/symbols/font-awesome/crosshairs.png +0 -0
  213. package/src/maps/symbols/font-awesome/dot-circle-o.png +0 -0
  214. package/src/maps/symbols/font-awesome/exclamation-circle.png +0 -0
  215. package/src/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
  216. package/src/maps/symbols/font-awesome/female.png +0 -0
  217. package/src/maps/symbols/font-awesome/file.png +0 -0
  218. package/src/maps/symbols/font-awesome/flag.png +0 -0
  219. package/src/maps/symbols/font-awesome/flask.png +0 -0
  220. package/src/maps/symbols/font-awesome/h-square.png +0 -0
  221. package/src/maps/symbols/font-awesome/home.png +0 -0
  222. package/src/maps/symbols/font-awesome/info-circle.png +0 -0
  223. package/src/maps/symbols/font-awesome/male.png +0 -0
  224. package/src/maps/symbols/font-awesome/medkit.png +0 -0
  225. package/src/maps/symbols/font-awesome/mobile.png +0 -0
  226. package/src/maps/symbols/font-awesome/plus-circle.png +0 -0
  227. package/src/maps/symbols/font-awesome/plus-square.png +0 -0
  228. package/src/maps/symbols/font-awesome/plus.png +0 -0
  229. package/src/maps/symbols/font-awesome/square.png +0 -0
  230. package/src/maps/symbols/font-awesome/star.png +0 -0
  231. package/src/maps/symbols/font-awesome/thumbs-down.png +0 -0
  232. package/src/maps/symbols/font-awesome/thumbs-up.png +0 -0
  233. package/src/maps/symbols/font-awesome/ticket.png +0 -0
  234. package/src/maps/symbols/font-awesome/times-circle.png +0 -0
  235. package/src/maps/symbols/font-awesome/times.png +0 -0
  236. package/src/maps/symbols/font-awesome/tint.png +0 -0
  237. package/src/maps/symbols/font-awesome/tree.png +0 -0
  238. package/src/maps/symbols/font-awesome/university.png +0 -0
  239. package/src/maps/symbols/font-awesome/usd.png +0 -0
  240. package/src/maps/symbols/font-awesome/user.png +0 -0
  241. package/src/maps/symbols/font-awesome/users.png +0 -0
  242. package/src/maps/symbols/font-awesome/wheelchair.png +0 -0
  243. package/src/maps/symbols/sdf-ize.sh +93 -0
  244. package/src/maps/vectorMaps.tsx +32 -53
  245. package/src/mwater_table_selection/IndicatorsListComponent.tsx +165 -37
  246. package/src/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.tsx +111 -0
  247. package/src/mwater_table_selection/MWaterCompleteTableSelectComponent.tsx +373 -37
  248. package/src/mwater_table_selection/MWaterTableSelectComponent.tsx +12 -8
  249. package/src/mwater_table_selection/MWaterWorkflowsSelectComponent.tsx +159 -0
  250. package/src/quickfilter/{QuickfiltersComponent.ts → QuickfiltersComponent.tsx} +165 -158
  251. package/src/quickfilter/TextLiteralComponent.tsx +197 -0
  252. package/src/widgets/MapWidget.tsx +11 -1
  253. package/src/widgets/text/ExprItemEditorComponent.tsx +83 -77
  254. package/src/widgets/text/ExprUpdateModalComponent.tsx +1 -0
  255. package/test/UndoStackTests.ts +52 -1
  256. package/.storybook/config.js +0 -7
  257. package/.storybook/head.html +0 -3
  258. package/.storybook/webpack.config.js +0 -15
  259. package/src/maps/BingLayer.ts +0 -146
  260. package/src/maps/MapComponent.ts +0 -312
  261. package/src/maps/MapControlComponent.ts +0 -46
  262. package/src/maps/MarkersLayerDesignerComponent.ts +0 -374
  263. package/src/maps/RasterMapViewComponent.ts +0 -345
  264. package/src/quickfilter/TextLiteralComponent.ts +0 -165
  265. package/stories/UpdateableComponent.js +0 -29
  266. package/stories/consoles.js +0 -202
  267. package/stories/dashboards.js +0 -217
  268. package/stories/datagridDesign.js +0 -114
  269. package/stories/datagrids.js +0 -69
  270. package/stories/dates.js +0 -80
  271. package/stories/exprcomponent.js +0 -43
  272. package/stories/index.js +0 -18
  273. package/stories/leaflet.js +0 -59
  274. package/stories/maps.js +0 -24
  275. package/stories/pivotChart.js +0 -235
@@ -28,10 +28,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const lodash_1 = __importDefault(require("lodash"));
30
30
  const react_1 = __importDefault(require("react"));
31
- const R = react_1.default.createElement;
32
31
  const expressions_ui_1 = require("@mwater/expressions-ui");
33
32
  const expressions_1 = require("@mwater/expressions");
34
- const AxisComponent_1 = __importDefault(require("./../axes/AxisComponent"));
33
+ const AxisComponent_1 = __importDefault(require("../axes/AxisComponent"));
35
34
  const ColorComponent_1 = __importDefault(require("../ColorComponent"));
36
35
  const expressions_ui_2 = require("@mwater/expressions-ui");
37
36
  const EditPopupComponent_1 = __importDefault(require("./EditPopupComponent"));
@@ -39,66 +38,88 @@ const ZoomLevelsComponent_1 = __importDefault(require("./ZoomLevelsComponent"));
39
38
  const MarkerSymbolSelectComponent_1 = __importDefault(require("./MarkerSymbolSelectComponent"));
40
39
  const PopupFilterJoinsUtils = __importStar(require("./PopupFilterJoinsUtils"));
41
40
  const ui = __importStar(require("@mwater/react-library/lib/bootstrap"));
42
- const EditHoverOver_1 = __importDefault(require("./EditHoverOver"));
41
+ const EditHoverOver_1 = require("./EditHoverOver");
43
42
  const rc_slider_1 = __importDefault(require("rc-slider"));
44
- // Designer for a markers layer
43
+ const immer_1 = require("immer");
44
+ /** Designer for a markers layer */
45
45
  class MarkersLayerDesignerComponent extends react_1.default.Component {
46
- // Apply updates to design
47
- update(updates) {
48
- return this.props.onDesignChange(lodash_1.default.extend({}, this.props.design, updates));
49
- }
50
- // Update axes with specified changes
51
- updateAxes(changes) {
52
- const axes = lodash_1.default.extend({}, this.props.design.axes, changes);
53
- return this.update({ axes });
54
- }
55
46
  handleTableChange = (table) => {
56
- return this.update({ table });
47
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
48
+ draft.table = table;
49
+ }));
57
50
  };
58
51
  handleGeometryAxisChange = (axis) => {
59
- return this.updateAxes({ geometry: axis });
52
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
53
+ draft.axes.geometry = axis;
54
+ }));
60
55
  };
61
56
  handleColorAxisChange = (axis) => {
62
- return this.updateAxes({ color: axis });
57
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
58
+ draft.axes.color = axis ?? undefined;
59
+ }));
63
60
  };
64
61
  handleFilterChange = (expr) => {
65
- return this.update({ filter: expr });
62
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
63
+ draft.filter = expr;
64
+ }));
66
65
  };
67
66
  handleColorChange = (color) => {
68
- return this.update({ color });
67
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
68
+ draft.color = color;
69
+ }));
69
70
  };
70
71
  handlePolygonBorderColorChange = (polygonBorderColor) => {
71
- return this.update({ polygonBorderColor });
72
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
73
+ draft.polygonBorderColor = polygonBorderColor;
74
+ }));
72
75
  };
73
76
  handlePolygonFillOpacityChange = (polygonFillOpacity) => {
74
- return this.update({ polygonFillOpacity: polygonFillOpacity / 100 });
77
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
78
+ draft.polygonFillOpacity = polygonFillOpacity / 100;
79
+ }));
75
80
  };
76
81
  handleSymbolChange = (symbol) => {
77
- return this.update({ symbol });
78
- };
79
- handleNameChange = (e) => {
80
- return this.update({ name: e.target.value });
82
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
83
+ draft.symbol = symbol;
84
+ }));
81
85
  };
82
86
  handleMarkerSizeChange = (markerSize) => {
83
- return this.update({ markerSize });
87
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
88
+ draft.markerSize = markerSize;
89
+ }));
84
90
  };
85
91
  handleLineWidthChange = (lineWidth) => {
86
- return this.update({ lineWidth });
92
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
93
+ draft.lineWidth = lineWidth;
94
+ }));
95
+ };
96
+ handleLabelAxisChange = (axis) => {
97
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
98
+ draft.axes.label = axis ?? undefined;
99
+ }));
100
+ };
101
+ handleLabelPositionChange = (labelPosition) => {
102
+ this.props.onDesignChange((0, immer_1.produce)(this.props.design, draft => {
103
+ draft.labelPosition = labelPosition;
104
+ }));
87
105
  };
88
106
  renderTable() {
89
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ", T `Data Source`), R("div", { style: { marginLeft: 10 } }, R(expressions_ui_2.TableSelectComponent, {
90
- schema: this.props.schema,
91
- value: this.props.design.table,
92
- onChange: this.handleTableChange,
93
- filter: this.props.design.filter,
94
- onFilterChange: this.handleFilterChange
95
- })));
107
+ return (react_1.default.createElement("div", { className: "mb-3" },
108
+ react_1.default.createElement("label", { className: "text-muted" },
109
+ react_1.default.createElement("i", { className: "fa fa-database" }),
110
+ " ",
111
+ T `Data Source`),
112
+ react_1.default.createElement("div", { style: { marginLeft: 10 } },
113
+ react_1.default.createElement(expressions_ui_2.TableSelectComponent, { schema: this.props.schema, value: this.props.design.table, onChange: this.handleTableChange, filter: this.props.design.filter, onFilterChange: this.handleFilterChange }))));
96
114
  }
97
115
  renderGeometryAxis() {
98
116
  if (!this.props.design.table) {
99
117
  return;
100
118
  }
101
- const title = R("span", null, R("span", { className: "fas fa-map-marker-alt" }), " ", T `Location`);
119
+ const title = react_1.default.createElement("span", null,
120
+ react_1.default.createElement("span", { className: "fas fa-map-marker-alt" }),
121
+ " ",
122
+ T `Location`);
102
123
  const filters = lodash_1.default.clone(this.props.filters) || [];
103
124
  if (this.props.design.filter != null) {
104
125
  const exprCompiler = new expressions_1.ExprCompiler(this.props.schema);
@@ -107,16 +128,10 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
107
128
  filters.push({ table: this.props.design.filter.table, jsonql });
108
129
  }
109
130
  }
110
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, title), R("div", { style: { marginLeft: 10 } }, R(AxisComponent_1.default, {
111
- schema: this.props.schema,
112
- dataSource: this.props.dataSource,
113
- table: this.props.design.table,
114
- types: ["geometry"],
115
- aggrNeed: "none",
116
- value: this.props.design.axes.geometry,
117
- onChange: this.handleGeometryAxisChange,
118
- filters
119
- })));
131
+ return (react_1.default.createElement("div", { className: "mb-3" },
132
+ react_1.default.createElement("label", { className: "text-muted" }, title),
133
+ react_1.default.createElement("div", { style: { marginLeft: 10 } },
134
+ react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["geometry"], aggrNeed: "none", value: this.props.design.axes.geometry, onChange: this.handleGeometryAxisChange, filters: filters }))));
120
135
  }
121
136
  renderColor() {
122
137
  if (!this.props.design.axes.geometry) {
@@ -130,140 +145,149 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
130
145
  filters.push({ table: this.props.design.filter.table, jsonql });
131
146
  }
132
147
  }
133
- return R("div", null, !this.props.design.axes.color
134
- ? R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }), T `Color`), R("div", null, R(ColorComponent_1.default, {
135
- color: this.props.design.color,
136
- onChange: this.handleColorChange
137
- })))
138
- : undefined, R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }), T `Color By Data`), R(AxisComponent_1.default, {
139
- schema: this.props.schema,
140
- dataSource: this.props.dataSource,
141
- table: this.props.design.table,
142
- types: ["text", "enum", "boolean", "date"],
143
- aggrNeed: "none",
144
- value: this.props.design.axes.color,
145
- defaultColor: this.props.design.color,
146
- showColorMap: true,
147
- onChange: this.handleColorAxisChange,
148
- allowExcludedValues: true,
149
- filters
150
- })));
148
+ return (react_1.default.createElement("div", null,
149
+ !this.props.design.axes.color ? (react_1.default.createElement("div", { className: "mb-3" },
150
+ react_1.default.createElement("label", { className: "text-muted" },
151
+ react_1.default.createElement("span", { className: "fas fa-tint" }),
152
+ T `Color`),
153
+ react_1.default.createElement("div", null,
154
+ react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.color, onChange: this.handleColorChange })))) : undefined,
155
+ react_1.default.createElement("div", { className: "mb-3" },
156
+ react_1.default.createElement("label", { className: "text-muted" },
157
+ react_1.default.createElement("span", { className: "fas fa-tint" }),
158
+ T `Color By Data`),
159
+ react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["text", "enum", "boolean", "date"], aggrNeed: "none", value: this.props.design.axes.color, defaultColor: this.props.design.color, showColorMap: true, onChange: this.handleColorAxisChange, allowExcludedValues: true, filters: filters }))));
151
160
  }
152
161
  renderSymbol() {
153
162
  if (!this.props.design.axes.geometry) {
154
163
  return;
155
164
  }
156
- return R(MarkerSymbolSelectComponent_1.default, { symbol: this.props.design.symbol, onChange: this.handleSymbolChange });
165
+ return react_1.default.createElement(MarkerSymbolSelectComponent_1.default, { symbol: this.props.design.symbol, onChange: this.handleSymbolChange });
157
166
  }
158
167
  renderMarkerSize() {
159
168
  if (!this.props.design.axes.geometry) {
160
169
  return;
161
170
  }
162
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Marker Size`), R(ui.Select, {
163
- value: this.props.design.markerSize || 10,
164
- options: [
165
- { value: 5, label: T `Extra small` },
166
- { value: 8, label: T `Small` },
167
- { value: 10, label: T `Normal` },
168
- { value: 13, label: T `Large` },
169
- { value: 16, label: T `Extra large` }
170
- ],
171
- onChange: this.handleMarkerSizeChange
172
- }));
171
+ return (react_1.default.createElement("div", { className: "mb-3" },
172
+ react_1.default.createElement("label", { className: "text-muted" }, T `Marker Size`),
173
+ react_1.default.createElement(ui.Select, { value: this.props.design.markerSize || 10, options: [
174
+ { value: 5, label: T `Extra small` },
175
+ { value: 8, label: T `Small` },
176
+ { value: 10, label: T `Normal` },
177
+ { value: 13, label: T `Large` },
178
+ { value: 16, label: T `Extra large` }
179
+ ], onChange: this.handleMarkerSizeChange })));
173
180
  }
174
181
  renderLineWidth() {
175
182
  if (!this.props.design.axes.geometry) {
176
183
  return;
177
184
  }
178
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Line Width (for shapes)`), R(ui.Select, {
179
- value: this.props.design.lineWidth != null ? this.props.design.lineWidth : 3,
180
- options: [
181
- { value: 0, label: T `None` },
182
- { value: 1, label: T `1 pixel` },
183
- { value: 2, label: T `2 pixels` },
184
- { value: 3, label: T `3 pixels` },
185
- { value: 4, label: T `4 pixels` },
186
- { value: 5, label: T `5 pixels` },
187
- { value: 6, label: T `6 pixels` }
188
- ],
189
- onChange: this.handleLineWidthChange
190
- }));
185
+ return (react_1.default.createElement("div", { className: "mb-3" },
186
+ react_1.default.createElement("label", { className: "text-muted" }, T `Line Width (for shapes)`),
187
+ react_1.default.createElement(ui.Select, { value: this.props.design.lineWidth != null ? this.props.design.lineWidth : 3, options: [
188
+ { value: 0, label: T `None` },
189
+ { value: 1, label: T `1 pixel` },
190
+ { value: 2, label: T `2 pixels` },
191
+ { value: 3, label: T `3 pixels` },
192
+ { value: 4, label: T `4 pixels` },
193
+ { value: 5, label: T `5 pixels` },
194
+ { value: 6, label: T `6 pixels` }
195
+ ], onChange: this.handleLineWidthChange })));
191
196
  }
192
197
  renderPolygonBorderColor() {
193
198
  if (!this.props.design.axes.geometry) {
194
199
  return;
195
200
  }
196
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Polygon border color (blank for same as fill color)`), R("div", null, R(ColorComponent_1.default, {
197
- color: this.props.design.polygonBorderColor,
198
- onChange: this.handlePolygonBorderColorChange
199
- })));
201
+ return (react_1.default.createElement("div", { className: "mb-3" },
202
+ react_1.default.createElement("label", { className: "text-muted" }, T `Polygon border color (blank for same as fill color)`),
203
+ react_1.default.createElement("div", null,
204
+ react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.polygonBorderColor, onChange: this.handlePolygonBorderColorChange }))));
200
205
  }
201
206
  renderPolygonFillOpacity() {
202
207
  if (!this.props.design.axes.geometry) {
203
208
  return;
204
209
  }
205
210
  const opacity = this.props.design.polygonFillOpacity != null ? this.props.design.polygonFillOpacity : 0.25;
206
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", null, T `Polygon Fill Opacity: ${Math.round(opacity * 100)}%`)), R("div", { style: { padding: "10px" } }, react_1.default.createElement(rc_slider_1.default, {
207
- min: 0,
208
- max: 100,
209
- step: 1,
210
- tipTransitionName: "rc-slider-tooltip-zoom-down",
211
- value: opacity * 100,
212
- onChange: this.handlePolygonFillOpacityChange
213
- })));
211
+ return (react_1.default.createElement("div", { className: "mb-3" },
212
+ react_1.default.createElement("label", { className: "text-muted" },
213
+ react_1.default.createElement("span", null, T `Polygon Fill Opacity: ${Math.round(opacity * 100)}%`)),
214
+ react_1.default.createElement("div", { style: { padding: "10px" } },
215
+ react_1.default.createElement(rc_slider_1.default, { min: 0, max: 100, step: 1, tipTransitionName: "rc-slider-tooltip-zoom-down", value: opacity * 100, onChange: this.handlePolygonFillOpacityChange }))));
214
216
  }
215
217
  renderFilter() {
216
218
  // If no data, hide
217
219
  if (!this.props.design.axes.geometry) {
218
220
  return null;
219
221
  }
220
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), T `Filters`), R("div", { style: { marginLeft: 8 } }, R(expressions_ui_1.FilterExprComponent, {
221
- schema: this.props.schema,
222
- dataSource: this.props.dataSource,
223
- onChange: this.handleFilterChange,
224
- table: this.props.design.table,
225
- value: this.props.design.filter
226
- })));
222
+ return (react_1.default.createElement("div", { className: "mb-3" },
223
+ react_1.default.createElement("label", { className: "text-muted" },
224
+ react_1.default.createElement("span", { className: "fas fa-filter" }),
225
+ T `Filters`),
226
+ react_1.default.createElement("div", { style: { marginLeft: 8 } },
227
+ react_1.default.createElement(expressions_ui_1.FilterExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, onChange: this.handleFilterChange, table: this.props.design.table, value: this.props.design.filter }))));
228
+ }
229
+ renderLabelAxis() {
230
+ if (!this.props.design.axes.geometry) {
231
+ return;
232
+ }
233
+ const filters = lodash_1.default.clone(this.props.filters) || [];
234
+ if (this.props.design.filter != null) {
235
+ const exprCompiler = new expressions_1.ExprCompiler(this.props.schema);
236
+ const jsonql = exprCompiler.compileExpr({ expr: this.props.design.filter, tableAlias: "{alias}" });
237
+ if (jsonql) {
238
+ filters.push({ table: this.props.design.filter.table, jsonql });
239
+ }
240
+ }
241
+ return (react_1.default.createElement("div", { className: "mb-3" },
242
+ react_1.default.createElement("label", { className: "text-muted" },
243
+ react_1.default.createElement("span", { className: "fas fa-tag" }),
244
+ " ",
245
+ T `Label (points only)`),
246
+ react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["text", "number"], aggrNeed: "none", value: this.props.design.axes.label, onChange: this.handleLabelAxisChange, filters: filters })));
247
+ }
248
+ renderLabelPosition() {
249
+ // Only show if label axis is set
250
+ if (!this.props.design.axes.label) {
251
+ return;
252
+ }
253
+ return (react_1.default.createElement("div", { className: "mb-3" },
254
+ react_1.default.createElement("label", { className: "text-muted" }, T `Label Position`),
255
+ react_1.default.createElement(ui.Select, { value: this.props.design.labelPosition || "bottom", options: [
256
+ { value: "top", label: T `Top` },
257
+ { value: "bottom", label: T `Bottom` },
258
+ { value: "left", label: T `Left` },
259
+ { value: "right", label: T `Right` }
260
+ ], onChange: this.handleLabelPositionChange })));
227
261
  }
228
262
  renderPopup() {
229
263
  if (!this.props.design.table) {
230
264
  return null;
231
265
  }
232
- return R(EditPopupComponent_1.default, {
233
- design: this.props.design,
234
- onDesignChange: this.props.onDesignChange,
235
- schema: this.props.schema,
236
- dataSource: this.props.dataSource,
237
- table: this.props.design.table,
238
- idTable: this.props.design.table,
239
- defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
240
- });
266
+ return (react_1.default.createElement(EditPopupComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table) }));
241
267
  }
242
268
  renderHoverOver() {
243
269
  if (!this.props.design.table) {
244
270
  return null;
245
271
  }
246
- return R(EditHoverOver_1.default, {
247
- design: this.props.design,
248
- onDesignChange: this.props.onDesignChange,
249
- schema: this.props.schema,
250
- dataSource: this.props.dataSource,
251
- table: this.props.design.table,
252
- idTable: this.props.design.table,
253
- defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
254
- });
272
+ return (react_1.default.createElement(EditHoverOver_1.EditHoverOver, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table), aggrStatuses: ["individual", "literal"] }));
255
273
  }
256
274
  render() {
257
- return R("div", null, this.renderTable(), this.renderGeometryAxis(), this.renderColor(), this.renderSymbol(), this.renderMarkerSize(), R(ui.CollapsibleSection, {
258
- label: T `Shape Options`,
259
- labelMuted: true
260
- }, [
261
- this.renderLineWidth(),
262
- this.renderPolygonBorderColor(),
263
- this.renderPolygonFillOpacity(),
264
- ]), this.renderFilter(), this.renderPopup(), this.renderHoverOver(), this.props.design.table
265
- ? R(ZoomLevelsComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange })
266
- : undefined);
275
+ return (react_1.default.createElement("div", null,
276
+ this.renderTable(),
277
+ this.renderGeometryAxis(),
278
+ this.renderColor(),
279
+ this.renderSymbol(),
280
+ this.renderMarkerSize(),
281
+ this.renderLabelAxis(),
282
+ this.renderLabelPosition(),
283
+ react_1.default.createElement(ui.CollapsibleSection, { label: T `Shape Options`, labelMuted: true },
284
+ this.renderLineWidth(),
285
+ this.renderPolygonBorderColor(),
286
+ this.renderPolygonFillOpacity()),
287
+ this.renderFilter(),
288
+ this.renderPopup(),
289
+ this.renderHoverOver(),
290
+ this.props.design.table ? (react_1.default.createElement(ZoomLevelsComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange })) : undefined));
267
291
  }
268
292
  }
269
293
  exports.default = MarkersLayerDesignerComponent;
@@ -43,7 +43,6 @@ declare class ServerLayerDataSource implements MapLayerDataSource {
43
43
  options: ServerMapLayerDataSourceOptions;
44
44
  constructor(options: ServerMapLayerDataSourceOptions);
45
45
  getTileUrl(design: any, filters: JsonQLFilter[]): any;
46
- getUtfGridUrl(design: any, filters: JsonQLFilter[]): string | null;
47
46
  /** Get the url for vector tile source with an expiry time. Only for layers of type "VectorTile"
48
47
  * @param createdAfter ISO 8601 timestamp requiring that tile source on server is created after specified datetime
49
48
  */
@@ -76,21 +76,6 @@ class ServerLayerDataSource {
76
76
  }
77
77
  return this.createUrl(filters, "png");
78
78
  }
79
- // Get the url for the interactivity tiles with the specified filters applied
80
- // Called with (design, filters) where design is the design of the layer and filters are filters to apply. Returns URL
81
- getUtfGridUrl(design, filters) {
82
- // Handle special cases
83
- if (this.options.layerView.type === "MWaterServer") {
84
- return this.createLegacyUrl(design, "grid.json", filters);
85
- }
86
- // Create layer
87
- const layer = LayerFactory_1.default.createLayer(this.options.layerView.type);
88
- // If layer has tiles url directly available
89
- if (layer.getLayerDefinitionType() === "TileUrl") {
90
- return layer.getUtfGridUrl(this.options.layerView.design, filters);
91
- }
92
- return this.createUrl(filters, "grid.json");
93
- }
94
79
  /** Get the url for vector tile source with an expiry time. Only for layers of type "VectorTile"
95
80
  * @param createdAfter ISO 8601 timestamp requiring that tile source on server is created after specified datetime
96
81
  */
@@ -144,22 +129,12 @@ class ServerLayerDataSource {
144
129
  rev: this.options.rev
145
130
  };
146
131
  let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?` + querystring_1.default.stringify(query);
147
- // Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
148
- // Used to speed queries
149
- if (url.match(/^https:\/\/api\.mwater\.co\//)) {
150
- url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
151
- }
152
132
  return url;
153
133
  }
154
134
  // Create query string
155
135
  createLegacyUrl(design, extension, filters) {
156
136
  let where;
157
137
  let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?type=${design.type}&radius=1000`;
158
- // Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
159
- // Used to speed queries
160
- if (url.match(/^https:\/\/api\.mwater\.co\//)) {
161
- url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
162
- }
163
138
  if (this.options.client) {
164
139
  url += `&client=${this.options.client}`;
165
140
  }
@@ -37,8 +37,6 @@ export default class SwitchableTileUrlLayer extends Layer<SwitchableTileUrlLayer
37
37
  getMaxZoom(design: SwitchableTileUrlLayerDesign): number;
38
38
  /** Gets the tile url for definition type "TileUrl" */
39
39
  getTileUrl(design: SwitchableTileUrlLayerDesign, filters: JsonQLFilter[]): string | null;
40
- /** Gets the utf grid url for definition type "TileUrl" */
41
- getUtfGridUrl(design: SwitchableTileUrlLayerDesign, filters: JsonQLFilter[]): string | null;
42
40
  getLegend(options: LegendOptions<SwitchableTileUrlLayerDesign>): ReactNode;
43
41
  /** True if layer can be edited */
44
42
  isEditable(): boolean;
@@ -26,15 +26,6 @@ class SwitchableTileUrlLayer extends Layer_1.default {
26
26
  }
27
27
  return option.tileUrl || null;
28
28
  }
29
- /** Gets the utf grid url for definition type "TileUrl" */
30
- getUtfGridUrl(design, filters) {
31
- // Find active option
32
- const option = design.options.find((d) => d.id === design.activeOption);
33
- if (!option) {
34
- return null;
35
- }
36
- return option.utfGridUrl || null;
37
- }
38
29
  getLegend(options) {
39
30
  const { design, name } = options;
40
31
  // Find active option
@@ -16,7 +16,6 @@ export interface TileUrlLayerDesign {
16
16
  export default class TileUrlLayer extends Layer<TileUrlLayerDesign> {
17
17
  getLayerDefinitionType(): "TileUrl";
18
18
  getTileUrl(design: any, filters: any): any;
19
- getUtfGridUrl(design: any, filters: any): null;
20
19
  getMinZoom(design: any): any;
21
20
  getMaxZoom(design: any): any;
22
21
  isEditable(): boolean;
@@ -18,7 +18,6 @@ Design is:
18
18
  legendUrl:
19
19
  */
20
20
  class TileUrlLayer extends Layer_1.default {
21
- // Gets the type of layer definition ("JsonQLCss"/"TileUrl")
22
21
  getLayerDefinitionType() {
23
22
  return "TileUrl";
24
23
  }
@@ -26,10 +25,6 @@ class TileUrlLayer extends Layer_1.default {
26
25
  getTileUrl(design, filters) {
27
26
  return design.tileUrl;
28
27
  }
29
- // Gets the utf grid url for definition type "TileUrl"
30
- getUtfGridUrl(design, filters) {
31
- return null;
32
- }
33
28
  // Get min and max zoom levels
34
29
  getMinZoom(design) {
35
30
  return design.minZoom;
@@ -67,7 +67,18 @@ function VectorMapViewComponent(props) {
67
67
  // Locale to use
68
68
  const locale = props.locale || props.design.locale || "en";
69
69
  // Translate function to use
70
- const translate = props.translate || ((input) => input);
70
+ const translate = (0, react_1.useCallback)((input) => {
71
+ // Use passed in translate function if present
72
+ if (props.translate) {
73
+ return props.translate(input);
74
+ }
75
+ // If locale is the same as the design locale, don't translate
76
+ if (locale === props.design.locale) {
77
+ return input;
78
+ }
79
+ // Otherwise, use translation from design
80
+ return props.design.translations?.[locale]?.[input] ?? input;
81
+ }, [props.translate, props.design.translations, props.design.locale, locale]);
71
82
  // Last feature that mouse entered
72
83
  const lastFeature = (0, react_2.useRef)();
73
84
  // Load map
@@ -230,17 +241,9 @@ function VectorMapViewComponent(props) {
230
241
  else {
231
242
  const tileUrl = props.mapDataSource.getLayerDataSource(layerView.id).getTileUrl(design, []);
232
243
  if (tileUrl) {
233
- // Replace "{s}" with "a", "b", "c"
234
- let tiles = [];
235
- if (tileUrl.includes("{s}")) {
236
- tiles = [tileUrl.replace("{s}", "a"), tileUrl.replace("{s}", "b"), tileUrl.replace("{s}", "c")];
237
- }
238
- else {
239
- tiles = [tileUrl];
240
- }
241
244
  newSources[layerView.id] = {
242
245
  type: "raster",
243
- tiles,
246
+ tiles: [tileUrl],
244
247
  tileSize: 256
245
248
  };
246
249
  newLayers.push({