{"version":3,"file":"component-mkVideoComponent.chunk.js","mappings":"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","sources":["webpack:///./assets/src/scripts/base/baseComponent.ts","webpack:///./assets/src/scripts/base/commonInterface.ts","webpack:///./assets/src/scripts/components/mkVideoComponent.ts","webpack:///./assets/src/scripts/components/spinner.ts","webpack:///./assets/src/scripts/constants/styles.ts","webpack:///./assets/src/scripts/utils/focusableElementUtils.ts"],"sourcesContent":["import deepFreeze from '../utils/freeze';\nimport CommonInterface from './commonInterface';\nimport Bean from 'bean';\nexport default class BaseComponent extends CommonInterface {\n /**\n *\n * constructor\n *\n * @param {Element} element\n */\n constructor(element) {\n super();\n this.observer = new IntersectionObserver(entries => {\n if (entries[0].isIntersecting) {\n const items = [...entries[0].target.querySelectorAll('[data-animated=\"false\"]')];\n items.forEach((item, i) => {\n setTimeout(() => {\n item.setAttribute('data-animated', 'true');\n }, 300 * i);\n });\n this.observer.unobserve(entries[0].target);\n }\n }, {\n threshold: 0.5\n });\n this._componentElement = element;\n this._componentElement.setAttribute('data-component-init', 'true');\n this.observer.observe(this._componentElement);\n }\n /**\n * @returns {HTMLElement}\n */\n get $el() {\n return this._componentElement;\n }\n get $options() {\n const compOptions = {};\n const options = Object.assign({}, this.$el.dataset);\n const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n optionsEntires.forEach((entry) => {\n const cleanEntry = BaseComponent.cleanOptionKey(entry);\n let optionValue;\n if (options[entry].includes('{') && options[entry].includes('}')) {\n optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n }\n else {\n optionValue = BaseComponent.convertType(options[entry]);\n }\n compOptions[cleanEntry] = optionValue;\n });\n return deepFreeze(compOptions);\n }\n get COMPONENT_NAME() {\n return this.__proto__.constructor.name;\n }\n static convertType(option) {\n let optionReturn;\n switch (option) {\n case 'false':\n optionReturn = false;\n break;\n case 'true':\n optionReturn = true;\n break;\n case 'null':\n optionReturn = null;\n break;\n default:\n optionReturn = option;\n break;\n }\n return optionReturn;\n }\n static cleanOptionKey(key) {\n const str = key.replace('option', '');\n return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n }\n /**\n *\n * $on\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n * @param {Array|String|Element} [elements = null]\n */\n $on(events, cb, element = this.$el, elements = null) {\n if (!element || !events || !cb)\n return;\n if (!elements) {\n Bean.on(element, events, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\n });\n }\n else {\n Bean.on(element, events, elements, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\n });\n }\n }\n /**\n *\n * $one\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n */\n $one(events, cb, element = this.$el) {\n Bean.one(element, events, cb);\n }\n /**\n *\n * $off\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $off(events, element = this.$el) {\n Bean.off(element, events);\n }\n /**\n *\n * $fire\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $fire(events, element = this.$el) {\n Bean.fire(element, events);\n }\n /**\n *\n * @param {HTMLElement} [container]\n */\n loading(container, message = '') {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n container: container || this.$el,\n message\n });\n }\n /**\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n * @param {String} [icon]\n * @param {Boolean} [error=false]\n */\n endLoading(container, message, icon, error = false, time) {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n container: container || this.$el,\n message,\n icon,\n error,\n time\n });\n }\n}\n","import config from 'gia/config';\nimport EventBus from '../libs/eventBus';\nimport CustomMessages from '../constants/customMessages';\nimport { getFirstFocusable, getAllFocusableElements } from '../utils/focusableElementUtils';\nexport default class CommonInterface {\n constructor() {\n config.set('log', true);\n this._grabMessages();\n }\n get CUSTOM_MESSAGES() {\n return CustomMessages;\n }\n get Messages() {\n return {};\n }\n _checkMessages() {\n for (const message in this.Messages) {\n if (window.eventQueue.get(message)) {\n const ref = this.Messages[message].bind(this);\n window.eventQueue.get(message).map((payload) => {\n ref(payload);\n });\n window.eventQueue.delete(message);\n }\n }\n }\n _grabMessages() {\n this._messages = {};\n for (const message in this.Messages) {\n if (this.Messages[message]) {\n const __ref__ = this.Messages[message].bind(this);\n this._messages[message] = __ref__;\n this.GRAB(message, __ref__);\n }\n }\n }\n _ungrabMessages() {\n for (const message in this._messages) {\n this.UNGRAB(message, this._messages[message]);\n }\n }\n objectIsEmpty(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key))\n return false;\n }\n return true;\n }\n /**\n *\n * EMIT\n *\n * @param {string} message\n * @param {Object} payload\n */\n EMIT(message, payload) {\n return EventBus.emit(message, payload);\n }\n /**\n *\n * GRAB\n *\n * @param {string} message\n * @param {Function} callBack\n */\n GRAB(message, callBack) {\n if (!callBack)\n return;\n EventBus.on(message, callBack);\n }\n /**\n *\n * UNGRAB\n *\n * @param {string} message\n * @param {Function} callBack\n */\n UNGRAB(message, callBack) {\n if (!callBack)\n return;\n EventBus.off(message, callBack);\n }\n getFirstFocusable(parent) {\n return getFirstFocusable(parent);\n }\n getFocusableElements(parent) {\n return getAllFocusableElements(parent);\n }\n _destroy() {\n this._ungrabMessages();\n }\n}\n","import BaseComponent from '../base/baseComponent';\nimport { MQ } from '../constants/styles';\nimport spinner from '../components/spinner'; // used in extended components\nexport default class mkVideoComponent extends BaseComponent {\n constructor(element) {\n super(element);\n this.spinner = spinner;\n this.initplayer();\n this.setPositionPlayButton();\n }\n get SELECTORS() {\n return {};\n }\n initplayer() {\n this.spinner.set();\n let _this = this;\n //@ts-ignore --> Function of MKPlayer is diclared in head scripts\n let mkplayer = window.mkplayer;\n let isDesktop = !!window.matchMedia(`(min-width: ${MQ.tabletPortrait}px)`).matches;\n let breakpointMedia = this.$options.mediaDesktop !== 'undefined' && isDesktop ? this.$options.mediaDesktop : this.$options.mediaMobile;\n let mediaHls = '';\n let mediaDash = '';\n if (breakpointMedia.includes('format=m3u8')) {\n mediaHls = breakpointMedia;\n }\n else if (breakpointMedia.includes('format=mpd')) {\n mediaDash = breakpointMedia;\n }\n const videoContainer = this.$el.querySelector(\"#video-container\");\n const sourceConfig = {\n title: '',\n description: '',\n poster: _this.$options.coverimage || '',\n hls: mediaHls || '',\n dash: mediaDash || '',\n };\n const playerConfig = {\n key: _this.$options.apikey,\n playback: {\n muted: _this.$options.muted,\n autoplay: _this.$options.autoplay,\n },\n ui: _this.$options.ui || false,\n // Subscribe to player events\n events: {\n [mkplayer.MKPlayerEvent.Error]: (event) => {\n console.log(\"Encountered player error: \", JSON.stringify(event));\n }\n }\n };\n // 3. Initialize the player with video container and player configuration\n var player = new mkplayer.MKPlayer(videoContainer, playerConfig);\n player.on(mkplayer.MKPlayerEvent.SourceLoaded, () => {\n this.spinner.unset();\n });\n if (_this.$options.loop) {\n player.on(mkplayer.MKPlayerEvent.PlaybackFinished, () => {\n player.play();\n });\n }\n player.load(sourceConfig)\n .then(() => {\n console.log(\"Source loaded successfull!\");\n })\n .catch((error) => {\n console.error(\"An error occurred while loading the source!\");\n });\n // PLAY BUTTON LOGIC\n let playButton = this.$el.closest('.video-wrapper') && this.$el.closest('.video-wrapper').querySelector('button.play-button');\n const playLabel = playButton && playButton.getAttribute(\"data-labelplay\") || 'play';\n const pauseLabel = playButton && playButton.getAttribute(\"data-labelpause\") || 'pause';\n if (playButton) {\n playButton.addEventListener(\"click\", function () {\n //@ts-ignore\n if (playButton.classList.contains(\"is-pause\")) {\n player.pause();\n }\n //@ts-ignore\n if (playButton.classList.contains(\"is-play\")) {\n player.play();\n }\n });\n player.on(mkplayer.MKPlayerEvent.Play, () => {\n playButton.classList.add(\"is-pause\");\n playButton.classList.remove(\"is-play\");\n playButton.setAttribute(\"aria-label\", playLabel);\n playButton.setAttribute(\"aria-pressed\", 'true');\n });\n player.on(mkplayer.MKPlayerEvent.Paused, () => {\n playButton.classList.remove(\"is-pause\");\n playButton.classList.add(\"is-play\");\n playButton.setAttribute(\"aria-label\", pauseLabel);\n playButton.setAttribute(\"aria-pressed\", 'false');\n });\n }\n }\n setPositionPlayButton() {\n //Gestione bottone video play/pause in caso di più cta allineate a sx\n //Si imposta dinamicamente lo style bottom prendendo l'altezza del ctawrapper\n let fullwidtbanner = this.$el.closest('.fullwidthbanner');\n if (fullwidtbanner) {\n let fullwidtbanneralign = this.$el.closest('.fullwidthbanner').getAttribute('data-ctaalign');\n if (fullwidtbanneralign == \"left\") {\n let ctawrapper = fullwidtbanner.querySelector('.fullwidthbanner--ctawrapper');\n let ctawrapperheight = ctawrapper.clientHeight + \"px\";\n let playbutton = this.$el.closest('.fullwidthbanner').querySelector('.play-button');\n playbutton.style.bottom = ctawrapperheight;\n }\n }\n }\n}\n","const spinner = {\n set: () => {\n spinner.unset();\n document.body.insertAdjacentHTML('beforeend', `<div id=\"html-spinner\" class=\"spinner full visible\">\n <span class=\"spinner__dot spinner__dot--string_light\"></span>\n <span class=\"spinner__dot spinner__dot--string_dark\"></span>\n </div>`);\n },\n unset: () => {\n if (document.getElementById('html-spinner') !== null) {\n document.getElementById('html-spinner').remove();\n }\n },\n};\nexport default spinner;\n","export const MQ = {\n mobile: 0,\n tabletPortrait: 768,\n tabletLandscape: 1024,\n desktop: 1280\n};\n","const focusableSelectors = 'button, [href]:not([aria-hidden=\"true\"]), input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]';\nexport const getFirstFocusable = (parent) => parent.querySelector(focusableSelectors);\nexport const getAllFocusableElements = (parent) => parent.querySelectorAll(focusableSelectors);\n"],"names":["BaseComponent","constructor","config","this","_grabMessages","CUSTOM_MESSAGES","Messages","_checkMessages","message","window","eventQueue","get","ref","bind","map","payload","delete","_messages","__ref__","GRAB","_ungrabMessages","UNGRAB","objectIsEmpty","object","key","hasOwnProperty","EMIT","callBack","getFirstFocusable","parent","getFocusableElements","_destroy","element","super","observer","IntersectionObserver","entries","isIntersecting","target","querySelectorAll","forEach","item","i","setTimeout","setAttribute","unobserve","threshold","_componentElement","observe","$el","$options","compOptions","options","Object","assign","dataset","keys","filter","entry","includes","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","__proto__","name","static","option","optionReturn","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","e","stopPropagation","$one","$off","$fire","loading","container","LOADER_EVENTS","show","endLoading","icon","error","time","hide","mkVideoComponent","spinner","initplayer","setPositionPlayButton","SELECTORS","set","_this","mkplayer","isDesktop","matchMedia","MQ","matches","breakpointMedia","mediaDesktop","mediaMobile","mediaHls","mediaDash","videoContainer","querySelector","sourceConfig","title","description","poster","coverimage","hls","dash","playerConfig","apikey","playback","muted","autoplay","ui","MKPlayerEvent","Error","event","console","log","stringify","player","MKPlayer","on","SourceLoaded","unset","loop","PlaybackFinished","play","load","then","catch","playButton","closest","playLabel","getAttribute","pauseLabel","addEventListener","classList","contains","pause","Play","add","remove","Paused","fullwidtbanner","ctawrapperheight","clientHeight","style","bottom","document","body","insertAdjacentHTML","getElementById","mobile","tabletPortrait","tabletLandscape","desktop","focusableSelectors","getAllFocusableElements"],"sourceRoot":""}