{"version":3,"file":"mybeckhoff.js","mappings":"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","sources":["webpack://design-prototype/./src/js/mybeckhoff/mybeckhoff.ts","webpack://design-prototype/./src/js/mybeckhoff/plugins/bookmark-plugin.ts","webpack://design-prototype/./src/js/mybeckhoff/plugins/export-control-plugin.ts","webpack://design-prototype/./node_modules/uuid/dist/esm-browser/native.js","webpack://design-prototype/./node_modules/uuid/dist/esm-browser/rng.js","webpack://design-prototype/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://design-prototype/./node_modules/uuid/dist/esm-browser/v4.js","webpack://design-prototype/./src/js/mybeckhoff/popover.ts","webpack://design-prototype/./src/js/mybeckhoff/toast.ts","webpack://design-prototype/./src/js/mybeckhoff/plugins/login-plugin.ts","webpack://design-prototype/./src/js/mybeckhoff/plugin-factory.ts","webpack://design-prototype/./src/js/mybeckhoff/index.ts"],"sourcesContent":["import { IMyBeckhoffService } from './types';\n\nexport const getMyBeckhoffService = (): IMyBeckhoffService => {\n if (window.myBeckhoff) {\n return window.myBeckhoff;\n } else {\n throw new Error('MyBeckhoffService not present!');\n }\n};\n","import { getMyBeckhoffService } from '../mybeckhoff';\nimport { BookmarkRequestOptions, BookmarkStatusResponse } from '../types';\n\nexport class BookmarkPlugin {\n static readonly selectors = {\n bookmarkButtonAdd: '.mybeckhoff__add-bookmark',\n bookmarkButtonRemove: '.mybeckhoff__remove-bookmark',\n bookmarkModal: '#mybeckhoff__bookmark-modal',\n bookmarkModalSubmit: '#mybeckhoff__bookmark-modal .mybeckhoff__bookmark-modal-button-submit',\n };\n\n private options: BookmarkRequestOptions;\n private isBookmarked = false;\n private addButton;\n private removeButton;\n private modalSubmitButton;\n private myBeckhoffService = getMyBeckhoffService();\n\n constructor(private element: HTMLElement) {\n const { cmsId, cmsLanguage, cmsTemplatename } = element.dataset;\n\n if (!cmsId || !cmsLanguage || !cmsTemplatename) {\n throw new Error('[MyBeckhoff - Bookmark Plugin]: Missing attribute values.');\n }\n\n this.options = { cmsId, cmsLanguage, cmsTemplatename };\n this.bookmarkStatus();\n\n this.removeButton = this.element.querySelector(BookmarkPlugin.selectors.bookmarkButtonRemove);\n this.addButton = this.element.querySelector(BookmarkPlugin.selectors.bookmarkButtonAdd);\n this.modalSubmitButton = document.querySelector(BookmarkPlugin.selectors.bookmarkModalSubmit);\n\n this.initEvents();\n }\n\n get bookmarked() {\n return this.isBookmarked;\n }\n\n async removeBookmark() {\n const response = await this.myBeckhoffService.request<BookmarkStatusResponse>({\n ...this.options,\n action: 'RemoveBookmark',\n });\n\n this.updateButtons(response.status === true && response.bookmarkStatus === true);\n }\n\n async bookmarkStatus() {\n const response = await this.myBeckhoffService.request<BookmarkStatusResponse>({\n ...this.options,\n action: 'GetBookmarkStatus',\n });\n\n this.updateButtons(response.status === true && response.bookmarkStatus === true);\n }\n\n updateButtons(bookmarked: boolean) {\n if (bookmarked) {\n this.addButton?.classList.add('hidden');\n this.removeButton?.classList.remove('hidden');\n } else {\n this.addButton?.classList.remove('hidden');\n this.removeButton?.classList.add('hidden');\n }\n }\n\n openBookmarkModal() {\n const modalEl = document.querySelector(BookmarkPlugin.selectors.bookmarkModal);\n if (modalEl) {\n modalEl.addEventListener('show.bs.modal', () => {\n const iframe = document.querySelector(BookmarkPlugin.selectors.bookmarkModal + ' iframe');\n if (iframe) {\n iframe.setAttribute('src', iframe.getAttribute('data-src') || '');\n }\n });\n modalEl.addEventListener('hide.bs.modal', () => {\n this.bookmarkStatus();\n });\n const modal = bootstrap.Modal.getOrCreateInstance(BookmarkPlugin.selectors.bookmarkModal);\n modal.show();\n }\n }\n\n submitBookmarkForm(e: Event) {\n e.preventDefault();\n\n const iFrameDoc = (\n document.querySelector('#mybeckhoff__bookmark-modal iframe') as HTMLIFrameElement\n )?.contentDocument;\n\n const form = iFrameDoc?.querySelector<HTMLFormElement>('form');\n const btnSubmit = form?.querySelector<HTMLInputElement>('#cart_submit');\n\n if (btnSubmit) btnSubmit.click();\n }\n\n private initEvents() {\n this.addButton?.addEventListener('click', (e) => {\n e.preventDefault();\n this.openBookmarkModal();\n });\n\n this.removeButton?.addEventListener('click', (e) => {\n e.preventDefault();\n this.removeBookmark();\n });\n\n this.modalSubmitButton?.addEventListener('click', (e) => this.submitBookmarkForm(e));\n }\n}\n","import { getMyBeckhoffService } from '../mybeckhoff';\nimport { SetExportControlResponse } from '../types';\n\nexport class ExportControlPlugin {\n static readonly selectors = {\n buttonAcceptSelector: '#export-control-consent__button-accept',\n buttonDeclineSelector: '#export-control-consent__button-decline',\n modalSelector: '#export-control-consent__modal',\n };\n\n private myBeckhoffService = getMyBeckhoffService();\n private modalOpened = false;\n\n constructor(private element: HTMLElement) {\n this.initButtonEvents();\n this.myBeckhoffService.subscribe((e) => this.onMyBeckhoffEvent(e));\n this.evaluateLoginState();\n }\n\n private evaluateLoginState() {\n const { loginStatus, exportControl } = this.myBeckhoffService.loginState;\n if (!this.modalOpened && loginStatus && !exportControl) {\n this.showModal();\n }\n }\n\n private showModal() {\n const modalEl = document.querySelector(ExportControlPlugin.selectors.modalSelector);\n if (modalEl) {\n const modal = bootstrap.Modal.getOrCreateInstance(\n ExportControlPlugin.selectors.modalSelector,\n {\n backdrop: 'static',\n keyboard: false,\n },\n );\n modal.show();\n }\n this.modalOpened = true;\n }\n\n private onMyBeckhoffEvent(event: string) {\n if (event === 'SESSION_UPDATE') {\n this.evaluateLoginState();\n }\n }\n\n private onAcceptClick(event: Event) {\n event.preventDefault();\n this.myBeckhoffService\n .request<SetExportControlResponse>({\n action: 'SetExportControl',\n })\n .then((response) => {\n if (\n response &&\n response.status === true &&\n response.loginStatus === true &&\n response.exportControl === true\n ) {\n this.myBeckhoffService.updateLoginState({ loginStatus: true, exportControl: true });\n const modalEl = document.querySelector(ExportControlPlugin.selectors.modalSelector);\n if (modalEl) {\n const modal = bootstrap.Modal.getInstance(ExportControlPlugin.selectors.modalSelector);\n modal.hide();\n }\n this.modalOpened = false;\n }\n });\n }\n\n private onDeclineClick(event: Event) {\n event.preventDefault();\n this.myBeckhoffService.logout();\n }\n\n private initButtonEvents() {\n document\n .querySelector(ExportControlPlugin.selectors.buttonAcceptSelector)\n ?.addEventListener('click', (event) => this.onAcceptClick(event));\n\n document\n .querySelector(ExportControlPlugin.selectors.buttonDeclineSelector)\n ?.addEventListener('click', (event) => this.onDeclineClick(event));\n }\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\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()).\nlet getRandomValues;\nconst 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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","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\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 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 return 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]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // 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 native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const 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 (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import BSPopover from 'bootstrap/js/dist/popover';\nimport { v4 as uuid } from 'uuid';\n\nexport class Popover {\n private bsInstance: BSPopover;\n private uuid = uuid();\n\n constructor(\n private element: HTMLElement,\n bsOptions: Partial<BSPopover.Options>,\n clickOutsideClose: boolean,\n ) {\n const options = { ...bsOptions, customClass: `popover-${this.uuid}` };\n this.bsInstance = new window.bootstrap.Popover(this.element, options);\n\n if (clickOutsideClose) {\n this.listenOnClickOutside();\n }\n }\n\n get instance() {\n return this.bsInstance;\n }\n\n setMessage(message: string) {\n this.instance.setContent({\n '.popover-body': message,\n });\n }\n\n show() {\n this.instance.show();\n }\n\n hide() {\n this.instance.hide();\n }\n\n private listenOnClickOutside() {\n document.addEventListener('click', (e: any) => {\n const target = document.querySelector(`.popover-${this.uuid}`);\n if (target && !target.contains(e.target)) this.instance.hide();\n });\n }\n}\n","export class Toast {\n private timeout?: number;\n private element: HTMLElement;\n\n constructor(selector: string) {\n this.element = <HTMLElement>document.querySelector(selector);\n\n this.element.querySelector('.btn-close')?.addEventListener('click', (e) => {\n e.preventDefault();\n this.close();\n });\n }\n\n show() {\n this.element.classList.remove('hide');\n this.element.classList.add('show');\n this.timeout = window.setTimeout(() => {\n this.close();\n }, 5000);\n }\n\n close() {\n this.element.classList.remove('show');\n this.element.classList.add('hide');\n\n clearTimeout(this.timeout);\n }\n}\n","import { getMyBeckhoffService } from '../mybeckhoff';\nimport { Popover } from '../popover';\nimport { Toast } from '../toast';\nimport { LoginResponse } from '../types';\n\nexport class LoginPlugin {\n static readonly selectors = {\n dropdownUsername: '.dropdown-mybeckhoff__username',\n usernameInput: '#dropdown-mybeckhoff-username',\n passwordInput: '#dropdown-mybeckhoff-password',\n cookieCheck: '#dropdown-mybeckhoff-cookie',\n toastLoggedIn: '#jsToastLoggedIn',\n toggleMyBeckhoff: '#toggle-mybeckhoff',\n popoverTrigger: '.dropdown.dropdown-mybeckhoff button[type=\"submit\"]',\n };\n\n private myBeckhoffService = getMyBeckhoffService();\n private popover: Popover;\n private toast: Toast;\n\n constructor(private element: HTMLElement) {\n this.myBeckhoffService.subscribe((e, p) => this.onMyBeckhoffEvent(e, p));\n this.updateView(\n this.myBeckhoffService.isLoggedIn,\n this.myBeckhoffService.loginState.username || '',\n );\n this.initEvents();\n this.popover = this.initPopover();\n this.toast = new Toast(LoginPlugin.selectors.toastLoggedIn);\n }\n\n onMyBeckhoffEvent(event: string, payload: any) {\n switch (event) {\n case 'SESSION_UPDATE': {\n this.updateView(payload.loginStatus === true, payload.username);\n break;\n }\n case 'MANUAL_LOGIN': {\n const response = payload as LoginResponse;\n if (response.loginStatus === false && response.message) {\n this.showPopover(payload.message);\n }\n\n if (response.loginStatus === true) {\n this.onManuallyLoggedIn();\n }\n break;\n }\n }\n }\n\n onManuallyLoggedIn() {\n const flyout = document.querySelector(LoginPlugin.selectors.toggleMyBeckhoff);\n const magnificPopup = $.magnificPopup.instance;\n const loginPopup =\n typeof magnificPopup.contentContainer !== 'undefined' &&\n magnificPopup.st?.el?.hasClass('df-trigger-login-popup') === true;\n\n if (flyout && flyout.classList.contains('is-open')) {\n flyout.classList.remove('is-open');\n }\n\n if (loginPopup) {\n magnificPopup.close();\n }\n\n this.toast.show();\n }\n\n updateView(loggedIn: boolean, username: string) {\n if (loggedIn) {\n document.body.classList.add('mybeckhoff', 'mybeckhoff--logged-in');\n } else {\n document.body.classList.remove('mybeckhoff', 'mybeckhoff--logged-in');\n }\n\n if (loggedIn && !!username) {\n document.querySelectorAll(LoginPlugin.selectors.dropdownUsername).forEach((element) => {\n element.innerHTML = username;\n });\n }\n }\n\n initPopover() {\n const element = <HTMLElement>document.querySelector(LoginPlugin.selectors.popoverTrigger);\n\n return new Popover(\n element,\n {\n animation: false,\n container: element.parentNode as HTMLElement,\n content: ' ',\n placement: 'bottom',\n trigger: 'manual',\n html: true,\n },\n true,\n );\n }\n\n showPopover(message: string) {\n if (message) {\n this.popover.setMessage(message);\n this.popover.show();\n }\n }\n\n onFormSubmit(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!document.body.classList.contains('mybeckhoff--logged-in')) {\n const usernameInput = <HTMLInputElement>(\n document.querySelector(LoginPlugin.selectors.usernameInput)\n );\n\n const passwordInput = <HTMLInputElement>(\n document.querySelector(LoginPlugin.selectors.passwordInput)\n );\n\n const cookieCheck = <HTMLInputElement>(\n document.querySelector(LoginPlugin.selectors.cookieCheck)\n );\n\n this.myBeckhoffService.login(\n usernameInput.value,\n passwordInput.value,\n cookieCheck.checked,\n this.element.dataset.cmsLanguage,\n );\n } else {\n this.myBeckhoffService.logout();\n }\n }\n\n private initEvents() {\n this.element\n .querySelector('form')\n ?.addEventListener('submit', (event) => this.onFormSubmit(event));\n }\n}\n","import { BookmarkPlugin } from './plugins/bookmark-plugin';\nimport { ExportControlPlugin } from './plugins/export-control-plugin';\nimport { LoginPlugin } from './plugins/login-plugin';\n\nexport const createMyBeckhoffPlugin = (element: HTMLElement) => {\n switch (element.dataset.template) {\n case 'bookmark-toggle': {\n return new BookmarkPlugin(element);\n }\n case 'login':\n case 'login-status': {\n return new LoginPlugin(element);\n }\n case 'export-control-consent': {\n return new ExportControlPlugin(element);\n }\n }\n};\n","import { createMyBeckhoffPlugin } from './plugin-factory';\nimport { getMyBeckhoffService } from './mybeckhoff';\n\nconst myBeckhoffService = getMyBeckhoffService();\n\ndocument.addEventListener('DOMContentLoaded', () => {\n document.querySelectorAll('[data-plugin=\"mybeckhoff\"]').forEach((element) => {\n try {\n const plugin = createMyBeckhoffPlugin(<HTMLElement>element);\n\n if (plugin) {\n myBeckhoffService.addPlugin(plugin);\n }\n } catch (e) {\n console.error(e);\n }\n });\n});\n"],"names":["getMyBeckhoffService","window","myBeckhoff","Error","BookmarkPlugin","options","isBookmarked","addButton","removeButton","modalSubmitButton","myBeckhoffService","element","dataset","cmsId","cmsLanguage","cmsTemplatename","this","bookmarkStatus","querySelector","selectors","bookmarkButtonRemove","bookmarkButtonAdd","document","bookmarkModalSubmit","initEvents","bookmarked","removeBookmark","response","request","action","updateButtons","status","classList","add","remove","openBookmarkModal","modalEl","bookmarkModal","addEventListener","iframe","setAttribute","getAttribute","bootstrap","Modal","getOrCreateInstance","show","submitBookmarkForm","e","preventDefault","iFrameDoc","contentDocument","form","btnSubmit","click","ExportControlPlugin","modalOpened","initButtonEvents","subscribe","onMyBeckhoffEvent","evaluateLoginState","loginState","loginStatus","exportControl","showModal","modalSelector","backdrop","keyboard","event","onAcceptClick","then","updateLoginState","getInstance","hide","onDeclineClick","logout","buttonAcceptSelector","buttonDeclineSelector","randomUUID","crypto","bind","getRandomValues","rnds8","Uint8Array","rng","byteToHex","i","push","toString","slice","buf","offset","rnds","random","arr","unsafeStringify","Popover","bsOptions","clickOutsideClose","bsInstance","uuid","customClass","listenOnClickOutside","instance","setMessage","message","setContent","target","contains","Toast","selector","timeout","close","setTimeout","clearTimeout","LoginPlugin","popover","toast","p","updateView","isLoggedIn","username","initPopover","toastLoggedIn","payload","showPopover","onManuallyLoggedIn","magnificPopup","flyout","toggleMyBeckhoff","$","loginPopup","contentContainer","st","el","hasClass","loggedIn","body","querySelectorAll","dropdownUsername","forEach","innerHTML","popoverTrigger","animation","container","parentNode","content","placement","trigger","html","onFormSubmit","stopPropagation","usernameInput","passwordInput","cookieCheck","login","value","checked","plugin","template","createMyBeckhoffPlugin","addPlugin","console","error"],"sourceRoot":""}