remoteBase.js (1141B)
1 import L from 'leaflet'; 2 3 function sleep(ms) { 4 return new Promise((resolve) => setTimeout(resolve, ms)); 5 } 6 7 const BaseProvider = L.Class.extend({ 8 options: { 9 maxResponses: null, 10 attribution: null, 11 delay: 500, 12 }, 13 14 initialize: function (options) { 15 L.setOptions(this, options); 16 this.attribution = this.options.attribution; 17 }, 18 19 getRequestLanguages: function (supportedLanguages, defaultLanguage) { 20 let languages = (navigator.languages ?? []) 21 .map((s) => s.split('-')[0]) 22 .filter((value, index, arr) => arr.indexOf(value) === index) 23 .filter((lang) => supportedLanguages.includes(lang)); 24 if (languages.length === 0) { 25 languages = [defaultLanguage]; 26 } 27 return languages; 28 }, 29 30 waitNoNewRequestsSent: async function () { 31 if (this.options.delay) { 32 this._sleep = sleep(this.options.delay); 33 const sleepPromise = this._sleep; 34 await sleepPromise; 35 return this._sleep === sleepPromise; 36 } 37 return true; 38 }, 39 }); 40 41 export {BaseProvider};