{"version":3,"sources":["webpack:///./node_modules/readmore-js/readmore.js"],"names":["$","readmore","defaults","speed","collapsedHeight","heightMargin","moreLink","lessLink","embedCSS","blockCSS","startOpen","blockProcessed","beforeToggle","afterToggle","cssEmbedded","uniqueIdCounter","debounce","func","wait","immediate","timeout","context","this","args","arguments","later","apply","callNow","clearTimeout","setTimeout","uniqueId","prefix","id","String","setBoxHeights","element","el","clone","css","height","width","maxHeight","overflow","insertAfter","expandedHeight","outerHeight","cssMaxHeight","parseInt","replace","defaultHeight","data","remove","resizeBoxes","each","current","isExpanded","attr","options","selector","styles","d","document","u","createElement","type","styleSheet","cssText","appendChild","createTextNode","getElementsByTagName","Readmore","extend","_defaults","_name","init","window","addEventListener","attachEvent","prototype","_this","useLink","after","on","event","toggle","trigger","preventDefault","$element","newHeight","newLink","expanded","off","replaceWith","destroy","next","removeData","fn","instance","Array","slice","call"],"mappings":"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","file":"js/readmore.05a0daf4.js","sourcesContent":["/*!\n * @preserve\n *\n * Readmore.js jQuery plugin\n * Author: @jed_foster\n * Project home: http://jedfoster.github.io/Readmore.js\n * Licensed under the MIT license\n *\n * Debounce function from http://davidwalsh.name/javascript-debounce-function\n */\n\n/* global jQuery */\n\n(function(factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function($) {\n 'use strict';\n\n var readmore = 'readmore',\n defaults = {\n speed: 100,\n collapsedHeight: 200,\n heightMargin: 16,\n moreLink: 'Read More',\n lessLink: 'Close',\n embedCSS: true,\n blockCSS: 'display: block; width: 100%;',\n startOpen: false,\n\n // callbacks\n blockProcessed: function() {},\n beforeToggle: function() {},\n afterToggle: function() {}\n },\n cssEmbedded = {},\n uniqueIdCounter = 0;\n\n function debounce(func, wait, immediate) {\n var timeout;\n\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (! immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n }\n\n function uniqueId(prefix) {\n var id = ++uniqueIdCounter;\n\n return String(prefix === null ? 'rmjs-' : prefix) + id;\n }\n\n function setBoxHeights(element) {\n var el = element.clone().css({\n height: 'auto',\n width: element.width(),\n maxHeight: 'none',\n overflow: 'hidden'\n }).insertAfter(element),\n expandedHeight = el.outerHeight(),\n cssMaxHeight = parseInt(el.css({maxHeight: ''}).css('max-height').replace(/[^-\\d\\.]/g, ''), 10),\n defaultHeight = element.data('defaultHeight');\n\n el.remove();\n\n var collapsedHeight = cssMaxHeight || element.data('collapsedHeight') || defaultHeight;\n\n // Store our measurements.\n element.data({\n expandedHeight: expandedHeight,\n maxHeight: cssMaxHeight,\n collapsedHeight: collapsedHeight\n })\n // and disable any `max-height` property set in CSS\n .css({\n maxHeight: 'none'\n });\n }\n\n var resizeBoxes = debounce(function() {\n $('[data-readmore]').each(function() {\n var current = $(this),\n isExpanded = (current.attr('aria-expanded') === 'true');\n\n setBoxHeights(current);\n\n current.css({\n height: current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') )\n });\n });\n }, 100);\n\n function embedCSS(options) {\n if (! cssEmbedded[options.selector]) {\n var styles = ' ';\n\n if (options.embedCSS && options.blockCSS !== '') {\n styles += options.selector + ' + [data-readmore-toggle], ' +\n options.selector + '[data-readmore]{' +\n options.blockCSS +\n '}';\n }\n\n // Include the transition CSS even if embedCSS is false\n styles += options.selector + '[data-readmore]{' +\n 'transition: height ' + options.speed + 'ms;' +\n 'overflow: hidden;' +\n '}';\n\n (function(d, u) {\n var css = d.createElement('style');\n css.type = 'text/css';\n\n if (css.styleSheet) {\n css.styleSheet.cssText = u;\n }\n else {\n css.appendChild(d.createTextNode(u));\n }\n\n d.getElementsByTagName('head')[0].appendChild(css);\n }(document, styles));\n\n cssEmbedded[options.selector] = true;\n }\n }\n\n function Readmore(element, options) {\n this.element = element;\n\n this.options = $.extend({}, defaults, options);\n\n embedCSS(this.options);\n\n this._defaults = defaults;\n this._name = readmore;\n\n this.init();\n\n // IE8 chokes on `window.addEventListener`, so need to test for support.\n if (window.addEventListener) {\n // Need to resize boxes when the page has fully loaded.\n window.addEventListener('load', resizeBoxes);\n window.addEventListener('resize', resizeBoxes);\n }\n else {\n window.attachEvent('load', resizeBoxes);\n window.attachEvent('resize', resizeBoxes);\n }\n }\n\n\n Readmore.prototype = {\n init: function() {\n var current = $(this.element);\n\n current.data({\n defaultHeight: this.options.collapsedHeight,\n heightMargin: this.options.heightMargin\n });\n\n setBoxHeights(current);\n\n var collapsedHeight = current.data('collapsedHeight'),\n heightMargin = current.data('heightMargin');\n\n if (current.outerHeight(true) <= collapsedHeight + heightMargin) {\n // The block is shorter than the limit, so there's no need to truncate it.\n if (this.options.blockProcessed && typeof this.options.blockProcessed === 'function') {\n this.options.blockProcessed(current, false);\n }\n return true;\n }\n else {\n var id = current.attr('id') || uniqueId(),\n useLink = this.options.startOpen ? this.options.lessLink : this.options.moreLink;\n\n current.attr({\n 'data-readmore': '',\n 'aria-expanded': this.options.startOpen,\n 'id': id\n });\n\n current.after($(useLink)\n .on('click', (function(_this) {\n return function(event) {\n _this.toggle(this, current[0], event);\n };\n })(this))\n .attr({\n 'data-readmore-toggle': id,\n 'aria-controls': id\n }));\n\n if (! this.options.startOpen) {\n current.css({\n height: collapsedHeight\n });\n }\n\n if (this.options.blockProcessed && typeof this.options.blockProcessed === 'function') {\n this.options.blockProcessed(current, true);\n }\n }\n },\n\n toggle: function(trigger, element, event) {\n if (event) {\n event.preventDefault();\n }\n\n if (! trigger) {\n trigger = $('[aria-controls=\"' + this.element.id + '\"]')[0];\n }\n\n if (! element) {\n element = this.element;\n }\n\n var $element = $(element),\n newHeight = '',\n newLink = '',\n expanded = false,\n collapsedHeight = $element.data('collapsedHeight');\n\n if ($element.height() <= collapsedHeight) {\n newHeight = $element.data('expandedHeight') + 'px';\n newLink = 'lessLink';\n expanded = true;\n }\n else {\n newHeight = collapsedHeight;\n newLink = 'moreLink';\n }\n\n // Fire beforeToggle callback\n // Since we determined the new \"expanded\" state above we're now out of sync\n // with our true current state, so we need to flip the value of `expanded`\n if (this.options.beforeToggle && typeof this.options.beforeToggle === 'function') {\n this.options.beforeToggle(trigger, $element, ! expanded);\n }\n\n $element.css({'height': newHeight});\n\n // Fire afterToggle callback\n $element.on('transitionend', (function(_this) {\n return function() {\n if (_this.options.afterToggle && typeof _this.options.afterToggle === 'function') {\n _this.options.afterToggle(trigger, $element, expanded);\n }\n\n $(this).attr({\n 'aria-expanded': expanded\n }).off('transitionend');\n };\n })(this));\n\n $(trigger).replaceWith($(this.options[newLink])\n .on('click', (function(_this) {\n return function(event) {\n _this.toggle(this, element, event);\n };\n })(this))\n .attr({\n 'data-readmore-toggle': $element.attr('id'),\n 'aria-controls': $element.attr('id')\n }));\n },\n\n destroy: function() {\n $(this.element).each(function() {\n var current = $(this);\n\n current.attr({\n 'data-readmore': null,\n 'aria-expanded': null\n })\n .css({\n maxHeight: '',\n height: ''\n })\n .next('[data-readmore-toggle]')\n .remove();\n\n current.removeData();\n });\n }\n };\n\n\n $.fn.readmore = function(options) {\n var args = arguments,\n selector = this.selector;\n\n options = options || {};\n\n if (typeof options === 'object') {\n return this.each(function() {\n if ($.data(this, 'plugin_' + readmore)) {\n var instance = $.data(this, 'plugin_' + readmore);\n instance.destroy.apply(instance);\n }\n\n options.selector = selector;\n\n $.data(this, 'plugin_' + readmore, new Readmore(this, options));\n });\n }\n else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\n return this.each(function () {\n var instance = $.data(this, 'plugin_' + readmore);\n if (instance instanceof Readmore && typeof instance[options] === 'function') {\n instance[options].apply(instance, Array.prototype.slice.call(args, 1));\n }\n });\n }\n };\n\n}));\n\n"],"sourceRoot":""}