import { getFloorMapDisplayLocale } from '@pisell/materials';
import { locales } from '@pisell/utils';
import topologyLocaleTexts from "./locales";

/** 供 `locales.init` 使用：合并 `zh`/`tc` 到标准 `zh-CN`/`zh-HK` 桶 */
export function normalizeTopologyLocaleMaps(maps) {
  var _maps$en, _ref, _maps$zhCN, _ref2, _maps$zhHK;
  return {
    en: (_maps$en = maps.en) !== null && _maps$en !== void 0 ? _maps$en : {},
    'zh-CN': (_ref = (_maps$zhCN = maps['zh-CN']) !== null && _maps$zhCN !== void 0 ? _maps$zhCN : maps.zh) !== null && _ref !== void 0 ? _ref : {},
    'zh-HK': (_ref2 = (_maps$zhHK = maps['zh-HK']) !== null && _maps$zhHK !== void 0 ? _maps$zhHK : maps.tc) !== null && _ref2 !== void 0 ? _ref2 : {}
  };
}

/**
 * 与 PisellFloorMapLayout 使用同一套语言解析（storage `umi_locale` → getCurrentLocale）。
 * 勿单独读 `engine.props.locale`：低代码里常为 en-US，会盖掉宿主/存储里的 zh-CN。
 */
export function resolveTopologyDisplayLocale(engineCtx) {
  return getFloorMapDisplayLocale(engineCtx);
}

/**
 * 直接从拓扑语言包按指定语言取文案，**不依赖全局激活语言**（floor map 组件会用引擎
 * locale 反复 `init` 冲掉全局激活语言，故此处不走 `locales.getText`），缺失时回退英文。
 *
 * @returns 命中文案；若 key 不存在则返回 undefined（调用方可决定兜底）。
 */
export function getTopologyText(id, displayLocale) {
  var _ref3, _ref4, _ref5, _ref6, _maps$lang$id, _maps$lang, _maps$zhCN2, _maps$zh, _maps$zhHK2, _maps$tc, _maps$en2;
  var lang = locales.formatLocale(displayLocale);
  var maps = topologyLocaleTexts;
  return (_ref3 = (_ref4 = (_ref5 = (_ref6 = (_maps$lang$id = (_maps$lang = maps[lang]) === null || _maps$lang === void 0 ? void 0 : _maps$lang[id]) !== null && _maps$lang$id !== void 0 ? _maps$lang$id : (_maps$zhCN2 = maps['zh-CN']) === null || _maps$zhCN2 === void 0 ? void 0 : _maps$zhCN2[id]) !== null && _ref6 !== void 0 ? _ref6 : (_maps$zh = maps.zh) === null || _maps$zh === void 0 ? void 0 : _maps$zh[id]) !== null && _ref5 !== void 0 ? _ref5 : (_maps$zhHK2 = maps['zh-HK']) === null || _maps$zhHK2 === void 0 ? void 0 : _maps$zhHK2[id]) !== null && _ref4 !== void 0 ? _ref4 : (_maps$tc = maps.tc) === null || _maps$tc === void 0 ? void 0 : _maps$tc[id]) !== null && _ref3 !== void 0 ? _ref3 : (_maps$en2 = maps.en) === null || _maps$en2 === void 0 ? void 0 : _maps$en2[id];
}
export function getTopologyCanvasDevicesName(displayLocale) {
  var _getTopologyText;
  return (_getTopologyText = getTopologyText('pisell-topology.canvas.devices', displayLocale)) !== null && _getTopologyText !== void 0 ? _getTopologyText : '设备';
}
export function getTopologyCategoryDevicesLabel(displayLocale) {
  var _getTopologyText2;
  return (_getTopologyText2 = getTopologyText('pisell-topology.category.devices', displayLocale)) !== null && _getTopologyText2 !== void 0 ? _getTopologyText2 : '设备';
}
export function getTopologyCategoryAreaLabel(displayLocale) {
  var _getTopologyText3;
  return (_getTopologyText3 = getTopologyText('pisell-topology.category.area', displayLocale)) !== null && _getTopologyText3 !== void 0 ? _getTopologyText3 : '分区';
}