protomaps-themes-base
Version:
Protomaps basemap themes for MapLibre GL JS
1 lines • 14.2 kB
Source Map (JSON)
{"version":3,"sources":["/Users/bdon/workspace/protomaps/basemaps/styles/dist/cjs/index.cjs","../../src/language.ts"],"names":["get_name_block","script_segment","regular","script"],"mappings":"AAAA,6EAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CCA3Y,SAASA,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CACA,CACA,IAAIC,CAAAA,CAAS,QAAA,CAEb,OAAIF,CAAAA,GAAmB,MAAA,CACrBE,CAAAA,CAAS,QAAA,CACAF,CAAAA,GAAmB,OAAA,CAC5BE,CAAAA,CAAS,SAAA,CACAF,CAAAA,GAAmB,OAAA,EAAA,CAC5BE,CAAAA,CAAS,SAAA,CAAA,CAGJ,CACL,CAAC,UAAA,CAAY,CAAC,KAAA,CAAO,CAAA,IAAA,EAAOF,CAAc,CAAA,CAAA;AAwJY;AAkBlD;AAkBE;AAcA;AAoBF;AAGA;AAGA;AAkBE;AAGA;AAeA;AAGA;AAcA;AAGA;AA8DA","file":"/Users/bdon/workspace/protomaps/basemaps/styles/dist/cjs/index.cjs","sourcesContent":[null,"function get_name_block(\n script_segment: \"name\" | \"name2\" | \"name3\",\n regular?: string,\n) {\n let script = \"script\";\n\n if (script_segment === \"name\") {\n script = \"script\";\n } else if (script_segment === \"name2\") {\n script = \"script2\";\n } else if (script_segment === \"name3\") {\n script = \"script3\";\n }\n\n return [\n [\"coalesce\", [\"get\", `pgf:${script_segment}`], [\"get\", script_segment]],\n {\n \"text-font\": [\n \"case\",\n [\"==\", [\"get\", script], \"Devanagari\"],\n [\"literal\", [\"Noto Sans Devanagari Regular v1\"]],\n [\"literal\", [regular || \"Noto Sans Regular\"]],\n ],\n },\n ];\n}\n\nfunction is_not_in_target_script(\n lang: string,\n script: string,\n script_segment: \"name\" | \"name2\" | \"name3\",\n) {\n let suffix = \"name\";\n if (script_segment === \"name\") {\n suffix = \"\";\n } else if (script_segment === \"name2\") {\n suffix = \"2\";\n } else if (script_segment === \"name3\") {\n suffix = \"3\";\n }\n\n if (script === \"Latin\") {\n return [\"has\", `script${suffix}`];\n }\n\n if (lang === \"ja\") {\n return [\n \"all\",\n [\"!=\", [\"get\", `script${suffix}`], \"Han\"],\n [\"!=\", [\"get\", `script${suffix}`], \"Hiragana\"],\n [\"!=\", [\"get\", `script${suffix}`], \"Katakana\"],\n [\"!=\", [\"get\", `script${suffix}`], \"Mixed-Japanese\"],\n ];\n }\n\n return [\"!=\", [\"get\", `script${suffix}`], script];\n}\n\nfunction get_font_formatting(script: string) {\n if (script === \"Devanagari\") {\n return {\n \"text-font\": [\"literal\", [\"Noto Sans Devanagari Regular v1\"]],\n };\n }\n return {};\n}\n\nfunction get_default_script(lang: string) {\n const pair = language_script_pairs.find((d) => d.lang === lang);\n return pair === undefined ? \"Latin\" : pair.script;\n}\n\nexport function get_country_name(lang: string, script?: string) {\n const _script = script || get_default_script(lang);\n let name_prefix: string;\n if (_script === \"Devanagari\") {\n name_prefix = \"pgf:\";\n } else {\n name_prefix = \"\";\n }\n return [\n \"format\",\n [\"coalesce\", [\"get\", `${name_prefix}name:${lang}`], [\"get\", \"name:en\"]],\n get_font_formatting(_script),\n ];\n}\n\nexport function get_multiline_name(\n lang: string,\n script?: string,\n regular?: string,\n) {\n const _script = script || get_default_script(lang);\n let name_prefix: string;\n if (_script === \"Devanagari\") {\n name_prefix = \"pgf:\";\n } else {\n name_prefix = \"\";\n }\n\n const result = [\n \"case\",\n [\n \"all\",\n [\"any\", [\"has\", \"name\"], [\"has\", \"pgf:name\"]],\n [\"!\", [\"any\", [\"has\", \"name2\"], [\"has\", \"pgf:name2\"]]],\n [\"!\", [\"any\", [\"has\", \"name3\"], [\"has\", \"pgf:name3\"]]],\n ],\n // The local name has 1 script segment: `name`\n [\n \"case\",\n is_not_in_target_script(lang, _script, \"name\"),\n // `name` is not in the target script\n [\n \"case\",\n [\"any\", [\"is-supported-script\", [\"get\", \"name\"]], [\"has\", \"pgf:name\"]],\n // `name` can be rendered correctly\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"name:en\"], // Always fallback to English\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n [\n \"case\",\n [\n \"all\",\n [\"!\", [\"has\", `${name_prefix}name:${lang}`]],\n [\"has\", \"name:en\"],\n [\"!\", [\"has\", \"script\"]],\n ],\n // We did fallback to English in the first line and `name` is Latin\n \"\",\n [\"coalesce\", [\"get\", \"pgf:name\"], [\"get\", \"name\"]],\n ],\n {\n \"text-font\": [\n \"case\",\n [\"==\", [\"get\", \"script\"], \"Devanagari\"],\n [\"literal\", [\"Noto Sans Devanagari Regular v1\"]],\n [\"literal\", [regular || \"Noto Sans Regular\"]],\n ],\n },\n ],\n // `name` cannot be rendered correctly, fallback to `name:en`\n [\"get\", \"name:en\"],\n ],\n // `name` is in the target script\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name\"],\n [\"get\", \"name\"],\n ],\n get_font_formatting(_script),\n ],\n ],\n [\n \"all\",\n [\"any\", [\"has\", \"name\"], [\"has\", \"pgf:name\"]],\n [\"any\", [\"has\", \"name2\"], [\"has\", \"pgf:name2\"]],\n [\"!\", [\"any\", [\"has\", \"name3\"], [\"has\", \"pgf:name3\"]]],\n ],\n // The local name has 2 script segments: `name` and `name2`\n [\n \"case\",\n [\n \"all\",\n is_not_in_target_script(lang, _script, \"name\"),\n is_not_in_target_script(lang, _script, \"name2\"),\n ],\n // Both `name` and `name2` are not in the target script\n [\n \"format\",\n [\"get\", `${name_prefix}name:${lang}`],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name\"),\n \"\\n\",\n {},\n ...get_name_block(\"name2\"),\n ],\n // Either `name` or `name2` is in the target script\n [\n \"case\",\n is_not_in_target_script(lang, _script, \"name2\"),\n // `name2` is not in the target script, therefore `name` is in the target script\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name\"],\n [\"get\", \"name\"],\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name2\"),\n ],\n // `name2` is in the target script, therefore `name` is not in the target script\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name2\"],\n [\"get\", \"name2\"],\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name\"),\n ],\n ],\n ],\n // The local name has 3 script segments: `name`, `name2`, and `name3`\n [\n \"case\",\n [\n \"all\",\n is_not_in_target_script(lang, _script, \"name\"),\n is_not_in_target_script(lang, _script, \"name2\"),\n is_not_in_target_script(lang, _script, \"name3\"),\n ],\n // All three `name`, `name2`, and `name3` are not in the target script\n [\n \"format\",\n [\"get\", `${name_prefix}name:${lang}`],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name\"),\n \"\\n\",\n {},\n ...get_name_block(\"name2\"),\n \"\\n\",\n {},\n ...get_name_block(\"name3\"),\n ],\n // Exactly one of the 3 script segments `name`, `name2`, or `name3` is in the target script\n [\n \"case\",\n [\"!\", is_not_in_target_script(lang, _script, \"name\")],\n // `name` is in the target script, and `name2` and `name3` are not\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name\"],\n [\"get\", \"name\"],\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name2\"),\n \"\\n\",\n {},\n ...get_name_block(\"name3\"),\n ],\n [\"!\", is_not_in_target_script(lang, _script, \"name2\")],\n // `name2` is in the target script, and `name` and `name3` are not\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name2\"],\n [\"get\", \"name2\"],\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name\"),\n \"\\n\",\n {},\n ...get_name_block(\"name3\"),\n ],\n // `name3` is in the target script, and `name` and `name2` are not\n [\n \"format\",\n [\n \"coalesce\",\n [\"get\", `${name_prefix}name:${lang}`],\n [\"get\", \"pgf:name3\"],\n [\"get\", \"name3\"],\n ],\n get_font_formatting(_script),\n \"\\n\",\n {},\n ...get_name_block(\"name\"),\n \"\\n\",\n {},\n ...get_name_block(\"name2\"),\n ],\n ],\n ],\n ];\n return result;\n}\n\nexport const language_script_pairs = [\n {\n lang: \"ar\",\n full_name: \"Arabic\",\n script: \"Arabic\",\n },\n {\n lang: \"cs\",\n full_name: \"Czech\",\n script: \"Latin\",\n },\n {\n lang: \"bg\",\n full_name: \"Bulgarian\",\n script: \"Cyrillic\",\n },\n {\n lang: \"da\",\n full_name: \"Danish\",\n script: \"Latin\",\n },\n {\n lang: \"de\",\n full_name: \"German\",\n script: \"Latin\",\n },\n {\n lang: \"el\",\n full_name: \"Greek\",\n script: \"Greek\",\n },\n {\n lang: \"en\",\n full_name: \"English\",\n script: \"Latin\",\n },\n {\n lang: \"es\",\n full_name: \"Spanish\",\n script: \"Latin\",\n },\n {\n lang: \"et\",\n full_name: \"Estonian\",\n script: \"Latin\",\n },\n {\n lang: \"fa\",\n full_name: \"Persian\",\n script: \"Arabic\",\n },\n {\n lang: \"fi\",\n full_name: \"Finnish\",\n script: \"Latin\",\n },\n {\n lang: \"fr\",\n full_name: \"French\",\n script: \"Latin\",\n },\n {\n lang: \"ga\",\n full_name: \"Irish\",\n script: \"Latin\",\n },\n {\n lang: \"he\",\n full_name: \"Hebrew\",\n script: \"Hebrew\",\n },\n {\n lang: \"hi\",\n full_name: \"Hindi\",\n script: \"Devanagari\",\n },\n {\n lang: \"hr\",\n full_name: \"Croatian\",\n script: \"Latin\",\n },\n {\n lang: \"hu\",\n full_name: \"Hungarian\",\n script: \"Latin\",\n },\n {\n lang: \"id\",\n full_name: \"Indonesian\",\n script: \"Latin\",\n },\n {\n lang: \"it\",\n full_name: \"Italian\",\n script: \"Latin\",\n },\n {\n lang: \"ja\",\n full_name: \"Japanese\",\n // Japanese is a special case, using multiple scripts\n script: \"\",\n },\n {\n lang: \"ko\",\n full_name: \"Korean\",\n script: \"Hangul\",\n },\n {\n lang: \"lt\",\n full_name: \"Lithuanian\",\n script: \"Latin\",\n },\n {\n lang: \"lv\",\n full_name: \"Latvian\",\n script: \"Latin\",\n },\n {\n lang: \"ne\",\n full_name: \"Nepali\",\n script: \"Devanagari\",\n },\n {\n lang: \"nl\",\n full_name: \"Dutch\",\n script: \"Latin\",\n },\n {\n lang: \"no\",\n full_name: \"Norwegian\",\n script: \"Latin\",\n },\n {\n lang: \"mr\",\n full_name: \"Marathi\",\n script: \"Devanagari\",\n },\n {\n lang: \"mt\",\n full_name: \"Maltese\",\n script: \"Latin\",\n },\n {\n lang: \"pl\",\n full_name: \"Polish\",\n script: \"Latin\",\n },\n {\n lang: \"pt\",\n full_name: \"Portuguese\",\n script: \"Latin\",\n },\n {\n lang: \"ro\",\n full_name: \"Romanian\",\n script: \"Latin\",\n },\n {\n lang: \"ru\",\n full_name: \"Russian\",\n script: \"Cyrillic\",\n },\n {\n lang: \"sk\",\n full_name: \"Slovak\",\n script: \"Latin\",\n },\n {\n lang: \"sl\",\n full_name: \"Slovenian\",\n script: \"Latin\",\n },\n {\n lang: \"sv\",\n full_name: \"Swedish\",\n script: \"Latin\",\n },\n {\n lang: \"tr\",\n full_name: \"Turkish\",\n script: \"Latin\",\n },\n {\n lang: \"uk\",\n full_name: \"Ukrainian\",\n script: \"Cyrillic\",\n },\n {\n lang: \"ur\",\n full_name: \"Urdu\",\n script: \"Arabic\",\n },\n {\n lang: \"vi\",\n full_name: \"Vietnamese\",\n script: \"Latin\",\n },\n {\n lang: \"zh-Hans\",\n full_name: \"Chinese (Simplified)\",\n script: \"Han\",\n },\n {\n lang: \"zh-Hant\",\n full_name: \"Chinese (Traditional)\",\n script: \"Han\",\n },\n];\n"]}