var __extends=this&&this.__extends||function(){var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(e,t)};return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}}();import TileGrid from"../tilegrid/TileGrid.js";import TileImage from"./TileImage.js";import{CustomTile}from"./Zoomify.js";import{DEFAULT_TILE_SIZE}from"../tilegrid/common.js";import{Versions}from"../format/IIIFInfo.js";import{assert}from"../asserts.js";import{getTopLeft}from"../extent.js";import{includes}from"../array.js";import{toSize}from"../size.js";function formatPercentage(e){return e.toLocaleString("en",{maximumFractionDigits:10})}var IIIF=function(c){function e(e){var h,m,t=this,e=e||{},i=void 0===e.imageSmoothing||e.imageSmoothing,p=(void 0!==e.interpolate&&(i=e.interpolate),e.url||""),g=(p+=p.lastIndexOf("/")===p.length-1||""===p?"":"/",e.version||Versions.VERSION2),d=e.sizes||[],r=e.size,y=(assert(null!=r&&Array.isArray(r)&&2==r.length&&!isNaN(r[0])&&0<r[0]&&!isNaN(r[1])&&0<r[1],60),r[0]),I=r[1],r=e.tileSize,o=e.tilePixelRatio||1,v=e.format||"jpg",z=e.quality||(e.version==Versions.VERSION1?"native":"default"),x=e.resolutions||[],b=e.supports||[],n=e.extent||[0,-I,y,0],N=null!=d&&Array.isArray(d)&&0<d.length,_=void 0!==r&&("number"==typeof r&&Number.isInteger(r)&&0<r||Array.isArray(r)&&0<r.length),j=null!=b&&Array.isArray(b)&&(includes(b,"regionByPx")||includes(b,"regionByPct"))&&(includes(b,"sizeByWh")||includes(b,"sizeByH")||includes(b,"sizeByW")||includes(b,"sizeByPct"));if(x.sort(function(e,t){return t-e}),_||j)if(null!=r&&("number"==typeof r&&Number.isInteger(r)&&0<r?m=h=r:Array.isArray(r)&&0<r.length&&((1==r.length||null==r[1]&&Number.isInteger(r[0]))&&(h=r[0],m=r[0]),2==r.length&&(Number.isInteger(r[0])&&Number.isInteger(r[1])?(h=r[0],m=r[1]):null==r[0]&&Number.isInteger(r[1])&&(h=r[1],m=r[1])))),void 0!==h&&void 0!==m||(m=h=DEFAULT_TILE_SIZE),0==x.length)for(var M,s=M=Math.max(Math.ceil(Math.log(y/h)/Math.LN2),Math.ceil(Math.log(I/m)/Math.LN2));0<=s;s--)x.push(Math.pow(2,s));else{var l=Math.max.apply(Math,x);M=Math.round(Math.log(l)/Math.LN2)}else if(h=y,m=I,x=[],N){d.sort(function(e,t){return e[0]-t[0]}),M=-1;for(var a=[],s=0;s<d.length;s++){var u=y/d[s][0];0<x.length&&x[x.length-1]==u?a.push(s):(x.push(u),M++)}if(0<a.length)for(s=0;s<a.length;s++)d.splice(a[s]-s,1)}else x.push(1),d.push([y,I]),M=0;l=new TileGrid({tileSize:[h,m],extent:n,origin:getTopLeft(n),resolutions:x}),n=CustomTile.bind(null,toSize(r||256).map(function(e){return e*o}));return(t=c.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:i,projection:e.projection,reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:e.state,tileClass:n,tileGrid:l,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:function(e,t,i){var r=e[0];if(!(M<r)){var o,n,s,l,a,u,c=e[1],e=e[2],f=x[r];if(!(void 0===c||void 0===e||void 0===f||c<0||Math.ceil(y/f/h)<=c||e<0||Math.ceil(I/f/m)<=e))return j||_?(y<(c=c*h*f)+(o=h*f)&&(o=y-c),I<(a=e*(e=m)*f)+(n=m*f)&&(n=I-a),y<c+(s=h)*f&&(s=Math.floor((y-c+f-1)/f)),I<a+m*f&&(e=Math.floor((I-a+f-1)/f)),0==c&&o==y&&0==a&&n==I?l="full":!j||includes(b,"regionByPx")?l=c+","+a+","+o+","+n:includes(b,"regionByPct")&&(l="pct:"+formatPercentage(c/y*100)+","+formatPercentage(a/I*100)+","+formatPercentage(o/y*100)+","+formatPercentage(n/I*100)),g!=Versions.VERSION3||j&&!includes(b,"sizeByWh")?!j||includes(b,"sizeByW")?u=s+",":includes(b,"sizeByH")?u=","+e:includes(b,"sizeByWh")?u=s+","+e:includes(b,"sizeByPct")&&(u="pct:"+formatPercentage(100/f)):u=s+","+e):(l="full",u=N?(c=d[r][0],a=d[r][1],g==Versions.VERSION3?c==y&&a==I?"max":c+","+a:c==y?"full":c+","):g==Versions.VERSION3?"max":"full"),p+l+"/"+u+"/0/"+z+"."+v}},transition:e.transition})||this).zDirection=e.zDirection,t}return __extends(e,c),e}(TileImage);export default IIIF;