vendor/assets/javascripts/readmore.js in geoblacklight-2.3.0 vs vendor/assets/javascripts/readmore.js in geoblacklight-2.4.0

- old
+ new

@@ -1,618 +1 @@ -/*! - * @preserve - * - * Readmore.js plugin - * Author: @jed_foster - * Project home: jedfoster.com/Readmore.js - * Version: 3.0.0-beta-1 - * Licensed under the MIT license - * - * Debounce function from davidwalsh.name/javascript-debounce-function - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("Readmore", [], factory); - else if(typeof exports === 'object') - exports["Readmore"] = factory(); - else - root["Readmore"] = factory(); -})(window, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -module.exports = _classCallCheck; - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/createClass.js": -/*!************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -module.exports = _createClass; - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/typeof.js": -/*!*******************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } - -function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - module.exports = _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - module.exports = _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); -} - -module.exports = _typeof; - -/***/ }), - -/***/ "./src/readmore.js": -/*!*************************!*\ - !*** ./src/readmore.js ***! - \*************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js"); -/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__); - - - -var uniqueIdCounter = 0; -var isCssEmbeddedFor = []; // from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md - -(function removePolyfill(arr) { - arr.forEach(function (item) { - if (Object.prototype.hasOwnProperty.call(item, 'remove')) { - return; - } - - Object.defineProperty(item, 'remove', { - configurable: true, - enumerable: true, - writable: true, - value: function remove() { - if (this.parentNode !== null) { - this.parentNode.removeChild(this); - } - } - }); - }); -})([Element.prototype, CharacterData.prototype, DocumentType.prototype]); - -function forEach(arr, callback, scope) { - for (var i = 0; i < arr.length; i += 1) { - callback.call(scope, arr[i], i); - } -} - -function extend() { - for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) { - objects[_key] = arguments[_key]; - } - - var hasProp = {}.hasOwnProperty; - var child = objects[0]; - var parent = objects[1]; - - if (objects.length > 2) { - var args = []; - Object.keys(objects).forEach(function (key) { - args.push(objects[key]); - }); - - while (args.length > 2) { - var c1 = args.shift(); - var p1 = args.shift(); - args.unshift(extend(c1, p1)); - } - - child = args.shift(); - parent = args.shift(); - } - - if (parent) { - Object.keys(parent).forEach(function (key) { - if (hasProp.call(parent, key)) { - if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(parent[key]) === 'object') { - child[key] = child[key] || {}; - child[key] = extend(child[key], parent[key]); - } else { - child[key] = parent[key]; - } - } - }); - } - - return child; -} - -function debounce(func, wait, immediate) { - var timeout; - return function debouncedFunc() { - var _this = this; - - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var callNow = immediate && !timeout; - - var later = function later() { - timeout = null; - if (!immediate) func.apply(_this, args); - }; - - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(this, args); - }; -} - -function uniqueId() { - uniqueIdCounter += 1; - return "rmjs-".concat(uniqueIdCounter); -} - -function setBoxHeights(element) { - element.style.height = 'auto'; - var expandedHeight = parseInt(element.getBoundingClientRect().height, 10); - var cssMaxHeight = parseInt(window.getComputedStyle(element).maxHeight, 10); - var defaultHeight = parseInt(element.readmore.defaultHeight, 10); // Store our measurements. - - element.readmore.expandedHeight = expandedHeight; - element.readmore.maxHeight = cssMaxHeight; - element.readmore.collapsedHeight = cssMaxHeight || element.readmore.collapsedHeight || defaultHeight; - element.style.maxHeight = 'none'; -} - -function createElementFromString(htmlString) { - var div = document.createElement('div'); - div.innerHTML = htmlString; - return div.firstChild; -} - -function embedCSS(selector, options) { - if (!isCssEmbeddedFor[selector]) { - var styles = ''; - - if (options.embedCSS && options.blockCSS !== '') { - styles += "".concat(selector, " + [data-readmore-toggle], ").concat(selector, "[data-readmore] {\n ").concat(options.blockCSS, "\n }"); - } // Include the transition CSS even if embedCSS is false - - - styles += "".concat(selector, "[data-readmore] {\n transition: height ").concat(options.speed, "ms;\n overflow: hidden;\n }"); - - (function (d, u) { - var css = d.createElement('style'); - css.type = 'text/css'; - - if (css.styleSheet) { - css.styleSheet.cssText = u; - } else { - css.appendChild(d.createTextNode(u)); - } - - d.getElementsByTagName('head')[0].appendChild(css); - })(document, styles); - - isCssEmbeddedFor[selector] = true; - } -} - -function buildToggle(link, element, scope) { - function clickHandler(event) { - this.toggle(element, event); - } - - var text = link; - - if (typeof link === 'function') { - text = link(element); - } - - var toggleLink = createElementFromString(text); - toggleLink.setAttribute('data-readmore-toggle', element.id); - toggleLink.setAttribute('aria-controls', element.id); - toggleLink.addEventListener('click', clickHandler.bind(scope)); - return toggleLink; -} - -function isEnvironmentSupported() { - return typeof window !== 'undefined' && typeof document !== 'undefined' && !!document.querySelectorAll && !!window.addEventListener; -} - -var resizeBoxes = debounce(function () { - var elements = document.querySelectorAll('[data-readmore]'); - forEach(elements, function (element) { - var expanded = element.getAttribute('aria-expanded') === 'true'; - setBoxHeights(element); - element.style.height = "".concat(expanded ? element.readmore.expandedHeight : element.readmore.collapsedHeight, "px"); - }); -}, 100); -var defaults = { - speed: 100, - collapsedHeight: 200, - heightMargin: 16, - moreLink: '<a href="#">Read More</a>', - lessLink: '<a href="#">Close</a>', - embedCSS: true, - blockCSS: 'display: block; width: 100%;', - startOpen: false, - sourceOrder: 'after', - // callbacks - blockProcessed: function blockProcessed() {}, - beforeToggle: function beforeToggle() {}, - afterToggle: function afterToggle() {} -}; - -var Readmore = -/*#__PURE__*/ -function () { - function Readmore() { - var _this2 = this; - - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Readmore); - - if (!isEnvironmentSupported()) return; - - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - var selector = args[0], - options = args[1]; - var elements; - - if (typeof selector === 'string') { - elements = document.querySelectorAll(selector); - } else if (selector.nodeName) { - elements = [selector]; // emulate a NodeList by casting a single Node as an array - } else { - elements = selector; - } // After all that, if we _still_ don't have iteratable NodeList, bail out. - - - if (!elements.length) return; - this.options = extend({}, defaults, options); - - if (typeof selector === 'string') { - embedCSS(selector, this.options); - } else { - // Instances need distinct selectors so they don't stomp on each other. - this.instanceSelector = ".".concat(uniqueId()); - embedCSS(this.instanceSelector, this.options); - } // Need to resize boxes when the page has fully loaded. - - - window.addEventListener('load', resizeBoxes); - window.addEventListener('resize', resizeBoxes); - this.elements = []; - forEach(elements, function (element) { - if (_this2.instanceSelector) { - element.classList.add(_this2.instanceSelector.substr(1)); - } - - var expanded = _this2.options.startOpen; - element.readmore = { - defaultHeight: _this2.options.collapsedHeight, - heightMargin: _this2.options.heightMargin - }; - setBoxHeights(element); - var heightMargin = element.readmore.heightMargin; - - if (element.getBoundingClientRect().height <= element.readmore.collapsedHeight + heightMargin) { - if (typeof _this2.options.blockProcessed === 'function') { - _this2.options.blockProcessed(element, false); - } - - return; - } - - element.setAttribute('data-readmore', ''); - element.setAttribute('aria-expanded', expanded); - element.id = element.id || uniqueId(); - var toggleLink = expanded ? _this2.options.lessLink : _this2.options.moreLink; - var toggleElement = buildToggle(toggleLink, element, _this2); - element.parentNode.insertBefore(toggleElement, _this2.options.sourceOrder === 'before' ? element : element.nextSibling); - element.style.height = "".concat(expanded ? element.readmore.expandedHeight : element.readmore.collapsedHeight, "px"); - - if (typeof _this2.options.blockProcessed === 'function') { - _this2.options.blockProcessed(element, true); - } - - _this2.elements.push(element); - }); - } // Signature when called internally by the toggleLink click handler: - // toggle(element, event) - // - // When called externally by an instance, - // e.g. readmoreDemo.toggle(document.querySelector('article:nth-of-type(1)')): - // toggle(elementOrQuerySelector) - - - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Readmore, [{ - key: "toggle", - value: function toggle() { - var _this3 = this; - - var el = arguments.length <= 0 ? undefined : arguments[0]; - - var toggleElement = function toggleElement(element) { - var trigger = document.querySelector("[aria-controls=\"".concat(element.id, "\"]")); - var expanded = element.getBoundingClientRect().height <= element.readmore.collapsedHeight; - var newHeight = expanded ? element.readmore.expandedHeight : element.readmore.collapsedHeight; // Fire beforeToggle callback - // Since we determined the new "expanded" state above we're now out of sync - // with our true current state, so we need to flip the value of `expanded` - - if (typeof _this3.options.beforeToggle === 'function') { - var shouldContinueToggle = _this3.options.beforeToggle(trigger, element, !expanded); // if the beforeToggle callback returns false, stop toggling - - - if (shouldContinueToggle === false) { - return; - } - } - - element.style.height = "".concat(newHeight, "px"); - - var transitionendHandler = function transitionendHandler(transitionEvent) { - // Fire afterToggle callback - if (typeof _this3.options.afterToggle === 'function') { - _this3.options.afterToggle(trigger, element, expanded); - } - - transitionEvent.stopPropagation(); - element.setAttribute('aria-expanded', expanded); - element.removeEventListener('transitionend', transitionendHandler, false); - }; - - element.addEventListener('transitionend', transitionendHandler, false); - - if (_this3.options.speed < 1) { - transitionendHandler.call(_this3, { - target: element - }); - } - - var toggleLink = expanded ? _this3.options.lessLink : _this3.options.moreLink; - - if (!toggleLink) { - trigger.remove(); - } else if (trigger && trigger.parentNode) { - trigger.parentNode.replaceChild(buildToggle(toggleLink, element, _this3), trigger); - } - }; - - if (typeof el === 'string') { - el = document.querySelectorAll(el); - } - - if (!el) { - throw new Error('Element MUST be either an HTML node or querySelector string'); - } - - var event = arguments.length <= 1 ? undefined : arguments[1]; - - if (event) { - event.preventDefault(); - event.stopPropagation(); - } - - if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(el) === 'object' && !el.nodeName) { - // element is likely a NodeList - forEach(el, toggleElement); - } else { - toggleElement(el); - } - } - }, { - key: "destroy", - value: function destroy(selector) { - var _this4 = this; - - var elements; - - if (!selector) { - elements = this.elements; // eslint-disable-line - } else if (typeof selector === 'string') { - elements = document.querySelectorAll(selector); - } else if (selector.nodeName) { - elements = [selector]; // emulate a NodeList by casting a single Node as an array - } else { - elements = selector; - } - - forEach(elements, function (element) { - if (_this4.elements.indexOf(element) === -1) { - return; - } - - _this4.elements = _this4.elements.filter(function (el) { - return el !== element; - }); - - if (_this4.instanceSelector) { - element.classList.remove(_this4.instanceSelector.substr(1)); - } - - delete element.readmore; - element.style.height = 'initial'; - element.style.maxHeight = 'initial'; - element.removeAttribute('data-readmore'); - element.removeAttribute('aria-expanded'); - var trigger = document.querySelector("[aria-controls=\"".concat(element.id, "\"]")); - - if (trigger) { - trigger.remove(); - } - - if (element.id.indexOf('rmjs-') !== -1) { - element.removeAttribute('id'); - } - }); - delete this; - } - }]); - - return Readmore; -}(); - -Readmore.VERSION = "3.0.0-beta-1"; -/* harmony default export */ __webpack_exports__["default"] = (Readmore); - -/***/ }), - -/***/ 0: -/*!*******************************!*\ - !*** multi ./src/readmore.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./src/readmore.js */"./src/readmore.js"); - - -/***/ }) - -/******/ })["default"]; -}); -//# sourceMappingURL=readmore.js.map \ No newline at end of file