UNPKG

@tindtechnologies/universalviewer

Version:

The Universal Viewer is a community-developed open source project on a mission to help you share your 📚📜📰📽️📻🗿 with the 🌎

3 lines (2 loc) 6.91 kB
var m=class s{static waitFor(e,t,r,n,o,i){n||(n=200),o||(o=100),i||(i=0),i+=1,i>o?r&&r():e()?t():setTimeout(function(){s.waitFor(e,t,r,n,o,i)},n)}},d=class{static getBool(e,t){return e===null||typeof e>"u"?t:e}},b=class s{static supportsCopy(){return document.queryCommandSupported&&document.queryCommandSupported("copy")}static copy(e){e=s.convertBrToNewLine(e);var t=document.createElement("textarea");t.value=e,s.hideButKeepEnabled(t),document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),document.body.removeChild(t)}static hideButKeepEnabled(e){e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="2em",e.style.height="2em",e.style.padding="0",e.style.border="none",e.style.outline="none",e.style.boxShadow="none",e.style.background="transparent"}static convertBrToNewLine(e){let t=/<br\s*[\/]?>/gi;return e=e.replace(t,` `),e}};var y=class{static getTimeStamp(){return new Date().getTime()}},S=class{static getPixelRatio(e){var t=window.devicePixelRatio||1,r=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/r}static isTouch(){return"ontouchstart"in window||window.navigator.msMaxTouchPoints>0}},f=class s{static isInIFrame(){try{return window.self!==window.top}catch{return!0}}static supportsFullscreen(){let e=document.documentElement;return(e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullScreen||e.msRequestFullscreen)!==void 0}static isHidden(){return!!s.getHiddenProp()}static getHiddenProp(){let e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(let t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}};var h=class{static simplifyMimeType(e){switch(e){case"text/plain":return"txt";case"image/jpeg":return"jpg";case"application/msword":return"doc";case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return"docx";default:let t=e.split("/");return t[t.length-1]}}},x=class{static getCharCode(e){return typeof e.which=="number"?e.which:e.keyCode}},w=class{static normalise(e,t,r){return(e-t)/(r-t)}static median(e){e.sort(function(r,n){return r-n});let t=Math.floor(e.length/2);return e.length%2?e[t]:(e[t-1]+e[t])/2}static clamp(e,t,r){return Math.min(Math.max(e,t),r)}},g=class{constructor(e,t){this.width=e;this.height=t}},T=class{static fitRect(e,t,r,n){let o=t/e,i=n/r,c=0,l=0,a;return o<i?(a=r/e,c=e*a,l=t*a):(a=n/t,c=e*a,l=t*a),new g(Math.floor(c),Math.floor(l))}static hitRect(e,t,r,n,o,i){return o>e&&o<e+r&&i>t&&i<t+n}},R=class{static numericalInput(e){return e.keyCode==46||e.keyCode==8||e.keyCode==9||e.keyCode==27||e.keyCode==65&&e.ctrlKey===!0||e.keyCode>=35&&e.keyCode<=39?!0:e.shiftKey||(e.keyCode<48||e.keyCode>57)&&(e.keyCode<96||e.keyCode>105)?(e.preventDefault(),!1):!0}},k=class{static toPlainObject(e){e=Object(e);let t={};for(let r in e)t[r]=e[r];return t}},u=class{static clear(e="memory"){switch(e){case"memory":this._memoryStorage={};break;case"session":sessionStorage.clear();break;case"local":localStorage.clear();break}}static clearExpired(e="memory"){let t=this.getItems(e);for(let n=0;n<t.length;n++){var r=t[n];this._isExpired(r)&&this.remove(r.key)}}static get(e,t="memory"){let r=null;switch(t){case"memory":r=this._memoryStorage[e];break;case"session":r=sessionStorage.getItem(e);break;case"local":r=localStorage.getItem(e);break}if(!r)return null;let n=null;try{n=JSON.parse(r)}catch{return null}return!n||this._isExpired(n)?null:(n.key=e,n)}static _isExpired(e){return!(new Date().getTime()<e.expiresAt)}static getItems(e="memory"){let t=[];switch(e){case"memory":let r=Object.keys(this._memoryStorage);for(let n=0;n<r.length;n++){let o=this.get(r[n],"memory");o&&t.push(o)}break;case"session":for(let n=0;n<sessionStorage.length;n++){let o=sessionStorage.key(n);if(o){let i=this.get(o,"session");i&&t.push(i)}}break;case"local":for(let n=0;n<localStorage.length;n++){let o=localStorage.key(n);if(o){let i=this.get(o,"local");i&&t.push(i)}}break}return t}static remove(e,t="memory"){switch(t){case"memory":delete this._memoryStorage[e];break;case"session":sessionStorage.removeItem(e);break;case"local":localStorage.removeItem(e);break}}static set(e,t,r,n="memory"){let o=r*1e3,i=new p;switch(i.value=t,i.expiresAt=new Date().getTime()+o,n){case"memory":this._memoryStorage[e]=JSON.stringify(i);break;case"session":sessionStorage.setItem(e,JSON.stringify(i));break;case"local":localStorage.setItem(e,JSON.stringify(i));break}return i}};u._memoryStorage={};var p=class{};var I=class{static ellipsis(e,t){if(e.length<=t)return e;let r=e.substr(0,t),n=r.lastIndexOf(" ");return n!=-1&&(r=r.substr(0,Math.min(r.length,n))),r+"&hellip;"}static htmlDecode(e){let t=document.createElement("div");return t.innerHTML=e,t.firstChild.nodeValue}static format(e,...t){for(let r=0;r<t.length;r++){let n=new RegExp("\\{"+r+"\\}","gm");e=e.replace(n,t[r])}return e}static isAlphanumeric(e){return/^[a-zA-Z0-9]*$/.test(e)}static toCssClass(e){return e.replace(/[^a-z0-9]/g,function(t){var r=t.charCodeAt(0);return r==32?"-":r>=65&&r<=90?"_"+t.toLowerCase():"__"+("000"+r.toString(16)).slice(-4)})}static toFileName(e){return e.replace(/[^a-z0-9]/gi,"_").toLowerCase()}static utf8_to_b64(e){return window.btoa(unescape(encodeURIComponent(e)))}},C=class{static getHashParameter(e,t){return t||(t=window.document),t&&t.location?this.getHashParameterFromString(e,t.location.hash):null}static getHashParameterFromString(e,t){let n=new RegExp("#.*[?&]"+e+"=([^&]+)(&|$)").exec(t);return n?decodeURIComponent(n[1].replace(/\+/g," ")):null}static setHashParameter(e,t,r){if(r||(r=window.document),r&&r.location){let o="#?"+this.updateURIKeyValuePair(r.location.hash.replace("#?",""),e,t),i=r.URL;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),r.location.replace(i+o)}}static getQuerystringParameter(e,t){return t||(t=window),this.getQuerystringParameterFromString(e,t.location.search)}static getQuerystringParameterFromString(e,t){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");let n=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return n?decodeURIComponent(n[1].replace(/\+/g," ")):null}static setQuerystringParameter(e,t,r){if(r||(r=window.document),r&&r.location){let n=this.updateURIKeyValuePair(r.location.hash.replace("#?",""),e,t);window.location.search=n}}static updateURIKeyValuePair(e,t,r){t=encodeURIComponent(t),r=encodeURIComponent(r);let n=e.split("&");n[0]==""&&n.shift();let o=n.length,i;for(;o--;)if(i=n[o].split("="),i[0]==t){i[1]=r,n[o]=i.join("=");break}return o<0&&(n[n.length]=[t,r].join("=")),n.join("&")}static getUrlParts(e){let t=document.createElement("a");return t.href=e,t}static convertToRelativeUrl(e){let t=this.getUrlParts(e),r=t.pathname+t.searchWithin;return r.startsWith("/")||(r="/"+r),r}};export{m as a,d as b,b as c,y as d,S as e,f,h as g,x as h,w as i,g as j,T as k,R as l,k as m,u as n,I as o,C as p};