diff --git a/dist/img/photo1.png b/dist/img/photo1.png new file mode 100644 index 0000000..7b3258b Binary files /dev/null and b/dist/img/photo1.png differ diff --git a/dist/img/photo2.jpg b/dist/img/photo2.jpg new file mode 100644 index 0000000..c53dafd Binary files /dev/null and b/dist/img/photo2.jpg differ diff --git a/dist/img/photo3.svg b/dist/img/photo3.svg new file mode 100644 index 0000000..4295ae6 --- /dev/null +++ b/dist/img/photo3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 216aec5..9f5d92a 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,3 +1,3 @@ Meta-lightbox Demo

Meta-lightbox Demo

NODE_ENV: production

Loading data

Load an Image
Load JSON


Load Partial AJAX HTML
Not Found test

Embeds

Embed Youtube link
Embed Vimeo link
Embed SoundCloud link
Embed Instagram

Other

Use [data-toggle="lightbox"] attribute to attach lightbox action and [href] to specify URL.

Use [data-gallery="YOUR_GALLERY_NAME"] to group ligthboxes with next/prev arrows

Use [data-toggle="lightbox"] + [data-href] attribute to toggle lightbox on regular elements. Click me!

\ No newline at end of file + }

Meta-lightbox Demo

NODE_ENV: production

Loading data

Load an Image
Load JSON


Load Partial AJAX HTML
Not Found test

Embeds

Embed Youtube link
Embed Vimeo link
Embed SoundCloud link
Embed Instagram

Other

Use [data-toggle="lightbox"] attribute to attach lightbox action and [href] to specify URL.

Use [data-gallery="YOUR_GALLERY_NAME"] to group ligthboxes with next/prev arrows

Use [data-toggle="lightbox"] + [data-href] attribute to toggle lightbox on regular elements. Click me!

