UNPKG

lightgallery.js

Version:

Full featured lightbox gallery. Zero dependencies

137 lines (118 loc) 4.03 kB
var utils = { getAttribute: function(el, label) { return el[label]; }, setAttribute: function(el, label, value) { el[label] = value; }, wrap: function(el, className) { if (!el) { return; } var wrapper = document.createElement('div'); wrapper.className = className; el.parentNode.insertBefore(wrapper, el); el.parentNode.removeChild(el); wrapper.appendChild(el); }, addClass: function(el, className) { if (!el) { return; } if (el.classList) { el.classList.add(className); } else { el.className += ' ' + className; } }, removeClass: function(el, className) { if (!el) { return; } if (el.classList) { el.classList.remove(className); } else { el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); } }, hasClass: function(el, className) { if (el.classList) { return el.classList.contains(className); } else { return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className); } }, // ex Transform // ex TransitionTimingFunction setVendor: function(el, property, value) { if (!el) { return; } el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value; el.style['webkit' + property] = value; el.style['moz' + property] = value; el.style['ms' + property] = value; el.style['o' + property] = value; }, trigger: function(el, event, detail = null) { if (!el) { return; } let customEvent = new CustomEvent(event, { detail: detail }); el.dispatchEvent(customEvent); }, Listener: { uid: 0 }, on: function(el, events, fn) { if (!el) { return; } events.split(' ').forEach(event => { var _id = this.getAttribute(el, 'lg-event-uid') || ''; utils.Listener.uid++; _id += '&' + utils.Listener.uid; this.setAttribute(el, 'lg-event-uid', _id); utils.Listener[event + utils.Listener.uid] = fn; el.addEventListener(event.split('.')[0], fn, false); }); }, off: function(el, event) { if (!el) { return; } var _id = this.getAttribute(el, 'lg-event-uid'); if (_id) { _id = _id.split('&'); for (var i = 0; i < _id.length; i++) { if (_id[i]) { var _event = event + _id[i]; if (_event.substring(0, 1) === '.') { for (var key in utils.Listener) { if (utils.Listener.hasOwnProperty(key)) { if (key.split('.').indexOf(_event.split('.')[1]) > -1) { el.removeEventListener(key.split('.')[0], utils.Listener[key]); this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], '')); delete utils.Listener[key]; } } } } else { el.removeEventListener(_event.split('.')[0], utils.Listener[_event]); this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], '')); delete utils.Listener[_event]; } } } } }, param: function(obj) { return Object.keys(obj).map(function(k) { return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]); }).join('&'); } }; export default utils;