@redus/georedus-ui 0.19.5 → 0.20.0

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 (65) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +132 -0
  3. package/dist/ExportImage/ExportImage.d.ts +1 -0
  4. package/dist/ExportImage/NorthArrow.d.ts +15 -0
  5. package/dist/ExportImage/constants.d.ts +2 -0
  6. package/dist/ExportImage/createMapBlob.d.ts +20 -0
  7. package/dist/ExportImage/createMapImage.d.ts +1 -0
  8. package/dist/ExportImage/index.d.ts +1 -0
  9. package/dist/ExportImage/paperDimensions.d.ts +8 -0
  10. package/dist/GeoReDUS/constants.d.ts +9 -0
  11. package/dist/GeoReDUSLogo/GeoReDUSLogo.d.ts +1 -1
  12. package/dist/LeftPanel/LeftPanel.d.ts +7 -3
  13. package/dist/LeftPanel/SharePanel.d.ts +7 -3
  14. package/dist/main.js +2681 -236
  15. package/dist/viewSpecs/presets/index.d.ts +5 -0
  16. package/dist/viewSpecs/presets/util/colorUtil.d.ts +2 -0
  17. package/dist/viewSpecs/presets/util/components/basicDownload.d.ts +12 -0
  18. package/dist/viewSpecs/presets/util/components/basicTooltip.d.ts +20 -0
  19. package/dist/viewSpecs/presets/util/components/confInputs.d.ts +127 -0
  20. package/dist/viewSpecs/presets/util/index.d.ts +6 -0
  21. package/dist/viewSpecs/presets/util/string.d.ts +1 -0
  22. package/dist/viewSpecs/presets/util/url.d.ts +7 -0
  23. package/dist/viewSpecs/presets/vector_circle/index.d.ts +75 -1
  24. package/dist/viewSpecs/presets/vector_line/index.d.ts +95 -2
  25. package/dist/viewSpecs/presets/vector_point_continuous/download.d.ts +9 -0
  26. package/dist/viewSpecs/presets/vector_point_continuous/index.d.ts +95 -0
  27. package/dist/viewSpecs/presets/vector_point_continuous/layers.d.ts +59 -0
  28. package/dist/viewSpecs/presets/vector_point_continuous/metadata/index.d.ts +11 -0
  29. package/dist/viewSpecs/presets/vector_point_continuous/parseStyleSpec.d.ts +34 -0
  30. package/dist/viewSpecs/presets/vector_point_continuous/sources.d.ts +8 -0
  31. package/dist/viewSpecs/presets/vector_point_single/confSchema.d.ts +63 -0
  32. package/dist/viewSpecs/presets/vector_point_single/download.d.ts +9 -0
  33. package/dist/viewSpecs/presets/vector_point_single/index.d.ts +142 -0
  34. package/dist/viewSpecs/presets/vector_point_single/layers.d.ts +53 -0
  35. package/dist/viewSpecs/presets/vector_point_single/metadata/index.d.ts +1 -0
  36. package/dist/viewSpecs/presets/vector_point_single/parseStyleSpec.d.ts +11 -0
  37. package/dist/viewSpecs/presets/vector_point_single/sources.d.ts +8 -0
  38. package/dist/viewSpecs/presets/vector_polygon/index.d.ts +93 -10
  39. package/dist/viewSpecs/presets/vector_polygon_categorical/confSchema.d.ts +14 -0
  40. package/dist/viewSpecs/presets/vector_polygon_categorical/download.d.ts +9 -0
  41. package/dist/viewSpecs/presets/vector_polygon_categorical/index.d.ts +108 -0
  42. package/dist/viewSpecs/presets/vector_polygon_categorical/layers.d.ts +58 -0
  43. package/dist/viewSpecs/presets/vector_polygon_categorical/metadata.d.ts +11 -0
  44. package/dist/viewSpecs/presets/vector_polygon_categorical/parseStyleSpec.d.ts +17 -0
  45. package/dist/viewSpecs/presets/vector_polygon_categorical/sources.d.ts +8 -0
  46. package/dist/viewSpecs/presets/vector_polygon_continuous/confSchema.d.ts +24 -0
  47. package/dist/viewSpecs/presets/vector_polygon_continuous/download.d.ts +9 -0
  48. package/dist/viewSpecs/presets/vector_polygon_continuous/index.d.ts +112 -0
  49. package/dist/viewSpecs/presets/vector_polygon_continuous/layers.d.ts +54 -0
  50. package/dist/viewSpecs/presets/vector_polygon_continuous/metadata/colorScaleStopResolvers.d.ts +21 -0
  51. package/dist/viewSpecs/presets/vector_polygon_continuous/metadata/index.d.ts +9 -0
  52. package/dist/viewSpecs/presets/vector_polygon_continuous/parseStyleSpec.d.ts +31 -0
  53. package/dist/viewSpecs/presets/vector_polygon_continuous/sources.d.ts +8 -0
  54. package/dist/viewSpecs/presets/vector_polygon_single/confSchema.d.ts +73 -0
  55. package/dist/viewSpecs/presets/vector_polygon_single/download.d.ts +9 -0
  56. package/dist/viewSpecs/presets/vector_polygon_single/index.d.ts +157 -0
  57. package/dist/viewSpecs/presets/vector_polygon_single/layers.d.ts +58 -0
  58. package/dist/viewSpecs/presets/vector_polygon_single/metadata.d.ts +1 -0
  59. package/dist/viewSpecs/presets/vector_polygon_single/parseStyleSpec.d.ts +7 -0
  60. package/dist/viewSpecs/presets/vector_polygon_single/sources.d.ts +7 -0
  61. package/dist/viewSpecs/util/colorSchemes/d3.d.ts +58 -0
  62. package/dist/viewSpecs/util/colorSchemes/georedus.d.ts +156 -0
  63. package/dist/viewSpecs/util/colorSchemes/index.d.ts +13 -0
  64. package/package.json +4 -2
  65. package/dist/viewSpecs/util/colorSchemes.d.ts +0 -15
package/dist/main.js CHANGED
@@ -1,26 +1,26 @@
1
- import { get, isPlainObject, pick, omit, set, uniqBy, groupBy, sortBy, uniq } from 'lodash';
1
+ import { isPlainObject, pick, omit, set, get as get$1, uniqBy, groupBy, sortBy, uniq } from 'lodash';
2
2
  import { slugify, dataJoin, interpolate } from '@orioro/util';
3
3
  import { makeResolve, $$literal, withExpressionResolvers, expressions, ALL_EXPR, fetchExpr, resolve, resolveAsync } from '@orioro/resolve';
4
4
  import { __assign, __spreadArray, __awaiter, __generator, __makeTemplateObject } from 'tslib';
5
5
  import { schemeTableau10, schemeSet3, schemeSet2, schemeSet1, schemePastel2, schemePastel1, schemePaired, schemeObservable10, schemeDark2, schemeAccent, schemeCategory10, schemeSpectral, schemeRdYlGn, schemeRdYlBu, schemeRdGy, schemeRdBu, schemePuOr, schemePiYG, schemePRGn, schemeBrBG, schemeYlOrRd, schemeYlOrBr, schemeYlGn, schemeYlGnBu, schemeRdPu, schemePuRd, schemePuBu, schemePuBuGn, schemeOrRd, schemeGnBu, schemeBuPu, schemeBuGn, schemeReds, schemePurples, schemeOranges, schemeGreys, schemeGreens, schemeBlues, interpolateSpectral } from 'd3-scale-chromatic';
6
- import { saveAs } from 'file-saver';
7
- import { CANCELLED, fileReadAs, AspectRatio, LoadingIndicator, Flex, Box, RichTextOutput, EvenSpacedList, FileOutput, MARKDOWN_DEFAULT_REMARK_PLUGINS, MARKDOWN_DEFAULT_REHYPE_PLUGINS, Markdown as Markdown$1, DropdownMenu, Input, SwitchInput, TextEllipsis, withDefaults, LoadingOverlay, Button, SingleFileInput, InputProvider as InputProvider$1, rendererSpecList, TextInput, withLabeledLayout, INPUTS, useLocalState } from '@orioro/react-ui-core';
6
+ import { get } from '@orioro/get';
7
+ import { saveAs as saveAs$1 } from 'file-saver';
8
+ import { CANCELLED, fileReadAs, Flex, AspectRatio, LoadingIndicator, Box, RichTextOutput, EvenSpacedList, FileOutput, MARKDOWN_DEFAULT_REMARK_PLUGINS, MARKDOWN_DEFAULT_REHYPE_PLUGINS, Markdown as Markdown$1, DropdownMenu, Input, SwitchInput, TextEllipsis, withDefaults, Button, LoadingOverlay, SingleFileInput, InputProvider as InputProvider$1, rendererSpecList, TextInput, withLabeledLayout, INPUTS, useLocalState } from '@orioro/react-ui-core';
8
9
  import initGdalJs from 'gdal3.js';
9
10
  import queryString from 'query-string';
10
11
  import { wrap } from 'comlink';
11
12
  import { dataMergeProtocol } from '@orioro/vector-tile-util';
12
13
  import maplibregl from 'maplibre-gl';
13
- import { get as get$1 } from '@orioro/get';
14
14
  import { buffer } from '@turf/turf';
15
15
  import { scaleQuantile } from 'd3-scale';
16
- import { fmtLayerAbsoluteId, waves_1, makeSyncedMaps, LayeredMap, svgImageGenerator, SVG_PATTERNS, useMapRegistry, useTilesLoading, HoverTooltip, layeredMapOnClickHandler, DynamicImages, ControlContainer, InspectControl, MapWindow, TerrainControl, fitGeometry } from '@orioro/react-maplibre-util';
16
+ import { SVG_PATTERNS, fmtLayerAbsoluteId, waves_1, ControlContainer, LayeredMap, makeSyncedMaps, svgImageGenerator, useMapRegistry, useTilesLoading, HoverTooltip, layeredMapOnClickHandler, DynamicImages, InspectControl, MapWindow, TerrainControl, fitGeometry } from '@orioro/react-maplibre-util';
17
+ import { cast, strAutoCast } from '@orioro/cast';
17
18
  import { csvParse } from 'd3-dsv';
18
- import { strAutoCast } from '@orioro/cast';
19
- import React$1, { useState, useMemo, useCallback, useContext, createContext, memo, useReducer, useEffect, useRef } from 'react';
19
+ import React$1, { useState, useMemo, useCallback, useContext, createContext, useRef, useEffect, forwardRef, useImperativeHandle, memo, useReducer } from 'react';
20
20
  import styled, { keyframes } from 'styled-components';
21
21
  import { colord } from 'colord';
22
- import { Heading, Portal, Badge, Tabs, Tooltip, IconButton, Theme, Text, Popover, Dialog } from '@radix-ui/themes';
23
- import { mdiSprout, mdiTree, mdiCurrencyUsd, mdiAccountMultipleOutline, mdiScaleBalance, mdiHelpCircleOutline, mdiDownload, mdiDotsVertical, mdiOpacity, mdiFilterVariant, mdiBookOpenVariant, mdiMap, mdiEarth, mdiHospitalBox, mdiHomeCity, mdiSchool, mdiAccountGroup, mdiContentCopy, mdiLinkVariant, mdiChevronLeft, mdiShareVariantOutline, mdiForumOutline, mdiDragVertical, mdiLayers, mdiClose, mdiHospital } from '@mdi/js';
22
+ import { Heading, Portal, Badge, Tabs, Tooltip, IconButton, Theme, Text, Popover, Strong } from '@radix-ui/themes';
23
+ import { mdiSprout, mdiTree, mdiCurrencyUsd, mdiAccountMultipleOutline, mdiScaleBalance, mdiHelpCircleOutline, mdiDownload, mdiDotsVertical, mdiOpacity, mdiFilterVariant, mdiBookOpenVariant, mdiMap, mdiEarth, mdiHospitalBox, mdiHomeCity, mdiSchool, mdiAccountGroup, mdiContentCopy, mdiLinkVariant, mdiNavigation, mdiChevronLeft, mdiForumOutline, mdiShareVariantOutline, mdiDragVertical, mdiLayers, mdiClose, mdiHospital } from '@mdi/js';
24
24
  import { Icon } from '@mdi/react';
25
25
  import Confetti from 'react-confetti';
26
26
  import { nodeIdFromPath } from '@orioro/tree-model';
@@ -35,12 +35,15 @@ import { CsvImportDialog } from '@orioro/react-csv';
35
35
  import Highlighter from 'react-highlight-words';
36
36
  import { LinkedinShareButton, LinkedinIcon, EmailShareButton, EmailIcon, FacebookShareButton, FacebookIcon, TwitterShareButton, TwitterIcon, WhatsappShareButton, WhatsappIcon } from 'react-share';
37
37
  import CopyToClipboard from 'react-copy-to-clipboard';
38
+ import { Legend } from '@orioro/react-chart-util';
39
+ import QRCode from 'react-qr-code';
40
+ import { useMap, useControl, AttributionControl, ScaleControl, GeolocateControl, FullscreenControl, NavigationControl } from 'react-map-gl/maplibre';
41
+ import { createPortal } from 'react-dom';
42
+ import { toBlob } from 'html-to-image';
38
43
  import { makeSortableMultiList } from '@orioro/react-sortable';
39
44
  import '@maplibre/maplibre-gl-inspect/dist/maplibre-gl-inspect.css';
40
- import { Legend } from '@orioro/react-chart-util';
41
45
  import 'maplibre-gl/dist/maplibre-gl.css';
42
46
  import { useQueries, useQuery } from '@tanstack/react-query';
43
- import { AttributionControl, GeolocateControl, FullscreenControl, NavigationControl, ScaleControl, useMap } from 'react-map-gl/maplibre';
44
47
  import { pointToTile, tileToBBOX } from '@mapbox/tilebelt';
45
48
 
