UNPKG

image-preload

Version:

Simple, framework-agnostic image preloader. Async, sync, background, foreground, whatever!

1 lines 5.64 kB
!function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t=n();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(window,function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=0)}([function(e,n,t){"use strict";t.r(n);var r=function(e){var n=0,t={},r=new Worker("data:,$$="+e+";onmessage="+function(e){Promise.resolve(e.data[1]).then(function(e){return $$.apply($$,e)}).then(function(n){postMessage([e.data[0],0,n],[n].filter(function(e){return e instanceof ArrayBuffer||e instanceof MessagePort||e instanceof ImageBitmap}))},function(n){postMessage([e.data[0],1,""+n])})});return r.onmessage=function(e){t[e.data[0]][e.data[1]](e.data[2]),t[e.data[0]]=null},function(e){return e=[].slice.call(arguments),new Promise(function(){t[++n]=arguments,r.postMessage([n,e],e.filter(function(e){return e instanceof ArrayBuffer||e instanceof MessagePort||e instanceof ImageBitmap}))})}};t.d(n,"Order",function(){return o});var o,i=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},a=function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function a(e){try{s(r.next(e))}catch(e){i(e)}}function u(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){e.done?o(e.value):new t(function(n){n(e.value)}).then(a,u)}s((r=r.apply(e,n||[])).next())})},u=function(e,n){var t,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;a;)try{if(t=1,r&&(o=r[2&i[0]?"return":i[0]?"throw":"next"])&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[0,o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};!function(e){e[e.AllAtOnce=0]="AllAtOnce",e[e.InOrder=1]="InOrder"}(o||(o={}));var s={order:o.InOrder,timeout:0,shouldContinueOnFail:!0,toBase64:!1,inBackground:!1,onSingleImageFail:function(){},onSingleImageComplete:function(){},onComplete:function(){}};n.default=function(e,n){return a(this,void 0,void 0,function(){function t(e){return a(this,void 0,void 0,function(){var n,t,o,i;return u(this,function(a){switch(a.label){case 0:if(!c.inBackground)return[3,4];n=r(function(e){return new Promise(function(n,t){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.send(),r.addEventListener("load",function(){var e=new FileReader;e.readAsDataURL(r.response),e.addEventListener("loadend",function(){n(e.result)})}),r.addEventListener("error",function(e){t(e)})})}),a.label=1;case 1:return a.trys.push([1,3,,4]),o=(t=c).onSingleImageComplete,[4,n(e)];case 2:return[2,o.apply(t,[a.sent()])];case 3:throw i=a.sent(),c.onSingleImageFail(i),new Error(i);case 4:return[4,function(e){return new Promise(function(n,t){var r=document.createElement("img");r.setAttribute("src",e),r.addEventListener("load",function(e){c.onSingleImageComplete(e),n(e)}),r.addEventListener("error",function(e){c.onSingleImageFail(e),t(e)})})}(e)];case 5:return[2,a.sent()]}})})}var c,l,f,d,p;return u(this,function(r){switch(r.label){case 0:if((c=i({},s,n||{})).timeout&&c.order===o.AllAtOnce)throw new Error("Invalid options: Cannot specify `timeout` options and `AllAtOnce` order.");if(!1===c.toBase64&&!0===c.inBackground)throw new Error("Invalid options: If `inBackground` options is true `toBase64` options must be true as well.");if(!0===c.toBase64&&!1===c.inBackground)throw new Error("Invalid options: If `inBackground` options is false `toBase64` options must be false as well.");return c.order!==o.AllAtOnce?[3,2]:[4,Promise.all(e.map(t))];case 1:r.sent(),r.label=2;case 2:if(c.order!==o.InOrder)return[3,9];l=0,f=e,r.label=3;case 3:if(!(l<f.length))return[3,9];d=f[l],r.label=4;case 4:return r.trys.push([4,7,,8]),[4,(a=c.timeout,new Promise(function(e){return setTimeout(e,a)}))];case 5:return r.sent(),[4,t(d)];case 6:return r.sent(),[3,8];case 7:if(p=r.sent(),!c.shouldContinueOnFail)throw new Error(p);return[3,8];case 8:return l++,[3,3];case 9:return c.onComplete(),[2]}var a})})}}])});