{"version":3,"file":"Main.js","sources":["../../Private/Assets/Helper/MediaInit.js","../../Private/Assets/Helper/triggerEvent.js","../../Private/Assets/Audio/Embed.js","../../Private/Assets/Helper/addEvent.js","../../Private/Assets/Helper/getAriaLabel.js","../../Private/Assets/Video/Embed.js","../../Private/Assets/Helper/Lightbox.js","../../Private/Assets/Video/Lightbox.js","../../Private/Assets/Helper/iFrame.js","../../Private/Assets/Youtube/Preview.js","../../Private/Assets/Vimeo/Embed.js","../../Private/Assets/Vimeo/Lightbox.js","../../Private/Assets/Youtube/Embed.js","../../Private/Assets/Youtube/Lightbox.js"],"sourcesContent":["const BASE = 'jonnitto-prettyembed';\nconst INIT_CLASS = `${BASE}--init`;\nconst SLIM_CLASS = `${BASE}--slim`;\nconst PLAY_CLASS = `${BASE}--play`;\n\nconst VIDEOS = Array.from(document.querySelectorAll(`.${BASE}--video video:not([autoplay])`));\nconst AUDIOS = Array.from(document.querySelectorAll(`.${BASE}--audio audio:not([autoplay])`));\nconst ELEMENTS = [].concat(VIDEOS, AUDIOS);\n\nfunction init(element, autoplay = true, callback) {\n const CLASS_LIST = element.parentNode.classList;\n if (CLASS_LIST.contains(INIT_CLASS)) {\n return;\n }\n\n if (typeof callback == 'function') {\n callback();\n }\n\n if (element.hasAttribute('data-controls')) {\n element.setAttribute('controls', true);\n }\n\n if (!element.hasAttribute('controls')) {\n CLASS_LIST.add(SLIM_CLASS);\n element.addEventListener('click', () => {\n const play = !CLASS_LIST.contains(PLAY_CLASS);\n CLASS_LIST[play ? 'add' : 'remove'](PLAY_CLASS);\n if (play) {\n element.play();\n } else {\n element.pause();\n }\n });\n }\n\n if (element.hasAttribute('data-streaming')) {\n const SRC = element.getAttribute('data-streaming');\n if (element.canPlayType('application/vnd.apple.mpegurl')) {\n element.src = SRC;\n addClassAndPlay(element, autoplay, CLASS_LIST);\n } else {\n if (typeof Hls === 'undefined') {\n const HLS_SCRIPT = document.createElement('script');\n HLS_SCRIPT.src = '/_Resources/Static/Packages/Jonnitto.PrettyEmbedHelper/Scripts/Hls.js?v=1';\n document.head.appendChild(HLS_SCRIPT);\n HLS_SCRIPT.addEventListener('load', () => {\n setTimeout(() => {\n loadHls(element, SRC);\n addClassAndPlay(element, autoplay, CLASS_LIST);\n }, 100);\n });\n } else {\n loadHls(element, SRC);\n addClassAndPlay(element, autoplay, CLASS_LIST);\n }\n }\n } else {\n addClassAndPlay(element, autoplay, CLASS_LIST);\n }\n}\n\nfunction addClassAndPlay(element, autoplay, classList) {\n classList.add(INIT_CLASS);\n if (autoplay) {\n classList.add(PLAY_CLASS);\n setTimeout(() => {\n element.play();\n }, 0);\n }\n}\n\nfunction pause(elements = ELEMENTS, current = null) {\n elements.forEach((element) => {\n if (element != current) {\n if (!element.hasAttribute('controls')) {\n element.parentNode.classList.remove(PLAY_CLASS);\n }\n element.pause();\n }\n });\n}\n\nfunction loadHls(element, src) {\n if (Hls.isSupported()) {\n const HLS = new Hls();\n HLS.loadSource(src);\n HLS.attachMedia(element);\n }\n}\n\nELEMENTS.forEach((element) => {\n element.addEventListener('play', (event) => {\n pause(ELEMENTS, event.target);\n });\n});\n\nexport { init, pause };\n","export default function (options) {\n let event;\n if (!options) {\n options = {};\n }\n if (window.CustomEvent) {\n event = new CustomEvent('prettyembed', { detail: options });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('prettyembed', true, true, options);\n }\n document.dispatchEvent(event);\n}\n","import { init } from '../Helper/MediaInit';\nimport triggerEvent from '../Helper/triggerEvent';\n\nconst elements = document.querySelectorAll('.jonnitto-prettyembed--audio audio');\nArray.from(elements).forEach((element) => {\n init(element, false);\n triggerEvent({\n type: 'audio',\n style: 'inline',\n src: (() => {\n const SOURCE = element.querySelector('source');\n return SOURCE ? SOURCE.src : null;\n })(),\n });\n});\n","function matches(element, selector) {\n return (\n element.matches ||\n element.matchesSelector ||\n element.msMatchesSelector ||\n element.mozMatchesSelector ||\n element.webkitMatchesSelector ||\n element.oMatchesSelector\n ).call(element, selector);\n}\n\nfunction closest(element, selector) {\n let ancestor = element;\n\n do {\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n ancestor = ancestor.parentElement || ancestor.parentNode;\n } while (ancestor !== null && ancestor.nodeType === 1);\n return null;\n}\n\nexport default function (selector, callback) {\n document.documentElement.addEventListener('click', (event) => {\n const ELEMENT = closest(event.target, selector);\n if (!ELEMENT || typeof callback != 'function') {\n return;\n }\n callback.call(ELEMENT, event);\n });\n}\n","export default function (node) {\n return node.getAttribute('aria-label');\n}\n","import { init } from '../Helper/MediaInit';\nimport addEvent from '../Helper/addEvent';\nimport triggerEvent from '../Helper/triggerEvent';\nimport getAriaLabel from '../Helper/getAriaLabel';\n\nconst SELECTOR = '.jonnitto-prettyembed--video.jonnitto-prettyembed--inline video';\n\naddEvent(SELECTOR, function (event) {\n event.preventDefault();\n init(this, true, () => {\n triggerEvent({\n type: 'video',\n style: 'inline',\n title: getAriaLabel(this),\n src: (() => {\n const SOURCE = this.querySelector('source');\n return SOURCE ? SOURCE.src : null;\n })(),\n });\n });\n});\n","import addEvent from './addEvent';\n\nconst HTML_ELEMENT = document.documentElement;\nconst BODY_ELEMENT = document.body;\nconst BASE_CLASS = 'jonnitto-prettyembed';\nconst LIGHTBOX_CLASS = `${BASE_CLASS}__lightbox`;\nconst ID = LIGHTBOX_CLASS;\nconst VISIBLE_CLASS = `-${LIGHTBOX_CLASS}`;\nconst VISIBLE_CLASS_LIST = HTML_ELEMENT.classList;\nconst INNER_CLASS = `${BASE_CLASS}__inner`;\nconst CLOSE_CLASS = `${BASE_CLASS}__close`;\nconst CONTENT_CLASS = `${BASE_CLASS}__content`;\nconst LIGHTBOX = document.createElement('div');\n\nLIGHTBOX.className = LIGHTBOX_CLASS;\nLIGHTBOX.innerHTML = `\n
\n \n
\n
`;\n\nlet lighboxContent = false;\nlet timeout = null;\n\nfunction resetContent() {\n // Reset the content to the default class\n lighboxContent.className = `${BASE_CLASS} ${CONTENT_CLASS}`;\n // Remove style attribute\n lighboxContent.removeAttribute('style');\n // Clear all content\n lighboxContent.innerHTML = '';\n}\n\nfunction get(type, paddingTop) {\n if (!lighboxContent) {\n BODY_ELEMENT.appendChild(LIGHTBOX);\n lighboxContent = document.getElementById(ID);\n }\n resetContent();\n if (typeof type != 'object') {\n type = type ? [type] : [];\n }\n type.forEach((item) => {\n lighboxContent.classList.add(`${BASE_CLASS}--${item}`);\n });\n\n if (paddingTop) {\n lighboxContent.style.paddingTop = paddingTop;\n }\n return lighboxContent;\n}\n\nfunction show(callback) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n if (typeof callback == 'function') {\n callback();\n }\n VISIBLE_CLASS_LIST.add(VISIBLE_CLASS);\n }, 100);\n}\n\nfunction closeLighbox() {\n VISIBLE_CLASS_LIST.remove(VISIBLE_CLASS);\n if (lighboxContent) {\n clearTimeout(timeout);\n timeout = setTimeout(resetContent, 300);\n }\n}\n\nfunction closeLighboxOnESC(event) {\n if (event.keyCode == 27) {\n if (VISIBLE_CLASS_LIST.contains(VISIBLE_CLASS)) {\n closeLighbox();\n }\n }\n}\n\nfunction init(selector, callback) {\n if (typeof callback == 'function' && typeof selector == 'string') {\n addEvent(selector, callback);\n }\n}\n\n// Catch click event to prevent closing lightbox if some clicks on content\naddEvent(`.${CONTENT_CLASS}`, (event) => {\n event.stopImmediatePropagation();\n});\n\n// Close lightbox on click on lightbox background or on close button\naddEvent(`.${LIGHTBOX_CLASS}`, closeLighbox);\naddEvent(`.${CLOSE_CLASS}`, closeLighbox);\n\n// Close on ESC\nHTML_ELEMENT.addEventListener('keyup', closeLighboxOnESC);\n\nexport { get, show, init };\n","import * as video from '../Helper/MediaInit';\nimport * as lightbox from '../Helper/Lightbox';\nimport triggerEvent from '../Helper/triggerEvent';\nimport getAriaLabel from '../Helper/getAriaLabel';\n\nconst BASE_CLASS = 'jonnitto-prettyembed';\nconst SELECTOR_CLASS = `.${BASE_CLASS}--video.${BASE_CLASS}--lightbox video`;\nlet timeout;\n\nlightbox.init(SELECTOR_CLASS, function (event) {\n event.preventDefault();\n clearTimeout(timeout);\n video.pause();\n const VIDEO_NODE = lightbox.get('video', false).appendChild(this.cloneNode(true));\n if (this.dataset.controls == undefined) {\n // As we have no controls, we need to add also the play and pause button\n Array.from(this.parentNode.children).forEach((element) => {\n if (element != this && !element.classList.contains(`${BASE_CLASS}__preview`)) {\n VIDEO_NODE.parentNode.appendChild(element.cloneNode(true));\n }\n });\n }\n lightbox.show(() => {\n video.init(VIDEO_NODE);\n if (!this.dataset.init) {\n this.dataset.init = true;\n triggerEvent({\n type: 'video',\n style: 'lightbox',\n title: getAriaLabel(this),\n src: (() => {\n const SOURCE = this.querySelector('source');\n return SOURCE ? SOURCE.src : null;\n })(),\n });\n }\n });\n\n timeout = setTimeout(function () {\n // Make sure the VIDEO_NODE start playing\n VIDEO_NODE.play();\n }, 500);\n});\n","import addEvent from './addEvent';\nimport triggerEvent from './triggerEvent';\nimport getAriaLabel from './getAriaLabel';\nimport * as lightboxHelper from '../Helper/Lightbox';\n\nconst LOCAL_STORAGE = window.localStorage;\nconst BASE = 'jonnitto-prettyembed';\nconst GDPR_CLASS = BASE + '__gdpr';\nconst GDPR_BUTTON_CLASS = GDPR_CLASS + '-button';\nconst GDPR_OPEN = {\n youtube: false,\n vimeo: false,\n};\n\nconst openexternal = (() => {\n const value = document.currentScript.dataset.openexternal;\n return value ? value.split(',') : [];\n})();\n\nfunction markup(node) {\n const DATA = node.dataset;\n const FULLSCREEN = DATA.fs != null;\n if (!DATA.embed) {\n return false;\n }\n\n return ``;\n}\n\nfunction replace(element, tagName) {\n if (typeof element === 'object' && typeof tagName === 'string') {\n const ORIGINAL_ELEMENT = element;\n const ORIGINAL_TAG = ORIGINAL_ELEMENT.tagName;\n const START_RX = new RegExp('^<' + ORIGINAL_TAG, 'i');\n const END_RX = new RegExp(ORIGINAL_TAG + '>$', 'i');\n const START_SUBST = '<' + tagName;\n const END_SUBST = tagName + '>';\n const WRAPPER = document.createElement('div');\n WRAPPER.innerHTML = ORIGINAL_ELEMENT.outerHTML.replace(START_RX, START_SUBST).replace(END_RX, END_SUBST);\n const NEW_ELEMENT = WRAPPER.firstChild;\n element.parentNode.replaceChild(NEW_ELEMENT, element);\n return NEW_ELEMENT;\n }\n}\n\nfunction getImage(node) {\n const IMAGE = node.querySelector('img');\n return {\n node: IMAGE || null,\n src: IMAGE ? IMAGE.getAttribute('src') : null,\n };\n}\n\nfunction getPaddingTop(node, fallback = '56.25%') {\n // 56.25% is a 16:9 in percent\n\n if (node.dataset.ratio) {\n return node.dataset.ratio;\n }\n\n const IMAGE = getImage(node);\n if (!IMAGE.node) {\n return fallback;\n }\n const RATIO = (parseInt(IMAGE.node.naturalHeight) / parseInt(IMAGE.node.naturalWidth)) * 100;\n if (typeof RATIO != 'number') {\n return fallback;\n }\n return RATIO + '%';\n}\n\nfunction write(link, playClass, type) {\n checkGdpr(link, type, function () {\n const IFRAME = markup(link);\n const IMAGE = getImage(link);\n if (!IFRAME) {\n return;\n }\n const ELEMENT = replace(link, 'div');\n ELEMENT.classList.add(playClass);\n ELEMENT.style.paddingTop = getPaddingTop(link);\n ELEMENT.innerHTML = IFRAME;\n\n if (IMAGE.src) {\n ELEMENT.setAttribute('data-img', IMAGE.src);\n }\n triggerEvent({\n type: type,\n style: 'inline',\n title: getAriaLabel(link),\n src: link.dataset.embed,\n });\n });\n}\n\nfunction checkGdpr(element, type, callback) {\n const DATASET = element.dataset;\n const GDPR = DATASET.gdpr;\n\n if (!GDPR) {\n return callback();\n }\n\n const STORAGE_KEY = `jonnittoprettyembed_gdpr_${type}`;\n\n if (LOCAL_STORAGE[STORAGE_KEY] === 'true') {\n element.removeAttribute('data-gdpr');\n return callback();\n }\n\n if (DATASET.gdprOpen) {\n return;\n }\n\n GDPR_OPEN[type] = true;\n\n const WRAPPER = document.createElement('object');\n WRAPPER.classList.add(GDPR_CLASS);\n WRAPPER.classList.add(`${GDPR_CLASS}--${type}`);\n\n const PANEL = document.createElement('div');\n PANEL.classList.add(`${GDPR_CLASS}-panel`);\n PANEL.innerHTML = `

${GDPR}

`;\n\n const BUTTON_CONTAINER = document.createElement('div');\n BUTTON_CONTAINER.innerHTML = ``;\n\n const ACCEPT_BUTTON = document.createElement('button');\n ACCEPT_BUTTON.type = 'button';\n ACCEPT_BUTTON.classList.add(GDPR_BUTTON_CLASS);\n ACCEPT_BUTTON.classList.add(`${GDPR_BUTTON_CLASS}--accept`);\n ACCEPT_BUTTON.innerText = DATASET.gdprAccept || 'OK';\n\n BUTTON_CONTAINER.appendChild(ACCEPT_BUTTON);\n PANEL.appendChild(BUTTON_CONTAINER);\n WRAPPER.appendChild(PANEL);\n element.appendChild(WRAPPER);\n\n DATASET.gdprOpen = 'true';\n element.setAttribute('data-gdpr-open', true);\n ACCEPT_BUTTON.addEventListener('click', function (event) {\n event.stopPropagation();\n event.preventDefault();\n GDPR_OPEN[type] = false;\n LOCAL_STORAGE[STORAGE_KEY] = 'true';\n [...document.querySelectorAll(`.${GDPR_CLASS}--${type}`)].forEach((el) => {\n el.remove();\n });\n callback();\n });\n}\n\naddEvent(`.${GDPR_BUTTON_CLASS}--external`, function (event) {\n event.stopPropagation();\n event.preventDefault();\n const DATASET = event.target.dataset;\n const RATIO = parseFloat(DATASET.ratio || '56.25%');\n const WIDTH = Math.min(window.innerWidth, 1000);\n const HEIGHT = WIDTH * (RATIO / 100);\n const LEFT = (screen.width - WIDTH) / 2;\n const TOP = (screen.height - HEIGHT) / 2;\n window.open(\n DATASET.url,\n '_blank',\n `noopener=yes,directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=${WIDTH},height=${HEIGHT},left=${LEFT},top=${TOP}`\n );\n});\n\nfunction restore(element, playClass) {\n const IMAGE = element.getAttribute('data-img') || false;\n if (!IMAGE) {\n return;\n }\n element.classList.remove(playClass);\n element.removeAttribute('style');\n element.innerHTML = ``;\n replace(element, 'a');\n}\n\nfunction lightbox(type) {\n if (openexternal.includes(type)) {\n return;\n }\n\n const SELECTOR = `a.${BASE}--${type}.${BASE}--lightbox`;\n\n lightboxHelper.init(SELECTOR, function (event) {\n const element = this;\n const HTML = markup(element);\n if (!HTML) {\n return;\n }\n event.preventDefault();\n checkGdpr(element, type, function () {\n const PADDING_TOP = getPaddingTop(element);\n lightboxHelper.get([type, 'iframe'], PADDING_TOP).innerHTML = HTML;\n lightboxHelper.show(() => {\n const dataset = element.dataset;\n if (!dataset.init) {\n dataset.init = true;\n triggerEvent({\n type: type,\n style: 'lightbox',\n title: getAriaLabel(element),\n src: dataset.embed,\n });\n }\n });\n });\n });\n}\n\nfunction embed(type) {\n if (openexternal.includes(type)) {\n return;\n }\n const SELECTOR = `a.${BASE}--${type}.${BASE}--inline`;\n const PLAY_CLASS = `${BASE}--play`;\n\n addEvent(SELECTOR, function (event) {\n event.preventDefault();\n write(this, PLAY_CLASS, type);\n });\n}\n\nexport { markup, replace, write, restore, lightbox, embed };\n","function fixPreview(img) {\n let src = img.getAttribute('src');\n if (img.naturalHeight <= 90 && img.naturalWidth <= 120 && src.indexOf('/default.jpg') == -1) {\n src = src\n .replace('mqdefault', 'default')\n .replace('hqdefault', 'mqdefault')\n .replace('sddefault', 'hqdefault')\n .replace('maxresdefault', 'sddefault');\n img.setAttribute('src', src);\n setTimeout(() => {\n img.onload = () => {\n fixPreview(img);\n };\n }, 10);\n setTimeout(() => {\n fixPreview(img);\n }, 5000);\n }\n}\n\nfunction fixPreviews(images) {\n if (typeof images === 'undefined') {\n images = document.querySelectorAll('img.jonnitto-prettyembed__youtube-preview');\n }\n for (let i = images.length - 1; i >= 0; i--) {\n fixPreview(images[i]);\n }\n}\n\nwindow.addEventListener('load', () => {\n fixPreviews();\n});\n","import { embed } from '../Helper/iFrame';\n\nembed('vimeo');\n","import { lightbox } from '../Helper/iFrame';\n\nlightbox('vimeo');\n","import { embed } from '../Helper/iFrame';\n\nembed('youtube');\n","import { lightbox } from '../Helper/iFrame';\n\nlightbox('youtube');\n"],"names":["BASE","INIT_CLASS","concat","SLIM_CLASS","PLAY_CLASS","VIDEOS","Array","from","document","querySelectorAll","AUDIOS","ELEMENTS","init","element","autoplay","arguments","length","undefined","callback","CLASS_LIST","parentNode","classList","contains","hasAttribute","setAttribute","add","addEventListener","play","pause","SRC","getAttribute","canPlayType","src","addClassAndPlay","Hls","HLS_SCRIPT","createElement","head","appendChild","setTimeout","loadHls","current","forEach","remove","isSupported","HLS","loadSource","attachMedia","triggerEvent","options","event","window","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","target","elements","matches","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","call","addEvent","documentElement","ELEMENT","ancestor","parentElement","nodeType","closest","getAriaLabel","node","SOURCE","type","style","querySelector","_this","this","preventDefault","title","HTML_ELEMENT","BODY_ELEMENT","body","BASE_CLASS","LIGHTBOX_CLASS","ID","VISIBLE_CLASS","VISIBLE_CLASS_LIST","INNER_CLASS","CLOSE_CLASS","CONTENT_CLASS","LIGHTBOX","className","innerHTML","lighboxContent","timeout","resetContent","removeAttribute","get","paddingTop","getElementById","_typeof","item","show","clearTimeout","closeLighbox","stopImmediatePropagation","keyCode","lightbox","video","VIDEO_NODE","cloneNode","dataset","controls","children","value","LOCAL_STORAGE","localStorage","GDPR_CLASS","GDPR_BUTTON_CLASS","openexternal","currentScript","split","markup","DATA","FULLSCREEN","fs","embed","getImage","IMAGE","getPaddingTop","fallback","ratio","RATIO","parseInt","naturalHeight","naturalWidth","write","link","playClass","checkGdpr","IFRAME","tagName","ORIGINAL_ELEMENT","ORIGINAL_TAG","START_RX","RegExp","END_RX","START_SUBST","END_SUBST","WRAPPER","outerHTML","replace","NEW_ELEMENT","firstChild","replaceChild","DATASET","GDPR","gdpr","STORAGE_KEY","gdprOpen","PANEL","BUTTON_CONTAINER","gdprNewWindow","ACCEPT_BUTTON","innerText","gdprAccept","stopPropagation","_toConsumableArray","el","includes","lightboxHelper","HTML","PADDING_TOP","SELECTOR","fixPreview","img","indexOf","onload","parseFloat","WIDTH","Math","min","innerWidth","HEIGHT","LEFT","screen","width","TOP","height","open","url","images","i","fixPreviews"],"mappings":"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"}