UNPKG

lightgallery.js

Version:

Full featured lightbox gallery. Zero dependencies

158 lines (137 loc) 5.19 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['exports'], factory); } else if (typeof exports !== "undefined") { factory(exports); } else { var mod = { exports: {} }; factory(mod.exports); global.lgUtils = mod.exports; } })(this, function (exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var utils = { getAttribute: function getAttribute(el, label) { return el[label]; }, setAttribute: function setAttribute(el, label, value) { el[label] = value; }, wrap: function wrap(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 addClass(el, className) { if (!el) { return; } if (el.classList) { el.classList.add(className); } else { el.className += ' ' + className; } }, removeClass: function removeClass(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 hasClass(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 setVendor(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 trigger(el, event) { var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; if (!el) { return; } var customEvent = new CustomEvent(event, { detail: detail }); el.dispatchEvent(customEvent); }, Listener: { uid: 0 }, on: function on(el, events, fn) { var _this = this; if (!el) { return; } events.split(' ').forEach(function (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 off(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 param(obj) { return Object.keys(obj).map(function (k) { return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]); }).join('&'); } }; exports.default = utils; });