{"version":3,"sources":["webpack:///./src/plugins/click-outside.plugin.ts","webpack:///./src/core/translate.mixin.ts","webpack:///./src/core/responsive/breakpoints/breakpoint.mixin.ts","webpack:///./src/core/responsive/breakpoints/breakpoint.service.ts","webpack:///./src/core/dictionary.service.ts","webpack:///./src/core/responsive/viewport/dom-mutation.service.ts","webpack:///./src/core/responsive/viewport/viewport-events.service.ts"],"names":["use","TranslateMixin","key","args","get","useTranslations","t","Worker","callback","this","checkActiveBreakpointThrottled","handleViewportEvents","bind","throttleTimer","trailing","setCallback","removeCallback","viewport","currentWinWidth","width","winWidth","BreakpointsMixin","large","medium","small","$$breakpointWorker","breakpoints","_","$set","breakpointIsActive","isActiveBreakpoint","destroy","useBreakpoints","value","addBreakpoint","name","min","max","normalizeBreakpoints","bps","normalizedBps","split","arrayOfBreakpointNames","activeBreakpoint","getActiveBreakpoint","Math","window","innerWidth","document","documentElement","clientWidth","bp","DictionaryService","_app","dictionary","Error","translated","undefined","format","reduce","result","arg","ix","replace","DomMutationService","MutationObserver","WebKitMutationObserver","eventListenerSupported","addEventListener","obj","obs","mutations","observer","addedNodes","length","removedNodes","observe","childList","subtree","getWindowWidth","height","innerHeight","scrollX","getPageOffset","scrollY","on","scrollHandler","resizeHandler","requestTick","callbackIndexer","tickCallbacks","index","axis","pageYOffset","scrollTop","pageXOffset","scrollLeft","ticking","Object","keys","forEach","call","requestAnimationFrame","tick"],"mappings":"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","file":"js/chunk-common.8c5c1f31.js","sourcesContent":["\r\nimport Vue from \"vue\";\r\nimport vClickOutside from \"v-click-outside\";\r\n\r\nVue.use(vClickOutside);\r\n","import Vue from 'vue';\r\nimport { Mixin } from 'vue-mixin-decorator';\r\nimport DictionaryService from './dictionary.service';\r\n\r\n@Mixin\r\nexport class TranslateMixin extends Vue {\r\n t(key: string, args: string[] = []) {\r\n return DictionaryService.get(key, args);\r\n }\r\n}\r\n\r\nexport function useTranslations() {\r\n function t(key: string, args: string[] = []) {\r\n return DictionaryService.get(key, args);\r\n }\r\n\r\n return { t };\r\n}\r\n","import Vue, { onBeforeUnmount, ref } from 'vue';\r\nimport viewportEvents from '../viewport/viewport-events.service';\r\nimport breakpointService from './breakpoint.service';\r\nimport { forEach, throttle } from 'lodash';\r\nimport { Mixin } from 'vue-mixin-decorator';\r\n\r\nclass Worker {\r\n private throttleTimer = 1000;\r\n private winWidth = 0;\r\n private checkActiveBreakpointThrottled: any;\r\n\r\n constructor(private callback: any) {\r\n this.checkActiveBreakpointThrottled = throttle(\r\n this.handleViewportEvents.bind(this),\r\n this.throttleTimer,\r\n { trailing: true }\r\n );\r\n\r\n viewportEvents.setCallback(this.checkActiveBreakpointThrottled);\r\n }\r\n\r\n public destroy() {\r\n viewportEvents.removeCallback(this.checkActiveBreakpointThrottled);\r\n }\r\n\r\n public handleViewportEvents(viewport: any) {\r\n const currentWinWidth = viewport.width;\r\n if (currentWinWidth === this.winWidth) {\r\n return;\r\n }\r\n this.winWidth = currentWinWidth;\r\n this.callback();\r\n }\r\n}\r\n\r\n@Mixin\r\nexport class BreakpointsMixin extends Vue {\r\n public breakpointIsActive : {\r\n large: boolean,\r\n medium: boolean,\r\n small: boolean,\r\n } = {\r\n large: false,\r\n medium: false,\r\n small: false\r\n };\r\n\r\n private $$breakpointWorker: Worker;\r\n public created() {\r\n this.$$breakpointWorker = new Worker(() => {\r\n forEach(breakpointService.breakpoints, (_, key) => {\r\n this.$set(\r\n this.breakpointIsActive,\r\n key,\r\n breakpointService.isActiveBreakpoint(key)\r\n );\r\n });\r\n });\r\n }\r\n\r\n get isLargeBreakpoint() {\r\n return breakpointService.isActiveBreakpoint('large');\r\n }\r\n\r\n get isSmallBreakpoint() {\r\n return breakpointService.isActiveBreakpoint('small');\r\n }\r\n\r\n public beforeDestroy() {\r\n if (this.$$breakpointWorker) {\r\n this.$$breakpointWorker.destroy();\r\n this.$$breakpointWorker = null;\r\n }\r\n }\r\n};\r\n\r\nexport default function useBreakpoints() {\r\n const breakpointIsActive = ref<{\r\n large: boolean,\r\n medium: boolean,\r\n small: boolean,\r\n }>({\r\n large: false,\r\n medium: false,\r\n small: false\r\n });\r\n\r\n let $$breakpointWorker = new Worker(() => {\r\n forEach(breakpointService.breakpoints, (_, key) => {\r\n breakpointIsActive.value[key] = breakpointService.isActiveBreakpoint(key);\r\n });\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n if ($$breakpointWorker) {\r\n $$breakpointWorker.destroy();\r\n $$breakpointWorker = null;\r\n }\r\n });\r\n\r\n return breakpointIsActive;\r\n}\r\n","import { findKey, includes, isArray, isString, map, trim } from \"lodash\";\r\n\r\nconst breakpoints: any = {};\r\n\r\nexport function addBreakpoint(name: string, min: number, max: number) {\r\n breakpoints[name] = {\r\n min,\r\n max\r\n };\r\n return;\r\n}\r\n\r\nfunction normalizeBreakpoints(bps: string) {\r\n const normalizedBps = isString(bps)\r\n ? bps.split(\",\")\r\n : isArray(bps) ? bps : [];\r\n return map(normalizedBps, trim);\r\n}\r\n\r\nfunction isActiveBreakpoint(bps: string) {\r\n const arrayOfBreakpointNames = normalizeBreakpoints(bps);\r\n const activeBreakpoint = getActiveBreakpoint();\r\n return includes(arrayOfBreakpointNames, activeBreakpoint);\r\n}\r\n\r\nfunction getActiveBreakpoint(): string {\r\n const width = Math.max(\r\n window.innerWidth,\r\n window.document.documentElement.clientWidth\r\n );\r\n\r\n const activeBreakpoint = findKey(breakpoints, (bp) => {\r\n return bp.min <= width && bp.max >= width;\r\n });\r\n\r\n return activeBreakpoint;\r\n}\r\n\r\nexport default {\r\n breakpoints,\r\n normalizeBreakpoints,\r\n isActiveBreakpoint,\r\n getActiveBreakpoint\r\n};\r\n","declare var window: IWindow;\r\nclass DictionaryService {\r\n constructor() {\r\n if (!window._app.dictionary) {\r\n throw new Error(\"### Dictionary not set ###\");\r\n }\r\n }\r\n public get(key: string, args: string[] = []) {\r\n const translated = window._app.dictionary[key];\r\n if (translated === undefined || translated === null) {\r\n console.warn(`### Key '${key}' not found in dictionary ###`);\r\n return key;\r\n }\r\n return this.format(translated, args);\r\n }\r\n\r\n private format(translated, args: string[] = []): string {\r\n return args.reduce((result, arg, ix) => {\r\n return result.replace(`{${ix}}`, arg);\r\n }, translated);\r\n }\r\n}\r\n\r\nexport default new DictionaryService();\r\n","class DomMutationService {\r\n\r\n public MutationObserver;\r\n public eventListenerSupported;\r\n constructor() {\r\n this.MutationObserver = (window as any).MutationObserver || (window as any).WebKitMutationObserver;\r\n this.eventListenerSupported = window.addEventListener;\r\n }\r\n\r\n observe(obj, callback) {\r\n if (this.MutationObserver) {\r\n const obs = new this.MutationObserver((mutations, observer) => {\r\n if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {\r\n callback();\r\n }\r\n });\r\n obs.observe(obj, {childList: true, subtree: true});\r\n } else if (this.eventListenerSupported) {\r\n obj.addEventListener(\"DOMNodeInserted\", callback, false);\r\n obj.addEventListener(\"DOMNodeRemoved\", callback, false);\r\n }\r\n }\r\n}\r\n\r\nexport default new DomMutationService();\r\n","import domMutation from './dom-mutation.service';\r\nimport $ from 'cash-dom';\r\n\r\nclass ViewportEventsService {\r\n public ticking = false;\r\n public tickCallbacks = {};\r\n public callbackIndexer = 0;\r\n public viewport = {\r\n width: this.getWindowWidth(),\r\n height: window.innerHeight,\r\n scrollX: this.getPageOffset('x'),\r\n scrollY: this.getPageOffset('y')\r\n };\r\n\r\n constructor() {\r\n $(window)\r\n .on('scroll', this.scrollHandler.bind(this))\r\n .on('resize', this.resizeHandler.bind(this))\r\n .on('orientationchange', this.resizeHandler.bind(this));\r\n\r\n domMutation.observe(document, this.requestTick.bind(this));\r\n this.requestTick();\r\n }\r\n\r\n setCallback(callback): number {\r\n this.callbackIndexer++;\r\n this.tickCallbacks[this.callbackIndexer] = callback;\r\n return this.callbackIndexer;\r\n }\r\n\r\n removeCallback(index: number) {\r\n delete this.tickCallbacks[index];\r\n }\r\n\r\n getPageOffset(axis) {\r\n return axis === 'y'\r\n ? window.pageYOffset || document.documentElement.scrollTop\r\n : window.pageXOffset || document.documentElement.scrollLeft;\r\n }\r\n\r\n tick() {\r\n this.ticking = false;\r\n Object\r\n .keys(this.tickCallbacks)\r\n .forEach(key => this.tickCallbacks[key] && this.tickCallbacks[key].call(this.tickCallbacks[key], this.viewport));\r\n }\r\n\r\n requestTick() {\r\n if (!this.ticking) {\r\n requestAnimationFrame(this.tick.bind(this));\r\n }\r\n this.ticking = true;\r\n }\r\n\r\n scrollHandler() {\r\n this.viewport.scrollX = this.getPageOffset('x');\r\n this.viewport.scrollY = this.getPageOffset('y');\r\n this.requestTick();\r\n }\r\n\r\n resizeHandler() {\r\n this.viewport.width = this.getWindowWidth();\r\n this.viewport.height = window.innerHeight;\r\n this.requestTick();\r\n }\r\n\r\n getWindowWidth() {\r\n return Math.max(window.innerWidth, window.document.documentElement.clientWidth);\r\n }\r\n}\r\n\r\nexport default new ViewportEventsService();\r\n"],"sourceRoot":""}