{"version":3,"sources":["webpack://umbro-global/./src/assets/scripts/components/stories.js"],"names":["animateStories","batch","$stories","gsap","transform","autoAlpha","duration","stagger","ease","clearProps","onComplete","animatingClass","$animatingStories","document","querySelectorAll","forEach","$story","i","classList","remove","removeAnimatingClass","imageSuffix","width","height","webp","getPictureMarkup","image","url","alt","mobileMarkup","buildStoryMarkup","data","uniform","Promise","resolve","fullGrid","leftOver","items","length","remainder","Array","fill","item","push","blank","map","story","storyMarkup","button","description","heading","video","link","getVideoMarkup","text","join","handleSuccess","$button","loadingClass","emptyBeforeInject","querySelector","then","markup","emptyElement","removeAttribute","insertAdjacentHTML","initLazyload","initPseudo","initTracking","setAttribute","moreUrl","style","display","hasMore","updateUI","bindLoadStories","addEventListener","e","endpoint","getAttribute","add","fetch","response","ok","Error","statusText","handleError","json","init"],"mappings":"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","file":"scripts/chunks/983.eeb9edde7e13db8b4afb.js","sourcesContent":["import { gsap } from 'gsap';\r\nimport { emptyElement } from './../global/utils';\r\nimport initLazyload from './../global/lazyload';\r\nimport initPseudo from './../global/pseudo';\r\nimport { init as initTracking } from './../global/tracking';\r\n\r\nconst removeAnimatingClass = (batch) => {\r\n\r\n const animatingClass = 'story--animating';\r\n const $animatingStories = document.querySelectorAll(`[data-story-batch=\"${batch}\"].${animatingClass}`);\r\n\r\n $animatingStories.forEach(($story, i) => $story.classList.remove(animatingClass));\r\n\r\n return $animatingStories;\r\n\r\n}\r\n\r\nconst animateStories = (batch) => {\r\n\r\n const $stories = `[data-story-batch=\"${batch}\"]`;\r\n\r\n gsap.fromTo($stories, {\r\n transform: 'translateY(10px)',\r\n autoAlpha: 0.001\r\n }, {\r\n transform: 'translateY(0)',\r\n autoAlpha: 0.999,\r\n duration: 0.4,\r\n stagger: 0.025,\r\n ease: 'power2',\r\n clearProps: 'transform,opacity,visibility',\r\n onComplete: () => removeAnimatingClass(batch)\r\n });\r\n\r\n return batch;\r\n\r\n}\r\n\r\nconst imageSuffix = (width, height, webp = false) => `&width=${width}&height=${height}${webp && '&format=webp'}`;\r\n\r\nconst getPictureMarkup = (image, i) => {\r\n\r\n const { url, alt } = image;\r\n const mobileMarkup = `\r\n \r\n \r\n `;\r\n\r\n let pictureMarkup;\r\n\r\n if (i === 0 || i === 1) {\r\n\r\n pictureMarkup = `\r\n \r\n ${mobileMarkup}\r\n \r\n \r\n \r\n \r\n \"${alt}\"\r\n \r\n `;\r\n\r\n } else if (i === 6 || i === 7 || i === 8) {\r\n\r\n pictureMarkup = `\r\n \r\n ${mobileMarkup}\r\n \r\n \r\n \r\n \r\n \"${alt}\"\r\n \r\n `;\r\n\r\n } else {\r\n\r\n pictureMarkup = `\r\n \r\n ${mobileMarkup}\r\n \r\n \r\n \r\n \r\n \"${alt}\"\r\n \r\n `;\r\n\r\n }\r\n\r\n return pictureMarkup;\r\n\r\n}\r\n\r\nconst getVideoMarkup = (video) => {\r\n\r\n const videoMarkup = (video) ? `\r\n \r\n ` : '';\r\n\r\n return videoMarkup;\r\n\r\n}\r\n\r\nconst buildStoryMarkup = (data, batch, uniform) => {\r\n\r\n return new Promise((resolve) => {\r\n\r\n const fullGrid = (uniform) ? 12 : 13;\r\n const leftOver = ((data.items.length + fullGrid) % fullGrid);\r\n const remainder = (leftOver !== 0) ? (fullGrid - leftOver) : 0;\r\n\r\n Array(remainder).fill().forEach((item, i) => data.items.push({ blank: true }));\r\n\r\n const markup = data.items.map((story, i) => {\r\n\r\n let storyMarkup;\r\n\r\n if (story.blank) {\r\n\r\n storyMarkup = `\r\n
\r\n

Placeholder

\r\n
\r\n `;\r\n\r\n } else {\r\n\r\n const { button, description, heading, image, video, link } = story;\r\n storyMarkup = `\r\n
\r\n ${(uniform) ? getPictureMarkup(image, true) : getPictureMarkup(image, i)}\r\n ${getVideoMarkup(video)}\r\n \r\n
\r\n

${heading}

\r\n ${description ? '

' + description + '

' : ''}\r\n ${button ? '' + button.text + '' : ''}\r\n
\r\n
\r\n
\r\n `;\r\n\r\n }\r\n\r\n return storyMarkup;\r\n\r\n }).join('');\r\n\r\n resolve(markup);\r\n\r\n });\r\n\r\n}\r\n\r\nconst handleError = (response, $button, loadingClass) => {\r\n\r\n $button.classList.remove(loadingClass);\r\n throw new Error(response.statusText);\r\n\r\n return response.statusText;\r\n\r\n}\r\n\r\nconst handleSuccess = (data, batch, $button, loadingClass, uniform, emptyBeforeInject = false) => {\r\n\r\n return new Promise((resolve) => {\r\n\r\n const $stories = document.querySelector('[data-stories-grid]');\r\n\r\n const updateUI = (markup) => {\r\n\r\n if (emptyBeforeInject) emptyElement($stories);\r\n\r\n $button.removeAttribute('disabled');\r\n $button.classList.remove(loadingClass);\r\n $stories.insertAdjacentHTML('beforeend', markup);\r\n\r\n initLazyload();\r\n animateStories(batch);\r\n initPseudo();\r\n initTracking();\r\n\r\n $button.setAttribute('data-url', data.moreUrl);\r\n $button.style.display = (data.hasMore) ? 'block' : 'none';\r\n\r\n return $stories;\r\n\r\n }\r\n\r\n buildStoryMarkup(data, batch, uniform).then((markup) => resolve(updateUI(markup)));\r\n\r\n });\r\n\r\n}\r\n\r\nconst bindLoadStories = () => {\r\n\r\n const $button = document.querySelector('[data-stories-load]');\r\n\r\n if (!$button) return false;\r\n\r\n const loadingClass = 'block-button--loading';\r\n\r\n let batch = 1;\r\n\r\n $button.addEventListener('click', (e) => {\r\n\r\n const endpoint = $button.getAttribute('data-url');\r\n\r\n $button.setAttribute('disabled', 'disabled');\r\n $button.classList.add(loadingClass);\r\n\r\n fetch(endpoint)\r\n .then((response) => {\r\n\r\n if (!response.ok) handleError(response, $button, loadingClass);\r\n\r\n return response.json().then((data) => handleSuccess(data, batch, $button, loadingClass, true, false).then(() => batch++));\r\n\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\nconst init = () => {\r\n\r\n bindLoadStories();\r\n\r\n}\r\n\r\nexport {\r\n init,\r\n handleSuccess\r\n};\r\n"],"sourceRoot":""}