46
49
  function _arrayLikeToArray(r, a) {
@@ -180,6 +183,9 @@ function _nonIterableRest() {
180
183
  function _nonIterableSpread() {
181
184
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
182
185
  }
186
+ function _objectDestructuringEmpty(t) {
187
+ if (null == t) throw new TypeError("Cannot destructure " + t);
188
+ }
183
189
  function ownKeys(e, r) {
184
190
  var t = Object.keys(e);
185
191
  if (Object.getOwnPropertySymbols) {
@@ -2931,7 +2937,10 @@ var D3_SEQUENTIAL = {
2931
2937
  schemeYlOrBr: schemeYlOrBr,
2932
2938
  schemeYlOrRd: schemeYlOrRd
2933
2939
  };
2934
- var COLOR_SCHEMES = __assign(__assign(__assign(__assign(__assign({}, _objMap(D3_CATEGORICAL, function (_a) {
2940
+ var SCHEME_GEOREDUS = ['#FF7F00', '#CAB2D6', '#FFE551', '#39BBA7', '#FB9A99', '#B15928', '#FDBF6F', '#DA5AD8', '#B4B282', '#6A3D9A'];
2941
+ var D3_COLOR_SCHEMES = __assign(__assign(__assign(__assign(__assign({
2942
+ schemeGeoReDUS: SCHEME_GEOREDUS
2943
+ }, _objMap(D3_CATEGORICAL, function (_a) {
2935
2944
  var id = _a[0],
2936
2945
  scheme = _a[1];
2937
2946
  return [id, _categoricalScheme(scheme)];
@@ -2952,6 +2961,96 @@ var COLOR_SCHEMES = __assign(__assign(__assign(__assign(__assign({}, _objMap(D3_
2952
2961
  scheme = _a[1];
2953
2962
  return ["-".concat(id), _reverseByKScheme(scheme)];
2954
2963
  }));
2964
+
2965
+ var GEOREDUS_LABELED_SAFE_COLORS = {
2966
+ laranja: {
2967
+ label: 'Laranja',
2968
+ value: '#FF7F00'
2969
+ },
2970
+ lilas: {
2971
+ label: 'Lilás',
2972
+ value: '#CAB2D6'
2973
+ },
2974
+ amarelo: {
2975
+ label: 'Amarelo',
2976
+ value: '#FFE551'
2977
+ },
2978
+ verde_agua: {
2979
+ label: 'Verde-água',
2980
+ value: '#39BBA7'
2981
+ },
2982
+ vermelho_claro: {
2983
+ label: 'Vermelho claro',
2984
+ value: '#FB9A99'
2985
+ },
2986
+ marrom: {
2987
+ label: 'Marrom',
2988
+ value: '#B15928'
2989
+ },
2990
+ laranja_claro: {
2991
+ label: 'Laranja claro',
2992
+ value: '#FDBF6F'
2993
+ },
2994
+ rosa: {
2995
+ label: 'Rosa',
2996
+ value: '#DA5AD8'
2997
+ },
2998
+ verde_marrom: {
2999
+ label: 'Verde-marrom',
3000
+ value: '#B4B282'
3001
+ },
3002
+ roxo: {
3003
+ label: 'Roxo',
3004
+ value: '#6A3D9A'
3005
+ }
3006
+ };
3007
+ var GEOREDUS_LABELED_RESTRICTED_USE_COLORS = {
3008
+ azul_claro: {
3009
+ label: 'Azul claro',
3010
+ value: '#A6CEE3'
3011
+ },
3012
+ azul: {
3013
+ label: 'Azul',
3014
+ value: '#1F78B4'
3015
+ },
3016
+ verde_claro: {
3017
+ label: 'Verde claro',
3018
+ value: '#B2DF8A'
3019
+ },
3020
+ verde: {
3021
+ label: 'Verde',
3022
+ value: '#33A02C'
3023
+ },
3024
+ vermelho: {
3025
+ label: 'Vermelho',
3026
+ value: '#E31A1C'
3027
+ },
3028
+ cinza_claro: {
3029
+ label: 'Cinza claro',
3030
+ value: '#CCCCCC'
3031
+ },
3032
+ cinza: {
3033
+ label: 'Cinza',
3034
+ value: '#828282'
3035
+ }
3036
+ };
3037
+ var GEOREDUS_LABELED_COLORS = __assign(__assign({}, GEOREDUS_LABELED_SAFE_COLORS), GEOREDUS_LABELED_RESTRICTED_USE_COLORS);
3038
+ var schemeGeoReDUS = Object.fromEntries(Object.entries(GEOREDUS_LABELED_COLORS).map(function (_a) {
3039
+ var key = _a[0],
3040
+ value = _a[1].value;
3041
+ return [key, value];
3042
+ }));
3043
+ var schemeGeoReDUSSafe = Object.fromEntries(Object.entries(GEOREDUS_LABELED_SAFE_COLORS).map(function (_a) {
3044
+ var key = _a[0],
3045
+ value = _a[1].value;
3046
+ return [key, value];
3047
+ }));
3048
+ var GEOREDUS_COLOR_SCHEMES = {
3049
+ schemeGeoReDUS: schemeGeoReDUS,
3050
+ schemeGeoReDUSSafe: schemeGeoReDUSSafe
3051
+ };
3052
+
3053
+ var COLOR_SCHEMES = __assign(__assign({}, D3_COLOR_SCHEMES), GEOREDUS_COLOR_SCHEMES);
2955
3054
  function colorScheme(path) {
2956
3055
  var scheme = get(COLOR_SCHEMES, path);
2957
3056
  if (!scheme) {
@@ -2959,6 +3058,13 @@ function colorScheme(path) {
2959
3058
  }
2960
3059
  return scheme;
2961
3060
  }
3061
+ function resolveColor(colorInput) {
3062
+ return colorInput ? get(COLOR_SCHEMES, colorInput) || colorInput : colorInput;
3063
+ }
3064
+ function resolveSchemeColor(colorSchemeId, indexOrId) {
3065
+ var colorScheme = COLOR_SCHEMES[colorSchemeId];
3066
+ return typeof indexOrId === 'string' ? colorScheme[indexOrId] : (Array.isArray(colorScheme) ? colorScheme : Object.values(colorScheme))[indexOrId];
3067
+ }
2962
3068
 
2963
3069
  //
2964
3070
  // Formats the filter to be a compatible searchParams for fetching
@@ -3267,7 +3373,7 @@ var _b = makeResolve({
3267
3373
  resolveExprAsync = _b.resolveAsync,
3268
3374
  resolveExpr = _b.resolve;
3269
3375
 
3270
- var EXTENSIONS_BY_FORMAT = {
3376
+ var EXTENSIONS_BY_FORMAT$1 = {
3271
3377
  GeoJSON: 'geojson',
3272
3378
  GPKG: 'gpkg',
3273
3379
  CSV: 'csv',
@@ -3398,9 +3504,9 @@ function downloadResolver(downloadConf) {
3398
3504
  });
3399
3505
  case 10:
3400
3506
  blob = _context.sent;
3401
- saveAs(blob, "".concat(typeof fileNameBase === 'function' ? fileNameBase({
3507
+ saveAs$1(blob, "".concat(typeof fileNameBase === 'function' ? fileNameBase({
3402
3508
  options: options
3403
- }) : fileNameBase, ".").concat(EXTENSIONS_BY_FORMAT[options.format]));
3509
+ }) : fileNameBase, ".").concat(EXTENSIONS_BY_FORMAT$1[options.format]));
3404
3510
  _context.next = 19;
3405
3511
  break;
3406
3512
  case 14:
@@ -3540,7 +3646,7 @@ function influenceAreaMetadata(_a) {
3540
3646
  getGeoJson = _c === void 0 ? _defaultGetGeoJson : _c,
3541
3647
  _d = _b.getConf,
3542
3648
  getConf = _d === void 0 ? function (context) {
3543
- return get$1(context, 'view.conf.data') || {};
3649
+ return get(context, 'view.conf.data') || {};
3544
3650
  } : _d;
3545
3651
  return {
3546
3652
  influenceArea: resolveAsync.fn(function (context) {
@@ -3631,12 +3737,12 @@ function influenceAreaLayers(_a) {
3631
3737
  };
3632
3738
  }
3633
3739
 
3634
- var _excluded$9 = ["version"];
3740
+ var _excluded$e = ["version"];
3635
3741
  function tableVectorSource(context, tableId) {
3636
3742
  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
3637
3743
  _ref$version = _ref.version,
3638
3744
  version = _ref$version === void 0 ? '1' : _ref$version,
3639
- override = _objectWithoutProperties(_ref, _excluded$9);
3745
+ override = _objectWithoutProperties(_ref, _excluded$e);
3640
3746
  var VECTOR_TILE_SERVER_ENDPOINT = context.VECTOR_TILE_SERVER_ENDPOINT;
3641
3747
  return _objectSpread2({
3642
3748
  type: 'vector',
@@ -3818,7 +3924,7 @@ function numerical_size$1(base, _ref) {
3818
3924
  minSize: SIZE_MIN,
3819
3925
  maxSize: SIZE_MAX
3820
3926
  }), 10],
3821
- 'circle-color': get(COLOR_SCHEMES, color_scheme) || color_scheme
3927
+ 'circle-color': get$1(COLOR_SCHEMES, color_scheme) || color_scheme
3822
3928
  }
3823
3929
  })))
3824
3930
  });
@@ -3839,7 +3945,7 @@ function categorical$1(base, _ref) {
3839
3945
  var VECTOR_SOURCE_ID = "".concat(TABLE_ID, ".geom");
3840
3946
  categories = categories ? categories.map(function (category) {
3841
3947
  return _objectSpread2(_objectSpread2({}, category), {}, {
3842
- color: get(COLOR_SCHEMES, category.color) || category.color
3948
+ color: get$1(COLOR_SCHEMES, category.color) || category.color
3843
3949
  });
3844
3950
  }) : null;
3845
3951
  return _objectSpread2(_objectSpread2({}, base), {}, {
@@ -4014,11 +4120,11 @@ function cem_escolas_2022(config, allViewSpecs, context) {
4014
4120
  zIndex: Z_OVERLAY_MIDDLE_2000,
4015
4121
  dataPath: 'view.metadata.influenceArea',
4016
4122
  fillPaint: {
4017
- 'fill-color': get(COLOR_SCHEMES, 'schemeSet1.colors[1]'),
4123
+ 'fill-color': get$1(COLOR_SCHEMES, 'schemeSet1.colors[1]'),
4018
4124
  'fill-opacity': 0.3
4019
4125
  },
4020
4126
  boundaryPaint: {
4021
- 'line-color': get(COLOR_SCHEMES, 'schemeSet1.colors[1]'),
4127
+ 'line-color': get$1(COLOR_SCHEMES, 'schemeSet1.colors[1]'),
4022
4128
  'line-opacity': 0.8,
4023
4129
  'line-width': 2,
4024
4130
  'line-dasharray': [2, 2]
@@ -4278,7 +4384,7 @@ function chartUtil(viewSpec, allViewSpecs, context) {
4278
4384
  }
4279
4385
 
4280
4386
  var DEFAULT_BUFFER_SIZE$1 = 200;
4281
- function confSchema(viewSpec, allViewSpecs, context, _ref) {
4387
+ function confSchema$4(viewSpec, allViewSpecs, context, _ref) {
4282
4388
  var PARSED_SCHEMA = _ref.PARSED_SCHEMA;
4283
4389
  var variable_id = viewSpec.variable_id;
4284
4390
  return {
@@ -4414,7 +4520,7 @@ var _resolveSourceBounds = resolve.fn(function (context) {
4414
4520
  return UNBOUNDED_BOUNDS;
4415
4521
  }
4416
4522
  });
4417
- function metadata$3(viewSpec, allViewSpecs, context, _ref2) {
4523
+ function metadata$8(viewSpec, allViewSpecs, context, _ref2) {
4418
4524
  var PARSED_SCHEMA = _ref2.PARSED_SCHEMA,
4419
4525
  DATA_UTIL = _ref2.DATA_UTIL,
4420
4526
  CHART_UTIL = _ref2.CHART_UTIL;
@@ -4546,7 +4652,7 @@ function dataUtil(viewSpec, allViewSpecs, context, _ref) {
4546
4652
  var PARSED_SCHEMA = _ref.PARSED_SCHEMA;
4547
4653
  var METADATA_API_ENDPOINT = context.METADATA_API_ENDPOINT;
4548
4654
  var _resolveDataUrl = resolve.fn(function (context) {
4549
- var _variableId = get$1(context, 'view.conf.data.variableId');
4655
+ var _variableId = get(context, 'view.conf.data.variableId');
4550
4656
  var _variant = PARSED_SCHEMA.variantsByVariableId[_variableId];
4551
4657
  var url = "".concat(METADATA_API_ENDPOINT, "/").concat(_variant.source_table_id, "?").concat($urlSearch([{
4552
4658
  select: ['cd_setor', _variableId].join(','),
@@ -4811,7 +4917,7 @@ function setor_censitario(viewSpec, allViewSpecs, context, _ref) {
4811
4917
  promoteId: 'cd_setor',
4812
4918
  bounds: _resolveSourceBounds,
4813
4919
  tiles: [resolve.fn(function (context) {
4814
- var _variableId = get$1(context, 'view.conf.data.variableId');
4920
+ var _variableId = get(context, 'view.conf.data.variableId');
4815
4921
  var _variant = PARSED_SCHEMA.variantsByVariableId[_variableId];
4816
4922
  return ['$vtxUrl', {
4817
4923
  tiles: "".concat(VECTOR_TILE_SERVER_ENDPOINT, "/dvt/{z}/{x}/{y}?").concat($urlSearch([{
@@ -4875,7 +4981,7 @@ function setor_censitario(viewSpec, allViewSpecs, context, _ref) {
4875
4981
  };
4876
4982
  }
4877
4983
 
4878
- function download$1(viewSpec, allViewSpecs, context, _ref) {
4984
+ function download$6(viewSpec, allViewSpecs, context, _ref) {
4879
4985
  var PARSED_SCHEMA = _ref.PARSED_SCHEMA;
4880
4986
  var METADATA_API_ENDPOINT = context.METADATA_API_ENDPOINT;
4881
4987
  return downloadResolver({
@@ -4945,7 +5051,7 @@ function cem_censo_2010_2022(viewSpec, allViewSpecs, context) {
4945
5051
  PARSED_SCHEMA: PARSED_SCHEMA,
4946
5052
  DATA_UTIL: DATA_UTIL
4947
5053
  });
4948
- var DOWNLOAD = download$1(viewSpec, allViewSpecs, context, {
5054
+ var DOWNLOAD = download$6(viewSpec, allViewSpecs, context, {
4949
5055
  PARSED_SCHEMA: PARSED_SCHEMA
4950
5056
  });
4951
5057
  return {
@@ -4957,10 +5063,10 @@ function cem_censo_2010_2022(viewSpec, allViewSpecs, context) {
4957
5063
  sourceLabel: PARSED_SCHEMA.sourceLabel,
4958
5064
  keywords: PARSED_SCHEMA.keywords,
4959
5065
  viewType: VIEW_TYPE_SURFACE_CHOROPLETH,
4960
- confSchema: confSchema(viewSpec, allViewSpecs, context, {
5066
+ confSchema: confSchema$4(viewSpec, allViewSpecs, context, {
4961
5067
  PARSED_SCHEMA: PARSED_SCHEMA
4962
5068
  }),
4963
- metadata: metadata$3(viewSpec, allViewSpecs, context, {
5069
+ metadata: metadata$8(viewSpec, allViewSpecs, context, {
4964
5070
  PARSED_SCHEMA: PARSED_SCHEMA,
4965
5071
  CHART_UTIL: CHART_UTIL,
4966
5072
  DATA_UTIL: DATA_UTIL
@@ -4978,7 +5084,7 @@ function cem_censo_2010_2022(viewSpec, allViewSpecs, context) {
4978
5084
  };
4979
5085
  }
4980
5086
 
4981
- function download(context, _ref) {
5087
+ function download$5(context, _ref) {
4982
5088
  var PARSED_SCHEMA = _ref.PARSED_SCHEMA;
4983
5089
  var METADATA_API_ENDPOINT = context.METADATA_API_ENDPOINT;
4984
5090
  return downloadResolver({
@@ -5098,7 +5204,7 @@ function _defaultMetadata() {
5098
5204
  GLOBAL_CONTEXT = _ref2.GLOBAL_CONTEXT, PARSED_SCHEMA = _ref2.PARSED_SCHEMA;
5099
5205
  METADATA_API_ENDPOINT = GLOBAL_CONTEXT.METADATA_API_ENDPOINT; // Load data on the municipio
5100
5206
  municipioId = context.app.municipioId;
5101
- variableId = get$1(context, 'view.conf.data.variableId');
5207
+ variableId = get(context, 'view.conf.data.variableId');
5102
5208
  variant = PARSED_SCHEMA.variantsByVariableId[variableId]; //
5103
5209
  // The rawDataCacheUrl should be shared with following pipeline steps
5104
5210
  // so that it may be effectively cached
@@ -5113,7 +5219,7 @@ function _defaultMetadata() {
5113
5219
  return vtx.memoFetchData(rawDataCacheUrl);
5114
5220
  case 8:
5115
5221
  rawData = _context.sent;
5116
- scaleValues = get$1(rawData, "[].".concat(variableId));
5222
+ scaleValues = get(rawData, "[].".concat(variableId));
5117
5223
  colorScheme = _censoColorScheme(variant.colorScheme);
5118
5224
  colorScaleStops = variant.classificationMethod === 'quantile(5)' ? _quantileBreakpoints(_objectSpread2({
5119
5225
  k: 5,
@@ -5339,7 +5445,7 @@ function customGeoJson_layers(opts) {
5339
5445
  };
5340
5446
  }
5341
5447
 
5342
- function metadata$2(opts) {
5448
+ function metadata$7(opts) {
5343
5449
  return resolveAsync.fn(/*#__PURE__*/function () {
5344
5450
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(context) {
5345
5451
  var _context$view;
@@ -5385,7 +5491,7 @@ function buildings_sources(_ref) {
5385
5491
  minzoom: BUILDINGS_MIN_ZOOM,
5386
5492
  maxzoom: BUILDINGS_MIN_ZOOM,
5387
5493
  tiles: [resolve.fn(function (context) {
5388
- var variableId = get$1(context, 'view.conf.data.variableId');
5494
+ var variableId = get(context, 'view.conf.data.variableId');
5389
5495
  var variant = PARSED_SCHEMA.variantsByVariableId[variableId];
5390
5496
  return ['$vtxUrl', {
5391
5497
  tiles: "".concat(VECTOR_TILE_SERVER_ENDPOINT, "/").concat(BUILDINGS_SOURCE_ID, "/{z}/{x}/{y}"),
@@ -5487,7 +5593,7 @@ function setor_censitario_sources(_ref2) {
5487
5593
  // bounds: ['$get', 'view.metadata.municipioData.group_bbox'],
5488
5594
  promoteId: 'id',
5489
5595
  tiles: [resolve.fn(function (context) {
5490
- var variableId = get$1(context, 'view.conf.data.variableId');
5596
+ var variableId = get(context, 'view.conf.data.variableId');
5491
5597
  var variant = PARSED_SCHEMA.variantsByVariableId[variableId];
5492
5598
  return ['$vtxUrl', {
5493
5599
  tiles: "".concat(VECTOR_TILE_SERVER_ENDPOINT, "/").concat(SETOR_CENSITARIO_SOURCE_ID, "/{z}/{x}/{y}"),
@@ -5533,8 +5639,8 @@ function setor_censitario_layers(opts) {
5533
5639
  tooltip: {
5534
5640
  title: ['$literal', ['$template', 'Setor censitário ${0}', ['$get', 'feature.properties.id']]],
5535
5641
  entries: ['$literal', resolve.fn(function (context) {
5536
- var variableId = get$1(context, 'view.conf.data.variableId');
5537
- var variableLabel = get$1(context, "view.metadata.labels.".concat(variableId));
5642
+ var variableId = get(context, 'view.conf.data.variableId');
5643
+ var variableLabel = get(context, "view.metadata.labels.".concat(variableId));
5538
5644
  var mainValueDisplay;
5539
5645
  if (variableId === 'total_pessoas_por_km2') {
5540
5646
  try {
@@ -5545,7 +5651,7 @@ function setor_censitario_layers(opts) {
5545
5651
  mainValueDisplay = null;
5546
5652
  }
5547
5653
  } else {
5548
- var value = get$1(context, 'feature.properties.value');
5654
+ var value = get(context, 'feature.properties.value');
5549
5655
  var isPercentage = variableId.endsWith('_2'); // _2 is the new suffix to indicate percentage variables
5550
5656
  var format = isPercentage ? {
5551
5657
  style: 'percent'
@@ -5598,7 +5704,7 @@ function setor_censitario_layers(opts) {
5598
5704
  filter: _filter,
5599
5705
  paint: {
5600
5706
  'line-color': resolve.fn(function (context) {
5601
- var variableId = get$1(context, 'view.conf.data.variableId');
5707
+ var variableId = get(context, 'view.conf.data.variableId');
5602
5708
  var variant = PARSED_SCHEMA.variantsByVariableId[variableId];
5603
5709
  return _censoColorScheme(variant.colorScheme).scalesByK[3][2];
5604
5710
  }),
@@ -5613,7 +5719,7 @@ function setor_censitario_layers(opts) {
5613
5719
  }
5614
5720
 
5615
5721
  var intramun = {
5616
- metadata: metadata$2,
5722
+ metadata: metadata$7,
5617
5723
  sources: function sources(opts) {
5618
5724
  return _objectSpread2(_objectSpread2(_objectSpread2({}, setor_censitario_sources(opts)), buildings_sources(opts)), customGeoJson_sources());
5619
5725
  },
@@ -5623,7 +5729,7 @@ var intramun = {
5623
5729
  };
5624
5730
 
5625
5731
  var DEFAULT_COLOR_SCHEME$1 = COLOR_SCHEMES.schemeOranges;
5626
- function metadata$1(_ref) {
5732
+ function metadata$6(_ref) {
5627
5733
  var GLOBAL_CONTEXT = _ref.GLOBAL_CONTEXT,
5628
5734
  PARSED_SCHEMA = _ref.PARSED_SCHEMA;
5629
5735
  var METADATA_API_ENDPOINT = GLOBAL_CONTEXT.METADATA_API_ENDPOINT;
@@ -5653,7 +5759,7 @@ function metadata$1(_ref) {
5653
5759
  }
5654
5760
  throw new Error("Municipio not found: ".concat(municipioId));
5655
5761
  case 9:
5656
- variableId = get$1(context, 'view.conf.data.variableId');
5762
+ variableId = get(context, 'view.conf.data.variableId');
5657
5763
  variant = PARSED_SCHEMA.variantsByVariableId[variableId]; //
5658
5764
  // The rawDataCacheUrl should be shared with following pipeline steps
5659
5765
  // so that it may be effectively cached
@@ -5671,7 +5777,7 @@ function metadata$1(_ref) {
5671
5777
  //
5672
5778
  // Use values for the focusMunicipio to build the scale
5673
5779
  //
5674
- scaleValues = get$1(rawData, "[].".concat(variableId));
5780
+ scaleValues = get(rawData, "[].".concat(variableId));
5675
5781
  colorScheme = variant.colorScheme ? COLOR_SCHEMES[variant.colorScheme] || DEFAULT_COLOR_SCHEME$1 : DEFAULT_COLOR_SCHEME$1;
5676
5782
  return _context.abrupt("return", {
5677
5783
  ufData: ufData,
@@ -5710,7 +5816,7 @@ function municipio_sources$1(_ref) {
5710
5816
  bounds: ['$get', 'view.metadata.ufData.bbox'],
5711
5817
  promoteId: 'id',
5712
5818
  tiles: [resolve.fn(function (context) {
5713
- get$1(context, 'view.conf.data.variableId');
5819
+ get(context, 'view.conf.data.variableId');
5714
5820
  return ['$vtxUrl', {
5715
5821
  tiles: "".concat(VECTOR_TILE_SERVER_ENDPOINT, "/").concat(MUNICIPIO_SOURCE_ID$1, "/{z}/{x}/{y}"),
5716
5822
  data: [['id', ['$get', 'view.metadata.rawDataCacheUrl']]]
@@ -5748,7 +5854,7 @@ function municipio_layers$1() {
5748
5854
  }
5749
5855
 
5750
5856
  var intrauf = {
5751
- metadata: metadata$1,
5857
+ metadata: metadata$6,
5752
5858
  sources: function sources(opts) {
5753
5859
  return _objectSpread2({}, municipio_sources$1(opts));
5754
5860
  },
@@ -5758,7 +5864,7 @@ var intrauf = {
5758
5864
  };
5759
5865
 
5760
5866
  var DEFAULT_COLOR_SCHEME = COLOR_SCHEMES.schemeOranges;
5761
- function metadata(_ref) {
5867
+ function metadata$5(_ref) {
5762
5868
  var GLOBAL_CONTEXT = _ref.GLOBAL_CONTEXT,
5763
5869
  PARSED_SCHEMA = _ref.PARSED_SCHEMA;
5764
5870
  var METADATA_API_ENDPOINT = GLOBAL_CONTEXT.METADATA_API_ENDPOINT;
@@ -5787,7 +5893,7 @@ function metadata(_ref) {
5787
5893
  }
5788
5894
  throw new Error("BR data not found");
5789
5895
  case 9:
5790
- variableId = get$1(context, 'view.conf.data.variableId');
5896
+ variableId = get(context, 'view.conf.data.variableId');
5791
5897
  variant = PARSED_SCHEMA.variantsByVariableId[variableId]; //
5792
5898
  // The rawDataCacheUrl should be shared with following pipeline steps
5793
5899
  // so that it may be effectively cached
@@ -5804,7 +5910,7 @@ function metadata(_ref) {
5804
5910
  //
5805
5911
  // Use values for the focusMunicipio to build the scale
5806
5912
  //
5807
- scaleValues = get$1(rawData, "[].".concat(variableId));
5913
+ scaleValues = get(rawData, "[].".concat(variableId));
5808
5914
  colorScheme = variant.colorScheme ? COLOR_SCHEMES[variant.colorScheme] || DEFAULT_COLOR_SCHEME : DEFAULT_COLOR_SCHEME;
5809
5915
  return _context.abrupt("return", {
5810
5916
  brData: brData,
@@ -5843,7 +5949,7 @@ function municipio_sources(_ref) {
5843
5949
  bounds: ['$get', 'view.metadata.brData.bbox'],
5844
5950
  promoteId: 'id',
5845
5951
  tiles: [resolve.fn(function (context) {
5846
- get$1(context, 'view.conf.data.variableId');
5952
+ get(context, 'view.conf.data.variableId');
5847
5953
  return ['$vtxUrl', {
5848
5954
  tiles: "".concat(VECTOR_TILE_SERVER_ENDPOINT, "/").concat(MUNICIPIO_SOURCE_ID, "/{z}/{x}/{y}"),
5849
5955
  data: [['id', ['$get', 'view.metadata.rawDataCacheUrl']]]
@@ -5878,7 +5984,7 @@ function municipio_layers() {
5878
5984
  }
5879
5985
 
5880
5986
  var intrabr = {
5881
- metadata: metadata,
5987
+ metadata: metadata$5,
5882
5988
  sources: function sources(opts) {
5883
5989
  return _objectSpread2({}, municipio_sources(opts));
5884
5990
  },
@@ -5913,14 +6019,14 @@ function cem_censo_2022(viewSpec, allViewSpecs, context) {
5913
6019
  if (!PARSED_SCHEMA) {
5914
6020
  return null;
5915
6021
  }
5916
- var DOWNLOAD = download(context, {
6022
+ var DOWNLOAD = download$5(context, {
5917
6023
  PARSED_SCHEMA: PARSED_SCHEMA
5918
6024
  });
5919
6025
  var CHOROPLETH = choropleth({
5920
6026
  GLOBAL_CONTEXT: context,
5921
6027
  PARSED_SCHEMA: PARSED_SCHEMA
5922
6028
  });
5923
- var CONF_SCHEMA = confSchema(viewSpec, allViewSpecs, context, {
6029
+ var CONF_SCHEMA = confSchema$4(viewSpec, allViewSpecs, context, {
5924
6030
  PARSED_SCHEMA: PARSED_SCHEMA
5925
6031
  });
5926
6032
  return {
@@ -5992,7 +6098,7 @@ function numerical_size(base, _ref) {
5992
6098
  minSize: SIZE_MIN,
5993
6099
  maxSize: SIZE_MAX
5994
6100
  }), 10],
5995
- 'circle-color': get(COLOR_SCHEMES, color_scheme) || color_scheme
6101
+ 'circle-color': get$1(COLOR_SCHEMES, color_scheme) || color_scheme
5996
6102
  }
5997
6103
  })))
5998
6104
  });
@@ -6014,7 +6120,7 @@ function categorical(base, _ref) {
6014
6120
  var VECTOR_SOURCE_ID = "".concat(TABLE_ID, ".geom");
6015
6121
  categories = categories ? categories.map(function (category) {
6016
6122
  return _objectSpread2(_objectSpread2({}, category), {}, {
6017
- color: get(COLOR_SCHEMES, category.color) || category.color
6123
+ color: get$1(COLOR_SCHEMES, category.color) || category.color
6018
6124
  });
6019
6125
  }) : null;
6020
6126
  var $circleColor = categories ? ['match', ['to-string', ['get', VARIABLE_ID]]].concat(_toConsumableArray(categories.flatMap(function (category) {
@@ -6320,7 +6426,341 @@ function cem_saude_2024(viewSpec, allViewSpecs, context) {
6320
6426
  }));
6321
6427
  }
6322
6428
 
6323
- var _excluded$8 = ["label", "color", "line", "fill", "tiles", "source_layer", "sources", "layers"];
6429
+ var DEFAULT_FILL_OPACITY$1 = 0.5;
6430
+ function applyOpacity(color, alpha) {
6431
+ if (color.startsWith('#')) {
6432
+ var hex = color;
6433
+ if (hex.length === 4) {
6434
+ hex = '#' + __spreadArray([], hex.slice(1), true).map(function (c) {
6435
+ return c + c;
6436
+ }).join('');
6437
+ }
6438
+ var r = parseInt(hex.slice(1, 3), 16);
6439
+ var g = parseInt(hex.slice(3, 5), 16);
6440
+ var b = parseInt(hex.slice(5, 7), 16);
6441
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
6442
+ }
6443
+ console.warn("applyOpacity: unsupported color format \"".concat(color, "\", returning as-is"));
6444
+ return color;
6445
+ }
6446
+
6447
+ function parseTiles(tiles, context) {
6448
+ var parsedTiles = Array.isArray(tiles) ? tiles : typeof tiles === 'string' ? [tiles] : null;
6449
+ if (!parsedTiles) {
6450
+ throw new Error("tiles is required");
6451
+ }
6452
+ return parsedTiles.map(function (tileSrcUrl) {
6453
+ return interpolate(tileSrcUrl, context);
6454
+ });
6455
+ }
6456
+
6457
+ var LOWERCASE_WORDS = new Set(['de', 'da', 'do', 'das', 'dos', 'e', 'a', 'o', 'as', 'os', 'em', 'no', 'na', 'nos', 'nas', 'por', 'para', 'com', 'sem']);
6458
+ function humanize(str) {
6459
+ if (!str) return '';
6460
+ return str.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/[-_]+/g, ' ').replace(/\s+/g, ' ').trim().toLowerCase().replace(/(^\S+|\s\S+)/g, function (match, _, offset) {
6461
+ var word = match.trim();
6462
+ var isFirst = offset === 0;
6463
+ return isFirst || !LOWERCASE_WORDS.has(word) ? match.replace(word[0], word[0].toUpperCase()) : match;
6464
+ });
6465
+ }
6466
+
6467
+ function basicTooltip() {
6468
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6469
+ title = _ref.title,
6470
+ entries = _ref.entries;
6471
+ var titleKey = title || 'name';
6472
+ return {
6473
+ title: ['$literal', resolve.fn(function (ctx) {
6474
+ var _ctx$feature;
6475
+ return ctx === null || ctx === void 0 || (_ctx$feature = ctx.feature) === null || _ctx$feature === void 0 || (_ctx$feature = _ctx$feature.properties) === null || _ctx$feature === void 0 ? void 0 : _ctx$feature[titleKey];
6476
+ })],
6477
+ entries: ['$literal', resolve.fn(function (ctx) {
6478
+ var _ctx$feature2;
6479
+ if (_typeof((_ctx$feature2 = ctx.feature) === null || _ctx$feature2 === void 0 ? void 0 : _ctx$feature2.properties) !== 'object') {
6480
+ return [];
6481
+ }
6482
+ var entrySpecs = Array.isArray(entries) ? Object.fromEntries(entries.map(function (spec) {
6483
+ return typeof spec === 'string' ? [spec, {
6484
+ label: humanize(spec)
6485
+ }] : [spec.key, spec];
6486
+ })) : _typeof(entries) === 'object' ? entries : Object.fromEntries(Object.keys(ctx.feature.properties).filter(function (key) {
6487
+ return key !== titleKey;
6488
+ }).map(function (key) {
6489
+ return [key, {
6490
+ label: humanize(key)
6491
+ }];
6492
+ }));
6493
+ return Object.entries(entrySpecs).map(function (_ref2) {
6494
+ var _ctx$feature3;
6495
+ var _ref3 = _slicedToArray(_ref2, 2),
6496
+ key = _ref3[0],
6497
+ spec = _ref3[1];
6498
+ spec = typeof spec === 'string' ? {
6499
+ label: spec
6500
+ } : spec;
6501
+ var _spec = spec,
6502
+ label = _spec.label,
6503
+ format = _spec.format;
6504
+ return [label, cast(_objectSpread2({
6505
+ type: 'string'
6506
+ }, format), (_ctx$feature3 = ctx.feature) === null || _ctx$feature3 === void 0 ? void 0 : _ctx$feature3.properties[key])];
6507
+ });
6508
+ })]
6509
+ };
6510
+ }
6511
+
6512
+ var GEOMETRY_KEY = 'geom';
6513
+ var EXTENSIONS_BY_FORMAT = {
6514
+ GeoJSON: 'geojson',
6515
+ GPKG: 'gpkg',
6516
+ CSV: 'csv',
6517
+ KML: 'kml'
6518
+ };
6519
+ var OPTIONS_SCHEMA = {
6520
+ format: {
6521
+ label: 'Selecione o formato do arquivo',
6522
+ type: 'radioSelect',
6523
+ required: true,
6524
+ options: [
6525
+ // {
6526
+ // value: 'CSV',
6527
+ // label: 'Planilha CSV (dados tabulares separados por vírgulas)',
6528
+ // },
6529
+ {
6530
+ value: 'GPKG',
6531
+ label: 'GeoPackage (banco de dados geoespacial compacto)'
6532
+ }, {
6533
+ value: 'GeoJSON',
6534
+ label: 'GeoJSON (dados geográficos em JSON)'
6535
+ }, {
6536
+ value: 'KML',
6537
+ label: 'KML (Keyhole Markup Language - mapas em XML)'
6538
+ }]
6539
+ }
6540
+ };
6541
+ function basicDownload(_ref) {
6542
+ var fileName = _ref.fileName,
6543
+ downloadUrl = _ref.downloadUrl;
6544
+ return resolve.fn(function (ctx) {
6545
+ return /*#__PURE__*/function () {
6546
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
6547
+ var dialogs, options;
6548
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6549
+ while (1) switch (_context2.prev = _context2.next) {
6550
+ case 0:
6551
+ dialogs = _ref2.dialogs;
6552
+ _context2.next = 3;
6553
+ return dialogs.prompt({
6554
+ title: 'Baixar dados',
6555
+ submit: 'Baixar',
6556
+ input: {
6557
+ type: 'object',
6558
+ properties: OPTIONS_SCHEMA
6559
+ },
6560
+ defaultValue: {
6561
+ format: 'GPKG'
6562
+ }
6563
+ });
6564
+ case 3:
6565
+ options = _context2.sent;
6566
+ _context2.next = 6;
6567
+ return dialogs.loading(/*#__PURE__*/function () {
6568
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref4) {
6569
+ var setMessage, data, geoJsonData, blob;
6570
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6571
+ while (1) switch (_context.prev = _context.next) {
6572
+ case 0:
6573
+ setMessage = _ref4.setMessage;
6574
+ _context.next = 3;
6575
+ return fetch(downloadUrl).then(function (res) {
6576
+ return res.json();
6577
+ });
6578
+ case 3:
6579
+ data = _context.sent;
6580
+ //
6581
+ // Build a geoJson data object
6582
+ //
6583
+ geoJsonData = {
6584
+ type: 'FeatureCollection',
6585
+ features: data.map(function (entry) {
6586
+ var geometry = entry[GEOMETRY_KEY];
6587
+ return {
6588
+ type: 'Feature',
6589
+ properties: omit(entry, [GEOMETRY_KEY]),
6590
+ geometry: geometry
6591
+ };
6592
+ })
6593
+ };
6594
+ _context.prev = 5;
6595
+ setMessage('Preparando arquivo');
6596
+ //
6597
+ // Convert to requested format using ogr2ogr
6598
+ //
6599
+ _context.next = 9;
6600
+ return ogr2ogr({
6601
+ src: geoJsonData,
6602
+ format: options.format
6603
+ });
6604
+ case 9:
6605
+ blob = _context.sent;
6606
+ saveAs(blob, "".concat(fileName, ".").concat(EXTENSIONS_BY_FORMAT[options.format]));
6607
+ _context.next = 18;
6608
+ break;
6609
+ case 13:
6610
+ _context.prev = 13;
6611
+ _context.t0 = _context["catch"](5);
6612
+ console.error(_context.t0.message);
6613
+ _context.next = 18;
6614
+ return dialogs.info("Ocorreu um erro ao gerar o arquivo: ".concat(_context.t0.message));
6615
+ case 18:
6616
+ case "end":
6617
+ return _context.stop();
6618
+ }
6619
+ }, _callee, null, [[5, 13]]);
6620
+ }));
6621
+ return function (_x2) {
6622
+ return _ref5.apply(this, arguments);
6623
+ };
6624
+ }(), 'Carregando dados');
6625
+ case 6:
6626
+ case "end":
6627
+ return _context2.stop();
6628
+ }
6629
+ }, _callee2);
6630
+ }));
6631
+ return function (_x) {
6632
+ return _ref3.apply(this, arguments);
6633
+ };
6634
+ }();
6635
+ });
6636
+ }
6637
+
6638
+ var COLOR_OPTIONS = Object.values(GEOREDUS_LABELED_COLORS);
6639
+ function colorSelector(_initialColor) {
6640
+ return {
6641
+ label: 'Cor',
6642
+ helperText: 'Selecione a cor para a camada',
6643
+ type: 'select',
6644
+ clearable: false,
6645
+ defaultValue: _initialColor,
6646
+ options: COLOR_OPTIONS.map(function (opt) {
6647
+ return _objectSpread2(_objectSpread2({}, opt), {}, {
6648
+ label: /*#__PURE__*/React.createElement(Flex, {
6649
+ direction: "row",
6650
+ alignItems: "center",
6651
+ gap: "2"
6652
+ }, /*#__PURE__*/React.createElement("div", {
6653
+ style: {
6654
+ width: '15px',
6655
+ height: '15px',
6656
+ backgroundColor: opt.value
6657
+ }
6658
+ }), /*#__PURE__*/React.createElement("div", null, opt.label))
6659
+ });
6660
+ })
6661
+ };
6662
+ }
6663
+ function svgBgImage$2(svg) {
6664
+ return "url(\"data:image/svg+xml,".concat(encodeURIComponent(svg), "\")");
6665
+ }
6666
+ var FILL_PATTERN_SOLID = 'solid';
6667
+ var FILL_PATTERN_OPTIONS$1 = [{
6668
+ label: 'Preenchido',
6669
+ value: FILL_PATTERN_SOLID
6670
+ }, {
6671
+ label: 'Quadrados',
6672
+ value: 'squares_1'
6673
+ }, {
6674
+ label: 'Triângulos',
6675
+ value: 'triangles_1'
6676
+ }, {
6677
+ label: 'Diamantes',
6678
+ value: 'diamonds_1'
6679
+ }, {
6680
+ label: 'Cruz',
6681
+ value: 'cross_1'
6682
+ }, {
6683
+ label: 'Mosaico 1',
6684
+ value: 'mosaic_1'
6685
+ }, {
6686
+ label: 'Mosaico 2',
6687
+ value: 'mosaic_2'
6688
+ }, {
6689
+ label: 'Ondas',
6690
+ value: 'waves_1'
6691
+ }, {
6692
+ label: 'Círculos',
6693
+ value: 'circles_1'
6694
+ }, {
6695
+ label: 'Linhas',
6696
+ value: 'lines_1'
6697
+ }];
6698
+ function fillPatternSelector() {
6699
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6700
+ return _objectSpread2({
6701
+ label: 'Textura',
6702
+ type: 'select',
6703
+ clearable: false,
6704
+ defaultValue: FILL_PATTERN_SOLID,
6705
+ options: FILL_PATTERN_OPTIONS$1.map(function (opt) {
6706
+ var pattern = opt.value === FILL_PATTERN_SOLID ? null : svgBgImage$2(SVG_PATTERNS[opt.value]({
6707
+ scale: '0.25'
6708
+ }));
6709
+ return _objectSpread2(_objectSpread2({}, opt), {}, {
6710
+ label: /*#__PURE__*/React.createElement(Flex, {
6711
+ direction: "row",
6712
+ alignItems: "center",
6713
+ gap: "2"
6714
+ }, /*#__PURE__*/React.createElement("div", {
6715
+ style: _objectSpread2({
6716
+ width: 15,
6717
+ height: 15,
6718
+ border: '1px solid #aaa'
6719
+ }, pattern ? {
6720
+ backgroundImage: pattern
6721
+ } : {
6722
+ backgroundColor: '#ccc'
6723
+ })
6724
+ }), /*#__PURE__*/React.createElement("div", null, " ", opt.label))
6725
+ });
6726
+ })
6727
+ }, props);
6728
+ }
6729
+
6730
+ var _excluded$d = ["label", "color", "line", "fill", "tiles", "source_layer", "sources", "layers", "fill_pattern"];
6731
+ var SOLID = 'solid';
6732
+ var DEFAULT_FILL_OPACITY = 0.5;
6733
+ var FILL_PATTERN_OPTIONS = [{
6734
+ label: 'Preenchido',
6735
+ value: SOLID
6736
+ }, {
6737
+ label: 'Quadrados',
6738
+ value: 'squares_1'
6739
+ }, {
6740
+ label: 'Triângulos',
6741
+ value: 'triangles_1'
6742
+ }, {
6743
+ label: 'Diamantes',
6744
+ value: 'diamonds_1'
6745
+ }, {
6746
+ label: 'Cruz',
6747
+ value: 'cross_1'
6748
+ }, {
6749
+ label: 'Mosaico 1',
6750
+ value: 'mosaic_1'
6751
+ }, {
6752
+ label: 'Mosaico 2',
6753
+ value: 'mosaic_2'
6754
+ }, {
6755
+ label: 'Ondas',
6756
+ value: 'waves_1'
6757
+ }, {
6758
+ label: 'Círculos',
6759
+ value: 'circles_1'
6760
+ }, {
6761
+ label: 'Linhas',
6762
+ value: 'lines_1'
6763
+ }];
6324
6764
  function _parseTiles$2(tiles, context) {
6325
6765
  tiles = Array.isArray(tiles) ? tiles : typeof tiles === 'string' ? [tiles] : null;
6326
6766
  if (!tiles) {
@@ -6330,6 +6770,9 @@ function _parseTiles$2(tiles, context) {
6330
6770
  return interpolate(tileSrcUrl, context);
6331
6771
  });
6332
6772
  }
6773
+ function svgBgImage$1(svg) {
6774
+ return "url(\"data:image/svg+xml,".concat(encodeURIComponent(svg), "\")");
6775
+ }
6333
6776
  function vector_polygon(_ref, allViewSpecs, context) {
6334
6777
  var label = _ref.label,
6335
6778
  color = _ref.color,
@@ -6343,12 +6786,87 @@ function vector_polygon(_ref, allViewSpecs, context) {
6343
6786
  sources = _ref$sources === void 0 ? {} : _ref$sources,
6344
6787
  _ref$layers = _ref.layers,
6345
6788
  layers = _ref$layers === void 0 ? {} : _ref$layers,
6346
- props = _objectWithoutProperties(_ref, _excluded$8);
6789
+ fill_pattern = _ref.fill_pattern,
6790
+ props = _objectWithoutProperties(_ref, _excluded$d);
6347
6791
  if (!source_layer) {
6348
6792
  throw new Error('source_layer must be defined');
6349
6793
  }
6794
+ var _initialColor = resolveColor(color);
6795
+ var _color = resolve.fn(function (ctx) {
6796
+ var _ctx$view;
6797
+ return resolveColor((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.color) || _initialColor;
6798
+ });
6799
+ var _legend = resolve.fn(_color, function (_resolvedColor, ctx) {
6800
+ var _ctx$view2;
6801
+ var resolvedFillPattern = ((_ctx$view2 = ctx.view) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.conf) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.style) === null || _ctx$view2 === void 0 ? void 0 : _ctx$view2.fillPattern) || fill_pattern;
6802
+ var legendItemProps = resolvedFillPattern || line ? {
6803
+ box: {
6804
+ style: _objectSpread2({
6805
+ borderColor: line !== null && line !== void 0 && line.paint && line.paint['line-color'] ? line.paint['line-color'] : _resolvedColor,
6806
+ borderStyle: line !== null && line !== void 0 && line.paint && line.paint['line-dasharray'] ? 'dashed' : 'solid',
6807
+ borderWidth: '1px'
6808
+ }, resolvedFillPattern && resolvedFillPattern !== SOLID ? {
6809
+ backgroundColor: 'transparent',
6810
+ backgroundImage: resolvedFillPattern && typeof SVG_PATTERNS[resolvedFillPattern] === 'function' ? svgBgImage$1(SVG_PATTERNS[resolvedFillPattern]({
6811
+ stroke: _resolvedColor,
6812
+ scale: '0.25'
6813
+ })) : ''
6814
+ } : {})
6815
+ }
6816
+ } : {};
6817
+ return {
6818
+ type: 'CategoricalLegend',
6819
+ items: [_objectSpread2({
6820
+ label: label,
6821
+ color: _color
6822
+ }, legendItemProps)]
6823
+ };
6824
+ });
6825
+ var _fillPaint = resolve.fn(_color, function (_resolvedColor, ctx) {
6826
+ var _ctx$view3;
6827
+ var resolvedFillPattern = ((_ctx$view3 = ctx.view) === null || _ctx$view3 === void 0 || (_ctx$view3 = _ctx$view3.conf) === null || _ctx$view3 === void 0 || (_ctx$view3 = _ctx$view3.style) === null || _ctx$view3 === void 0 ? void 0 : _ctx$view3.fillPattern) || fill_pattern;
6828
+ var resolvedFillPatternStr = resolvedFillPattern && resolvedFillPattern !== SOLID ? "".concat(resolvedFillPattern, "({ stroke: \"").concat(_resolvedColor, "\", scale: 0.5 })") : null;
6829
+ return _objectSpread2(_objectSpread2({
6830
+ 'fill-opacity': fill.paint && fill.paint['fill-opacity'] ? fill.paint['fill-opacity'] : DEFAULT_FILL_OPACITY,
6831
+ 'fill-color': _color
6832
+ }, fill['paint']), resolvedFillPatternStr ? {
6833
+ 'fill-pattern': resolvedFillPatternStr
6834
+ } : {});
6835
+ });
6350
6836
  return _objectSpread2(_objectSpread2({}, props), {}, {
6351
6837
  label: label,
6838
+ confSchema: {
6839
+ style: {
6840
+ color: colorSelector(_initialColor),
6841
+ fillPattern: {
6842
+ label: 'Textura',
6843
+ type: 'select',
6844
+ clearable: false,
6845
+ defaultValue: fill_pattern || SOLID,
6846
+ options: FILL_PATTERN_OPTIONS.map(function (opt) {
6847
+ var pattern = opt.value === SOLID ? null : svgBgImage$1(SVG_PATTERNS[opt.value]({
6848
+ scale: '0.25'
6849
+ }));
6850
+ return _objectSpread2(_objectSpread2({}, opt), {}, {
6851
+ label: /*#__PURE__*/React.createElement(Flex, {
6852
+ direction: "row",
6853
+ alignItems: "center",
6854
+ gap: "2"
6855
+ }, /*#__PURE__*/React.createElement("div", {
6856
+ style: _objectSpread2({
6857
+ width: 15,
6858
+ height: 15
6859
+ }, pattern ? {
6860
+ backgroundImage: pattern
6861
+ } : {
6862
+ backgroundColor: '#ccc'
6863
+ })
6864
+ }), /*#__PURE__*/React.createElement("div", null, " ", opt.label))
6865
+ });
6866
+ })
6867
+ }
6868
+ }
6869
+ },
6352
6870
  metadata: {},
6353
6871
  sources: _objectSpread2({
6354
6872
  main: {
@@ -6363,26 +6881,18 @@ function vector_polygon(_ref, allViewSpecs, context) {
6363
6881
  'source-layer': source_layer,
6364
6882
  type: 'line'
6365
6883
  }, line), {}, {
6366
- paint: {
6367
- 'line-color': color
6368
- }
6884
+ paint: _objectSpread2({
6885
+ 'line-color': _color
6886
+ }, line.paint)
6369
6887
  })), "main_fill", _objectSpread2(_objectSpread2({
6370
6888
  zIndex: Z_OVERLAY_BASE_1000,
6371
6889
  source: 'main',
6372
6890
  'source-layer': source_layer,
6373
6891
  type: 'fill'
6374
6892
  }, fill), {}, {
6375
- paint: _objectSpread2({
6376
- 'fill-opacity': 0.5,
6377
- 'fill-color': color
6378
- }, fill.paint),
6379
- legends: [{
6380
- type: 'CategoricalLegend',
6381
- items: [{
6382
- color: color,
6383
- label: label
6384
- }]
6385
- }],
6893
+ layout: _objectSpread2({}, fill['layout']),
6894
+ paint: _fillPaint,
6895
+ legends: [_legend],
6386
6896
  tooltip: {
6387
6897
  title: ['$literal', resolve.fn(function (ctx) {
6388
6898
  var _ctx$feature;
@@ -6397,64 +6907,846 @@ function vector_polygon(_ref, allViewSpecs, context) {
6397
6907
  });
6398
6908
  }
6399
6909
 
6400
- var _excluded$7 = ["line", "color", "tiles", "source_layer", "sources", "layers"];
6401
- function _parseTiles$1(tiles, context) {
6402
- tiles = Array.isArray(tiles) ? tiles : typeof tiles === 'string' ? [tiles] : null;
6403
- if (!tiles) {
6404
- throw new Error("tiles is required");
6405
- }
6406
- return tiles.map(function (tileSrcUrl) {
6407
- return interpolate(tileSrcUrl, context);
6408
- });
6409
- }
6410
- function vector_line(_ref, allViewSpecs, context) {
6411
- var _ref$line = _ref.line,
6412
- line = _ref$line === void 0 ? {} : _ref$line,
6413
- color = _ref.color,
6414
- tiles = _ref.tiles,
6415
- source_layer = _ref.source_layer,
6416
- _ref$sources = _ref.sources,
6417
- sources = _ref$sources === void 0 ? {} : _ref$sources,
6418
- _ref$layers = _ref.layers,
6419
- layers = _ref$layers === void 0 ? {} : _ref$layers,
6420
- props = _objectWithoutProperties(_ref, _excluded$7);
6421
- if (!source_layer) {
6422
- throw new Error('source_layer must be defined');
6423
- }
6424
- return _objectSpread2(_objectSpread2({}, props), {}, {
6425
- metadata: {},
6426
- sources: _objectSpread2({
6427
- main: {
6428
- promoteId: 'id',
6429
- type: 'vector',
6430
- tiles: _parseTiles$1(tiles, context)
6431
- }
6432
- }, sources),
6433
- layers: _objectSpread2(_defineProperty({}, "main_line", _objectSpread2(_objectSpread2({
6434
- zIndex: Z_OVERLAY_MIDDLE_2000,
6435
- source: 'main',
6436
- 'source-layer': source_layer,
6437
- type: 'line'
6438
- }, line), {}, {
6439
- paint: _objectSpread2({
6440
- 'line-width': 1,
6441
- 'line-color': color
6442
- }, line.paint || {}),
6443
- tooltip: {
6444
- title: ['$literal', resolve.fn(function (ctx) {
6445
- var _ctx$feature;
6446
- return ctx === null || ctx === void 0 || (_ctx$feature = ctx.feature) === null || _ctx$feature === void 0 || (_ctx$feature = _ctx$feature.properties) === null || _ctx$feature === void 0 ? void 0 : _ctx$feature.name;
6447
- })],
6448
- entries: ['$literal', resolve.fn(function (ctx) {
6449
- var _ctx$feature2;
6450
- return _typeof((_ctx$feature2 = ctx.feature) === null || _ctx$feature2 === void 0 ? void 0 : _ctx$feature2.properties) === 'object' ? Object.entries(ctx.feature.properties) : [];
6451
- })]
6452
- }
6453
- })), layers)
6454
- });
6910
+ function confSchema$3(viewSpec, allViewSpecs, context) {
6911
+ return {
6912
+ style: {
6913
+ fillPattern: fillPatternSelector()
6914
+ }
6915
+ };
6455
6916
  }
6456
6917
 
6457
- var _excluded$6 = ["circle", "color", "tiles", "source_layer", "sources", "layers"];
6918
+ function metadata$4(viewSpec, allViewSpecs, context) {
6919
+ var style = viewSpec.style;
6920
+ var categories = resolveAsync.fn(/*#__PURE__*/function () {
6921
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
6922
+ var _ctx$view;
6923
+ var colorSchemeId, resolvedCategories;
6924
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6925
+ while (1) switch (_context.prev = _context.next) {
6926
+ case 0:
6927
+ // Resolve color scheme
6928
+ colorSchemeId = ((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.colorScheme) || 'schemeGeoReDUSSafe'; // resolve categories
6929
+ if (!(typeof style.categories === 'string')) {
6930
+ _context.next = 7;
6931
+ break;
6932
+ }
6933
+ _context.next = 4;
6934
+ return fetch(interpolate(style.categories, {
6935
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
6936
+ })).then(function (res) {
6937
+ return res.json();
6938
+ }).then(function (categories) {
6939
+ return uniqBy(categories, function (cat) {
6940
+ return cat.value;
6941
+ });
6942
+ });
6943
+ case 4:
6944
+ _context.t0 = _context.sent;
6945
+ _context.next = 8;
6946
+ break;
6947
+ case 7:
6948
+ _context.t0 = Array.isArray(style.categories) ? style.categories.map(function (categoryInput) {
6949
+ return typeof categoryInput === 'string' ? {
6950
+ value: categoryInput
6951
+ } : categoryInput;
6952
+ }) : null;
6953
+ case 8:
6954
+ resolvedCategories = _context.t0;
6955
+ if (resolvedCategories) {
6956
+ _context.next = 11;
6957
+ break;
6958
+ }
6959
+ throw new Error('could not resolve categories ' + viewSpec.id);
6960
+ case 11:
6961
+ return _context.abrupt("return", resolvedCategories.map(function (cat, index) {
6962
+ var color = cat.color || resolveSchemeColor(colorSchemeId, index);
6963
+ if (!color) {
6964
+ throw new Error("Could not resolve color for ".concat(cat.value));
6965
+ }
6966
+ return _objectSpread2(_objectSpread2({}, cat), {}, {
6967
+ color: color,
6968
+ label: cat.label || humanize(cat.value)
6969
+ });
6970
+ }));
6971
+ case 12:
6972
+ case "end":
6973
+ return _context.stop();
6974
+ }
6975
+ }, _callee);
6976
+ }));
6977
+ return function (_x) {
6978
+ return _ref.apply(this, arguments);
6979
+ };
6980
+ }());
6981
+ return {
6982
+ categories: categories
6983
+ };
6984
+ }
6985
+
6986
+ var MAIN_SOURCE_ID$3 = 'main';
6987
+ function sources$4(viewSpec, allViewSpecs, context) {
6988
+ var tiles = viewSpec.tiles;
6989
+ return _defineProperty({}, MAIN_SOURCE_ID$3, {
6990
+ promoteId: 'id',
6991
+ type: 'vector',
6992
+ tiles: parseTiles(tiles, context)
6993
+ });
6994
+ }
6995
+
6996
+ function _main_line$2(_ref, viewSpec, allViewSpecs, context) {
6997
+ var _viewSpec$style;
6998
+ var _maplibreColorExp = _ref._maplibreColorExp;
6999
+ var source_layer = viewSpec.source_layer;
7000
+ var borderStyle = ((_viewSpec$style = viewSpec.style) === null || _viewSpec$style === void 0 ? void 0 : _viewSpec$style.borderStyle) || 'solid';
7001
+ if (borderStyle === 'none') {
7002
+ return null;
7003
+ }
7004
+ var paint = {
7005
+ dashed: {
7006
+ 'line-dasharray': [4, 2],
7007
+ 'line-width': 2
7008
+ },
7009
+ dotted: {
7010
+ 'line-dasharray': [0.5, 2],
7011
+ 'line-width': 2
7012
+ },
7013
+ solid: {}
7014
+ }[borderStyle];
7015
+ return {
7016
+ zIndex: Z_OVERLAY_BASE_1000,
7017
+ source: MAIN_SOURCE_ID$3,
7018
+ 'source-layer': source_layer,
7019
+ type: 'line',
7020
+ layout: borderStyle === 'dotted' ? {
7021
+ 'line-cap': 'round'
7022
+ } : {},
7023
+ paint: _objectSpread2({
7024
+ 'line-color': _maplibreColorExp,
7025
+ 'line-width': 2
7026
+ }, paint)
7027
+ };
7028
+ }
7029
+ function _main_fill_legends$2(props, viewSpec, allViewSpecs, context) {
7030
+ var _legends = resolve.fn(function (context) {
7031
+ var categories = context.view.metadata.categories;
7032
+ return [{
7033
+ type: 'CategoricalLegend',
7034
+ title: viewSpec.label,
7035
+ items: categories.map(function (cat) {
7036
+ return {
7037
+ id: cat.value,
7038
+ label: cat.label,
7039
+ color: cat.color,
7040
+ box: {
7041
+ style: {
7042
+ backgroundColor: applyOpacity(cat.color, DEFAULT_FILL_OPACITY$1)
7043
+ }
7044
+ }
7045
+ };
7046
+ })
7047
+ }];
7048
+ });
7049
+ return _legends;
7050
+ }
7051
+ function _main_fill$2(props, viewSpec, allViewSpecs, context) {
7052
+ var _maplibreColorExp = props._maplibreColorExp,
7053
+ _fillPattern = props._fillPattern;
7054
+ var source_layer = viewSpec.source_layer;
7055
+ var _fillPaint = resolve.fn([_fillPattern], function (_ref2, ctx) {
7056
+ var _ref3 = _slicedToArray(_ref2, 1),
7057
+ resolvedFillPattern = _ref3[0];
7058
+ var resolvedFillPatternStr = resolvedFillPattern && resolvedFillPattern !== FILL_PATTERN_SOLID ? ['match', ['get', viewSpec.style.categoryKey]].concat(_toConsumableArray(ctx.view.metadata.categories.map(function (cat) {
7059
+ return [cat.value, "".concat(resolvedFillPattern, "({ stroke: \"").concat(cat.color, "\", scale: 0.5 })")];
7060
+ }).flat()), ['#CCCCCC']) : null;
7061
+ return _objectSpread2({
7062
+ 'fill-color': _maplibreColorExp,
7063
+ 'fill-opacity': DEFAULT_FILL_OPACITY$1
7064
+ }, resolvedFillPatternStr ? {
7065
+ 'fill-pattern': resolvedFillPatternStr
7066
+ } : {});
7067
+ });
7068
+ return {
7069
+ zIndex: Z_OVERLAY_BASE_1000,
7070
+ source: MAIN_SOURCE_ID$3,
7071
+ 'source-layer': source_layer,
7072
+ type: 'fill',
7073
+ paint: _fillPaint,
7074
+ legends: _main_fill_legends$2(props, viewSpec),
7075
+ tooltip: basicTooltip(viewSpec.tooltip)
7076
+ };
7077
+ }
7078
+ function layers$4(viewSpec, allViewSpecs, context) {
7079
+ var styleSpec = viewSpec.style;
7080
+ var source_layer = viewSpec.source_layer;
7081
+ if (!source_layer) {
7082
+ throw new Error('source_layer must be defined');
7083
+ }
7084
+ var _maplibreColorExp = resolve.fn(function (ctx) {
7085
+ return ['match', ['get', viewSpec.style.categoryKey]].concat(_toConsumableArray(ctx.view.metadata.categories.map(function (cat) {
7086
+ return [cat.value, cat.color];
7087
+ }).flat()), ['#CCCCCC']);
7088
+ });
7089
+ var _fillPattern = resolve.fn(function (ctx) {
7090
+ var _ctx$view;
7091
+ return ((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.fillPattern) || styleSpec.fillPattern;
7092
+ });
7093
+ return _defineProperty(_defineProperty({}, "main_line", _main_line$2({
7094
+ _maplibreColorExp: _maplibreColorExp
7095
+ }, viewSpec)), "main_fill", _main_fill$2({
7096
+ _maplibreColorExp: _maplibreColorExp,
7097
+ _fillPattern: _fillPattern
7098
+ }, viewSpec));
7099
+ }
7100
+
7101
+ function download$4(viewSpec, allViewSpecs, context) {
7102
+ return basicDownload({
7103
+ fileName: slugify(viewSpec.label),
7104
+ downloadUrl: interpolate(viewSpec.download_url, {
7105
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
7106
+ })
7107
+ });
7108
+ }
7109
+
7110
+ var DEFAULT_COLOR_SCHEME_ID$1 = 'schemeGeoReDUSSafe';
7111
+ function parseStyleSpec$4(styleInput) {
7112
+ if (!styleInput) {
7113
+ throw new Error('expected existing styleInput');
7114
+ }
7115
+ return __assign({
7116
+ colorScheme: DEFAULT_COLOR_SCHEME_ID$1
7117
+ }, styleInput);
7118
+ }
7119
+
7120
+ var _excluded$c = ["style"];
7121
+ function vector_polygon_categorical(_ref, allViewSpecs, context) {
7122
+ var style = _ref.style,
7123
+ viewSpec = _objectWithoutProperties(_ref, _excluded$c);
7124
+ viewSpec = _objectSpread2(_objectSpread2({}, viewSpec), {}, {
7125
+ style: parseStyleSpec$4(style)
7126
+ });
7127
+ return _objectSpread2(_objectSpread2({}, pick(viewSpec, ['id', 'path', 'label', 'sourceLabel'])), {}, {
7128
+ confSchema: confSchema$3(),
7129
+ metadata: metadata$4(viewSpec, allViewSpecs, context),
7130
+ sources: sources$4(viewSpec, allViewSpecs, context),
7131
+ layers: layers$4(viewSpec),
7132
+ download: download$4(viewSpec, allViewSpecs, context)
7133
+ });
7134
+ }
7135
+
7136
+ function confSchema$2(viewSpec, allViewSpecs, context) {
7137
+ var styleSpec = viewSpec.style;
7138
+ return {
7139
+ style: {
7140
+ color: colorSelector(styleSpec.color),
7141
+ fillPattern: fillPatternSelector()
7142
+ }
7143
+ };
7144
+ }
7145
+
7146
+ function metadata$3(viewSpec, allViewSpecs, context) {
7147
+ viewSpec.style;
7148
+ return {};
7149
+ }
7150
+
7151
+ function _main_fill_legends$1(_ref, viewSpec, allViewSpecs, context) {
7152
+ var _color = _ref._color,
7153
+ _fillPattern = _ref._fillPattern;
7154
+ var _legend = resolve.fn([_color, _fillPattern], function (_ref2, ctx) {
7155
+ var _viewSpec$style;
7156
+ var _ref3 = _slicedToArray(_ref2, 2),
7157
+ resolvedColor = _ref3[0],
7158
+ resolvedFillPattern = _ref3[1];
7159
+ var patternProps = resolvedFillPattern && resolvedFillPattern !== FILL_PATTERN_SOLID ? {
7160
+ color: resolvedColor,
7161
+ backgroundColor: 'transparent',
7162
+ backgroundImage: resolvedFillPattern && typeof SVG_PATTERNS[resolvedFillPattern] === 'function' ? svgBgImage$2(SVG_PATTERNS[resolvedFillPattern]({
7163
+ stroke: resolvedColor,
7164
+ scale: '0.25'
7165
+ })) : ''
7166
+ } : {
7167
+ backgroundColor: applyOpacity(resolvedColor, DEFAULT_FILL_OPACITY$1)
7168
+ };
7169
+ var legendItemProps = {
7170
+ box: {
7171
+ style: _objectSpread2({
7172
+ borderColor: resolvedColor,
7173
+ borderStyle: ((_viewSpec$style = viewSpec.style) === null || _viewSpec$style === void 0 ? void 0 : _viewSpec$style.borderStyle) || 'solid',
7174
+ borderWidth: '1px'
7175
+ }, patternProps)
7176
+ }
7177
+ };
7178
+ return {
7179
+ type: 'CategoricalLegend',
7180
+ items: [_objectSpread2({
7181
+ label: viewSpec.label,
7182
+ color: resolvedColor
7183
+ }, legendItemProps)]
7184
+ };
7185
+ });
7186
+ return [_legend];
7187
+ }
7188
+ function _main_fill$1(props, viewSpec, allViewSpecs, context) {
7189
+ var _color = props._color,
7190
+ _fillPattern = props._fillPattern;
7191
+ var source_layer = viewSpec.source_layer;
7192
+ var _fillPaint = resolve.fn([_color, _fillPattern], function (_ref4, ctx) {
7193
+ var _ref5 = _slicedToArray(_ref4, 2),
7194
+ resolvedColor = _ref5[0],
7195
+ resolvedFillPattern = _ref5[1];
7196
+ var resolvedFillPatternStr = resolvedFillPattern && resolvedFillPattern !== FILL_PATTERN_SOLID ? "".concat(resolvedFillPattern, "({ stroke: \"").concat(resolvedColor, "\", scale: 0.5 })") : null;
7197
+ return _objectSpread2({
7198
+ 'fill-opacity': DEFAULT_FILL_OPACITY$1,
7199
+ 'fill-color': resolvedColor
7200
+ }, resolvedFillPatternStr ? {
7201
+ 'fill-pattern': resolvedFillPatternStr
7202
+ } : {});
7203
+ });
7204
+ return {
7205
+ zIndex: Z_OVERLAY_BASE_1000,
7206
+ source: 'main',
7207
+ 'source-layer': source_layer,
7208
+ type: 'fill',
7209
+ paint: _fillPaint,
7210
+ legends: _main_fill_legends$1(props, viewSpec),
7211
+ tooltip: basicTooltip(viewSpec.tooltip)
7212
+ };
7213
+ }
7214
+ function _main_line$1(_ref6, viewSpec, allViewSpecs, context) {
7215
+ var _viewSpec$style2;
7216
+ var _color = _ref6._color;
7217
+ var source_layer = viewSpec.source_layer;
7218
+ var borderStyle = ((_viewSpec$style2 = viewSpec.style) === null || _viewSpec$style2 === void 0 ? void 0 : _viewSpec$style2.borderStyle) || 'solid';
7219
+ if (borderStyle === 'none') {
7220
+ return null;
7221
+ }
7222
+ var paint = {
7223
+ dashed: {
7224
+ 'line-dasharray': [4, 2],
7225
+ 'line-width': 2
7226
+ },
7227
+ dotted: {
7228
+ 'line-dasharray': [0.5, 2],
7229
+ 'line-width': 2
7230
+ },
7231
+ solid: {}
7232
+ }[borderStyle];
7233
+ return {
7234
+ zIndex: Z_OVERLAY_BASE_1000,
7235
+ source: 'main',
7236
+ 'source-layer': source_layer,
7237
+ type: 'line',
7238
+ layout: borderStyle === 'dotted' ? {
7239
+ 'line-cap': 'round'
7240
+ } : {},
7241
+ paint: _objectSpread2({
7242
+ 'line-color': _color
7243
+ }, paint)
7244
+ };
7245
+ }
7246
+ function layers$3(viewSpec, allViewSpecs, context) {
7247
+ var styleSpec = viewSpec.style;
7248
+ var source_layer = viewSpec.source_layer;
7249
+ if (!source_layer) {
7250
+ throw new Error('source_layer must be defined');
7251
+ }
7252
+ var _color = resolve.fn(function (ctx) {
7253
+ var _ctx$view;
7254
+ return resolveColor(((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.color) || styleSpec.color);
7255
+ });
7256
+ var _fillPattern = resolve.fn(function (ctx) {
7257
+ var _ctx$view2;
7258
+ return ((_ctx$view2 = ctx.view) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.conf) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.style) === null || _ctx$view2 === void 0 ? void 0 : _ctx$view2.fillPattern) || styleSpec.fillPattern;
7259
+ });
7260
+ return _defineProperty(_defineProperty({}, "main_line", _main_line$1({
7261
+ _color: _color}, viewSpec)), "main_fill", _main_fill$1({
7262
+ _color: _color,
7263
+ _fillPattern: _fillPattern
7264
+ }, viewSpec));
7265
+ }
7266
+
7267
+ function sources$3(viewSpec, allViewSpecs, context) {
7268
+ var tiles = viewSpec.tiles;
7269
+ return {
7270
+ main: {
7271
+ promoteId: 'id',
7272
+ type: 'vector',
7273
+ tiles: parseTiles(tiles, context)
7274
+ }
7275
+ };
7276
+ }
7277
+
7278
+ function _defaultColor$1(inputColor) {
7279
+ return inputColor ? resolveColor(inputColor) : schemeGeoReDUS.laranja;
7280
+ }
7281
+ function parseStyleSpec$3(styleInput) {
7282
+ if (!styleInput) {
7283
+ return {};
7284
+ }
7285
+ if (typeof styleInput === 'string') {
7286
+ return {
7287
+ color: _defaultColor$1(styleInput)
7288
+ };
7289
+ } else {
7290
+ return __assign(__assign({}, styleInput), {
7291
+ color: _defaultColor$1(styleInput.color)
7292
+ });
7293
+ }
7294
+ }
7295
+
7296
+ function download$3(viewSpec, allViewSpecs, context) {
7297
+ return basicDownload({
7298
+ fileName: slugify(viewSpec.label),
7299
+ downloadUrl: interpolate(viewSpec.download_url, {
7300
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
7301
+ })
7302
+ });
7303
+ }
7304
+
7305
+ var _excluded$b = ["style"];
7306
+ function vector_polygon_single(_ref, allViewSpecs, context) {
7307
+ var style = _ref.style,
7308
+ viewSpec = _objectWithoutProperties(_ref, _excluded$b);
7309
+ viewSpec = _objectSpread2(_objectSpread2({}, viewSpec), {}, {
7310
+ style: parseStyleSpec$3(style)
7311
+ });
7312
+ return _objectSpread2(_objectSpread2({}, pick(viewSpec, ['id', 'path', 'label', 'sourceLabel'])), {}, {
7313
+ confSchema: confSchema$2(viewSpec),
7314
+ metadata: metadata$3(viewSpec),
7315
+ sources: sources$3(viewSpec, allViewSpecs, context),
7316
+ layers: layers$3(viewSpec),
7317
+ download: download$3(viewSpec, allViewSpecs, context)
7318
+ });
7319
+ }
7320
+
7321
+ var DEFAULT_COLOR_SCHEME_ID = 'schemeOrRd';
7322
+ function parseStyleSpec$2(styleInput) {
7323
+ return __assign(__assign({
7324
+ colorScheme: DEFAULT_COLOR_SCHEME_ID
7325
+ }, styleInput), {
7326
+ classificationMethod: !styleInput.classificationMethod ? {
7327
+ type: 'naturalBreaks',
7328
+ k: 5
7329
+ } : typeof styleInput.classificationMethod === 'string' ? {
7330
+ type: styleInput.classificationMethod,
7331
+ k: 5
7332
+ } : styleInput.classificationMethod
7333
+ });
7334
+ }
7335
+
7336
+ var getLargestColorArray = function getLargestColorArray(scheme) {
7337
+ return scheme[scheme.length - 1];
7338
+ };
7339
+ var D3_SCHEMES = _objectSpread2(_objectSpread2({}, D3_SEQUENTIAL), D3_DIVERGING);
7340
+ var COLOR_SCHEME_OPTIONS = Object.entries(D3_SCHEMES).map(function (_ref) {
7341
+ var _ref2 = _slicedToArray(_ref, 2),
7342
+ name = _ref2[0],
7343
+ scheme = _ref2[1];
7344
+ var colors = getLargestColorArray(scheme);
7345
+ return {
7346
+ value: name,
7347
+ label: /*#__PURE__*/React.createElement(Flex, {
7348
+ direction: "row",
7349
+ gap: "2",
7350
+ alignItems: "center"
7351
+ }, /*#__PURE__*/React.createElement("div", {
7352
+ style: {
7353
+ display: 'flex',
7354
+ gap: '2px'
7355
+ }
7356
+ }, colors.map(function (color, idx) {
7357
+ return /*#__PURE__*/React.createElement("div", {
7358
+ key: idx,
7359
+ style: {
7360
+ width: 15,
7361
+ height: 15,
7362
+ backgroundColor: color,
7363
+ border: 'none'
7364
+ }
7365
+ });
7366
+ })))
7367
+ };
7368
+ });
7369
+ function confSchema$1(viewSpec, allViewSpecs, context) {
7370
+ var _viewSpec$style, _viewSpec$style2;
7371
+ return {
7372
+ style: {
7373
+ classificationMethodType: {
7374
+ label: 'Método de classificação',
7375
+ type: 'select',
7376
+ clearable: false,
7377
+ defaultValue: ((_viewSpec$style = viewSpec.style) === null || _viewSpec$style === void 0 || (_viewSpec$style = _viewSpec$style.classificationMethod) === null || _viewSpec$style === void 0 ? void 0 : _viewSpec$style.type) || 'naturalBreaks',
7378
+ options: [{
7379
+ value: 'naturalBreaks',
7380
+ label: 'Quebras naturais'
7381
+ }, {
7382
+ value: 'quantile',
7383
+ label: 'Quantis'
7384
+ }]
7385
+ },
7386
+ colorScheme: {
7387
+ label: 'Esquema de cores',
7388
+ type: 'select',
7389
+ clearable: false,
7390
+ defaultValue: ((_viewSpec$style2 = viewSpec.style) === null || _viewSpec$style2 === void 0 ? void 0 : _viewSpec$style2.colorScheme) || DEFAULT_COLOR_SCHEME_ID,
7391
+ options: COLOR_SCHEME_OPTIONS
7392
+ }
7393
+ }
7394
+ };
7395
+ }
7396
+
7397
+ var DEFAULT_COLOR = '#CCC';
7398
+ function custom(_ref) {
7399
+ _ref.values;
7400
+ var colorScheme = _ref.colorScheme,
7401
+ classificationMethod = _ref.classificationMethod;
7402
+ var k = classificationMethod.breaks.length;
7403
+ return [DEFAULT_COLOR].concat(_toConsumableArray(classificationMethod.breaks.map(function (breakValue, index) {
7404
+ return [breakValue, colorScheme.scalesByK[k][index]];
7405
+ }).flat()));
7406
+ }
7407
+ function quantile(_ref2) {
7408
+ var values = _ref2.values,
7409
+ colorScheme = _ref2.colorScheme,
7410
+ classificationMethod = _ref2.classificationMethod;
7411
+ var scale = scaleQuantile().domain(values) // your data
7412
+ .range(new Array(classificationMethod.k).fill(null).map(function (_, idx) {
7413
+ return idx;
7414
+ })); // number of bins
7415
+
7416
+ var breaks = scale.quantiles(); // → the cutoff values
7417
+
7418
+ //
7419
+ // Will produce an array such as:
7420
+ // [
7421
+ // "below_10",
7422
+ // 10,
7423
+ // "between_10_20",
7424
+ // 20,
7425
+ // "between_20_30",
7426
+ // 30,
7427
+ // "above_30"
7428
+ // ]
7429
+ //
7430
+
7431
+ var colorScale = colorScheme.scalesByK[classificationMethod.k];
7432
+ var colorScaleStops = breaks.map(function (breakValue, index) {
7433
+ var color = colorScale[index + 1];
7434
+ return index === 0 ? [
7435
+ // For below 0 values, will use defaultColor
7436
+ DEFAULT_COLOR, 0,
7437
+ // colorScale
7438
+ colorScale[0], breakValue, color] : [breakValue, color];
7439
+ }).flat(1);
7440
+ return colorScaleStops;
7441
+ }
7442
+ function naturalBreaks(_ref3) {
7443
+ var values = _ref3.values,
7444
+ colorScheme = _ref3.colorScheme,
7445
+ classificationMethod = _ref3.classificationMethod;
7446
+ return ['$naturalBreaks', values, _objectSpread2(_objectSpread2({}, colorScheme), {}, {
7447
+ defaultColor: DEFAULT_COLOR,
7448
+ k: classificationMethod.k,
7449
+ minK: 5
7450
+ })];
7451
+ }
7452
+ var COLOR_SCALE_STOPS_RESOLVERS = {
7453
+ custom: custom,
7454
+ quantile: quantile,
7455
+ naturalBreaks: naturalBreaks
7456
+ };
7457
+
7458
+ function metadata$2(viewSpec, allViewSpecs, context) {
7459
+ var style = viewSpec.style;
7460
+ return resolveAsync.fn(/*#__PURE__*/function () {
7461
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
7462
+ var _ctx$view$conf, _ctx$view$conf$style, _style$classification, _ctx$view$conf$style2, _style$classification2;
7463
+ var resolvedValues, colorSchemeId, colorScheme, _classificationMethod, colorScaleStops;
7464
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7465
+ while (1) switch (_context.prev = _context.next) {
7466
+ case 0:
7467
+ if (!(typeof style.values === 'string')) {
7468
+ _context.next = 6;
7469
+ break;
7470
+ }
7471
+ _context.next = 3;
7472
+ return fetch(interpolate(style.values, {
7473
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
7474
+ })).then(function (res) {
7475
+ return res.json();
7476
+ });
7477
+ case 3:
7478
+ _context.t0 = _context.sent;
7479
+ _context.next = 7;
7480
+ break;
7481
+ case 6:
7482
+ _context.t0 = Array.isArray(style.values) ? style.values : null;
7483
+ case 7:
7484
+ resolvedValues = _context.t0.map(function (entry) {
7485
+ return typeof entry === 'number' ? entry : entry.value;
7486
+ });
7487
+ //
7488
+ // Resolve color scale stops
7489
+ //
7490
+ colorSchemeId = ((_ctx$view$conf = ctx.view.conf) === null || _ctx$view$conf === void 0 || (_ctx$view$conf = _ctx$view$conf.style) === null || _ctx$view$conf === void 0 ? void 0 : _ctx$view$conf.colorScheme) || style.colorScheme;
7491
+ colorScheme = COLOR_SCHEMES[colorSchemeId] || COLOR_SCHEMES.schemeOrRd;
7492
+ _classificationMethod = _objectSpread2(_objectSpread2({}, style.classificationMethod || {}), {}, {
7493
+ type: ((_ctx$view$conf$style = ctx.view.conf.style) === null || _ctx$view$conf$style === void 0 ? void 0 : _ctx$view$conf$style.classificationMethodType) || ((_style$classification = style.classificationMethod) === null || _style$classification === void 0 ? void 0 : _style$classification.type),
7494
+ k: ((_ctx$view$conf$style2 = ctx.view.conf.style) === null || _ctx$view$conf$style2 === void 0 ? void 0 : _ctx$view$conf$style2.classificationMethodK) || ((_style$classification2 = style.classificationMethod) === null || _style$classification2 === void 0 ? void 0 : _style$classification2.k)
7495
+ });
7496
+ colorScaleStops = COLOR_SCALE_STOPS_RESOLVERS[_classificationMethod.type]({
7497
+ values: resolvedValues,
7498
+ colorScheme: colorScheme,
7499
+ classificationMethod: _classificationMethod
7500
+ });
7501
+ return _context.abrupt("return", {
7502
+ values: resolvedValues,
7503
+ colorScaleStops: colorScaleStops
7504
+ });
7505
+ case 13:
7506
+ case "end":
7507
+ return _context.stop();
7508
+ }
7509
+ }, _callee);
7510
+ }));
7511
+ return function (_x) {
7512
+ return _ref.apply(this, arguments);
7513
+ };
7514
+ }());
7515
+ }
7516
+
7517
+ var MAIN_SOURCE_ID$2 = 'main';
7518
+ function sources$2(viewSpec, allViewSpecs, context) {
7519
+ var tiles = viewSpec.tiles;
7520
+ return _defineProperty({}, MAIN_SOURCE_ID$2, {
7521
+ promoteId: 'id',
7522
+ type: 'vector',
7523
+ tiles: parseTiles(tiles, context)
7524
+ });
7525
+ }
7526
+
7527
+ function _main_line(props, viewSpec, allViewSpecs, context) {
7528
+ var source_layer = viewSpec.source_layer;
7529
+
7530
+ //
7531
+ // Resolve color scale stops
7532
+ //
7533
+ var colorScheme = COLOR_SCHEMES[viewSpec.style.colorScheme];
7534
+ return {
7535
+ zIndex: Z_OVERLAY_BASE_1000,
7536
+ source: MAIN_SOURCE_ID$2,
7537
+ 'source-layer': source_layer,
7538
+ type: 'line',
7539
+ interactive: true,
7540
+ paint: {
7541
+ 'line-color': colorScheme.scalesByK[3][2],
7542
+ 'line-width': 2,
7543
+ 'line-opacity': ['case', ['boolean', ['feature-state', 'hover'], false], 1, 0]
7544
+ }
7545
+ };
7546
+ }
7547
+ var DEFAULT_NUMBER_FORMAT = ['pt-BR', {}];
7548
+ function _main_fill_legends(props, viewSpec, allViewSpecs, context) {
7549
+ var _legends = resolve.fn(function (ctx) {
7550
+ var _viewSpec$style$legen;
7551
+ console.log('ctx', ctx);
7552
+ return [{
7553
+ type: 'SequentialColorLegend',
7554
+ title: viewSpec.label,
7555
+ unit: viewSpec.unit,
7556
+ steps: ctx.view.metadata.colorScaleStops,
7557
+ format: _objectSpread2({
7558
+ number: viewSpec.style.numberFormat || DEFAULT_NUMBER_FORMAT,
7559
+ below: 'Sem dados',
7560
+ above: 'Acima de ${0}'
7561
+ }, ((_viewSpec$style$legen = viewSpec.style.legend) === null || _viewSpec$style$legen === void 0 ? void 0 : _viewSpec$style$legen.format) || {})
7562
+ }];
7563
+ });
7564
+ return _legends;
7565
+ }
7566
+ function _main_fill(props, viewSpec, allViewSpecs, context) {
7567
+ var _maplibreColorExp = props._maplibreColorExp;
7568
+ var source_layer = viewSpec.source_layer;
7569
+ return {
7570
+ zIndex: Z_OVERLAY_BASE_1000,
7571
+ source: MAIN_SOURCE_ID$2,
7572
+ 'source-layer': source_layer,
7573
+ interactive: true,
7574
+ type: 'fill',
7575
+ paint: {
7576
+ 'fill-color': _maplibreColorExp,
7577
+ 'fill-opacity': DEFAULT_FILL_OPACITY$1
7578
+ },
7579
+ legends: _main_fill_legends(props, viewSpec),
7580
+ tooltip: basicTooltip(viewSpec.tooltip)
7581
+ };
7582
+ }
7583
+ function layers$2(viewSpec, allViewSpecs, context) {
7584
+ viewSpec.style;
7585
+ var source_layer = viewSpec.source_layer;
7586
+ if (!source_layer) {
7587
+ throw new Error('source_layer must be defined');
7588
+ }
7589
+ var _maplibreColorExp = resolve.fn(function (ctx) {
7590
+ return ['step', ['coalesce', ['get', viewSpec.style.valueKey],
7591
+ //
7592
+ // Just need to coalesce to value lower than the least existing value
7593
+ //
7594
+ Math.min.apply(Math, _toConsumableArray(ctx.view.metadata.values)) - 1]].concat(_toConsumableArray(ctx.view.metadata.colorScaleStops));
7595
+ });
7596
+
7597
+ // const _fillPattern = resolve.fn(
7598
+ // (ctx) => ctx.view?.conf?.style?.fillPattern || styleSpec.fillPattern,
7599
+ // )
7600
+
7601
+ return _defineProperty(_defineProperty({}, "main_line", _main_line({
7602
+ }, viewSpec)), "main_fill", _main_fill({
7603
+ _maplibreColorExp: _maplibreColorExp
7604
+ }, viewSpec));
7605
+ }
7606
+
7607
+ function download$2(viewSpec, allViewSpecs, context) {
7608
+ return basicDownload({
7609
+ fileName: slugify(viewSpec.label),
7610
+ downloadUrl: interpolate(viewSpec.download_url, {
7611
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
7612
+ })
7613
+ });
7614
+ }
7615
+
7616
+ var _excluded$a = ["style"];
7617
+ function vector_polygon_continuous(_ref, allViewSpecs, context) {
7618
+ var style = _ref.style,
7619
+ viewSpec = _objectWithoutProperties(_ref, _excluded$a);
7620
+ viewSpec = _objectSpread2(_objectSpread2({}, viewSpec), {}, {
7621
+ style: parseStyleSpec$2(style)
7622
+ });
7623
+ return _objectSpread2(_objectSpread2({}, pick(viewSpec, ['id', 'path', 'label', 'sourceLabel'])), {}, {
7624
+ confSchema: confSchema$1(viewSpec),
7625
+ metadata: metadata$2(viewSpec, allViewSpecs, context),
7626
+ sources: sources$2(viewSpec, allViewSpecs, context),
7627
+ layers: layers$2(viewSpec),
7628
+ download: download$2(viewSpec, allViewSpecs, context)
7629
+ });
7630
+ }
7631
+
7632
+ var _excluded$9 = ["label", "line", "color", "tiles", "source_layer", "sources", "layers", "tooltip"];
7633
+ var LINE_PATTERN_OPTIONS = [{
7634
+ label: 'Continua',
7635
+ value: 'line'
7636
+ }, {
7637
+ label: 'Tracejada',
7638
+ value: 'dashed'
7639
+ }];
7640
+ function _parseTiles$1(tiles, context) {
7641
+ tiles = Array.isArray(tiles) ? tiles : typeof tiles === 'string' ? [tiles] : null;
7642
+ if (!tiles) {
7643
+ throw new Error("tiles is required");
7644
+ }
7645
+ return tiles.map(function (tileSrcUrl) {
7646
+ return interpolate(tileSrcUrl, context);
7647
+ });
7648
+ }
7649
+ function vector_line(_ref, allViewSpecs, context) {
7650
+ var label = _ref.label,
7651
+ _ref$line = _ref.line,
7652
+ line = _ref$line === void 0 ? {} : _ref$line,
7653
+ color = _ref.color,
7654
+ tiles = _ref.tiles,
7655
+ source_layer = _ref.source_layer,
7656
+ _ref$sources = _ref.sources,
7657
+ sources = _ref$sources === void 0 ? {} : _ref$sources,
7658
+ _ref$layers = _ref.layers,
7659
+ layers = _ref$layers === void 0 ? {} : _ref$layers,
7660
+ _ref$tooltip = _ref.tooltip,
7661
+ tooltip = _ref$tooltip === void 0 ? {} : _ref$tooltip,
7662
+ props = _objectWithoutProperties(_ref, _excluded$9);
7663
+ if (!source_layer) {
7664
+ throw new Error('source_layer must be defined');
7665
+ }
7666
+ var _initialColor = resolveColor(color);
7667
+ var _color = resolve.fn(function (ctx) {
7668
+ var _ctx$view;
7669
+ return resolveColor((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.color) || _initialColor;
7670
+ });
7671
+ var _initialLinePattern = line.paint && line.paint['line-dasharray'] ? 'dashed' : 'line';
7672
+ var _linePattern = resolve.fn(_color, function (_resolvedColor, ctx) {
7673
+ var _ctx$view2;
7674
+ var resolvedLinePattern = ((_ctx$view2 = ctx.view) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.conf) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.style) === null || _ctx$view2 === void 0 ? void 0 : _ctx$view2.linePattern) || _initialLinePattern;
7675
+ return _objectSpread2(_objectSpread2({
7676
+ 'line-width': 1,
7677
+ 'line-color': _color
7678
+ }, line.paint || {}), resolvedLinePattern === 'dashed' ? {
7679
+ 'line-dasharray': [2, 2]
7680
+ } : {});
7681
+ });
7682
+ var _legend = resolve.fn(_color, function (_resolvedColor, ctx) {
7683
+ var _ctx$view3;
7684
+ return {
7685
+ type: 'CategoricalLegend',
7686
+ items: [{
7687
+ label: label,
7688
+ box: {
7689
+ style: {
7690
+ height: 0,
7691
+ borderColor: _resolvedColor,
7692
+ borderStyle: ((_ctx$view3 = ctx.view) === null || _ctx$view3 === void 0 || (_ctx$view3 = _ctx$view3.conf) === null || _ctx$view3 === void 0 || (_ctx$view3 = _ctx$view3.style) === null || _ctx$view3 === void 0 ? void 0 : _ctx$view3.linePattern) || _initialLinePattern,
7693
+ borderWidth: '1px'
7694
+ }
7695
+ }
7696
+ }]
7697
+ };
7698
+ });
7699
+ return _objectSpread2(_objectSpread2({}, props), {}, {
7700
+ label: label,
7701
+ confSchema: {
7702
+ style: {
7703
+ color: colorSelector(_initialColor),
7704
+ linePattern: {
7705
+ label: 'Linha',
7706
+ type: 'select',
7707
+ clearable: false,
7708
+ defaultValue: _initialLinePattern || 'line',
7709
+ options: LINE_PATTERN_OPTIONS.map(function (opt) {
7710
+ return _objectSpread2(_objectSpread2({}, opt), {}, {
7711
+ label: /*#__PURE__*/React.createElement(Flex, {
7712
+ direction: "row",
7713
+ alignItems: "center",
7714
+ gap: "2"
7715
+ }, /*#__PURE__*/React.createElement("div", {
7716
+ style: {
7717
+ width: 15,
7718
+ height: 0,
7719
+ borderStyle: opt.value === 'line' ? 'solid' : 'dashed',
7720
+ borderWidth: 1
7721
+ }
7722
+ }), /*#__PURE__*/React.createElement("div", null, " ", opt.label))
7723
+ });
7724
+ })
7725
+ }
7726
+ }
7727
+ },
7728
+ metadata: {},
7729
+ sources: _objectSpread2({
7730
+ main: {
7731
+ promoteId: 'id',
7732
+ type: 'vector',
7733
+ tiles: _parseTiles$1(tiles, context)
7734
+ }
7735
+ }, sources),
7736
+ layers: _objectSpread2(_defineProperty({}, "main_line", _objectSpread2(_objectSpread2({
7737
+ zIndex: Z_OVERLAY_MIDDLE_2000,
7738
+ source: 'main',
7739
+ 'source-layer': source_layer,
7740
+ type: 'line'
7741
+ }, line), {}, {
7742
+ paint: _linePattern,
7743
+ legends: [_legend],
7744
+ tooltip: basicTooltip(tooltip)
7745
+ })), layers)
7746
+ });
7747
+ }
7748
+
7749
+ var _excluded$8 = ["label", "circle", "color", "tiles", "source_layer", "sources", "layers"];
6458
7750
  function _parseTiles(tiles, context) {
6459
7751
  tiles = Array.isArray(tiles) ? tiles : typeof tiles === 'string' ? [tiles] : null;
6460
7752
  if (!tiles) {
@@ -6465,7 +7757,8 @@ function _parseTiles(tiles, context) {
6465
7757
  });
6466
7758
  }
6467
7759
  function vector_circle(_ref, allViewSpecs, context) {
6468
- var _ref$circle = _ref.circle,
7760
+ var label = _ref.label,
7761
+ _ref$circle = _ref.circle,
6469
7762
  circle = _ref$circle === void 0 ? {} : _ref$circle,
6470
7763
  color = _ref.color,
6471
7764
  tiles = _ref.tiles,
@@ -6474,11 +7767,37 @@ function vector_circle(_ref, allViewSpecs, context) {
6474
7767
  sources = _ref$sources === void 0 ? {} : _ref$sources,
6475
7768
  _ref$layers = _ref.layers,
6476
7769
  layers = _ref$layers === void 0 ? {} : _ref$layers,
6477
- props = _objectWithoutProperties(_ref, _excluded$6);
7770
+ props = _objectWithoutProperties(_ref, _excluded$8);
6478
7771
  if (!source_layer) {
6479
7772
  throw new Error('source_layer must be defined');
6480
7773
  }
7774
+ var _initialColor = resolveColor(color);
7775
+ var _color = resolve.fn(function (ctx) {
7776
+ var _ctx$view;
7777
+ return resolveColor((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.color) || _initialColor;
7778
+ });
7779
+ var _legend = resolve.fn(_color, function (_resolvedColor) {
7780
+ return {
7781
+ type: 'CategoricalLegend',
7782
+ items: [{
7783
+ label: label,
7784
+ box: {
7785
+ style: {
7786
+ backgroundColor: _resolvedColor,
7787
+ border: '1px solid black',
7788
+ borderRadius: '30px'
7789
+ }
7790
+ }
7791
+ }]
7792
+ };
7793
+ });
6481
7794
  return _objectSpread2(_objectSpread2({}, props), {}, {
7795
+ label: label,
7796
+ confSchema: {
7797
+ style: {
7798
+ color: colorSelector(_initialColor)
7799
+ }
7800
+ },
6482
7801
  metadata: {},
6483
7802
  sources: _objectSpread2({
6484
7803
  main: {
@@ -6495,11 +7814,12 @@ function vector_circle(_ref, allViewSpecs, context) {
6495
7814
  }, circle), {}, {
6496
7815
  paint: _objectSpread2({
6497
7816
  'circle-radius': 8,
6498
- 'circle-color': color,
7817
+ 'circle-color': _color,
6499
7818
  'circle-opacity': 1,
6500
7819
  'circle-stroke-color': '#000000',
6501
7820
  'circle-stroke-width': 1
6502
7821
  }, circle.paint || {}),
7822
+ legends: [_legend],
6503
7823
  tooltip: {
6504
7824
  title: ['$literal', resolve.fn(function (ctx) {
6505
7825
  var _ctx$feature;
@@ -6514,6 +7834,313 @@ function vector_circle(_ref, allViewSpecs, context) {
6514
7834
  });
6515
7835
  }
6516
7836
 
7837
+ function confSchema(viewSpec, allViewSpecs, context) {
7838
+ var styleSpec = viewSpec.style;
7839
+ return {
7840
+ style: {
7841
+ color: colorSelector(styleSpec.color)
7842
+ }
7843
+ };
7844
+ }
7845
+
7846
+ function metadata$1(viewSpec, allViewSpecs, context) {
7847
+ return {};
7848
+ }
7849
+
7850
+ var MAIN_SOURCE_ID$1 = 'main';
7851
+ function sources$1(viewSpec, allViewSpecs, context) {
7852
+ var tiles = viewSpec.tiles;
7853
+ return _defineProperty({}, MAIN_SOURCE_ID$1, {
7854
+ promoteId: 'id',
7855
+ type: 'vector',
7856
+ tiles: parseTiles(tiles, context)
7857
+ });
7858
+ }
7859
+
7860
+ function _main_circle_legends$1(props, viewSpec, allViewSpecs, context) {
7861
+ var _legends = resolve.fn(function (ctx) {
7862
+ var _ctx$view, _viewSpec$style, _viewSpec$style2;
7863
+ var _resolvedColor = resolveColor(((_ctx$view = ctx.view) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.conf) === null || _ctx$view === void 0 || (_ctx$view = _ctx$view.style) === null || _ctx$view === void 0 ? void 0 : _ctx$view.color) || ((_viewSpec$style = viewSpec.style) === null || _viewSpec$style === void 0 ? void 0 : _viewSpec$style.color)) || schemeGeoReDUS.laranja;
7864
+ return [{
7865
+ type: 'CategoricalLegend',
7866
+ items: [{
7867
+ label: viewSpec.label,
7868
+ box: {
7869
+ style: {
7870
+ backgroundColor: _resolvedColor,
7871
+ border: 'none',
7872
+ borderRadius: '30px',
7873
+ opacity: ((_viewSpec$style2 = viewSpec.style) === null || _viewSpec$style2 === void 0 ? void 0 : _viewSpec$style2.opacity) || 1
7874
+ }
7875
+ }
7876
+ }]
7877
+ }];
7878
+ });
7879
+ return _legends;
7880
+ }
7881
+ function _main_circle$1(props, viewSpec, allViewSpecs, context) {
7882
+ var _viewSpec$style4, _viewSpec$style5, _viewSpec$style6;
7883
+ _objectDestructuringEmpty(props);
7884
+ var source_layer = viewSpec.source_layer;
7885
+ return {
7886
+ zIndex: Z_OVERLAY_BASE_1000,
7887
+ source: MAIN_SOURCE_ID$1,
7888
+ 'source-layer': source_layer,
7889
+ interactive: true,
7890
+ type: 'circle',
7891
+ paint: {
7892
+ 'circle-color': resolve.fn(function (ctx) {
7893
+ var _ctx$view2, _viewSpec$style3;
7894
+ var _resolvedColor = resolveColor(((_ctx$view2 = ctx.view) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.conf) === null || _ctx$view2 === void 0 || (_ctx$view2 = _ctx$view2.style) === null || _ctx$view2 === void 0 ? void 0 : _ctx$view2.color) || ((_viewSpec$style3 = viewSpec.style) === null || _viewSpec$style3 === void 0 ? void 0 : _viewSpec$style3.color)) || schemeGeoReDUS.laranja;
7895
+ return _resolvedColor;
7896
+ }),
7897
+ 'circle-opacity': ((_viewSpec$style4 = viewSpec.style) === null || _viewSpec$style4 === void 0 ? void 0 : _viewSpec$style4.opacity) || 1,
7898
+ 'circle-radius': ((_viewSpec$style5 = viewSpec.style) === null || _viewSpec$style5 === void 0 ? void 0 : _viewSpec$style5.radius) || 10,
7899
+ 'circle-stroke-color': '#ffffff',
7900
+ 'circle-stroke-width': (_viewSpec$style6 = viewSpec.style) !== null && _viewSpec$style6 !== void 0 && _viewSpec$style6.border ? 2 : 0
7901
+ },
7902
+ legends: _main_circle_legends$1(props, viewSpec),
7903
+ tooltip: basicTooltip(viewSpec.tooltip)
7904
+ };
7905
+ }
7906
+ function layers$1(viewSpec, allViewSpecs, context) {
7907
+ var source_layer = viewSpec.source_layer;
7908
+ if (!source_layer) {
7909
+ throw new Error('source_layer must be defined');
7910
+ }
7911
+ return _defineProperty({}, "main_circle", _main_circle$1({}, viewSpec));
7912
+ }
7913
+
7914
+ function _defaultColor(inputColor) {
7915
+ return inputColor ? resolveColor(inputColor) : schemeGeoReDUS.laranja;
7916
+ }
7917
+ function parseStyleSpec$1(styleInput) {
7918
+ if (!styleInput) {
7919
+ return {};
7920
+ }
7921
+ if (typeof styleInput === 'string') {
7922
+ return {
7923
+ color: _defaultColor(styleInput),
7924
+ border: true
7925
+ };
7926
+ } else {
7927
+ return __assign(__assign({
7928
+ border: true
7929
+ }, styleInput), {
7930
+ color: _defaultColor(styleInput.color)
7931
+ });
7932
+ }
7933
+ }
7934
+
7935
+ function download$1(viewSpec, allViewSpecs, context) {
7936
+ return basicDownload({
7937
+ fileName: slugify(viewSpec.label),
7938
+ downloadUrl: interpolate(viewSpec.download_url || "", {
7939
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
7940
+ })
7941
+ });
7942
+ }
7943
+
7944
+ var _excluded$7 = ["style"];
7945
+ function vector_point_single(_ref, allViewSpecs, context) {
7946
+ var style = _ref.style,
7947
+ viewSpec = _objectWithoutProperties(_ref, _excluded$7);
7948
+ viewSpec = _objectSpread2(_objectSpread2({}, viewSpec), {}, {
7949
+ style: parseStyleSpec$1(style)
7950
+ });
7951
+ return _objectSpread2(_objectSpread2({}, pick(viewSpec, ['id', 'path', 'label', 'sourceLabel'])), {}, {
7952
+ confSchema: confSchema(viewSpec),
7953
+ metadata: metadata$1(),
7954
+ sources: sources$1(viewSpec, allViewSpecs, context),
7955
+ layers: layers$1(viewSpec),
7956
+ download: download$1(viewSpec, allViewSpecs, context)
7957
+ });
7958
+ }
7959
+
7960
+ function metadata(viewSpec, allViewSpecs, context) {
7961
+ var _style$radius;
7962
+ var style = viewSpec.style;
7963
+ var radiusData = (_style$radius = style.radius) !== null && _style$radius !== void 0 && _style$radius.values ? resolveAsync.fn(/*#__PURE__*/function () {
7964
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
7965
+ var resolvedValues;
7966
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7967
+ while (1) switch (_context.prev = _context.next) {
7968
+ case 0:
7969
+ if (!(typeof style.radius.values === 'string')) {
7970
+ _context.next = 6;
7971
+ break;
7972
+ }
7973
+ _context.next = 3;
7974
+ return fetch(interpolate(style.radius.values, {
7975
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT,
7976
+ municipioId: context.municipioId,
7977
+ //
7978
+ // TODO: remove these hotfixes
7979
+ //
7980
+ municipioId_SUS: context.municipioId.substr(0, 6)
7981
+ })).then(function (res) {
7982
+ return res.json();
7983
+ });
7984
+ case 3:
7985
+ _context.t0 = _context.sent;
7986
+ _context.next = 7;
7987
+ break;
7988
+ case 6:
7989
+ _context.t0 = Array.isArray(style.radius.values) ? style.radius.values : null;
7990
+ case 7:
7991
+ resolvedValues = _context.t0.map(function (entry) {
7992
+ return typeof entry === 'number' ? entry : entry.value;
7993
+ });
7994
+ return _context.abrupt("return", {
7995
+ values: resolvedValues
7996
+ });
7997
+ case 9:
7998
+ case "end":
7999
+ return _context.stop();
8000
+ }
8001
+ }, _callee);
8002
+ }));
8003
+ return function (_x) {
8004
+ return _ref.apply(this, arguments);
8005
+ };
8006
+ }()) : null;
8007
+ return {
8008
+ radiusData: radiusData
8009
+ };
8010
+ }
8011
+
8012
+ var MAIN_SOURCE_ID = 'main';
8013
+ function sources(viewSpec, allViewSpecs, context) {
8014
+ var tiles = viewSpec.tiles;
8015
+ return _defineProperty({}, MAIN_SOURCE_ID, {
8016
+ promoteId: 'id',
8017
+ type: 'vector',
8018
+ tiles: parseTiles(tiles, context)
8019
+ });
8020
+ }
8021
+
8022
+ var SIZE_MAX = 25;
8023
+ var SIZE_MIN = 6;
8024
+ function _validNumericalValues(values) {
8025
+ return values.filter(function (value) {
8026
+ return typeof value === 'number' && !Number.isNaN(value);
8027
+ });
8028
+ }
8029
+ var NO_DATA_COLOR = GEOREDUS_LABELED_RESTRICTED_USE_COLORS.cinza_claro.value;
8030
+ function _main_circle_legends(props, viewSpec, allViewSpecs, context) {
8031
+ var _legends = resolve.fn(function (ctx) {
8032
+ var _viewSpec$style;
8033
+ var _values = _validNumericalValues(ctx.view.metadata.radiusData.values);
8034
+ var _resolvedColor = resolveColor((_viewSpec$style = viewSpec.style) === null || _viewSpec$style === void 0 ? void 0 : _viewSpec$style.color) || schemeGeoReDUS.laranja;
8035
+ return [{
8036
+ type: 'CategoricalLegend',
8037
+ title: viewSpec.label,
8038
+ items: [{
8039
+ label: 'Com dados',
8040
+ color: _resolvedColor
8041
+ }, {
8042
+ label: 'Sem dados',
8043
+ color: NO_DATA_COLOR
8044
+ }]
8045
+ }, {
8046
+ type: 'ProportionalSymbolLegend',
8047
+ unit: viewSpec.measure_unit,
8048
+ title: viewSpec.label,
8049
+ min: Math.min.apply(Math, _toConsumableArray(_values)),
8050
+ max: Math.max.apply(Math, _toConsumableArray(_values)),
8051
+ sizeMin: SIZE_MIN * 2,
8052
+ sizeMax: SIZE_MAX * 2,
8053
+ numberFormat: ['pt-BR', {
8054
+ maximumFractionDigits: 0
8055
+ }]
8056
+ }];
8057
+ });
8058
+ return _legends;
8059
+ }
8060
+ function _main_circle(props, viewSpec, allViewSpecs, context) {
8061
+ _objectDestructuringEmpty(props);
8062
+ var source_layer = viewSpec.source_layer;
8063
+ return {
8064
+ zIndex: Z_OVERLAY_BASE_1000,
8065
+ source: MAIN_SOURCE_ID,
8066
+ 'source-layer': source_layer,
8067
+ interactive: true,
8068
+ type: 'circle',
8069
+ // 'circle-sort-key': resolve.fn((ctx) => {
8070
+ // if (!viewSpec.style.radius?.valueKey) {
8071
+ // return 0
8072
+ // }
8073
+
8074
+ // return ['coalesce', ['get', viewSpec.style.radius.valueKey], 0]
8075
+ // }),
8076
+ paint: {
8077
+ 'circle-color': resolve.fn(function (ctx) {
8078
+ var _viewSpec$style2, _viewSpec$style3;
8079
+ var _resolvedColor = resolveColor((_viewSpec$style2 = viewSpec.style) === null || _viewSpec$style2 === void 0 ? void 0 : _viewSpec$style2.color) || schemeGeoReDUS.laranja;
8080
+ if ((_viewSpec$style3 = viewSpec.style) !== null && _viewSpec$style3 !== void 0 && (_viewSpec$style3 = _viewSpec$style3.radius) !== null && _viewSpec$style3 !== void 0 && _viewSpec$style3.valueKey) {
8081
+ var _viewSpec$style4;
8082
+ return ['case', ['==', ['typeof', ['get', (_viewSpec$style4 = viewSpec.style) === null || _viewSpec$style4 === void 0 || (_viewSpec$style4 = _viewSpec$style4.radius) === null || _viewSpec$style4 === void 0 ? void 0 : _viewSpec$style4.valueKey]], 'number'], _resolvedColor, NO_DATA_COLOR];
8083
+ } else {
8084
+ return _resolvedColor;
8085
+ }
8086
+ }),
8087
+ 'circle-opacity': 1,
8088
+ 'circle-radius': resolve.fn(function (ctx) {
8089
+ var _viewSpec$style$radiu, _viewSpec$style5;
8090
+ if (!((_viewSpec$style$radiu = viewSpec.style.radius) !== null && _viewSpec$style$radiu !== void 0 && _viewSpec$style$radiu.valueKey)) {
8091
+ return 10;
8092
+ }
8093
+ var values = _validNumericalValues(ctx.view.metadata.radiusData.values);
8094
+ return zoomSensitiveLinearSizes({
8095
+ variable: ['get', (_viewSpec$style5 = viewSpec.style) === null || _viewSpec$style5 === void 0 || (_viewSpec$style5 = _viewSpec$style5.radius) === null || _viewSpec$style5 === void 0 ? void 0 : _viewSpec$style5.valueKey],
8096
+ minValue: Math.min.apply(Math, _toConsumableArray(values)),
8097
+ maxValue: Math.max.apply(Math, _toConsumableArray(values)),
8098
+ minSize: SIZE_MIN,
8099
+ maxSize: SIZE_MAX
8100
+ });
8101
+ })
8102
+ },
8103
+ legends: _main_circle_legends(props, viewSpec),
8104
+ tooltip: basicTooltip(viewSpec.tooltip)
8105
+ };
8106
+ }
8107
+ function layers(viewSpec, allViewSpecs, context) {
8108
+ var source_layer = viewSpec.source_layer;
8109
+ if (!source_layer) {
8110
+ throw new Error('source_layer must be defined');
8111
+ }
8112
+ return _defineProperty({}, "main_circle", _main_circle({}, viewSpec));
8113
+ }
8114
+
8115
+ function parseStyleSpec(styleInput) {
8116
+ return __assign({}, styleInput);
8117
+ }
8118
+
8119
+ function download(viewSpec, allViewSpecs, context) {
8120
+ return basicDownload({
8121
+ fileName: slugify(viewSpec.label),
8122
+ downloadUrl: interpolate(viewSpec.download_url || "", {
8123
+ METADATA_API_ENDPOINT: context.METADATA_API_ENDPOINT
8124
+ })
8125
+ });
8126
+ }
8127
+
8128
+ var _excluded$6 = ["style"];
8129
+ function vector_point_continuous(_ref, allViewSpecs, context) {
8130
+ var style = _ref.style,
8131
+ viewSpec = _objectWithoutProperties(_ref, _excluded$6);
8132
+ viewSpec = _objectSpread2(_objectSpread2({}, viewSpec), {}, {
8133
+ style: parseStyleSpec(style)
8134
+ });
8135
+ return _objectSpread2(_objectSpread2({}, pick(viewSpec, ['id', 'path', 'label', 'sourceLabel'])), {}, {
8136
+ // confSchema: confSchema(viewSpec, allViewSpecs, context),
8137
+ metadata: metadata(viewSpec, allViewSpecs, context),
8138
+ sources: sources(viewSpec, allViewSpecs, context),
8139
+ layers: layers(viewSpec),
8140
+ download: download(viewSpec, allViewSpecs, context)
8141
+ });
8142
+ }
8143
+
6517
8144
  var PRESETS = /*#__PURE__*/Object.freeze({
6518
8145
  __proto__: null,
6519
8146
  cem_censo_2010_2022: cem_censo_2010_2022,
@@ -6522,7 +8149,12 @@ var PRESETS = /*#__PURE__*/Object.freeze({
6522
8149
  cem_saude_2024: cem_saude_2024,
6523
8150
  vector_circle: vector_circle,
6524
8151
  vector_line: vector_line,
6525
- vector_polygon: vector_polygon
8152
+ vector_point_continuous: vector_point_continuous,
8153
+ vector_point_single: vector_point_single,
8154
+ vector_polygon: vector_polygon,
8155
+ vector_polygon_categorical: vector_polygon_categorical,
8156
+ vector_polygon_continuous: vector_polygon_continuous,
8157
+ vector_polygon_single: vector_polygon_single
6526
8158
  });
6527
8159
 
6528
8160
  function parseViewSpec(specInput, otherSpecInputs, context) {
@@ -6662,7 +8294,17 @@ function resolveConfSchema(viewSpec, partialView, viewResolutionContextBase) {
6662
8294
  });
6663
8295
  return resolveExpr(viewSpec.confSchema, resolveFinalContext);
6664
8296
  }
6665
- var resolveMetadata = _stageResolver('metadata');
8297
+ // export const resolveMetadata = _stageResolver<
8298
+ // Pick<ResolvedView, 'conf'>,
8299
+ // ResolvedView['metadata']
8300
+ // >('metadata')
8301
+ //Changed resolveMetadata to get sourceLabel from viewSpec
8302
+ var resolveMetadata = _stageResolver('metadata', function (metadata, _a) {
8303
+ var viewSpec = _a.viewSpec;
8304
+ return __assign(__assign({}, metadata), {
8305
+ sourceLabel: viewSpec.sourceLabel
8306
+ });
8307
+ });
6666
8308
  var resolveSources = _stageResolver('sources');
6667
8309
  var resolveLayers = _stageResolver('layers', function (layersBase, _a) {
6668
8310
  //
@@ -7133,8 +8775,8 @@ function br_divisao_territorial_views(conf) {
7133
8775
  ];
7134
8776
  }
7135
8777
 
7136
- var _templateObject$6;
7137
- var StyledIframe = styled.iframe(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteral(["\n border: none;\n width: 100%;\n height: 100%;\n"])));
8778
+ var _templateObject$8;
8779
+ var StyledIframe = styled.iframe(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteral(["\n border: none;\n width: 100%;\n height: 100%;\n"])));
7138
8780
  function DocumentIframe(_ref) {
7139
8781
  var src = _ref.src;
7140
8782
  return /*#__PURE__*/React.createElement(AspectRatio, {
@@ -7595,8 +9237,8 @@ function overture_places_poc(_ref) {
7595
9237
  };
7596
9238
  }
7597
9239
 
7598
- var _templateObject$5, _templateObject2$3;
7599
- var AutoWrapContainer = styled.div(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteral(["\n display: flex;\n direction: row;\n flex-wrap: wrap;\n margin-left: -10px;\n margin-top: -10px;\n\n > * {\n margin-left: 10px;\n margin-top: 10px;\n }\n"])));
9240
+ var _templateObject$7, _templateObject2$3;
9241
+ var AutoWrapContainer = styled.div(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteral(["\n display: flex;\n direction: row;\n flex-wrap: wrap;\n margin-left: -10px;\n margin-top: -10px;\n\n > * {\n margin-left: 10px;\n margin-top: 10px;\n }\n"])));
7600
9242
  var UnstyledList = styled.ul(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteral(["\n margin: 0;\n"])));
7601
9243
  var REDUS_MUTIRAO_COP_2025_ID = 'redus_mutirao_cop_2025.geom';
7602
9244
  var URL_RE = /^https?:\/\//;
@@ -8300,7 +9942,12 @@ var index = /*#__PURE__*/Object.freeze({
8300
9942
  temperatura_superficie: temperatura_superficie,
8301
9943
  vector_circle: vector_circle,
8302
9944
  vector_line: vector_line,
8303
- vector_polygon: vector_polygon
9945
+ vector_point_continuous: vector_point_continuous,
9946
+ vector_point_single: vector_point_single,
9947
+ vector_polygon: vector_polygon,
9948
+ vector_polygon_categorical: vector_polygon_categorical,
9949
+ vector_polygon_continuous: vector_polygon_continuous,
9950
+ vector_polygon_single: vector_polygon_single
8304
9951
  });
8305
9952
 
8306
9953
  var CollapsibleContent_slideDown = keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n"], ["\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n"])));
@@ -8540,8 +10187,8 @@ function ViewConfTabs(_ref) {
8540
10187
  }
8541
10188
 
8542
10189
  var _excluded$4 = ["textSearch", "content", "maxLines"];
8543
- var _templateObject$4, _templateObject2$2;
8544
- var Container$1 = styled(Box)(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n --view-control-base-padding: 12px;\n box-shadow:\n rgba(0, 0, 0, 0.12) 0px 1px 3px,\n rgba(0, 0, 0, 0.24) 0px 1px 2px;\n\n border-radius: 2px;\n background-color: var(--redus-bege, white);\n // background-color: var(--accent-4, white);\n"])));
10190
+ var _templateObject$6, _templateObject2$2;
10191
+ var Container$1 = styled(Box)(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteral(["\n --view-control-base-padding: 12px;\n box-shadow:\n rgba(0, 0, 0, 0.12) 0px 1px 3px,\n rgba(0, 0, 0, 0.24) 0px 1px 2px;\n\n border-radius: 2px;\n background-color: var(--redus-bege, white);\n // background-color: var(--accent-4, white);\n"])));
8545
10192
  var Summary = styled.div(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral(["\n // background-color: var(--redus-bege, white);\n background-color: ", ";\n padding: 0;\n\n transition: background-color 0.1s ease-out;\n\n display: flex;\n border: none;\n text-align: left;\n width: 100%;\n\n cursor: pointer;\n\n &:hover {\n // background-color: color-mix(in srgb, var(--redus-bege) 80%, white);\n background-color: ", ";\n }\n\n &:active {\n filter: brightness(96%);\n }\n"])), function (_ref) {
8546
10193
  var $active = _ref.$active;
8547
10194
  return $active ? 'var(--redus-bege, white)' : 'var(--accent-2)';
@@ -8691,7 +10338,7 @@ function ViewControl(_ref8) {
8691
10338
  }
8692
10339
 
8693
10340
  var _excluded$3 = ["viewSpecs", "viewConfState", "resolvedViews", "onSetView", "onDeactivateView", "style", "categoryIcons"];
8694
- var _templateObject$3, _templateObject2$1;
10341
+ var _templateObject$5, _templateObject2$1;
8695
10342
  var CATEGORY_ICONS = {
8696
10343
  'populacao-e-domicilios': /*#__PURE__*/React$1.createElement(Icon, {
8697
10344
  path: mdiAccountGroup
@@ -8720,7 +10367,7 @@ var ViewMenuContext = /*#__PURE__*/createContext({
8720
10367
  onSetView: errNoViewMenuContext,
8721
10368
  onDeactivateView: errNoViewMenuContext
8722
10369
  });
8723
- var ActiveCounter = styled.div(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(-30%, -30%);\n border-radius: 50%;\n border: 1px solid white;\n height: 20px;\n width: 20px;\n font-size: 12px;\n background-color: var(--accent-9);\n color: white;\n font-weight: bold;\n\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
10370
+ var ActiveCounter = styled.div(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(-30%, -30%);\n border-radius: 50%;\n border: 1px solid white;\n height: 20px;\n width: 20px;\n font-size: 12px;\n background-color: var(--accent-9);\n color: white;\n font-weight: bold;\n\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
8724
10371
  function Item(_ref) {
8725
10372
  var node = _ref.node;
8726
10373
  _ref.depth;
@@ -8880,6 +10527,76 @@ function ViewMenu(_ref4) {
8880
10527
  }, props))));
8881
10528
  }
8882
10529
 
10530
+ function GeoReDUSLogo(props) {
10531
+ var _props$color = props.color,
10532
+ color = _props$color === void 0 ? '#ffffff' : _props$color;
10533
+ return /*#__PURE__*/React$1.createElement("svg", {
10534
+ version: "1.1",
10535
+ id: "Layer_1",
10536
+ xmlns: "http://www.w3.org/2000/svg",
10537
+ x: "0px",
10538
+ y: "0px",
10539
+ viewBox: "0 0 419.41 149.65"
10540
+ }, /*#__PURE__*/React$1.createElement("g", null, /*#__PURE__*/React$1.createElement("g", null, /*#__PURE__*/React$1.createElement("path", {
10541
+ fill: color,
10542
+ d: "M182.02,70.21c-7.67,0-13.57-2.05-17.71-6.14c-4.14-4.09-6.21-10.45-6.21-19.06c0-5.73,0.99-10.45,2.98-14.16 c1.99-3.72,4.87-6.48,8.66-8.31c3.79-1.82,8.33-2.73,13.63-2.73c3.17,0,6.15,0.35,8.95,1.06s5.27,1.8,7.42,3.27 c2.15,1.47,3.83,3.3,5.04,5.5c1.21,2.2,1.81,4.82,1.81,7.85h-10.72c0-1.47-0.32-2.77-0.96-3.91c-0.64-1.14-1.53-2.08-2.66-2.84 c-1.14-0.76-2.44-1.32-3.9-1.7c-1.47-0.38-3.01-0.57-4.62-0.57c-2.46,0-4.61,0.32-6.46,0.96s-3.37,1.61-4.58,2.91 c-1.21,1.3-2.12,2.92-2.73,4.86c-0.62,1.94-0.92,4.19-0.92,6.75v2.13c0,3.55,0.52,6.46,1.56,8.73c1.04,2.27,2.6,3.96,4.69,5.08 c2.08,1.11,4.66,1.67,7.74,1.67c2.56,0,4.82-0.39,6.78-1.17c1.96-0.78,3.5-1.9,4.62-3.37c1.11-1.47,1.67-3.27,1.67-5.4v-0.5 h-14.56v-8.09h25.06v26.34h-6.96l-0.92-5.25c-1.42,1.37-2.95,2.51-4.58,3.41c-1.63,0.9-3.44,1.57-5.43,2.02 C186.7,69.99,184.48,70.21,182.02,70.21z"
10543
+ })), /*#__PURE__*/React$1.createElement("g", null, /*#__PURE__*/React$1.createElement("path", {
10544
+ fill: color,
10545
+ d: "M272.34,70.12c-3.84,0-7.1-0.66-9.78-1.98c-2.68-1.32-4.71-3.35-6.1-6.1c-1.38-2.75-2.08-6.2-2.08-10.35 c0-4.24,0.69-7.72,2.08-10.42c1.38-2.7,3.42-4.71,6.1-6.03c2.68-1.32,5.94-1.98,9.78-1.98c3.93,0,7.22,0.66,9.88,1.98 c2.66,1.32,4.68,3.33,6.06,6.03c1.38,2.7,2.08,6.18,2.08,10.42c0,4.15-0.69,7.6-2.08,10.35c-1.38,2.75-3.41,4.78-6.06,6.1 C279.56,69.46,276.27,70.12,272.34,70.12z M272.34,62.88c2.05,0,3.7-0.38,4.92-1.14c1.23-0.76,2.13-1.92,2.71-3.48 c0.58-1.56,0.87-3.48,0.87-5.76v-1.61c0-2.28-0.29-4.2-0.87-5.76c-0.58-1.56-1.49-2.74-2.71-3.52c-1.23-0.78-2.87-1.17-4.92-1.17 c-2.01,0-3.63,0.39-4.86,1.17c-1.23,0.78-2.13,1.95-2.71,3.52c-0.58,1.56-0.87,3.48-0.87,5.76v1.61c0,2.28,0.29,4.2,0.87,5.76 c0.58,1.56,1.48,2.73,2.71,3.48C268.71,62.5,270.33,62.88,272.34,62.88z"
10546
+ })), /*#__PURE__*/React$1.createElement("g", null, /*#__PURE__*/React$1.createElement("path", {
10547
+ fill: color,
10548
+ d: "M234.74,107.79c0-1.95-0.59-3.58-1.77-4.91c-1.18-1.33-3.02-1.99-5.53-1.99c-2.53,0-4.49,0.71-5.88,2.14 c-1.39,1.42-2.26,3.38-2.63,5.86l15.77-0.15C234.73,108.52,234.74,108.21,234.74,107.79L234.74,107.79z M236.92,95.29 c2.45,1.52,4.25,3.51,5.42,5.97c1.17,2.46,1.75,5.12,1.75,7.99c0,1.95-0.29,3.93-0.88,5.95l-23.98,0.18 c0.61,2.26,1.77,4.02,3.49,5.26c1.72,1.24,3.95,1.86,6.7,1.86c1.63,0,3.36-0.18,5.18-0.55c1.83-0.37,3.65-0.9,5.48-1.61l1.86,7.56 c-1.73,0.73-3.92,1.34-6.57,1.83c-2.65,0.49-5.06,0.73-7.23,0.73c-5.91,0-10.51-1.54-13.78-4.62c-3.27-3.08-4.91-7.82-4.91-14.22 c0-3.99,0.72-7.38,2.17-10.17c1.45-2.79,3.54-4.89,6.28-6.32c2.74-1.42,6.03-2.14,9.87-2.14 C231.42,93.01,234.47,93.77,236.92,95.29L236.92,95.29z"
10549
+ }), /*#__PURE__*/React$1.createElement("path", {
10550
+ fill: color,
10551
+ d: "M239.62,47.35c0-1.95-0.59-3.58-1.77-4.91c-1.18-1.33-3.02-1.99-5.53-1.99c-2.53,0-4.49,0.71-5.88,2.14 c-1.39,1.42-2.26,3.38-2.63,5.86l15.77-0.15C239.61,48.08,239.62,47.76,239.62,47.35L239.62,47.35z M241.8,34.84 c2.45,1.52,4.25,3.51,5.42,5.97c1.17,2.46,1.75,5.12,1.75,7.99c0,1.95-0.29,3.93-0.88,5.95l-23.98,0.18 c0.61,2.26,1.77,4.02,3.49,5.26c1.72,1.24,3.95,1.86,6.7,1.86c1.63,0,3.36-0.18,5.18-0.55c1.83-0.37,3.65-0.9,5.48-1.61l1.86,7.56 c-1.73,0.73-3.92,1.34-6.57,1.83c-2.65,0.49-5.06,0.73-7.23,0.73c-5.91,0-10.51-1.54-13.78-4.62c-3.27-3.08-4.91-7.82-4.91-14.22 c0-3.99,0.72-7.38,2.17-10.17c1.45-2.79,3.54-4.89,6.28-6.32c2.74-1.42,6.03-2.14,9.87-2.14C236.3,32.56,239.35,33.32,241.8,34.84 L241.8,34.84z"
10552
+ }), /*#__PURE__*/React$1.createElement("path", {
10553
+ fill: color,
10554
+ d: "M270.56,121.41c3.65,0,6.77-0.72,9.36-2.15c2.59-1.44,4.56-3.52,5.91-6.26c1.35-2.74,2.03-6.05,2.03-9.95 c0-5.91-1.43-10.33-4.29-13.23c-2.86-2.91-7.09-4.35-12.69-4.33l-8.4,0.07v35.85H270.56L270.56,121.41z M252.82,77.31h18.22 c8.83,0,15.5,2.09,20,6.28c4.5,4.19,6.75,10.6,6.75,19.24c0,5.45-1.13,10.19-3.39,14.22c-2.26,4.03-5.46,7.13-9.58,9.31 c-4.13,2.18-8.9,3.27-14.33,3.27l-17.67,0.07V77.31L252.82,77.31z"
10555
+ }), /*#__PURE__*/React$1.createElement("path", {
10556
+ fill: color,
10557
+ d: "M311.42,125.06c-3.37-3.63-5.06-8.88-5.06-15.77V77.27h9.71v31.36c0,8.81,3.84,13.22,11.54,13.22 c7.3,0,10.95-4.22,10.95-12.67V77.27h9.67v31.18c0,14.7-7.08,22.05-21.25,22.05C319.98,130.5,314.8,128.69,311.42,125.06 L311.42,125.06z"
10558
+ }), /*#__PURE__*/React$1.createElement("path", {
10559
+ fill: color,
10560
+ d: "M365.43,129.29c-2.51-0.66-5.38-1.74-8.62-3.25l3.36-8.62c2.85,1.44,5.24,2.42,7.19,2.96 c1.95,0.54,3.95,0.8,6.02,0.8c3.21,0,5.56-0.6,7.05-1.81c1.48-1.21,2.23-2.82,2.23-4.84c0-1.22-0.41-2.26-1.22-3.14 c-0.82-0.88-1.84-1.61-3.07-2.19c-1.23-0.58-2.96-1.3-5.2-2.15c-3.12-1.17-5.66-2.28-7.63-3.34c-1.97-1.06-3.66-2.55-5.06-4.47 c-1.4-1.92-2.1-4.37-2.1-7.34c0-3.46,0.85-6.34,2.56-8.65c1.7-2.31,3.95-4.01,6.75-5.09c2.8-1.08,5.89-1.62,9.27-1.62 c2.46,0,4.77,0.24,6.94,0.71c2.17,0.47,4.31,1.14,6.42,1.99l-3.1,8.4l-0.91-0.33c-1.51-0.58-2.92-1.03-4.23-1.35 c-1.31-0.32-2.9-0.47-4.75-0.47c-2.39,0-4.42,0.47-6.1,1.42c-1.68,0.95-2.52,2.43-2.52,4.45c0,1.05,0.36,1.96,1.08,2.74 c0.72,0.78,1.63,1.44,2.74,1.99c1.11,0.55,2.66,1.21,4.65,1.99c3.09,1.24,5.63,2.42,7.63,3.54c1.99,1.12,3.71,2.72,5.15,4.8 c1.44,2.08,2.15,4.72,2.15,7.9c0,3.26-0.74,6.09-2.21,8.49c-1.47,2.4-3.61,4.24-6.41,5.53c-2.8,1.29-6.17,1.93-10.11,1.93 C370.59,130.28,367.94,129.95,365.43,129.29L365.43,129.29z"
10561
+ }), /*#__PURE__*/React$1.createElement("path", {
10562
+ fill: color,
10563
+ d: "M191.16,105.78c3.07-1.17,5.48-2.91,7.25-5.24c1.76-2.32,2.66-5.08,2.68-8.27c0-3.21-0.71-5.94-2.12-8.18 c-1.41-2.24-3.41-3.94-6.01-5.09c-2.59-1.16-5.63-1.73-9.11-1.73h-18.47v52.35h9.71l-0.03-12.18l-0.01-32.65l5.99-0.04 c3.19-0.05,5.64,0.62,7.36,1.99c1.72,1.37,2.57,3.43,2.57,6.15c0,2.7-0.94,4.78-2.83,6.22c-1.77,1.36-4.22,2.08-7.32,2.16h-0.14 v5.79l14.52,22.56h11.57L191.16,105.78L191.16,105.78z"
10564
+ }), /*#__PURE__*/React$1.createElement("path", {
10565
+ fill: color,
10566
+ d: "M90.31,32.32l-3.1-0.07c0.06-2.71-0.94-5.28-2.81-7.23c-1.87-1.96-4.39-3.07-7.1-3.13l0.07-3.1 c3.54,0.08,6.83,1.53,9.27,4.08C89.08,25.43,90.38,28.78,90.31,32.32L90.31,32.32z"
10567
+ }), /*#__PURE__*/React$1.createElement("path", {
10568
+ fill: color,
10569
+ d: "M98.65,32.5l-3.1-0.07c0.22-10.18-7.88-18.65-18.07-18.87l0.07-3.1C89.45,10.72,98.91,20.6,98.65,32.5 L98.65,32.5z"
10570
+ }), /*#__PURE__*/React$1.createElement("path", {
10571
+ fill: color,
10572
+ d: "M76.98,35.82c2.47,0.05,4.51-1.9,4.56-4.37c0.05-2.47-1.9-4.51-4.37-4.56c-2.47-0.05-4.51,1.9-4.56,4.37 C72.56,33.73,74.51,35.77,76.98,35.82L76.98,35.82z"
10573
+ }), /*#__PURE__*/React$1.createElement("path", {
10574
+ fill: color,
10575
+ d: "M73.98,118.14c-3.84,0-6.97,3.13-6.97,6.97c0,3.84,3.13,6.97,6.97,6.97l0.23,0.02 c0.03,0.01,4.8,0.42,12.67-6.99c-7.86-7.49-12.62-6.99-12.67-6.98l-0.13,0.02L73.98,118.14L73.98,118.14z M74.44,135.2 c-0.24,0-0.43-0.01-0.55-0.03c-5.51-0.05-9.97-4.55-9.97-10.07c0-5.52,4.46-10.01,9.96-10.07c1.17-0.14,7.18-0.29,16.33,8.98 l1.08,1.1l-1.09,1.09C82.03,134.38,76.38,135.2,74.44,135.2L74.44,135.2z"
10576
+ }), /*#__PURE__*/React$1.createElement("path", {
10577
+ fill: color,
10578
+ d: "M77.22,80.53c3.15,0,5.71-2.56,5.71-5.71c0-3.15-2.56-5.71-5.71-5.71c-3.15,0-5.71,2.56-5.71,5.71 C71.51,77.98,74.06,80.53,77.22,80.53L77.22,80.53z"
10579
+ }), /*#__PURE__*/React$1.createElement("path", {
10580
+ fill: color,
10581
+ d: "M77.8,126.65c-23.03,0-41.76-18.73-41.76-41.76c0-23,18.7-41.71,41.69-41.71c23,0,41.71,18.71,41.71,41.71 h-3.1c0-21.29-17.32-38.61-38.61-38.61c-21.28,0-38.59,17.32-38.59,38.61c0,21.32,17.34,38.66,38.66,38.66V126.65L77.8,126.65z"
10582
+ }), /*#__PURE__*/React$1.createElement("path", {
10583
+ fill: color,
10584
+ d: "M77.71,139.79c-30.28,0-54.92-24.63-54.92-54.9c0-30.28,24.64-54.92,54.92-54.92v3.1 c-28.58,0-51.82,23.25-51.82,51.82c0,28.56,23.25,51.8,51.82,51.8c28.56,0,51.8-23.24,51.8-51.8h3.1 C132.6,115.16,107.98,139.79,77.71,139.79L77.71,139.79z"
10585
+ }), /*#__PURE__*/React$1.createElement("path", {
10586
+ fill: color,
10587
+ d: "M77.65,113.25c-4.64,0-8.27-1.37-10.8-4.07c-3.85-4.1-3.69-9.79-3.66-10.46v-6.47c0-4.73,3.85-8.57,8.57-8.57 h12.71c4.73,0,8.57,3.85,8.57,8.57l0,0.07c-0.01,0.11-0.7,11.23-15.96,11.23v-3.1c11.94,0,12.81-7.59,12.87-8.25 c-0.03-3-2.47-5.42-5.47-5.42H71.76c-3.02,0-5.47,2.46-5.47,5.47l0,6.61c0,0.05-0.25,4.94,2.84,8.22 c1.92,2.04,4.79,3.07,8.53,3.07c13.91,0,25.22-11.33,25.22-25.25c0-13.91-11.31-25.22-25.22-25.22 c-13.88,0-24.76,11.08-24.76,25.22h-3.1c0-15.88,12.24-28.32,27.86-28.32c15.62,0,28.32,12.7,28.32,28.32 C105.97,100.53,93.26,113.25,77.65,113.25L77.65,113.25z"
10588
+ }), /*#__PURE__*/React$1.createElement("path", {
10589
+ fill: color,
10590
+ d: "M131.1,66.21c-2.22,0-4.03-1.8-4.03-4.03c0-2.22,1.8-4.03,4.03-4.03c2.22,0,4.03,1.8,4.03,4.03 C135.12,64.41,133.32,66.21,131.1,66.21L131.1,66.21z M140.73,62.31c0-5.35-4.33-9.68-9.68-9.68c-5.35,0-9.68,4.33-9.68,9.68 c0,0-0.98,6.53,9.68,17.18C141.84,68.84,140.73,62.31,140.73,62.31L140.73,62.31z"
10591
+ }), /*#__PURE__*/React$1.createElement("polygon", {
10592
+ fill: color,
10593
+ points: "120.73,93.6 112.2,93.6 112.2,102.12 120.73,102.12 120.73,93.6 "
10594
+ }), /*#__PURE__*/React$1.createElement("polygon", {
10595
+ fill: color,
10596
+ points: "108.64,110.54 100.11,110.54 100.11,119.06 108.64,119.06 108.64,110.54 "
10597
+ }))));
10598
+ }
10599
+
8883
10600
  function GeoReDUSLogoSymbol() {
8884
10601
  var color = '#FFFFFF';
8885
10602
  return /*#__PURE__*/React$1.createElement("svg", {
@@ -9040,15 +10757,17 @@ function CopyToClipboardIconButton(_ref2) {
9040
10757
  }
9041
10758
 
9042
10759
  var _excluded$2 = ["url"];
9043
- var _templateObject$2;
9044
- var Container = styled(Flex)(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n > * {\n height: 32px;\n }\n"])));
10760
+ var _templateObject$4;
10761
+ var Container = styled(Flex)(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n > * {\n height: 32px;\n }\n"])));
9045
10762
  var ShareButtonBar = function ShareButtonBar(_ref) {
9046
10763
  var url = _ref.url,
9047
10764
  props = _objectWithoutProperties(_ref, _excluded$2);
9048
10765
  var _useLocation = useLocation(),
9049
10766
  href = _useLocation.href;
9050
10767
  var shareUrl = url ? url : href;
9051
- return /*#__PURE__*/React$1.createElement(Container, _extends({
10768
+ return /*#__PURE__*/React$1.createElement(Flex, {
10769
+ direction: "column"
10770
+ }, /*#__PURE__*/React$1.createElement(Text, null, "Compartilhar"), /*#__PURE__*/React$1.createElement(Container, _extends({
9052
10771
  direction: "row",
9053
10772
  gap: "3"
9054
10773
  }, props), /*#__PURE__*/React$1.createElement(CopyToClipboardIconButton, {
@@ -9083,49 +10802,751 @@ var ShareButtonBar = function ShareButtonBar(_ref) {
9083
10802
  }, /*#__PURE__*/React$1.createElement(WhatsappIcon, {
9084
10803
  size: 32,
9085
10804
  round: true
9086
- })));
10805
+ }))));
9087
10806
  };
9088
10807
 
9089
- //
9090
- // html2canvas does not support color functions
9091
- // radix uses: oklch and color(...)
9092
- //
9093
- // https://github.com/niklasvh/html2canvas/issues/2700
9094
- //
9095
- // import html2canvas from 'html2canvas-pro'
9096
- // import { useQuery } from '@tanstack/react-query'
10808
+ var SKY_STYLE = {
10809
+ 'sky-color': '#199EF3',
10810
+ 'sky-horizon-blend': 0.5,
10811
+ 'horizon-color': '#d3edfd',
10812
+ 'horizon-fog-blend': 0.5,
10813
+ 'fog-color': '#0000ff',
10814
+ 'fog-ground-blend': 0.5,
10815
+ 'atmosphere-blend': ['interpolate', ['linear'], ['zoom'], 0, 1, 10, 1, 12, 0]
10816
+ };
9097
10817
 
9098
- function SharePanel(_ref) {
9099
- _ref.syncedMapsRef;
9100
- _ref.mapContainerRef;
9101
- //
9102
- // Experimental image exporting
9103
- //
9104
- // const imageBlobQuery = useQuery({
9105
- // queryKey: ['a'],
9106
- // queryFn: async () => {
9107
- // // const canvas = await html2canvas(mapContainerRef.current)
9108
- // // const canvas = document.querySelector('canvas.maplibregl-canvas')
9109
- // const canvas = syncedMapsRef.current?.mapInstances?.[0].map.getCanvas()
9110
-
9111
- // return new Promise((resolve, reject) => {
9112
- // canvas.toBlob((blob) => {
9113
- // if (blob) {
9114
- // resolve(blob)
9115
- // } else {
9116
- // reject()
9117
- // }
9118
- // })
9119
- // })
9120
- // },
9121
- // retry: false,
9122
- // throwOnError: process.env.NODE_ENV !== 'production',
9123
- // })
10818
+ var _templateObject$3;
10819
+ var style = {
10820
+ border: 'none',
10821
+ borderRadius: '70px',
10822
+ backgroundColor: 'transparent'
10823
+ };
10824
+ var circleStyle = {
10825
+ border: '2px solid black',
10826
+ borderRadius: '70px',
10827
+ padding: '4px',
10828
+ width: '30px',
10829
+ height: '30px',
10830
+ cursor: 'pointer',
10831
+ display: 'flex',
10832
+ alignItems: 'center',
10833
+ justifyContent: 'center'
10834
+ };
10835
+ var ArrowIcon = styled(Icon)(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n transform: rotate(", "deg);\n"])), function (props) {
10836
+ return -props.bearing;
10837
+ });
10838
+
10839
+ /**
10840
+ * NorthArrow Control Component
10841
+ *
10842
+ * Displays a rotatable north arrow that syncs with the map's bearing.
10843
+ * Click to reset the map bearing to 0°.
10844
+ *
10845
+ * @param {Object} props
10846
+ * @param {string} [props.position='bottom-right'] - Position in MapLibre control bar
10847
+ * @param {React.CSSProperties} [props.style] - Additional styles for the container
10848
+ */
10849
+
10850
+ function NorthArrow(_ref) {
10851
+ var _ref$position = _ref.position,
10852
+ position = _ref$position === void 0 ? 'bottom-right' : _ref$position,
10853
+ className = _ref.className,
10854
+ _ref$hidden = _ref.hidden,
10855
+ hidden = _ref$hidden === void 0 ? false : _ref$hidden;
10856
+ var containerRef = useRef(null);
10857
+ var mapRef = useRef(null);
10858
+ var _useState = useState(null),
10859
+ _useState2 = _slicedToArray(_useState, 2),
10860
+ mountPoint = _useState2[0],
10861
+ setMountPoint = _useState2[1];
10862
+ var _useState3 = useState(0),
10863
+ _useState4 = _slicedToArray(_useState3, 2),
10864
+ bearing = _useState4[0],
10865
+ setBearing = _useState4[1];
10866
+ var mapContext = useMap();
10867
+
10868
+ // Register as a MapLibre control
10869
+ useControl(function () {
10870
+ var container = document.createElement('div');
10871
+ container.className = 'maplibregl-ctrl maplibregl-ctrl-group';
10872
+ var mount = document.createElement('div');
10873
+ container.appendChild(mount);
10874
+ containerRef.current = container;
10875
+ setMountPoint(mount);
10876
+ return {
10877
+ onAdd: function onAdd(map) {
10878
+ mapRef.current = map;
10879
+ return container;
10880
+ },
10881
+ onRemove: function onRemove() {
10882
+ if (containerRef.current) {
10883
+ containerRef.current.remove();
10884
+ }
10885
+ mapRef.current = null;
10886
+ }
10887
+ };
10888
+ }, {
10889
+ position: position
10890
+ });
10891
+
10892
+ // Listen to map bearing changes
10893
+ useEffect(function () {
10894
+ var _mapContext$current, _mapContext$current$g;
10895
+ var map = mapRef.current || (mapContext === null || mapContext === void 0 || (_mapContext$current = mapContext.current) === null || _mapContext$current === void 0 || (_mapContext$current$g = _mapContext$current.getMap) === null || _mapContext$current$g === void 0 ? void 0 : _mapContext$current$g.call(_mapContext$current));
10896
+ if (!map) return;
10897
+ var handleMove = function handleMove() {
10898
+ setBearing(map.getBearing());
10899
+ };
10900
+ setBearing(map.getBearing());
10901
+ map.on('move', handleMove);
10902
+ return function () {
10903
+ map.off('move', handleMove);
10904
+ };
10905
+ }, [mapContext]);
10906
+
10907
+ // Handle reset bearing on click
10908
+ var handleClick = function handleClick() {
10909
+ var _mapContext$current2, _mapContext$current2$;
10910
+ var map = mapRef.current || (mapContext === null || mapContext === void 0 || (_mapContext$current2 = mapContext.current) === null || _mapContext$current2 === void 0 || (_mapContext$current2$ = _mapContext$current2.getMap) === null || _mapContext$current2$ === void 0 ? void 0 : _mapContext$current2$.call(_mapContext$current2));
10911
+ if (map && map.getBearing() !== 0) {
10912
+ map.easeTo({
10913
+ bearing: 0
10914
+ });
10915
+ }
10916
+ };
10917
+ return mountPoint ? /*#__PURE__*/createPortal(/*#__PURE__*/React$1.createElement(ControlContainer, {
10918
+ onClick: handleClick,
10919
+ title: "Click to reset bearing to north",
10920
+ style: style,
10921
+ position: position
10922
+ }, /*#__PURE__*/React$1.createElement("div", {
10923
+ style: _objectSpread2(_objectSpread2({}, circleStyle), {}, {
10924
+ display: hidden ? 'none' : 'flex'
10925
+ }),
10926
+ className: className
10927
+ }, /*#__PURE__*/React$1.createElement(ArrowIcon, {
10928
+ path: mdiNavigation,
10929
+ size: "25px",
10930
+ bearing: bearing
10931
+ // style={{ marginTop: '3px' }}
10932
+ }))), mountPoint) : null;
10933
+ }
10934
+
10935
+ /**
10936
+ * Calculate all paper layout dimensions based on a given paper width
10937
+ * Uses A4 aspect ratio (1:√2) and derives all other constants
10938
+ *
10939
+ * @param {number} paperWidth - The width of the paper in pixels
10940
+ * @returns {Object} Object containing all calculated dimensions
10941
+ */
10942
+ function getPaperDimensions(paperWidth) {
10943
+ var PAPER_WIDTH = paperWidth;
10944
+ var PAPER_HEIGHT = Math.round(PAPER_WIDTH / Math.sqrt(2));
10945
+ var MARGIN = Math.round(PAPER_HEIGHT * 0.05);
10946
+ var PIXELRATIO = 4;
10947
+ var INSIDE_WIDTH = Math.round(PAPER_WIDTH - MARGIN * 2);
10948
+ var INSIDE_HEIGHT = Math.round(PAPER_HEIGHT - MARGIN * 2);
10949
+ var MAP_WIDTH = Math.round(INSIDE_WIDTH);
10950
+ var MAP_HEIGHT = Math.round(INSIDE_HEIGHT * 0.7 - MARGIN / 2);
10951
+ var BOTTOM_HEIGHT = Math.round(INSIDE_HEIGHT - MAP_HEIGHT - MARGIN / 2);
10952
+ var DESCRIPTION_WIDTH = Math.round(INSIDE_WIDTH * 0.25);
10953
+ var QRCODE_SIZE = Math.round(BOTTOM_HEIGHT);
10954
+ var MAPINFO_PADDING = Math.round(MARGIN * 0.4);
10955
+ var LOGO_HEIGHT = Math.round(MAP_HEIGHT * 0.15);
10956
+ var PROJECTION_HEIGHT = Math.round(MAP_HEIGHT * 0.1);
10957
+ var NORTH_SIZE = Math.round(PROJECTION_HEIGHT * 0.8);
10958
+ return {
10959
+ PAPER_WIDTH: PAPER_WIDTH,
10960
+ PAPER_HEIGHT: PAPER_HEIGHT,
10961
+ MARGIN: MARGIN,
10962
+ PIXELRATIO: PIXELRATIO,
10963
+ INSIDE_WIDTH: INSIDE_WIDTH,
10964
+ INSIDE_HEIGHT: INSIDE_HEIGHT,
10965
+ MAP_WIDTH: MAP_WIDTH,
10966
+ MAP_HEIGHT: MAP_HEIGHT,
10967
+ BOTTOM_HEIGHT: BOTTOM_HEIGHT,
10968
+ DESCRIPTION_WIDTH: DESCRIPTION_WIDTH,
10969
+ QRCODE_SIZE: QRCODE_SIZE,
10970
+ LOGO_HEIGHT: LOGO_HEIGHT,
10971
+ PROJECTION_HEIGHT: PROJECTION_HEIGHT,
10972
+ MAPINFO_PADDING: MAPINFO_PADDING,
10973
+ NORTH_SIZE: NORTH_SIZE
10974
+ };
10975
+ }
10976
+
10977
+ var PREVIEW_WIDTH_PX = 1200;
10978
+ var PAPER_WIDTH_PX = 3508;
10979
+
10980
+ var _getPaperDimensions$2 = getPaperDimensions(PAPER_WIDTH_PX),
10981
+ PIXELRATIO$2 = _getPaperDimensions$2.PIXELRATIO;
10982
+ var LEGEND_CLASS_NAME = 'LegendContainer';
10983
+ var IMAGE_DESCRIPTION_CLASS_NAME = 'ImageDescription';
10984
+ var QR_CODE_CLASS_NAME = 'QrCode';
10985
+ var LOGO_CLASS_NAME = 'Logo';
10986
+ var PROJECTION_CLASS_NAME = 'Projection';
10987
+ var NORTH_ARROW_CLASS_NAME = 'NorthArrow';
10988
+ var SCALE_CONTROL_CLASS_NAME = 'ScaleControl';
10989
+ function createBlob(_x, _x2) {
10990
+ return _createBlob.apply(this, arguments);
10991
+ }
10992
+ function _createBlob() {
10993
+ _createBlob = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(className, rootEl) {
10994
+ var backgroundColor,
10995
+ _args = arguments;
10996
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
10997
+ while (1) switch (_context.prev = _context.next) {
10998
+ case 0:
10999
+ backgroundColor = _args.length > 2 && _args[2] !== undefined ? _args[2] : '#ffffff';
11000
+ return _context.abrupt("return", toBlob(rootEl.querySelector(".".concat(className)), {
11001
+ cacheBust: true,
11002
+ pixelRatio: PIXELRATIO$2,
11003
+ fontEmbedCSS: false,
11004
+ backgroundColor: backgroundColor
11005
+ }));
11006
+ case 2:
11007
+ case "end":
11008
+ return _context.stop();
11009
+ }
11010
+ }, _callee);
11011
+ }));
11012
+ return _createBlob.apply(this, arguments);
11013
+ }
11014
+ function createScaleWrapper(map) {
11015
+ var scaleElement = map.getContainer().querySelector('.maplibregl-ctrl-scale');
11016
+ var scaleWrapper = document.createElement('div');
11017
+ scaleWrapper.style.padding = '0px';
11018
+ scaleWrapper.style.backgroundColor = 'transparent';
11019
+ scaleWrapper.style.display = 'block';
11020
+ scaleWrapper.style.position = 'relative';
11021
+ scaleWrapper.style.overflow = 'visible';
11022
+ var scaleClone = scaleElement.cloneNode(true);
11023
+ scaleClone.style.overflow = 'visible';
11024
+ // Force the internal SVG/lines to not be clipped
11025
+ scaleClone.style.position = 'relative';
11026
+ scaleWrapper.appendChild(scaleClone);
11027
+ document.body.appendChild(scaleWrapper);
11028
+ return scaleWrapper;
11029
+ }
11030
+
11031
+ // Extract all DOM elements to blobs FIRST (while DOM is visible)
11032
+ function extractMapImageBlobs(_x3) {
11033
+ return _extractMapImageBlobs.apply(this, arguments);
11034
+ }
11035
+ function _extractMapImageBlobs() {
11036
+ _extractMapImageBlobs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref) {
11037
+ var map, rootEl, blobLegend, blobDescription, blobQRCode, blobLogo, blobProjection, blobNorthArrow, scaleWrapper, blobScale;
11038
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
11039
+ while (1) switch (_context2.prev = _context2.next) {
11040
+ case 0:
11041
+ map = _ref.map, rootEl = _ref.rootEl;
11042
+ _context2.next = 3;
11043
+ return createBlob(LEGEND_CLASS_NAME, rootEl);
11044
+ case 3:
11045
+ blobLegend = _context2.sent;
11046
+ _context2.next = 6;
11047
+ return createBlob(IMAGE_DESCRIPTION_CLASS_NAME, rootEl);
11048
+ case 6:
11049
+ blobDescription = _context2.sent;
11050
+ _context2.next = 9;
11051
+ return createBlob(QR_CODE_CLASS_NAME, rootEl);
11052
+ case 9:
11053
+ blobQRCode = _context2.sent;
11054
+ _context2.next = 12;
11055
+ return createBlob(LOGO_CLASS_NAME, rootEl, 'transparent');
11056
+ case 12:
11057
+ blobLogo = _context2.sent;
11058
+ _context2.next = 15;
11059
+ return createBlob(PROJECTION_CLASS_NAME, rootEl, 'transparent');
11060
+ case 15:
11061
+ blobProjection = _context2.sent;
11062
+ _context2.next = 18;
11063
+ return createBlob(NORTH_ARROW_CLASS_NAME, rootEl, 'transparent');
11064
+ case 18:
11065
+ blobNorthArrow = _context2.sent;
11066
+ scaleWrapper = createScaleWrapper(map);
11067
+ _context2.next = 22;
11068
+ return toBlob(scaleWrapper, {
11069
+ cacheBust: true,
11070
+ pixelRatio: PIXELRATIO$2,
11071
+ fontEmbedCSS: false,
11072
+ backgroundColor: 'transparent'
11073
+ });
11074
+ case 22:
11075
+ blobScale = _context2.sent;
11076
+ document.body.removeChild(scaleWrapper);
11077
+ return _context2.abrupt("return", {
11078
+ mapCanvas: map.getCanvas(),
11079
+ blobLegend: blobLegend,
11080
+ blobDescription: blobDescription,
11081
+ blobQRCode: blobQRCode,
11082
+ blobLogo: blobLogo,
11083
+ blobProjection: blobProjection,
11084
+ blobNorthArrow: blobNorthArrow,
11085
+ blobScale: blobScale
11086
+ });
11087
+ case 25:
11088
+ case "end":
11089
+ return _context2.stop();
11090
+ }
11091
+ }, _callee2);
11092
+ }));
11093
+ return _extractMapImageBlobs.apply(this, arguments);
11094
+ }
11095
+
11096
+ var _getPaperDimensions$1 = getPaperDimensions(PAPER_WIDTH_PX),
11097
+ PAPER_WIDTH = _getPaperDimensions$1.PAPER_WIDTH,
11098
+ PAPER_HEIGHT = _getPaperDimensions$1.PAPER_HEIGHT,
11099
+ MARGIN$1 = _getPaperDimensions$1.MARGIN,
11100
+ PIXELRATIO$1 = _getPaperDimensions$1.PIXELRATIO,
11101
+ MAP_WIDTH$1 = _getPaperDimensions$1.MAP_WIDTH,
11102
+ MAP_HEIGHT$1 = _getPaperDimensions$1.MAP_HEIGHT,
11103
+ BOTTOM_HEIGHT$1 = _getPaperDimensions$1.BOTTOM_HEIGHT,
11104
+ DESCRIPTION_WIDTH$1 = _getPaperDimensions$1.DESCRIPTION_WIDTH,
11105
+ QRCODE_SIZE = _getPaperDimensions$1.QRCODE_SIZE,
11106
+ LOGO_HEIGHT = _getPaperDimensions$1.LOGO_HEIGHT,
11107
+ PROJECTION_HEIGHT = _getPaperDimensions$1.PROJECTION_HEIGHT,
11108
+ MAPINFO_PADDING = _getPaperDimensions$1.MAPINFO_PADDING,
11109
+ NORTH_SIZE = _getPaperDimensions$1.NORTH_SIZE;
11110
+ function createImg(blob) {
11111
+ return new Promise(function (resolve) {
11112
+ if (!blob) {
11113
+ resolve(null);
11114
+ return;
11115
+ }
11116
+ try {
11117
+ var img = new Image();
11118
+ img.onload = function () {
11119
+ return resolve(img);
11120
+ };
11121
+ img.onerror = function () {
11122
+ console.warn('Failed to load image');
11123
+ resolve(null);
11124
+ };
11125
+ img.src = URL.createObjectURL(blob);
11126
+ } catch (error) {
11127
+ console.error('Error creating image from blob:', error);
11128
+ resolve(null);
11129
+ }
11130
+ });
11131
+ }
11132
+ function roundRect(ctx, x, y, width, height, radius) {
11133
+ ctx.beginPath();
11134
+ ctx.moveTo(x + radius, y);
11135
+ ctx.lineTo(x + width - radius, y);
11136
+ ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
11137
+ ctx.lineTo(x + width, y + height - radius);
11138
+ ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
11139
+ ctx.lineTo(x + radius, y + height);
11140
+ ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
11141
+ ctx.lineTo(x, y + radius);
11142
+ ctx.quadraticCurveTo(x, y, x + radius, y);
11143
+ ctx.closePath();
11144
+ }
11145
+
11146
+ // Compose canvas AFTER (using already-extracted blobs)
11147
+ function composeMapImageCanvas(_x) {
11148
+ return _composeMapImageCanvas.apply(this, arguments);
11149
+ }
11150
+ function _composeMapImageCanvas() {
11151
+ _composeMapImageCanvas = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(extractedBlobs) {
11152
+ var mapCanvas, blobLegend, blobDescription, blobQRCode, blobLogo, blobProjection, blobNorthArrow, blobScale, combinedCanvas, ctx, projectionImg, northArrowImg, scaleImg, projectionPosX, projectionPosY, projectionWidth, northPadding, northPosX, northPosY, scaleX, scaleY, scalePadding, scalePosX, scalePosY, scaleWidth, scaleHeight, backgroundX, backgroundY, backgroundWidth, backgroundHeight, logoImg, logoScale, logoPosX, logoPosY, logoWidth, bottomStartY, descriptionImg, legendImg, legendScale, legendHeight, legendWidth, qrCodeImg;
11153
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
11154
+ while (1) switch (_context.prev = _context.next) {
11155
+ case 0:
11156
+ mapCanvas = extractedBlobs.mapCanvas, blobLegend = extractedBlobs.blobLegend, blobDescription = extractedBlobs.blobDescription, blobQRCode = extractedBlobs.blobQRCode, blobLogo = extractedBlobs.blobLogo, blobProjection = extractedBlobs.blobProjection, blobNorthArrow = extractedBlobs.blobNorthArrow, blobScale = extractedBlobs.blobScale; //0 - CREATE COMBINED CANVAS
11157
+ combinedCanvas = document.createElement('canvas');
11158
+ combinedCanvas.width = PAPER_WIDTH;
11159
+ combinedCanvas.height = PAPER_HEIGHT;
11160
+ ctx = combinedCanvas.getContext('2d'); // Fill background white
11161
+ ctx.fillStyle = '#ffffff';
11162
+ ctx.fillRect(0, 0, PAPER_WIDTH, PAPER_HEIGHT);
11163
+
11164
+ //1 - DRAW MAP ON CANVAS
11165
+ ctx.drawImage(mapCanvas, MARGIN$1, MARGIN$1, MAP_WIDTH$1, MAP_HEIGHT$1);
11166
+
11167
+ //2 - Draw Map Infos
11168
+ //2.1 - Create images from blobs (to get dimensions)
11169
+ _context.next = 10;
11170
+ return createImg(blobProjection);
11171
+ case 10:
11172
+ projectionImg = _context.sent;
11173
+ _context.next = 13;
11174
+ return createImg(blobNorthArrow);
11175
+ case 13:
11176
+ northArrowImg = _context.sent;
11177
+ _context.next = 16;
11178
+ return createImg(blobScale);
11179
+ case 16:
11180
+ scaleImg = _context.sent;
11181
+ projectionPosX = 0;
11182
+ projectionPosY = 0;
11183
+ projectionWidth = 0; //2.2 - Projection dimensions and position
11184
+ if (projectionImg && northArrowImg && scaleImg) {
11185
+ projectionPosX = MARGIN$1 + MAPINFO_PADDING;
11186
+ projectionPosY = MARGIN$1 + MAP_HEIGHT$1 - MAPINFO_PADDING - PROJECTION_HEIGHT;
11187
+ projectionWidth = Math.round(PROJECTION_HEIGHT * (projectionImg.width / projectionImg.height));
11188
+
11189
+ //2.3 - North dimensions and position (to the right of projection)
11190
+ northPadding = (PROJECTION_HEIGHT - NORTH_SIZE) / 2;
11191
+ northPosX = projectionPosX + projectionWidth + MAPINFO_PADDING;
11192
+ northPosY = projectionPosY + northPadding; //2.4 - Scale dimensions and position (below projection)
11193
+ scaleX = MAP_WIDTH$1 / mapCanvas.width;
11194
+ scaleY = MAP_HEIGHT$1 / mapCanvas.height;
11195
+ scalePadding = (PROJECTION_HEIGHT - scaleImg.height * scaleY) / 2;
11196
+ scalePosX = northPosX + NORTH_SIZE + MAPINFO_PADDING;
11197
+ scalePosY = projectionPosY + scalePadding;
11198
+ scaleWidth = Math.round(scaleImg.width * scaleX);
11199
+ scaleHeight = Math.round(scaleImg.height * scaleY); //2.5 - Background dimensions and position
11200
+ backgroundX = MARGIN$1 + MAPINFO_PADDING;
11201
+ backgroundY = projectionPosY;
11202
+ backgroundWidth = projectionWidth + NORTH_SIZE + scaleWidth / (PIXELRATIO$1 * PIXELRATIO$1) + 2 * MAPINFO_PADDING;
11203
+ backgroundHeight = PROJECTION_HEIGHT; //2.6 - Draw Map Info background
11204
+ ctx.fillStyle = '#ffffff80';
11205
+ roundRect(ctx, backgroundX, backgroundY, backgroundWidth, backgroundHeight, MAPINFO_PADDING / 2);
11206
+ ctx.fill();
11207
+
11208
+ //2.7 - Draw Map Infos
11209
+ ctx.drawImage(projectionImg, projectionPosX, projectionPosY, projectionWidth, PROJECTION_HEIGHT);
11210
+ ctx.drawImage(northArrowImg, northPosX, northPosY, NORTH_SIZE, NORTH_SIZE);
11211
+ ctx.drawImage(scaleImg, scalePosX, scalePosY, scaleWidth, scaleHeight);
11212
+ }
11213
+
11214
+ //3 - Draw logo on bottom left of map
11215
+ _context.next = 23;
11216
+ return createImg(blobLogo);
11217
+ case 23:
11218
+ logoImg = _context.sent;
11219
+ if (logoImg) {
11220
+ logoScale = logoImg.width / logoImg.height;
11221
+ logoPosX = MARGIN$1 + MAPINFO_PADDING;
11222
+ logoPosY = projectionPosY - MAPINFO_PADDING - LOGO_HEIGHT;
11223
+ logoWidth = Math.round(LOGO_HEIGHT * logoScale);
11224
+ ctx.fillStyle = '#ffffff80';
11225
+ roundRect(ctx, logoPosX, logoPosY, logoWidth, LOGO_HEIGHT, MAPINFO_PADDING / 2);
11226
+ ctx.fill();
11227
+ ctx.drawImage(logoImg, logoPosX, logoPosY, logoWidth, LOGO_HEIGHT);
11228
+ }
11229
+
11230
+ //3 - Calculate positions for bottom section elements and scale
11231
+ bottomStartY = MAP_HEIGHT$1 + MARGIN$1 * 1.5; //4 - DRAW DESCRIPTION
11232
+ _context.next = 28;
11233
+ return createImg(blobDescription);
11234
+ case 28:
11235
+ descriptionImg = _context.sent;
11236
+ if (descriptionImg) {
11237
+ ctx.drawImage(descriptionImg, MARGIN$1, bottomStartY, DESCRIPTION_WIDTH$1, BOTTOM_HEIGHT$1);
11238
+ }
11239
+
11240
+ //5 - DRAW LEGEND
11241
+ _context.next = 32;
11242
+ return createImg(blobLegend);
11243
+ case 32:
11244
+ legendImg = _context.sent;
11245
+ if (legendImg) {
11246
+ legendScale = legendImg.width / legendImg.height;
11247
+ legendHeight = BOTTOM_HEIGHT$1;
11248
+ legendWidth = legendHeight * legendScale;
11249
+ ctx.drawImage(legendImg, MARGIN$1 * 1.5 + DESCRIPTION_WIDTH$1, bottomStartY, legendWidth, legendHeight);
11250
+ }
11251
+
11252
+ //6 - DRAW QR CODE
11253
+ _context.next = 36;
11254
+ return createImg(blobQRCode);
11255
+ case 36:
11256
+ qrCodeImg = _context.sent;
11257
+ if (qrCodeImg) {
11258
+ ctx.drawImage(qrCodeImg, PAPER_WIDTH - MARGIN$1 - QRCODE_SIZE, PAPER_HEIGHT - MARGIN$1 - QRCODE_SIZE, QRCODE_SIZE, QRCODE_SIZE);
11259
+ }
11260
+ return _context.abrupt("return", new Promise(function (resolve) {
11261
+ combinedCanvas.toBlob(function (blob) {
11262
+ resolve(blob);
11263
+ });
11264
+ }));
11265
+ case 39:
11266
+ case "end":
11267
+ return _context.stop();
11268
+ }
11269
+ }, _callee);
11270
+ }));
11271
+ return _composeMapImageCanvas.apply(this, arguments);
11272
+ }
11273
+
11274
+ var _templateObject$2;
11275
+ var LegendContainer$1 = styled(Flex)(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n flex-wrap: wrap;\n background-color: white;\n border: none;\n box-shadow: none;\n"])));
11276
+ var _getPaperDimensions = getPaperDimensions(PREVIEW_WIDTH_PX),
11277
+ MARGIN = _getPaperDimensions.MARGIN,
11278
+ PIXELRATIO = _getPaperDimensions.PIXELRATIO,
11279
+ INSIDE_WIDTH = _getPaperDimensions.INSIDE_WIDTH,
11280
+ MAP_WIDTH = _getPaperDimensions.MAP_WIDTH,
11281
+ MAP_HEIGHT = _getPaperDimensions.MAP_HEIGHT,
11282
+ BOTTOM_HEIGHT = _getPaperDimensions.BOTTOM_HEIGHT,
11283
+ DESCRIPTION_WIDTH = _getPaperDimensions.DESCRIPTION_WIDTH;
11284
+ var ExportImage = /*#__PURE__*/forwardRef(function ExportImage(_ref, ref) {
11285
+ var _resolvedLayout$, _resolvedLayout$2, _layeredMapRef$curren, _resolvedLayout$3;
11286
+ var resolvedLayout = _ref.resolvedLayout,
11287
+ commitedViewState = _ref.commitedViewState,
11288
+ municipioId = _ref.municipioId,
11289
+ METADATA_API_ENDPOINT = _ref.METADATA_API_ENDPOINT,
11290
+ baseMapStyle = _ref.baseMapStyle,
11291
+ topViews = _ref.topViews;
11292
+ ExportImage.displayName = 'ExportImage';
11293
+ var dialogs = useDialogs();
11294
+ var rootRef = useRef(null);
11295
+ var layeredMapRef = useRef(null);
11296
+ var legends = (resolvedLayout === null || resolvedLayout === void 0 || (_resolvedLayout$ = resolvedLayout[0]) === null || _resolvedLayout$ === void 0 ? void 0 : _resolvedLayout$.legends) || [];
11297
+ var _useLocation = useLocation(),
11298
+ href = _useLocation.href;
11299
+
11300
+ //Retrieve municipality data
11301
+ var _useState = useState(null),
11302
+ _useState2 = _slicedToArray(_useState, 2),
11303
+ munName = _useState2[0],
11304
+ setMunName = _useState2[1];
11305
+ var _useState3 = useState(null),
11306
+ _useState4 = _slicedToArray(_useState3, 2),
11307
+ ufSigla = _useState4[0],
11308
+ setUfSigla = _useState4[1];
11309
+ useEffect(function () {
11310
+ var fetchMunicipalityData = /*#__PURE__*/function () {
11311
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
11312
+ var _yield$fetch$then, _yield$fetch$then2, mun;
11313
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
11314
+ while (1) switch (_context.prev = _context.next) {
11315
+ case 0:
11316
+ _context.next = 2;
11317
+ return fetch("".concat(METADATA_API_ENDPOINT, "/ibge_malha_br_municipio?select=nome,id,uf_sigla&id=eq.").concat(municipioId)).then(function (res) {
11318
+ return res.json();
11319
+ });
11320
+ case 2:
11321
+ _yield$fetch$then = _context.sent;
11322
+ _yield$fetch$then2 = _slicedToArray(_yield$fetch$then, 1);
11323
+ mun = _yield$fetch$then2[0];
11324
+ setMunName(mun.nome);
11325
+ setUfSigla(mun.uf_sigla);
11326
+ case 7:
11327
+ case "end":
11328
+ return _context.stop();
11329
+ }
11330
+ }, _callee);
11331
+ }));
11332
+ return function fetchMunicipalityData() {
11333
+ return _ref2.apply(this, arguments);
11334
+ };
11335
+ }();
11336
+ fetchMunicipalityData();
11337
+ }, [municipioId, METADATA_API_ENDPOINT]);
11338
+ var sourceLabels = uniq((resolvedLayout === null || resolvedLayout === void 0 || (_resolvedLayout$2 = resolvedLayout[0]) === null || _resolvedLayout$2 === void 0 || (_resolvedLayout$2 = _resolvedLayout$2.views) === null || _resolvedLayout$2 === void 0 ? void 0 : _resolvedLayout$2.map(function (view) {
11339
+ return view.metadata.sourceLabel || '';
11340
+ }).filter(Boolean)) || []).join(' + ') || '';
11341
+ var createImg = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
11342
+ var imageCanva;
11343
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
11344
+ while (1) switch (_context3.prev = _context3.next) {
11345
+ case 0:
11346
+ _context3.next = 2;
11347
+ return dialogs.loading(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
11348
+ var extractedBlobs;
11349
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
11350
+ while (1) switch (_context2.prev = _context2.next) {
11351
+ case 0:
11352
+ _context2.next = 2;
11353
+ return extractMapImageBlobs({
11354
+ map: layeredMapRef.current.map,
11355
+ rootEl: rootRef.current
11356
+ });
11357
+ case 2:
11358
+ extractedBlobs = _context2.sent;
11359
+ return _context2.abrupt("return", composeMapImageCanvas(extractedBlobs));
11360
+ case 4:
11361
+ case "end":
11362
+ return _context2.stop();
11363
+ }
11364
+ }, _callee2);
11365
+ })));
11366
+ case 2:
11367
+ imageCanva = _context3.sent;
11368
+ saveAs$1(imageCanva, "".concat(slugify(munName, '_'), "_georedus.png"));
11369
+ case 4:
11370
+ case "end":
11371
+ return _context3.stop();
11372
+ }
11373
+ }, _callee3);
11374
+ })), [dialogs, (_layeredMapRef$curren = layeredMapRef.current) === null || _layeredMapRef$curren === void 0 ? void 0 : _layeredMapRef$curren.map, rootRef.current]);
11375
+ useImperativeHandle(ref, function () {
11376
+ return {
11377
+ createImg: createImg
11378
+ };
11379
+ }, [createImg]);
11380
+ function ImageDescription() {
11381
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Flex, {
11382
+ direction: "column",
11383
+ width: "".concat(DESCRIPTION_WIDTH, "px"),
11384
+ className: IMAGE_DESCRIPTION_CLASS_NAME
11385
+ }, /*#__PURE__*/React.createElement(Flex, {
11386
+ height: "100%",
11387
+ wrap: "wrap",
11388
+ gap: "2"
11389
+ }, /*#__PURE__*/React.createElement(Heading, {
11390
+ size: "4",
11391
+ color: "iris"
11392
+ }, munName, " - ", ufSigla, " / BR"), /*#__PURE__*/React.createElement(Heading, {
11393
+ size: "2",
11394
+ color: "iris"
11395
+ }, new Date().toLocaleDateString('pt-BR', {
11396
+ year: 'numeric',
11397
+ month: '2-digit',
11398
+ day: '2-digit'
11399
+ }).replace(/\//g, '.')), /*#__PURE__*/React.createElement(Text, {
11400
+ size: "2"
11401
+ }, /*#__PURE__*/React.createElement(Strong, null, "Fonte de dados: "), sourceLabels || ''), /*#__PURE__*/React.createElement(Text, {
11402
+ size: "2"
11403
+ }, /*#__PURE__*/React.createElement(Strong, null, "Outros dados: "), "\xA9 MapTiler | \xA9 OpenStreetMap contributors")), /*#__PURE__*/React.createElement(Flex, null, /*#__PURE__*/React.createElement("img", {
11404
+ style: {
11405
+ height: 33,
11406
+ width: 'auto'
11407
+ },
11408
+ src: "/georedus/assets/parcerias.png"
11409
+ }))));
11410
+ }
11411
+ return /*#__PURE__*/React.createElement(Flex, {
11412
+ direction: "column",
11413
+ ref: rootRef
11414
+ }, /*#__PURE__*/React.createElement(LayeredMap, {
11415
+ ref: layeredMapRef,
11416
+ sky: SKY_STYLE,
11417
+ maxPitch: 80,
11418
+ pixelRatio: PIXELRATIO,
11419
+ attributionControl: false,
11420
+ mapStyle: baseMapStyle,
11421
+ views: [].concat(_toConsumableArray(((resolvedLayout === null || resolvedLayout === void 0 || (_resolvedLayout$3 = resolvedLayout[0]) === null || _resolvedLayout$3 === void 0 ? void 0 : _resolvedLayout$3.views) || []).reverse()), _toConsumableArray(topViews || [])),
11422
+ initialViewState: commitedViewState,
11423
+ style: {
11424
+ height: "".concat(MAP_HEIGHT, "px"),
11425
+ width: "".concat(MAP_WIDTH, "px"),
11426
+ marginTop: '0'
11427
+ },
11428
+ canvasContextAttributes: {
11429
+ preserveDrawingBuffer: true
11430
+ }
11431
+ }, /*#__PURE__*/React.createElement(ControlContainer, {
11432
+ position: "bottom-left",
11433
+ style: {
11434
+ boxShadow: 'none',
11435
+ backgroundColor: '#ffffffd9',
11436
+ borderRadius: '10px'
11437
+ }
11438
+ }, /*#__PURE__*/React.createElement(Flex, {
11439
+ width: "150",
11440
+ p: "2",
11441
+ className: LOGO_CLASS_NAME
11442
+ }, /*#__PURE__*/React.createElement(GeoReDUSLogo, {
11443
+ color: "#384DA0"
11444
+ }))), /*#__PURE__*/React.createElement(AttributionControl, {
11445
+ position: "bottom-right",
11446
+ compact: false
11447
+ }), /*#__PURE__*/React.createElement(ControlContainer //tirar north arrow dentro do container
11448
+ , {
11449
+ position: "bottom-left",
11450
+ style: {
11451
+ boxShadow: 'none',
11452
+ backgroundColor: 'transparent',
11453
+ borderRadius: '10px'
11454
+ }
11455
+ }, /*#__PURE__*/React.createElement(Flex, {
11456
+ p: "2",
11457
+ className: PROJECTION_CLASS_NAME,
11458
+ width: "fit-content"
11459
+ }, /*#__PURE__*/React.createElement(Text, {
11460
+ weight: "bold"
11461
+ }, "Proje\xE7\xE3o universal "), /*#__PURE__*/React.createElement(Text, {
11462
+ style: {
11463
+ marginTop: 0
11464
+ }
11465
+ }, "Mercator (EPSG:3857)"))), /*#__PURE__*/React.createElement(NorthArrow, {
11466
+ position: "bottom-left",
11467
+ animationDuration: 300,
11468
+ className: NORTH_ARROW_CLASS_NAME
11469
+ }), /*#__PURE__*/React.createElement(ScaleControl, {
11470
+ position: "bottom-left",
11471
+ className: SCALE_CONTROL_CLASS_NAME
11472
+ })), /*#__PURE__*/React.createElement(Flex, null), /*#__PURE__*/React.createElement(Flex, {
11473
+ direction: "row",
11474
+ width: "".concat(INSIDE_WIDTH, "px"),
11475
+ height: "".concat(BOTTOM_HEIGHT, "px"),
11476
+ style: {
11477
+ justifyContent: 'space-between',
11478
+ marginTop: "".concat(MARGIN, "px !important")
11479
+ }
11480
+ }, /*#__PURE__*/React.createElement(ImageDescription, null), /*#__PURE__*/React.createElement(LegendContainer$1, {
11481
+ className: LEGEND_CLASS_NAME,
11482
+ direction: "column",
11483
+ gap: "3",
11484
+ p: "0",
11485
+ style: {
11486
+ margin: '0 !important'
11487
+ }
11488
+ }, legends.filter(function (legend) {
11489
+ return legend === null || legend === void 0 ? void 0 : legend.type;
11490
+ }).map(function (legend, i) {
11491
+ return /*#__PURE__*/React.createElement(Legend, _extends({
11492
+ key: legend.id || "".concat(legend.type, "-").concat(i)
11493
+ }, legend, {
11494
+ style: {
11495
+ marginTop: '0 !important',
11496
+ marginBottom: '10px',
11497
+ fontSize: '8px !important'
11498
+ }
11499
+ }));
11500
+ })), /*#__PURE__*/React.createElement(Flex, {
11501
+ style: {
11502
+ alignItems: 'end'
11503
+ }
11504
+ }, /*#__PURE__*/React.createElement(QRCode, {
11505
+ value: href,
11506
+ className: QR_CODE_CLASS_NAME
11507
+ }))));
11508
+ });
9124
11509
 
9125
- return /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement(Dialog.Title, null, "Compartilhar"), /*#__PURE__*/React$1.createElement(Flex, {
11510
+ function SharePanel(_ref) {
11511
+ var resolvedLayout = _ref.resolvedLayout,
11512
+ commitedViewState = _ref.commitedViewState,
11513
+ municipioId = _ref.municipioId,
11514
+ METADATA_API_ENDPOINT = _ref.METADATA_API_ENDPOINT,
11515
+ baseMapStyle = _ref.baseMapStyle,
11516
+ topViews = _ref.topViews;
11517
+ var exportImageRef = useRef();
11518
+ var handleExportClick = function handleExportClick() {
11519
+ var _exportImageRef$curre;
11520
+ (_exportImageRef$curre = exportImageRef.current) === null || _exportImageRef$curre === void 0 || _exportImageRef$curre.createImg();
11521
+ };
11522
+ return /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement(Flex, {
11523
+ direction: "column",
11524
+ gap: "1",
11525
+ alignItems: "center"
11526
+ }, /*#__PURE__*/React$1.createElement(ExportImage, {
11527
+ ref: exportImageRef,
11528
+ resolvedLayout: resolvedLayout,
11529
+ commitedViewState: commitedViewState,
11530
+ municipioId: municipioId,
11531
+ METADATA_API_ENDPOINT: METADATA_API_ENDPOINT,
11532
+ baseMapStyle: baseMapStyle,
11533
+ topViews: topViews
11534
+ }), /*#__PURE__*/React$1.createElement(Flex, {
9126
11535
  direction: "row",
9127
- gap: "4"
9128
- }, /*#__PURE__*/React$1.createElement(ShareButtonBar, null)));
11536
+ alignItems: "end",
11537
+ justifyContent: "space-between",
11538
+ width: "100%",
11539
+ pt: "4"
11540
+ }, /*#__PURE__*/React$1.createElement(ShareButtonBar, null), /*#__PURE__*/React$1.createElement(Button, {
11541
+ onClick: handleExportClick,
11542
+ style: {
11543
+ marginRight: '30px'
11544
+ },
11545
+ size: "2"
11546
+ }, /*#__PURE__*/React$1.createElement(Icon, {
11547
+ path: mdiDownload,
11548
+ size: "18px"
11549
+ }), "Baixar imagem"))));
9129
11550
  }
9130
11551
 
9131
11552
  var _templateObject$1;
@@ -9141,10 +11562,14 @@ function LeftPanelInner(_ref) {
9141
11562
  viewConfDispatch = _ref.viewConfDispatch,
9142
11563
  viewSpecs = _ref.viewSpecs,
9143
11564
  resolvedViews = _ref.resolvedViews,
11565
+ resolvedLayout = _ref.resolvedLayout,
9144
11566
  open = _ref.open,
9145
11567
  onSetOpen = _ref.onSetOpen,
9146
- syncedMapsRef = _ref.syncedMapsRef,
9147
- mapContainerRef = _ref.mapContainerRef,
11568
+ commitedViewState = _ref.commitedViewState,
11569
+ municipioId = _ref.municipioId,
11570
+ METADATA_API_ENDPOINT = _ref.METADATA_API_ENDPOINT,
11571
+ baseMapStyle = _ref.baseMapStyle,
11572
+ topViews = _ref.topViews,
9148
11573
  _ref$categoryIcons = _ref.categoryIcons,
9149
11574
  categoryIcons = _ref$categoryIcons === void 0 ? undefined : _ref$categoryIcons,
9150
11575
  _ref$header = _ref.header,
@@ -9157,6 +11582,7 @@ function LeftPanelInner(_ref) {
9157
11582
  py: "10px",
9158
11583
  height: HEADER_HEIGHT,
9159
11584
  alignItems: "center",
11585
+ justifyContent: "space-between",
9160
11586
  direction: "row",
9161
11587
  style: {
9162
11588
  backgroundColor: 'var(--accent-9)',
@@ -9172,7 +11598,57 @@ function LeftPanelInner(_ref) {
9172
11598
  transition: open ? 'opacity .7s ease-out' : 'opacity .1s ease-out',
9173
11599
  opacity: open ? 1 : 0
9174
11600
  }
9175
- }, /*#__PURE__*/React$1.createElement(GeoReDUSLogoText, null))));
11601
+ }, /*#__PURE__*/React$1.createElement(GeoReDUSLogoText, null))), /*#__PURE__*/React$1.createElement("div", null, /*#__PURE__*/React$1.createElement(IconButton, {
11602
+ variant: "soft",
11603
+ size: "3",
11604
+ asChild: true,
11605
+ style: {
11606
+ color: 'white'
11607
+ }
11608
+ }, /*#__PURE__*/React$1.createElement("a", {
11609
+ href: "https://www.redus.org.br/georedus-rede-de-dados-urbanos/formularios/cbf766bb-9a74-4bc5-897a-70b9151afbdb",
11610
+ target: "_blank",
11611
+ rel: "noreferrer nofollow"
11612
+ }, /*#__PURE__*/React$1.createElement(Tooltip, {
11613
+ content: "D\xFAvidas e sugest\xF5es"
11614
+ }, /*#__PURE__*/React$1.createElement(Icon, {
11615
+ path: mdiForumOutline,
11616
+ size: "24px"
11617
+ })))), /*#__PURE__*/React$1.createElement(IconButton, {
11618
+ variant: "soft",
11619
+ size: "3",
11620
+ style: {
11621
+ color: 'white'
11622
+ },
11623
+ onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
11624
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
11625
+ while (1) switch (_context.prev = _context.next) {
11626
+ case 0:
11627
+ _context.next = 2;
11628
+ return dialogs.view({
11629
+ maxWidth: '1500px',
11630
+ width: '1200px',
11631
+ children: /*#__PURE__*/React$1.createElement(SharePanel, {
11632
+ resolvedLayout: resolvedLayout,
11633
+ commitedViewState: commitedViewState,
11634
+ municipioId: municipioId,
11635
+ METADATA_API_ENDPOINT: METADATA_API_ENDPOINT,
11636
+ baseMapStyle: baseMapStyle,
11637
+ topViews: topViews
11638
+ })
11639
+ });
11640
+ case 2:
11641
+ case "end":
11642
+ return _context.stop();
11643
+ }
11644
+ }, _callee);
11645
+ }))
11646
+ }, /*#__PURE__*/React$1.createElement(Tooltip, {
11647
+ content: "Compartilhar"
11648
+ }, /*#__PURE__*/React$1.createElement(Icon, {
11649
+ path: mdiShareVariantOutline,
11650
+ size: "24px"
11651
+ })))));
9176
11652
  var footer = typeof customFooter !== 'undefined' ? customFooter : /*#__PURE__*/React$1.createElement(Flex, {
9177
11653
  p: "2",
9178
11654
  style: {
@@ -9304,43 +11780,7 @@ function LeftPanelInner(_ref) {
9304
11780
  gap: "3",
9305
11781
  justifyContent: "flex-end",
9306
11782
  alignItems: "center"
9307
- }, /*#__PURE__*/React$1.createElement(IconButton, {
9308
- variant: "soft",
9309
- size: "3",
9310
- onClick: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
9311
- return _regeneratorRuntime().wrap(function _callee$(_context) {
9312
- while (1) switch (_context.prev = _context.next) {
9313
- case 0:
9314
- _context.next = 2;
9315
- return dialogs.view(/*#__PURE__*/React$1.createElement(SharePanel, {
9316
- mapContainerRef: mapContainerRef,
9317
- syncedMapsRef: syncedMapsRef
9318
- }));
9319
- case 2:
9320
- case "end":
9321
- return _context.stop();
9322
- }
9323
- }, _callee);
9324
- }))
9325
- }, /*#__PURE__*/React$1.createElement(Tooltip, {
9326
- content: "Compartilhar"
9327
- }, /*#__PURE__*/React$1.createElement(Icon, {
9328
- path: mdiShareVariantOutline,
9329
- size: "24px"
9330
- }))), /*#__PURE__*/React$1.createElement(IconButton, {
9331
- variant: "soft",
9332
- size: "3",
9333
- asChild: true
9334
- }, /*#__PURE__*/React$1.createElement("a", {
9335
- href: "https://www.redus.org.br/georedus-rede-de-dados-urbanos/formularios/cbf766bb-9a74-4bc5-897a-70b9151afbdb",
9336
- target: "_blank",
9337
- rel: "noreferrer nofollow"
9338
- }, /*#__PURE__*/React$1.createElement(Tooltip, {
9339
- content: "D\xFAvidas e sugest\xF5es"
9340
- }, /*#__PURE__*/React$1.createElement(Icon, {
9341
- path: mdiForumOutline,
9342
- size: "24px"
9343
- })))))
11783
+ })
9344
11784
  }) : /*#__PURE__*/React$1.createElement("div", {
9345
11785
  style: {
9346
11786
  flexGrow: 1,
@@ -11684,15 +14124,6 @@ var BR_BBOX = {
11684
14124
  },
11685
14125
  properties: {}
11686
14126
  };
11687
- var SKY_STYLE = {
11688
- 'sky-color': '#199EF3',
11689
- 'sky-horizon-blend': 0.5,
11690
- 'horizon-color': '#d3edfd',
11691
- 'horizon-fog-blend': 0.5,
11692
- 'fog-color': '#0000ff',
11693
- 'fog-ground-blend': 0.5,
11694
- 'atmosphere-blend': ['interpolate', ['linear'], ['zoom'], 0, 1, 10, 1, 12, 0]
11695
- };
11696
14127
  var BASEMAPS = {
11697
14128
  dataviz: dataviz,
11698
14129
  satellite: satellite
@@ -12096,7 +14527,7 @@ function GeoReDUSInner(_ref2) {
12096
14527
  // Control map position focus
12097
14528
  //
12098
14529
  useEffect(function () {
12099
- var mainMap = get(syncedMapsRef.current, 'mapInstances[0].map');
14530
+ var mainMap = get$1(syncedMapsRef.current, 'mapInstances[0].map');
12100
14531
  if (!mainMap) {
12101
14532
  return;
12102
14533
  }
@@ -12161,6 +14592,10 @@ function GeoReDUSInner(_ref2) {
12161
14592
  }
12162
14593
  });
12163
14594
  }, []);
14595
+ var _useState7 = useState(null),
14596
+ _useState8 = _slicedToArray(_useState7, 2),
14597
+ commitedViewState = _useState8[0],
14598
+ setCommitedViewState = _useState8[1];
12164
14599
  return /*#__PURE__*/React$1.createElement(Flex, null, /*#__PURE__*/React$1.createElement(LeftPanel, _extends({
12165
14600
  open: leftPanelOpen,
12166
14601
  onSetOpen: setLeftPanelOpen,
@@ -12168,7 +14603,15 @@ function GeoReDUSInner(_ref2) {
12168
14603
  viewConfState: viewConfState,
12169
14604
  viewConfDispatch: viewConfDispatch,
12170
14605
  resolvedViews: resolvedViews,
12171
- syncedMapsRef: syncedMapsRef
14606
+ resolvedLayout: resolvedLayout
14607
+
14608
+ // props required for export image
14609
+ ,
14610
+ commitedViewState: commitedViewState,
14611
+ municipioId: municipioId,
14612
+ METADATA_API_ENDPOINT: METADATA_API_ENDPOINT,
14613
+ baseMapStyle: BASE_MAP_STYLE[baseMapStyle],
14614
+ topViews: TOP_VIEWS
12172
14615
  }, leftPanelProps)), /*#__PURE__*/React$1.createElement(Flex, {
12173
14616
  style: {
12174
14617
  position: 'fixed',
@@ -12220,6 +14663,7 @@ function GeoReDUSInner(_ref2) {
12220
14663
  //
12221
14664
  ,
12222
14665
  onMoveEnd: function onMoveEnd(e) {
14666
+ setCommitedViewState(e.viewState);
12223
14667
  var _e$viewState2 = e.viewState,
12224
14668
  latitude = _e$viewState2.latitude,
12225
14669
  longitude = _e$viewState2.longitude;
@@ -12315,15 +14759,16 @@ function GeoReDUSInner(_ref2) {
12315
14759
  size: "20px"
12316
14760
  }))), /*#__PURE__*/React$1.createElement(EvenSpacedList, {
12317
14761
  columns: legends.length > 1 ? 2 : 1,
12318
- gap: "10px"
14762
+ gap: "10px",
14763
+ style: {
14764
+ maxWidth: '300px'
14765
+ }
12319
14766
  }, legends.map(function (legend) {
12320
14767
  return /*#__PURE__*/React$1.createElement(HoverLegend, _extends({}, resolvedLayout.length > 1 ? {
12321
14768
  direction: 'row',
12322
- maxWidth: '300px',
12323
14769
  size: '1'
12324
14770
  } : {
12325
14771
  direction: 'column',
12326
- maxWidth: '150px',
12327
14772
  size: '2'
12328
14773
  }, {
12329
14774
  key: legend.id