{"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,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CCA9E,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;AAgInB;AA0CnB;AAkBE;AAcA;AAoBF;AAGA;AAGA;AAkBE;AAGA;AAeA;AAGA;AAcA;AAGA;AA4BN","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\", regular),\n        \"\\n\",\n        {},\n        ...get_name_block(\"name2\", regular),\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\", regular),\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\", regular),\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\", regular),\n        \"\\n\",\n        {},\n        ...get_name_block(\"name2\", regular),\n        \"\\n\",\n        {},\n        ...get_name_block(\"name3\", regular),\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\", regular),\n          \"\\n\",\n          {},\n          ...get_name_block(\"name3\", regular),\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\", regular),\n          \"\\n\",\n          {},\n          ...get_name_block(\"name3\", regular),\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\", regular),\n          \"\\n\",\n          {},\n          ...get_name_block(\"name2\", regular),\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"]}