{"version":3,"file":"static/chunks/43.217b3a9c2b7c7ca3.js","mappings":"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","sources":["webpack://_N_E/./node_modules/lodash/_Symbol.js","webpack://_N_E/./node_modules/lodash/_baseGetTag.js","webpack://_N_E/./node_modules/lodash/_baseTrim.js","webpack://_N_E/./node_modules/lodash/_freeGlobal.js","webpack://_N_E/./node_modules/lodash/_getRawTag.js","webpack://_N_E/./node_modules/lodash/_objectToString.js","webpack://_N_E/./node_modules/lodash/_root.js","webpack://_N_E/./node_modules/lodash/_trimmedEndIndex.js","webpack://_N_E/./node_modules/lodash/debounce.js","webpack://_N_E/./node_modules/lodash/isObject.js","webpack://_N_E/./node_modules/lodash/isObjectLike.js","webpack://_N_E/./node_modules/lodash/isSymbol.js","webpack://_N_E/./node_modules/lodash/now.js","webpack://_N_E/./node_modules/lodash/throttle.js","webpack://_N_E/./node_modules/lodash/toNumber.js","webpack://_N_E/./adapters/helpers/Hooks.js","webpack://_N_E/./adapters/helpers/Scroll.js","webpack://_N_E/./components/BrushConfigurator/BrushConfigurator.js","webpack://_N_E/./adapters/helpers/Array.js","webpack://_N_E/./components/Label/Label.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/objectWithoutProperties.js","webpack://_N_E/./node_modules/next/dist/compiled/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://_N_E/"],"sourcesContent":["var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","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","/** 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 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","/**\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","/**\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","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 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","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 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","import React, { useState, useEffect, useLayoutEffect } from 'react';\n\n// https://github.com/streamich/react-use/blob/master/docs/useIsomorphicLayoutEffect.md\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport function useMatchMedia(mediaQueryString, initialValue = null) {\n const [match, setMatch] = useState(initialValue);\n\n useEffect(\n () => {\n if(!window.matchMedia) {\n return;\n }\n\n function handleMatch(event) {\n setMatch(event.matches);\n }\n\n const matchMedia = window.matchMedia(mediaQueryString);\n\n setMatch(matchMedia.matches);\n matchMedia.addListener(handleMatch);\n\n return () => {\n matchMedia.removeListener(handleMatch);\n };\n },\n [mediaQueryString]\n );\n\n return match;\n}\n\nexport const mediaQueryHOC = (Component) => {\n function MediaQueryHOC(props) {\n const isXSmall = useMatchMedia('(max-width: 375px)');\n const isSmall = useMatchMedia('(max-width: 479px)');\n const isMedium = useMatchMedia('(max-width: 767px)');\n const isLarge = useMatchMedia('(max-width: 991px)');\n const isXLarge = useMatchMedia('(max-width: 1023px)');\n return (\n \n );\n }\n return MediaQueryHOC;\n};\n\nlet listeners = [];\nlet state = { currentProductIndex: 0};\n\n\nconst setState = (newState) => {\n state = { ...state, ...newState };\n listeners.forEach((listener) => {\n listener(state);\n });\n};\n\nexport const updateCurrentProductIndex = () => {\n const newListener = useState()[1];\n useEffect(() => {\n listeners.push(newListener);\n }, []);\n return [state, setState];\n};\n","let smoothScrollId = null;\nlet smoothScrollStartY = 0;\nlet smoothScrollDeltaY = 0;\nlet smoothScrollStartTime = 0;\nlet smoothScrollDuration = 400;\n\nexport function scrollIntoView(element, options = {}) {\n smoothScrollStartY = window.scrollY || window.pageYOffset || 0;\n smoothScrollDeltaY = element.getBoundingClientRect().top;\n\n const headerElement = document.querySelector('.zone-header');\n const productSubNavElement = document.querySelector('.ob-product-sub-nav');\n\n if (headerElement) {\n smoothScrollDeltaY -= headerElement.getBoundingClientRect().bottom;\n\n if (productSubNavElement) {\n smoothScrollDeltaY -= productSubNavElement.getBoundingClientRect().bottom;\n }\n }\n\n if (options.behavior === 'smooth' && typeof requestAnimationFrame !== 'undefined') {\n smoothScrollStartTime = Date.now();\n\n if (smoothScrollId == null) {\n smoothScrollStep();\n }\n } else {\n if (smoothScrollId != null) {\n cancelAnimationFrame(smoothScrollId);\n smoothScrollId = null;\n }\n\n window.scrollTo(window.scrollX, null);\n }\n}\n\nfunction smoothScrollStep() {\n const elapsed = Date.now() - smoothScrollStartTime;\n const t = elapsed / smoothScrollDuration;\n\n if (t < 1) {\n smoothScrollId = requestAnimationFrame(smoothScrollStep);\n window.scrollTo(window.scrollX, easeInOutQuad(t) * smoothScrollDeltaY + smoothScrollStartY);\n }\n else {\n smoothScrollId = null;\n window.scrollTo(window.scrollX, smoothScrollDeltaY + smoothScrollStartY);\n }\n}\n\nfunction easeInOutQuad(t) {\n return (t < 0.5) ? (2 * t * t) : ((4 - 2 * t) * t - 1);\n}\n","import throttle from 'lodash/throttle';\nimport React, {useCallback, useMemo, useRef, useState, useEffect, Suspense} from 'react';\nimport dynamic from 'next/dynamic';\n\nimport {uniqBy} from '../../adapters/helpers/Array';\nimport {useIsomorphicLayoutEffect} from '../../adapters/helpers/Hooks';\n\nimport Label from '../Label/Label';\nimport PropTypes from 'prop-types';\nimport {BrushConfiguratorConstants} from '../../adapters/helpers/Constants';\nimport { scrollIntoView } from '../../adapters/helpers/Scroll';\nimport Loader from '../../adapters/helpers/Loader';\n\nconst DotNav = dynamic(() => import('../DotNav/DotNav'));\nconst BrushConfiguratorProduct = dynamic(() => import('./BrushConfiguratorProduct'));\n\nexport default function BrushConfigurator(props) {\n const {document: doc} = props;\n\n const collection = props.extraAttributes.entity;\n const seriesArray = collection.series;\n\n const scrollRef = useRef();\n\n const [selectedNeedsMap, setSelectedNeedsMap] = useState({});\n const [selectedFeaturesMap, setSelectedFeaturesMap] = useState({});\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n\n const titleLabel = doc.fields.title;\n const oralCareNeedsLabel = doc.fields.oralCareNeedsLabel;\n const selectFeaturesLabel = doc.fields.selectFeaturesLabel;\n const matchLabel = doc.fields.matchLabel;\n const matchDelimiterLabel = doc.fields.matchDelimiterLabel;\n const anchorId = doc.fields.anchorId;\n const classNames = doc?.fields?.classNames || '';\n\n const allProducts = useMemo(\n () => {\n const productArrays = seriesArray ? seriesArray.map(s => s.fields.products) : [];\n const products = [].concat(...productArrays);\n\n return uniqBy(products, p => p.fields.uniqueId);\n },\n [seriesArray]\n );\n\n const allNeeds = doc?.fields?.needs;\n const allFeatures = doc?.fields?.features;\n\n const selectedNeeds = useMemo(\n () => allNeeds.filter(need => selectedNeedsMap[need.fields.name]),\n [allNeeds, selectedNeedsMap]\n );\n\n useEffect(() => {\n if (scrollRef?.current) {\n scrollIntoView(scrollRef.current, {behavior: BrushConfiguratorConstants.smooth})\n }\n }, [selectedFeaturesMap, selectedNeedsMap]);\n\n const matchingProducts = useMemo(\n () => {\n const selectedNeedKeys = Object.keys(selectedNeedsMap);\n const selectedFeatureKeys = Object.keys(selectedFeaturesMap);\n\n if (selectedNeedKeys.length === 0 && selectedFeatureKeys.length === 0) {\n // no criteria selected, so there are no matching products to display\n return [];\n }\n\n // find all products that have every selected need and feature\n\n return allProducts.filter(product => {\n for (let i = 0; i < selectedNeedKeys.length; ++i) {\n const selectedKey = selectedNeedKeys[i];\n\n if (!product?.fields?.needs) {\n return false;\n }\n\n if (!product?.fields?.needs.some(f => f.fields.name === selectedKey)) {\n return false;\n }\n }\n\n for (let i = 0; i < selectedFeatureKeys.length; ++i) {\n const selectedKey = selectedFeatureKeys[i];\n\n if (!product.fields.collectionFeatures) {\n return false;\n }\n\n if (!product.fields.collectionFeatures.some(f => f.fields.name === selectedKey)) {\n return false;\n }\n }\n\n return true;\n });\n },\n [allProducts, selectedNeedsMap, selectedFeaturesMap]\n );\n\n const handleNeedToggle = useCallback(\n (event) => {\n const key = event.currentTarget.getAttribute(BrushConfiguratorConstants.dataName);\n\n setSelectedNeedsMap(prevSelections => toggleSelection(prevSelections, key));\n\n if (scrollRef.current) {\n scrollRef.current.scrollLeft = 0;\n }\n },\n []\n );\n\n const handleFeatureToggle = useCallback(\n (event) => {\n const key = event.currentTarget.getAttribute(BrushConfiguratorConstants.dataName);\n\n setSelectedFeaturesMap(prevSelections => toggleSelection(prevSelections, key));\n\n if (scrollRef.current) {\n scrollRef.current.scrollLeft = 0;\n }\n },\n []\n );\n\n const updateCurrentMatchIndex = useCallback(\n () => {\n if (scrollRef.current) {\n setCurrentMatchIndex(findCentermostChildNodeIndex(scrollRef.current));\n }\n },\n []\n );\n\n const handleScroll = useMemo(\n () => throttle(updateCurrentMatchIndex, 100),\n [updateCurrentMatchIndex]\n );\n\n const handleMatchNavClick = useCallback(\n (index) => {\n const items = scrollRef.current?.querySelectorAll('.ob-brush-configurator__matches-item');\n\n // Workaround Chrome bug where the horizontal scroll is aborted if\n // the vertical scroll is already at the target position\n window.scrollTo(window.scrollX, Math.round(window.scrollY) + 1);\n\n items?.[index]?.scrollIntoView({\n behavior: BrushConfiguratorConstants.smooth,\n block: BrushConfiguratorConstants.center,\n inline: BrushConfiguratorConstants.center\n });\n },\n []\n );\n\n const toggleSelection = (prevSelections, key) => {\n const selections = {...prevSelections};\n\n if (selections[key]) {\n delete selections[key];\n } else {\n selections[key] = true;\n }\n\n return selections;\n };\n\n const findCentermostChildNodeIndex = (parentNode) => {\n const itemNodes = parentNode.childNodes;\n const originRect = parentNode.getBoundingClientRect();\n const originLeft = originRect.width * 0.5 + originRect.left;\n\n let currentIndex = 0;\n let currentDistance = Infinity;\n\n // find item closest to center of container\n for (let i = 0; i < itemNodes.length; ++i) {\n const itemRect = itemNodes[i].getBoundingClientRect();\n const itemLeft = itemRect.width * 0.5 + itemRect.left;\n const itemDistance = Math.abs(itemLeft - originLeft);\n\n if (itemDistance < currentDistance) {\n currentIndex = i;\n currentDistance = itemDistance;\n }\n }\n\n return currentIndex;\n };\n\n useIsomorphicLayoutEffect(\n () => {\n updateCurrentMatchIndex();\n\n return () => {\n handleScroll.cancel();\n };\n },\n [updateCurrentMatchIndex, handleScroll]\n );\n\n return (\n }>\n
\n {!!titleLabel && (\n
\n

\n {titleLabel.fields.text}\n

\n
\n )}\n\n
\n\n
\n {!!oralCareNeedsLabel && (\n
\n

\n {oralCareNeedsLabel.fields.text}\n

\n
\n )}\n\n
    \n {!!allNeeds && allNeeds.map((need, i) => {\n const active = selectedNeedsMap[need.fields.name];\n\n return (\n
  • \n \n {need.fields.name}\n \n
  • \n );\n })}\n
\n
\n\n
\n {!!selectFeaturesLabel && (\n
\n

\n {selectFeaturesLabel.fields.text}\n

\n
\n )}\n\n
    \n {!!allFeatures && allFeatures.map((feature, i) => {\n const active = selectedFeaturesMap[feature.fields.name];\n\n return (\n
  • \n \n \n \n\n \n \n \n
  • \n );\n })}\n
\n
\n\n {(matchingProducts.length > 0) && (\n
\n {!!(matchLabel && matchDelimiterLabel && matchingProducts.length > 0) && (\n
\n

0 ? true : false } aria-live={ matchDelimiterLabel && matchingProducts.length ? BrushConfiguratorConstants.live :BrushConfiguratorConstants.off }>\n

\n
\n )}\n\n
    \n {matchingProducts.map((product, i) => (\n
  • \n \n
  • \n ))}\n
\n\n {(matchingProducts.length > 1) && (\n
\n \n
\n )}\n
\n )}\n
\n \n );\n}\n\nBrushConfigurator.propTypes = {\n document: PropTypes.any,\n extraAttributes: PropTypes.any,\n}\n\n\n\n\n","\n// much simpler (and smaller) uniqBy implementation compared to lodash's\nexport function uniqBy(ary, keyFn) {\n const keys = [];\n const values = [];\n\n for (let i = 0; i < ary.length; ++i) {\n const item = ary[i];\n if(item) {\n const key = keyFn(item);\n\n if (keys.indexOf(key) === -1) {\n keys.push(key);\n values.push(item);\n }\n }\n }\n\n return values;\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport default Label;\n\nexport function Label({ label, tokens }) {\n if (!label) {\n return '';\n } else if (tokens) {\n return replaceTokensFromString(label?.fields?.text || label, tokens);\n } else {\n return label?.fields?.text || label;\n }\n}\n\nLabel.propTypes = {\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]),\n tokens: PropTypes.object,\n};\n\nexport function LabelHTML({ label, tokens, ...props }) {\n if (!label) {\n return (\n \n );\n } else if (tokens) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n}\n\nLabelHTML.propTypes = {\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]),\n tokens: PropTypes.object,\n};\n\nexport function replaceTokensFromString(s, tokens) {\n for (let tokenKey in tokens) {\n s = s.replace(new RegExp('{' + tokenKey + '}', 'g'), tokens[tokenKey]);\n }\n\n return s;\n}\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[43,169],{62705:function(e,t,n){var r=n(55639).Symbol;e.exports=r},44239:function(e,t,n){var r=n(62705),o=n(89607),i=n(2333),u=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":u&&u in Object(e)?o(e):i(e)}},27561:function(e,t,n){var r=n(67990),o=/^\\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,\"\"):e}},31957:function(e,t,n){var r=\"object\"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},89607:function(e,t,n){var r=n(62705),o=Object.prototype,i=o.hasOwnProperty,u=o.toString,c=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var o=u.call(e);return r&&(t?e[c]=n:delete e[c]),o}},2333:function(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},55639:function(e,t,n){var r=n(31957),o=\"object\"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function(\"return this\")();e.exports=i},67990:function(e){var t=/\\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},23279:function(e,t,n){var r=n(13218),o=n(7771),i=n(14841),u=Math.max,c=Math.min;e.exports=function(e,t,n){var a,l,s,f,d,b,p=0,h=!1,g=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var n=a,r=l;return a=l=void 0,p=t,f=e.apply(r,n)}function j(e){return p=e,d=setTimeout(y,t),h?m(e):f}function x(e){var n=e-b;return void 0===b||n>=t||n<0||g&&e-p>=s}function y(){var e=o();if(x(e))return O(e);d=setTimeout(y,function(e){var n=t-(e-b);return g?c(n,s-(e-p)):n}(e))}function O(e){return d=void 0,v&&a?m(e):(a=l=void 0,f)}function _(){var e=o(),n=x(e);if(a=arguments,l=this,b=e,n){if(void 0===d)return j(b);if(g)return clearTimeout(d),d=setTimeout(y,t),m(b)}return void 0===d&&(d=setTimeout(y,t)),f}return t=i(t)||0,r(n)&&(h=!!n.leading,s=(g=\"maxWait\"in n)?u(i(n.maxWait)||0,t):s,v=\"trailing\"in n?!!n.trailing:v),_.cancel=function(){void 0!==d&&clearTimeout(d),p=0,a=b=l=d=void 0},_.flush=function(){return void 0===d?f:O(o())},_}},13218:function(e){e.exports=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}},37005:function(e){e.exports=function(e){return null!=e&&\"object\"==typeof e}},33448:function(e,t,n){var r=n(44239),o=n(37005);e.exports=function(e){return\"symbol\"==typeof e||o(e)&&\"[object Symbol]\"==r(e)}},7771:function(e,t,n){var r=n(55639);e.exports=function(){return r.Date.now()}},23493:function(e,t,n){var r=n(23279),o=n(13218);e.exports=function(e,t,n){var i=!0,u=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");return o(n)&&(i=\"leading\"in n?!!n.leading:i,u=\"trailing\"in n?!!n.trailing:u),r(e,t,{leading:i,maxWait:t,trailing:u})}},14841:function(e,t,n){var r=n(27561),o=n(13218),i=n(33448),u=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,a=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if(\"number\"==typeof e)return e;if(i(e))return NaN;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=r(e);var n=c.test(e);return n||a.test(e)?l(e.slice(2),n?2:8):u.test(e)?NaN:+e}},71357:function(e,t,n){\"use strict\";n.d(t,{LI:function(){return l},Ui:function(){return f},ag:function(){return s},y3:function(){return h}});var r=n(930),o=n.n(r),i=n(67294),u=n(85893);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:null,n=(0,i.useState)(t),r=n[0],o=n[1];return(0,i.useEffect)((function(){if(window.matchMedia){var t=window.matchMedia(e);return o(t.matches),t.addListener(n),function(){t.removeListener(n)}}function n(e){o(e.matches)}}),[e]),r}var f=function(e){return function(t){var n=s(\"(max-width: 375px)\"),r=s(\"(max-width: 479px)\"),o=s(\"(max-width: 767px)\"),i=s(\"(max-width: 991px)\"),c=s(\"(max-width: 1023px)\");return(0,u.jsx)(e,a({isXSmall:n,isSmall:r,isMedium:o,isLarge:i,isXLarge:c},t))}},d=[],b={currentProductIndex:0},p=function(e){b=a(a({},b),e),d.forEach((function(e){e(b)}))},h=function(){var e=(0,i.useState)()[1];return(0,i.useEffect)((function(){d.push(e)}),[]),[b,p]}},55891:function(e,t,n){\"use strict\";n.d(t,{z:function(){return c}});var r=null,o=0,i=0,u=0;function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o=window.scrollY||window.pageYOffset||0,i=e.getBoundingClientRect().top;var n=document.querySelector(\".zone-header\"),c=document.querySelector(\".ob-product-sub-nav\");n&&(i-=n.getBoundingClientRect().bottom,c&&(i-=c.getBoundingClientRect().bottom)),\"smooth\"===t.behavior&&\"undefined\"!=typeof requestAnimationFrame?(u=Date.now(),null==r&&a()):(null!=r&&(cancelAnimationFrame(r),r=null),window.scrollTo(window.scrollX,null))}function a(){var e=(Date.now()-u)/400;e<1?(r=requestAnimationFrame(a),window.scrollTo(window.scrollX,function(e){return e<.5?2*e*e:(4-2*e)*e-1}(e)*i+o)):(r=null,window.scrollTo(window.scrollX,i+o))}},46560:function(e,t,n){\"use strict\";n.r(t),n.d(t,{default:function(){return y}});var r=n(930),o=n.n(r),i=n(7980),u=n.n(i),c=n(23493),a=n.n(c),l=n(67294),s=n(5152),f=n.n(s);var d=n(71357),b=n(44291),p=n(24036),h=n(55891),g=n(47322),v=n(85893);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var j=f()((function(){return n.e(176).then(n.bind(n,16226))}),{loadableGenerated:{webpack:function(){return[16226]}}}),x=f()((function(){return Promise.all([n.e(0),n.e(1),n.e(190)]).then(n.bind(n,4785))}),{loadableGenerated:{webpack:function(){return[4785]}}});function y(e){var t,n,r,i=e.document,c=e.extraAttributes.entity.series,s=(0,l.useRef)(),f=(0,l.useState)({}),y=f[0],O=f[1],_=(0,l.useState)({}),w=_[0],P=_[1],N=(0,l.useState)(0),k=N[0],S=N[1],T=i.fields.title,E=i.fields.oralCareNeedsLabel,L=i.fields.selectFeaturesLabel,M=i.fields.matchLabel,D=i.fields.matchDelimiterLabel,C=i.fields.anchorId,I=(null==i||null==(t=i.fields)?void 0:t.classNames)||\"\",A=(0,l.useMemo)((function(){var e,t=c?c.map((function(e){return e.fields.products})):[];return function(e,t){for(var n=[],r=[],o=0;o0&&(0,v.jsxs)(\"div\",{className:\"ob-brush-configurator__matches\",id:p.gP.features,children:[!!(M&&D&&X.length>0)&&(0,v.jsx)(\"div\",{className:\"ob-brush-configurator__matches-top\",children:(0,v.jsx)(\"h2\",{className:\"ob-brush-configurator__subtitle\",role:p.gP.status,\"aria-atomic\":X.length>0,\"aria-live\":D&&X.length?p.gP.live:p.gP.off,children:(0,v.jsx)(b.default,{label:M,tokens:{currentIndex:k+1,totalResults:X.length}})})}),(0,v.jsx)(\"ul\",{className:\"ob-brush-configurator__matches-list\",ref:s,onScroll:W,children:X.map((function(e,t){return(0,v.jsx)(\"li\",{className:\"ob-brush-configurator__matches-item\",children:(0,v.jsx)(x,{document:i,product:e,needs:q})},e.uniqueId||t)}))}),X.length>1&&(0,v.jsx)(\"div\",{className:\"ob-brush-configurator__matches-nav-ctn\",children:(0,v.jsx)(j,{className:\"ob-brush-configurator__matches-nav\",count:X.length,current:k,color:\"blue\",onClick:Y})})]})]})})}},44291:function(e,t,n){\"use strict\";n.r(t),n.d(t,{Label:function(){return b},LabelHTML:function(){return p},replaceTokensFromString:function(){return h}});var r=n(930),o=n.n(r),i=n(3323),u=n.n(i),c=n(45697),a=n.n(c),l=(n(67294),n(85893)),s=[\"label\",\"tokens\"];function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i},e.exports.default=e.exports,e.exports.__esModule=!0},57826:function(e){e.exports=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o},e.exports.default=e.exports,e.exports.__esModule=!0}}]);"],"names":["self","webpackChunk_N_E","push","e","t","n","r","Symbol","exports","o","i","u","toStringTag","Object","slice","replace","g","prototype","hasOwnProperty","toString","c","call","Function","length","test","charAt","Math","max","min","a","l","s","f","d","b","p","h","v","m","apply","x","y","O","setTimeout","_","arguments","clearTimeout","leading","maxWait","trailing","cancel","flush","Date","now","parseInt","NaN","valueOf","LI","Ui","ag","y3","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","useLayoutEffect","useState","useEffect","window","matchMedia","matches","addListener","removeListener","jsx","isXSmall","isSmall","isMedium","isLarge","isXLarge","currentProductIndex","z","scrollY","pageYOffset","getBoundingClientRect","top","document","querySelector","bottom","behavior","requestAnimationFrame","scrollTo","scrollX","cancelAnimationFrame","default","j","then","bind","loadableGenerated","webpack","Promise","all","extraAttributes","entity","series","useRef","w","P","N","k","S","T","fields","title","E","oralCareNeedsLabel","L","selectFeaturesLabel","M","matchLabel","D","matchDelimiterLabel","C","anchorId","I","classNames","A","useMemo","map","products","indexOf","concat","uniqueId","F","needs","R","features","q","name","current","gP","smooth","X","some","collectionFeatures","B","useCallback","currentTarget","getAttribute","dataName","$","scrollLeft","H","G","W","Y","querySelectorAll","round","scrollIntoView","block","center","inline","childNodes","width","left","abs","Suspense","fallback","children","jsxs","className","id","text","type","role","switch","onClick","logoId","dangerouslySetInnerHTML","__html","status","live","off","label","tokens","currentIndex","totalResults","ref","onScroll","product","count","color","Label","LabelHTML","replaceTokensFromString","propTypes","oneOfType","string","object","propertyIsEnumerable","__esModule"],"sourceRoot":""}