<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import TileGrid from"../tilegrid/TileGrid.js";import{assign}from"../obj.js";import{getJSON,resolveUrl}from"../net.js";import{get as getProjection}from"../proj.js";import{getIntersection as intersectExtents}from"../extent.js";var knownMapMediaTypes={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},knownVectorMediaTypes={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function getMapTileUrlTemplate(e,t){for(var i,r,n=0;n&lt;e.length;++n){var o=e[n];if("item"===o.rel){if(o.type===t){i=o.href;break}!knownMapMediaTypes[o.type]&amp;&amp;(r||0!==o.type.indexOf("image/"))||(r=o.href)}}if(!i){if(!r)throw new Error('Could not find "item" link');i=r}return i}function getVectorTileUrlTemplate(e,t,i){for(var r,n,o={},l=0;l&lt;e.length;++l){var a=e[l];if(o[a.type]=a.href,"item"===a.rel){if(a.type===t){r=a.href;break}knownVectorMediaTypes[a.type]&amp;&amp;(n=a.href)}}if(!r&amp;&amp;i)for(l=0;l&lt;i.length;++l){var p=i[l];if(o[p]){r=o[p];break}}if(!r){if(!n)throw new Error('Could not find "item" link');r=n}return r}function parseTileMatrixSet(e,t,a,p){var i=e.projection;if(!i&amp;&amp;!(i=getProjection(t.crs)))throw new Error("Unsupported CRS: "+t.crs);for(var r="en"!==i.getAxisOrientation().substr(0,2),n=t.tileMatrices,f={},o=0;o&lt;n.length;++o){var l=n[o];f[l.id]=l}var s={},m=[];if(p)for(o=0;o&lt;p.length;++o){var g=(h=p[o]).tileMatrix;m.push(g),s[g]=h}else for(o=0;o&lt;n.length;++o){g=n[o].id;m.push(g)}for(var T=m.length,c=new Array(T),d=new Array(T),u=new Array(T),w=new Array(T),x=[-1/0,-1/0,1/0,1/0],o=0;o&lt;T;++o){var h,v,M,S,y,g=m[o],j=(l=f[g]).pointOfOrigin;c[o]=r?[j[1],j[0]]:j,d[o]=l.cellSize,u[o]=[l.matrixWidth,l.matrixHeight],w[o]=[l.tileWidth,l.tileHeight],(h=s[g])&amp;&amp;(j=l.cellSize*l.tileWidth,v=c[o][0]+h.minTileCol*j,j=c[o][0]+(h.maxTileCol+1)*j,M=l.cellSize*l.tileHeight,y=S=void 0,y="bottomLeft"===l.cornerOfOrigin?(S=c[o][1]+h.minTileRow*M,c[o][1]+(h.maxTileRow+1)*M):(S=c[o][1]-(h.maxTileRow+1)*M,c[o][1]-h.minTileRow*M),intersectExtents(x,[v,S,j,y],x))}var i=new TileGrid({origins:c,resolutions:d,sizes:u,tileSizes:w,extent:p?x:void 0}),k=e.context,O=e.url;return{grid:i,urlTemplate:a,urlFunction:function(e,t,i){if(e){var r=m[e[0]],n=f[r],o="bottomLeft"===n.cornerOfOrigin,l={tileMatrix:r,tileCol:e[1],tileRow:o?-e[2]-1:e[2]};if(p){r=s[n.id];if(l.tileCol&lt;r.minTileCol||l.tileCol&gt;r.maxTileCol||l.tileRow&lt;r.minTileRow||l.tileRow&gt;r.maxTileRow)return}assign(l,k);o=a.replace(/\{(\w+?)\}/g,function(e,t){return l[t]});return resolveUrl(O,o)}}}}function parseTileSetMetadata(t,e){var i,r=e.tileMatrixSetLimits;if("map"===e.dataType)i=getMapTileUrlTemplate(e.links,t.mediaType);else{if("vector"!==e.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');i=getVectorTileUrlTemplate(e.links,t.mediaType,t.supportedMediaTypes)}if(e.tileMatrixSet)return parseTileMatrixSet(t,e.tileMatrixSet,i,r);if(!e.tileMatrixSetDefinition)throw new Error("Expected tileMatrixSetDefinition or tileMatrixSet");e=resolveUrl(t.url,e.tileMatrixSetDefinition);return getJSON(e).then(function(e){return parseTileMatrixSet(t,e,i,r)})}function getTileSetInfo(t){return getJSON(t.url).then(function(e){return parseTileSetMetadata(t,e)})}export{getMapTileUrlTemplate,getVectorTileUrlTemplate,getTileSetInfo};</pre></body></html>