@eeacms/volto-cca-policy 0.3.70 → 0.3.72
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.
- package/CHANGELOG.md +62 -3
- package/package.json +2 -2
- package/src/cntrg.data +35 -0
- package/src/components/manage/Blocks/CountryMapProfile/Filter.jsx +37 -79
- package/src/components/manage/Blocks/CountryMapProfile/Filter.test.jsx +1 -1
- package/src/components/manage/Blocks/CountryMapProfile/Interactions.jsx +49 -3
- package/src/components/manage/Blocks/CountryMapProfile/OLView.jsx +7 -47
- package/src/components/manage/Blocks/CountryMapProfile/mapstyle.js +48 -7
- package/src/components/manage/Blocks/CountryMapProfile/styles.less +30 -10
- package/src/components/theme/Widgets/GeocharsWidget.jsx +4 -4
- package/src/express-middleware.js +1 -0
- package/src/helpers/country_map/countryMap.js +5 -0
- package/src/helpers/country_map/euro-countries-simplified.js +39 -0
- package/src/helpers/country_map/hocs.jsx +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,15 +4,17 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
-
### [0.3.
|
|
7
|
+
### [0.3.72](https://github.com/eea/volto-cca-policy/compare/1.0.0-alpha.0...0.3.72) - 23 July 2025
|
|
8
8
|
|
|
9
9
|
#### :rocket: Dependency updates
|
|
10
10
|
|
|
11
|
+
- Release @eeacms/volto-searchlib@2.1.2 [EEA Jenkins - [`3f0947a`](https://github.com/eea/volto-cca-policy/commit/3f0947a0b5ab6ee774bff8681f5034180499b1ab)]
|
|
11
12
|
- Release @eeacms/volto-searchlib@2.1.1 [EEA Jenkins - [`a625e3d`](https://github.com/eea/volto-cca-policy/commit/a625e3d4cf3de11644db824b8ddf46fcd56ea7e9)]
|
|
12
13
|
- Release @eeacms/volto-searchlib@2.1.0 [EEA Jenkins - [`e5fc813`](https://github.com/eea/volto-cca-policy/commit/e5fc813f97922df335be28673d6303cb81b3c888)]
|
|
13
14
|
|
|
14
15
|
#### :bug: Bug Fixes
|
|
15
16
|
|
|
17
|
+
- fix: prevent Dropdown error when value is null [kreafox - [`6a34c03`](https://github.com/eea/volto-cca-policy/commit/6a34c03d90afe141f6c9ac62a8588585b376f968)]
|
|
16
18
|
- fix: CMSare video URL with query string - #refs 290068 [kreafox - [`d637581`](https://github.com/eea/volto-cca-policy/commit/d637581b12b70f1438576d800d9a7d710c734c11)]
|
|
17
19
|
- fix: remove unused import [kreafox - [`72e419d`](https://github.com/eea/volto-cca-policy/commit/72e419d8d46a05c1fc2c2314f625bf9c4a08a64d)]
|
|
18
20
|
- fix: eslint [kreafox - [`7887ef4`](https://github.com/eea/volto-cca-policy/commit/7887ef453f9099f1606a54b2ae06bfcad03ca5f8)]
|
|
@@ -29,11 +31,22 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
29
31
|
|
|
30
32
|
- style: Automated code fix [eea-jenkins - [`5774f11`](https://github.com/eea/volto-cca-policy/commit/5774f11b505788e71d0810555e28f306f4170ea4)]
|
|
31
33
|
- style: Automated code fix [eea-jenkins - [`88386b8`](https://github.com/eea/volto-cca-policy/commit/88386b8d31edcf5aec1b2591840af3d5a6f0357a)]
|
|
34
|
+
- style: Automated code fix [eea-jenkins - [`1f11a31`](https://github.com/eea/volto-cca-policy/commit/1f11a31a8ccf6fd74840f3d205992068c7427512)]
|
|
32
35
|
- style: Automated code fix [eea-jenkins - [`4c5b5f3`](https://github.com/eea/volto-cca-policy/commit/4c5b5f3f4e0474a7fc2ba1f634229f8fc99c3fb0)]
|
|
33
36
|
|
|
34
37
|
#### :hammer_and_wrench: Others
|
|
35
38
|
|
|
39
|
+
- Refs #289437 - wip [Tripon Eugen - [`2073e24`](https://github.com/eea/volto-cca-policy/commit/2073e2404274cbacccbc303d4493860f8c938de8)]
|
|
40
|
+
- Refs #289437 - wip typo [Tripon Eugen - [`62c79a3`](https://github.com/eea/volto-cca-policy/commit/62c79a3c914f1c49d42ea96953a903af9e6e3a21)]
|
|
41
|
+
- Refs #289437 - map popup country name updtes [Tripon Eugen - [`f6b265d`](https://github.com/eea/volto-cca-policy/commit/f6b265dfa6d7710cdfac10fcdcac9de646f8d868)]
|
|
42
|
+
- Refs #289437 - no data Switzerland message [Tripon Eugen - [`b7d6251`](https://github.com/eea/volto-cca-policy/commit/b7d6251dfe136c1631ff112ecccfa8e5eda74101)]
|
|
43
|
+
- Refs #289437 - update legend map [Tripon Eugen - [`80f8f9b`](https://github.com/eea/volto-cca-policy/commit/80f8f9bbc590fc0c10c65514bdba0c67db6de441)]
|
|
44
|
+
- Refs #289437 - update label for some countries [Tripon Eugen - [`1be52e3`](https://github.com/eea/volto-cca-policy/commit/1be52e3f388e2378b9dfec8496eb083fb7d589c9)]
|
|
45
|
+
- Refs #289437 - update map colors [Tripon Eugen - [`47f3112`](https://github.com/eea/volto-cca-policy/commit/47f3112038f89945741abbb4fafde13d150af79c)]
|
|
36
46
|
- Bump version for volto-datablocks [Tiberiu Ichim - [`e6267e0`](https://github.com/eea/volto-cca-policy/commit/e6267e03882362471e60ad150df49c5c2843884e)]
|
|
47
|
+
- Refs #289437 - blue map updates [Tripon Eugen - [`a734405`](https://github.com/eea/volto-cca-policy/commit/a734405cc3907b7fdcdc169421713c3b61405641)]
|
|
48
|
+
- Refs #289437 - blue map update data link no profiles [Tripon Eugen - [`5df8797`](https://github.com/eea/volto-cca-policy/commit/5df8797b8b600850516e0f6ce480b052c1e35bdd)]
|
|
49
|
+
- Refs #289437 - blue map update [Tripon Eugen - [`36de33e`](https://github.com/eea/volto-cca-policy/commit/36de33e41e4d862d201db7cf470d902c67560f71)]
|
|
37
50
|
- No console.log [Tiberiu Ichim - [`fef7eea`](https://github.com/eea/volto-cca-policy/commit/fef7eea74480a455ccbd04f8dc39170ca538cb17)]
|
|
38
51
|
- No need for schema enhancer [Tiberiu Ichim - [`ec71401`](https://github.com/eea/volto-cca-policy/commit/ec7140102081db6bf86940ff7f06c8ff7233565f)]
|
|
39
52
|
- Add extension for DataConnectedEmbed [Tiberiu Ichim - [`2a14949`](https://github.com/eea/volto-cca-policy/commit/2a149490e2ad001a3efc4106de6207c508762675)]
|
|
@@ -45,11 +58,16 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
45
58
|
- test: add tests to increase code coverage [kreafox - [`75e95bf`](https://github.com/eea/volto-cca-policy/commit/75e95bf109369b637eecfbd649cb07280c27c9fe)]
|
|
46
59
|
- Use secondary site id [Tiberiu Ichim - [`461a204`](https://github.com/eea/volto-cca-policy/commit/461a20409ccf8e3b1baea17ee7727378dbb38e23)]
|
|
47
60
|
- Add suport for custom site id for mission [Tiberiu Ichim - [`3a32dfc`](https://github.com/eea/volto-cca-policy/commit/3a32dfc40127a060ea86651a71f043ef7137876b)]
|
|
61
|
+
- Refs #289562 - blue country map change projection [Tripon Eugen - [`8979a20`](https://github.com/eea/volto-cca-policy/commit/8979a20f91a160d5f70f747aa01d0e04a6d6a30d)]
|
|
48
62
|
- add nn missing translations [Tripon Eugen - [`62511df`](https://github.com/eea/volto-cca-policy/commit/62511df2351b231b3973a9a748f307e78ff7f993)]
|
|
63
|
+
- Refs #289437 - country map profile label translation [Tripon Eugen - [`59bc0c7`](https://github.com/eea/volto-cca-policy/commit/59bc0c7135290cd4edb7faa53dee8a5e31376c57)]
|
|
64
|
+
- Refs #289437 - Filter test update after remove filters [Tripon Eugen - [`bd6a0c3`](https://github.com/eea/volto-cca-policy/commit/bd6a0c3d6fe4568072cdc741410ab5c19da7433f)]
|
|
65
|
+
- Refs #289437 - eslint, center and zoom map [Tripon Eugen - [`4c1bd3e`](https://github.com/eea/volto-cca-policy/commit/4c1bd3e10b151cb935b10fa136006056c61d28c4)]
|
|
66
|
+
- Refs #289437 - update map colorse and labels [Tripon Eugen - [`6577fc6`](https://github.com/eea/volto-cca-policy/commit/6577fc640755e394d696932413ddd10b541d193e)]
|
|
49
67
|
- Add some loadable for components [Tiberiu Ichim - [`1793962`](https://github.com/eea/volto-cca-policy/commit/179396211c66a6a2465b2d1b6c0f2afc40fc7189)]
|
|
50
68
|
- Refs #284961 - test [Tripon Eugen - [`c989f1f`](https://github.com/eea/volto-cca-policy/commit/c989f1f8638c0c5233c5c49f8673c9a2cdc7937e)]
|
|
51
69
|
- Refs #284961 - add translations [Tripon Eugen - [`04ee988`](https://github.com/eea/volto-cca-policy/commit/04ee988c086d393b9b37ce1ea8d24f5e84f266aa)]
|
|
52
|
-
### [1.0.0-alpha.0](https://github.com/eea/volto-cca-policy/compare/0.3.
|
|
70
|
+
### [1.0.0-alpha.0](https://github.com/eea/volto-cca-policy/compare/0.3.71...1.0.0-alpha.0) - 15 July 2025
|
|
53
71
|
|
|
54
72
|
#### :bug: Bug Fixes
|
|
55
73
|
|
|
@@ -92,8 +110,49 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
92
110
|
- test: Update to volto 17 PR30 [valentinab25 - [`ed03286`](https://github.com/eea/volto-cca-policy/commit/ed032865efa051d6353844737616019b202ea562)]
|
|
93
111
|
- test: update snapshots [ana-oprea - [`94608ad`](https://github.com/eea/volto-cca-policy/commit/94608adc1b3b3655c7ecd5c39dde1f0fcd4b41e9)]
|
|
94
112
|
- test: Update to volto 17 PR30 [valentinab25 - [`2e81033`](https://github.com/eea/volto-cca-policy/commit/2e810334e08366ca77ba62383c064770dde643a1)]
|
|
95
|
-
### [0.3.
|
|
113
|
+
### [0.3.71](https://github.com/eea/volto-cca-policy/compare/0.3.70...0.3.71) - 22 July 2025
|
|
114
|
+
|
|
115
|
+
#### :bug: Bug Fixes
|
|
116
|
+
|
|
117
|
+
- fix: prevent Dropdown error when value is null [kreafox - [`6a34c03`](https://github.com/eea/volto-cca-policy/commit/6a34c03d90afe141f6c9ac62a8588585b376f968)]
|
|
118
|
+
|
|
119
|
+
### [0.3.70](https://github.com/eea/volto-cca-policy/compare/0.3.69...0.3.70) - 18 July 2025
|
|
120
|
+
|
|
121
|
+
#### :house: Internal changes
|
|
122
|
+
|
|
123
|
+
- style: Automated code fix [eea-jenkins - [`5774f11`](https://github.com/eea/volto-cca-policy/commit/5774f11b505788e71d0810555e28f306f4170ea4)]
|
|
124
|
+
|
|
125
|
+
#### :hammer_and_wrench: Others
|
|
126
|
+
|
|
127
|
+
- Bump version for volto-datablocks [Tiberiu Ichim - [`e6267e0`](https://github.com/eea/volto-cca-policy/commit/e6267e03882362471e60ad150df49c5c2843884e)]
|
|
128
|
+
- No console.log [Tiberiu Ichim - [`fef7eea`](https://github.com/eea/volto-cca-policy/commit/fef7eea74480a455ccbd04f8dc39170ca538cb17)]
|
|
129
|
+
- No need for schema enhancer [Tiberiu Ichim - [`ec71401`](https://github.com/eea/volto-cca-policy/commit/ec7140102081db6bf86940ff7f06c8ff7233565f)]
|
|
130
|
+
- Add extension for DataConnectedEmbed [Tiberiu Ichim - [`2a14949`](https://github.com/eea/volto-cca-policy/commit/2a149490e2ad001a3efc4106de6207c508762675)]
|
|
131
|
+
### [0.3.69](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.5...0.3.69) - 17 July 2025
|
|
132
|
+
|
|
133
|
+
### [0.3.69-alpha.5](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.4...0.3.69-alpha.5) - 22 July 2025
|
|
134
|
+
|
|
135
|
+
#### :hammer_and_wrench: Others
|
|
136
|
+
|
|
137
|
+
- Refs #289437 - wip [Tripon Eugen - [`2073e24`](https://github.com/eea/volto-cca-policy/commit/2073e2404274cbacccbc303d4493860f8c938de8)]
|
|
138
|
+
- Refs #289437 - wip typo [Tripon Eugen - [`62c79a3`](https://github.com/eea/volto-cca-policy/commit/62c79a3c914f1c49d42ea96953a903af9e6e3a21)]
|
|
139
|
+
- Refs #289437 - map popup country name updtes [Tripon Eugen - [`f6b265d`](https://github.com/eea/volto-cca-policy/commit/f6b265dfa6d7710cdfac10fcdcac9de646f8d868)]
|
|
140
|
+
### [0.3.69-alpha.4](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.3...0.3.69-alpha.4) - 21 July 2025
|
|
141
|
+
|
|
142
|
+
#### :hammer_and_wrench: Others
|
|
143
|
+
|
|
144
|
+
- Refs #289437 - no data Switzerland message [Tripon Eugen - [`b7d6251`](https://github.com/eea/volto-cca-policy/commit/b7d6251dfe136c1631ff112ecccfa8e5eda74101)]
|
|
145
|
+
### [0.3.69-alpha.3](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.2...0.3.69-alpha.3) - 21 July 2025
|
|
146
|
+
|
|
147
|
+
#### :hammer_and_wrench: Others
|
|
148
|
+
|
|
149
|
+
- Refs #289437 - update legend map [Tripon Eugen - [`80f8f9b`](https://github.com/eea/volto-cca-policy/commit/80f8f9bbc590fc0c10c65514bdba0c67db6de441)]
|
|
150
|
+
- Refs #289437 - update label for some countries [Tripon Eugen - [`1be52e3`](https://github.com/eea/volto-cca-policy/commit/1be52e3f388e2378b9dfec8496eb083fb7d589c9)]
|
|
151
|
+
### [0.3.69-alpha.2](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.1...0.3.69-alpha.2) - 21 July 2025
|
|
152
|
+
|
|
153
|
+
#### :hammer_and_wrench: Others
|
|
96
154
|
|
|
155
|
+
- Refs #289437 - update map colors [Tripon Eugen - [`47f3112`](https://github.com/eea/volto-cca-policy/commit/47f3112038f89945741abbb4fafde13d150af79c)]
|
|
97
156
|
### [0.3.69-alpha.1](https://github.com/eea/volto-cca-policy/compare/0.3.69-alpha.0...0.3.69-alpha.1) - 18 July 2025
|
|
98
157
|
|
|
99
158
|
#### :hammer_and_wrench: Others
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eeacms/volto-cca-policy",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.72",
|
|
4
4
|
"description": "@eeacms/volto-cca-policy: Volto add-on",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"author": "European Environment Agency: IDM2 A-Team",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@eeacms/volto-globalsearch": "2.1.2",
|
|
37
37
|
"@eeacms/volto-hero-block": "^7.1.0",
|
|
38
38
|
"@eeacms/volto-openlayers-map": "1.0.1",
|
|
39
|
-
"@eeacms/volto-searchlib": "2.1.
|
|
39
|
+
"@eeacms/volto-searchlib": "2.1.2",
|
|
40
40
|
"@eeacms/volto-slate-label": "^0.6.0",
|
|
41
41
|
"@eeacms/volto-tabs-block": "^7.5.1",
|
|
42
42
|
"@elastic/search-ui": "1.21.2",
|
package/src/cntrg.data
CHANGED
|
@@ -36729,6 +36729,41 @@
|
|
|
36729
36729
|
]
|
|
36730
36730
|
}
|
|
36731
36731
|
},
|
|
36732
|
+
{
|
|
36733
|
+
"type": "Feature",
|
|
36734
|
+
"properties": {
|
|
36735
|
+
"id": "XK",
|
|
36736
|
+
"na": "Kosovo"
|
|
36737
|
+
},
|
|
36738
|
+
"geometry": {
|
|
36739
|
+
"type": "Polygon",
|
|
36740
|
+
"coordinates": [
|
|
36741
|
+
[
|
|
36742
|
+
[20.590246546680227, 41.855408919283626],
|
|
36743
|
+
[20.52295, 42.21787],
|
|
36744
|
+
[20.283754510181893, 42.32025950781508],
|
|
36745
|
+
[20.0707, 42.58863],
|
|
36746
|
+
[20.25758, 42.81275000000011],
|
|
36747
|
+
[20.49679, 42.88469],
|
|
36748
|
+
[20.63508, 43.21671],
|
|
36749
|
+
[20.81448, 43.27205],
|
|
36750
|
+
[20.95651, 43.13094],
|
|
36751
|
+
[21.143395, 43.06868500000013],
|
|
36752
|
+
[21.27421, 42.90959],
|
|
36753
|
+
[21.43866, 42.86255],
|
|
36754
|
+
[21.63302, 42.67717],
|
|
36755
|
+
[21.77505, 42.6827],
|
|
36756
|
+
[21.66292, 42.43922],
|
|
36757
|
+
[21.54332, 42.3202500000001],
|
|
36758
|
+
[21.57663598940212, 42.24522439706186],
|
|
36759
|
+
[21.35270000000014, 42.2068],
|
|
36760
|
+
[20.76216, 42.05186],
|
|
36761
|
+
[20.71731000000011, 41.84711],
|
|
36762
|
+
[20.590246546680227, 41.855408919283626]
|
|
36763
|
+
]
|
|
36764
|
+
]
|
|
36765
|
+
}
|
|
36766
|
+
},
|
|
36732
36767
|
{
|
|
36733
36768
|
"type": "Feature",
|
|
36734
36769
|
"properties": {
|
|
@@ -1,89 +1,47 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
function hidePopup() {
|
|
5
|
-
const collections = document.getElementsByClassName('map-tooltip');
|
|
6
|
-
for (let i = 0; i < collections.length; i++) {
|
|
7
|
-
collections[i].style.visibility = 'hidden';
|
|
8
|
-
}
|
|
9
|
-
}
|
|
2
|
+
import { FormattedMessage } from 'react-intl';
|
|
10
3
|
|
|
11
4
|
export default function Filter(props) {
|
|
12
|
-
const { thematicMapMode, setThematicMapMode } = props;
|
|
13
5
|
return (
|
|
14
6
|
<>
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
hidePopup();
|
|
25
|
-
}}
|
|
26
|
-
/>
|
|
27
|
-
<Radio
|
|
28
|
-
label="Adaptation portals and platforms"
|
|
29
|
-
name="country-map-section"
|
|
30
|
-
value="Adaptation portals and platforms"
|
|
31
|
-
checked={thematicMapMode === 'Adaptation portals and platforms'}
|
|
32
|
-
onChange={(_e, { value }) => {
|
|
33
|
-
setThematicMapMode(value);
|
|
34
|
-
hidePopup();
|
|
35
|
-
}}
|
|
36
|
-
/>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
{thematicMapMode === 'Adaptation portals and platforms' && (
|
|
40
|
-
<div className="legend portals-legend">
|
|
41
|
-
<div className="legend-el">
|
|
42
|
-
<span className="country-both legend-box"></span>
|
|
43
|
-
<p className="legend-text">
|
|
44
|
-
Adaptation portal or platform reported
|
|
45
|
-
</p>
|
|
46
|
-
</div>
|
|
47
|
-
<div className="legend-el">
|
|
48
|
-
<span className="country-noportal legend-box"></span>
|
|
49
|
-
<p className="legend-text">No portal or platform reported</p>
|
|
50
|
-
</div>
|
|
51
|
-
<div className="legend-el">
|
|
52
|
-
<span className="country-notreported legend-box"></span>
|
|
53
|
-
<p className="legend-text">No data reported in 2023</p>
|
|
54
|
-
</div>
|
|
55
|
-
<div className="legend-el">
|
|
56
|
-
<span className="country-outside legend-box"></span>
|
|
57
|
-
<p className="legend-text">Outside EEA coverage</p>
|
|
58
|
-
</div>
|
|
7
|
+
<div className="legend portals-legend">
|
|
8
|
+
<div className="legend-el">
|
|
9
|
+
<span className="country-eea-eu-member legend-box"></span>
|
|
10
|
+
<p className="legend-text">
|
|
11
|
+
<FormattedMessage
|
|
12
|
+
id="EU Member States and EEA Member Countries"
|
|
13
|
+
defaultMessage="EU Member States and EEA Member Countries"
|
|
14
|
+
/>
|
|
15
|
+
</p>
|
|
59
16
|
</div>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
</
|
|
77
|
-
<div className="legend-el">
|
|
78
|
-
<span className="country-nas legend-box"></span>
|
|
79
|
-
<p className="legend-text">No data reported in 2023</p>
|
|
80
|
-
</div>
|
|
81
|
-
<div className="legend-el">
|
|
82
|
-
<span className="country-none legend-box"></span>
|
|
83
|
-
<p className="legend-text">Outside EEA coverage</p>
|
|
84
|
-
</div>
|
|
17
|
+
<div className="legend-el">
|
|
18
|
+
<span className="country-eea-member legend-box"></span>
|
|
19
|
+
<p className="legend-text">
|
|
20
|
+
<FormattedMessage
|
|
21
|
+
id="EEA Member Countries"
|
|
22
|
+
defaultMessage="EEA Member Countries"
|
|
23
|
+
/>
|
|
24
|
+
</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div className="legend-el">
|
|
27
|
+
<span className="country-eea-coopereting legend-box"></span>
|
|
28
|
+
<p className="legend-text">
|
|
29
|
+
<FormattedMessage
|
|
30
|
+
id="EEA Cooperating Countries and Energy Community Contracting Parties"
|
|
31
|
+
defaultMessage="EEA Cooperating Countries and Energy Community Contracting Parties"
|
|
32
|
+
/>
|
|
33
|
+
</p>
|
|
85
34
|
</div>
|
|
86
|
-
|
|
35
|
+
<div className="legend-el">
|
|
36
|
+
<span className="country-eastern legend-box"></span>
|
|
37
|
+
<p className="legend-text">
|
|
38
|
+
<FormattedMessage
|
|
39
|
+
id="Eastern Parnership Members and Energy Community Contracting Parties"
|
|
40
|
+
defaultMessage="Eastern Parnership Members and Energy Community Contracting Parties"
|
|
41
|
+
/>
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
87
45
|
</>
|
|
88
46
|
);
|
|
89
47
|
}
|
|
@@ -37,23 +37,66 @@ export const Interactions = ({
|
|
|
37
37
|
}
|
|
38
38
|
const domEvt = evt.originalEvent;
|
|
39
39
|
|
|
40
|
+
if (
|
|
41
|
+
countries_metadata.length > 0 &&
|
|
42
|
+
feature &&
|
|
43
|
+
[
|
|
44
|
+
'Bosnia and Herzegovina',
|
|
45
|
+
'Montenegro',
|
|
46
|
+
'Albania',
|
|
47
|
+
'North Macedonia',
|
|
48
|
+
'Kosovo',
|
|
49
|
+
].includes(feature.get('na'))
|
|
50
|
+
) {
|
|
51
|
+
map.getTargetElement().style.cursor = 'pointer';
|
|
52
|
+
let countryName = feature.get('na');
|
|
53
|
+
const node = tooltipRef.current;
|
|
54
|
+
const flag = feature.get('flag').src;
|
|
55
|
+
let tooltipContent =
|
|
56
|
+
'No data reported through the reporting mechanism of the adapted Governance Regulation for the Energy Community\'s Contracting Parties. More information is available <a href="https://www.energy-community.org/">here</a>.';
|
|
57
|
+
if (countryName === 'Kosovo') {
|
|
58
|
+
tooltipContent =
|
|
59
|
+
tooltipContent +
|
|
60
|
+
'<hr>This designation is without prejudice to positions on status, and is in line with UNSCR 1244/99 and the ICJ opinion on Kosovo Declaration of Independence';
|
|
61
|
+
}
|
|
62
|
+
let tooltipContentDiv = `
|
|
63
|
+
<div class="country-tooltip">
|
|
64
|
+
<div id="country-name">
|
|
65
|
+
<h3>${countryName}</h3>
|
|
66
|
+
<img class="tooltip-country-flag" src="${flag}" height="33" width="54">
|
|
67
|
+
</div>
|
|
68
|
+
<div class="tooltip-content"><span>${tooltipContent}</span></div>
|
|
69
|
+
</div>`;
|
|
70
|
+
|
|
71
|
+
setTooltipVisibility(node, tooltipContentDiv, domEvt, true);
|
|
72
|
+
}
|
|
40
73
|
if (
|
|
41
74
|
countries_metadata.length > 0 &&
|
|
42
75
|
feature &&
|
|
43
76
|
euCountryNames.includes(feature.get('na'))
|
|
44
77
|
) {
|
|
45
78
|
let countryName = feature.get('na');
|
|
79
|
+
let countryNamePrint = feature.get('na');
|
|
80
|
+
let baseUrlPath = baseUrl;
|
|
81
|
+
if (!baseUrlPath.includes('countries-regions/countries/')) {
|
|
82
|
+
baseUrlPath = baseUrlPath + '/countries-regions/countries';
|
|
83
|
+
}
|
|
46
84
|
let noDataReportedMsg = `
|
|
47
85
|
No data reported through the reporting mechanism of the Governance Regulation.
|
|
48
86
|
Last information is available
|
|
49
|
-
<a href="${
|
|
87
|
+
<a href="${baseUrlPath}/${countryName.toLowerCase()}">here</a>`;
|
|
50
88
|
|
|
51
89
|
if (countryName === 'Türkiye') {
|
|
52
90
|
countryName = 'Turkiye';
|
|
53
91
|
noDataReportedMsg = `
|
|
54
92
|
Data reported in 2021 through the reporting mechanism of the Governance Regulation.
|
|
55
93
|
Information is available
|
|
56
|
-
<a href="${
|
|
94
|
+
<a href="${baseUrlPath}/${countryName.toLowerCase()}">here</a>`;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (countryName === 'Switzerland') {
|
|
98
|
+
noDataReportedMsg = `
|
|
99
|
+
<span>National Adaptation Strategy </span><ul><li><a href="https://www.bafu.admin.ch/bafu/en/home/topics/climate/publications-studies/publications/adaptation-climate-change-switzerland-2012.html">Adaptation to climate change in Switzerland - First part of the Federal Councils strategy</a><p style="font-style:oblique;">Adopted</p></li></ul><span>National Adaptation Plan </span><ul><li><a href="https://www.bafu.admin.ch/bafu/de/home/themen/klima/publikationen-studien/publikationen/anpassung-klimawandel-schweiz-aktionsplan-2020-2025.html">Adaptation to climate change in Switzerland: Action Plan 2020-2025</a><p style="font-style:oblique;">Adopted</p></li></ul>`;
|
|
57
100
|
}
|
|
58
101
|
|
|
59
102
|
if (!Object.hasOwn(countries_metadata[0], countryName)) {
|
|
@@ -81,10 +124,13 @@ export const Interactions = ({
|
|
|
81
124
|
const node = tooltipRef.current;
|
|
82
125
|
const flag = feature.get('flag').src;
|
|
83
126
|
const cn = countryName.toLowerCase();
|
|
127
|
+
if (countryNamePrint === 'Moldova') {
|
|
128
|
+
countryNamePrint = 'Republic of Moldova';
|
|
129
|
+
}
|
|
84
130
|
let tooltipContentDiv = `
|
|
85
131
|
<div class="country-tooltip">
|
|
86
132
|
<div id="country-name">
|
|
87
|
-
<a href="/en/countries-regions/countries/${cn}"><h3>${
|
|
133
|
+
<a href="/en/countries-regions/countries/${cn}"><h3>${countryNamePrint}</h3></a>
|
|
88
134
|
<img class="tooltip-country-flag" src="${flag}" height="33" width="54">
|
|
89
135
|
</div>
|
|
90
136
|
<div class="tooltip-content">${tooltipContent}</div>
|
|
@@ -26,7 +26,6 @@ import './styles.less';
|
|
|
26
26
|
|
|
27
27
|
const View = (props) => {
|
|
28
28
|
const { geofeatures, projection, ol } = props;
|
|
29
|
-
|
|
30
29
|
const highlight = React.useRef();
|
|
31
30
|
const [stateHighlight, setStateHighlight] = React.useState();
|
|
32
31
|
|
|
@@ -42,7 +41,7 @@ const View = (props) => {
|
|
|
42
41
|
'National adaption policy',
|
|
43
42
|
);
|
|
44
43
|
const countries_metadata_url =
|
|
45
|
-
'/en/countries-regions/countries/@@countries-metadata-extract?langflag=1';
|
|
44
|
+
'/en/countries-regions/countries/@@countries-metadata-extract-2025?langflag=1';
|
|
46
45
|
const countries_metadata = useCountriesMetadata(
|
|
47
46
|
addAppURL(countries_metadata_url),
|
|
48
47
|
);
|
|
@@ -52,52 +51,16 @@ const View = (props) => {
|
|
|
52
51
|
const euCountryFeatures = React.useRef();
|
|
53
52
|
|
|
54
53
|
React.useEffect(() => {
|
|
55
|
-
const features = new ol.format.GeoJSON().readFeatures(geofeatures
|
|
54
|
+
const features = new ol.format.GeoJSON().readFeatures(geofeatures, {
|
|
55
|
+
dataProjection: 'EPSG:4326',
|
|
56
|
+
featureProjection: 'EPSG:3857',
|
|
57
|
+
});
|
|
56
58
|
const filtered = features.filter((f) =>
|
|
57
59
|
euCountryNames.includes(f.get('na')),
|
|
58
60
|
);
|
|
59
61
|
|
|
60
62
|
euCountryFeatures.current = filtered;
|
|
61
63
|
|
|
62
|
-
if (countries_metadata.length > 0) {
|
|
63
|
-
filtered.forEach((feature) => {
|
|
64
|
-
let countryName = feature.get('na');
|
|
65
|
-
if (countryName === 'Türkiye') {
|
|
66
|
-
countryName = 'Turkiye';
|
|
67
|
-
}
|
|
68
|
-
if (Object.hasOwn(countries_metadata[0], countryName)) {
|
|
69
|
-
let metadata = countries_metadata[0][countryName];
|
|
70
|
-
if (metadata !== undefined) {
|
|
71
|
-
if (thematicMapMode === 'National adaption policy') {
|
|
72
|
-
if (metadata[0]?.notreported) {
|
|
73
|
-
feature.set('fillBlue', 'blue3');
|
|
74
|
-
} else if (
|
|
75
|
-
metadata[0]?.nap_mixed?.length ||
|
|
76
|
-
metadata[0]?.nas_mixed.length ||
|
|
77
|
-
metadata[0]?.sap_mixed.length
|
|
78
|
-
) {
|
|
79
|
-
feature.set('fillBlue', 'blue1');
|
|
80
|
-
} else {
|
|
81
|
-
feature.set('fillBlue', 'blue2');
|
|
82
|
-
}
|
|
83
|
-
} else {
|
|
84
|
-
if (metadata[0]?.notreported) {
|
|
85
|
-
feature.set('fillBlue', 'blue3');
|
|
86
|
-
} else if (
|
|
87
|
-
['both', 'hazard', 'adaptation', 'not_specified'].includes(
|
|
88
|
-
metadata[0]?.focus_info || [],
|
|
89
|
-
)
|
|
90
|
-
) {
|
|
91
|
-
feature.set('fillBlue', 'blue1');
|
|
92
|
-
} else {
|
|
93
|
-
feature.set('fillBlue', 'blue2');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
|
|
101
64
|
filtered.forEach((feature) => {
|
|
102
65
|
const img = new Image();
|
|
103
66
|
img.onload = function () {
|
|
@@ -138,9 +101,6 @@ const View = (props) => {
|
|
|
138
101
|
// [baseUrl, history],
|
|
139
102
|
// );
|
|
140
103
|
// console.log('thematicMapMode', thematicMapMode);
|
|
141
|
-
// console.log('euCountriesSource', euCountriesSource);
|
|
142
|
-
// console.log('filtered', euCountriesSource?.getFeatures() || 'NOT SET YET');
|
|
143
|
-
|
|
144
104
|
return (
|
|
145
105
|
<div className="ol-country-map">
|
|
146
106
|
<Grid columns="12">
|
|
@@ -148,10 +108,10 @@ const View = (props) => {
|
|
|
148
108
|
{tileWMSSources ? (
|
|
149
109
|
<Map
|
|
150
110
|
view={{
|
|
151
|
-
center: ol.proj.fromLonLat([
|
|
111
|
+
center: ol.proj.fromLonLat([14.5, 57], projection),
|
|
152
112
|
projection,
|
|
153
113
|
showFullExtent: true,
|
|
154
|
-
zoom:
|
|
114
|
+
zoom: 3.3,
|
|
155
115
|
}}
|
|
156
116
|
pixelRatio={1}
|
|
157
117
|
>
|
|
@@ -42,16 +42,57 @@ export const makeStyles = (highlight, ol) => {
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
const getFillColor = (feature) => {
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
const countryCode = feature.get('id');
|
|
46
|
+
const countriesUE = [
|
|
47
|
+
'AT',
|
|
48
|
+
'BE',
|
|
49
|
+
'BG',
|
|
50
|
+
'CH',
|
|
51
|
+
'CZ',
|
|
52
|
+
'CY',
|
|
53
|
+
'DE',
|
|
54
|
+
'DK',
|
|
55
|
+
'EE',
|
|
56
|
+
'EL',
|
|
57
|
+
'ES',
|
|
58
|
+
'FI',
|
|
59
|
+
'FR',
|
|
60
|
+
'GR',
|
|
61
|
+
'HR',
|
|
62
|
+
'HU',
|
|
63
|
+
'IE',
|
|
64
|
+
'IS',
|
|
65
|
+
'IT',
|
|
66
|
+
'LI',
|
|
67
|
+
'LT',
|
|
68
|
+
'LU',
|
|
69
|
+
'LV',
|
|
70
|
+
'MT',
|
|
71
|
+
'NL',
|
|
72
|
+
'NO',
|
|
73
|
+
'PL',
|
|
74
|
+
'PT',
|
|
75
|
+
'RO',
|
|
76
|
+
'SE',
|
|
77
|
+
'SI',
|
|
78
|
+
'SK',
|
|
79
|
+
'TR',
|
|
80
|
+
];
|
|
81
|
+
const countriesCoopereting = ['RS', 'BA', 'MK', 'ME', 'AL', 'XK'];
|
|
82
|
+
const countriesEastern = ['UA', 'MO', 'MD', 'GE'];
|
|
83
|
+
const countriesEEAMemberCountries = ['IS', 'NO', 'CH', 'LI', 'TR'];
|
|
84
|
+
if (countriesEEAMemberCountries.includes(countryCode)) {
|
|
85
|
+
return new ol.style.Fill({ color: '#50B0A4' });
|
|
47
86
|
}
|
|
48
|
-
if (
|
|
49
|
-
return new ol.style.Fill({ color: '
|
|
87
|
+
if (countriesCoopereting.includes(countryCode)) {
|
|
88
|
+
return new ol.style.Fill({ color: '#A0E5DC' });
|
|
50
89
|
}
|
|
51
|
-
if (
|
|
52
|
-
return new ol.style.Fill({ color: '
|
|
90
|
+
if (countriesEastern.includes(countryCode)) {
|
|
91
|
+
return new ol.style.Fill({ color: '#C8FFF8' });
|
|
92
|
+
}
|
|
93
|
+
if (countriesUE.includes(countryCode)) {
|
|
94
|
+
return new ol.style.Fill({ color: '#007B6C' });
|
|
53
95
|
}
|
|
54
|
-
// console.log(feature.get('fillBlue'));
|
|
55
96
|
return fill;
|
|
56
97
|
};
|
|
57
98
|
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.no-focus {
|
|
100
|
-
background-color: #
|
|
100
|
+
background-color: #fff;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.country-notreported {
|
|
@@ -107,17 +107,29 @@
|
|
|
107
107
|
.country-none,
|
|
108
108
|
.country-outside {
|
|
109
109
|
border: 1px solid #ddd;
|
|
110
|
-
background-color: #
|
|
110
|
+
background-color: #fff;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
.country-eea-eu-member {
|
|
115
|
+
background-color: #007b6c;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.country-eea-member {
|
|
119
|
+
background-color: #50b0a4;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.country-eea-coopereting {
|
|
123
|
+
background-color: #a0e5dc;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.country-eastern {
|
|
127
|
+
background-color: #c8fff8;
|
|
128
|
+
}
|
|
129
|
+
|
|
114
130
|
.legend.nasnap-legend {
|
|
115
131
|
display: block;
|
|
116
132
|
|
|
117
|
-
.country-nasnap {
|
|
118
|
-
background-color: #004b7f;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
133
|
.country-nas {
|
|
122
134
|
background-color: #78d9fc;
|
|
123
135
|
}
|
|
@@ -131,7 +143,7 @@
|
|
|
131
143
|
}
|
|
132
144
|
|
|
133
145
|
.country-nodata {
|
|
134
|
-
background-color: #
|
|
146
|
+
background-color: #fff;
|
|
135
147
|
}
|
|
136
148
|
}
|
|
137
149
|
|
|
@@ -149,13 +161,13 @@
|
|
|
149
161
|
}
|
|
150
162
|
|
|
151
163
|
.country-not-specified {
|
|
152
|
-
background-color: #
|
|
164
|
+
background-color: #fff;
|
|
153
165
|
}
|
|
154
166
|
|
|
155
167
|
.country-none,
|
|
156
168
|
.country-outside {
|
|
157
169
|
border: 1px solid #ddd;
|
|
158
|
-
background-color: #
|
|
170
|
+
background-color: #fff;
|
|
159
171
|
}
|
|
160
172
|
|
|
161
173
|
.country-noportal {
|
|
@@ -216,7 +228,7 @@
|
|
|
216
228
|
}
|
|
217
229
|
|
|
218
230
|
.country-outline.ue path:hover {
|
|
219
|
-
fill: #
|
|
231
|
+
fill: #005248;
|
|
220
232
|
}
|
|
221
233
|
|
|
222
234
|
// Tooltip for countries
|
|
@@ -247,11 +259,19 @@
|
|
|
247
259
|
|
|
248
260
|
#country-name {
|
|
249
261
|
padding-bottom: 2em;
|
|
262
|
+
|
|
263
|
+
h3 {
|
|
264
|
+
color: #000;
|
|
265
|
+
}
|
|
250
266
|
}
|
|
251
267
|
|
|
252
268
|
p:empty {
|
|
253
269
|
display: none;
|
|
254
270
|
}
|
|
271
|
+
|
|
272
|
+
.tooltip-content {
|
|
273
|
+
color: #000;
|
|
274
|
+
}
|
|
255
275
|
}
|
|
256
276
|
|
|
257
277
|
#country-name a {
|
|
@@ -46,7 +46,7 @@ const SelectSubRegions = (props) => {
|
|
|
46
46
|
multiple
|
|
47
47
|
selection
|
|
48
48
|
options={availableRegions}
|
|
49
|
-
value={regions}
|
|
49
|
+
value={regions || []}
|
|
50
50
|
onChange={handleSelect}
|
|
51
51
|
/>
|
|
52
52
|
</div>
|
|
@@ -74,7 +74,7 @@ const SelectMacroRegions = (props) => {
|
|
|
74
74
|
multiple
|
|
75
75
|
selection
|
|
76
76
|
options={WIDGET_MACRO_TRANS_REGIONS}
|
|
77
|
-
value={regions}
|
|
77
|
+
value={regions || []}
|
|
78
78
|
onChange={handleSelect}
|
|
79
79
|
/>
|
|
80
80
|
</div>
|
|
@@ -92,7 +92,7 @@ const SelectBioRegions = (props) => {
|
|
|
92
92
|
multiple
|
|
93
93
|
selection
|
|
94
94
|
options={WIDGET_BIOGEOGRAPHICAL_REGIONS}
|
|
95
|
-
value={regions}
|
|
95
|
+
value={regions || []}
|
|
96
96
|
onChange={handleSelect}
|
|
97
97
|
/>
|
|
98
98
|
</div>
|
|
@@ -147,7 +147,7 @@ const GeocharsWidget = (props) => {
|
|
|
147
147
|
if (value !== null) {
|
|
148
148
|
geoElements = JSON.parse(value).geoElements;
|
|
149
149
|
} else {
|
|
150
|
-
geoElements = DEFAULT_GEOCHARS;
|
|
150
|
+
geoElements = DEFAULT_GEOCHARS.geoElements;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
const element = geoElements.element;
|
|
@@ -15,16 +15,20 @@ export const euCountryNames = [
|
|
|
15
15
|
'Estonia',
|
|
16
16
|
'Finland',
|
|
17
17
|
'France',
|
|
18
|
+
'Georgia',
|
|
18
19
|
'Germany',
|
|
19
20
|
'Greece',
|
|
20
21
|
'Hungary',
|
|
21
22
|
'Iceland',
|
|
22
23
|
'Ireland',
|
|
24
|
+
'Kosovo',
|
|
23
25
|
'Italy',
|
|
24
26
|
'Latvia',
|
|
25
27
|
'Lithuania',
|
|
26
28
|
'Luxembourg',
|
|
27
29
|
'Malta',
|
|
30
|
+
'Moldova',
|
|
31
|
+
'Moldova, Republic of',
|
|
28
32
|
'Montenegro',
|
|
29
33
|
'Netherlands',
|
|
30
34
|
'North Macedonia',
|
|
@@ -37,6 +41,7 @@ export const euCountryNames = [
|
|
|
37
41
|
'Spain',
|
|
38
42
|
'Sweden',
|
|
39
43
|
'United Kingdom',
|
|
44
|
+
'Ukraine',
|
|
40
45
|
'Liechtenstein',
|
|
41
46
|
'Norway',
|
|
42
47
|
'Switzerland',
|
|
@@ -46191,5 +46191,44 @@ export default {
|
|
|
46191
46191
|
},
|
|
46192
46192
|
geometry: { type: 'MultiPolygon', coordinates: [] },
|
|
46193
46193
|
},
|
|
46194
|
+
{
|
|
46195
|
+
type: 'Feature',
|
|
46196
|
+
properties: {
|
|
46197
|
+
id: 'XK',
|
|
46198
|
+
CNTR_ID: 'XK',
|
|
46199
|
+
ORIG_NMES: 'Kosovo',
|
|
46200
|
+
SHRT_ENGL: 'Kosovo',
|
|
46201
|
+
ISO3_CODE: 'XKX',
|
|
46202
|
+
FID: 'XK',
|
|
46203
|
+
},
|
|
46204
|
+
geometry: {
|
|
46205
|
+
type: 'Polygon',
|
|
46206
|
+
coordinates: [
|
|
46207
|
+
[
|
|
46208
|
+
[20.590246546680227, 41.855408919283626],
|
|
46209
|
+
[20.52295, 42.21787],
|
|
46210
|
+
[20.283754510181893, 42.32025950781508],
|
|
46211
|
+
[20.0707, 42.58863],
|
|
46212
|
+
[20.25758, 42.81275000000011],
|
|
46213
|
+
[20.49679, 42.88469],
|
|
46214
|
+
[20.63508, 43.21671],
|
|
46215
|
+
[20.81448, 43.27205],
|
|
46216
|
+
[20.95651, 43.13094],
|
|
46217
|
+
[21.143395, 43.06868500000013],
|
|
46218
|
+
[21.27421, 42.90959],
|
|
46219
|
+
[21.43866, 42.86255],
|
|
46220
|
+
[21.63302, 42.67717],
|
|
46221
|
+
[21.77505, 42.6827],
|
|
46222
|
+
[21.66292, 42.43922],
|
|
46223
|
+
[21.54332, 42.3202500000001],
|
|
46224
|
+
[21.57663598940212, 42.24522439706186],
|
|
46225
|
+
[21.35270000000014, 42.2068],
|
|
46226
|
+
[20.76216, 42.05186],
|
|
46227
|
+
[20.71731000000011, 41.84711],
|
|
46228
|
+
[20.590246546680227, 41.855408919283626],
|
|
46229
|
+
],
|
|
46230
|
+
],
|
|
46231
|
+
},
|
|
46232
|
+
},
|
|
46194
46233
|
],
|
|
46195
46234
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import geoJsonUrl from '@eeacms/volto-cca-policy/cntrg.data';
|
|
3
3
|
|
|
4
|
-
const projection = 'EPSG:4326';
|
|
4
|
+
// const projection = 'EPSG:4326';
|
|
5
|
+
const projection = 'EPSG:3857';
|
|
5
6
|
|
|
6
7
|
export const withGeoJsonData = (WrappedComponent) => {
|
|
7
8
|
function Wrapper(props) {
|