import{assert}from"./asserts.js";import{modulo}from"./math.js";import{hash as tileCoordHash}from"./tilecoord.js";function createFromTemplate(n,o){var a=/\{z\}/g,l=/\{x\}/g,i=/\{y\}/g,c=/\{-y\}/g;return function(e,r,t){if(e)return n.replace(a,e[0].toString()).replace(l,e[1].toString()).replace(i,e[2].toString()).replace(c,function(){var r=e[0],r=o.getFullTileRange(r);return assert(r,55),(r.getHeight()-e[2]-1).toString()})}}function createFromTemplates(r,e){for(var t=r.length,n=new Array(t),o=0;o<t;++o)n[o]=createFromTemplate(r[o],e);return createFromTileUrlFunctions(n)}function createFromTileUrlFunctions(o){return 1===o.length?o[0]:function(r,e,t){var n;if(r)return n=tileCoordHash(r),n=modulo(n,o.length),o[n](r,e,t)}}function nullTileUrlFunction(r,e,t){}function expandUrl(r){var e=[],t=/\{([a-z])-([a-z])\}/.exec(r);if(t){for(var n=t[1].charCodeAt(0),o=t[2].charCodeAt(0),a=void 0,a=n;a<=o;++a)e.push(r.replace(t[0],String.fromCharCode(a)));return e}if(t=/\{(\d+)-(\d+)\}/.exec(r)){for(var l=parseInt(t[2],10),i=parseInt(t[1],10);i<=l;i++)e.push(r.replace(t[0],i.toString()));return e}return e.push(r),e}export{createFromTemplate,createFromTemplates,createFromTileUrlFunctions,nullTileUrlFunction,expandUrl};