-
Notifications
You must be signed in to change notification settings - Fork 85
/
progress-polyfill.min.js
5 lines (5 loc) · 2.27 KB
/
progress-polyfill.min.js
1
2
3
4
5
(function(){if(!("position"in document.createElement("progress"))){var e=Object.defineProperty;e||(e="__defineSetter__"in document.body?function(a,c,d){a.__defineGetter__(c,d.get);d.set&&a.__defineSetter__(c,d.set)}:function(a,c,d){a[c]=d.get()});try{[].slice.apply(document.images);var h=function(a){return[].slice.apply(a)}}catch(i){h=function(a){for(var c=[],d=a.length,b=0;b<d;b++)c[b]=a[b];return c}}for(var f=function(){var a=document.createElement("div");a.foo="bar";return a.getAttribute("foo")===
"bar"}(),b=window.ProgressPolyfill={DOMInterface:{max:{get:function(){return parseFloat(this.getAttribute("aria-valuemax"))||1},set:function(a){this.setAttribute("aria-valuemax",a);f||this.setAttribute("max",a);b.redraw(this)}},value:{get:function(){return parseFloat(this.getAttribute("aria-valuenow"))||0},set:function(a){this.setAttribute("aria-valuenow",a);f||this.setAttribute("value",a);b.redraw(this)}},position:{get:function(){return this.hasAttribute("aria-valuenow")?this.value/this.max:-1}},
labels:{get:function(){for(var a=this.parentNode;a&&a.nodeName!=="LABEL";)a=a.parentNode;a=a?[a]:[];if(this.id&&document.querySelectorAll){var b=h(document.querySelectorAll('label[for="'+this.id+'"]'));b.length&&(a=a.concat(b))}return a}}},redraw:function(a){f||(a.setAttribute("aria-valuemax",parseFloat(a.getAttribute("max"))||1),a.hasAttribute("value")?a.setAttribute("aria-valuenow",parseFloat(a.getAttribute("value"))||0):a.removeAttribute("aria-valuenow"));if(a.position!==-1)a.style.paddingRight=
a.offsetWidth*(1-a.position)+"px"},init:function(a){if(a.getAttribute("role")!=="progressbar"){a.setAttribute("role","progressbar");a.setAttribute("aria-valuemin","0");a.setAttribute("aria-valuemax",parseFloat(a.getAttribute("max"))||1);a.hasAttribute("value")&&a.setAttribute("aria-valuenow",parseFloat(a.getAttribute("value"))||0);for(var c in b.DOMInterface)e(a,c,{get:b.DOMInterface[c].get,set:b.DOMInterface[c].set});a.addEventListener&&a.addEventListener("DOMAttrModified",function(a){a=a.attrName;
(a=="max"||a=="value")&&b.redraw(this)},!1);b.redraw(a)}},progresses:document.getElementsByTagName("progress")},g=b.progresses.length-1;g>=0;g--)b.init(b.progresses[g]);document.addEventListener&&document.addEventListener("DOMNodeInserted",function(a){a=a.target;a.nodeName==="PROGRESS"&&b.init(a)},!1)}})();