diff --git a/js/exif-reader.js b/js/exif-reader.js new file mode 100644 index 0000000..83a0c8c --- /dev/null +++ b/js/exif-reader.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ExifReader=t():e.ExifReader=t()}(Object("undefined"!=typeof self?self:this),(function(){return function(){"use strict";var e={d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:1,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:1})}},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return e+""}(e);return"symbol"==n(t)?t:t+""}e.r(t),e.d(t,{default:function(){return uo},errors:function(){return fo},load:function(){return co},loadView:function(){return lo}});var i=function(){return e=function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),function(e){return"object"!==n(e)||void 0===e.length||void 0===e.readUInt8||void 0===e.readUInt16LE||void 0===e.readUInt16BE||void 0===e.readUInt32LE||void 0===e.readUInt32BE||void 0===e.readInt32LE||void 0===e.readInt32BE}(t))throw Error("DataView: Passed buffer type is unsupported.");this.buffer=t,this.byteLength=this.buffer.length},(t=[{key:"getUint8",value:function(e){return this.buffer.readUInt8(e)}},{key:"getUint16",value:function(e,t){return t?this.buffer.readUInt16LE(e):this.buffer.readUInt16BE(e)}},{key:"getUint32",value:function(e,t){return t?this.buffer.readUInt32LE(e):this.buffer.readUInt32BE(e)}},{key:"getInt32",value:function(e,t){return t?this.buffer.readInt32LE(e):this.buffer.readInt32BE(e)}}])&&function(e,t){for(var n=0;n3&&void 0!==arguments[3]?arguments[3]:"string";if(0===t&&"function"==typeof DecompressionStream){var i=new DecompressionStream("deflate"),o=new Blob([e]).stream().pipeThrough(i);return"dataview"===r?new Response(o).arrayBuffer().then((function(e){return new DataView(e)})):new Response(o).arrayBuffer().then((function(e){return new TextDecoder(n).decode(e)}))}if(void 0!==t)return Promise.reject("Unknown compression method ".concat(t,"."));if("string"===r)try{return new TextDecoder(n).decode(e)}catch(t){var a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);return Array.from(a,(function(e){return String.fromCharCode(e)})).join("")}return e}var v={USE_FILE:1,USE_JFIF:1,USE_PNG_FILE:1,USE_EXIF:1,USE_IPTC:1,USE_XMP:1,USE_ICC:1,USE_MPF:1,USE_PHOTOSHOP:1,USE_THUMBNAIL:1,USE_TIFF:1,USE_JPEG:1,USE_PNG:1,USE_HEIC:1,USE_AVIF:1,USE_WEBP:1,USE_GIF:1,USE_MAKER_NOTES:1};function y(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}function b(e){if(e.length>=8){var t=y(e.slice(0,8));if("ASCII\0\0\0"===t)return y(e.slice(8));if("JIS\0\0\0\0\0"===t)return"[JIS encoded text]";if("UNICODE\0"===t)return"[Unicode encoded text]";if("\0\0\0\0\0\0\0\0"===t)return"[Undefined encoding]"}return"Undefined"}function S(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}var I=18761,P=19789,A=I,C=function(e,t){if(e.getUint16(t)===I)return I;if(e.getUint16(t)===P)return P;throw Error("Illegal byte order value. Faulty image.")},T=2,x=65496,U=2,E=4,w=2,F=2,O=10,R=18,M=33,N=79,G=18,k=8,L="ICC_PROFILE\0",D=E+L.length,_=D+1,j="MPF\0",B=65472,z=65474,V=65476,H=65499,W=65501,X=65498,K=65504,J=65505,Y=65506,q=65517,$=65519,Z=65534,Q=65535,ee="JFIF",te="Exif",ne="http://ns.adobe.com/xap/1.0/\0",re="http://ns.adobe.com/xmp/extension/\0",ie="Photoshop 3.0",oe="8BIM";function ae(e,t){return e.getUint16(t)===B}function ue(e,t){return e.getUint16(t)===z}function fe(e,t){var n=L.length;return e.getUint16(t)===Y&&a(e,t+E,n)===L}function ce(e,t){var n=j.length;return e.getUint16(t)===Y&&a(e,t+E,n)===j}function se(e,t){var n=ee.length;return e.getUint16(t)===K&&a(e,t+E,n)===ee&&0===e.getUint8(t+E+n)}function le(e,t){var n=te.length;return e.getUint16(t)===J&&a(e,t+E,n)===te&&0===e.getUint8(t+E+n)}function de(e,t){return e.getUint16(t)===J&&function(e,t){var n=ne.length;return a(e,t+E,n)===ne}(e,t)}function pe(e,t){return e.getUint16(t)===J&&function(e,t){var n=re.length;return a(e,t+E,n)===re}(e,t)}function ge(e,t){return{dataOffset:e+M,length:t-(M-w)}}function me(e,t){return{dataOffset:e+N,length:t-(N-w)}}function he(e,t){var n=ie.length,r=oe.length,i=t+E+n+1;return e.getUint16(t)===q&&a(e,t+E,n)===ie&&0===e.getUint8(t+E+n)&&a(e,i,r)===oe}function ve(e,t){var n=e.getUint16(t);return n>=K&&n<=$||n===Z||n===B||n===z||n===V||n===H||n===W||n===X}function ye(e,t){return e.getUint16(t)===Q}function be(e,t,n,r){var i=function(e,t,n){try{if(t+8>n)return;var r=e.getUint16(t+0),i=r===A;if(!i&&19789!==r)return;if(42!==e.getUint16(t+2,i))return;var o=t+e.getUint32(t+4,i);if(o+2>n)return;var a=e.getUint16(o,i);return{ifdEntries:a,isValid:o+(2+12*a+4)<=n&&a>0}}catch(e){return}}(e,r,t+w+n);if(!i)return 0;var o=Number.isInteger(i.ifdEntries)?i.ifdEntries:0;return(i.isValid?1e9:0)+1e6*o+n}var Se="‰PNG\r\n\n",Ie=4,Pe=4,Ae=0,Ce=Ie,Te=Ie+Pe,xe="XML:com.adobe.xmp\0",Ue="tEXt",Ee="iTXt",we="zTXt",Fe="pHYs",Oe="tIME",Re="eXIf",Me="iCCP";function Ne(e,t){return"IHDR"===a(e,t+Ce,Pe)}function Ge(e,t){return a(e,t+Ce,Pe)===Ee&&a(e,t+Te,xe.length)===xe}function ke(e,t,n){var r=a(e,t+Ce,Pe);return r===Ue||r===Ee||r===we&&n}function Le(e,t){return a(e,t+Ce,Pe)===Re}function De(e,t){return a(e,t+Ce,Pe)===Me}function _e(e,t){var n=[Fe,Oe],r=a(e,t+Ce,Pe);return n.includes(r)}function je(e,t){t+=Te+xe.length+1+1;for(var n=0;n<2&&t0)return We(e,n,r)}function We(e,t,n){return 4===n?e.getUint32(t):8===n?(console.warn("This file uses an 8-bit offset which is currently not supported by ExifReader. Contact the maintainer to get it fixed."),function(e,t){return e.getUint32(t+4)}(e,t)):0}var Xe=1165519206,Ke=1835625829;function Je(e,t){var n=function(e,t){var n=e.getUint32(t);return function(e){return 0===e}(n)?{length:e.byteLength-t,contentOffset:t+4+4}:function(e){return 1===e}(n)&&function(e,t){return 0===e.getUint32(t+8)}(e,t)?{length:e.getUint32(t+12),contentOffset:t+4+4+8}:{length:n,contentOffset:t+4+4}}(e,t),r=n.length,i=n.contentOffset;if(!(r<8)){var o=e.getUint32(t+4);if(1718909296===o)return function(e,t,n){return{type:"ftyp",majorBrand:a(e,t,4),length:n}}(e,i,r);if(1768977008===o)return function(e,t,n,r){return{type:"iprp",subBoxes:Ze(e,n,r-(n-t)),length:r}}(e,t,i,r);if(1768973167===o)return function(e,t,n,r){return{type:"ipco",properties:Ze(e,n,r-(n-t)),length:r}}(e,t,i,r);if(1668246642===o)return function(e,t,n){return{type:"colr",icc:$e(e,t),length:n}}(e,i,r);var f=e.getUint8(i);return 1835365473===o?function(e,t,n,r){return{type:"meta",subBoxes:Ze(e,n+3,r-(n+3-t)),length:r}}(e,t,i+1,r):1768714083===o?function(e,t,n,r){var i=function(e,t){var n={item:{dataReferenceIndex:2,extentCount:2,extent:{}}};e<2?(n.itemCount=2,n.item.itemId=2):2===e&&(n.itemCount=4,n.item.itemId=4),n.item.constructionMethod=1===e||2===e?2:0;var r={offsetSize:t,lengthSize:t,baseOffsetSize:t+1,indexSize:t+1};return r.itemCount=t+2,r.items=r.itemCount+n.itemCount,r.item={itemId:0},r.item.constructionMethod=r.item.itemId+n.item.itemId,r.item.dataReferenceIndex=r.item.constructionMethod+n.item.constructionMethod,{offsets:r,sizes:n}}(t,n+3),o=i.offsets,a=i.sizes,u=e.getUint8(o.offsetSize)>>4;a.item.extent.extentOffset=u;var f=15&e.getUint8(o.lengthSize);a.item.extent.extentLength=f;var c=e.getUint8(o.baseOffsetSize)>>4;a.item.baseOffset=c;var s=function(e,t,n){if(1===n||2===n)return 15&e.getUint8(t)}(e,o.indexSize,t);a.item.extent.extentIndex=void 0!==s?s:0;var l=function(e,t,n){return n<2?e.getUint16(t):2===n?e.getUint32(t):void 0}(e,o.itemCount,t);return{type:"iloc",items:ze(e,t,o,a,u,f,s,l),length:r}}(e,f,i+1,r):1768517222===o?function(e,t,n,r,i){var o=function(e,t){var n={entryCount:t+3},r={};return r.entryCount=0===e?2:4,n.itemInfos=n.entryCount+r.entryCount,{offsets:n}}(n,r),a=o.offsets;return{type:"iinf",itemInfos:Ze(e,a.itemInfos,i-(a.itemInfos-t)),length:i}}(e,t,f,i+1,r):1768842853===o?function(e,t,n,r,i){r+=3;var o={type:"infe",length:i};return 0!==n&&1!==n||(o.itemId=e.getUint16(r),r+=2,o.itemProtectionIndex=e.getUint16(r),r+=2,o.itemName=u(e,r),r+=o.itemName.length+1),n>=2&&(2===n?(o.itemId=e.getUint16(r),r+=2):3===n&&(o.itemId=e.getUint32(r),r+=4),o.itemProtectionIndex=e.getUint16(r),r+=2,o.itemType=e.getUint32(r),r+=4,o.itemName=u(e,r),r+=o.itemName.length+1,o.itemType===Ke?(o.contentType=u(e,r),t+i>(r+=o.contentType.length+1)&&(o.contentEncoding=u(e,r),r+=o.contentEncoding.length+1)):1970432288===o.itemType&&(o.itemUri=u(e,r),r+=o.itemUri.length+1)),o}(e,t,f,i+1,r):{type:void 0,length:r}}}function Ye(e){if(v.USE_EXIF||v.USE_XMP||v.USE_ICC){var t={},n=function(e){for(var t=0;t+4+4<=e.byteLength;){var n=Je(e,t);if(void 0===n)break;if("meta"===n.type)return n;t+=n.length}}(e);return n?(v.USE_EXIF&&(t.tiffHeaderOffset=function(e,t){try{var n=function(e){return e.subBoxes.find((function(e){return"iinf"===e.type})).itemInfos.find((function(e){return e.itemType===Xe}))}(t).itemId,r=qe(t,n);return function(e,t){return t+4+e.getUint32(t)}(e,r.baseOffset+r.extents[0].extentOffset)}catch(e){return}}(e,n)),v.USE_XMP&&(t.xmpChunks=function(e){try{var t=function(e){return e.subBoxes.find((function(e){return"iinf"===e.type})).itemInfos.find((function(e){return e.itemType===Ke&&"application/rdf+xml"===e.contentType}))}(e).itemId,n=qe(e,t),r=qe(e,t).extents[0];return[{dataOffset:n.baseOffset+r.extentOffset,length:r.extentLength}]}catch(e){return}}(n)),v.USE_ICC&&(t.iccChunks=function(e){try{var t=e.subBoxes.find((function(e){return"iprp"===e.type})).subBoxes.find((function(e){return"ipco"===e.type})).properties.find((function(e){return"colr"===e.type})).icc;if(t)return[t]}catch(e){}}(n)),t.hasAppMarkers=void 0!==t.tiffHeaderOffset||void 0!==t.xmpChunks||void 0!==t.iccChunks,t):{hasAppMarkers:0}}return{}}function qe(e,t){return e.subBoxes.find((function(e){return"iloc"===e.type})).items.find((function(e){return e.itemId===t}))}function $e(e,t){var n=a(e,t,4);if("prof"===n||"rICC"===n)return{offset:t+4,length:e.getUint32(t+4),chunkNumber:1,chunksTotal:1}}function Ze(e,t,n){for(var r=[Xe,Ke],i=[],o=t;o=4&&function(e){var t=e.getUint16(0)===A;return 42===e.getUint16(2,t)}(e)}(e))return it(v.USE_EXIF?{hasAppMarkers:1,tiffHeaderOffset:0}:{},"tiff","TIFF");if(v.USE_JPEG&&function(e){return!!e&&e.byteLength>=T&&e.getUint16(0)===x}(e))return it(function(e){for(var t,n,r,i,o,a,u,f,c,s,l,d,p,g=U,m=0;g+E+5<=e.byteLength;){if(v.USE_FILE&&ae(e,g))t=e.getUint16(g+w),n=g+w;else if(v.USE_FILE&&ue(e,g))t=e.getUint16(g+w),r=g+w;else if(v.USE_JFIF&&se(e,g))t=e.getUint16(g+w),i=g+F;else if(v.USE_EXIF&&le(e,g)){t=e.getUint16(g+w),m++;var h=g+O;if(1===m)l=h,d=g,p=t;else if(2===m){s=be(e,d,p,l);var y=be(e,g,t,h);y>s&&(s=y,l=h,d=g,p=t)}else{var b=be(e,g,t,h);b>s&&(s=b,l=h,d=g,p=t)}o=l}else if(v.USE_XMP&&de(e,g))u||(u=[]),t=e.getUint16(g+w),u.push(ge(g,t));else if(v.USE_XMP&&pe(e,g))u||(u=[]),t=e.getUint16(g+w),u.push(me(g,t));else if(v.USE_IPTC&&he(e,g))t=e.getUint16(g+w),a=g+R;else if(v.USE_ICC&&fe(e,g)){t=e.getUint16(g+w);var S=g+G,I=t-(G-w),P=e.getUint8(g+D),A=e.getUint8(g+_);f||(f=[]),f.push({offset:S,length:I,chunkNumber:P,chunksTotal:A})}else if(v.USE_MPF&&ce(e,g))t=e.getUint16(g+w),c=g+k;else{if(!ve(e,g)){if(ye(e,g)){g++;continue}break}t=e.getUint16(g+w)}g+=w+t}return m>1&&function(e){"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("ExifReader: Found ".concat(e," Exif segments (APP1). ")+"Will pick the best candidate segment.")}(m),{hasAppMarkers:g>U,fileDataOffset:n||r,jfifDataOffset:i,tiffHeaderOffset:o,iptcDataOffset:a,xmpChunks:u,iccChunks:f,mpfDataOffset:c}}(e),"jpeg","JPEG");if(v.USE_PNG&&function(e){return!!e&&a(e,0,Se.length)===Se}(e))return it(function(e,t){for(var n={hasAppMarkers:0},r=Se.length;r+Ie+Pe<=e.byteLength;){if(v.USE_PNG_FILE&&Ne(e,r))n.hasAppMarkers=1,n.pngHeaderOffset=r+Te;else if(v.USE_XMP&&Ge(e,r)){var i=je(e,r);void 0!==i&&(n.hasAppMarkers=1,n.xmpChunks=[{dataOffset:i,length:e.getUint32(r+Ae)-(i-(r+Te))}])}else if(ke(e,r,t)){n.hasAppMarkers=1;var o=a(e,r+Ce,Pe);n.pngTextChunks||(n.pngTextChunks=[]),n.pngTextChunks.push({length:e.getUint32(r+Ae),type:o,offset:r+Te})}else if(Le(e,r))n.hasAppMarkers=1,n.tiffHeaderOffset=r+Te;else if(v.USE_ICC&&t&&De(e,r)){n.hasAppMarkers=1;var u=e.getUint32(r+Ae),f=r+Te,c=Be(e,f),s=c.profileName,l=c.compressionMethod,d=c.compressedProfileOffset;n.iccChunks||(n.iccChunks=[]),n.iccChunks.push({offset:d,length:u-(d-f),chunkNumber:1,chunksTotal:1,profileName:s,compressionMethod:l})}else _e(e,r)&&(n.hasAppMarkers=1,n.pngChunkOffsets||(n.pngChunkOffsets=[]),n.pngChunkOffsets.push(r+Ae));r+=e.getUint32(r+Ae)+Ie+Pe+4}return n}(e,t),"png","PNG");if(v.USE_HEIC&&function(e){if(!e)return 0;try{var t=Je(e,0);return t&&-1!==["heic","heix","hevc","hevx","heim","heis","hevm","hevs","mif1"].indexOf(t.majorBrand)}catch(e){return 0}}(e))return it(function(e){return Ye(e)}(e),"heic","HEIC");if(v.USE_AVIF&&function(e){if(!e)return 0;try{var t=Je(e,0);return t&&"avif"===t.majorBrand}catch(e){return 0}}(e))return it(function(e){return Ye(e)}(e),"avif","AVIF");if(v.USE_WEBP&&function(e){return!!e&&"RIFF"===a(e,0,4)&&"WEBP"===a(e,8,4)}(e))return it(function(e){for(var t,n,r,i,o=12,u=0;o+8.25){var t=e[0]/e[1];return Number.isInteger(t)?""+t:t.toFixed(1)}return 0!==e[0]?"1/".concat(Math.round(e[1]/e[0])):"0/".concat(e[1])},FNumber:function(e){return"f/".concat(Number(e[0]/e[1]).toFixed(1))},FocalLength:function(e){return e[0]/e[1]+" mm"},FocalPlaneResolutionUnit:function(e){return 2===e?"inches":3===e?"centimeters":4===e?"millimeters":"Unknown"},LightSource:function(e){return 1===e?"Daylight":2===e?"Fluorescent":3===e?"Tungsten (incandescent light)":4===e?"Flash":9===e?"Fine weather":10===e?"Cloudy weather":11===e?"Shade":12===e?"Daylight fluorescent (D 5700 – 7100K)":13===e?"Day white fluorescent (N 4600 – 5400K)":14===e?"Cool white fluorescent (W 3900 – 4500K)":15===e?"White fluorescent (WW 3200 – 3700K)":17===e?"Standard light A":18===e?"Standard light B":19===e?"Standard light C":20===e?"D55":21===e?"D65":22===e?"D75":23===e?"D50":24===e?"ISO studio tungsten":255===e?"Other light source":"Unknown"},MeteringMode:function(e){return 1===e?"Average":2===e?"CenterWeightedAverage":3===e?"Spot":4===e?"MultiSpot":5===e?"Pattern":6===e?"Partial":255===e?"Other":"Unknown"},ResolutionUnit:function(e){return 2===e?"inches":3===e?"centimeters":"Unknown"},Saturation:function(e){return 0===e?"Normal":1===e?"Low saturation":2===e?"High saturation":"Unknown"},FocalLengthIn35mmFilm:function(e){return 0===e?"Unknown":e+" mm"},SceneCaptureType:function(e){return 0===e?"Standard":1===e?"Landscape":2===e?"Portrait":3===e?"Night scene":"Unknown"},Sharpness:function(e){return 0===e?"Normal":1===e?"Soft":2===e?"Hard":"Unknown"},ShutterSpeedValue:function(e){var t=Math.pow(2,e[0]/e[1]);return t<=1?"".concat(Math.round(1/t)):"1/".concat(Math.round(t))},WhiteBalance:function(e){return 0===e?"Auto white balance":1===e?"Manual white balance":"Unknown"},XResolution:function(e){return""+Math.round(e[0]/e[1])},YResolution:function(e){return""+Math.round(e[0]/e[1])}},at={11:"ProcessingSoftware",254:{name:"SubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image",3:"Single page of multi-page reduced-resolution image",4:"Transparency mask",5:"Transparency mask of reduced-resolution image",6:"Transparency mask of multi-page image",7:"Transparency mask of reduced-resolution multi-page image",65537:"Alternate reduced-resolution image",4294967295:"Invalid"}[e]||"Unknown"}},255:{name:"OldSubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image"}[e]||"Unknown"}},256:"ImageWidth",257:"ImageLength",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",263:{name:"Thresholding",description:function(e){return{1:"No dithering or halftoning",2:"Ordered dither or halfton",3:"Randomized dither"}[e]||"Unknown"}},264:"CellWidth",265:"CellLength",266:{name:"FillOrder",description:function(e){return{1:"Normal",2:"Reversed"}[e]||"Unknown"}},269:"DocumentName",270:"ImageDescription",271:"Make",272:"Model",273:"StripOffsets",274:{name:"Orientation",description:function(e){return 1===e?"top-left":2===e?"top-right":3===e?"bottom-right":4===e?"bottom-left":5===e?"left-top":6===e?"right-top":7===e?"right-bottom":8===e?"left-bottom":"Undefined"}},277:"SamplesPerPixel",278:"RowsPerStrip",279:"StripByteCounts",280:"MinSampleValue",281:"MaxSampleValue",282:{name:"XResolution",description:ot.XResolution},283:{name:"YResolution",description:ot.YResolution},284:"PlanarConfiguration",285:"PageName",286:{name:"XPosition",description:function(e){return""+Math.round(e[0]/e[1])}},287:{name:"YPosition",description:function(e){return""+Math.round(e[0]/e[1])}},290:{name:"GrayResponseUnit",description:function(e){return{1:"0.1",2:"0.001",3:"0.0001",4:"1e-05",5:"1e-06"}[e]||"Unknown"}},296:{name:"ResolutionUnit",description:ot.ResolutionUnit},297:"PageNumber",301:"TransferFunction",305:"Software",306:"DateTime",315:"Artist",316:"HostComputer",317:"Predictor",318:{name:"WhitePoint",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},319:{name:"PrimaryChromaticities",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},321:"HalftoneHints",322:"TileWidth",323:"TileLength",330:"A100DataOffset",332:{name:"InkSet",description:function(e){return{1:"CMYK",2:"Not CMYK"}[e]||"Unknown"}},337:"TargetPrinter",338:{name:"ExtraSamples",description:function(e){return{0:"Unspecified",1:"Associated Alpha",2:"Unassociated Alpha"}[e]||"Unknown"}},339:{name:"SampleFormat",description:function(e){var t={1:"Unsigned",2:"Signed",3:"Float",4:"Undefined",5:"Complex int",6:"Complex float"};return Array.isArray(e)?e.map((function(e){return t[e]||"Unknown"})).join(", "):"Unknown"}},513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",529:{name:"YCbCrCoefficients",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join("/")}},530:"YCbCrSubSampling",531:{name:"YCbCrPositioning",description:function(e){return 1===e?"centered":2===e?"co-sited":"undefined "+e}},532:{name:"ReferenceBlackWhite",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join(", ")}},700:"ApplicationNotes",18246:"Rating",18249:"RatingPercent",33432:{name:"Copyright",description:function(e){return e.join("; ")}},33550:"PixelScale",33723:"IPTC-NAA",33920:"IntergraphMatrix",33922:"ModelTiePoint",34118:"SEMInfo",34264:"ModelTransform",34377:"PhotoshopSettings",34665:"Exif IFD Pointer",34675:"ICC_Profile",34735:"GeoTiffDirectory",34736:"GeoTiffDoubleParams",34737:"GeoTiffAsciiParams",34853:"GPS Info IFD Pointer",40091:{name:"XPTitle",description:ut},40092:{name:"XPComment",description:ut},40093:{name:"XPAuthor",description:ut},40094:{name:"XPKeywords",description:ut},40095:{name:"XPSubject",description:ut},42112:"GDALMetadata",42113:"GDALNoData",50341:"PrintIM",50707:"DNGBackwardVersion",50708:"UniqueCameraModel",50709:"LocalizedCameraModel",50721:"ColorMatrix1",50722:"ColorMatrix2",50723:"CameraCalibration1",50724:"CameraCalibration2",50725:"ReductionMatrix1",50726:"ReductionMatrix2",50727:"AnalogBalance",50728:"AsShotNeutral",50729:"AsShotWhiteXY",50730:"BaselineExposure",50731:"BaselineNoise",50732:"BaselineSharpness",50734:"LinearResponseLimit",50735:"CameraSerialNumber",50736:"DNGLensInfo",50739:"ShadowScale",50741:{name:"MakerNoteSafety",description:function(e){return{0:"Unsafe",1:"Safe"}[e]||"Unknown"}},50778:{name:"CalibrationIlluminant1",description:ot.LightSource},50779:{name:"CalibrationIlluminant2",description:ot.LightSource},50781:"RawDataUniqueID",50827:"OriginalRawFileName",50828:"OriginalRawFileData",50831:"AsShotICCProfile",50832:"AsShotPreProfileMatrix",50833:"CurrentICCProfile",50834:"CurrentPreProfileMatrix",50879:"ColorimetricReference",50885:"SRawType",50898:"PanasonicTitle",50899:"PanasonicTitle2",50931:"CameraCalibrationSig",50932:"ProfileCalibrationSig",50933:"ProfileIFD",50934:"AsShotProfileName",50936:"ProfileName",50937:"ProfileHueSatMapDims",50938:"ProfileHueSatMapData1",50939:"ProfileHueSatMapData2",50940:"ProfileToneCurve",50941:{name:"ProfileEmbedPolicy",description:function(e){return{0:"Allow Copying",1:"Embed if Used",2:"Never Embed",3:"No Restrictions"}[e]||"Unknown"}},50942:"ProfileCopyright",50964:"ForwardMatrix1",50965:"ForwardMatrix2",50966:"PreviewApplicationName",50967:"PreviewApplicationVersion",50968:"PreviewSettingsName",50969:"PreviewSettingsDigest",50970:{name:"PreviewColorSpace",description:function(e){return{1:"Gray Gamma 2.2",2:"sRGB",3:"Adobe RGB",4:"ProPhoto RGB"}[e]||"Unknown"}},50971:"PreviewDateTime",50972:"RawImageDigest",50973:"OriginalRawFileDigest",50981:"ProfileLookTableDims",50982:"ProfileLookTableData",51043:"TimeCodes",51044:"FrameRate",51058:"TStop",51081:"ReelName",51089:"OriginalDefaultFinalSize",51090:"OriginalBestQualitySize",51091:"OriginalDefaultCropSize",51105:"CameraLabel",51107:{name:"ProfileHueSatMapEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51108:{name:"ProfileLookTableEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51109:"BaselineExposureOffset",51110:{name:"DefaultBlackRender",description:function(e){return{0:"Auto",1:"None"}[e]||"Unknown"}},51111:"NewRawImageDigest",51112:"RawToPreviewGain"};function ut(e){return new TextDecoder("utf-16").decode(new Uint8Array(e)).replace(/\u0000+$/,"")}function ft(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n0}function Nt(){return{isActive:0,shouldReturnGroup:e,shouldParseGroup:e,shouldReturnTag:e,shouldParseTag:e};function e(){return 1}}var Gt=Nt();function kt(e){var t=e.groupKey,n=e.hasIncludeTags,r=e.hasIncludeEntry,i=e.includeTags,o=e.shouldParseExif,a=e.shouldParseFile;return n?r?"thumbnail"===t&&Array.isArray(i[t])?1:i[t]:"exif"===t&&o||"file"===t&&a?[]:void 0:1}function Lt(e){var t=e.groupKey,n=e.hasIncludeTags,r=e.hasIncludeEntry,i=e.shouldParseExif,o=e.shouldParseFile,a=e.exifIncludeDependencies,u=e.fileIncludeDependencies;return n?"exif"===t&&(i||r&&Object.keys(a).length>0)?a:"file"===t&&o?u:Object.create(null):Object.create(null)}function Dt(e,t){if(!e||!Object.prototype.hasOwnProperty.call(e,t))return 0;var n=e[t];return 1==n?1:Array.isArray(n)&&n.length>0}function _t(e){var t,n,r=e.groupKey,i=e.includeValue,o=e.excludeValue,a=e.extraIncludeNames,u=!!Et[r],f={includeAll:0,includeNames:void 0,includeIds:void 0,excludeAll:0,excludeNames:void 0,excludeIds:void 0};if(1==i)f.includeAll=1;else if(Array.isArray(i)){f.includeNames=Object.create(null),u&&(f.includeIds=Object.create(null));for(var c=0;c0)for(var l in f.includeNames=Object.create(null),a)f.includeNames[l.toLowerCase()]=1;if(1==o)return f.excludeAll=1,f;if(Array.isArray(o)){f.excludeNames=Object.create(null),u&&(f.excludeIds=Object.create(null));for(var d=0;d6&&void 0!==arguments[6]?arguments[6]:0,c=arguments.length>7&&void 0!==arguments[7]?arguments[7]:Gt,s=arguments.length>8&&void 0!==arguments[8]?arguments[8]:"exif",l=Ct.getTypeSize("SHORT"),d={},p=function(e,t,n){return t+Ct.getTypeSize("SHORT")<=e.byteLength?Ct.getShortAt(e,t,n):0}(e,r,i);r+=l;for(var g=0;ge.byteLength);g++){var m=Wt(e,t,n,r,i,o,c,s);void 0!==m&&(d[m.name]={id:m.id,value:m.value,description:m.description},f&&(d[m.name].computed=(a=m.tagType,u=m.value,a===Ct.tagTypes.ASCII?Array.isArray(u)&&1===u.length?u[0]:u:a===Ct.tagTypes.RATIONAL||a===Ct.tagTypes.SRATIONAL?function(e){return Array.isArray(e)&&2===e.length?"number"==typeof e[0]&&"number"==typeof e[1]:0}(u)?Jt(u):Array.isArray(u)?u.map((function(e){return Jt(e)})):u:u)),("MakerNote"===m.name||t===St&&"LevelInfo"===m.name)&&(d[m.name].__offset=m.__offset)),r+=12}if(v.USE_THUMBNAIL&&r5&&void 0!==arguments[5]?arguments[5]:0,f=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Gt,c=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"exif",s=Ct.getTypeSize("SHORT"),l=s+Ct.getTypeSize("SHORT"),d=l+Ct.getTypeSize("LONG"),p=Ct.getShortAt(e,r,i),g=Ct.getShortAt(e,r+s,i),m=Ct.getLongAt(e,r+l,i);if(void 0!==Ct.typeSizes[g]&&(u||void 0!==It[t][p])){var h=function(e,t){if(void 0!==It[e][t]){if("string"==typeof It[e][t])return It[e][t];if(It[e][t].name)return It[e][t].name}return"undefined-".concat(t)}(t,p);if(f.shouldParseTag(c,h,p)){o=function(e,t){return Ct.typeSizes[e]*t<=Ct.getTypeSize("LONG")}(g,m)?Xt(e,a=r+d,g,m,i):function(e,t,n,r,i){return t+n+Ct.typeSizes[r]*i<=e.byteLength}(e,n,a=Ct.getLongAt(e,r+d,i),g,m)?Xt(e,n+a,g,m,i,33723===p):"",g===Ct.tagTypes.ASCII&&(o=function(e){try{return e.map((function(e){return decodeURIComponent(escape(e))}))}catch(t){return e}}(o=function(e){for(var t=[],n=0,r=0;r5&&void 0!==arguments[5]&&arguments[5]&&(r*=Ct.typeSizes[n],n=Ct.tagTypes.BYTE);for(var a=0;a3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,o=C(e,t),a=function(e,t,n,r,i,o){return Ht(e,ht,t,Vt(e,t,n),n,r,i,o,"exif")}(e,t,o,n,r,i);return{tags:a=tn(a=en(a=Qt(a,e,t,o,n,r,i),e,t,o,n,r,i),e,t,o,n,r,i),byteOrder:o}}};function Qt(e,t,n,r,i,o,a){return void 0!==e[Yt]?l(e,Ht(t,vt,n,n+e[Yt].value,r,i,o,a,"exif")):e}function en(e,t,n,r,i,o,a){return void 0!==e[qt]?l(e,Ht(t,"gps",n,n+e[qt].value,r,i,o,a,"exif")):e}function tn(e,t,n,r,i,o,a){return void 0!==e[$t]?l(e,Ht(t,yt,n,n+e[$t].value,r,i,o,a,"exif")):e}var nn={read:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,o=C(e,t);return function(e,t,n,r){if(!n.MPEntry)return n;for(var i=[],o=0;o>31&1,e>>30&1,e>>29&1],n=[];return t[0]&&n.push("Dependent Parent Image"),t[1]&&n.push("Dependent Child Image"),t[2]&&n.push("Representative Image"),{value:t,description:n.join(", ")||"None"}}function un(e){var t=e>>24&7;return{value:t,description:0===t?"JPEG":"Unknown"}}function fn(e){var t=16777215&e;return{value:t,description:{196608:"Baseline MP Primary Image",65537:"Large Thumbnail (VGA equivalent)",65538:"Large Thumbnail (Full HD equivalent)",131073:"Multi-Frame Image (Panorama)",131074:"Multi-Frame Image (Disparity)",131075:"Multi-Frame Image (Multi-Angle)",0:"Undefined"}[t]||"Unknown"}}function cn(e,t,n,r){return function(e){return 0===e}(e)?0:on(t.value,e*rn+8,Ct.getTypeSize("LONG"),n)+r}var sn={read:function(e,t){var n=function(e,t){return Ct.getShortAt(e,t)}(e,t),r=function(e,t,n){if(!(8>n)){var r=Ct.getByteAt(e,t+7);return{value:r,description:""+r}}}(e,t,n);return{"Bits Per Sample":ln(e,t,n),"Image Height":dn(e,t,n),"Image Width":pn(e,t,n),"Color Components":r,Subsampling:r&&gn(e,t,r.value,n)}}};function ln(e,t,n){if(!(3>n)){var r=Ct.getByteAt(e,t+2);return{value:r,description:""+r}}}function dn(e,t,n){if(!(5>n)){var r=Ct.getShortAt(e,t+3);return{value:r,description:"".concat(r,"px")}}}function pn(e,t,n){if(!(7>n)){var r=Ct.getShortAt(e,t+5);return{value:r,description:"".concat(r,"px")}}}function gn(e,t,n,r){if(!(8+3*n>r)){for(var i=[],o=0;o1?mn(i)+hn(i):""}}}function mn(e){var t={1:"Y",2:"Cb",3:"Cr",4:"I",5:"Q"};return e.map((function(e){return t[e[0]]})).join("")}function hn(e){var t={17:"4:4:4 (1 1)",18:"4:4:0 (1 2)",20:"4:4:1 (1 4)",33:"4:2:2 (2 1)",34:"4:2:0 (2 2)",36:"4:2:1 (2 4)",65:"4:1:1 (4 1)",66:"4:1:0 (4 2)"};return 0===e.length||void 0===e[0][1]||void 0===t[e[0][1]]?"":t[e[0][1]]}var vn={read:function(e,t){var n=function(e,t){return Ct.getShortAt(e,t)}(e,t),r=function(e,t,n){if(!(15>n)){var r=Ct.getByteAt(e,t+14);return{value:r,description:"".concat(r,"px")}}}(e,t,n),i=function(e,t,n){if(!(16>n)){var r=Ct.getByteAt(e,t+15);return{value:r,description:"".concat(r,"px")}}}(e,t,n),o={"JFIF Version":yn(e,t,n),"Resolution Unit":bn(e,t,n),XResolution:In(e,t,n),YResolution:Pn(e,t,n),"JFIF Thumbnail Width":r,"JFIF Thumbnail Height":i};if(void 0!==r&&void 0!==i){var a=function(e,t,n,r){if(!(0===n||16+n>r))return{value:e.buffer.slice(t+16,t+16+n),description:"<24-bit RGB pixel data>"}}(e,t,3*r.value*i.value,n);a&&(o["JFIF Thumbnail"]=a)}for(var u in o)void 0===o[u]&&delete o[u];return o}};function yn(e,t,n){if(!(9>n)){var r=Ct.getByteAt(e,t+7),i=Ct.getByteAt(e,t+7+1);return{value:256*r+i,description:r+"."+i}}}function bn(e,t,n){if(!(10>n)){var r=Ct.getByteAt(e,t+9);return{value:r,description:Sn(r)}}}function Sn(e){return 0===e?"None":1===e?"inches":2===e?"cm":"Unknown"}function In(e,t,n){if(!(12>n)){var r=Ct.getShortAt(e,t+10);return{value:r,description:""+r}}}function Pn(e,t,n){if(!(14>n)){var r=Ct.getShortAt(e,t+12);return{value:r,description:""+r}}}var An={iptc:{256:{name:"Model Version",description:function(e){return""+((e[0]<<8)+e[1])}},261:{name:"Destination",repeatable:1},276:{name:"File Format",description:function(e){return""+((e[0]<<8)+e[1])}},278:{name:"File Format Version",description:function(e){return""+((e[0]<<8)+e[1])}},286:"Service Identifier",296:"Envelope Number",306:"Product ID",316:"Envelope Priority",326:{name:"Date Sent",description:Cn},336:{name:"Time Sent",description:Tn},346:{name:"Coded Character Set",description:xn,encoding_name:xn},356:"UNO",376:{name:"ARM Identifier",description:function(e){return""+((e[0]<<8)+e[1])}},378:{name:"ARM Version",description:function(e){return""+((e[0]<<8)+e[1])}},512:{name:"Record Version",description:function(e){return""+((e[0]<<8)+e[1])}},515:"Object Type Reference",516:"Object Attribute Reference",517:"Object Name",519:"Edit Status",520:{name:"Editorial Update",description:function(e){return"01"===y(e)?"Additional Language":"Unknown"}},522:"Urgency",524:{name:"Subject Reference",repeatable:1,description:function(e){var t=y(e).split(":");return t[2]+(t[3]?"/"+t[3]:"")+(t[4]?"/"+t[4]:"")}},527:"Category",532:{name:"Supplemental Category",repeatable:1},534:"Fixture Identifier",537:{name:"Keywords",repeatable:1},538:{name:"Content Location Code",repeatable:1},539:{name:"Content Location Name",repeatable:1},542:"Release Date",547:"Release Time",549:"Expiration Date",550:"Expiration Time",552:"Special Instructions",554:{name:"Action Advised",description:function(e){var t=y(e);return"01"===t?"Object Kill":"02"===t?"Object Replace":"03"===t?"Object Append":"04"===t?"Object Reference":"Unknown"}},557:{name:"Reference Service",repeatable:1},559:{name:"Reference Date",repeatable:1},562:{name:"Reference Number",repeatable:1},567:{name:"Date Created",description:Cn},572:{name:"Time Created",description:Tn},574:{name:"Digital Creation Date",description:Cn},575:{name:"Digital Creation Time",description:Tn},577:"Originating Program",582:"Program Version",587:{name:"Object Cycle",description:function(e){var t=y(e);return"a"===t?"morning":"p"===t?"evening":"b"===t?"both":"Unknown"}},592:{name:"By-line",repeatable:1},597:{name:"By-line Title",repeatable:1},602:"City",604:"Sub-location",607:"Province/State",612:"Country/Primary Location Code",613:"Country/Primary Location Name",615:"Original Transmission Reference",617:"Headline",622:"Credit",627:"Source",628:"Copyright Notice",630:{name:"Contact",repeatable:1},632:"Caption/Abstract",634:{name:"Writer/Editor",repeatable:1},637:{name:"Rasterized Caption",description:function(e){return e}},642:"Image Type",643:{name:"Image Orientation",description:function(e){var t=y(e);return"P"===t?"Portrait":"L"===t?"Landscape":"S"===t?"Square":"Unknown"}},647:"Language Identifier",662:{name:"Audio Type",description:function(e){var t=y(e),n=t.charAt(0),r=t.charAt(1),i="";return"1"===n?i+="Mono":"2"===n&&(i+="Stereo"),"A"===r?i+=", actuality":"C"===r?i+=", question and answer session":"M"===r?i+=", music, transmitted by itself":"Q"===r?i+=", response to a question":"R"===r?i+=", raw sound":"S"===r?i+=", scener":"V"===r?i+=", voicer":"W"===r&&(i+=", wrap"),""!==i?i:t}},663:{name:"Audio Sampling Rate",description:function(e){return parseInt(y(e),10)+" Hz"}},664:{name:"Audio Sampling Resolution",description:function(e){var t=parseInt(y(e),10);return t+(1===t?" bit":" bits")}},665:{name:"Audio Duration",description:function(e){var t=y(e);return t.length>=6?t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2):t}},666:"Audio Outcue",698:"Short Document ID",699:"Unique Document ID",700:"Owner ID",712:{name:function(e){return 2===e.length?"ObjectData Preview File Format":"Record 2 destination"},description:function(e){if(2===e.length){var t=(e[0]<<8)+e[1];return 0===t?"No ObjectData":1===t?"IPTC-NAA Digital Newsphoto Parameter Record":2===t?"IPTC7901 Recommended Message Format":3===t?"Tagged Image File Format (Adobe/Aldus Image data)":4===t?"Illustrator (Adobe Graphics data)":5===t?"AppleSingle (Apple Computer Inc)":6===t?"NAA 89-3 (ANPA 1312)":7===t?"MacBinary II":8===t?"IPTC Unstructured Character Oriented File Format (UCOFF)":9===t?"United Press International ANPA 1312 variant":10===t?"United Press International Down-Load Message":11===t?"JPEG File Interchange (JFIF)":12===t?"Photo-CD Image-Pac (Eastman Kodak)":13===t?"Microsoft Bit Mapped Graphics File [*.BMP]":14===t?"Digital Audio File [*.WAV] (Microsoft & Creative Labs)":15===t?"Audio plus Moving Video [*.AVI] (Microsoft)":16===t?"PC DOS/Windows Executable Files [*.COM][*.EXE]":17===t?"Compressed Binary File [*.ZIP] (PKWare Inc)":18===t?"Audio Interchange File Format AIFF (Apple Computer Inc)":19===t?"RIFF Wave (Microsoft Corporation)":20===t?"Freehand (Macromedia/Aldus)":21===t?'Hypertext Markup Language "HTML" (The Internet Society)':22===t?"MPEG 2 Audio Layer 2 (Musicom), ISO/IEC":23===t?"MPEG 2 Audio Layer 3, ISO/IEC":24===t?"Portable Document File (*.PDF) Adobe":25===t?"News Industry Text Format (NITF)":26===t?"Tape Archive (*.TAR)":27===t?"Tidningarnas Telegrambyrå NITF version (TTNITF DTD)":28===t?"Ritzaus Bureau NITF version (RBNITF DTD)":29===t?"Corel Draw [*.CDR]":"Unknown format ".concat(t)}return y(e)}},713:{name:"ObjectData Preview File Format Version",description:function(e,t){var n={"00":{"00":"1"},"01":{"01":"1","02":"2","03":"3","04":"4"},"02":{"04":"4"},"03":{"01":"5.0","02":"6.0"},"04":{"01":"1.40"},"05":{"01":"2"},"06":{"01":"1"},11:{"01":"1.02"},20:{"01":"3.1","02":"4.0","03":"5.0","04":"5.5"},21:{"02":"2.0"}},r=y(e);if(t["ObjectData Preview File Format"]){var i=y(t["ObjectData Preview File Format"].value);if(n[i]&&n[i][r])return n[i][r]}return r}},714:"ObjectData Preview Data",1802:{name:"Size Mode",description:function(e){return e[0].toString()}},1812:{name:"Max Subfile Size",description:function(e){for(var t=0,n=0;n=8?t.substr(0,4)+"-"+t.substr(4,2)+"-"+t.substr(6,2):t}function Tn(e){var t=y(e),n=t;return t.length>=6&&(n=t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2),11===t.length&&(n+=t.substr(6,1)+t.substr(7,2)+":"+t.substr(9,2))),n}function xn(e){var t=y(e);return"%G"===t?"UTF-8":"%5"===t?"Windows-1252":"%/G"===t?"UTF-8 Level 1":"%/H"===t?"UTF-8 Level 2":"%/I"===t?"UTF-8 Level 3":"/A"===t?"ISO-8859-1":"/B"===t?"ISO-8859-2":"/C"===t?"ISO-8859-3":"/D"===t?"ISO-8859-4":"/@"===t?"ISO-8859-5":"/G"===t?"ISO-8859-6":"/F"===t?"ISO-8859-7":"/H"===t?"ISO-8859-8":"Unknown"}var Un=function(e,t){if("string"==typeof t)return En(t);var n=function(){if("undefined"!=typeof TextDecoder)return TextDecoder}();if("undefined"!=typeof n&&void 0!==e)try{return new n(e).decode(t instanceof DataView?t.buffer:Uint8Array.from(t))}catch(e){}return En(t.map((function(e){return String.fromCharCode(e)})).join(""))};function En(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}var wn={read:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Gt;try{if(Array.isArray(e))return Mn(new DataView(Uint8Array.from(e).buffer),{size:e.length},0,n,r);var i=function(e,t){for(;t+12<=e.byteLength;){var n=Fn(e,t);if(On(n))return{naaBlock:n,dataOffset:t+n.headerSize};t+=n.headerSize+n.size+Rn(n)}throw Error("No IPTC NAA resource block.")}(e,t);return Mn(e,i.naaBlock,i.dataOffset,n,r)}catch(e){return{}}}};function Fn(e,t){if(943868237!==e.getUint32(t,0))throw Error("Not an IPTC resource block.");var n=e.getUint8(t+4+2),r=(n%2==0?n+1:n)+1;return{headerSize:6+r+4,type:e.getUint16(t+4),size:e.getUint32(t+4+2+r)}}function On(e){return 1028===e.type}function Rn(e){return e.size%2!=0?1:0}function Mn(e,t,n,r,i){for(var o={},a=void 0,u=n+t.size;n2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Gt;if(function(e,t){return 28!==e.getUint8(t)}(e,t))return{tag:null,tagSize:0};var a=e.getUint16(t+1),u=e.getUint16(t+3);if(!i&&!An.iptc[a])return{tag:void 0,tagSize:u};if(!o.shouldParseTag("iptc",function(e,t){var n=An.iptc[e];return n?"string"==typeof n?n:n&&"string"==typeof n.name?n.name:void 0:t?"undefined-".concat(e):void 0}(a,i),a))return{tag:void 0,tagSize:u};var f=function(e,t,n){for(var r=[],i=0;ie.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&n.push($n(e,t.slice(1))),n}(e,t),function(e){if(Array.isArray(e))return e}(i)||function(e){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,o,a=[],u=1,f=0;try{for(i=(t=t.call(e)).next,!2;!(u=(n=i.call(t)).done)&&(a.push(n.value),2!==a.length);u=1);}catch(e){f=1,r=e}finally{try{if(!u&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(f)throw r}}return a}}(i)||function(e){if(e){if("string"==typeof e)return Hn(e,2);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Hn(e,2):void 0}}(i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],u=o[1],f=Zn(r,a,n);if(u){var c=Zn(r,u,n);f||c||(delete r._raw,Zn(r,$n(e,t),n))}return r}},qn=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,t,n){return t=Jn(t),function(e,t){if(t&&("object"==Vn(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Xn()?Reflect.construct(t,n||[],Jn(e).constructor):t.apply(e,n))}(this,t,[e])).name="ParseError",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:1,configurable:1}}),Object.defineProperty(e,"prototype",{writable:0}),t&&Kn(e,t)}(t,e),Object.defineProperty(n=t,"prototype",{writable:0}),n;var n}(Wn(Error));function $n(e,t){for(var n=t.reduce((function(e,t){return e+t.length}),0),r=new Uint8Array(n),i=0,o=0;o).+$/,"$1")),raw:r}}(t,n),i=r.doc,o=r.raw;return e._raw=(e._raw||"")+o,l(e,rr(tr(er(i),1))),1}catch(e){return 0}}function Qn(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;try{var r=e.parseFromString(t,"application/xml"),i=r.getElementsByTagName("parsererror");if(i.length>0)throw new qn(i[0].textContent);return r}catch(r){if("ParseError"===r.name&&function(e){for(var t=["prefix is non-null and namespace is null","prefix not bound to a namespace","prefix inte bundet till en namnrymd",/Namespace prefix .+ is not defined/],n=0;n]*)>/);if(!t)return e;var n=t[1],r=function(e){for(var t,n=[],r=/xmlns:([\w-]+)=["'][^"']+["']/g;null!==(t=r.exec(e));)-1===n.indexOf(t[1])&&n.push(t[1]);return n}(e),i=function(e){for(var t,n=[],r=/\b([A-Za-z_][A-Za-z0-9._-]*):[A-Za-z_][A-Za-z0-9._-]*\b/g;null!==(t=r.exec(e));){var i=t[1];"xmlns"!==i&&"xml"!==i&&-1===n.indexOf(i)&&n.push(i)}return n}(e).filter((function(e){return-1===r.indexOf(e)}));return 0===i.length?e:function(e,t,n){var r=RegExp("<"+t+"([^>]*)>");return e.replace(r,"<"+t+"$1"+n+">")}(e,n,function(e){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:0,r=function(e){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:void 0;if(Array.isArray(e)){var n=function(e){return e.map((function(e){return void 0!==e.value?fr(e.value):fr(e)})).join(", ")}(e);return t&&"function"==typeof Dn[t]?Dn[t](e,n):n}if("object"===Vn(e))return function(e){var t=[];for(var n in e)t.push("".concat(cr(n),": ").concat(fr(e[n].value)));return t.join("; ")}(e);try{return t&&"function"==typeof Dn[t]?Dn[t](e):decodeURIComponent(escape(e))}catch(t){return e}}function cr(e){return"CiAdrCity"===e?"CreatorCity":"CiAdrCtry"===e?"CreatorCountry":"CiAdrExtadr"===e?"CreatorAddress":"CiAdrPcode"===e?"CreatorPostalCode":"CiAdrRegion"===e?"CreatorRegion":"CiEmailWork"===e?"CreatorWorkEmail":"CiTelWork"===e?"CreatorWorkPhone":"CiUrlWork"===e?"CreatorWorkUrl":e}function sr(e){var t={};for(var n in e)try{ar(n)||(t[ur(n)]=lr(e[n],n))}catch(e){}return t}function lr(e,t){return function(e){return Array.isArray(e)}(e)?function(e,t){return Sr(e[e.length-1],t)}(e,t):function(e){return"Resource"===e.attributes["rdf:parseType"]&&"string"==typeof e.value&&""===e.value.trim()}(e)?{value:"",attributes:{},description:""}:dr(e)?pr(e,t):mr(e)?hr(e,t):vr(e)?yr(e,t):function(e){return void 0!==br(e.value)}(e)?function(e,t){var n=br(e.value).value["rdf:li"],r=gr(e),i=[];return void 0===n?n=[]:Array.isArray(n)||(n=[n]),n.forEach((function(e){i.push(function(e){return dr(e)?pr(e):mr(e)?hr(e).value:vr(e)?yr(e).value:Sr(e)}(e))})),{value:i,attributes:r,description:fr(i,t)}}(e,t):Sr(e,t)}function dr(e){return"Resource"===e.attributes["rdf:parseType"]&&void 0!==e.value["rdf:value"]||void 0!==e.value["rdf:Description"]&&void 0!==e.value["rdf:Description"].value["rdf:value"]}function pr(e,t){var n=gr(e);void 0!==e.value["rdf:Description"]&&(e=e.value["rdf:Description"]),l(n,gr(e),function(e){var t={};for(var n in e.value)"rdf:value"===n||ar(n)||(t[ur(n)]=e.value[n].value);return t}(e));var r=function(e){return Ir(e.value["rdf:value"])||e.value["rdf:value"].value}(e);return{value:r,attributes:n,description:fr(r,t)}}function gr(e){var t={};for(var n in e.attributes)"rdf:parseType"===n||"rdf:resource"===n||ar(n)||(t[ur(n)]=e.attributes[n]);return t}function mr(e){return"Resource"===e.attributes["rdf:parseType"]||void 0!==e.value["rdf:Description"]&&void 0===e.value["rdf:Description"].value["rdf:value"]}function hr(e,t){var n={value:{},attributes:{}};return void 0!==e.value["rdf:Description"]&&(l(n.value,ir(e.value["rdf:Description"].attributes)),l(n.attributes,gr(e)),e=e.value["rdf:Description"]),l(n.value,sr(e.value)),n.description=fr(n.value,t),n}function vr(e){return 0===Object.keys(e.value).length&&void 0===e.attributes["xml:lang"]&&void 0===e.attributes["rdf:resource"]}function yr(e,t){var n=ir(e.attributes);return{value:n,attributes:{},description:fr(n,t)}}function br(e){return e["rdf:Bag"]||e["rdf:Seq"]||e["rdf:Alt"]}function Sr(e,t){var n=Ir(e)||rr(e.value);return{value:n,attributes:gr(e),description:fr(n,t)}}function Ir(e){return e.attributes&&e.attributes["rdf:resource"]}function Pr(e){return Pr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pr(e)}function Ar(e,t,n){return(t=function(e){var t=function(e){if("object"!=Pr(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Pr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return e+""}(e);return"symbol"==Pr(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:1,configurable:1,writable:1}):e[t]=n,e}function Cr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n>>31==0?1:-1,a=(2130706432&i)>>>32-n,u=i&parseInt(g("1",32-n),2);return o*function(e){return parseInt(e.replace(".",""),2)/Math.pow(2,(e.split(".")[1]||"").length)}(a.toString(2)+"."+(g("0",32-n-(r=u.toString(2)).length)+r))}function Fr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&void 0!==arguments[2]?arguments[2]:Gt,r=o(new Uint8Array(e).buffer),i={},u=0;u"}i[l||Tr[c].name]=m}else t&&(i["undefined-".concat(c)]=m)}u+=d+d%2}return i}},Rr="8BIM",Mr=2,Nr=4,Gr=Rr.length;function kr(e,t,n){return t||(Tr[e]&&Tr[e].name?Tr[e].name:n?"undefined-".concat(e):void 0)}function Lr(e,t){var n,r=function(e){if(Array.isArray(e))return e}(n=c(e,t))||function(e){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,o,a=[],u=1,f=0;try{for(i=(t=t.call(e)).next,!2;!(u=(n=i.call(t)).done)&&(a.push(n.value),2!==a.length);u=1);}catch(e){f=1,r=e}finally{try{if(!u&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(f)throw r}}return a}}(n)||function(e){if(e){if("string"==typeof e)return Fr(e,2);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Fr(e,2):void 0}}(n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),i=r[0];return{tagName:r[1],tagNameSize:1+i+(i%2==0?1:0)}}var Dr={desc:{name:"ICC Description"},cprt:{name:"ICC Copyright"},dmdd:{name:"ICC Device Model Description"},vued:{name:"ICC Viewing Conditions Description"},dmnd:{name:"ICC Device Manufacturer for Display"},tech:{name:"Technology"}},_r={4:{name:"Preferred CMM type",value:function(e,t){return a(e,t,4)},description:function(e){return null!==e?jr(e):""}},8:{name:"Profile Version",value:function(e,t){return e.getUint8(t).toString(10)+"."+(e.getUint8(t+1)>>4).toString(10)+"."+(e.getUint8(t+1)%16).toString(10)}},12:{name:"Profile/Device class",value:function(e,t){return a(e,t,4)},description:function(e){switch(e.toLowerCase()){case"scnr":return"Input Device profile";case"mntr":return"Display Device profile";case"prtr":return"Output Device profile";case"link":return"DeviceLink profile";case"abst":return"Abstract profile";case"spac":return"ColorSpace profile";case"nmcl":return"NamedColor profile";case"cenc":return"ColorEncodingSpace profile";case"mid ":return"MultiplexIdentification profile";case"mlnk":return"MultiplexLink profile";case"mvis":return"MultiplexVisualization profile";default:return e}}},16:{name:"Color Space",value:function(e,t){return a(e,t,4)}},20:{name:"Connection Space",value:function(e,t){return a(e,t,4)}},24:{name:"ICC Profile Date",value:function(e,t){return function(e,t){var n=e.getUint16(t),r=e.getUint16(t+2)-1,i=e.getUint16(t+4),o=e.getUint16(t+6),a=e.getUint16(t+8),u=e.getUint16(t+10);return new Date(Date.UTC(n,r,i,o,a,u))}(e,t).toISOString()}},36:{name:"ICC Signature",value:function(e,t){return n=e.buffer.slice(t,t+4),String.fromCharCode.apply(null,new Uint8Array(n));var n}},40:{name:"Primary Platform",value:function(e,t){return a(e,t,4)},description:function(e){return jr(e)}},48:{name:"Device Manufacturer",value:function(e,t){return a(e,t,4)},description:function(e){return jr(e)}},52:{name:"Device Model Number",value:function(e,t){return a(e,t,4)}},64:{name:"Rendering Intent",value:function(e,t){return e.getUint32(t)},description:function(e){switch(e){case 0:return"Perceptual";case 1:return"Relative Colorimetric";case 2:return"Saturation";case 3:return"Absolute Colorimetric";default:return e}}},80:{name:"Profile Creator",value:function(e,t){return a(e,t,4)}}};function jr(e){switch(e.toLowerCase()){case"appl":return"Apple";case"adbe":return"Adobe";case"msft":return"Microsoft";case"sunw":return"Sun Microsystems";case"sgi":return"Silicon Graphics";case"tgnt":return"Taligent";default:return e}}var Br={read:function(e,t,n){return n&&t[0].compressionMethod!==m?function(e,t){return 0!==t[0].compressionMethod?{}:h(new DataView(e.buffer.slice(t[0].offset,t[0].offset+t[0].length)),t[0].compressionMethod,"utf-8","dataview").then($r).catch((function(){return{}}))}(e,t):function(e,t){try{for(var n=t.reduce((function(e,t){return e+t.length}),0),r=new Uint8Array(n),i=0,o=function(e){return Array.isArray(e)?new DataView(Uint8Array.from(e).buffer).buffer:e.buffer}(e),a=function(e){var n=t.find((function(t){return t.chunkNumber===e}));if(!n)throw Error("ICC chunk ".concat(e," not found"));var a=o.slice(n.offset,n.offset+n.length),u=new Uint8Array(a);r.set(u,i),i+=u.length},u=1;u<=t.length;u++)a(u);return $r(new DataView(r.buffer))}catch(e){return{}}}(e,t)}},zr=84,Vr=128,Hr="acsp",Wr="desc",Xr="mluc",Kr="text",Jr="sig ",Yr=12;function qr(e,t){return e.lengtht.length)return r;var y=a(e,h,4);if(y===Wr){var b=e.getUint32(h+8);if(b>v)return r;Qr(r,m,Zr(t.slice(h+12,h+b+11)))}else if(y===Xr){for(var S=e.getUint32(h+8),I=e.getUint32(h+12),P=h+16,A=[],C=0;C5&&void 0!==arguments[5]?arguments[5]:0,arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,"makerNotes");return o.ShotInfo&&delete(o=l({},o,function(e){var t,n={};return void 0!==e[27]&&(n.AutoRotate={value:e[27],description:(t=e[27],0===t?"None":1===t?"Rotate 90 CW":2===t?"Rotate 180":3===t?"Rotate 270 CW":"Unknown")}),n}(o.ShotInfo.value))).ShotInfo,o.CameraSettings&&delete(o=l({},o,function(e){var t={};if(!Array.isArray(e))return t;var n=e[22];return Number.isFinite(n)&&(t.LensType={value:n,description:"".concat(n)}),t}(o.CameraSettings.value))).CameraSettings,o},SHOT_INFO_AUTO_ROTATE:27,CAMERA_SETTINGS_LENS_TYPE:22},ti={K3_III:78420},ni={CAMERA_ORIENTATION:1,ROLL_ANGLE:3,PITCH_ANGLE:5},ri={read:function(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0,a=C(e,t+n+8),u=t+n,f=Ht(e,St,u,u+10,a,r,i,o,"makerNotes");return function(e){return e.PentaxModelID&&e.PentaxModelID.value===ti.K3_III&&e.LevelInfo}(f)&&(f=l({},f,function(e,t,n){var r={};if(t+7>e.byteLength)return r;var i,o=e.getInt8(t+ni.CAMERA_ORIENTATION);r.CameraOrientation={value:o,description:(i=o,0===i?"Horizontal (normal)":1===i?"Rotate 270 CW":2===i?"Rotate 180":3===i?"Rotate 90 CW":4===i?"Upwards":5===i?"Downwards":"Unknown")};var a=e.getInt16(t+ni.ROLL_ANGLE,n===A);r.RollAngle={value:a,description:ii(a)};var u=e.getInt16(t+ni.PITCH_ANGLE,n===A);return r.PitchAngle={value:u,description:oi(u)},r}(e,u+f.LevelInfo.__offset,a)),delete f.LevelInfo),f},PENTAX_IFD_OFFSET:10,MODEL_ID:ti,LIK3III:ni};function ii(e){return""+-.5*e}function oi(e){return""+-.5*e}var ai={read:function(e,t){return{"Image Width":ui(e,t),"Image Height":fi(e,t),"Bit Depth":ci(e,t),"Color Type":si(e,t),Compression:li(e,t),Filter:di(e,t),Interlace:pi(e,t)}}};function ui(e,t){if(!(t+0+4>e.byteLength)){var n=Ct.getLongAt(e,t);return{value:n,description:"".concat(n,"px")}}}function fi(e,t){if(!(t+4+4>e.byteLength)){var n=Ct.getLongAt(e,t+4);return{value:n,description:"".concat(n,"px")}}}function ci(e,t){if(!(t+8+1>e.byteLength)){var n=Ct.getByteAt(e,t+8);return{value:n,description:"".concat(n)}}}function si(e,t){if(!(t+9+1>e.byteLength)){var n=Ct.getByteAt(e,t+9);return{value:n,description:{0:"Grayscale",2:"RGB",3:"Palette",4:"Grayscale with Alpha",6:"RGB with Alpha"}[n]||"Unknown"}}}function li(e,t){if(!(t+10+1>e.byteLength)){var n=Ct.getByteAt(e,t+10);return{value:n,description:0===n?"Deflate/Inflate":"Unknown"}}}function di(e,t){if(!(t+11+1>e.byteLength)){var n=Ct.getByteAt(e,t+11);return{value:n,description:0===n?"Adaptive":"Unknown"}}}function pi(e,t){if(!(t+12+1>e.byteLength)){var n=Ct.getByteAt(e,t+12);return{value:n,description:{0:"Noninterlaced",1:"Adam7 Interlace"}[n]||"Unknown"}}}function gi(e){return gi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},gi(e)}var mi={read:function(e,t,n,r){for(var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Gt,a={},u=[],f=0;f0?Promise.all(u):void 0}}},hi="STATE_KEYWORD",vi="STATE_COMPRESSION",yi="STATE_LANG",bi="STATE_TRANSLATED_KEYWORD",Si="STATE_TEXT",Ii=1,Pi=1,Ai=6;function Ci(e,t,n,r,i){for(var o,a=[],u=[],f=[],c=hi,s=m,l=0;l".split(""),r,u,a)})):Ui(p,r,u,a)}function Ti(e){var t=e.type,n=e.dataView,r=e.offset;if(t===Ee){if(n.getUint8(r)===Pi)return n.getUint8(r+1)}else if(t===we)return n.getUint8(r);return m}function xi(e,t){return t===hi&&[Ee,we].includes(e)?vi:t===vi?e===Ee?yi:Si:t===yi?bi:Si}function Ui(e,t,n,r){var i=function(e){return e instanceof DataView?a(e,0,e.byteLength):e}(e);return{name:Ei(t,n,r),value:i,description:t===Ee?wi(e):i}}function Ei(e,t,n){var r=s(n);if(e===Ue||0===t.length)return r;var i=s(t);return"".concat(r," (").concat(i,")")}function wi(e){return Un("UTF-8",e)}function Fi(e,t){return"raw profile type exif"===e.toLowerCase()&&"exif"===t.substring(1,5)}function Oi(e,t){return"raw profile type iptc"===e.toLowerCase()&&"iptc"===t.substring(1,5)}function Ri(e){return function(e){for(var t=new DataView(new ArrayBuffer(e.length/2)),n=0;ne.byteLength)){var t=a(e,3,3);return{value:t,description:t}}}function Xi(e){if(!(8>e.byteLength)){var t=e.getUint16(6,1);return{value:t,description:"".concat(t,"px")}}}function Ki(e){if(!(10>e.byteLength)){var t=e.getUint16(8,1);return{value:t,description:"".concat(t,"px")}}}function Ji(e){if(!(11>e.byteLength)){var t=(128&e.getUint8(10))>>>7;return{value:t,description:1===t?"Yes":"No"}}}function Yi(e){if(!(11>e.byteLength)){var t=1+((112&e.getUint8(10))>>>4);return{value:t,description:"".concat(t," ").concat(1===t?"bit":"bits")}}}function qi(e){if(!(11>e.byteLength)){var t=1+(7&e.getUint8(10));return{value:t,description:"".concat(t," ").concat(1===t?"bit":"bits")}}}var $i=[6,7,99],Zi={get:function(e,t,n){if((i=t)&&(void 0===i.Compression||$i.includes(i.Compression.value))&&i.JPEGInterchangeFormat&&i.JPEGInterchangeFormat.value&&i.JPEGInterchangeFormatLength&&i.JPEGInterchangeFormatLength.value){t.type="image/jpeg";var r=n+t.JPEGInterchangeFormat.value;t.image=e.buffer.slice(r,r+t.JPEGInterchangeFormatLength.value),d(t,"base64",(function(){return p(this.image)}))}var i;return t}},Qi={get:function(e,t){var n={},r=0,i=eo(e,"exif","FocalLength",t),o=eo(e,"exif","FocalPlaneXResolution",t),a=eo(e,"exif","FocalPlaneYResolution",t),u=eo(e,"exif","FocalPlaneResolutionUnit",t),f=eo(e,"file","Image Width",t),c=eo(e,"file","Image Height",t),s=eo(e,"exif","FocalLengthIn35mmFilm",t)||function(e,t,n,r,i,o){if(e&&t&&n&&r&&i&&o)try{var a;switch(n){case 2:a=25.4;break;case 3:a=10;break;case 4:a=1;break;default:return}var u=e[0]/e[1]*a,f=i/(t[0]/t[1]*a),c=Math.sqrt(Math.pow(r/u,2)+Math.pow(f,2));return o[0]/o[1]*(43.27/c)}catch(e){}}(o,a,u,f,c,i);s&&(n.FocalLength35efl={value:s,description:ot.FocalLengthIn35mmFilm(s)},r=1);var l=function(e,t){if(e&&t)try{var n=t/(e[0]/e[1]);return{value:n,description:n.toFixed(1)}}catch(e){}}(i,s);l&&(n.ScaleFactorTo35mmEquivalent=l,r=1);var d=function(e){if(e)try{var t=2*Math.atan(36/(2*e))*(180/Math.PI);return{value:t,description:t.toFixed(1)+" deg"}}catch(e){}}(s);if(d&&(n.FieldOfView=d,r=1),r)return n}};function eo(e,t,n,r){return r&&e[t]&&e[t][n]?e[t][n].value:!r&&e[n]?e[n].value:void 0}function to(e){for(var t=e.mergeSteps,n=e.deferredResults,r=e.parsedGroups,i=e.expanded,o=e.tagFilter,a=e.dataView,u=e.tiffHeaderOffset,f=e.fileType,c=e.pngTextChunks,s=e.pngTextIsAsync,l=e.thumbnailIfdTags,d=e.deps,p={},g=0;g0&&(o.pngText=o.pngText?a.objectAssign({},o.pngText,g):g)):o=a.objectAssign({},o,g)}return o}function oo(e){this.name="MetadataMissingError",this.message=e||"No Exif data",this.stack=Error().stack}oo.prototype=Error();var ao={MetadataMissingError:oo},uo={load:co,loadView:lo,errors:ao},fo=ao;function co(e){var t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e){return"string"==typeof e}(e)){if(i.async=1,"undefined"==typeof Promise)throw Error("Promise is required when async mode is enabled.");return function(e,t){return/^\w+:\/\//.test(e)?"undefined"!=typeof fetch?function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length,n={method:"GET"};return Number.isInteger(t)&&t>=0&&(n.headers={range:"bytes=0-".concat(t-1)}),fetch(e,n).then((function(e){return e.arrayBuffer()}))}(e,t):function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise((function(n,r){var i={};Number.isInteger(t)&&t>=0&&(i.headers={range:"bytes=0-".concat(t-1)});var o=function(e){return/^https:\/\//.test(e)?require("https").get:require("http").get}(e);o(e,i,(function(e){if(e.statusCode>=200&&e.statusCode<=299){var t=[];e.on("data",(function(e){return t.push(Buffer.from(e))})),e.on("error",(function(e){return r(e)})),e.on("end",(function(){return n(Buffer.concat(t))}))}else r("Could not fetch file: ".concat(e.statusCode," ").concat(e.statusMessage)),e.resume()})).on("error",(function(e){return r(e)}))}))}(e,t):function(e){return/^data:[^;,]*(;base64)?,/.test(e)}(e)?Promise.resolve(function(e){var t=e.substring(e.indexOf(",")+1);if(-1!==e.indexOf(";base64")){if("undefined"!=typeof atob)return Uint8Array.from(atob(t),(function(e){return e.charCodeAt(0)})).buffer;if("undefined"==typeof Buffer)return;return"undefined"!=typeof Buffer.from?Buffer.from(t,"base64"):new Buffer(t,"base64")}var n=decodeURIComponent(t);return"undefined"!=typeof Buffer?"undefined"!=typeof Buffer.from?Buffer.from(n):new Buffer(n):Uint8Array.from(n,(function(e){return e.charCodeAt(0)})).buffer}(e)):function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).length;return new Promise((function(n,r){var i=function(){try{return require("fs")}catch(e){return}}();i.open(e,(function(o,a){o?r(o):i.stat(e,(function(o,u){if(o)r(o);else{var f=Math.min(u.size,void 0!==t?t:u.size),c=Buffer.alloc(f),s={buffer:c,length:f};i.read(a,s,(function(t){t?r(t):i.close(a,(function(t){t&&console.warn("Could not close file ".concat(e,":"),t),n(c)}))}))}}))}))}))}(e,t)}(e,i).then((function(e){return so(e,i)}))}if(function(e){return"undefined"!=typeof File&&e instanceof File}(e)){if(i.async=1,"undefined"==typeof Promise)throw Error("Promise is required when async mode is enabled.");return(t=e,n=i,r=n.length,new Promise((function(e,n){var i=new FileReader;i.onload=function(t){return e(t.target.result)},i.onerror=function(){return n(i.error)},Number.isInteger(r)&&r>=0&&void 0!==t.slice?i.readAsArrayBuffer(t.slice(0,r)):i.readAsArrayBuffer(t)}))).then((function(e){return so(e,i)}))}return so(e,i)}function so(e,t){return function(e){try{return Buffer.isBuffer(e)}catch(e){return 0}}(e)&&(e=new Uint8Array(e).buffer),lo(function(e){try{return new DataView(e)}catch(t){return new i(e)}}(e),t)}function lo(e){var t,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0,async:0,computed:0,includeUnknown:0,domParser:void 0,includeTags:void 0,excludeTags:void 0},o=i.expanded,a=void 0===o?0:o,u=i.async,f=void 0===u?0:u,c=i.computed,d=void 0===c?0:c,p=i.includeUnknown,g=void 0===p?0:p,m=i.domParser,h=void 0===m?void 0:m,y=i.includeTags,b=void 0===y?void 0:y,S=i.excludeTags,I=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.includeTags,n=e.excludeTags,r=!!t,i=!!n,o=r||i,a=Object.create(null),u=Object.create(null),f=Object.create(null);if(!o)return Nt();var c=r&&(Dt(t,"iptc")||Dt(t,"xmp")||Dt(t,"icc")||Dt(t,"photoshop")||Dt(t,"makerNotes")||Dt(t,"thumbnail")||Dt(t,"gps")||Dt(t,"composite")),s=r&&Dt(t,"composite"),l=Object.create(null);r&&(l=function(e){var t=function(e){var t=Object.create(null);if(!e)return t;for(var n in Array.isArray(e.exif)&&e.exif.length>0&&(t[Ft.exifIfdPointer]=1,function(e,t){for(var n=0;n0||!r.file||1==r.file||!Array.isArray(r.file)||1!==r.file.length||"FileType"!==r.file[0])){var H=po("file",sn.read(e,O),I);P.file=H,I.shouldReturnGroup("file")&&A.push({type:"mergeGroupAssign",groupKey:"file",parsedTags:H})}if(v.USE_JPEG&&v.USE_JFIF&&yo(R)&&I.shouldParseGroup("jfif")){var W=po("jfif",vn.read(e,R),I);P.jfif=W,I.shouldReturnGroup("jfif")&&A.push({type:"mergeGroupAssign",groupKey:"jfif",parsedTags:W})}if(v.USE_EXIF&&bo(M)&&I.shouldParseGroup("exif")){var X=Zt.read(e,M,g,d,I),K=X.tags,J=X.byteOrder;K.Thumbnail&&(U=K.Thumbnail,delete K.Thumbnail);var Y=po("exif",K,I);if(P.exif=Y,v.USE_TIFF&&v.USE_IPTC&&Y["IPTC-NAA"]&&!So(N)&&I.shouldParseGroup("iptc")){var q=po("iptc",wn.read(Y["IPTC-NAA"].value,0,g,I),I);P.iptc=q,I.shouldReturnGroup("iptc")&&A.push({type:"mergeGroupAssign",groupKey:"iptc",parsedTags:q})}if(v.USE_TIFF&&v.USE_XMP&&Y.ApplicationNotes&&!Io(G)&&I.shouldParseGroup("xmp")){var $=po("xmp",Yn.read(s(Y.ApplicationNotes.value),void 0,h),I);if(P.xmp=$,I.shouldReturnGroup("xmp")){var Z={type:"mergeXmpGroupAssign",parsedTags:$};a?A.push(Z):E=Z}}if(v.USE_PHOTOSHOP&&Y.ImageSourceData&&Y.PhotoshopSettings&&I.shouldParseGroup("photoshop")){var Q=po("photoshop",Or.read(Y.PhotoshopSettings.value,g,I),I);P.photoshop=Q,I.shouldReturnGroup("photoshop")&&A.push({type:"mergeGroupAssign",groupKey:"photoshop",parsedTags:Q})}if(v.USE_TIFF&&v.USE_ICC&&Y.ICC_Profile&&!Po(k)&&I.shouldParseGroup("icc")){var ee=po("icc",Br.read(Y.ICC_Profile.value,[{offset:0,length:Y.ICC_Profile.value.length,chunkNumber:1,chunksTotal:1}]),I);P.icc=ee,I.shouldReturnGroup("icc")&&A.push({type:"mergeGroupAssign",groupKey:"icc",parsedTags:ee})}if(v.USE_MAKER_NOTES&&Y.MakerNote&&I.shouldParseGroup("makerNotes"))if((t=Y).Make&&t.Make.value&&Array.isArray(t.Make.value)&&"Canon"===t.Make.value[0]&&t.MakerNote&&t.MakerNote.__offset){var te=ei.read(e,M,Y.MakerNote.__offset,J,g,d,I);P.makerNotes=te,I.shouldReturnGroup("makerNotes")&&A.push({type:"mergeGroupAssign",groupKey:"makerNotes",parsedTags:te})}else if(function(e){return e.MakerNote.value.length>7&&"PENTAX "===s(e.MakerNote.value.slice(0,7))&&e.MakerNote.__offset}(Y)){var ne=ri.read(e,M,Y.MakerNote.__offset,g,d,I);P.makerNotes=ne,I.shouldReturnGroup("makerNotes")&&A.push({type:"mergeGroupAssign",groupKey:"makerNotes",parsedTags:ne})}Y.MakerNote&&delete Y.MakerNote.__offset,I.shouldReturnGroup("exif")&&A.push({type:"mergeGroupAssign",groupKey:"exif",parsedTags:Y}),!a&&E&&(A.push(E),E=void 0)}if(v.USE_JPEG&&v.USE_IPTC&&So(N)&&I.shouldParseGroup("iptc")){var re=po("iptc",wn.read(e,N,g,I),I);P.iptc=re,I.shouldReturnGroup("iptc")&&A.push({type:"mergeGroupAssign",groupKey:"iptc",parsedTags:re})}if(v.USE_XMP&&Io(G)&&I.shouldParseGroup("xmp")){var ie=po("xmp",Yn.read(e,G,h),I);P.xmp=ie,I.shouldReturnGroup("xmp")&&A.push({type:"mergeXmpGroupAssign",parsedTags:ie})}if((v.USE_JPEG||v.USE_WEBP)&&v.USE_ICC&&Po(k)&&I.shouldParseGroup("icc")){var oe=Br.read(e,k,f);if((n=oe)&&"function"==typeof n.then){if(!f)throw Error("Promise is required when async mode is enabled.");T.push(oe.then((function(e){C.iccApp=e}))),A.push({type:"mergeIccDeferred",deferredKey:"iccApp"})}else{var ae=po("icc",oe,I);P.icc=ae,I.shouldReturnGroup("icc")&&A.push({type:"mergeGroupAssign",groupKey:"icc",parsedTags:ae})}}if(v.USE_MPF&&Ao(L)&&I.shouldParseGroup("mpf")){var ue=po("mpf",nn.read(e,L,g,d,I),I);P.mpf=ue,I.shouldReturnGroup("mpf")&&A.push({type:"mergeGroupAssign",groupKey:"mpf",parsedTags:ue})}if(v.USE_PNG&&v.USE_PNG_FILE&&Co(D)&&I.shouldParseGroup("png")){var fe=po("png",ai.read(e,D),I);P.pngFile=fe,I.shouldReturnGroup("png")&&A.push({type:"mergePngFile",parsedTags:fe})}if(v.USE_PNG&&To(_)&&(I.shouldParseGroup("png")||I.shouldParseGroup("exif")||I.shouldParseGroup("iptc"))){var ce=mi.read(e,_,f,g,d,I),se=ce.readTags,le=ce.readTagsPromise;x=!!le,A.push({type:"processPngTextReadTags",readTags:se}),le&&(T.push(le.then((function(e){C.pngTextTagList=e}))),A.push({type:"processPngTextReadTagsDeferredList",deferredKey:"pngTextTagList"}))}if(v.USE_PNG&&xo(j)&&I.shouldParseGroup("png")){var de=po("png",Mi.read(e,j),I);P.pngChunk=de,I.shouldReturnGroup("png")&&A.push({type:"mergePngChunk",parsedTags:de})}if(v.USE_WEBP&&Uo(B)&&I.shouldParseGroup("riff")){var pe=po("riff",ji.read(e,B),I);P.riff=pe,I.shouldReturnGroup("riff")&&A.push({type:"mergeGroupMerge",groupKey:"riff",parsedTags:pe})}if(v.USE_GIF&&Eo(z)&&I.shouldParseGroup("gif")){var ge=po("gif",Hi.read(e,z),I);P.gif=ge,I.shouldReturnGroup("gif")&&A.push({type:"mergeGroupMerge",groupKey:"gif",parsedTags:ge})}if(A.push({type:"gps"}),A.push({type:"composite"}),A.push({type:"thumbnail"}),A.push({type:"fileType"}),!V)throw new ao.MetadataMissingError;var me={objectAssign:l,hasPngTextData:To,filterTagsForParse:po,filterTagsForReturn:go,getGpsGroupFromExifTags:ho,Constants:v,Composite:Qi,Thumbnail:Zi};if(f){if("undefined"==typeof Promise)throw Error("Promise is required when async mode is enabled.");return Promise.all(T).then((function(){return to({mergeSteps:A,deferredResults:C,parsedGroups:P,expanded:a,tagFilter:I,dataView:e,tiffHeaderOffset:M,fileType:F,pngTextChunks:_,pngTextIsAsync:x,thumbnailIfdTags:U,deps:me})}))}return to({mergeSteps:A,deferredResults:C,parsedGroups:P,expanded:a,tagFilter:I,dataView:e,tiffHeaderOffset:M,fileType:F,pngTextChunks:_,pngTextIsAsync:x,thumbnailIfdTags:U,deps:me})}function po(e,t,n){return n.isActive?mo(e,t,n.shouldParseTag):t}function go(e,t,n){return n.isActive?mo(e,t,n.shouldReturnTag):t}function mo(e,t,n){if(!t)return t;var r={};for(var i in t){var o=t[i];n(e,i,a(o))&&(r[i]=o)}return r;function a(e){if(e){if(Array.isArray(e)){if(0===e.length)return;return e[0].id}return e.id}}}function ho(e){var t=void 0;if(e.GPSLatitude&&e.GPSLatitudeRef){t=t||{};try{t.Latitude=S(e.GPSLatitude.value),"S"===e.GPSLatitudeRef.value.join("")&&(t.Latitude=-t.Latitude)}catch(e){}}if(e.GPSLongitude&&e.GPSLongitudeRef){t=t||{};try{t.Longitude=S(e.GPSLongitude.value),"W"===e.GPSLongitudeRef.value.join("")&&(t.Longitude=-t.Longitude)}catch(e){}}if(e.GPSAltitude&&e.GPSAltitudeRef){t=t||{};try{t.Altitude=e.GPSAltitude.value[0]/e.GPSAltitude.value[1],1===e.GPSAltitudeRef.value&&(t.Altitude=-t.Altitude)}catch(e){}}if(t)return t}function vo(e){return void 0!==e}function yo(e){return void 0!==e}function bo(e){return void 0!==e}function So(e){return void 0!==e}function Io(e){return Array.isArray(e)&&e.length>0}function Po(e){return Array.isArray(e)&&e.length>0}function Ao(e){return void 0!==e}function Co(e){return void 0!==e}function To(e){return Array.isArray(e)&&e.length>0}function xo(e){return void 0!==e}function Uo(e){return void 0!==e}function Eo(e){return void 0!==e}return t}()})); +//# sourceMappingURL=exif-reader.js.map \ No newline at end of file diff --git a/js/visual_gallery.js b/js/visual_gallery.js index 861b567..e9c83a5 100644 --- a/js/visual_gallery.js +++ b/js/visual_gallery.js @@ -11,7 +11,7 @@ import { LOG_PREFIX } from "./components/Constants.js"; if (!window.ExifReaderScriptLoaded) { const script = document.createElement("script"); - script.src = "https://cdn.jsdelivr.net/npm/exifreader@4.32.0/dist/exif-reader.min.js"; + script.src = new URL("./exif-reader.js", import.meta.url).href; script.onload = () => { window.ExifReaderScriptLoaded = true; }; @@ -71,9 +71,10 @@ app.registerExtension({ const widgetNames = ["positive_prompt", "negative_prompt", "image_list", "current_image", "gallery_settings"]; + const hiddenWidgetSize = () => [0, -4]; const hideWidget = (w) => { w.type = "hidden"; - w.computeSize = () => [0, -4]; + w.computeSize = hiddenWidgetSize; w.visible = false; }; @@ -90,7 +91,6 @@ app.registerExtension({ const originalOnConfigure = this.onConfigure; this.onConfigure = function () { if (originalOnConfigure) originalOnConfigure.apply(this, arguments); - hideWidgets(); this.drawWidgets = function () {}; this.widgets_visible = false; }; @@ -500,7 +500,6 @@ app.registerExtension({ this.onDrawForeground = function (ctx) { if (originalOnDrawForeground) originalOnDrawForeground.apply(this, arguments); if (!this.graph || this.flags.collapsed) return; - hideWidgets(); drawToolbar(ctx); drawGallery(ctx); }; @@ -684,6 +683,7 @@ app.registerExtension({ }; + const WHEEL_LISTENER_OPTIONS = { passive: true, capture: true }; this._onCanvasWheel = (e) => { if (!this.graph || this.flags.collapsed) return; const canvas = app.canvas; @@ -699,21 +699,19 @@ app.registerExtension({ const content = layout.content; if (localX >= content.x && localX <= content.x + content.w && localY >= content.y && localY <= content.y + content.h) { - const delta = e.deltaY || (e.detail ? e.detail * 40 : 0); + e.stopImmediatePropagation(); if (delta !== 0) { this._galleryScrollY += delta > 0 ? 60 : -60; const maxScroll = Math.max(0, layout.rows * layout.rowH + GAP * Math.max(0, layout.rows - 1) - content.h); this._galleryScrollY = Math.max(0, Math.min(this._galleryScrollY, maxScroll)); this.setDirtyCanvas(true, true); - e.preventDefault(); - e.stopPropagation(); } } }; if (app.canvas && app.canvas.canvas) { - app.canvas.canvas.addEventListener("wheel", this._onCanvasWheel, { passive: false, capture: true }); + app.canvas.canvas.addEventListener("wheel", this._onCanvasWheel, WHEEL_LISTENER_OPTIONS); } const originalOnMouseUp = this.onMouseUp; @@ -732,7 +730,7 @@ app.registerExtension({ this._galleryButtons = {}; this._teardownCanvasDnD(); if (this._onCanvasWheel && app.canvas && app.canvas.canvas) { - app.canvas.canvas.removeEventListener("wheel", this._onCanvasWheel, { passive: false, capture: true }); + app.canvas.canvas.removeEventListener("wheel", this._onCanvasWheel, WHEEL_LISTENER_OPTIONS); } };