{"version":3,"sources":["webpack:///D:/a/1/s/frontend/src/views/blocks/quoteBrochureForm/js/quoteBrochureForm.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/isObject.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_root.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_Symbol.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/throttle.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/debounce.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/now.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_freeGlobal.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/toNumber.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_baseTrim.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_trimmedEndIndex.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/isSymbol.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_baseGetTag.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_getRawTag.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/_objectToString.js","webpack:///D:/a/1/s/frontend/node_modules/lodash/isObjectLike.js"],"names":["_utils","__webpack_require__","_throttle","require","QuoteBrochureForm","element","_this","this","_classCallCheck3","default","$element","$","isSticky","data","$clone","removeClone","remove","css","visibility","checkElement","utils","checkBP","window","scrollY","innerHeight","offset","top","height","clone","attr","insertBefore","position","bottom","left","right","zIndex","on","module","exports","value","type","freeGlobal","freeSelf","self","Object","root","Function","Symbol","debounce","isObject","FUNC_ERROR_TEXT","func","wait","options","leading","trailing","TypeError","maxWait","now","toNumber","nativeMax","Math","max","nativeMin","min","lastArgs","lastThis","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","leadingEdge","clearTimeout","cancel","flush","Date","global","baseTrim","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","test","slice","trimmedEndIndex","reTrimStart","string","replace","reWhitespace","index","length","charAt","baseGetTag","isObjectLike","symbolTag","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","isOwn","call","tag","unmasked","e"],"mappings":"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","file":"block-76.b9f88d4cffa17521b332.js","sourcesContent":["const NS = 'QuoteBrochureForm';\nconst CLS = 'quoteBrochureForm';\nconst BLK = '.' + CLS + '-';\n\nimport {utils} from '../../../../global/js/utils';\n\nlet _throttle = require('lodash/throttle');\n\nexport class QuoteBrochureForm {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\n\t\tthis.isSticky = this.$element.data('is-sticky') === true;\n\n\t\tif(this.isSticky) {\n\t\t\tlet $clone;\n\n\t\t\tlet removeClone = () => {\n\t\t\t\tif($clone) {\n\t\t\t\t\t$clone.remove();\n\t\t\t\t\t$clone = null;\n\t\t\t\t\tthis.$element.css({\n\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet addClone = () => {\n\t\t\t\t$clone = this.$element.clone();\n\t\t\t\t$clone.attr('data-sticky-clone', 'true');\n\t\t\t\t$clone.insertBefore(this.$element);\n\n\t\t\t\t$clone.css({\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\tzIndex: 50,\n\t\t\t\t});\n\t\t\t\tthis.$element.css({\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tlet checkElement = () => {\n\t\t\t\tif(utils.checkBP('md', true)) {\n\t\t\t\t\tlet windowBottom = window.scrollY + window.innerHeight;\n\t\t\t\t\tlet elementBottom = this.$element.offset().top + this.$element.height();\n\n\t\t\t\t\t// If the non-cloned elemement offset bottom is above the bottom part of the window, remove the cloned element\n\t\t\t\t\tif(windowBottom > elementBottom) {\n\t\t\t\t\t\tremoveClone();\n\t\t\t\t\t// Add back the cloned element assuming the cloned element is removed\n\t\t\t\t\t} else if(!$clone) {\n\t\t\t\t\t\taddClone();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tremoveClone();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(window).on('scroll', _throttle(() => {\n\t\t\t\tcheckElement();\n\t\t\t}, 50));\n\n\t\t\t$(window).on('resize', _throttle(() => {\n\t\t\t\tcheckElement();\n\t\t\t}, 250));\n\t\t}\n\t}\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n"],"sourceRoot":""}