{"version":3,"sources":["webpack:///./app/components/m/background-image-hotspots/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/text-overflow-clamp/index.js","webpack:///min-document (ignored)"],"names":["$","fn","backgroundImageHotspots","args","arguments","length","undefined","TIP_SPOT_MARGIN","TIP_WRAPPER_THRESHOLD","getComponents","$hotspot","$tip","find","$spot","$line","init","spot","component","spotX","parseInt","data","spotY","css","left","top","reorder","$wrapper","wrapperOffset","offset","$hotspots","each","i","hotspot","on","addClass","spotOffset","tipOffset","width","getBoundingClientRect","tipWidth","spotRect","Math","abs","radius","tipRect","right","positions","height","positionBeneath","tip","outerHeight","positionAbove","line","bottom","clonedSpot","removeClass","animate","setTimeout","hotspotsImage","hasClass","sliderMain","closest","swiper","updateAutoHeight","txtTip","document","querySelectorAll","textContent","lineClamp"],"mappings":"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AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,0DAAiB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;AAC1B,uBAAuB;AACvB,0BAA0B;AAC1B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,qB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;;;;;;;;;;;;AChIA,e","file":"background-image-hotspots.chunk.js","sourcesContent":["import { icon } from '../../a/icon';\r\nimport lineClamp from 'text-overflow-clamp';\r\n\r\n/**\r\n * jQuery M-081 Hotspots Plugin\r\n * 12.06.2019 - wha\r\n */\r\n$.fn.backgroundImageHotspots = function (args = {}) {\r\n if (!this) {\r\n return false;\r\n }\r\n\r\n // Defines the margin between the spot and its tip\r\n const TIP_SPOT_MARGIN = 50;\r\n // Defines the min margin a tip must have on either\r\n // the right or left edge of the wrapper\r\n const TIP_WRAPPER_THRESHOLD = 15;\r\n\r\n /**\r\n * Return the tip, spot and line elements\r\n * of a single hotspot\r\n * @param $hotspot\r\n * @returns {{$tip, $line, $spot}}\r\n */\r\n const getComponents = ($hotspot) => {\r\n return {\r\n $tip: $hotspot.find('.hotspot__tip'),\r\n $spot: $hotspot.find('.hotspot__spot'),\r\n $line: $hotspot.find('.hotspot__line'),\r\n };\r\n };\r\n\r\n /**\r\n *\r\n * @param spot\r\n * @param component\r\n */\r\n const init = (spot, component) => {\r\n const spotX = parseInt(spot.data('sx'), 10);\r\n const spotY = parseInt(spot.data('sy'), 10);\r\n // get hotspot elements\r\n const { $tip, $spot, $line } = getComponents(spot);\r\n\r\n // set positions for elements\r\n $tip.css({ left: `${spotX}%` });\r\n $spot.css({\r\n left: `${spotX}%`,\r\n top: `${spotY}%`,\r\n });\r\n $line.css('left', `${spotX}%`);\r\n };\r\n\r\n /**\r\n *\r\n * @param component\r\n */\r\n const reorder = (component) => {\r\n const $wrapper = $(component).find('.hotspots__wrapper');\r\n const wrapperOffset = $wrapper.offset();\r\n // get all hotspots\r\n const $hotspots = component.find('.hotspot');\r\n\r\n //\r\n $hotspots.each((i, hotspot) => {\r\n //\r\n const $hotspot = $(hotspot);\r\n // get hotspot elements\r\n const { $tip, $spot, $line } = getComponents($hotspot);\r\n\r\n $hotspot.find('.hotspot__spot').on('click', function () {\r\n $(this).addClass('hotspot--clicked');\r\n });\r\n\r\n // abort if the hotspot only consists of a spot, so\r\n // there is not necessity to proceed from here.\r\n if ($tip.length === 0 || $line.length === 0) return;\r\n\r\n const spotOffset = $spot.offset();\r\n const tipOffset = $tip.offset();\r\n const { width } = $spot[0].getBoundingClientRect();\r\n const tipWidth = $tip[0].getBoundingClientRect().width;\r\n\r\n const spotRect = {\r\n top: Math.abs(wrapperOffset.top - spotOffset.top) + width * 0.5,\r\n left: Math.abs(wrapperOffset.left - spotOffset.left) + width * 0.5,\r\n radius: width,\r\n };\r\n\r\n const tipRect = {\r\n left: (wrapperOffset.left - tipOffset.left) * -1,\r\n right: (wrapperOffset.left - tipOffset.left - tipWidth) * -1,\r\n };\r\n\r\n let positions;\r\n // check whether the current spot are under or\r\n // above the middle within the whole component. True\r\n // if under the middle.\r\n if (spotRect.top > $wrapper.height() / 2) {\r\n // get positions for positioning the tooltip\r\n // under the spot\r\n positions = positionBeneath(spotRect, $tip);\r\n\r\n // check if the tooltip will be out of the module. if\r\n // so position the tooltip above the spot.\r\n if (positions.tip.top + $tip.outerHeight(true) >= $wrapper.outerHeight()) {\r\n positions = positionAbove(spotRect, $tip);\r\n }\r\n } else {\r\n // get positions for positioning the tooltip\r\n // above the spot\r\n positions = positionAbove(spotRect, $tip);\r\n\r\n // check if the tooltip will be out of the module. if\r\n // so position the tooltip beneath the spot.\r\n if (positions.tip.top <= 0) {\r\n positions = positionBeneath(spotRect, $tip);\r\n }\r\n }\r\n\r\n // re-position tip if it will be out\r\n // of the left edge\r\n if (tipRect.left <= TIP_WRAPPER_THRESHOLD) {\r\n $tip.css('left', tipWidth * 0.5 + TIP_WRAPPER_THRESHOLD);\r\n }\r\n\r\n // re-position tip if it will be out\r\n // of the right edge\r\n if (tipRect.right >= $wrapper.width() - TIP_WRAPPER_THRESHOLD) {\r\n $tip.css('left', $wrapper.width() - TIP_WRAPPER_THRESHOLD - tipWidth * 0.5);\r\n }\r\n\r\n // set calculated positions\r\n $tip.css('top', positions.tip.top);\r\n $line.css('top', positions.line.top);\r\n $line.css('bottom', positions.line.bottom);\r\n // set height of line\r\n $line.css('height', Math.abs(positions.line.bottom - positions.line.top));\r\n });\r\n };\r\n\r\n /**\r\n * Get the positions for the elements of a hotspot to\r\n * position the tooltip above the spot.\r\n * @param spotRect The rect of the spot the tooltip should be shown for\r\n * @param $tip The tooltip element\r\n * @returns {{line: {top: number, bottom: number}, tip: {top: number}}}\r\n */\r\n const positionAbove = (spotRect, $tip) => {\r\n return {\r\n tip: {\r\n top: spotRect.top - spotRect.radius * 0.5 - $tip.outerHeight(true) - TIP_SPOT_MARGIN,\r\n },\r\n line: {\r\n top: spotRect.top - spotRect.radius * 0.5 - TIP_SPOT_MARGIN,\r\n bottom: spotRect.top - spotRect.radius * 0.5 + 15,\r\n },\r\n };\r\n };\r\n\r\n /**\r\n * Get the positions for the elements of a hotspot to\r\n * position the tooltip beneath the spot.\r\n * @param spotRect The rect of the spot the tooltip should be shown for\r\n * @param $tip The tooltip element\r\n * @returns {{line: {top: number, bottom: number}, tip: {top: number}}}\r\n */\r\n const positionBeneath = (spotRect, $tip) => {\r\n return {\r\n tip: {\r\n top: spotRect.top + spotRect.radius * 0.5 + TIP_SPOT_MARGIN,\r\n },\r\n line: {\r\n top: spotRect.top + spotRect.radius * 0.5 - 15,\r\n bottom: spotRect.top + spotRect.radius * 0.5 + TIP_SPOT_MARGIN,\r\n },\r\n };\r\n };\r\n\r\n // Modal Handler\r\n $('.modal--hotspots').on('hide.bs.modal', function () {\r\n const clonedSpot = $('.page > .hotspot__spot');\r\n\r\n clonedSpot.removeClass('hotspot--opened').animate(250);\r\n\r\n setTimeout(() => {\r\n $('.hotspot__spot.hotspot--clicked').addClass('hotspot--wasClicked').removeClass('hotspot--clicked');\r\n }, 500);\r\n });\r\n\r\n // ===========================================================================\r\n // == MAIN jQuery Plugin Function ==\r\n // ===========================================================================\r\n\r\n // Iterate over all components\r\n return this.each(function () {\r\n const component = $(this);\r\n const hotspotsImage = component.find('.hotspots__image');\r\n\r\n if (component.hasClass('background-image-hotspots')) {\r\n // Horizontal Hotspots (A)\r\n component.find('.hotspot').each(function () {\r\n init($(this), component);\r\n });\r\n reorder(component);\r\n }\r\n\r\n // Display component after image is loaded\r\n hotspotsImage\r\n .on('lazyloaded', function () {\r\n // Recalc sliderAutoHeight after image is loaded\r\n const sliderMain = $(this).closest('.hotspots-slider__main');\r\n if (sliderMain.length > 0) {\r\n sliderMain[0].swiper.updateAutoHeight();\r\n }\r\n // Cut text with ellipsis\r\n for (const txtTip of document.querySelectorAll('.hotspot__tip > div')) {\r\n txtTip.textContent += ' ';\r\n lineClamp(txtTip, 2);\r\n }\r\n // Display hidden component\r\n component.css('opacity', 1);\r\n\r\n // reorder hotspots\r\n reorder(component);\r\n })\r\n .addClass('lazyload');\r\n });\r\n};\r\n\r\n$('.background-image-hotspots').backgroundImageHotspots();\r\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","// http://codepen.io/Merri/pen/Dsuim\n/**\n * TextOverflowClamp.js\n *\n * Updated 2013-05-09 to remove jQuery dependancy.\n * But be careful with webfonts!\n */\n\n// nieve window and document polyfill\nvar window = {};\nvar document = require('global/document');\n\n// bind function support for older browsers without it\n// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== \"function\") {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n throw new TypeError(\"Function.prototype.bind - what is trying to be bound is not callable\");\n }\n \n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function () {},\n fBound = function () {\n return fToBind.apply(this instanceof fNOP && oThis\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n \n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n \n return fBound;\n };\n}\n\n// the actual meat is here\n(function(w, d){\n\tvar clamp, measure, text, lineWidth,\n\t\tlineStart, lineCount, wordStart,\n\t\tline, lineText, wasNewLine,\n ce = d.createElement.bind(d),\n ctn = d.createTextNode.bind(d);\n\t\n\t// measurement element is made a child of the clamped element to get it's style\n\tmeasure = ce('span');\n \n\t(function(s){\n\t\ts.position = 'absolute'; // prevent page reflow\n\t\ts.whiteSpace = 'pre'; // cross-browser width results\n\t\ts.visibility = 'hidden'; // prevent drawing\n\t})(measure.style);\n\t\n\tclamp = function (el, lineClamp) {\n // make sure the element belongs to the document\n if(!el.ownerDocument || !el.ownerDocument === d) return;\n\t\t// reset to safe starting values\n\t\tlineStart = wordStart = 0;\n\t\tlineCount = 1;\n\t\twasNewLine = false; \n\t\tlineWidth = el.clientWidth;\n\t\t// get all the text, remove any line changes\n\t\ttext = (el.textContent || el.innerText).replace(/\\n/g, ' ');\n\t\t// remove all content\n\t\twhile(el.firstChild !== null)\n\t\t\tel.removeChild(el.firstChild);\n\t\t// add measurement element within so it inherits styles\n\t\tel.appendChild(measure);\n\t\t// http://ejohn.org/blog/search-and-dont-replace/\n\t\ttext.replace(/ /g, function(m, pos) {\n\t\t\t// ignore any further processing if we have total lines\n if(lineCount === lineClamp) return;\n\t\t\t// create a text node and place it in the measurement element\n\t\t\tmeasure.appendChild(ctn(text.substr(lineStart, pos - lineStart)));\n\t\t\t// have we exceeded allowed line width?\n\t\t\tif(lineWidth < measure.clientWidth) {\n\t\t\t\tif(wasNewLine) {\n\t\t\t\t\t// we have a long word so it gets a line of it's own\n\t\t\t\t\tlineText = text.substr(lineStart, pos + 1 - lineStart);\n\t\t\t\t\t// next line start position\n\t\t\t\t\tlineStart = pos + 1;\n\t\t\t\t} else {\n\t\t\t\t\t// grab the text until this word\n\t\t\t\t\tlineText = text.substr(lineStart, wordStart - lineStart);\n\t\t\t\t\t// next line start position\n\t\t\t\t\tlineStart = wordStart;\n\t\t\t\t}\n\t\t\t\t// create a line element\n\t\t\t\tline = ce('span');\n\t\t\t\t// add text to the line element\n\t\t\t\tline.appendChild(ctn(lineText));\n\t\t\t\t// add the line element to the container\n\t\t\t\tel.appendChild(line);\n\t\t\t\t// yes, we created a new line\n\t\t\t\twasNewLine = true;\n lineCount++;\n\t\t\t} else {\n\t\t\t\t// did not create a new line\n\t\t\t\twasNewLine = false;\n\t\t\t}\n\t\t\t// remember last word start position\n\t\t\twordStart = pos + 1;\n\t\t\t// clear measurement element\n\t\t\tmeasure.removeChild(measure.firstChild);\n\t\t});\n\t\t// remove the measurement element from the container\n\t\tel.removeChild(measure);\n\t\t// create the last line element\n\t\tline = ce('span');\n\t\t// give styles required for text-overflow to kick in\n\t\t(function(s){\n\t\t\ts.display = 'inline-block';\n\t\t\ts.overflow = 'hidden';\n\t\t\ts.textOverflow = 'ellipsis';\n\t\t\ts.whiteSpace = 'nowrap';\n\t\t\ts.width = '100%';\n\t\t})(line.style);\n\t\t// add all remaining text to the line element\n\t\tline.appendChild(ctn(text.substr(lineStart)));\n\t\t// add the line element to the container\n\t\tel.appendChild(line);\n\t}\n\tw.clamp = clamp;\n})(window, document);\n\n// export npm ready clamp function\nmodule.exports = window.clamp;\n","/* (ignored) */"],"sourceRoot":""}