@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.13 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import t from"../core/Error.js";import{makeHandle as n}from"../core/handleUtils.js";import{createResolver as e}from"../core/promiseUtils.js";import{getLocale as r,beforeLocaleChange as s,getLocaleParts as o}from"./locale.js";const i={ar:!0,bg:!0,bs:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,es:!0,et:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,id:!0,it:!0,ja:!0,ko:!0,lt:!0,lv:!0,nb:"no",nl:!0,no:!0,nn:"no",pl:!0,pt:"pt-BR","pt-BR":!0,"pt-PT":!0,ro:!0,ru:!0,sk:!0,sl:!0,sr:!0,sv:!0,th:!0,tr:!0,uk:!0,vi:!0,zh:"zh-CN","zh-CN":!0,"zh-HK":!0,"zh-TW":!0};function a(t){return t in i}function c(t){if(a(t)){const n=i[t];return!0===n?t:n}return null}const d=[],l=new Map;function h(t){for(const n of l.keys())_(t.pattern,n)&&l.delete(n)}function u(t){return d.includes(t)||(h(t),d.unshift(t)),n((()=>{const n=d.indexOf(t);n>-1&&(d.splice(n,1),h(t))}))}async function f(t){const n=r();l.has(t)||l.set(t,p(t,n));const e=l.get(t);return e&&await g.add(e),e}function m(t){const n=o(t);return n?c(t)??c(n.language):null}async function p(n,e){const r=[];for(const t of d)if(_(t.pattern,n))try{return await t.fetchMessageBundle(n,e)}catch(s){r.push(s)}if(r.length)throw new t("intl:message-bundle-error",`Errors occurred while loading "${n}"`,{errors:r});throw new t("intl:no-message-bundle-loader",`No loader found for message bundle "${n}"`)}function _(t,n){return"string"==typeof t?n.startsWith(t):t.test(n)}s((()=>{l.clear()}));const g=new class{constructor(){this._numLoading=0,this._dfd=null}async waitForAll(){this._dfd&&await this._dfd.promise}add(t){return this._increase(),t.then((()=>this._decrease()),(()=>this._decrease())),this.waitForAll()}_increase(){this._numLoading++,this._dfd||(this._dfd=e())}_decrease(){this._numLoading=Math.max(this._numLoading-1,0),this._dfd&&0===this._numLoading&&(this._dfd.resolve(),this._dfd=null)}},w={cache:l,loaders:d};export{f as fetchMessageBundle,i as messageBundlesLocaleMap,m as normalizeMessageBundleLocale,u as registerMessageBundleLoader,w as test};