{"version":3,"file":"2393.310c188922e04e16a0cb.js","mappings":"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","sources":["webpack://@dgtls-pub/wolf-sb-integration/./src/global/js/DomServices.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/global/js/InputsServices.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/global/js/ControllerBase.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/molecules/m-product-gallery/m-product-gallery.controller.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/molecules/m-video-overlay/m-video-overlay.data.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/organisms/o-video/o-video.data.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/molecules/m-product-gallery/m-product-gallery.data.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/atoms/a-energy-badge/a-energy-badge.data.ts","webpack://@dgtls-pub/wolf-sb-integration/./src/wolf/components/molecules/m-product-gallery/m-product-gallery.events.ts","webpack://@dgtls-pub/wolf-sb-integration/./node_modules/uuid/dist/esm-browser/rng.js","webpack://@dgtls-pub/wolf-sb-integration/./node_modules/uuid/dist/esm-browser/regex.js","webpack://@dgtls-pub/wolf-sb-integration/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://@dgtls-pub/wolf-sb-integration/./node_modules/uuid/dist/esm-browser/validate.js","webpack://@dgtls-pub/wolf-sb-integration/./node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["import { IDomServices } from 'global/interfaces/controller.interface';\nimport { Subject } from 'rxjs';\n\nexport class DomServices implements IDomServices {\n\tprotected $element: HTMLElement;\n\tprotected $references: Record;\n\tonDomElementChanged: Subject = new Subject();\n\n\tconstructor(element: HTMLElement, references: Record) {\n\t\tthis.$references = references;\n\t\tthis.$element = element;\n\t}\n\n\tstatic collectReferences(\n\t\telement: HTMLElement,\n\t\tignoredReferences: string[],\n\t\tincludedReferences: string[],\n\t): Partial> {\n\t\tconst refs: Partial> = {};\n\n\t\tArray.from(element.querySelectorAll('[data-ref]')).forEach((el: HTMLElement) => {\n\t\t\tlet referenceName: string = '';\n\t\t\tif (el.dataset.ref) {\n\t\t\t\treferenceName = el.dataset.ref;\n\t\t\t}\n\n\t\t\t// skip ignored references\n\t\t\tif (ignoredReferences.includes(referenceName)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (referenceName) {\n\t\t\t\t// if the included list has items, only include these references, otherwise consider all\n\t\t\t\tif (includedReferences.length > 0) {\n\t\t\t\t\tif (includedReferences.includes(referenceName)) {\n\t\t\t\t\t\trefs[referenceName] = el;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(refs, referenceName)) {\n\t\t\t\t\t\tif (window.location.hostname === 'localhost') {\n\t\t\t\t\t\t\tconsole.warn(`A reference called '${referenceName}' has already been registered in ${this.constructor.name}!\\n Element:`, element);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trefs[referenceName] = el;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn refs;\n\t}\n\n\tgetRef(ref: string): T | undefined {\n\t\tif (this.$references) {\n\t\t\treturn Object.prototype.hasOwnProperty.call(this.$references, ref) ? (this.$references[ref] as T) : undefined;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tparseStringToHtml = (htmlAsString: string): void | ChildNode => {\n\t\tconst parsedNode = new DOMParser().parseFromString(htmlAsString, 'text/html').body.firstChild;\n\t\tif (parsedNode) return parsedNode;\n\t};\n\n\trenderDomElement = (ref: string, html: string, renderOnParent: boolean = false): void => {\n\t\tconst refExists = this.$references ? Object.prototype.hasOwnProperty.call(this.$references, ref) : undefined;\n\t\tif (renderOnParent) {\n\t\t\tthis.$element.innerHTML = html;\n\t\t\tthis.domElementChanged(ref);\n\t\t} else if (this.$references && refExists) {\n\t\t\t(this.$references as any)[ref].innerHTML = html;\n\t\t\tthis.domElementChanged(ref);\n\t\t} else {\n\t\t\tconsole.warn('DOM ref does not exist!', ref);\n\t\t}\n\t};\n\n\tappendRawHtmlToDomElement = (\n\t\tnode: HTMLElement,\n\t\thtmlAsString: string,\n\t\tposition: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend' = 'afterend',\n\t): void | ChildNode => {\n\t\tconst htmlNode = this.parseStringToHtml(htmlAsString);\n\t\tnode.insertAdjacentElement(position, htmlNode as Element);\n\t\tif (htmlNode) {\n\t\t\treturn htmlNode;\n\t\t}\n\t};\n\n\treplaceLastChildElementWithRawHtml = (ref: string, htmlAsString: string): void | ChildNode => {\n\t\tconst refExists = this.$references ? Object.prototype.hasOwnProperty.call(this.$references, ref) : undefined;\n\t\tif (refExists) {\n\t\t\tconst htmlNode = this.parseStringToHtml(htmlAsString);\n\t\t\tconst lastNode = this.$references[ref].childNodes[this.$references[ref].childNodes.length - 1];\n\t\t\t(this.$references as any)[ref].replaceChild(htmlNode, lastNode);\n\t\t\tthis.domElementChanged(ref);\n\t\t\tif (htmlNode) {\n\t\t\t\treturn htmlNode;\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn('DOM ref does not exist!', ref);\n\t\t}\n\t};\n\n\ttoggleElementState(control: HTMLElement, newState: Array<'enable' | 'disable' | 'show' | 'hide' | 'check' | 'uncheck'>): void {\n\t\tif (!control) return;\n\t\tnewState &&\n\t\t\tnewState.forEach((state) => {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'enable': {\n\t\t\t\t\t\tcontrol.removeAttribute('disabled');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'disable': {\n\t\t\t\t\t\tcontrol.setAttribute('disabled', 'true');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'show': {\n\t\t\t\t\t\tcontrol.removeAttribute('hidden');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'hide': {\n\t\t\t\t\t\tcontrol.setAttribute('hidden', 'true');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'uncheck': {\n\t\t\t\t\t\tcontrol.removeAttribute('checked');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'check': {\n\t\t\t\t\t\tcontrol.setAttribute('checked', 'true');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tdomElementChanged = (reference: string): void => {\n\t\tthis.onDomElementChanged.next(reference);\n\t};\n\n\tparseDOMScriptTag = (elementId: string): TJSON => {\n\t\tconst data = document.getElementById(elementId) as HTMLScriptElement;\n\t\ttry {\n\t\t\tconst out = JSON.parse(data.innerText);\n\t\t\treturn out as TJSON;\n\t\t} catch (error) {\n\t\t\tconsole.warn('Cannot parse component form config', error);\n\t\t}\n\t\treturn {} as TJSON;\n\t};\n\n\trenderDomElementInHTMLElement(element: HTMLElement, html: string): void {\n\t\telement.innerHTML = html;\n\t}\n}\n","import { IInputServicesBase } from 'global/interfaces/controller.interface';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport enum InputClasses {\n\terrorClass = 'uk-form-danger',\n\thiddenClass = 'uk-hidden',\n}\nexport class InputServices implements IInputServicesBase {\n\tprivate observedInputs: Record = {};\n\n\taddFocusToInput({ element, inputName }: { element: HTMLElement; inputName: string }): void {\n\t\tconst input = element?.querySelector(`input[name='${inputName}']`);\n\t\tif (input) (input as HTMLInputElement).focus();\n\t}\n\n\tobserveElementEvents(\n\t\telement: HTMLInputElement | HTMLSelectElement | HTMLButtonElement,\n\t\tinputEvent: 'input' | 'change' | 'click',\n\t\tonChange: (value: string, event: InputEvent) => any,\n\t): void {\n\t\tconst inputToObserve$ = fromEvent(element, inputEvent);\n\n\t\tthis.observedInputs[element.name] = inputToObserve$.pipe(map(this.mapInputEvent)).subscribe(({ value, event }) =>\n\t\t\tthis.subscribeInputWithErrorRemovalOnInputChange({\n\t\t\t\tvalue,\n\t\t\t\tevent,\n\t\t\t\tonChange,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/**\n\t * This method is in charge of adding error classes to the correct element within an input group on a defined element\n\t * @param {HTMLElement | null} element - The element to update\n\t * @param {Record} errors - The errors to manage\n\t */\n\taddErrorsToFieldset({\n\t\telement,\n\t\terrors,\n\t\tonErrorsUpdated,\n\t}: {\n\t\telement: HTMLElement | null;\n\t\terrors: Record;\n\t\tonErrorsUpdated?: () => void;\n\t}): void {\n\t\tif (element) {\n\t\t\tObject.keys(errors).forEach((inputName) => {\n\t\t\t\tconst input = element?.querySelector(`input[name='${inputName}']`) as HTMLElement;\n\n\t\t\t\tif (input) {\n\t\t\t\t\tconst errorMessage = errors[inputName] || '';\n\t\t\t\t\tthis.addOrRemoveFormValidationError('SHOW_VALIDATION_ERROR', input, errorMessage);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (onErrorsUpdated) onErrorsUpdated();\n\t\t\tif (errors) {\n\t\t\t\tconst inputNameToFocus = Object.keys(errors)[0];\n\t\t\t\tconst firstErrorElement = element?.querySelector(`input[name='${inputNameToFocus}']`);\n\t\t\t\tif (firstErrorElement) firstErrorElement.scrollIntoView();\n\t\t\t\tif (inputNameToFocus) this.addFocusToInput({ element, inputName: inputNameToFocus });\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`ADD ERRORS TO FIELDSET: Looks like the element you want to update doesn't exist`);\n\t\t}\n\t}\n\n\taddOrRemoveFormValidationError(showOrHide: 'SHOW_VALIDATION_ERROR' | 'HIDE_VALIDATION_ERROR', input: HTMLElement, errorMessage: string = ''): void {\n\t\tif (!input) return;\n\n\t\tconst label = input.previousElementSibling;\n\t\tconst errorMessageContainer = input.nextElementSibling;\n\n\t\tif (showOrHide === 'SHOW_VALIDATION_ERROR') {\n\t\t\t// add error class to label\n\t\t\tif (label && label.classList) label.classList.add(InputClasses.errorClass);\n\t\t\t// add error class to input\n\t\t\tinput.classList.add(InputClasses.errorClass);\n\t\t\t// if there's an error message, inject it, show the div and add an error class\n\t\t\tif (errorMessageContainer) {\n\t\t\t\terrorMessageContainer.classList.add(InputClasses.errorClass);\n\t\t\t\terrorMessageContainer.classList.remove(InputClasses.hiddenClass);\n\t\t\t\terrorMessageContainer.innerHTML = errorMessage;\n\t\t\t}\n\t\t} else if (showOrHide === 'HIDE_VALIDATION_ERROR') {\n\t\t\t// remove error class from label\n\t\t\tif (label && label.classList) label.classList.remove(InputClasses.errorClass);\n\t\t\t// remove error class from input\n\t\t\tinput.classList.remove(InputClasses.errorClass);\n\t\t\t// remove error message and class\n\t\t\tif (errorMessageContainer) {\n\t\t\t\terrorMessageContainer.classList.remove(InputClasses.errorClass);\n\t\t\t\terrorMessageContainer.classList.add(InputClasses.hiddenClass);\n\t\t\t\terrorMessageContainer.innerHTML = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tsubscribeInputWithErrorRemovalOnInputChange = ({\n\t\tvalue,\n\t\tevent,\n\t\tonChange,\n\t}: {\n\t\tvalue: string;\n\t\tevent: InputEvent;\n\t\tonChange?: (value: string, event: InputEvent) => void;\n\t}): void => {\n\t\tconst castEvent = event.target as HTMLElement;\n\n\t\tconst label = castEvent && castEvent.previousElementSibling;\n\t\tif (label && label.classList.contains(InputClasses.errorClass)) label.classList.remove(InputClasses.errorClass);\n\n\t\tconst input = event.target as HTMLElement;\n\t\tif (input && input.classList.contains(InputClasses.errorClass)) input.classList.remove(InputClasses.errorClass);\n\n\t\tconst errorMessage = castEvent && castEvent.nextElementSibling;\n\t\tif (errorMessage) {\n\t\t\terrorMessage.classList.remove(InputClasses.errorClass);\n\t\t\terrorMessage.classList.add('uk-hidden');\n\t\t}\n\n\t\tif (onChange) onChange(value, event);\n\t};\n\n\tmapInputEvent = (event: InputEvent): { value: string; event: InputEvent } => {\n\t\treturn { value: (event.target as HTMLInputElement | HTMLSelectElement).value, event };\n\t};\n}\n","import { IControllerBase, IDomServices } from 'global/interfaces/controller.interface';\nimport { DomServices } from './DomServices';\nimport { InputServices } from './InputsServices';\nexport default class ControllerBase = Record> implements IControllerBase {\n\treadonly $element: HTMLElement;\n\treadonly $references: Record;\n\treadonly ignoredReferences: string[];\n\treadonly includedReferences: string[];\n\treadonly disableReferenceCollection: boolean;\n\t/** See {@link DomServices} */\n\treadonly domUtils: IDomServices;\n\t/** See {@link InputServices} */\n\treadonly inputUtils: InputServices;\n\n\tconstructor(element: HTMLElement, ignoredReferences?: string[], includedReferences?: string[], disableReferenceCollection?: boolean) {\n\t\tthis.$element = element;\n\t\tthis.ignoredReferences = ignoredReferences || [];\n\t\tthis.includedReferences = includedReferences || [];\n\t\tthis.disableReferenceCollection = disableReferenceCollection || false;\n\n\t\tif (!this.disableReferenceCollection) {\n\t\t\tconst references = DomServices.collectReferences(this.$element, this.ignoredReferences, this.includedReferences);\n\t\t\tif (references && Object.keys(references).length > 0) {\n\t\t\t\tthis.$references = references as Record;\n\t\t\t} else {\n\t\t\t\tthis.$references = {} as Record;\n\t\t\t}\n\t\t}\n\n\t\tthis.domUtils = new DomServices(this.$element, this.$references);\n\t\tthis.inputUtils = new InputServices();\n\t}\n\n\tdispatchCustomEvent(\n\t\tname: string,\n\t\tdetail: T,\n\t\tbubbles: boolean = false,\n\t\tdispatchOnWindow: boolean = false,\n\t\tdispatchOnSpecificElement?: HTMLElement,\n\t): void {\n\t\tconst customEvent = new CustomEvent(name, { detail: detail, bubbles: bubbles });\n\t\tif (true === dispatchOnWindow) {\n\t\t\twindow.dispatchEvent(customEvent);\n\t\t} else if (dispatchOnSpecificElement) {\n\t\t\tdispatchOnSpecificElement.dispatchEvent(customEvent);\n\t\t} else {\n\t\t\tthis.$element.dispatchEvent(customEvent);\n\t\t}\n\t}\n}\n","import ControllerBase from '../../../../global/js/ControllerBase';\nimport { ProductGalleryItemTypes } from './m-product-gallery.data';\nimport { MoleculeProductGalleryEvents, MoleculeProductGalleryEventTypes } from './m-product-gallery.events';\n\ninterface ComponentRefs {\n\tgalleryWrapper: 'galleryWrapper';\n\tsliderWrapper: 'sliderWrapper';\n\tsliderList: 'sliderList';\n\topenModalButton: 'openModalButton';\n}\n\nexport default class ControllerProductGallery extends ControllerBase {\n\tprivate static readonly componentRefs: ComponentRefs = {\n\t\tgalleryWrapper: 'galleryWrapper',\n\t\tsliderWrapper: 'sliderWrapper',\n\t\tsliderList: 'sliderList',\n\t\topenModalButton: 'openModalButton',\n\t};\n\tprivate galleryWrapper: HTMLDivElement;\n\tprivate galleryItems: HTMLDivElement[] = [];\n\tprivate currentThumbIndexSelected: number;\n\tprivate sliderWrapper: HTMLDivElement;\n\tprivate sliderList: HTMLUListElement;\n\tprivate slides: HTMLAnchorElement[] = [];\n\tprivate sliderWrapperWidth = 0 as number;\n\tprivate sliderListWidth = 0 as number;\n\tprivate sliderListWidth2 = 0 as number;\n\tprivate sliderListElements = [] as number[];\n\tprivate sliderListElements2 = [] as number[];\n\tprivate openModalButton: HTMLButtonElement;\n\tprivate sliderWrapperHeight = 0 as number;\n\tprivate modalProducGallery: HTMLDivElement;\n\tprivate sliderList2: HTMLUListElement;\n\n\tconstructor(element: HTMLElement) {\n\t\tsuper(element, [], Object.values(ControllerProductGallery.componentRefs));\n\n\t\tthis.galleryWrapper = this.$references.galleryWrapper as HTMLDivElement;\n\t\tif (this.galleryWrapper) {\n\t\t\tthis.galleryItems = Array.from(this.galleryWrapper.querySelectorAll('div.js-focus'));\n\t\t}\n\n\t\tthis.sliderWrapper = this.$references.sliderWrapper as HTMLDivElement;\n\t\tif (this.sliderWrapper) {\n\t\t\tthis.slides = Array.from(this.sliderWrapper.querySelectorAll('ul li a.js-thumb'));\n\t\t\tthis.sliderWrapperWidth = this.sliderWrapper.clientWidth;\n\t\t\tthis.sliderWrapperHeight = this.sliderWrapper.clientHeight;\n\t\t}\n\n\t\tthis.sliderList = this.$references.sliderList as HTMLUListElement;\n\n\t\tthis.init();\n\t\tthis.galleryPositionHandler();\n\n\t\tthis.openModalButton = document.querySelector('a[data-ref=\"openModalButton\"]') as HTMLButtonElement;\n\t\tthis.openModalButton?.addEventListener('click', () => this.galleryPositionHandlerFullwidth());\n\t\tthis.galleryPositionHandlerFullwidth();\n\t}\n\n\tprivate init(): void {\n\t\tthis.observeSlideThumbClicks();\n\t}\n\n\tprivate observeSlideThumbClicks(): void {\n\t\tthis.slides.forEach((slide) => {\n\t\t\tslide.addEventListener('click', (e) => this.slideClick(e));\n\t\t});\n\t}\n\n\tprivate slideClick(event: Event | MouseEvent): void {\n\t\tevent.preventDefault();\n\n\t\tconst currentAnchor = event.currentTarget as HTMLAnchorElement;\n\t\tconst thumbIndex = parseInt(currentAnchor.dataset.index as string);\n\t\tconst type = currentAnchor.dataset.type || 'none';\n\n\t\t// break early if user clicks the same thumb...do nothing\n\t\tif (this.currentThumbIndexSelected === thumbIndex) return;\n\n\t\t// update selected appearance\n\t\tthis.updateSelectedThumb(currentAnchor);\n\n\t\t// show new item\n\t\tthis.updateVisibleGalleryItem(thumbIndex);\n\n\t\t// remember new thumb index\n\t\tthis.currentThumbIndexSelected = thumbIndex;\n\n\t\t// emit change event for listeners\n\t\tthis.dispatchCustomEvent(\n\t\t\tMoleculeProductGalleryEvents.thumbnailChanged,\n\t\t\tthis.currentThumbIndexSelected,\n\t\t\ttrue,\n\t\t\ttrue,\n\t\t);\n\n\t\t// show the content based on the data type\n\t\tswitch (type) {\n\t\t\tcase ProductGalleryItemTypes.Image: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ProductGalleryItemTypes.Video: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ProductGalleryItemTypes.ThreeSixty: {\n\t\t\t\t// re-init 360?\n\t\t\t\t// console.log('reinit 360');\n\t\t\t\t(window as any).CI360 && (window as any).CI360.destroy();\n\t\t\t\t(window as any).CI360 && (window as any).CI360.init();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tconsole.log('Invalid product gallery type');\n\t\t}\n\t}\n\n\t/**\n\t * Remove selected appearance from thumbs and add newly selected appearance, if anchor provided\n\t * @param {HTMLAnchorElement} newSelected?\n\t * @returns void\n\t */\n\tprivate updateSelectedThumb(newSelected?: HTMLAnchorElement): void {\n\t\tthis.slides.forEach((thumb) => {\n\t\t\tthumb.classList.remove('selected');\n\t\t});\n\t\tif (newSelected) {\n\t\t\tnewSelected.classList.add('selected');\n\t\t}\n\t}\n\n\t/**\n\t * Hide current gallery item and show new one by index\n\t * @param {number} newIndex\n\t * @returns void\n\t */\n\tprivate updateVisibleGalleryItem(newIndex: number): void {\n\t\tthis.galleryItems.forEach((item) => {\n\t\t\t// hide current visible item\n\t\t\tif (item.hasAttribute('hidden') === false) {\n\t\t\t\titem.setAttribute('hidden', 'true');\n\t\t\t}\n\t\t\t// item.style.opacity = '0';\n\t\t});\n\n\t\tif (newIndex >= 0 && this.galleryItems.length >= newIndex) {\n\t\t\t// show new item\n\t\t\tthis.galleryItems[newIndex].removeAttribute('hidden');\n\n\t\t\t// this.galleryItems[newIndex].style.opacity = '1';\n\t\t\t// const foo = this.galleryItems[newIndex].querySelector('div.cloudimage-360');\n\t\t\t// const e = e.dispatchEvent(new CustomEvent('dragStart'));\n\t\t}\n\t}\n\n\tprivate galleryPositionHandler(): void {\n\t\tif (this.sliderList) {\n\t\t\tthis.sliderList.children.length > 0 &&\n\t\t\t\tArray.from(this.sliderList.children)?.forEach((element) => this.sliderListElements?.push(element?.clientHeight));\n\t\t\tthis.sliderListWidth = this.sliderListElements.reduce((acc, cur) => acc + cur, 0);\n\t\t\tthis.sliderWrapperWidth > this.sliderListWidth\n\t\t\t\t? this.sliderWrapper.setAttribute('data-position', 'list-centered')\n\t\t\t\t: this.sliderWrapper.setAttribute('data-position', 'list-left');\n\t\t}\n\t}\n\n\tprivate galleryPositionHandlerFullwidth(): void {\n\t\tthis.modalProducGallery = document.querySelector(\n\t\t\t'.uk-modal-full.o-product-gallery-360__modalFullWrapper [data-ref=\"sliderWrapper\"]',\n\t\t) as HTMLDivElement;\n\t\tthis.sliderList2 = document.querySelector('.uk-modal-full.o-product-gallery-360__modalFullWrapper [data-ref=\"sliderList\"]') as HTMLUListElement;\n\t\tif (this.modalProducGallery && this.sliderList2) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.sliderWrapperHeight = this.modalProducGallery.clientHeight;\n\t\t\t\tthis.sliderList2.children.length > 0 &&\n\t\t\t\t\tArray.from(this.sliderList2.children)?.forEach((element) => this.sliderListElements2?.push(element?.clientHeight));\n\t\t\t\tthis.sliderListWidth2 = this.sliderListElements2.reduce((acc, cur) => acc + cur, 0);\n\t\t\t\tthis.sliderWrapperHeight > this.sliderListWidth2\n\t\t\t\t\t? this.modalProducGallery.setAttribute('data-vertical-position', 'list-middle')\n\t\t\t\t\t: this.modalProducGallery.setAttribute('data-vertical-position', 'list-top');\n\t\t\t}, 50);\n\t\t}\n\t}\n}\n","import { AtomButtonProps } from 'wolf/components/atoms/a-button/a-button.data';\nimport { AtomCopyProps } from 'wolf/components/atoms/a-copy/a-copy.data';\nimport { AtomHeadlineProps } from 'wolf/components/atoms/a-headline/a-headline.data';\nimport { Component } from '../../../../global/interfaces/component.interface';\n\nexport interface MoleculeVideoOverlayProps {\n\tlayout?: 0 | 1 | 2 | 3 | 4;\n\t/** The headline */\n\theadline?: AtomHeadlineProps;\n\t/** The subheadline */\n\tsubheadline?: AtomHeadlineProps;\n\t/** The copy text */\n\tcopy?: AtomCopyProps;\n\t/** The button */\n\tbutton?: AtomButtonProps;\n}\n\n// Just a big play button\nexport const MyMoleculeVideoOverlayLayoutDefault: Component = {\n\tdata: {\n\t\t// no props\n\t},\n};\n\n// As seen on the knowledge base (I think)\nexport const MyMoleculeVideoOverlayLayout1: Component = {\n\tdata: {\n\t\tlayout: 1,\n\t\theadline: {\n\t\t\ttext: 'Der Luftreiniger Der Profis',\n\t\t\tstyle: 1,\n\t\t},\n\t\tcopy: {\n\t\t\ttext: '

Lorem ipsum dolor sit amet consectetur adipisicing elit. Asperiores minima quidem unde vitae reiciendis rerum itaque a aperiam! A, eius. Ab facilis tempora optio dolore mollitia nesciunt eligendi voluptate quos?

',\n\t\t},\n\t},\n};\n\n// As seen on the job portal\nexport const MyMoleculeVideoOverlayLayout2: Component = {\n\tdata: {\n\t\tlayout: 2,\n\t\theadline: {\n\t\t\ttext: 'Folge 1',\n\t\t\tstyle: 5,\n\t\t},\n\t\tsubheadline: {\n\t\t\ttext: 'WOLF Junior Reporter
Unterwegs im Werk in Mainburg',\n\t\t\tstyle: 4,\n\t\t},\n\t\tcopy: {\n\t\t\ttext: '

Mit Gina, Dominik und Jürgen-Anton

',\n\t\t},\n\t},\n};\n\n// As seen on the private pages?\nexport const MyMoleculeVideoOverlayLayout3: Component = {\n\tdata: {\n\t\tlayout: 3,\n\t\theadline: {\n\t\t\ttext: 'Wärmepumpen
Verstehen',\n\t\t\tstyle: 1,\n\t\t},\n\t\tcopy: {\n\t\t\ttext: '

Dieses Video wird sie von den Socken hauen -100%-ige Trennung der Zu– und Ablaufströme. Hocheffiziente Wärmerückgewinnung in Bereichen mit besonders hohen Anforderungen an die Raumluftqualität.

',\n\t\t},\n\t\tbutton: {\n\t\t\thref: 'https://www.google.com',\n\t\t\ttext: 'Call to Action',\n\t\t\ttarget: '_blank',\n\t\t\ttitle: 'Call to action',\n\t\t\ttype: 'primary-blue',\n\t\t},\n\t},\n};\n\n// As seen on the FHW search\nexport const MyMoleculeVideoOverlayLayout4: Component = {\n\tdata: {\n\t\tlayout: 4,\n\t\theadline: {\n\t\t\ttext: 'Fachpartner Headline',\n\t\t\tstyle: 1,\n\t\t},\n\t\tsubheadline: {\n\t\t\ttext: 'Hier eine flotte Subjeadline',\n\t\t\tstyle: 1,\n\t\t},\n\t\tcopy: {\n\t\t\ttext: '

Unternehmen Gmbh, Musterstadt

',\n\t\t},\n\t},\n};\n\n// As seen on the professional pages\nexport const MyMoleculeVideoOverlayLayout5: Component = {\n\tdata: {\n\t\t// no props, no design so just a play button?\n\t},\n};\n","import { MoleculeVideoOverlayProps, MyMoleculeVideoOverlayLayout1 } from 'wolf/components/molecules/m-video-overlay/m-video-overlay.data';\nimport { Component, StyleSettings } from '../../../../global/interfaces/component.interface';\nimport { AtomButtonProps } from '../../atoms/a-button/a-button.data';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AtomImageProps } from 'wolf/components/atoms/a-image/a-image.data';\n\nconst videoPosterImage = require('../../../../global/assets/images/video-poster.jpg') as string;\n\nexport interface VideoData {\n\t/** The youtube video ID */\n\tvideoId: string;\n\t/** Player settings */\n\tsettings: VideoSettings;\n\t/** A placeholder poster image shown before the video is played */\n\tposter: AtomImageProps;\n\t/** A small video thumbnail. Used when the video is in a slideshow */\n\tthumb?: string;\n\t/** This needs to be like a unique uuid. Support for multiple videos of the same videoId on the same page */\n\tinstanceId?: string;\n}\ninterface VideoSettings {\n\t/** If true, the video will begin muted */\n\tmute: boolean;\n\t/** If true, the video controls will be shown */\n\tcontrols: boolean;\n\t/** If true, the video will play on a loop */\n\tloop: boolean;\n}\n/**\n * The cookie overlay\n * @todo - could be a molecule one day?\n */\ninterface CookieContentOverlayProps {\n\t/** The cookie consent headline */\n\theadline: string;\n\t/** The cookie consent message */\n\ttext: string;\n\t/** The button to give cookie consent */\n\tbuttonAccept: AtomButtonProps;\n\t/** If true, the cookie message will not show */\n\talreadyGivenConsent?: boolean;\n}\nexport interface OrganismVideoProps extends StyleSettings {\n\t/** The molecule headline text */\n\t// headline: AtomHeadlineProps;\n\t/** The molecule copy text */\n\t// copy: AtomCopyProps;\n\t/** The button in the text */\n\t// button?: AtomButtonProps;\n\n\toverlay: MoleculeVideoOverlayProps;\n\n\t/** Video consent cookie overlay */\n\tconsent: CookieContentOverlayProps;\n\t/** Main video data */\n\tvideo: VideoData;\n\n\toneTrust?: any;\n}\n\nconst poster = {\n\tsources: [\n\t\t{\n\t\t\tmediaQuery: '(max-width: 1920px)',\n\t\t\timage: 'https://picsum.photos/1920/1024',\n\t\t\twidth: 1920,\n\t\t\theight: 1024,\n\t\t},\n\t\t{\n\t\t\tmediaQuery: '(max-width: 1200px)',\n\t\t\timage: 'https://picsum.photos/1200/600',\n\t\t\twidth: 1200,\n\t\t\theight: 600,\n\t\t},\n\t\t{\n\t\t\tmediaQuery: '(max-width: 768px)',\n\t\t\timage: 'https://picsum.photos/768/480',\n\t\t\twidth: 768,\n\t\t\theight: 480,\n\t\t},\n\t],\n\talt: 'lorem ipsum test',\n\ttitle: 'lorem ipsum',\n\twidth: 1920,\n\theight: 1080,\n};\n\nexport const MyOrganismVideoDefault: Component = {\n\tdata: {\n\t\toverlay: MyMoleculeVideoOverlayLayout1.data,\n\t\tconsent: {\n\t\t\theadline: 'Notice about cookies which must be accepted first',\n\t\t\ttext: '

In order to watch the video you must accept cookies...Lorem ipsum dolor sit amet consectetur adipisicing elit. Explicabo, aspernatur nostrum, ipsam alias unde, vel cumque incidunt eius vitae ratione odio nobis ipsa error sequi harum architecto!

',\n\t\t\tbuttonAccept: {\n\t\t\t\thref: '#accept-consent',\n\t\t\t\ttext: 'Accept and show video',\n\t\t\t\ttitle: '',\n\t\t\t\ttype: 'default-blue',\n\t\t\t},\n\t\t},\n\t\tvideo: {\n\t\t\tinstanceId: uuidv4(),\n\t\t\tvideoId: 'tgdbb87PY9k',\n\t\t\t// videoId: '3x4Kgn-vICY', // YouTube\n\t\t\tsettings: {\n\t\t\t\t// autoplay: false,\n\t\t\t\tmute: false,\n\t\t\t\tcontrols: false,\n\t\t\t\tloop: false,\n\t\t\t},\n\t\t\tposter,\n\t\t},\n\t\tstyleSettings: {\n\t\t\tpaddingStyle: 'standard',\n\t\t\ttextColor: 'true-white',\n\t\t\theadlineColor: 'true-white',\n\t\t\tisEmbedded: true,\n\t\t},\n\t},\n};\n\nexport const MyOrganismVideoStyledContent: Component = {\n\tdata: {\n\t\t...MyOrganismVideoDefault.data,\n\t\t// headline: {\n\t\t// \ttext: 'Der Luftreiniger Der Profis',\n\t\t// \tstyle: 1,\n\t\t// },\n\t\tstyleSettings: {\n\t\t\tpaddingStyle: 'standard',\n\t\t\ttextColor: 'warning', // this comes from SCSS $colors and will color style the copy and play button\n\t\t\theadlineColor: 'danger',\n\t\t\tcopyColor: 'success',\n\t\t\tisEmbedded: true,\n\t\t},\n\t},\n};\n\nconst doesNotRequireConsent = JSON.parse(JSON.stringify(MyOrganismVideoDefault.data)) as OrganismVideoProps;\n// override consent check (shouldn't be used on Prod!)\ndoesNotRequireConsent.consent.alreadyGivenConsent = true;\nexport const MyOrganismVideoDoesNotRequireConsent: Component = {\n\tdata: doesNotRequireConsent,\n};\n","import { MyOrganismVideoDefault, OrganismVideoProps, VideoData } from 'wolf/components/organisms/o-video/o-video.data';\nimport { Component } from '../../../../global/interfaces/component.interface';\nimport { MyMoleculeVideoOverlayLayoutDefault } from '../m-video-overlay/m-video-overlay.data';\nimport { v4 as uuidv4 } from 'uuid';\nimport MyAtomEnergyBadge, { AtomEnergyBadgeProps } from 'wolf/components/atoms/a-energy-badge/a-energy-badge.data';\n\n// type ProductGalleryItemTypes = 'image' | 'video' | '360';\nexport enum ProductGalleryItemTypes {\n\tImage = 'image',\n\tVideo = 'video',\n\tThreeSixty = '360',\n}\n\nexport interface MoleculeProductGalleryProps {\n\t/** List of images, videos and 360 images */\n\tmediaItems: Array;\n\t/** The energy badge shown over the image and 360 slides (not video) */\n\tenergyBadge: AtomEnergyBadgeProps;\n\t/** The zero-indexed item which will be selected on load */\n\tcurrentlySelected?: number;\n\tfullscreen?: boolean;\n}\nconst fake360: IThreeSixtyItem = {\n\ttype: ProductGalleryItemTypes.ThreeSixty,\n\tthumb: 'https://scaleflex.ultrafast.io/https://scaleflex.airstore.io/demo/chair-360-36/chair_1.jpg?v1',\n\tfolder: 'https://scaleflex.ultrafast.io/https://scaleflex.airstore.io/demo/chair-360-36/',\n\tfilenamePattern: 'chair_{index}.jpg?v1',\n\tamountOfImages: 36,\n\tmagnifierZoom: 3,\n};\nconst fake360_2: IThreeSixtyItem = {\n\ttype: ProductGalleryItemTypes.ThreeSixty,\n\tthumb: 'https://test.main-demo.de.wolf.eu/demo-product-images-360/images/03_960x480/cha-1.png',\n\tfolder: 'https://test.main-demo.de.wolf.eu/demo-product-images-360/images/03_960x480/',\n\tfilenamePattern: 'cha-{index}.png',\n\tamountOfImages: 36,\n\tmagnifierZoom: 3,\n\tspinReverse: true,\n\tspeed: 75,\n\tautoplay: true,\n\tkeyboard: true,\n};\n// \n\nconst fakeImage1: IImageItem = {\n\ttype: ProductGalleryItemTypes.Image,\n\t// selected: true,\n\tthumb: 'https://picsum.photos/id/1000/280/244',\n\tlarge: 'https://picsum.photos/id/1000/1024/768',\n\tfull: 'https://picsum.photos/id/1000/2400/1800',\n};\nconst fakeImage2: IImageItem = {\n\ttype: ProductGalleryItemTypes.Image,\n\tthumb: 'https://picsum.photos/id/1047/280/269',\n\tlarge: 'https://picsum.photos/id/1047/1047/801',\n\tfull: 'https://picsum.photos/id/1047/2400/1800',\n};\nconst fakeImage3: IImageItem = {\n\ttype: ProductGalleryItemTypes.Image,\n\t// selected: true,\n\tthumb: 'https://picsum.photos/id/1042/280/251',\n\tlarge: 'https://picsum.photos/id/1042/1024/768',\n\tfull: 'https://picsum.photos/id/1042/2400/1800',\n};\nconst fakeImage4: IImageItem = {\n\ttype: ProductGalleryItemTypes.Image,\n\t// selected: true,\n\tthumb: 'https://picsum.photos/id/1043/292/259',\n\tlarge: 'https://picsum.photos/id/1043/1024/768',\n\tfull: 'https://picsum.photos/id/1043/2400/1800',\n};\nconst fakeImage5: IImageItem = {\n\ttype: ProductGalleryItemTypes.Image,\n\t// selected: true,\n\tthumb: 'https://picsum.photos/id/1044/281/251',\n\tlarge: 'https://picsum.photos/id/1044/1024/768',\n\tfull: 'https://picsum.photos/id/1044/2400/1800',\n};\n\nconst poster = {\n\tsources: [\n\t\t{\n\t\t\tmediaQuery: '(max-width: 1920px)',\n\t\t\timage: 'https://picsum.photos/1920/1024',\n\t\t\twidth: 1920,\n\t\t\theight: 1024,\n\t\t},\n\t\t{\n\t\t\tmediaQuery: '(max-width: 1200px)',\n\t\t\timage: 'https://picsum.photos/1200/600',\n\t\t\twidth: 1200,\n\t\t\theight: 600,\n\t\t},\n\t\t{\n\t\t\tmediaQuery: '(max-width: 768px)',\n\t\t\timage: 'https://picsum.photos/768/480',\n\t\t\twidth: 768,\n\t\t\theight: 480,\n\t\t},\n\t],\n\talt: 'lorem ipsum test',\n\ttitle: 'lorem ipsum',\n\twidth: 1920,\n\theight: 1080,\n};\n\nconst fakeVideo1: IVideoItem = {\n\ttype: ProductGalleryItemTypes.Video,\n\tvideo: {\n\t\toverlay: MyMoleculeVideoOverlayLayoutDefault.data,\n\t\tconsent: MyOrganismVideoDefault.data.consent,\n\t\tvideo: {\n\t\t\tinstanceId: uuidv4(),\n\t\t\tvideoId: 'tgdbb87PY9k',\n\t\t\tsettings: {\n\t\t\t\t// autoplay: false,\n\t\t\t\tmute: false,\n\t\t\t\tcontrols: false,\n\t\t\t\tloop: false,\n\t\t\t},\n\t\t\tposter, //: 'https://picsum.photos/id/1001/1024/768',\n\t\t\tthumb: 'https://picsum.photos/id/1001/140/128',\n\t\t},\n\t},\n};\nexport class ProductGalleryVideoItem implements IVideoItem {\n\ttype: ProductGalleryItemTypes.Video;\n\tvideo: OrganismVideoProps;\n\tconstructor(data: IVideoItem) {\n\t\tif (data) {\n\t\t\tthis.type = data.type;\n\t\t\tthis.video = data.video;\n\t\t\t// set a unique instance ID\n\t\t\tthis.video.video.instanceId = uuidv4();\n\t\t}\n\t}\n}\nconst fakeVideo2: IVideoItem = {\n\ttype: ProductGalleryItemTypes.Video,\n\tvideo: {\n\t\toverlay: MyMoleculeVideoOverlayLayoutDefault.data,\n\t\tconsent: MyOrganismVideoDefault.data.consent,\n\t\tvideo: {\n\t\t\tinstanceId: uuidv4(),\n\t\t\tvideoId: 'RvRhUHTV_8k',\n\t\t\tsettings: {\n\t\t\t\t// autoplay: false,\n\t\t\t\tmute: false,\n\t\t\t\tcontrols: false,\n\t\t\t\tloop: false,\n\t\t\t},\n\t\t\tposter,\n\t\t\tthumb: 'https://picsum.photos/id/1002/140/128',\n\t\t},\n\t},\n};\n\nconst fakeMediaItems: MoleculeProductGalleryProps['mediaItems'] = [\n\tfake360_2,\n\tfakeImage1,\n\tfakeImage2,\n\tfakeImage3,\n\tfakeVideo1,\n\tfakeVideo2,\n\tfake360_2,\n\tfakeImage4,\n\tfakeImage5,\n];\n\nexport const MyMoleculeProductGallery: Component = {\n\tdata: {\n\t\tmediaItems: fakeMediaItems,\n\t\tenergyBadge: MyAtomEnergyBadge.data,\n\t},\n};\n\nexport const MyMoleculeProductGalleryManyItems: Component = {\n\tdata: {\n\t\tmediaItems: [fakeVideo2, ...fakeMediaItems, fakeVideo2, ...fakeMediaItems, fakeVideo2, ...fakeMediaItems],\n\t\tenergyBadge: MyAtomEnergyBadge.data,\n\t},\n};\n\nexport const MyMoleculeProductGalleryFewItems: Component = {\n\tdata: {\n\t\tmediaItems: [...fakeMediaItems.slice(0, 2)],\n\t\tenergyBadge: MyAtomEnergyBadge.data,\n\t},\n};\n\nexport const MyMoleculeProductGallerySelectedIndex: Component = {\n\tdata: {\n\t\t...MyMoleculeProductGallery.data,\n\t\tcurrentlySelected: 1,\n\t},\n};\n\nexport const MyMoleculeProductGalleryFullScreen: Component = {\n\tdata: {\n\t\t...MyMoleculeProductGallery.data,\n\t\tfullscreen: true,\n\t},\n};\n\ninterface MediaItem {\n\t/** Which type the media is */\n\ttype: ProductGalleryItemTypes;\n\t/** If true, the item will show as the actively selected one. If no active one's, the first is active by default */\n\t// selected?: boolean;\n}\ninterface IImageItem extends MediaItem {\n\ttype: ProductGalleryItemTypes.Image;\n\t/** The thumb should be no less than 280px */\n\tthumb: string;\n\tlarge: string;\n\tfull: string;\n}\ninterface IVideoItem extends MediaItem {\n\ttype: ProductGalleryItemTypes.Video;\n\t// video: VideoData;\n\tvideo: OrganismVideoProps;\n}\n\n/** @demo https://codesandbox.io/s/6479n17j73?fontsize=14&module=/index.html&file=/index.html:529-1006 */\ninterface IThreeSixtyItem extends MediaItem {\n\ttype: ProductGalleryItemTypes.ThreeSixty;\n\tthumb: string;\n\t/**\n\t * The folder where the images are stored\n\t * Note: if the images have non-patternized filenames, use this:\n\t * @link https://github.com/scaleflex/js-cloudimage-360-view#data-image-list-or-image-list\n\t * @link https://github.com/scaleflex/js-cloudimage-360-view#table-of-contents\n\t */\n\tfolder: string;\n\tfilenamePattern: string;\n\tamountOfImages: number;\n\tmagnifierZoom: number;\n\tspinReverse?: boolean;\n\tspeed?: number;\n\tautoplay?: boolean;\n\tkeyboard?: boolean;\n}\n","import { Component } from '../../../../global/interfaces/component.interface';\n\nexport interface AtomEnergyBadgeProps {\n\t/* Array:\n label: Label for the Badge\n type: Icon for the selected Badge \n */\n\tenergyClasses: {\n\t\tlabel: 'A+++' | 'A++' | 'A+' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G';\n\t\ttype?: 'water' | 'heating' | 'solar';\n\t}[];\n}\n\nexport const MyAtomEnergyBadge: Component = {\n\tdata: {\n\t\tenergyClasses: [\n\t\t\t{\n\t\t\t\tlabel: 'A+++',\n\t\t\t\ttype: 'heating',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tlabel: 'B',\n\t\t\t\ttype: 'water',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tlabel: 'C',\n\t\t\t\ttype: 'solar',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tlabel: 'G',\n\t\t\t},\n\t\t],\n\t},\n};\n// a-energy-badge\nexport default MyAtomEnergyBadge;\n","import { ComponentEvents } from '../../../../global/interfaces/component.interface';\n\nconst EVENT_PREFIX = 'MoleculeProductGalleryEvents__';\n\n/** The type of custom events emitted */\nexport type MoleculeProductGalleryEventTypes = {\n\tthumbnailChanged: number;\n};\n\n/** The event names for the above events */\nexport const MoleculeProductGalleryEvents: ComponentEvents = {\n\t/** Event emitted when a thumbnail is selected */\n\tthumbnailChanged: EVENT_PREFIX + 'ThumbnailChanged',\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;"],"names":["DomServices","constructor","element","references","onDomElementChanged","Subject","parseStringToHtml","htmlAsString","parsedNode","DOMParser","parseFromString","body","firstChild","renderDomElement","ref","html","renderOnParent","refExists","this","$references","Object","prototype","hasOwnProperty","call","undefined","$element","innerHTML","domElementChanged","console","warn","appendRawHtmlToDomElement","node","position","htmlNode","insertAdjacentElement","replaceLastChildElementWithRawHtml","lastNode","childNodes","length","replaceChild","reference","next","parseDOMScriptTag","elementId","data","document","getElementById","JSON","parse","innerText","error","collectReferences","ignoredReferences","includedReferences","refs","Array","from","querySelectorAll","forEach","el","referenceName","dataset","includes","window","location","hostname","name","getRef","toggleElementState","control","newState","state","removeAttribute","setAttribute","renderDomElementInHTMLElement","InputClasses","InputServices","observedInputs","subscribeInputWithErrorRemovalOnInputChange","value","event","onChange","castEvent","target","label","previousElementSibling","classList","contains","errorClass","remove","input","errorMessage","nextElementSibling","add","mapInputEvent","addFocusToInput","inputName","querySelector","focus","observeElementEvents","inputEvent","inputToObserve$","fromEvent","pipe","map","subscribe","addErrorsToFieldset","errors","onErrorsUpdated","Error","keys","addOrRemoveFormValidationError","inputNameToFocus","firstErrorElement","scrollIntoView","showOrHide","errorMessageContainer","hiddenClass","ControllerBase","disableReferenceCollection","domUtils","inputUtils","dispatchCustomEvent","detail","bubbles","dispatchOnWindow","dispatchOnSpecificElement","customEvent","CustomEvent","dispatchEvent","ControllerProductGallery","super","values","componentRefs","galleryItems","slides","sliderWrapperWidth","sliderListWidth","sliderListWidth2","sliderListElements","sliderListElements2","sliderWrapperHeight","galleryWrapper","sliderWrapper","clientWidth","clientHeight","sliderList","init","galleryPositionHandler","openModalButton","addEventListener","galleryPositionHandlerFullwidth","observeSlideThumbClicks","slide","e","slideClick","preventDefault","currentAnchor","currentTarget","thumbIndex","parseInt","index","type","currentThumbIndexSelected","updateSelectedThumb","updateVisibleGalleryItem","thumbnailChanged","Image","Video","ThreeSixty","CI360","destroy","log","newSelected","thumb","newIndex","item","hasAttribute","children","push","reduce","acc","cur","modalProducGallery","sliderList2","setTimeout","MyMoleculeVideoOverlayLayoutDefault","MyOrganismVideoDefault","overlay","layout","headline","text","style","copy","consent","buttonAccept","href","title","video","instanceId","videoId","settings","mute","controls","loop","poster","sources","mediaQuery","image","width","height","alt","styleSettings","paddingStyle","textColor","headlineColor","isEmbedded","copyColor","stringify","alreadyGivenConsent","ProductGalleryItemTypes","fake360_2","folder","filenamePattern","amountOfImages","magnifierZoom","spinReverse","speed","autoplay","keyboard","fakeImage1","large","full","fakeImage2","fakeImage3","fakeImage4","fakeImage5","fakeVideo1","ProductGalleryVideoItem","fakeMediaItems","MyMoleculeProductGallery","mediaItems","energyBadge","energyClasses","slice","currentlySelected","fullscreen","MoleculeProductGalleryEvents","EVENT_PREFIX","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","byteToHex","i","toString","substr","arr","offset","arguments","uuid","toLowerCase","test","TypeError","options","buf","rnds","random"],"sourceRoot":""}