{"version":3,"file":"app/read-more.js","sources":["read-more.js"],"sourcesContent":["/*----------------------------------------------------------------------------*\\\r\n Read-More\r\n Simple acessible fold/unfold navigation\r\n\\*----------------------------------------------------------------------------*/\r\n\r\n/**\r\n * Use strict as per:\r\n * http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/\r\n */\r\n'use strict';\r\n\r\n\r\n/**\r\n * Check if oy object exists, otherwise create it\r\n */\r\nvar oy = oy || {};\r\n\r\n\r\n/**\r\n * Jshint global references\r\n * Please define all third party plugins that you use to not break jshinting\r\n */\r\n\r\n\r\n\r\n/* Component\r\n\\*----------------------------------------------------------------------------*/\r\n\r\noy.readMore = {\r\n init: function () {\r\n if (oy.cutsMustard) {\r\n this.setup(document);\r\n }\r\n },\r\n\r\n setup: function ($context) {\r\n var self = this;\r\n var $elements = $context.querySelectorAll('.js--readmore');\r\n\r\n for (var i = 0; i < $elements.length; ++i) {\r\n var $element = $elements[i];\r\n self.setupReadmore($element);\r\n }\r\n },\r\n\r\n\r\n setupReadmore: function ($element) {\r\n var self = this;\r\n if($element && !$element.classList.contains('is-initialised')) {\r\n var $toggle = $element.querySelector('.js--readmore__toggle');\r\n var $content = $element.querySelector('.js--readmore__content');\r\n var $focusable = $content.querySelectorAll('a, button, input');\r\n\r\n self.checkSize($element);\r\n\r\n $toggle.addEventListener('click', function () {\r\n if ($element.classList.contains('is-open')) {\r\n $element.classList.remove('is-open');\r\n self.removeFocusable($focusable);\r\n } else {\r\n $element.classList.add('is-open');\r\n self.restoreFocusable($focusable);\r\n }\r\n\r\n /**\r\n * If the page is embedded, update the height\r\n */\r\n window.dispatchEvent(oy.settings.embedHeightChange);\r\n });\r\n\r\n $element.classList.add('is-initialised');\r\n }\r\n },\r\n\r\n updateOnResize: function ($context) {\r\n if (oy.cutsMustard) {\r\n var self = this;\r\n var $elements = $context.querySelectorAll('.js--readmore');\r\n\r\n for (var i = 0; i < $elements.length; ++i) {\r\n var $element = $elements[i];\r\n self.checkSize($element);\r\n }\r\n }\r\n },\r\n\r\n checkSize: function ($element) {\r\n var self = this;\r\n var $content = $element.querySelector('.js--readmore__content');\r\n var $contentInner = $element.querySelector('.js--readmore__content');\r\n var $focusable = $content.querySelectorAll('a, button, input');\r\n\r\n var contentLineHeight = parseFloat(window.getComputedStyle($content, null).getPropertyValue('line-height'));\r\n var innerHeight = parseFloat(window.getComputedStyle($contentInner, null).getPropertyValue('height'));\r\n var initHeight = contentLineHeight * parseFloat($element.dataset.lines);\r\n\r\n if (innerHeight > initHeight) {\r\n $element.classList.add('is-active');\r\n if (!$element.classList.contains('is-open')) {\r\n self.removeFocusable($focusable);\r\n }\r\n } else {\r\n $element.classList.remove('is-active');\r\n self.restoreFocusable($focusable);\r\n }\r\n\r\n window.dispatchEvent(oy.settings.embedHeightChange);\r\n },\r\n\r\n /**\r\n * Removes focus state on all focusable elements\r\n */\r\n removeFocusable: function ($focusable) {\r\n for (var i = 0; i < $focusable.length; ++i) {\r\n $focusable[i].setAttribute('tabindex', '-1');\r\n }\r\n },\r\n\r\n /**\r\n * Restores focus state on all focusable elements\r\n */\r\n restoreFocusable: function ($focusable) {\r\n for (var i = 0; i < $focusable.length; ++i) {\r\n $focusable[i].removeAttribute('tabindex');\r\n }\r\n }\r\n};\r\n\r\n\r\nwindow.addEventListener('optimizedResize', function() {\r\n oy.readMore.updateOnResize(document);\r\n});\r\n\r\nwindow.addEventListener('load', function () {\r\n oy.readMore.init();\r\n}, false);"],"names":[],"mappings":"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","sourceRoot":"/source/"}