{"version":3,"file":"format.mjs","sources":["../../../../packages/locale/format.js"],"sourcesContent":["import { hasOwn } from '@touchvue/utils';\n\nconst RE_NARGS = /(%|)\\{([0-9a-zA-Z_]+)\\}/g;\n/**\n *\tString format template\n *\t- Inspired:\n *\t\thttps://github.com/Matt-Esch/string-template/index.js\n */\nexport default function () {\n  /**\n   * template - Vue 3 兼容的字符串模板函数\n   *\n   * @param {String} string\n   * @param {Array} ...args\n   * @return {String}\n   */\n\n  function template(string, ...args) {\n    if (args.length === 1 && typeof args[0] === 'object') {\n      args = args[0];\n    }\n\n    if (!args || !args.hasOwnProperty) {\n      args = {};\n    }\n\n    return string.replace(RE_NARGS, (match, prefix, i, index) => {\n      let result;\n\n      if (string[index - 1] === '{' && string[index + match.length] === '}') {\n        return i;\n      } else {\n        result = hasOwn(args, i) ? args[i] : null;\n        if (result === null || result === undefined) {\n          return '';\n        }\n\n        return result;\n      }\n    });\n  }\n\n  return template;\n}\n"],"names":[],"mappings":";;AAEA,MAAM,QAAW,GAAA,0BAAA,CAAA;AAMU,eAAA,GAAA;AASzB,EAAS,SAAA,QAAA,CAAS,WAAW,IAAM,EAAA;AACjC,IAAA,IAAI,KAAK,MAAW,KAAA,CAAA,IAAK,OAAO,IAAK,CAAA,CAAC,MAAM,QAAU,EAAA;AACpD,MAAA,IAAA,GAAO,KAAK,CAAC,CAAA,CAAA;AAAA,KACf;AAEA,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAA,CAAK,cAAgB,EAAA;AACjC,MAAA,IAAA,GAAO,EAAC,CAAA;AAAA,KACV;AAEA,IAAA,OAAO,OAAO,OAAQ,CAAA,QAAA,EAAU,CAAC,KAAO,EAAA,MAAA,EAAQ,GAAG,KAAU,KAAA;AAC3D,MAAI,IAAA,MAAA,CAAA;AAEJ,MAAI,IAAA,MAAA,CAAO,KAAQ,GAAA,CAAC,CAAM,KAAA,GAAA,IAAO,OAAO,KAAQ,GAAA,KAAA,CAAM,MAAM,CAAA,KAAM,GAAK,EAAA;AACrE,QAAO,OAAA,CAAA,CAAA;AAAA,OACF,MAAA;AACL,QAAA,MAAA,GAAS,OAAO,IAAM,EAAA,CAAC,CAAI,GAAA,IAAA,CAAK,CAAC,CAAI,GAAA,IAAA,CAAA;AACrC,QAAI,IAAA,MAAA,KAAW,IAAQ,IAAA,MAAA,KAAW,KAAW,CAAA,EAAA;AAC3C,UAAO,OAAA,EAAA,CAAA;AAAA,SACT;AAEA,QAAO,OAAA,MAAA,CAAA;AAAA,OACT;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}