{"mappings":"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","sources":["wwwroot/Content/scripts/viewport-size.js","wwwroot/Content/scripts/viewport-checker.js","wwwroot/Content/scripts/responsive-moving-elements.js","wwwroot/Content/scripts/responsive.js"],"sourcesContent":["/**\n * @typedef {('xxl'|'xl'|'lg'|'md'|'sm'|'xs')} ViewportSizeType\n */\n\n/** @type {{ [K in ViewportSizeType]: ViewportSizeType }} */\nconst viewportSize = {\n xxl: 'xxl',\n xl: 'xl',\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n}\nexport default viewportSize;","import viewportSize from \"./viewport-size\";\n\nconst viewportChecker = (() => {\n function isXXL() {\n return window.matchMedia(\"(min-width: 1400px)\").matches;\n }\n\n function isXL() {\n return window.matchMedia(\"(min-width: 1200px) and (max-width: 1399px)\").matches;\n }\n\n function isLG() {\n return window.matchMedia(\"(min-width: 992px) and (max-width: 1199px)\").matches;\n }\n\n function isMD() {\n return window.matchMedia(\"(min-width: 768px) and (max-width: 991px)\").matches;\n }\n\n function isSM() {\n return window.matchMedia(\"(min-width: 576px) and (max-width: 767px)\").matches;\n }\n\n function isXS() {\n return window.matchMedia(\"(max-width: 575px)\").matches;\n }\n\n function isViewportGreaterThanOrEqualTo(size) {\n switch (size) {\n case viewportSize.xxl:\n return isXXL();\n case viewportSize.xl:\n return isXL() || isXXL();\n case viewportSize.lg:\n return isLG() || isXL() || isXXL();\n case viewportSize.md:\n return isMD() || isLG() || isXL() || isXXL();\n case viewportSize.sm:\n return isSM() || isMD() || isLG() || isXL() || isXXL();\n case viewportSize.xs:\n return true;\n default:\n return false;\n }\n }\n\n function isViewportGreaterThan(size) {\n switch (size) {\n case viewportSize.xxl:\n return false;\n case viewportSize.xl:\n return isXXL();\n case viewportSize.lg:\n return isXL() || isXXL();\n case viewportSize.md:\n return isLG() || isXL() || isXXL();\n case viewportSize.sm:\n return isMD() || isLG() || isXL() || isXXL();\n case viewportSize.xs:\n return isSM() || isMD() || isLG() || isXL() || isXXL();\n default:\n return false;\n }\n }\n\n function isViewportLessThanOrEqualTo(size) {\n switch (size) {\n case viewportSize.xxl:\n return true;\n case viewportSize.xl:\n return isXS() || isSM() || isMD() || isLG() || isXL();\n case viewportSize.lg:\n return isXS() || isSM() || isMD() || isLG();\n case viewportSize.md:\n return isXS() || isSM() || isMD();\n case viewportSize.sm:\n return isXS() || isSM();\n case viewportSize.xs:\n return isXS();\n default:\n return false;\n }\n }\n\n function isViewportLessThan(size) {\n switch (size) {\n case viewportSize.xxl:\n return isXS() || isSM() || isMD() || isLG() || isXL();\n case viewportSize.xl:\n return isXS() || isSM() || isMD() || isLG();\n case viewportSize.lg:\n return isXS() || isSM() || isMD();\n case viewportSize.md:\n return isXS() || isSM();\n case viewportSize.sm:\n return isXS();\n case viewportSize.xs:\n return false;\n default:\n return false;\n }\n }\n\n\n return {\n isViewportGreaterThanOrEqualTo: isViewportGreaterThanOrEqualTo,\n isViewportGreaterThan: isViewportGreaterThan,\n isViewportLessThanOrEqualTo: isViewportLessThanOrEqualTo,\n isViewportLessThan: isViewportLessThan,\n\n getViewportSize: function () {\n if (isXS()) {\n return viewportSize.xs;\n }\n if (isSM()) {\n return viewportSize.sm;\n }\n if (isMD()) {\n return viewportSize.md;\n }\n if (isLG()) {\n return viewportSize.lg;\n }\n if (isXL()) {\n return viewportSize.xl;\n }\n if (isXXL()) {\n return viewportSize.xxl;\n }\n\n // default\n return viewportSize.xs;\n }\n }\n})();\n\n// add functions to the window object so we can call them from other scripts\nwindow.getViewportSize = viewportChecker.getViewportSize;\n\nwindow.isViewportGreaterThanOrEqualTo = viewportChecker.isViewportGreaterThanOrEqualTo;\nwindow.isViewportGreaterThan = viewportChecker.isViewportGreaterThan;\nwindow.isViewportLessThanOrEqualTo = viewportChecker.isViewportLessThanOrEqualTo;\nwindow.isViewportLessThan = viewportChecker.isViewportLessThan;\n\n\nlet exports = {\n getViewportSize: viewportChecker.getViewportSize,\n isViewportLessThanOrEqualTo: viewportChecker.isViewportLessThanOrEqualTo,\n isViewportLessThan: viewportChecker.isViewportLessThan,\n isViewportGreaterThanOrEqualTo: viewportChecker.isViewportGreaterThanOrEqualTo,\n isViewportGreaterThan: viewportChecker.isViewportGreaterThan\n};\n\nexport const getViewportSize = viewportChecker.getViewportSize;\nexport const isViewportLessThanOrEqualTo = viewportChecker.isViewportLessThanOrEqualTo;\nexport const isViewportLessThan = viewportChecker.isViewportLessThan;\nexport const isViewportGreaterThanOrEqualTo = viewportChecker.isViewportGreaterThanOrEqualTo;\nexport const isViewportGreaterThan = viewportChecker.isViewportGreaterThan;","import {getViewportSize} from './viewport-checker';\nimport viewportSize from \"./viewport-size\";\n\nconst elements = {};\nlet currentViewport;\n\nfunction setupMovingElements($) {\n $(window).on('resize', (_) => updateViewportSize(false));\n\n registerMovableElements($);\n\n updateViewportSize(true);\n\n // add functions to the window object so we can call them from other scripts\n window.addMovedViewportListener = addMovedViewportListener\n window.moveElementsToCurrentViewport = moveElementsToCurrentViewport\n}\n\nfunction updateViewportSize(initialMove) {\n const currentSize = getViewportSize();\n if (currentViewport !== currentSize) {\n moveElementsTo(currentSize, initialMove);\n $(document).trigger('viewport-changed', {from: currentViewport, to: currentSize});\n }\n currentViewport = currentSize;\n}\n\nfunction getSmallestAvailableViewport(moveableElements, size) {\n const viewportSizes = [viewportSize.xs, viewportSize.sm, viewportSize.md, viewportSize.lg, viewportSize.xl, viewportSize.xxl];\n\n // make sure we start from the current viewport size\n const startIndex = viewportSizes.indexOf(size);\n\n for (let i = startIndex; i < viewportSizes.length; i++) {\n const element = moveableElements[viewportSizes[i]]();\n if (element.length) {\n return element;\n }\n }\n\n // If no element found, default to the largest size\n return moveableElements[viewportSize.xxl]();\n}\n\nfunction moveElementsTo(currentSize, initialMove) {\n for (let key in elements) {\n if (elements.hasOwnProperty(key)) {\n const moveableElement = elements[key];\n const port = getSmallestAvailableViewport(moveableElement, currentSize);\n\n if (port.get(0) !== moveableElement.contents.parent().get(0)) {\n moveableElement.contents.appendTo(port);\n onMovedViewport(moveableElement, initialMove);\n }\n }\n }\n}\n\nfunction moveElementsToCurrentViewport(initialMove) {\n moveElementsTo(currentViewport, initialMove);\n}\n\nfunction registerMovableElements($, overwrite) {\n $('[data-responsive-movable]').each(function (index, element) {\n const $element = $(element);\n const key = $element.data('responsive-movable');\n if (elements[key] && !overwrite)\n return;\n elements[key] = {\n contents: $element.children(),\n ...generateViewportFunctions($element, key)\n };\n });\n}\n\nfunction generateViewportFunctions($element, key) {\n const viewportFunctions = Object.keys(viewportSize).reduce((functions, size) => {\n if (size !== 'xxl') {\n const targetElement = $(`[data-responsive-movable-${size}=\"${key}\"]`).eq(0);\n functions[viewportSize[size]] = function () {\n return targetElement;\n }\n } else {\n functions[viewportSize.xxl] = function () {\n return $element;\n }\n }\n return functions;\n }, {});\n return viewportFunctions;\n}\n\n// store an array of listener functions\nlet movedViewportListeners = [];\n\n/**\n * Registers a new listener to be called when the viewport is moved.\n *\n * @param {Function} fn - The listener function. This function will be called with two arguments:\n * 1. The element that was moved.\n * 2. A boolean indicating whether this was the initial move.\n */\nfunction addMovedViewportListener(fn) {\n if (typeof fn === 'function') {\n movedViewportListeners.push(fn);\n } else {\n console.error('addMoveListener expects a function');\n }\n}\n\n\n/**\n * Called when an element is moved to a different viewport.\n * This function will call all registered listeners.\n *\n * @param {Object} element - The element that was moved.\n * @param {boolean} initialMove - Indicates whether this was the initial move.\n */\nfunction onMovedViewport(element, initialMove) {\n movedViewportListeners.forEach((listener) => {\n try {\n listener(element, initialMove);\n } catch (error) {\n console.error(`An error occurred in move listener: ${error}`);\n }\n });\n}\n\n/**\n * Adds a listener function to be called when an element is moved to a different viewport.\n * The function should take two arguments:\n * - the element that was moved,\n * - a boolean indicating whether this was the initial move.\n *\n * @param {Function} fn - The listener function.\n */\nwindow.addMovedViewportListener = addMovedViewportListener;\n\n/**\n * Moves elements to the current viewport.\n * Intended to be used when the viewport size has changed.\n *\n * @param {boolean} initialMove - Indicates whether this is the initial move.\n */\nwindow.moveElementsToCurrentViewport = moveElementsToCurrentViewport;\n\nwindow.registerMovableElements = registerMovableElements;\n\nexport default setupMovingElements;\n","import setupMovingElements from './responsive-moving-elements';\n\nsetupMovingElements(jQuery, window, document);\n"],"names":["$1c19448b1eeb25a9$export$2e2bcd8739ae039","xxl","xl","lg","md","sm","xs","$56807fbd42681e7d$var$viewportChecker","isXXL","window","matchMedia","matches","isXL","isLG","isMD","isSM","isXS","isViewportGreaterThanOrEqualTo","size","isViewportGreaterThan","isViewportLessThanOrEqualTo","isViewportLessThan","getViewportSize","$56807fbd42681e7d$export$125915cfb610b3c2","$2bbe01ae30ff03fe$var$elements","$2bbe01ae30ff03fe$var$currentViewport","$2bbe01ae30ff03fe$var$updateViewportSize","initialMove","currentSize","$2bbe01ae30ff03fe$var$moveElementsTo","$","document","trigger","from","to","$2bbe01ae30ff03fe$var$getSmallestAvailableViewport","moveableElements","viewportSizes","i","indexOf","length","element","key","hasOwnProperty","moveableElement","port","get","contents","parent","appendTo","$2bbe01ae30ff03fe$var$onMovedViewport","$2bbe01ae30ff03fe$var$moveElementsToCurrentViewport","$2bbe01ae30ff03fe$var$registerMovableElements","$1","overwrite","each","index","$element","data","children","$2bbe01ae30ff03fe$var$generateViewportFunctions","Object","keys","reduce","functions","targetElement","eq","$2bbe01ae30ff03fe$var$movedViewportListeners","$2bbe01ae30ff03fe$var$addMovedViewportListener","fn","push","console","error","forEach","listener","addMovedViewportListener","moveElementsToCurrentViewport","registerMovableElements","jQuery","on","_"],"version":3,"file":"responsive.js.map"}