\ No newline at end of file diff --git a/dist/js/app.js b/dist/js/app.js index 38ed0dc..e34e003 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1 +1 @@ -!function(){var e={163:function(e,t,n){e.exports=n(900)},641:function(e,t,n){"use strict";var r=n(233),o=n(658),a=n(194),i=n(588),s=n(972),c=n(33),u=n(980),f=n(224);e.exports=function xhrAdapter(e){return new Promise((function dispatchXhrRequest(t,n){var l=e.data,d=e.headers;r.isFormData(l)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(h+":"+m)}var g=s(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),i(g,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function handleLoad(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in p?c(p.getAllResponseHeaders()):null,a={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:r,config:e,request:p};o(t,n,a),p=null}},p.onabort=function handleAbort(){p&&(n(f("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function handleError(){n(f("Network Error",e,null,p)),p=null},p.ontimeout=function handleTimeout(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var y=(e.withCredentials||u(g))&&e.xsrfCookieName?a.read(e.xsrfCookieName):void 0;y&&(d[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(d,(function setRequestHeader(e,t){"undefined"===typeof l&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(v){if("json"!==e.responseType)throw v}"function"===typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function onCanceled(e){p&&(p.abort(),n(e),p=null)})),l||(l=null),p.send(l)}))}},900:function(e,t,n){"use strict";var r=n(233),o=n(813),a=n(947),i=n(545);function createInstance(e){var t=new a(e),n=o(a.prototype.request,t);return r.extend(n,a.prototype,t),r.extend(n,t),n}var s=createInstance(n(840));s.Axios=a,s.create=function create(e){return createInstance(i(s.defaults,e))},s.Cancel=n(215),s.CancelToken=n(269),s.isCancel=n(989),s.all=function all(e){return Promise.all(e)},s.spread=n(115),s.isAxiosError=n(749),e.exports=s,e.exports.default=s},215:function(e){"use strict";function Cancel(e){this.message=e}Cancel.prototype.toString=function toString(){return"Cancel"+(this.message?": "+this.message:"")},Cancel.prototype.__CANCEL__=!0,e.exports=Cancel},269:function(e,t,n){"use strict";var r=n(215);function CancelToken(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function promiseExecutor(e){t=e}));var n=this;e((function cancel(e){n.reason||(n.reason=new r(e),t(n.reason))}))}CancelToken.prototype.throwIfRequested=function throwIfRequested(){if(this.reason)throw this.reason},CancelToken.source=function source(){var e;return{token:new CancelToken((function executor(t){e=t})),cancel:e}},e.exports=CancelToken},989:function(e){"use strict";e.exports=function isCancel(e){return!(!e||!e.__CANCEL__)}},947:function(e,t,n){"use strict";var r=n(233),o=n(588),a=n(462),i=n(216),s=n(545);function Axios(e){this.defaults=e,this.interceptors={request:new a,response:new a}}Axios.prototype.request=function request(e){"string"===typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[i,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function unshiftRequestInterceptors(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function pushResponseInterceptors(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},Axios.prototype.getUri=function getUri(e){return e=s(this.defaults,e),o(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function forEachMethodNoData(e){Axios.prototype[e]=function(t,n){return this.request(s(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function forEachMethodWithData(e){Axios.prototype[e]=function(t,n,r){return this.request(s(r||{},{method:e,url:t,data:n}))}})),e.exports=Axios},462:function(e,t,n){"use strict";var r=n(233);function InterceptorManager(){this.handlers=[]}InterceptorManager.prototype.use=function use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},InterceptorManager.prototype.eject=function eject(e){this.handlers[e]&&(this.handlers[e]=null)},InterceptorManager.prototype.forEach=function forEach(e){r.forEach(this.handlers,(function forEachHandler(t){null!==t&&e(t)}))},e.exports=InterceptorManager},972:function(e,t,n){"use strict";var r=n(877),o=n(20);e.exports=function buildFullPath(e,t){return e&&!r(t)?o(e,t):t}},224:function(e,t,n){"use strict";var r=n(872);e.exports=function createError(e,t,n,o,a){var i=new Error(e);return r(i,t,n,o,a)}},216:function(e,t,n){"use strict";var r=n(233),o=n(824),a=n(989),i=n(840);function throwIfCancellationRequested(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function dispatchRequest(e){return throwIfCancellationRequested(e),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function cleanHeaderConfig(t){delete e.headers[t]})),(e.adapter||i.adapter)(e).then((function onAdapterResolution(t){return throwIfCancellationRequested(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function onAdapterRejection(t){return a(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},872:function(e){"use strict";e.exports=function enhanceError(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},545:function(e,t,n){"use strict";var r=n(233);e.exports=function mergeConfig(e,t){t=t||{};var n={},o=["url","method","data"],a=["headers","auth","proxy","params"],i=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function getMergedValue(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function mergeDeepProperties(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=getMergedValue(void 0,e[o])):n[o]=getMergedValue(e[o],t[o])}r.forEach(o,(function valueFromConfig2(e){r.isUndefined(t[e])||(n[e]=getMergedValue(void 0,t[e]))})),r.forEach(a,mergeDeepProperties),r.forEach(i,(function defaultToConfig2(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=getMergedValue(void 0,e[o])):n[o]=getMergedValue(void 0,t[o])})),r.forEach(s,(function merge(r){r in t?n[r]=getMergedValue(e[r],t[r]):r in e&&(n[r]=getMergedValue(void 0,e[r]))}));var c=o.concat(a).concat(i).concat(s),u=Object.keys(e).concat(Object.keys(t)).filter((function filterAxiosKeys(e){return-1===c.indexOf(e)}));return r.forEach(u,mergeDeepProperties),n}},658:function(e,t,n){"use strict";var r=n(224);e.exports=function settle(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},824:function(e,t,n){"use strict";var r=n(233);e.exports=function transformData(e,t,n){return r.forEach(n,(function transform(n){e=n(e,t)})),e}},840:function(e,t,n){"use strict";var r=n(233),o=n(904),a={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var i={adapter:function getDefaultAdapter(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(e=n(641)),e}(),transformRequest:[function transformRequest(e,t){return o(t,"Accept"),o(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(setContentTypeIfUnset(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(setContentTypeIfUnset(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function transformResponse(e){if("string"===typeof e)try{e=JSON.parse(e)}catch(t){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function validateStatus(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function forEachMethodNoData(e){i.headers[e]={}})),r.forEach(["post","put","patch"],(function forEachMethodWithData(e){i.headers[e]=r.merge(a)})),e.exports=i},813:function(e){"use strict";e.exports=function bind(e,t){return function wrap(){for(var n=new Array(arguments.length),r=0;r=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i}},115:function(e){"use strict";e.exports=function spread(e){return function wrap(t){return e.apply(null,t)}}},233:function(e,t,n){"use strict";function _typeof(e){return(_typeof="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function _typeof(e){return typeof e}:function _typeof(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r=n(813),o=Object.prototype.toString;function isArray(e){return"[object Array]"===o.call(e)}function isUndefined(e){return"undefined"===typeof e}function isObject(e){return null!==e&&"object"===_typeof(e)}function isPlainObject(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function isFunction(e){return"[object Function]"===o.call(e)}function forEach(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==_typeof(e)&&(e=[e]),isArray(e))for(var n=0,r=e.length;n0?o--:o=e.state.collections[r].length-1,e.state.collections[r][o].click(),console.log("".concat(e.name,": prev")),n.dispatchEvent(new Event("{ui.name}.prev"))})),_defineProperty(this,"reset",(function(){t.setState({content:"",type:[],shown:!1,loading:!1,error:!1,embed:!1})})),_defineProperty(this,"load",(function(e){var r=t,o=r.axios;r.reset(),r.setState({loading:!0}),r.show(),o.get(e,{responseType:"arraybuffer"}).then((function(e){console.log("".concat(r.name,": response content-type: ").concat(e.headers["content-type"]));var t=JSON.parse(r._abToString(e.data));switch(e.headers["content-type"]){case"image/jpeg":case"image/png":case"image/svg+xml":case"image/bmp":case"image/gif":case"image/tiff":case"image/webp":case"image/jpg":case"image/svg":r.setContent(''),"image");break;case"application/json":case"application/ld+json":case"application/json; charset=UTF-8":r.setContent("".concat(t.Content),"text html json");break;case"text/html":case"application/xhtml+xml":case"text/plain":case"text/html; charset=UTF-8":case"application/xhtml+xml; charset=UTF-8":case"text/plain; charset=UTF-8":r.setContent(r._abToString(e.data),"text html pajax");break;default:console.warn("".concat(r.name,": Unknown response content-type!"))}n.dispatchEvent(new Event("{ui.name}.loaded"))})).catch((function(e){console.error(e);var t="";if(e.response)switch(e.response.status){case 404:t="Not Found.";break;case 500:t="Server issue, please try again latter.";break;default:t="Something went wrong."}else e.request?t="No response received":console.warn("Error",e.message);r.setState({error:t}),n.dispatchEvent(new Event("{ui.name}.error"))})).then((function(){r.setState({loading:!1})}))})),_defineProperty(this,"_currIndex",(function(){var e=t,n=e.state.current,r=n.getAttribute("data-gallery");return e.state.collections[r].indexOf(n)})),_defineProperty(this,"embed",(function(e){var n=t;console.log("".concat(n.name,": embed")),n.reset(),n.setState({embed:e,loading:!1,type:["embed","video"]}),n.show()})),_defineProperty(this,"setCaption",(function(e){var n=t;console.log("".concat(n.name,": setCaption")),n.state.caption=e})),_defineProperty(this,"getCaption",(function(){return{__html:t.state.caption}})),_defineProperty(this,"_abToString",(function(e){return String.fromCharCode.apply(null,new Uint8Array(e))})),_defineProperty(this,"_imageEncode",(function(e){new Uint8Array(e);return btoa([].reduce.call(new Uint8Array(e),(function(e,t){return e+String.fromCharCode(t)}),""))})),_defineProperty(this,"setContent",(function(e,n){var r=t;console.log("".concat(r.name,": setContent"));var o=n||["html","text"];Array.isArray(o)||(o=n.split(" ")),r.setState({content:e,type:o})})),_defineProperty(this,"getHtml",(function(){return t.state.content}));var o=this;o.name=o.constructor.name,console.log("".concat(o.name,": init")),o.axios=r,n.dispatchEvent(new Event("{ui.name}.init"))}return function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}(MetaWindow,[{key:"init",value:function init(){var e=this;console.log("MetaWindow: [links] init"),e.state.collections={},document.querySelectorAll('[data-toggle="lightbox"],[data-gallery="${gallery}"]').forEach((function(t){var n=t.getAttribute("data-gallery");n&&(e.state.collections[n]=[],document.querySelectorAll('[data-toggle="lightbox"][data-gallery="'.concat(n,'"]')).forEach((function(t){e.state.collections[n].push(t)}))),t.addEventListener("click",(function(t){t.preventDefault(),console.log("MetaWindow: [link] click");var n=t.currentTarget,r=n.getAttribute("href")||n.getAttribute("data-href"),o=n.getAttribute("data-embed");e.state.current=n,o?e.embed(r):e.load(r);var a=n.getAttribute("data-title");a&&e.setCaption(a)}))}))}},{key:"onSwipeMove",value:function onSwipeMove(e,t){var n=this.ui,r=e.x;n.locked||Math.abs(r)<50||(n.locked=!0,setTimeout((function(){n.locked=!1}),1e3),r>0?(console.log("".concat(n.name,": swipe right")),n.prev()):(console.log("".concat(n.name,": swipe left")),n.next()))}},{key:"setState",value:function setState(e){this.state=Object.assign({},this.state,e)}},{key:"render",value:function render(e){var t=this,n=t.name,r=t.state.current,o="";if(r){var a=r.getAttribute("data-gallery");if(a&&t.state.collections[a].length>1){var i=document.createElement("nav");nav.classList.add("meta-navs");var s=document.createElement("button");s.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__prev","a"),s.innerHTML=' Previous',i.append(s);var c=document.createElement("button");c.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__prev","a"),c.innerHTML=' Next',i.append(c),o=i.innerHTML}}var u="";u=t.state.embed?'
... Loading ...
':'
'.concat(t.getHtml(),"
");var f=t.state.caption?'
'.concat(t.getCaption(),"
"):"",l="meta-".concat(n," meta-").concat(n,"__").concat(t.state.type.join(" meta-".concat(n,"__"))),d="meta-".concat(n,"-overlay").concat(t.state.shown?" meta-".concat(n,"-overlay__open"):"").concat(t.state.loading?" meta-".concat(n,"-overlay__loading"):"").concat(t.state.error?" meta-".concat(n,"-overlay__error"):""),p="".concat('
'.concat(o)+'
... Loading ...
').concat(t.state.error?'
'.concat(t.state.error,"
"):"").concat(u," ").concat(f,"")+"
";return e.innerHTML=p,t}}]),MetaWindow}()),a=document.getElementById("MetaLightboxApp");a||console.log("MetaWindow: missing container"),o.render(a);var i=function init(){o.init()};window.addEventListener("".concat(t),i),window.addEventListener("".concat(e),i),window.addEventListener("MetaWindow.initLinks",i)}()}(); \ No newline at end of file +!function(){var e={163:function(e,t,n){e.exports=n(900)},641:function(e,t,n){"use strict";var r=n(233),o=n(658),a=n(194),i=n(588),s=n(972),c=n(33),u=n(980),f=n(224);e.exports=function xhrAdapter(e){return new Promise((function dispatchXhrRequest(t,n){var l=e.data,p=e.headers;r.isFormData(l)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";p.Authorization="Basic "+btoa(h+":"+m)}var g=s(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),i(g,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function handleLoad(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in d?c(d.getAllResponseHeaders()):null,a={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:r,config:e,request:d};o(t,n,a),d=null}},d.onabort=function handleAbort(){d&&(n(f("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function handleError(){n(f("Network Error",e,null,d)),d=null},d.ontimeout=function handleTimeout(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var v=(e.withCredentials||u(g))&&e.xsrfCookieName?a.read(e.xsrfCookieName):void 0;v&&(p[e.xsrfHeaderName]=v)}if("setRequestHeader"in d&&r.forEach(p,(function setRequestHeader(e,t){"undefined"===typeof l&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(y){if("json"!==e.responseType)throw y}"function"===typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function onCanceled(e){d&&(d.abort(),n(e),d=null)})),l||(l=null),d.send(l)}))}},900:function(e,t,n){"use strict";var r=n(233),o=n(813),a=n(947),i=n(545);function createInstance(e){var t=new a(e),n=o(a.prototype.request,t);return r.extend(n,a.prototype,t),r.extend(n,t),n}var s=createInstance(n(840));s.Axios=a,s.create=function create(e){return createInstance(i(s.defaults,e))},s.Cancel=n(215),s.CancelToken=n(269),s.isCancel=n(989),s.all=function all(e){return Promise.all(e)},s.spread=n(115),s.isAxiosError=n(749),e.exports=s,e.exports.default=s},215:function(e){"use strict";function Cancel(e){this.message=e}Cancel.prototype.toString=function toString(){return"Cancel"+(this.message?": "+this.message:"")},Cancel.prototype.__CANCEL__=!0,e.exports=Cancel},269:function(e,t,n){"use strict";var r=n(215);function CancelToken(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function promiseExecutor(e){t=e}));var n=this;e((function cancel(e){n.reason||(n.reason=new r(e),t(n.reason))}))}CancelToken.prototype.throwIfRequested=function throwIfRequested(){if(this.reason)throw this.reason},CancelToken.source=function source(){var e;return{token:new CancelToken((function executor(t){e=t})),cancel:e}},e.exports=CancelToken},989:function(e){"use strict";e.exports=function isCancel(e){return!(!e||!e.__CANCEL__)}},947:function(e,t,n){"use strict";var r=n(233),o=n(588),a=n(462),i=n(216),s=n(545);function Axios(e){this.defaults=e,this.interceptors={request:new a,response:new a}}Axios.prototype.request=function request(e){"string"===typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[i,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function unshiftRequestInterceptors(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function pushResponseInterceptors(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},Axios.prototype.getUri=function getUri(e){return e=s(this.defaults,e),o(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function forEachMethodNoData(e){Axios.prototype[e]=function(t,n){return this.request(s(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function forEachMethodWithData(e){Axios.prototype[e]=function(t,n,r){return this.request(s(r||{},{method:e,url:t,data:n}))}})),e.exports=Axios},462:function(e,t,n){"use strict";var r=n(233);function InterceptorManager(){this.handlers=[]}InterceptorManager.prototype.use=function use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},InterceptorManager.prototype.eject=function eject(e){this.handlers[e]&&(this.handlers[e]=null)},InterceptorManager.prototype.forEach=function forEach(e){r.forEach(this.handlers,(function forEachHandler(t){null!==t&&e(t)}))},e.exports=InterceptorManager},972:function(e,t,n){"use strict";var r=n(877),o=n(20);e.exports=function buildFullPath(e,t){return e&&!r(t)?o(e,t):t}},224:function(e,t,n){"use strict";var r=n(872);e.exports=function createError(e,t,n,o,a){var i=new Error(e);return r(i,t,n,o,a)}},216:function(e,t,n){"use strict";var r=n(233),o=n(824),a=n(989),i=n(840);function throwIfCancellationRequested(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function dispatchRequest(e){return throwIfCancellationRequested(e),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function cleanHeaderConfig(t){delete e.headers[t]})),(e.adapter||i.adapter)(e).then((function onAdapterResolution(t){return throwIfCancellationRequested(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function onAdapterRejection(t){return a(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},872:function(e){"use strict";e.exports=function enhanceError(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},545:function(e,t,n){"use strict";var r=n(233);e.exports=function mergeConfig(e,t){t=t||{};var n={},o=["url","method","data"],a=["headers","auth","proxy","params"],i=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function getMergedValue(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function mergeDeepProperties(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=getMergedValue(void 0,e[o])):n[o]=getMergedValue(e[o],t[o])}r.forEach(o,(function valueFromConfig2(e){r.isUndefined(t[e])||(n[e]=getMergedValue(void 0,t[e]))})),r.forEach(a,mergeDeepProperties),r.forEach(i,(function defaultToConfig2(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=getMergedValue(void 0,e[o])):n[o]=getMergedValue(void 0,t[o])})),r.forEach(s,(function merge(r){r in t?n[r]=getMergedValue(e[r],t[r]):r in e&&(n[r]=getMergedValue(void 0,e[r]))}));var c=o.concat(a).concat(i).concat(s),u=Object.keys(e).concat(Object.keys(t)).filter((function filterAxiosKeys(e){return-1===c.indexOf(e)}));return r.forEach(u,mergeDeepProperties),n}},658:function(e,t,n){"use strict";var r=n(224);e.exports=function settle(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},824:function(e,t,n){"use strict";var r=n(233);e.exports=function transformData(e,t,n){return r.forEach(n,(function transform(n){e=n(e,t)})),e}},840:function(e,t,n){"use strict";var r=n(233),o=n(904),a={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var i={adapter:function getDefaultAdapter(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(e=n(641)),e}(),transformRequest:[function transformRequest(e,t){return o(t,"Accept"),o(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(setContentTypeIfUnset(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(setContentTypeIfUnset(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function transformResponse(e){if("string"===typeof e)try{e=JSON.parse(e)}catch(t){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function validateStatus(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function forEachMethodNoData(e){i.headers[e]={}})),r.forEach(["post","put","patch"],(function forEachMethodWithData(e){i.headers[e]=r.merge(a)})),e.exports=i},813:function(e){"use strict";e.exports=function bind(e,t){return function wrap(){for(var n=new Array(arguments.length),r=0;r=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i}},115:function(e){"use strict";e.exports=function spread(e){return function wrap(t){return e.apply(null,t)}}},233:function(e,t,n){"use strict";function _typeof(e){return(_typeof="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function _typeof(e){return typeof e}:function _typeof(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r=n(813),o=Object.prototype.toString;function isArray(e){return"[object Array]"===o.call(e)}function isUndefined(e){return"undefined"===typeof e}function isObject(e){return null!==e&&"object"===_typeof(e)}function isPlainObject(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function isFunction(e){return"[object Function]"===o.call(e)}function forEach(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==_typeof(e)&&(e=[e]),isArray(e))for(var n=0,r=e.length;n0?o--:o=e.state.collections[r].length-1,e.state.collections[r][o].click(),console.log("".concat(e.name,": prev")),n.dispatchEvent(new Event("{ui.name}.prev"))})),_defineProperty(this,"reset",(function(){t.setState({content:"",type:[],shown:!1,loading:!1,error:!1,embed:!1})})),_defineProperty(this,"load",(function(e){var r=t,o=r.axios;r.reset(),r.setState({loading:!0}),r.show(),o.get(e,{responseType:"arraybuffer"}).then((function(e){console.log("".concat(r.name,": response content-type: ").concat(e.headers["content-type"]));switch(e.headers["content-type"]){case"image/jpeg":case"image/png":case"image/svg+xml":case"image/bmp":case"image/gif":case"image/tiff":case"image/webp":case"image/jpg":case"image/svg":r.setContent(''),"image");break;case"application/json":case"application/ld+json":case"application/json; charset=UTF-8":r.setContent("".concat((!1).Content),"text html json");break;case"text/html":case"application/xhtml+xml":case"text/plain":case"text/html; charset=UTF-8":case"application/xhtml+xml; charset=UTF-8":case"text/plain; charset=UTF-8":r.setContent(r._abToString(e.data),"text html pajax");break;default:console.warn("".concat(r.name,": Unknown response content-type!"))}n.dispatchEvent(new Event("{ui.name}.loaded"))})).catch((function(e){console.error(e);var t="";if(e.response)switch(e.response.status){case 404:t="Not Found.";break;case 500:t="Server issue, please try again latter.";break;default:t="Something went wrong."}else e.request?t="No response received":console.warn("Error",e.message);r.setState({error:t}),n.dispatchEvent(new Event("{ui.name}.error"))})).then((function(){r.setState({loading:!1})}))})),_defineProperty(this,"_currIndex",(function(){var e=t,n=e.state.current,r=n.getAttribute("data-gallery");return e.state.collections[r].indexOf(n)})),_defineProperty(this,"embed",(function(e){var n=t;console.log("".concat(n.name,": embed")),n.reset(),n.setState({embed:e,loading:!1,type:["embed","video"]}),n.show()})),_defineProperty(this,"setCaption",(function(e){var n=t;console.log("".concat(n.name,": setCaption")),n.state.caption=e})),_defineProperty(this,"getCaption",(function(){return t.state.caption})),_defineProperty(this,"_abToString",(function(e){return String.fromCharCode.apply(null,new Uint8Array(e))})),_defineProperty(this,"_imageEncode",(function(e){new Uint8Array(e);return btoa([].reduce.call(new Uint8Array(e),(function(e,t){return e+String.fromCharCode(t)}),""))})),_defineProperty(this,"setContent",(function(e,n){var r=t;console.log("".concat(r.name,": setContent"));var o=n||["html","text"];Array.isArray(o)||(o=n.split(" ")),r.setState({content:e,type:o})})),_defineProperty(this,"getHtml",(function(){return t.state.content}));var o=this;o.name=o.constructor.name,console.log("".concat(o.name,": init")),o.axios=r,n.dispatchEvent(new Event("{ui.name}.init"))}return function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}(MetaWindow,[{key:"init",value:function init(e){var t=this;console.log("MetaWindow: [links] init"),t.state.target=e,t.state.collections={},document.querySelectorAll('[data-toggle="lightbox"],[data-gallery="${gallery}"]').forEach((function(e){var n=e.getAttribute("data-gallery");n&&(t.state.collections[n]=[],document.querySelectorAll('[data-toggle="lightbox"][data-gallery="'.concat(n,'"]')).forEach((function(e){t.state.collections[n].push(e)}))),e.addEventListener("click",(function(e){e.preventDefault(),console.log("MetaWindow: [link] click");var n=e.currentTarget,r=n.getAttribute("href")||n.getAttribute("data-href"),o=n.getAttribute("data-embed");t.state.current=n,o?t.embed(r):t.load(r);var a=n.getAttribute("data-title");a&&t.setCaption(a)}))}))}},{key:"setState",value:function setState(e){var t=this;t.state=Object.assign({},t.state,e),t.render()}},{key:"render",value:function render(){var e=this,t=e.name,n=e.state.current;e.state.target.innerHTML="";var r=document.createElement("div");r.classList.add("meta-".concat(t),"meta-".concat(t,"__").concat(e.state.type.join(" meta-".concat(t,"__")))),e.state.target.append(r);var o=document.createElement("div");o.classList.add("meta-".concat(t,"-overlay")),e.state.shown&&o.classList.add("meta-".concat(t,"-overlay__open")),e.state.loading&&o.classList.add("meta-".concat(t,"-overlay__loading")),e.state.error&&o.classList.add("meta-".concat(t,"-overlay__error")),r.append(o);var a=document.createElement("div");a.classList.add("meta-content"),o.append(a);var i=document.createElement("button");if(i.classList.add("meta-nav","meta-close","a"),i.innerHTML=' Close',i.addEventListener("click",(function(t){t.preventDefault(),e.hide()})),a.append(i),n){var s=n.getAttribute("data-gallery");if(s&&e.state.collections[s].length>1){var c=document.createElement("nav");c.classList.add("meta-navs");var u=document.createElement("button");u.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__prev","a"),u.innerHTML=' Previous',u.addEventListener("click",(function(t){t.preventDefault(),e.prev()})),c.append(u);var f=document.createElement("button");f.classList.add("meta-nav","meta-nav-arrow","meta-nav-arrow__prev","a"),f.innerHTML=' Next',f.addEventListener("click",(function(t){t.preventDefault(),e.next()})),c.append(f),a.append(c)}}if(e.state.embed)'
... Loading ...
';else{var l=document.createElement("section");l.classList.add("meta-wrap","typography"),l.innerHTML=e.getHtml(),a.append(l)}if(e.state.error){var p=document.createElement("div");p.classList.add("meta-error"),p.innerHTML=e.state.error,a.append(p)}else if(e.state.caption){var d=document.createElement("div");d.classList.add("meta-caption"),d.innerHTML=e.getCaption(),a.append(d)}return e}}]),MetaWindow}()),a=document.getElementById("MetaLightboxApp");a||console.log("MetaWindow: missing container");var i=function init(){o.init(a)};window.addEventListener("".concat(t),i),window.addEventListener("".concat(e),i),window.addEventListener("MetaWindow.initLinks",i);(function importAll(e){return e.keys().map(e)})(__webpack_require__(310))}()}(); \ No newline at end of file diff --git a/dist/records.json b/dist/records.json index 5771290..6026c67 100644 --- a/dist/records.json +++ b/dist/records.json @@ -66,7 +66,11 @@ "./node_modules/.pnpm/babel-loader@8.2.2_8b0464c8bf295490a69e78f11399b5a8/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1_debug@4.3.2/node_modules/axios/lib/helpers/parseHeaders.js": 33, "./node_modules/.pnpm/babel-loader@8.2.2_8b0464c8bf295490a69e78f11399b5a8/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1_debug@4.3.2/node_modules/axios/lib/helpers/spread.js": 115, "./node_modules/.pnpm/babel-loader@8.2.2_8b0464c8bf295490a69e78f11399b5a8/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./node_modules/.pnpm/axios@0.21.1_debug@4.3.2/node_modules/axios/lib/utils.js": 233, - "./node_modules/.pnpm/babel-loader@8.2.2_8b0464c8bf295490a69e78f11399b5a8/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./src/js/app.js|4a63aef513028d871fff28ba08c40b98": 858 + "./node_modules/.pnpm/babel-loader@8.2.2_8b0464c8bf295490a69e78f11399b5a8/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!./src/js/app.js|4a63aef513028d871fff28ba08c40b98": 858, + "./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.48.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./src/img/photo1.png": 811, + "./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.48.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./src/img/photo2.jpg": 424, + "./node_modules/.pnpm/img-optimize-loader@1.0.7_file-loader@6.2.0+webpack@5.48.0/node_modules/img-optimize-loader/dist/index.js??ruleSet[1].rules[4].use[0]!./src/img/photo3.svg": 248, + "./src/img|sync|nonrecursive|../../../../../../\\.(png|jpe?g|svg)$/": 310 }, "usedIds": [ 20, @@ -78,13 +82,17 @@ 216, 224, 233, + 248, 269, + 310, + 424, 462, 545, 588, 641, 658, 749, + 811, 813, 824, 840, diff --git a/dist/report.html b/dist/report.html index 42d3718..7852f1e 100644 --- a/dist/report.html +++ b/dist/report.html @@ -3,7 +3,7 @@ - @a2nt/ss-bootstrap-ui-webpack-boilerplate-react [4 Aug 2021 at 00:14] + @a2nt/ss-bootstrap-ui-webpack-boilerplate [4 Aug 2021 at 00:55] diff --git a/src/js/_window.js b/src/js/_window.js index 78427ea..ac4d58b 100755 --- a/src/js/_window.js +++ b/src/js/_window.js @@ -9,418 +9,418 @@ const axios = require('axios'); class MetaWindow { state = { + content: '', + type: [], + shown: false, + loading: false, + error: false, + embed: false, + collections: [], + current: null, + target: null, + }; + + init(target) { + const ui = this; + console.log(`MetaWindow: [links] init`); + + ui.state.target = target; + // reset collections + ui.state.collections = {}; + + // collect new collections + document.querySelectorAll('[data-toggle="lightbox"],[data-gallery="${gallery}"]').forEach((el) => { + const gallery = el.getAttribute('data-gallery'); + if (gallery) { + ui.state.collections[gallery] = []; + document + .querySelectorAll( + `[data-toggle="lightbox"][data-gallery="${gallery}"]`, + ) + .forEach((el) => { + ui.state.collections[gallery].push(el); + }); + } + + // click handler + el.addEventListener('click', (e) => { + e.preventDefault(); + console.log(`MetaWindow: [link] click`); + + const el = e.currentTarget; + const link = + el.getAttribute('href') || el.getAttribute('data-href'); + const embed = el.getAttribute('data-embed'); + ui.state.current = el; + + if (embed) { + ui.embed(link); + } else { + ui.load(link); + } + + const title = el.getAttribute('data-title'); + if (title) { + ui.setCaption(title); + } + }); + }); + } + + constructor(props) { + const ui = this; + ui.name = ui.constructor.name; + console.log(`${ui.name}: init`); + ui.axios = axios; + + W.dispatchEvent(new Event(`{ui.name}.init`)); + } + + show = () => { + const ui = this; + console.log(`${ui.name}: show`); + + ui.setState({ + shown: true, + }); + W.dispatchEvent(new Event(`{ui.name}.show`)); + }; + + hide = () => { + const ui = this; + + console.log(`${ui.name}: hide`); + ui.setState({ + shown: false, + }); + W.dispatchEvent(new Event(`{ui.name}.hide`)); + }; + + next = () => { + const ui = this; + const el = ui.state.current; + const gallery = el.getAttribute('data-gallery'); + + let i = ui._currIndex(); + if (i < ui.state.collections[gallery].length - 1) { + i++; + } else { + i = 0; + } + + ui.state.collections[gallery][i].click(); + + console.log(`${ui.name}: next`); + W.dispatchEvent(new Event(`{ui.name}.next`)); + }; + + prev = () => { + const ui = this; + const el = ui.state.current; + const gallery = el.getAttribute('data-gallery'); + + let i = ui._currIndex(); + if (i > 0) { + i--; + } else { + i = ui.state.collections[gallery].length - 1; + } + + ui.state.collections[gallery][i].click(); + + console.log(`${ui.name}: prev`); + W.dispatchEvent(new Event(`{ui.name}.prev`)); + }; + + reset = () => { + const ui = this; + + ui.setState({ content: '', type: [], shown: false, loading: false, error: false, embed: false, - collections: [], - current: null, - target: null, - }; - - init(target) { - const ui = this; - console.log(`MetaWindow: [links] init`); - - ui.state.target = target; - // reset collections - ui.state.collections = {}; - - // collect new collections - document.querySelectorAll('[data-toggle="lightbox"],[data-gallery="${gallery}"]').forEach((el) => { - const gallery = el.getAttribute('data-gallery'); - if (gallery) { - ui.state.collections[gallery] = []; - document - .querySelectorAll( - `[data-toggle="lightbox"][data-gallery="${gallery}"]`, - ) - .forEach((el) => { - ui.state.collections[gallery].push(el); - }); - } - - // click handler - el.addEventListener('click', (e) => { - e.preventDefault(); - console.log(`MetaWindow: [link] click`); - - const el = e.currentTarget; - const link = - el.getAttribute('href') || el.getAttribute('data-href'); - const embed = el.getAttribute('data-embed'); - ui.state.current = el; - - if (embed) { - ui.embed(link); - } else { - ui.load(link); - } - - const title = el.getAttribute('data-title'); - if (title) { - ui.setCaption(title); - } - }); - }); - } - - constructor(props) { - const ui = this; - ui.name = ui.constructor.name; - console.log(`${ui.name}: init`); - ui.axios = axios; - - W.dispatchEvent(new Event(`{ui.name}.init`)); - } - - show = () => { - const ui = this; - console.log(`${ui.name}: show`); - - ui.setState({ - shown: true, - }); - W.dispatchEvent(new Event(`{ui.name}.show`)); - }; - - hide = () => { - const ui = this; - - console.log(`${ui.name}: hide`); - ui.setState({ - shown: false, - }); - W.dispatchEvent(new Event(`{ui.name}.hide`)); - }; - - next = () => { - const ui = this; - const el = ui.state.current; - const gallery = el.getAttribute('data-gallery'); - - let i = ui._currIndex(); - if (i < ui.state.collections[gallery].length - 1) { - i++; - } else { - i = 0; - } - - ui.state.collections[gallery][i].click(); - - console.log(`${ui.name}: next`); - W.dispatchEvent(new Event(`{ui.name}.next`)); - }; - - prev = () => { - const ui = this; - const el = ui.state.current; - const gallery = el.getAttribute('data-gallery'); - - let i = ui._currIndex(); - if (i > 0) { - i--; - } else { - i = ui.state.collections[gallery].length - 1; - } - - ui.state.collections[gallery][i].click(); - - console.log(`${ui.name}: prev`); - W.dispatchEvent(new Event(`{ui.name}.prev`)); - }; - - reset = () => { - const ui = this; - - ui.setState({ - content: '', - type: [], - shown: false, - loading: false, - error: false, - embed: false, - }); + }); }; load = (link) => { - const ui = this; - const axios = ui.axios; + const ui = this; + const axios = ui.axios; - ui.reset(); - ui.setState({ - loading: true, + ui.reset(); + ui.setState({ + loading: true, + }); + ui.show(); + + axios + .get(link, { + responseType: 'arraybuffer', + }) + .then((resp) => { + // handle success + console.log( + `${ui.name}: response content-type: ${resp.headers['content-type']}`, + ); + const json = false; + + switch (resp.headers['content-type']) { + case 'image/jpeg': + case 'image/png': + case 'image/svg+xml': + case 'image/bmp': + case 'image/gif': + case 'image/tiff': + case 'image/webp': + // irregular types: + case 'image/jpg': + case 'image/svg': + //json = JSON.parse(ui._abToString(resp.data)); + ui.setContent( + ``, + 'image', + ); + break; + case 'application/json': + case 'application/ld+json': + // irregular types: + case 'application/json; charset=UTF-8': + ui.setContent(`${json['Content']}`, 'text html json'); + + break; + case 'text/html': + case 'application/xhtml+xml': + case 'text/plain': + // irregular types: + case 'text/html; charset=UTF-8': + case 'application/xhtml+xml; charset=UTF-8': + case 'text/plain; charset=UTF-8': + ui.setContent( + ui._abToString(resp.data), + 'text html pajax', + ); + break; + default: + console.warn( + `${ui.name}: Unknown response content-type!`, + ); + break; + } + + W.dispatchEvent(new Event(`{ui.name}.loaded`)); + }) + .catch((error) => { + console.error(error); + + let msg = ''; + + if (error.response) { + switch (error.response.status) { + case 404: + msg = 'Not Found.'; + break; + case 500: + msg = 'Server issue, please try again latter.'; + break; + default: + msg = 'Something went wrong.'; + break; + } + } else if (error.request) { + msg = 'No response received'; + } else { + console.warn('Error', error.message); + } + + ui.setState({ + error: msg, + }); + + W.dispatchEvent(new Event(`{ui.name}.error`)); + }) + .then(() => { + ui.setState({ + loading: false, + }); }); - ui.show(); - - axios - .get(link, { - responseType: 'arraybuffer', - }) - .then((resp) => { - // handle success - console.log( - `${ui.name}: response content-type: ${resp.headers['content-type']}`, - ); - let json = false; - - switch (resp.headers['content-type']) { - case 'image/jpeg': - case 'image/png': - case 'image/svg+xml': - case 'image/bmp': - case 'image/gif': - case 'image/tiff': - case 'image/webp': - // irregular types: - case 'image/jpg': - case 'image/svg': - //json = JSON.parse(ui._abToString(resp.data)); - ui.setContent( - ``, - 'image', - ); - break; - case 'application/json': - case 'application/ld+json': - // irregular types: - case 'application/json; charset=UTF-8': - ui.setContent(`${json['Content']}`, 'text html json'); - - break; - case 'text/html': - case 'application/xhtml+xml': - case 'text/plain': - // irregular types: - case 'text/html; charset=UTF-8': - case 'application/xhtml+xml; charset=UTF-8': - case 'text/plain; charset=UTF-8': - ui.setContent( - ui._abToString(resp.data), - 'text html pajax', - ); - break; - default: - console.warn( - `${ui.name}: Unknown response content-type!`, - ); - break; - } - - W.dispatchEvent(new Event(`{ui.name}.loaded`)); - }) - .catch((error) => { - console.error(error); - - let msg = ''; - - if (error.response) { - switch (error.response.status) { - case 404: - msg = 'Not Found.'; - break; - case 500: - msg = 'Server issue, please try again latter.'; - break; - default: - msg = 'Something went wrong.'; - break; - } - } else if (error.request) { - msg = 'No response received'; - } else { - console.warn('Error', error.message); - } - - ui.setState({ - error: msg, - }); - - W.dispatchEvent(new Event(`{ui.name}.error`)); - }) - .then(() => { - ui.setState({ - loading: false, - }); - }); }; _currIndex = () => { - const ui = this; - const el = ui.state.current; - const gallery = el.getAttribute('data-gallery'); + const ui = this; + const el = ui.state.current; + const gallery = el.getAttribute('data-gallery'); - return ui.state.collections[gallery].indexOf(el); + return ui.state.collections[gallery].indexOf(el); }; embed = (link) => { - const ui = this; - console.log(`${ui.name}: embed`); + const ui = this; + console.log(`${ui.name}: embed`); - ui.reset(); - ui.setState({ - embed: link, - loading: false, - type: ['embed', 'video'], - }); - ui.show(); + ui.reset(); + ui.setState({ + embed: link, + loading: false, + type: ['embed', 'video'], + }); + ui.show(); }; setCaption = (title) => { - const ui = this; - console.log(`${ui.name}: setCaption`); + const ui = this; + console.log(`${ui.name}: setCaption`); - ui.state.caption = title; + ui.state.caption = title; }; getCaption = () => { - const ui = this; - return ui.state.caption; + const ui = this; + return ui.state.caption; } _abToString = (arrayBuffer) => { - return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)); + return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)); }; _imageEncode = (arrayBuffer) => { - const u8 = new Uint8Array(arrayBuffer); - const b64encoded = btoa( - [].reduce.call( - new Uint8Array(arrayBuffer), - (p, c) => { - return p + String.fromCharCode(c); - }, - '', - ), - ); + const u8 = new Uint8Array(arrayBuffer); + const b64encoded = btoa( + [].reduce.call( + new Uint8Array(arrayBuffer), + (p, c) => { + return p + String.fromCharCode(c); + }, + '', + ), + ); - return b64encoded; + return b64encoded; }; setContent = (html, type) => { - const ui = this; - console.log(`${ui.name}: setContent`); + const ui = this; + console.log(`${ui.name}: setContent`); - let typeArr = type ? type : ['html', 'text']; - if (!Array.isArray(typeArr)) { - typeArr = type.split(' '); - } + let typeArr = type ? type : ['html', 'text']; + if (!Array.isArray(typeArr)) { + typeArr = type.split(' '); + } - ui.setState({ - content: html, - type: typeArr, - }); + ui.setState({ + content: html, + type: typeArr, + }); }; getHtml = () => { - const ui = this; - return ui.state.content; + const ui = this; + return ui.state.content; }; setState(newState) { - const ui = this; - ui.state = Object.assign({}, ui.state, newState); - ui.render(); + const ui = this; + ui.state = Object.assign({}, ui.state, newState); + ui.render(); } render() { - const ui = this; - const name = ui.name; + const ui = this; + const name = ui.name; - const navs = null; - const el = ui.state.current; + const navs = null; + const el = ui.state.current; - ui.state.target.innerHTML = ''; - const meta = document.createElement('div'); - meta.classList.add(`meta-${name}`, `meta-${name}__${ui.state.type.join(` meta-${name}__`)}`); - ui.state.target.append(meta); + ui.state.target.innerHTML = ''; + const meta = document.createElement('div'); + meta.classList.add(`meta-${name}`, `meta-${name}__${ui.state.type.join(` meta-${name}__`)}`); + ui.state.target.append(meta); - const metaOverlay = document.createElement('div'); - metaOverlay.classList.add(`meta-${name}-overlay`); - if (ui.state.shown) { - metaOverlay.classList.add(`meta-${name}-overlay__open`); - } - if (ui.state.loading) { - metaOverlay.classList.add(`meta-${name}-overlay__loading`); - } - if (ui.state.error) { - metaOverlay.classList.add(`meta-${name}-overlay__error`); - } - meta.append(metaOverlay); + const metaOverlay = document.createElement('div'); + metaOverlay.classList.add(`meta-${name}-overlay`); + if (ui.state.shown) { + metaOverlay.classList.add(`meta-${name}-overlay__open`); + } + if (ui.state.loading) { + metaOverlay.classList.add(`meta-${name}-overlay__loading`); + } + if (ui.state.error) { + metaOverlay.classList.add(`meta-${name}-overlay__error`); + } + meta.append(metaOverlay); - const metaContent = document.createElement('div'); - metaContent.classList.add('meta-content'); - metaOverlay.append(metaContent); + const metaContent = document.createElement('div'); + metaContent.classList.add('meta-content'); + metaOverlay.append(metaContent); - const btnClose = document.createElement('button'); - btnClose.classList.add('meta-nav', 'meta-close', 'a'); - btnClose.innerHTML = + const btnClose = document.createElement('button'); + btnClose.classList.add('meta-nav', 'meta-close', 'a'); + btnClose.innerHTML = '' + ' Close'; - btnClose.addEventListener('click', (e) => { - e.preventDefault(); - ui.hide(); - }); - metaContent.append(btnClose); + btnClose.addEventListener('click', (e) => { + e.preventDefault(); + ui.hide(); + }); + metaContent.append(btnClose); - if (el) { - const gallery = el.getAttribute('data-gallery'); - if (gallery && ui.state.collections[gallery].length > 1) { - const navs = document.createElement('nav'); - navs.classList.add('meta-navs'); + if (el) { + const gallery = el.getAttribute('data-gallery'); + if (gallery && ui.state.collections[gallery].length > 1) { + const navs = document.createElement('nav'); + navs.classList.add('meta-navs'); - const prevBtn = document.createElement('button'); - prevBtn.classList.add('meta-nav', 'meta-nav-arrow', 'meta-nav-arrow__prev', 'a'); - prevBtn.innerHTML = '' + + const prevBtn = document.createElement('button'); + prevBtn.classList.add('meta-nav', 'meta-nav-arrow', 'meta-nav-arrow__prev', 'a'); + prevBtn.innerHTML = '' + ' Previous'; - prevBtn.addEventListener('click', (e) => { - e.preventDefault(); - ui.prev(); - }); - navs.append(prevBtn); + prevBtn.addEventListener('click', (e) => { + e.preventDefault(); + ui.prev(); + }); + navs.append(prevBtn); - const nextBtn = document.createElement('button'); - nextBtn.classList.add('meta-nav', 'meta-nav-arrow', 'meta-nav-arrow__prev', 'a'); - nextBtn.innerHTML = '' + + const nextBtn = document.createElement('button'); + nextBtn.classList.add('meta-nav', 'meta-nav-arrow', 'meta-nav-arrow__prev', 'a'); + nextBtn.innerHTML = '' + ' Next'; - nextBtn.addEventListener('click', (e) => { - e.preventDefault(); - ui.next(); - }); - navs.append(nextBtn); + nextBtn.addEventListener('click', (e) => { + e.preventDefault(); + ui.next(); + }); + navs.append(nextBtn); - metaContent.append(navs); - } + metaContent.append(navs); } + } - let content = ''; - if (ui.state.embed) { - content = '
' + + let content = ''; + if (ui.state.embed) { + content = '
' + ' ... Loading ... ' + '
'; - } else { - const content = document.createElement('section'); - content.classList.add('meta-wrap', 'typography'); - content.innerHTML = ui.getHtml(); - metaContent.append(content); - } + } else { + const content = document.createElement('section'); + content.classList.add('meta-wrap', 'typography'); + content.innerHTML = ui.getHtml(); + metaContent.append(content); + } - if (ui.state.error) { - const error = document.createElement('div'); - error.classList.add('meta-error'); - error.innerHTML = ui.state.error; - metaContent.append(error); - } else if (ui.state.caption) { - const caption = document.createElement('div'); - caption.classList.add('meta-caption'); - caption.innerHTML = ui.getCaption(); - metaContent.append(caption); - } + if (ui.state.error) { + const error = document.createElement('div'); + error.classList.add('meta-error'); + error.innerHTML = ui.state.error; + metaContent.append(error); + } else if (ui.state.caption) { + const caption = document.createElement('div'); + caption.classList.add('meta-caption'); + caption.innerHTML = ui.getCaption(); + metaContent.append(caption); + } - return ui; + return ui; } } diff --git a/src/js/app.js b/src/js/app.js index 8bf0e72..1215f06 100755 --- a/src/js/app.js +++ b/src/js/app.js @@ -10,11 +10,11 @@ import MetaWindow from './_window'; const ui = new MetaWindow(); const container = document.getElementById('MetaLightboxApp'); if (!container) { - console.log(`MetaWindow: missing container`); + console.log(`MetaWindow: missing container`); } const init = () => { - ui.init(container); + ui.init(container); }; window.addEventListener(`${Events.LOADED}`, init); @@ -22,11 +22,11 @@ window.addEventListener(`${Events.AJAX}`, init); window.addEventListener(`MetaWindow.initLinks`, init); function importAll(r) { - return r.keys().map(r); + return r.keys().map(r); } const images = importAll( - require.context('../img/', false, /\.(png|jpe?g|svg)$/), + require.context('../img/', false, /\.(png|jpe?g|svg)$/), ); export default ui;