{"version":3,"file":"app/loader.js","sources":["loader.js"],"sourcesContent":["/*----------------------------------------------------------------------------*\\\r\n Loader\r\n Simple loader script\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 nh 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/**\r\n * Component\r\n */\r\noy.loader = {\r\n threshold: 500,\r\n loaderTemplate: '
',\r\n\r\n /**\r\n * Test template\r\n */\r\n test: function ($loaders) {\r\n var self = this;\r\n\r\n setTimeout(function () {\r\n for (var i = 0; i < $loaders.length; ++i) {\r\n var $loader = $loaders[i];\r\n self.open($loader);\r\n }\r\n }, 1000);\r\n\r\n if(document.querySelector('.js--loader__toggle-test') && document.querySelector('.js--loader__toggle-all')) {\r\n document.querySelector('.js--loader__toggle-test').addEventListener('click', function () {\r\n self.close($loaders[0]);\r\n });\r\n document.querySelector('.js--loader__toggle-all').addEventListener('click', function () {\r\n self.closeAll(document);\r\n });\r\n }\r\n },\r\n\r\n\r\n /**\r\n * Open the modal\r\n */\r\n open: function ($container) {\r\n var self = this;\r\n\r\n if ($container === null) {\r\n return false;\r\n }\r\n\r\n var inCard = $container.closest('.o-card');\r\n var containerHeight = $container.offsetHeight;\r\n var windowHeight = window.innerHeight;\r\n var ratio = parseFloat(windowHeight/containerHeight);\r\n var $loaderTemplate = self.getLoaderTemplate();\r\n\r\n /**\r\n * If the `c-loader` is not present create it\r\n */\r\n window.requestAnimationFrame(function(){\r\n $container.classList.add('c-loader', 'js--loader');\r\n\r\n if (ratio < 0.75) {\r\n $container.classList.add('c-loader--sticky');\r\n $loaderTemplate.classList.add('js--sticky');\r\n }\r\n\r\n // incard check\r\n if (inCard) {\r\n $container.classList.add('is-incard');\r\n }\r\n });\r\n\r\n /**\r\n * Only display loader after a certain amount of time is passed\r\n * (self.threshold)\r\n */\r\n var loaderTimeout = setTimeout(function () {\r\n window.requestAnimationFrame(function(){\r\n $container.insertBefore($loaderTemplate, $container.firstChild);\r\n oy.sticky.setup($container);\r\n $container.classList.add('is-loading');\r\n });\r\n }, self.threshold);\r\n\r\n $container.loaderCallback = loaderTimeout;\r\n },\r\n\r\n close: function ($container) {\r\n if (typeof $container.loaderCallback !== 'undefined') {\r\n clearTimeout($container.loaderCallback);\r\n }\r\n window.requestAnimationFrame(function(){\r\n $container.classList.remove('is-loading');\r\n $container.classList.remove('c-loader');\r\n setTimeout(function () {\r\n var loaderTemplate = $container.querySelector('.js--loader__spinner');\r\n window.requestAnimationFrame(function(){\r\n if (loaderTemplate) {\r\n $container.removeChild(loaderTemplate);\r\n }\r\n });\r\n }, oy.settings.transitions.medium);\r\n });\r\n },\r\n\r\n closeAll: function ($context) {\r\n if (!$context) {\r\n $context = document;\r\n }\r\n var self = this;\r\n var $loaders = $context.querySelectorAll('.js--loader');\r\n\r\n for (var i = 0; i < $loaders.length; ++i) {\r\n var $loader = $loaders[i];\r\n self.close($loader);\r\n }\r\n },\r\n\r\n getLoaderTemplate: function () {\r\n var $loader = document.createElement('div');\r\n $loader.classList.add('c-loader__spinner', 'js--loader__spinner');\r\n $loader.innerHTML = this.loaderTemplate;\r\n return $loader;\r\n }\r\n};\r\n\r\nwindow.addEventListener('load', function () {\r\n var $loaders = document.querySelectorAll('.js--loader__test');\r\n\r\n if ($loaders && $loaders.length) {\r\n oy.loader.test($loaders);\r\n }\r\n}, false);\r\n"],"names":[],"mappings":"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","sourceRoot":"/source/"}