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