{"version":3,"file":"js/jsfocuspoint.js","mappings":"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","sources":["webpack://wsf-master-lrp/./src/Foundation/Core/code/Scripts/jquery.focuspoint.js"],"sourcesContent":["/**\r\n * jQuery FocusPoint; version: 1.1.3\r\n * Author: http://jonathonmenz.com\r\n * Source: https://github.com/jonom/jquery-focuspoint\r\n * Copyright (c) 2014 J. Menz; MIT License\r\n * @preserve\r\n */\r\n\r\n(function ($) {\r\n\tconst defaults = {\r\n\t\treCalcOnWindowResize: true,\r\n\t\tthrottleDuration: 17 // ms - set to 0 to disable throttling\r\n\t};\r\n\r\n\t// Setup a container instance\r\n\tconst setupContainer = function ($el) {\r\n\t\tconst imageSrc = $el.find('img').attr('src');\r\n\t\t$el.data('imageSrc', imageSrc);\r\n\r\n\t\tresolveImageSize(imageSrc, (err, dim) => {\r\n\t\t\t$el.data({\r\n\t\t\t\timageW: dim.width,\r\n\t\t\t\timageH: dim.height\r\n\t\t\t});\r\n\t\t\tadjustFocus($el);\r\n\t\t});\r\n\t};\r\n\r\n\t// Get the width and the height of an image\r\n\t// by creating a new temporary image\r\n\tvar resolveImageSize = function (src, cb) {\r\n\t\t// Create a new image and set a\r\n\t\t// handler which listens to the first\r\n\t\t// call of the 'load' event.\r\n\t\t$('').one('load', function () {\r\n\t\t\t// 'this' references to the new\r\n\t\t\t// created image\r\n\t\t\tcb(null, {\r\n\t\t\t\twidth: this.width,\r\n\t\t\t\theight: this.height\r\n\t\t\t});\r\n\t\t}).attr('src', src);\r\n\t};\r\n\r\n\t// Create a throttled version of a function\r\n\tconst throttle = function (fn, ms) {\r\n\t\tlet isRunning = false;\r\n\t\treturn function () {\r\n\t\t\tconst args = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tif (isRunning) return false;\r\n\t\t\tisRunning = true;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tisRunning = false;\r\n\t\t\t\tfn(...args);\r\n\t\t\t}, ms);\r\n\t\t};\r\n\t};\r\n\r\n\t// Calculate the new left/top values of an image\r\n\tconst calcShift = function (conToImageRatio, containerSize, imageSize, focusSize, toMinus) {\r\n\t\tconst containerCenter = Math.floor(containerSize / 2); // Container center in px\r\n\t\tconst focusFactor = (focusSize + 1) / 2; // Focus point of resize image in px\r\n\t\tconst scaledImage = Math.floor(imageSize / conToImageRatio); // Can't use width() as images may be display:none\r\n\t\tlet focus = Math.floor(focusFactor * scaledImage);\r\n\t\tif (toMinus) focus = scaledImage - focus;\r\n\t\tlet focusOffset = focus - containerCenter; // Calculate difference between focus point and center\r\n\t\tconst remainder = scaledImage - focus; // Reduce offset if necessary so image remains filled\r\n\t\tconst containerRemainder = containerSize - containerCenter;\r\n\t\tif (remainder < containerRemainder) focusOffset -= containerRemainder - remainder;\r\n\t\tif (focusOffset < 0) focusOffset = 0;\r\n\r\n\t\treturn `${focusOffset * -100 / containerSize}%`;\r\n\t};\r\n\r\n\t// Re-adjust the focus\r\n\tvar adjustFocus = function ($el) {\r\n\t\tconst imageW = $el.data('imageW');\r\n\t\tconst imageH = $el.data('imageH');\r\n\t\tconst imageSrc = $el.data('imageSrc');\r\n\r\n\t\tif (!imageW && !imageH && !imageSrc) {\r\n\t\t\treturn setupContainer($el); // Setup the container first\r\n\t\t}\r\n\r\n\t\tconst containerW = $el.width();\r\n\t\tconst containerH = $el.height();\r\n\t\tconst focusX = parseFloat($el.data('focusX'));\r\n\t\tconst focusY = parseFloat($el.data('focusY'));\r\n\t\tconst $image = $el.find('img').first();\r\n\r\n\t\t// Amount position will be shifted\r\n\t\tlet hShift = 0;\r\n\t\tlet vShift = 0;\r\n\r\n\t\tif (!(containerW > 0 && containerH > 0 && imageW > 0 && imageH > 0)) {\r\n\t\t\treturn false; // Need dimensions to proceed\r\n\t\t}\r\n\r\n\t\t// Which is over by more?\r\n\t\tconst wR = imageW / containerW;\r\n\t\tconst hR = imageH / containerH;\r\n\r\n\t\t// Reset max-width and -height\r\n\t\t$image.css({\r\n\t\t\t'max-width': '',\r\n\t\t\t'max-height': ''\r\n\t\t});\r\n\r\n\t\t// Minimize image while still filling space\r\n\t\tif (imageW > containerW && imageH > containerH) {\r\n\t\t\t$image.css((wR > hR) ? 'max-height' : 'max-width', '100%');\r\n\t\t}\r\n\r\n\t\tif (wR > hR) {\r\n\t\t\thShift = calcShift(hR, containerW, imageW, focusX);\r\n\t\t} else if (wR < hR) {\r\n\t\t\tvShift = calcShift(wR, containerH, imageH, focusY, true);\r\n\t\t}\r\n\r\n\t\t$image.css({\r\n\t\t\ttop: vShift,\r\n\t\t\tleft: hShift\r\n\t\t});\r\n\t};\r\n\r\n\tconst $window = $(window);\r\n\r\n\tconst focusPoint = function ($el, settings) {\r\n\t\tconst thrAdjustFocus = settings.throttleDuration ?\r\n\t\t\tthrottle(() => { adjustFocus($el); }, settings.throttleDuration)\r\n\t\t\t: function () { adjustFocus($el); };// Only throttle when desired\r\n\t\tlet isListening = false;\r\n\r\n\t\tadjustFocus($el); // Focus image in container\r\n\r\n\t\t// Expose a public API\r\n\t\treturn {\r\n\r\n\t\t\tadjustFocus() {\r\n\t\t\t\treturn adjustFocus($el);\r\n\t\t\t},\r\n\r\n\t\t\twindowOn() {\r\n\t\t\t\tif (isListening) return;\r\n\t\t\t\t// Recalculate each time the window is resized\r\n\t\t\t\t$window.on('resize', thrAdjustFocus);\r\n\t\t\t\treturn isListening = true;\r\n\t\t\t},\r\n\r\n\t\t\twindowOff() {\r\n\t\t\t\tif (!isListening) return;\r\n\t\t\t\t// Stop listening to the resize event\r\n\t\t\t\t$window.off('resize', thrAdjustFocus);\r\n\t\t\t\tisListening = false;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t};\r\n\t};\r\n\r\n\t$.fn.focusPoint = function (optionsOrMethod) {\r\n\t\t// Shortcut to functions - if string passed assume method name and execute\r\n\t\tif (typeof optionsOrMethod === 'string') {\r\n\t\t\treturn this.each(function () {\r\n\t\t\t\tconst $el = $(this);\r\n\t\t\t\t$el.data('focusPoint')[optionsOrMethod]();\r\n\t\t\t});\r\n\t\t}\r\n\t\t// Otherwise assume options being passed and setup\r\n\t\tconst settings = $.extend({}, defaults, optionsOrMethod);\r\n\t\treturn this.each(function () {\r\n\t\t\tconst $el = $(this);\r\n\t\t\tconst fp = focusPoint($el, settings);\r\n\t\t\t// Stop the resize event of any previous attached\r\n\t\t\t// focusPoint instances\r\n\t\t\tif ($el.data('focusPoint')) $el.data('focusPoint').windowOff();\r\n\t\t\t$el.data('focusPoint', fp);\r\n\t\t\tif (settings.reCalcOnWindowResize) fp.windowOn();\r\n\t\t});\r\n\t};\r\n\r\n\t$.fn.adjustFocus = function () {\r\n\t\t// Deprecated v1.2\r\n\t\treturn this.each(function () {\r\n\t\t\tadjustFocus($(this));\r\n\t\t});\r\n\t};\r\n}(jQuery));\r\n"],"names":["$","defaults","reCalcOnWindowResize","throttleDuration","setupContainer","$el","imageSrc","find","attr","data","resolveImageSize","err","dim","imageW","width","imageH","height","adjustFocus","src","cb","one","this","throttle","fn","ms","isRunning","args","Array","prototype","slice","call","arguments","setTimeout","calcShift","conToImageRatio","containerSize","imageSize","focusSize","toMinus","containerCenter","Math","floor","focusFactor","scaledImage","focus","focusOffset","remainder","containerRemainder","containerW","containerH","focusX","parseFloat","focusY","$image","first","hShift","vShift","wR","hR","css","top","left","$window","window","focusPoint","settings","thrAdjustFocus","isListening","windowOn","on","windowOff","off","optionsOrMethod","each","extend","fp","jQuery"],"sourceRoot":""}