diff --git a/features/features.json b/features/features.json index 68ca9199..a716b9e3 100644 --- a/features/features.json +++ b/features/features.json @@ -107,7 +107,8 @@ { "version": 2, "id": "profile-flag", - "versionAdded": "v3.5.0" + "versionAdded": "v3.5.0", + "versionUpdated": "v3.10.0" }, { "version": 2, diff --git a/features/profile-flag/data.json b/features/profile-flag/data.json index 5f3556a6..aaf0aa66 100644 --- a/features/profile-flag/data.json +++ b/features/profile-flag/data.json @@ -7,5 +7,6 @@ "type": ["Website"], "tags": ["New"], "dynamic": true, - "scripts": [{ "file": "script.js", "runOn": "/users/*", "module": true }] -} + "styles": [{ "file": "style.css", "runOn": "/users/*" }], + "scripts": [{ "file": "script.js", "runOn": "/users/*" }] +} \ No newline at end of file diff --git a/features/profile-flag/script.js b/features/profile-flag/script.js index f9b70766..6edd2661 100644 --- a/features/profile-flag/script.js +++ b/features/profile-flag/script.js @@ -1,5 +1,4 @@ -export default async function ({ feature, console }) { - window.feature = feature +export default async function ({ feature }) { const locationElement = await ScratchTools.waitForElement( "p.profile-details > span.location" ); @@ -7,227 +6,26 @@ export default async function ({ feature, console }) { const locationText = locationElement.textContent.trim(); const countryFlag = getCountryFlag(locationText); if (!countryFlag) return; - const flagElement = document.createElement("span"); - flagElement.textContent = countryFlag; - flagElement.style.marginRight = "4px"; - feature.self.hideOnDisable(flagElement); - locationElement.insertBefore(flagElement, locationElement.firstChild); - function getCountryFlag(locationText) { - const flags = { - Afghanistan: "๐Ÿ‡ฆ๐Ÿ‡ซ", - Albania: "๐Ÿ‡ฆ๐Ÿ‡ฑ", - Algeria: "๐Ÿ‡ฉ๐Ÿ‡ฟ", - "American Somoa": "๐Ÿ‡ฆ๐Ÿ‡ธ", - Andorra: "๐Ÿ‡ฆ๐Ÿ‡ฉ", - Angola: "๐Ÿ‡ฆ๐Ÿ‡ด", - "Antigua and Barbuda": "๐Ÿ‡ฆ๐Ÿ‡ฌ", - Argentina: "๐Ÿ‡ฆ๐Ÿ‡ท", - Armenia: "๐Ÿ‡ฆ๐Ÿ‡ฒ", - Australia: "๐Ÿ‡ฆ๐Ÿ‡บ", - Austria: "๐Ÿ‡ฆ๐Ÿ‡น", - Azerbaijan: "๐Ÿ‡ฆ๐Ÿ‡ฟ", - "Bahamas, The": "๐Ÿ‡ง๐Ÿ‡ธ", - Bahrain: "๐Ÿ‡ง๐Ÿ‡ญ", - Bangladesh: "๐Ÿ‡ง๐Ÿ‡ฉ", - Barbados: "๐Ÿ‡ง๐Ÿ‡ง", - Belarus: "๐Ÿ‡ง๐Ÿ‡พ", - Belgium: "๐Ÿ‡ง๐Ÿ‡ช", - Belize: "๐Ÿ‡ง๐Ÿ‡ฟ", - Benin: "๐Ÿ‡ง๐Ÿ‡ฏ", - Bhutan: "๐Ÿ‡ง๐Ÿ‡น", - Bolivia: "๐Ÿ‡ง๐Ÿ‡ด", - "Bosnia and Herzegovina": "๐Ÿ‡ง๐Ÿ‡ฆ", - Botswana: "๐Ÿ‡ง๐Ÿ‡ผ", - Brazil: "๐Ÿ‡ง๐Ÿ‡ท", - Brunei: "๐Ÿ‡ง๐Ÿ‡ณ", - Bulgaria: "๐Ÿ‡ง๐Ÿ‡ฌ", - "Burkina Faso": "๐Ÿ‡ง๐Ÿ‡ซ", - Burma: "๐Ÿ‡ฒ๐Ÿ‡ฒ", - Burundi: "๐Ÿ‡ง๐Ÿ‡ฎ", - "Cabo Verde": "๐Ÿ‡จ๐Ÿ‡ป", - Cambodia: "๐Ÿ‡ฐ๐Ÿ‡ญ", - Cameroon: "๐Ÿ‡จ๐Ÿ‡ฒ", - Canada: "๐Ÿ‡จ๐Ÿ‡ฆ", - "Central African Republic": "๐Ÿ‡จ๐Ÿ‡ซ", - Chad: "๐Ÿ‡น๐Ÿ‡ฉ", - Chile: "๐Ÿ‡จ๐Ÿ‡ฑ", - China: "๐Ÿ‡จ๐Ÿ‡ณ", - Colombia: "๐Ÿ‡จ๐Ÿ‡ด", - Comoros: "๐Ÿ‡ฐ๐Ÿ‡ฒ", - "Congo Free State, The": "๐Ÿ‡จ๐Ÿ‡ฌ", - "Costa Rica": "๐Ÿ‡จ๐Ÿ‡ท", - "Cote dโ€™Ivoire (Ivory Coast)": "๐Ÿ‡จ๐Ÿ‡ฎ", - Croatia: "๐Ÿ‡ญ๐Ÿ‡ท", - Cuba: "๐Ÿ‡จ๐Ÿ‡บ", - Cyprus: "๐Ÿ‡จ๐Ÿ‡พ", - Czechia: "๐Ÿ‡จ๐Ÿ‡ฟ", - Czechoslovakia: "๐Ÿ‡จ๐Ÿ‡ฟ", - "Democratic Republic of the Congo": "๐Ÿ‡จ๐Ÿ‡ฉ", - Denmark: "๐Ÿ‡ฉ๐Ÿ‡ฐ", - Djibouti: "๐Ÿ‡ฉ๐Ÿ‡ฏ", - Dominica: "๐Ÿ‡ฉ๐Ÿ‡ฒ", - "Dominican Republic": "๐Ÿ‡ฉ๐Ÿ‡ด", - "East Germany (German Democratic Republic)": "๐Ÿ‡ฉ๐Ÿ‡ช", - Ecuador: "๐Ÿ‡ช๐Ÿ‡จ", - Egypt: "๐Ÿ‡ช๐Ÿ‡ฌ", - "El Salvador": "๐Ÿ‡ธ๐Ÿ‡ป", - "Equatorial Guinea": "๐Ÿ‡ฌ๐Ÿ‡ถ", - Eritrea: "๐Ÿ‡ช๐Ÿ‡ท", - Estonia: "๐Ÿ‡ช๐Ÿ‡ช", - Eswatini: "๐Ÿ‡ธ๐Ÿ‡ฟ", - Ethiopia: "๐Ÿ‡ช๐Ÿ‡น", - Fiji: "๐Ÿ‡ซ๐Ÿ‡ฏ", - Finland: "๐Ÿ‡ซ๐Ÿ‡ฎ", - France: "๐Ÿ‡ซ๐Ÿ‡ท", - Gabon: "๐Ÿ‡ฌ๐Ÿ‡ฆ", - "Gambia, The": "๐Ÿ‡ฌ๐Ÿ‡ฒ", - Georgia: "๐Ÿ‡ฌ๐Ÿ‡ช", - Germany: "๐Ÿ‡ฉ๐Ÿ‡ช", - Ghana: "๐Ÿ‡ฌ๐Ÿ‡ญ", - Greece: "๐Ÿ‡ฌ๐Ÿ‡ท", - Grenada: "๐Ÿ‡ฌ๐Ÿ‡ฉ", - Guatemala: "๐Ÿ‡ฌ๐Ÿ‡น", - Guinea: "๐Ÿ‡ฌ๐Ÿ‡ณ", - "Guinea-Bissau": "๐Ÿ‡ฌ๐Ÿ‡ผ", - Guyana: "๐Ÿ‡ฌ๐Ÿ‡พ", - Haiti: "๐Ÿ‡ญ๐Ÿ‡น", - Hanover: "๐Ÿ‡ฉ๐Ÿ‡ช", - "Hanseatic Republics": "๐Ÿ‡ฉ๐Ÿ‡ช", - Hawaii: "๐Ÿ‡บ๐Ÿ‡ธ", - Hesse: "๐Ÿ‡ฉ๐Ÿ‡ช", - "Holy See": "๐Ÿ‡ป๐Ÿ‡ฆ", - Honduras: "๐Ÿ‡ญ๐Ÿ‡ณ", - Hungary: "๐Ÿ‡ญ๐Ÿ‡บ", - Iceland: "๐Ÿ‡ฎ๐Ÿ‡ธ", - India: "๐Ÿ‡ฎ๐Ÿ‡ณ", - Indonesia: "๐Ÿ‡ฎ๐Ÿ‡ฉ", - Iran: "๐Ÿ‡ฎ๐Ÿ‡ท", - Iraq: "๐Ÿ‡ฎ๐Ÿ‡ถ", - Ireland: "๐Ÿ‡ฎ๐Ÿ‡ช", - Israel: "๐Ÿ‡ฎ๐Ÿ‡ฑ", - Italy: "๐Ÿ‡ฎ๐Ÿ‡น", - Jamaica: "๐Ÿ‡ฏ๐Ÿ‡ฒ", - Japan: "๐Ÿ‡ฏ๐Ÿ‡ต", - Jordan: "๐Ÿ‡ฏ๐Ÿ‡ด", - Kazakhstan: "๐Ÿ‡ฐ๐Ÿ‡ฟ", - Kenya: "๐Ÿ‡ฐ๐Ÿ‡ช", - Serbia: "๐Ÿ‡ท๐Ÿ‡ธ", - Kiribati: "๐Ÿ‡ฐ๐Ÿ‡ฎ", - Korea: "๐Ÿ‡ฐ๐Ÿ‡ต", - Kosovo: "๐Ÿ‡ฝ๐Ÿ‡ฐ", - Kuwait: "๐Ÿ‡ฐ๐Ÿ‡ผ", - Kyrgyzstan: "๐Ÿ‡ฐ๐Ÿ‡ฌ", - Laos: "๐Ÿ‡ฑ๐Ÿ‡ฆ", - Latvia: "๐Ÿ‡ฑ๐Ÿ‡ป", - Lebanon: "๐Ÿ‡ฑ๐Ÿ‡ง", - Lesotho: "๐Ÿ‡ฑ๐Ÿ‡ธ", - Liberia: "๐Ÿ‡ฑ๐Ÿ‡ท", - Libya: "๐Ÿ‡ฑ๐Ÿ‡พ", - Liechtenstein: "๐Ÿ‡ฑ๐Ÿ‡ฎ", - Lithuania: "๐Ÿ‡ฑ๐Ÿ‡น", - Luxembourg: "๐Ÿ‡ฑ๐Ÿ‡บ", - Madagascar: "๐Ÿ‡ฒ๐Ÿ‡ฌ", - Malawi: "๐Ÿ‡ฒ๐Ÿ‡ผ", - Malaysia: "๐Ÿ‡ฒ๐Ÿ‡พ", - Maldives: "๐Ÿ‡ฒ๐Ÿ‡ป", - Mali: "๐Ÿ‡ฒ๐Ÿ‡ฑ", - Malta: "๐Ÿ‡ฒ๐Ÿ‡น", - "Marshall Islands": "๐Ÿ‡ฒ๐Ÿ‡ญ", - Mauritania: "๐Ÿ‡ฒ๐Ÿ‡ท", - Mauritius: "๐Ÿ‡ฒ๐Ÿ‡บ", - Mexico: "๐Ÿ‡ฒ๐Ÿ‡ฝ", - Micronesia: "๐Ÿ‡ซ๐Ÿ‡ฒ", - Moldova: "๐Ÿ‡ฒ๐Ÿ‡ฉ", - Monaco: "๐Ÿ‡ฒ๐Ÿ‡จ", - Mongolia: "๐Ÿ‡ฒ๐Ÿ‡ณ", - Montenegro: "๐Ÿ‡ฒ๐Ÿ‡ช", - Morocco: "๐Ÿ‡ฒ๐Ÿ‡ฆ", - Mozambique: "๐Ÿ‡ฒ๐Ÿ‡ฟ", - Namibia: "๐Ÿ‡ณ๐Ÿ‡ฆ", - Nauru: "๐Ÿ‡ณ๐Ÿ‡ท", - Nepal: "๐Ÿ‡ณ๐Ÿ‡ต", - Netherlands: "๐Ÿ‡ณ๐Ÿ‡ฑ", - "New Zealand": "๐Ÿ‡ณ๐Ÿ‡ฟ", - Nicaragua: "๐Ÿ‡ณ๐Ÿ‡ฎ", - Niger: "๐Ÿ‡ณ๐Ÿ‡ช", - Nigeria: "๐Ÿ‡ณ๐Ÿ‡ฌ", - "North Macedonia": "๐Ÿ‡ฒ๐Ÿ‡ฐ", - "Northern Mariana Islands": "๐Ÿ‡ฒ๐Ÿ‡ต", - Norway: "๐Ÿ‡ณ๐Ÿ‡ด", - Oman: "๐Ÿ‡ด๐Ÿ‡ฒ", - Pakistan: "๐Ÿ‡ต๐Ÿ‡ฐ", - Palau: "๐Ÿ‡ต๐Ÿ‡ผ", - "Palestine, State of": "๐Ÿ‡ต๐Ÿ‡ธ", - Panama: "๐Ÿ‡ต๐Ÿ‡ฆ", - "Papua New Guinea": "๐Ÿ‡ต๐Ÿ‡ฌ", - Paraguay: "๐Ÿ‡ต๐Ÿ‡พ", - Peru: "๐Ÿ‡ต๐Ÿ‡ช", - Philippines: "๐Ÿ‡ต๐Ÿ‡ญ", - Poland: "๐Ÿ‡ต๐Ÿ‡ฑ", - Portugal: "๐Ÿ‡ต๐Ÿ‡น", - Qatar: "๐Ÿ‡ถ๐Ÿ‡ฆ", - Romania: "๐Ÿ‡ท๐Ÿ‡ด", - Russia: "๐Ÿ‡ท๐Ÿ‡บ", - Rwanda: "๐Ÿ‡ท๐Ÿ‡ผ", - "Saint Kitts and Nevis": "๐Ÿ‡ฐ๐Ÿ‡ณ", - "Saint Lucia": "๐Ÿ‡ฑ๐Ÿ‡จ", - "Saint Vincent and the Grenadines": "๐Ÿ‡ป๐Ÿ‡จ", - Samoa: "๐Ÿ‡ผ๐Ÿ‡ธ", - "San Marino": "๐Ÿ‡ธ๐Ÿ‡ฒ", - "Sao Tome and Principe": "๐Ÿ‡ธ๐Ÿ‡น", - "Saudi Arabia": "๐Ÿ‡ธ๐Ÿ‡ฆ", - Senegal: "๐Ÿ‡ธ๐Ÿ‡ณ", - Serbia: "๐Ÿ‡ท๐Ÿ‡ธ", - Seychelles: "๐Ÿ‡ธ๐Ÿ‡จ", - "Sierra Leone": "๐Ÿ‡ธ๐Ÿ‡ฑ", - Singapore: "๐Ÿ‡ธ๐Ÿ‡ฌ", - Slovakia: "๐Ÿ‡ธ๐Ÿ‡ฐ", - Slovenia: "๐Ÿ‡ธ๐Ÿ‡ฎ", - "Solomon Islands": "๐Ÿ‡ธ๐Ÿ‡ง", - Somalia: "๐Ÿ‡ธ๐Ÿ‡ด", - "South Africa": "๐Ÿ‡ฟ๐Ÿ‡ฆ", - "South Sudan": "๐Ÿ‡ธ๐Ÿ‡ธ", - Spain: "๐Ÿ‡ช๐Ÿ‡ธ", - "Sri Lanka": "๐Ÿ‡ฑ๐Ÿ‡ฐ", - Sudan: "๐Ÿ‡ธ๐Ÿ‡ฉ", - Suriname: "๐Ÿ‡ธ๐Ÿ‡ท", - Sweden: "๐Ÿ‡ธ๐Ÿ‡ช", - Switzerland: "๐Ÿ‡จ๐Ÿ‡ญ", - Syria: "๐Ÿ‡ธ๐Ÿ‡พ", - Taiwan: "๐Ÿ‡น๐Ÿ‡ผ", - Tajikistan: "๐Ÿ‡น๐Ÿ‡ฏ", - Tanzania: "๐Ÿ‡น๐Ÿ‡ฟ", - Thailand: "๐Ÿ‡น๐Ÿ‡ญ", - "Timor-Leste": "๐Ÿ‡น๐Ÿ‡ฑ", - Togo: "๐Ÿ‡น๐Ÿ‡ฌ", - Tonga: "๐Ÿ‡น๐Ÿ‡ด", - "Trinidad and Tobago": "๐Ÿ‡น๐Ÿ‡น", - Tunisia: "๐Ÿ‡น๐Ÿ‡ณ", - Turkey: "๐Ÿ‡น๐Ÿ‡ท", - Turkmenistan: "๐Ÿ‡น๐Ÿ‡ฒ", - Tuvalu: "๐Ÿ‡น๐Ÿ‡ป", - Uganda: "๐Ÿ‡บ๐Ÿ‡ฌ", - Ukraine: "๐Ÿ‡บ๐Ÿ‡ฆ", - "United Arab Emirates": "๐Ÿ‡ฆ๐Ÿ‡ช", - "United Kingdom": "๐Ÿ‡ฌ๐Ÿ‡ง", - "United States": "๐Ÿ‡บ๐Ÿ‡ธ", - Uruguay: "๐Ÿ‡บ๐Ÿ‡พ", - Uzbekistan: "๐Ÿ‡บ๐Ÿ‡ฟ", - Vanuatu: "๐Ÿ‡ป๐Ÿ‡บ", - Venezuela: "๐Ÿ‡ป๐Ÿ‡ช", - Vietnam: "๐Ÿ‡ป๐Ÿ‡ณ", - Yemen: "๐Ÿ‡พ๐Ÿ‡ช", - Zambia: "๐Ÿ‡ฟ๐Ÿ‡ฒ", - Zimbabwe: "๐Ÿ‡ฟ๐Ÿ‡ผ", - Antarctica: "๐Ÿ‡ฆ๐Ÿ‡ถ", - "French Southern Territories": "๐Ÿ‡น๐Ÿ‡ซ", - "Bonaire, Sint Eustatius and Saba": " ๐Ÿ‡ง๐Ÿ‡ถ", - "Christmas Island": "๐Ÿ‡จ๐Ÿ‡ฝ", - "Heard Island and McDonald Islands": "๐Ÿ‡ญ๐Ÿ‡ฒ", - "Location not given": "โ“", - }; + const imgElement = new Image(); + imgElement.src = countryFlag; + + ScratchTools.appendToSharedSpace({ + space: "afterProfileCountry", + element: imgElement, + order: -1, + }); - return flags[locationText] || ""; + feature.self.hideOnDisable(locationHolder); + + function getCountryFlag(locationText) { + const GithubUrl = "https://raw.githubusercontent.com/STForScratch/data/main/flags/"; + const countryName = locationText.toLowerCase() + .replaceAll(" ", "-") + .replaceAll("(", "") + .replaceAll(")", "") + .replaceAll(",", "") + .replaceAll(".", "") + ".svg"; + return GithubUrl + countryName; } -} +} \ No newline at end of file diff --git a/features/profile-flag/style.css b/features/profile-flag/style.css new file mode 100644 index 00000000..4eac1182 --- /dev/null +++ b/features/profile-flag/style.css @@ -0,0 +1,8 @@ +.location img { + width: 15px; + height: auto; + margin-top: -1rem; + position: relative; + bottom: -.25rem; + margin-left: .4rem; +}