{"ast":null,"code":"export * from 'css-box-model';\nexport { default as mergeWith } from 'lodash.mergewith';\nimport sync, { cancelSync, getFrameData } from 'framesync';\nfunction getFirstItem(array) {\n  return array != null && array.length ? array[0] : undefined;\n}\nfunction getLastItem(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\nfunction getPrevItem(index, array, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n  var prevIndex = getPrevIndex(index, array.length, loop);\n  return array[prevIndex];\n}\nfunction getNextItem(index, array, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n  var nextIndex = getNextIndex(index, array.length, 1, loop);\n  return array[nextIndex];\n}\nfunction removeIndex(array, index) {\n  return array.filter(function (_, idx) {\n    return idx !== index;\n  });\n}\nfunction addItem(array, item) {\n  return [].concat(array, [item]);\n}\nfunction removeItem(array, item) {\n  return array.filter(function (eachItem) {\n    return eachItem !== item;\n  });\n}\n/**\n * Get the next index based on the current index and step.\n *\n * @param currentIndex the current index\n * @param length the total length or count of items\n * @param step the number of steps\n * @param loop whether to circle back once `currentIndex` is at the start/end\n */\n\nfunction getNextIndex(currentIndex, length, step, loop) {\n  if (step === void 0) {\n    step = 1;\n  }\n  if (loop === void 0) {\n    loop = true;\n  }\n  var lastIndex = length - 1;\n  if (currentIndex === -1) {\n    return step > 0 ? 0 : lastIndex;\n  }\n  var nextIndex = currentIndex + step;\n  if (nextIndex < 0) {\n    return loop ? lastIndex : 0;\n  }\n  if (nextIndex >= length) {\n    if (loop) return 0;\n    return currentIndex > length ? length : currentIndex;\n  }\n  return nextIndex;\n}\n/**\n * Get's the previous index based on the current index.\n * Mostly used for keyboard navigation.\n *\n * @param index - the current index\n * @param count - the length or total count of items in the array\n * @param loop - whether we should circle back to the\n * first/last once `currentIndex` is at the start/end\n */\n\nfunction getPrevIndex(index, count, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n  return getNextIndex(index, count, -1, loop);\n}\n/**\n * Converts an array into smaller chunks or groups.\n *\n * @param array the array to chunk into group\n * @param size the length of each chunk\n */\n\nfunction chunk(array, size) {\n  return array.reduce(function (rows, currentValue, index) {\n    if (index % size === 0) {\n      rows.push([currentValue]);\n    } else {\n      rows[rows.length - 1].push(currentValue);\n    }\n    return rows;\n  }, []);\n}\n/**\n * Gets the next item based on a search string\n *\n * @param items array of items\n * @param searchString the search string\n * @param itemToString resolves an item to string\n * @param currentItem the current selected item\n */\n\nfunction getNextItemFromSearch(items, searchString, itemToString, currentItem) {\n  if (searchString == null) {\n    return currentItem;\n  } // If current item doesn't exist, find the item that matches the search string\n\n  if (!currentItem) {\n    var foundItem = items.find(function (item) {\n      return itemToString(item).toLowerCase().startsWith(searchString.toLowerCase());\n    });\n    return foundItem;\n  } // Filter items for ones that match the search string (case insensitive)\n\n  var matchingItems = items.filter(function (item) {\n    return itemToString(item).toLowerCase().startsWith(searchString.toLowerCase());\n  }); // If there's a match, let's get the next item to select\n\n  if (matchingItems.length > 0) {\n    var nextIndex; // If the currentItem is in the available items, we move to the next available option\n\n    if (matchingItems.includes(currentItem)) {\n      var currentIndex = matchingItems.indexOf(currentItem);\n      nextIndex = currentIndex + 1;\n      if (nextIndex === matchingItems.length) {\n        nextIndex = 0;\n      }\n      return matchingItems[nextIndex];\n    } // Else, we pick the first item in the available items\n\n    nextIndex = items.indexOf(matchingItems[0]);\n    return items[nextIndex];\n  } // a decent fallback to the currentItem\n\n  return currentItem;\n}\n\n// Number assertions\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isNotNumber(value) {\n  return typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value);\n}\nfunction isNumeric(value) {\n  return value != null && value - parseFloat(value) + 1 >= 0;\n} // Array assertions\n\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isEmptyArray(value) {\n  return isArray(value) && value.length === 0;\n} // Function assertions\n\nfunction isFunction(value) {\n  return typeof value === \"function\";\n} // Generic assertions\n\nfunction isDefined(value) {\n  return typeof value !== \"undefined\" && value !== undefined;\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\" || value === undefined;\n} // Object assertions\n\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type === \"object\" || type === \"function\") && !isArray(value);\n}\nfunction isEmptyObject(value) {\n  return isObject(value) && Object.keys(value).length === 0;\n}\nfunction isNotEmptyObject(value) {\n  return value && !isEmptyObject(value);\n}\nfunction isNull(value) {\n  return value == null;\n} // String assertions\n\nfunction isString(value) {\n  return Object.prototype.toString.call(value) === \"[object String]\";\n}\nfunction isCssVar(value) {\n  return /^var\\(--.+\\)$/.test(value);\n} // Empty assertions\n\nfunction isEmpty(value) {\n  if (isArray(value)) return isEmptyArray(value);\n  if (isObject(value)) return isEmptyObject(value);\n  if (value == null || value === \"\") return true;\n  return false;\n}\nvar __DEV__ = process.env.NODE_ENV !== \"production\";\nvar __TEST__ = process.env.NODE_ENV === \"test\";\nfunction isRefObject(val) {\n  return \"current\" in val;\n}\nfunction isInputEvent(value) {\n  return value && isObject(value) && isObject(value.target);\n}\nfunction omit(object, keys) {\n  var result = {};\n  Object.keys(object).forEach(function (key) {\n    if (keys.includes(key)) return;\n    result[key] = object[key];\n  });\n  return result;\n}\nfunction pick(object, keys) {\n  var result = {};\n  keys.forEach(function (key) {\n    if (key in object) {\n      result[key] = object[key];\n    }\n  });\n  return result;\n}\nfunction split(object, keys) {\n  var picked = {};\n  var omitted = {};\n  Object.keys(object).forEach(function (key) {\n    if (keys.includes(key)) {\n      picked[key] = object[key];\n    } else {\n      omitted[key] = object[key];\n    }\n  });\n  return [picked, omitted];\n}\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def  - the fallback value\n */\n\nfunction get(obj, path, fallback, index) {\n  var key = typeof path === \"string\" ? path.split(\".\") : [path];\n  for (index = 0; index < key.length; index += 1) {\n    if (!obj) break;\n    obj = obj[key[index]];\n  }\n  return obj === undefined ? fallback : obj;\n}\nvar memoize = function memoize(fn) {\n  var cache = new WeakMap();\n  var memoizedFn = function memoizedFn(obj, path, fallback, index) {\n    if (typeof obj === \"undefined\") {\n      return fn(obj, path, fallback);\n    }\n    if (!cache.has(obj)) {\n      cache.set(obj, new Map());\n    }\n    var map = cache.get(obj);\n    if (map.has(path)) {\n      return map.get(path);\n    }\n    var value = fn(obj, path, fallback, index);\n    map.set(path, value);\n    return value;\n  };\n  return memoizedFn;\n};\nvar memoizedGet = memoize(get);\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\n\nfunction getWithDefault(path, scale) {\n  return memoizedGet(scale, path, path);\n}\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nfunction objectFilter(object, fn) {\n  var result = {};\n  Object.keys(object).forEach(function (key) {\n    var value = object[key];\n    var shouldPass = fn(value, key, object);\n    if (shouldPass) {\n      result[key] = value;\n    }\n  });\n  return result;\n}\nvar filterUndefined = function filterUndefined(object) {\n  return objectFilter(object, function (val) {\n    return val !== null && val !== undefined;\n  });\n};\nvar objectKeys = function objectKeys(obj) {\n  return Object.keys(obj);\n};\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\n\nvar fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (carry, _ref) {\n    var key = _ref[0],\n      value = _ref[1];\n    carry[key] = value;\n    return carry;\n  }, {});\n};\n/**\n * Get the CSS variable ref stored in the theme\n */\n\nvar getCSSVar = function getCSSVar(theme, scale, value) {\n  var _theme$__cssMap$$varR, _theme$__cssMap$;\n  return (_theme$__cssMap$$varR = (_theme$__cssMap$ = theme.__cssMap[scale + \".\" + value]) == null ? void 0 : _theme$__cssMap$.varRef) != null ? _theme$__cssMap$$varR : value;\n};\nfunction analyzeCSSValue(value) {\n  var num = parseFloat(value.toString());\n  var unit = value.toString().replace(String(num), \"\");\n  return {\n    unitless: !unit,\n    value: num,\n    unit: unit\n  };\n}\nfunction px(value) {\n  if (value == null) return value;\n  var _analyzeCSSValue = analyzeCSSValue(value),\n    unitless = _analyzeCSSValue.unitless;\n  return unitless || isNumber(value) ? value + \"px\" : value;\n}\nvar sortByBreakpointValue = function sortByBreakpointValue(a, b) {\n  return parseInt(a[1], 10) > parseInt(b[1], 10) ? 1 : -1;\n};\nvar sortBps = function sortBps(breakpoints) {\n  return fromEntries(Object.entries(breakpoints).sort(sortByBreakpointValue));\n};\nfunction normalize(breakpoints) {\n  var sorted = sortBps(breakpoints);\n  return Object.assign(Object.values(sorted), sorted);\n}\nfunction keys(breakpoints) {\n  var value = Object.keys(sortBps(breakpoints));\n  return new Set(value);\n}\nfunction subtract(value) {\n  var _px;\n  if (!value) return value;\n  value = (_px = px(value)) != null ? _px : value;\n  var factor = value.endsWith(\"px\") ? -1 :\n  // the equivalent of 1px in em using a 16px base\n  -0.0635;\n  return isNumber(value) ? \"\" + (value + factor) : value.replace(/([0-9]+\\.?[0-9]*)/, function (m) {\n    return \"\" + (parseFloat(m) + factor);\n  });\n}\nfunction queryString(min, max) {\n  var query = [\"@media screen\"];\n  if (min) query.push(\"and\", \"(min-width: \" + px(min) + \")\");\n  if (max) query.push(\"and\", \"(max-width: \" + px(max) + \")\");\n  return query.join(\" \");\n}\nfunction analyzeBreakpoints(breakpoints) {\n  var _breakpoints$base;\n  if (!breakpoints) return null;\n  breakpoints.base = (_breakpoints$base = breakpoints.base) != null ? _breakpoints$base : \"0px\";\n  var normalized = normalize(breakpoints);\n  var queries = Object.entries(breakpoints).sort(sortByBreakpointValue).map(function (_ref, index, entry) {\n    var _entry;\n    var breakpoint = _ref[0],\n      minW = _ref[1];\n    var _ref2 = (_entry = entry[index + 1]) != null ? _entry : [],\n      maxW = _ref2[1];\n    maxW = parseFloat(maxW) > 0 ? subtract(maxW) : undefined;\n    return {\n      breakpoint: breakpoint,\n      minW: minW,\n      maxW: maxW,\n      maxWQuery: queryString(null, maxW),\n      minWQuery: queryString(minW),\n      minMaxQuery: queryString(minW, maxW)\n    };\n  });\n  var _keys = keys(breakpoints);\n  var _keysArr = Array.from(_keys.values());\n  return {\n    keys: _keys,\n    normalized: normalized,\n    isResponsive: function isResponsive(test) {\n      var keys = Object.keys(test);\n      return keys.length > 0 && keys.every(function (key) {\n        return _keys.has(key);\n      });\n    },\n    asObject: sortBps(breakpoints),\n    asArray: normalize(breakpoints),\n    details: queries,\n    media: [null].concat(normalized.map(function (minW) {\n      return queryString(minW);\n    }).slice(1)),\n    toArrayValue: function toArrayValue(test) {\n      if (!isObject(test)) {\n        throw new Error(\"toArrayValue: value must be an object\");\n      }\n      var result = _keysArr.map(function (bp) {\n        var _test$bp;\n        return (_test$bp = test[bp]) != null ? _test$bp : null;\n      });\n      while (getLastItem(result) === null) {\n        result.pop();\n      }\n      return result;\n    },\n    toObjectValue: function toObjectValue(test) {\n      if (!Array.isArray(test)) {\n        throw new Error(\"toObjectValue: value must be an array\");\n      }\n      return test.reduce(function (acc, value, index) {\n        var key = _keysArr[index];\n        if (key != null && value != null) acc[key] = value;\n        return acc;\n      }, {});\n    }\n  };\n}\nfunction isElement(el) {\n  return el != null && typeof el == \"object\" && \"nodeType\" in el && el.nodeType === Node.ELEMENT_NODE;\n}\nfunction isHTMLElement(el) {\n  var _el$ownerDocument$def;\n  if (!isElement(el)) {\n    return false;\n  }\n  var win = (_el$ownerDocument$def = el.ownerDocument.defaultView) != null ? _el$ownerDocument$def : window;\n  return el instanceof win.HTMLElement;\n}\nfunction getOwnerWindow(node) {\n  var _getOwnerDocument$def, _getOwnerDocument;\n  return isElement(node) ? (_getOwnerDocument$def = (_getOwnerDocument = getOwnerDocument(node)) == null ? void 0 : _getOwnerDocument.defaultView) != null ? _getOwnerDocument$def : window : window;\n}\nfunction getOwnerDocument(node) {\n  var _node$ownerDocument;\n  return isElement(node) ? (_node$ownerDocument = node.ownerDocument) != null ? _node$ownerDocument : document : document;\n}\nfunction getEventWindow(event) {\n  var _view;\n  return (_view = event.view) != null ? _view : window;\n}\nfunction canUseDOM() {\n  return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\nvar isBrowser = canUseDOM();\nvar dataAttr = function dataAttr(condition) {\n  return condition ? \"\" : undefined;\n};\nvar ariaAttr = function ariaAttr(condition) {\n  return condition ? true : undefined;\n};\nvar cx = function cx() {\n  for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n    classNames[_key] = arguments[_key];\n  }\n  return classNames.filter(Boolean).join(\" \");\n};\nfunction getActiveElement(node) {\n  var doc = getOwnerDocument(node);\n  return doc == null ? void 0 : doc.activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent) return false;\n  return parent === child || parent.contains(child);\n}\nfunction addDomEvent(target, eventName, handler, options) {\n  target.addEventListener(eventName, handler, options);\n  return function () {\n    target.removeEventListener(eventName, handler, options);\n  };\n}\n/**\n * Get the normalized event key across all browsers\n * @param event keyboard event\n */\n\nfunction normalizeEventKey(event) {\n  var key = event.key,\n    keyCode = event.keyCode;\n  var isArrowKey = keyCode >= 37 && keyCode <= 40 && key.indexOf(\"Arrow\") !== 0;\n  var eventKey = isArrowKey ? \"Arrow\" + key : key;\n  return eventKey;\n}\nfunction getRelatedTarget(event) {\n  var _event$target, _event$relatedTarget;\n  var target = (_event$target = event.target) != null ? _event$target : event.currentTarget;\n  var activeElement = getActiveElement(target);\n  return (_event$relatedTarget = event.relatedTarget) != null ? _event$relatedTarget : activeElement;\n}\nfunction isRightClick(event) {\n  return event.button !== 0;\n}\n\n// Really great work done by Diego Haz on this one\nvar hasDisplayNone = function hasDisplayNone(element) {\n  return window.getComputedStyle(element).display === \"none\";\n};\nvar hasTabIndex = function hasTabIndex(element) {\n  return element.hasAttribute(\"tabindex\");\n};\nvar hasNegativeTabIndex = function hasNegativeTabIndex(element) {\n  return hasTabIndex(element) && element.tabIndex === -1;\n};\nfunction isDisabled(element) {\n  return Boolean(element.getAttribute(\"disabled\")) === true || Boolean(element.getAttribute(\"aria-disabled\")) === true;\n}\nfunction isInputElement(element) {\n  return isHTMLElement(element) && element.tagName.toLowerCase() === \"input\" && \"select\" in element;\n}\nfunction isActiveElement(element) {\n  var doc = isHTMLElement(element) ? getOwnerDocument(element) : document;\n  return doc.activeElement === element;\n}\nfunction hasFocusWithin(element) {\n  if (!document.activeElement) return false;\n  return element.contains(document.activeElement);\n}\nfunction isHidden(element) {\n  if (element.parentElement && isHidden(element.parentElement)) return true;\n  return element.hidden;\n}\nfunction isContentEditable(element) {\n  var value = element.getAttribute(\"contenteditable\");\n  return value !== \"false\" && value != null;\n}\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n    return false;\n  }\n  var localName = element.localName;\n  var focusableTags = [\"input\", \"select\", \"textarea\", \"button\"];\n  if (focusableTags.indexOf(localName) >= 0) return true;\n  var others = {\n    a: function a() {\n      return element.hasAttribute(\"href\");\n    },\n    audio: function audio() {\n      return element.hasAttribute(\"controls\");\n    },\n    video: function video() {\n      return element.hasAttribute(\"controls\");\n    }\n  };\n  if (localName in others) {\n    return others[localName]();\n  }\n  if (isContentEditable(element)) return true;\n  return hasTabIndex(element);\n}\nfunction isTabbable(element) {\n  if (!element) return false;\n  return isHTMLElement(element) && isFocusable(element) && !hasNegativeTabIndex(element);\n}\nvar focusableElList = [\"input:not([disabled])\", \"select:not([disabled])\", \"textarea:not([disabled])\", \"embed\", \"iframe\", \"object\", \"a[href]\", \"area[href]\", \"button:not([disabled])\", \"[tabindex]\", \"audio[controls]\", \"video[controls]\", \"*[tabindex]:not([aria-disabled])\", \"*[contenteditable]\"];\nvar focusableElSelector = focusableElList.join();\nfunction getAllFocusable(container) {\n  var focusableEls = Array.from(container.querySelectorAll(focusableElSelector));\n  focusableEls.unshift(container);\n  return focusableEls.filter(isFocusable).filter(function (el) {\n    return window.getComputedStyle(el).display !== \"none\";\n  });\n}\nfunction getFirstFocusable(container) {\n  var allFocusable = getAllFocusable(container);\n  return allFocusable.length ? allFocusable[0] : null;\n}\nfunction getAllTabbable(container, fallbackToFocusable) {\n  var allFocusable = Array.from(container.querySelectorAll(focusableElSelector));\n  var allTabbable = allFocusable.filter(isTabbable);\n  if (isTabbable(container)) {\n    allTabbable.unshift(container);\n  }\n  if (!allTabbable.length && fallbackToFocusable) {\n    return allFocusable;\n  }\n  return allTabbable;\n}\nfunction getFirstTabbableIn(container, fallbackToFocusable) {\n  var _getAllTabbable = getAllTabbable(container, fallbackToFocusable),\n    first = _getAllTabbable[0];\n  return first || null;\n}\nfunction getLastTabbableIn(container, fallbackToFocusable) {\n  var allTabbable = getAllTabbable(container, fallbackToFocusable);\n  return allTabbable[allTabbable.length - 1] || null;\n}\nfunction getNextTabbable(container, fallbackToFocusable) {\n  var allFocusable = getAllFocusable(container);\n  var index = allFocusable.indexOf(document.activeElement);\n  var slice = allFocusable.slice(index + 1);\n  return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nfunction getPreviousTabbable(container, fallbackToFocusable) {\n  var allFocusable = getAllFocusable(container).reverse();\n  var index = allFocusable.indexOf(document.activeElement);\n  var slice = allFocusable.slice(index + 1);\n  return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nfunction focusNextTabbable(container, fallbackToFocusable) {\n  var nextTabbable = getNextTabbable(container, fallbackToFocusable);\n  if (nextTabbable && isHTMLElement(nextTabbable)) {\n    nextTabbable.focus();\n  }\n}\nfunction focusPreviousTabbable(container, fallbackToFocusable) {\n  var previousTabbable = getPreviousTabbable(container, fallbackToFocusable);\n  if (previousTabbable && isHTMLElement(previousTabbable)) {\n    previousTabbable.focus();\n  }\n}\nfunction matches(element, selectors) {\n  if (\"matches\" in element) return element.matches(selectors);\n  if (\"msMatchesSelector\" in element) return element.msMatchesSelector(selectors);\n  return element.webkitMatchesSelector(selectors);\n}\nfunction closest(element, selectors) {\n  if (\"closest\" in element) return element.closest(selectors);\n  do {\n    if (matches(element, selectors)) return element;\n    element = element.parentElement || element.parentNode;\n  } while (element !== null && element.nodeType === 1);\n  return null;\n}\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (it) return (it = it.call(o)).next.bind(it);\n  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n    if (it) o = it;\n    var i = 0;\n    return function () {\n      if (i >= o.length) return {\n        done: true\n      };\n      return {\n        done: false,\n        value: o[i++]\n      };\n    };\n  }\n  throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/* eslint-disable no-nested-ternary */\nfunction runIfFn(valueOrFn) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  return isFunction(valueOrFn) ? valueOrFn.apply(void 0, args) : valueOrFn;\n}\nfunction callAllHandlers() {\n  for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    fns[_key2] = arguments[_key2];\n  }\n  return function func(event) {\n    fns.some(function (fn) {\n      fn == null ? void 0 : fn(event);\n      return event == null ? void 0 : event.defaultPrevented;\n    });\n  };\n}\nfunction callAll() {\n  for (var _len3 = arguments.length, fns = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    fns[_key3] = arguments[_key3];\n  }\n  return function mergedFn(arg) {\n    fns.forEach(function (fn) {\n      fn == null ? void 0 : fn(arg);\n    });\n  };\n}\nvar compose = function compose(fn1) {\n  for (var _len4 = arguments.length, fns = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    fns[_key4 - 1] = arguments[_key4];\n  }\n  return fns.reduce(function (f1, f2) {\n    return function () {\n      return f1(f2.apply(void 0, arguments));\n    };\n  }, fn1);\n};\nfunction once(fn) {\n  var result;\n  return function func() {\n    if (fn) {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n      result = fn.apply(this, args);\n      fn = null;\n    }\n    return result;\n  };\n}\nvar noop = function noop() {};\nvar warn = once(function (options) {\n  return function () {\n    var condition = options.condition,\n      message = options.message;\n    if (condition && __DEV__) {\n      console.warn(message);\n    }\n  };\n});\nvar error = once(function (options) {\n  return function () {\n    var condition = options.condition,\n      message = options.message;\n    if (condition && __DEV__) {\n      console.error(message);\n    }\n  };\n});\nvar pipe = function pipe() {\n  for (var _len6 = arguments.length, fns = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    fns[_key6] = arguments[_key6];\n  }\n  return function (v) {\n    return fns.reduce(function (a, b) {\n      return b(a);\n    }, v);\n  };\n};\nvar distance1D = function distance1D(a, b) {\n  return Math.abs(a - b);\n};\nvar isPoint = function isPoint(point) {\n  return \"x\" in point && \"y\" in point;\n};\nfunction distance(a, b) {\n  if (isNumber(a) && isNumber(b)) {\n    return distance1D(a, b);\n  }\n  if (isPoint(a) && isPoint(b)) {\n    var xDelta = distance1D(a.x, b.x);\n    var yDelta = distance1D(a.y, b.y);\n    return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2));\n  }\n  return 0;\n}\nfunction focus(element, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var _options = options,\n    _options$isActive = _options.isActive,\n    isActive = _options$isActive === void 0 ? isActiveElement : _options$isActive,\n    nextTick = _options.nextTick,\n    _options$preventScrol = _options.preventScroll,\n    preventScroll = _options$preventScrol === void 0 ? true : _options$preventScrol,\n    _options$selectTextIf = _options.selectTextIfInput,\n    selectTextIfInput = _options$selectTextIf === void 0 ? true : _options$selectTextIf;\n  if (!element || isActive(element)) return -1;\n  function triggerFocus() {\n    if (!element) {\n      warn({\n        condition: true,\n        message: \"[chakra-ui]: can't call focus() on `null` or `undefined` element\"\n      });\n      return;\n    }\n    if (supportsPreventScroll()) {\n      element.focus({\n        preventScroll: preventScroll\n      });\n    } else {\n      element.focus();\n      if (preventScroll) {\n        var scrollableElements = getScrollableElements(element);\n        restoreScrollPosition(scrollableElements);\n      }\n    }\n    if (isInputElement(element) && selectTextIfInput) {\n      element.select();\n    }\n  }\n  if (nextTick) {\n    return requestAnimationFrame(triggerFocus);\n  }\n  triggerFocus();\n  return -1;\n}\nvar supportsPreventScrollCached = null;\nfunction supportsPreventScroll() {\n  if (supportsPreventScrollCached == null) {\n    supportsPreventScrollCached = false;\n    try {\n      var div = document.createElement(\"div\");\n      div.focus({\n        get preventScroll() {\n          supportsPreventScrollCached = true;\n          return true;\n        }\n      });\n    } catch (e) {// Ignore\n    }\n  }\n  return supportsPreventScrollCached;\n}\nfunction getScrollableElements(element) {\n  var _doc$defaultView;\n  var doc = getOwnerDocument(element);\n  var win = (_doc$defaultView = doc.defaultView) != null ? _doc$defaultView : window;\n  var parent = element.parentNode;\n  var scrollableElements = [];\n  var rootScrollingElement = doc.scrollingElement || doc.documentElement;\n  while (parent instanceof win.HTMLElement && parent !== rootScrollingElement) {\n    if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) {\n      scrollableElements.push({\n        element: parent,\n        scrollTop: parent.scrollTop,\n        scrollLeft: parent.scrollLeft\n      });\n    }\n    parent = parent.parentNode;\n  }\n  if (rootScrollingElement instanceof win.HTMLElement) {\n    scrollableElements.push({\n      element: rootScrollingElement,\n      scrollTop: rootScrollingElement.scrollTop,\n      scrollLeft: rootScrollingElement.scrollLeft\n    });\n  }\n  return scrollableElements;\n}\nfunction restoreScrollPosition(scrollableElements) {\n  for (var _iterator = _createForOfIteratorHelperLoose(scrollableElements), _step; !(_step = _iterator()).done;) {\n    var _step$value = _step.value,\n      element = _step$value.element,\n      scrollTop = _step$value.scrollTop,\n      scrollLeft = _step$value.scrollLeft;\n    element.scrollTop = scrollTop;\n    element.scrollLeft = scrollLeft;\n  }\n}\nfunction flatten(target, maxDepth) {\n  if (maxDepth === void 0) {\n    maxDepth = Infinity;\n  }\n  if (!isObject(target) && !Array.isArray(target) || !maxDepth) {\n    return target;\n  }\n  return Object.entries(target).reduce(function (result, _ref) {\n    var key = _ref[0],\n      value = _ref[1];\n    if (isObject(value) || isArray(value)) {\n      Object.entries(flatten(value, maxDepth - 1)).forEach(function (_ref2) {\n        var childKey = _ref2[0],\n          childValue = _ref2[1];\n        // e.g. gray.500\n        result[key + \".\" + childKey] = childValue;\n      });\n    } else {\n      // e.g. transparent\n      result[key] = value;\n    }\n    return result;\n  }, {});\n}\n\n/**\n * Determines whether the children of a disclosure widget\n * should be rendered or not, depending on the lazy behavior.\n *\n * Used in accordion, tabs, popover, menu and other disclosure\n * widgets.\n */\nfunction determineLazyBehavior(options) {\n  var hasBeenSelected = options.hasBeenSelected,\n    isLazy = options.isLazy,\n    isSelected = options.isSelected,\n    _options$lazyBehavior = options.lazyBehavior,\n    lazyBehavior = _options$lazyBehavior === void 0 ? \"unmount\" : _options$lazyBehavior; // if not lazy, always render the disclosure's content\n\n  if (!isLazy) return true; // if the diclosure is selected, render the disclosure's content\n\n  if (isSelected) return true; // if the disclosure was selected but not active, keep its content active\n\n  if (lazyBehavior === \"keepMounted\" && hasBeenSelected) return true;\n  return false;\n}\nvar minSafeInteger = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar maxSafeInteger = Number.MAX_SAFE_INTEGER || 9007199254740991;\nfunction toNumber(value) {\n  var num = parseFloat(value);\n  return isNotNumber(num) ? 0 : num;\n}\n/**\n * Converts a value to a specific precision (or decimal points).\n *\n * Returns a string representing a number in fixed-point notation.\n *\n * @param value the value to convert\n * @param precision the precision or decimal points\n */\n\nfunction toPrecision(value, precision) {\n  var nextValue = toNumber(value);\n  var scaleFactor = Math.pow(10, precision != null ? precision : 10);\n  nextValue = Math.round(nextValue * scaleFactor) / scaleFactor;\n  return precision ? nextValue.toFixed(precision) : nextValue.toString();\n}\n/**\n * Counts the number of decimal places a number has\n *\n * @param value the decimal value to count\n */\n\nfunction countDecimalPlaces(value) {\n  if (!Number.isFinite(value)) return 0;\n  var e = 1;\n  var p = 0;\n  while (Math.round(value * e) / e !== value) {\n    e *= 10;\n    p += 1;\n  }\n  return p;\n}\n/**\n * Convert a value to percentage based on lower and upper bound values\n *\n * @param value the value in number\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction valueToPercent(value, min, max) {\n  return (value - min) * 100 / (max - min);\n}\n/**\n * Calculate the value based on percentage, lower and upper bound values\n *\n * @param percent the percent value in decimals (e.g 0.6, 0.3)\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction percentToValue(percent, min, max) {\n  return (max - min) * percent + min;\n}\n/**\n * Rounds a specific value to the next or previous step\n *\n * @param value the value to round\n * @param from the number that stepping started from\n * @param step the specified step\n */\n\nfunction roundValueToStep(value, from, step) {\n  var nextValue = Math.round((value - from) / step) * step + from;\n  var precision = countDecimalPlaces(step);\n  return toPrecision(nextValue, precision);\n}\n/**\n * Clamps a value to ensure it stays within the min and max range.\n *\n * @param value the value to clamp\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction clampValue(value, min, max) {\n  if (value == null) return value;\n  warn({\n    condition: max < min,\n    message: \"clamp: max cannot be less than min\"\n  });\n  return Math.min(Math.max(value, min), max);\n}\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\nfunction isMouseEvent(event) {\n  var win = getEventWindow(event); // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n\n  if (typeof win.PointerEvent !== \"undefined\" && event instanceof win.PointerEvent) {\n    return !!(event.pointerType === \"mouse\");\n  }\n  return event instanceof win.MouseEvent;\n}\nfunction isTouchEvent(event) {\n  var hasTouches = !!event.touches;\n  return hasTouches;\n}\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n  return function (event) {\n    var win = getEventWindow(event);\n    var isMouseEvent = event instanceof win.MouseEvent;\n    var isPrimaryPointer = !isMouseEvent || isMouseEvent && event.button === 0;\n    if (isPrimaryPointer) {\n      eventHandler(event);\n    }\n  };\n}\nvar defaultPagePoint = {\n  pageX: 0,\n  pageY: 0\n};\nfunction pointFromTouch(e, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n  var primaryTouch = e.touches[0] || e.changedTouches[0];\n  var point = primaryTouch || defaultPagePoint;\n  return {\n    x: point[pointType + \"X\"],\n    y: point[pointType + \"Y\"]\n  };\n}\nfunction pointFromMouse(point, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n  return {\n    x: point[pointType + \"X\"],\n    y: point[pointType + \"Y\"]\n  };\n}\nfunction extractEventInfo(event, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n  return {\n    point: isTouchEvent(event) ? pointFromTouch(event, pointType) : pointFromMouse(event, pointType)\n  };\n}\nfunction getViewportPointFromEvent(event) {\n  return extractEventInfo(event, \"client\");\n}\nvar wrapPointerEventHandler = function wrapPointerEventHandler(handler, shouldFilterPrimaryPointer) {\n  if (shouldFilterPrimaryPointer === void 0) {\n    shouldFilterPrimaryPointer = false;\n  }\n  var listener = function listener(event) {\n    return handler(event, extractEventInfo(event));\n  };\n  return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener;\n}; // We check for event support via functions in case they've been mocked by a testing suite.\n\nvar supportsPointerEvents = function supportsPointerEvents() {\n  return isBrowser && window.onpointerdown === null;\n};\nvar supportsTouchEvents = function supportsTouchEvents() {\n  return isBrowser && window.ontouchstart === null;\n};\nvar supportsMouseEvents = function supportsMouseEvents() {\n  return isBrowser && window.onmousedown === null;\n};\nvar mouseEventNames = {\n  pointerdown: \"mousedown\",\n  pointermove: \"mousemove\",\n  pointerup: \"mouseup\",\n  pointercancel: \"mousecancel\",\n  pointerover: \"mouseover\",\n  pointerout: \"mouseout\",\n  pointerenter: \"mouseenter\",\n  pointerleave: \"mouseleave\"\n};\nvar touchEventNames = {\n  pointerdown: \"touchstart\",\n  pointermove: \"touchmove\",\n  pointerup: \"touchend\",\n  pointercancel: \"touchcancel\"\n};\nfunction getPointerEventName(name) {\n  if (supportsPointerEvents()) {\n    return name;\n  }\n  if (supportsTouchEvents()) {\n    return touchEventNames[name];\n  }\n  if (supportsMouseEvents()) {\n    return mouseEventNames[name];\n  }\n  return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, getPointerEventName(eventName), wrapPointerEventHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction isMultiTouchEvent(event) {\n  return isTouchEvent(event) && event.touches.length > 1;\n}\n\n/**\n * The event information passed to pan event handlers like `onPan`, `onPanStart`.\n *\n * It contains information about the current state of the tap gesture such as its\n * `point`, `delta`, and `offset`\n */\n\n/**\n * @internal\n *\n * A Pan Session is recognized when the pointer is down\n * and moved in the allowed direction.\n */\nvar PanSession = /*#__PURE__*/function () {\n  /**\n   * We use this to keep track of the `x` and `y` pan session history\n   * as the pan event happens. It helps to calculate the `offset` and `delta`\n   */\n  // The pointer event that started the pan session\n  // The current pointer event for the pan session\n  // The current pointer event info for the pan session\n\n  /**\n   * Minimal pan distance required before recognizing the pan.\n   * @default \"3px\"\n   */\n  function PanSession(_event, handlers, threshold) {\n    var _this = this;\n    this.history = [];\n    this.startEvent = null;\n    this.lastEvent = null;\n    this.lastEventInfo = null;\n    this.handlers = {};\n    this.removeListeners = noop;\n    this.threshold = 3;\n    this.win = void 0;\n    this.updatePoint = function () {\n      if (!(_this.lastEvent && _this.lastEventInfo)) return;\n      var info = getPanInfo(_this.lastEventInfo, _this.history);\n      var isPanStarted = _this.startEvent !== null;\n      var isDistancePastThreshold = distance(info.offset, {\n        x: 0,\n        y: 0\n      }) >= _this.threshold;\n      if (!isPanStarted && !isDistancePastThreshold) return;\n      var _getFrameData = getFrameData(),\n        timestamp = _getFrameData.timestamp;\n      _this.history.push(_extends({}, info.point, {\n        timestamp: timestamp\n      }));\n      var _this$handlers = _this.handlers,\n        onStart = _this$handlers.onStart,\n        onMove = _this$handlers.onMove;\n      if (!isPanStarted) {\n        onStart == null ? void 0 : onStart(_this.lastEvent, info);\n        _this.startEvent = _this.lastEvent;\n      }\n      onMove == null ? void 0 : onMove(_this.lastEvent, info);\n    };\n    this.onPointerMove = function (event, info) {\n      _this.lastEvent = event;\n      _this.lastEventInfo = info; // Because Safari doesn't trigger mouseup events when it's above a `<select>`\n\n      if (isMouseEvent(event) && event.buttons === 0) {\n        _this.onPointerUp(event, info);\n        return;\n      } // Throttle mouse move event to once per frame\n\n      sync.update(_this.updatePoint, true);\n    };\n    this.onPointerUp = function (event, info) {\n      // notify pan session ended\n      var panInfo = getPanInfo(info, _this.history);\n      var _this$handlers2 = _this.handlers,\n        onEnd = _this$handlers2.onEnd,\n        onSessionEnd = _this$handlers2.onSessionEnd;\n      onSessionEnd == null ? void 0 : onSessionEnd(event, panInfo);\n      _this.end(); // if panning never started, no need to call `onEnd`\n      // panning requires a pointermove of at least 3px\n\n      if (!onEnd || !_this.startEvent) return;\n      onEnd == null ? void 0 : onEnd(event, panInfo);\n    };\n    this.win = getEventWindow(_event); // If we have more than one touch, don't start detecting this gesture\n\n    if (isMultiTouchEvent(_event)) return;\n    this.handlers = handlers;\n    if (threshold) {\n      this.threshold = threshold;\n    } // stop default browser behavior\n\n    _event.stopPropagation();\n    _event.preventDefault(); // get and save the `pointerdown` event info in history\n    // we'll use it to compute the `offset`\n\n    var _info = extractEventInfo(_event);\n    var _getFrameData2 = getFrameData(),\n      _timestamp = _getFrameData2.timestamp;\n    this.history = [_extends({}, _info.point, {\n      timestamp: _timestamp\n    })]; // notify pan session start\n\n    var onSessionStart = handlers.onSessionStart;\n    onSessionStart == null ? void 0 : onSessionStart(_event, getPanInfo(_info, this.history)); // attach event listeners and return a single function to remove them all\n\n    this.removeListeners = pipe(addPointerEvent(this.win, \"pointermove\", this.onPointerMove), addPointerEvent(this.win, \"pointerup\", this.onPointerUp), addPointerEvent(this.win, \"pointercancel\", this.onPointerUp));\n  }\n  var _proto = PanSession.prototype;\n  _proto.updateHandlers = function updateHandlers(handlers) {\n    this.handlers = handlers;\n  };\n  _proto.end = function end() {\n    var _this$removeListeners;\n    (_this$removeListeners = this.removeListeners) == null ? void 0 : _this$removeListeners.call(this);\n    cancelSync.update(this.updatePoint);\n  };\n  return PanSession;\n}();\nfunction subtractPoint(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\nfunction startPanPoint(history) {\n  return history[0];\n}\nfunction lastPanPoint(history) {\n  return history[history.length - 1];\n}\nfunction getPanInfo(info, history) {\n  return {\n    point: info.point,\n    delta: subtractPoint(info.point, lastPanPoint(history)),\n    offset: subtractPoint(info.point, startPanPoint(history)),\n    velocity: getVelocity(history, 0.1)\n  };\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nvar toMilliseconds = function toMilliseconds(seconds) {\n  return seconds * 1000;\n};\nfunction getVelocity(history, timeDelta) {\n  if (history.length < 2) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n  var i = history.length - 1;\n  var timestampedPoint = null;\n  var lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > toMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n  var time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\n  if (time === 0) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n  var currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time,\n    y: (lastPoint.y - timestampedPoint.y) / time\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\nvar breakpoints = Object.freeze([\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"]);\nfunction mapResponsive(prop, mapper) {\n  if (isArray(prop)) {\n    return prop.map(function (item) {\n      if (item === null) {\n        return null;\n      }\n      return mapper(item);\n    });\n  }\n  if (isObject(prop)) {\n    return objectKeys(prop).reduce(function (result, key) {\n      result[key] = mapper(prop[key]);\n      return result;\n    }, {});\n  }\n  if (prop != null) {\n    return mapper(prop);\n  }\n  return null;\n}\nfunction objectToArrayNotation(obj, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n  var result = bps.map(function (br) {\n    var _obj$br;\n    return (_obj$br = obj[br]) != null ? _obj$br : null;\n  });\n  while (getLastItem(result) === null) {\n    result.pop();\n  }\n  return result;\n}\nfunction arrayToObjectNotation(values, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n  var result = {};\n  values.forEach(function (value, index) {\n    var key = bps[index];\n    if (value == null) return;\n    result[key] = value;\n  });\n  return result;\n}\nfunction isResponsiveObjectLike(obj, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n  var keys = Object.keys(obj);\n  return keys.length > 0 && keys.every(function (key) {\n    return bps.includes(key);\n  });\n}\n/**\n * since breakpoints are defined as custom properties on an array, you may\n * `Object.keys(theme.breakpoints)` to retrieve both regular numeric indices\n * and custom breakpoints as string.\n *\n * This function returns true given a custom array property.\n */\n\nvar isCustomBreakpoint = function isCustomBreakpoint(maybeBreakpoint) {\n  return Number.isNaN(Number(maybeBreakpoint));\n};\nfunction getUserAgentBrowser(navigator) {\n  var ua = navigator.userAgent,\n    vendor = navigator.vendor;\n  var android = /(android)/i.test(ua);\n  switch (true) {\n    case /CriOS/.test(ua):\n      return \"Chrome for iOS\";\n    case /Edg\\//.test(ua):\n      return \"Edge\";\n    case android && /Silk\\//.test(ua):\n      return \"Silk\";\n    case /Chrome/.test(ua) && /Google Inc/.test(vendor):\n      return \"Chrome\";\n    case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n      return \"Firefox\";\n    case android:\n      return \"AOSP\";\n    case /MSIE|Trident/.test(ua):\n      return \"IE\";\n    case /Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua):\n      return \"Safari\";\n    case /AppleWebKit/.test(ua):\n      return \"WebKit\";\n    default:\n      return null;\n  }\n}\nfunction getUserAgentOS(navigator) {\n  var ua = navigator.userAgent,\n    platform = navigator.platform;\n  switch (true) {\n    case /Android/.test(ua):\n      return \"Android\";\n    case /iPhone|iPad|iPod/.test(platform):\n      return \"iOS\";\n    case /Win/.test(platform):\n      return \"Windows\";\n    case /Mac/.test(platform):\n      return \"Mac\";\n    case /CrOS/.test(ua):\n      return \"Chrome OS\";\n    case /Firefox/.test(ua):\n      return \"Firefox OS\";\n    default:\n      return null;\n  }\n}\nfunction detectDeviceType(navigator) {\n  var ua = navigator.userAgent;\n  if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua)) return \"tablet\";\n  if (/(mobi)/i.test(ua)) return \"phone\";\n  return \"desktop\";\n}\nfunction detectOS(os) {\n  if (!isBrowser) return false;\n  return getUserAgentOS(window.navigator) === os;\n}\nfunction detectBrowser(browser) {\n  if (!isBrowser) return false;\n  return getUserAgentBrowser(window.navigator) === browser;\n}\nfunction detectTouch() {\n  if (!isBrowser) return false;\n  return window.ontouchstart === null && window.ontouchmove === null && window.ontouchend === null;\n}\nfunction walkObject(target, predicate) {\n  function inner(value, path) {\n    if (path === void 0) {\n      path = [];\n    }\n    if (isArray(value)) {\n      return value.map(function (item, index) {\n        return inner(item, [].concat(path, [String(index)]));\n      });\n    }\n    if (isObject(value)) {\n      return fromEntries(Object.entries(value).map(function (_ref) {\n        var key = _ref[0],\n          child = _ref[1];\n        return [key, inner(child, [].concat(path, [key]))];\n      }));\n    }\n    return predicate(value, path);\n  }\n  return inner(target);\n}\nexport { PanSession, __DEV__, __TEST__, addDomEvent, addItem, addPointerEvent, analyzeBreakpoints, ariaAttr, arrayToObjectNotation, breakpoints, callAll, callAllHandlers, canUseDOM, chunk, clampValue, closest, compose, contains, countDecimalPlaces, cx, dataAttr, detectBrowser, detectDeviceType, detectOS, detectTouch, determineLazyBehavior, distance, error, extractEventInfo, filterUndefined, flatten, focus, focusNextTabbable, focusPreviousTabbable, fromEntries, get, getActiveElement, getAllFocusable, getAllTabbable, getCSSVar, getEventWindow, getFirstFocusable, getFirstItem, getFirstTabbableIn, getLastItem, getLastTabbableIn, getNextIndex, getNextItem, getNextItemFromSearch, getNextTabbable, getOwnerDocument, getOwnerWindow, getPointerEventName, getPrevIndex, getPrevItem, getPreviousTabbable, getRelatedTarget, getViewportPointFromEvent, getWithDefault, hasDisplayNone, hasFocusWithin, hasNegativeTabIndex, hasTabIndex, isActiveElement, isArray, isBrowser, isContentEditable, isCssVar, isCustomBreakpoint, isDefined, isDisabled, isElement, isEmpty, isEmptyArray, isEmptyObject, isFocusable, isFunction, isHTMLElement, isHidden, isInputElement, isInputEvent, isMouseEvent, isMultiTouchEvent, isNotEmptyObject, isNotNumber, isNull, isNumber, isNumeric, isObject, isRefObject, isResponsiveObjectLike, isRightClick, isString, isTabbable, isTouchEvent, isUndefined, mapResponsive, maxSafeInteger, memoize, memoizedGet, minSafeInteger, noop, normalizeEventKey, objectFilter, objectKeys, objectToArrayNotation, omit, once, percentToValue, pick, pipe, px, removeIndex, removeItem, roundValueToStep, runIfFn, split, toPrecision, valueToPercent, walkObject, warn, wrapPointerEventHandler };","map":{"version":3,"names":["default","mergeWith","sync","cancelSync","getFrameData","getFirstItem","array","length","undefined","getLastItem","getPrevItem","index","loop","prevIndex","getPrevIndex","getNextItem","nextIndex","getNextIndex","removeIndex","filter","_","idx","addItem","item","concat","removeItem","eachItem","currentIndex","step","lastIndex","count","chunk","size","reduce","rows","currentValue","push","getNextItemFromSearch","items","searchString","itemToString","currentItem","foundItem","find","toLowerCase","startsWith","matchingItems","includes","indexOf","isNumber","value","isNotNumber","Number","isNaN","isFinite","isNumeric","parseFloat","isArray","Array","isEmptyArray","isFunction","isDefined","isUndefined","isObject","type","isEmptyObject","Object","keys","isNotEmptyObject","isNull","isString","prototype","toString","call","isCssVar","test","isEmpty","__DEV__","process","env","NODE_ENV","__TEST__","isRefObject","val","isInputEvent","target","omit","object","result","forEach","key","pick","split","picked","omitted","get","obj","path","fallback","memoize","fn","cache","WeakMap","memoizedFn","has","set","Map","map","memoizedGet","getWithDefault","scale","objectFilter","shouldPass","filterUndefined","objectKeys","fromEntries","entries","carry","_ref","getCSSVar","theme","_theme$__cssMap$$varR","_theme$__cssMap$","__cssMap","varRef","analyzeCSSValue","num","unit","replace","String","unitless","px","_analyzeCSSValue","sortByBreakpointValue","a","b","parseInt","sortBps","breakpoints","sort","normalize","sorted","assign","values","Set","subtract","_px","factor","endsWith","m","queryString","min","max","query","join","analyzeBreakpoints","_breakpoints$base","base","normalized","queries","entry","_entry","breakpoint","minW","_ref2","maxW","maxWQuery","minWQuery","minMaxQuery","_keys","_keysArr","from","isResponsive","every","asObject","asArray","details","media","slice","toArrayValue","Error","bp","_test$bp","pop","toObjectValue","acc","isElement","el","nodeType","Node","ELEMENT_NODE","isHTMLElement","_el$ownerDocument$def","win","ownerDocument","defaultView","window","HTMLElement","getOwnerWindow","node","_getOwnerDocument$def","_getOwnerDocument","getOwnerDocument","_node$ownerDocument","document","getEventWindow","event","_view","view","canUseDOM","createElement","isBrowser","dataAttr","condition","ariaAttr","cx","_len","arguments","classNames","_key","Boolean","getActiveElement","doc","activeElement","contains","parent","child","addDomEvent","eventName","handler","options","addEventListener","removeEventListener","normalizeEventKey","keyCode","isArrowKey","eventKey","getRelatedTarget","_event$target","_event$relatedTarget","currentTarget","relatedTarget","isRightClick","button","hasDisplayNone","element","getComputedStyle","display","hasTabIndex","hasAttribute","hasNegativeTabIndex","tabIndex","isDisabled","getAttribute","isInputElement","tagName","isActiveElement","hasFocusWithin","isHidden","parentElement","hidden","isContentEditable","isFocusable","localName","focusableTags","others","audio","video","isTabbable","focusableElList","focusableElSelector","getAllFocusable","container","focusableEls","querySelectorAll","unshift","getFirstFocusable","allFocusable","getAllTabbable","fallbackToFocusable","allTabbable","getFirstTabbableIn","_getAllTabbable","first","getLastTabbableIn","getNextTabbable","getPreviousTabbable","reverse","focusNextTabbable","nextTabbable","focus","focusPreviousTabbable","previousTabbable","matches","selectors","msMatchesSelector","webkitMatchesSelector","closest","parentNode","_arrayLikeToArray","arr","len","i","arr2","_unsupportedIterableToArray","o","minLen","n","constructor","name","_createForOfIteratorHelperLoose","allowArrayLike","it","Symbol","iterator","next","bind","done","TypeError","runIfFn","valueOrFn","args","apply","callAllHandlers","_len2","fns","_key2","func","some","defaultPrevented","callAll","_len3","_key3","mergedFn","arg","compose","fn1","_len4","_key4","f1","f2","once","_len5","_key5","noop","warn","message","console","error","pipe","_len6","_key6","v","distance1D","Math","abs","isPoint","point","distance","xDelta","x","yDelta","y","sqrt","pow","_options","_options$isActive","isActive","nextTick","_options$preventScrol","preventScroll","_options$selectTextIf","selectTextIfInput","triggerFocus","supportsPreventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","select","requestAnimationFrame","supportsPreventScrollCached","div","e","_doc$defaultView","rootScrollingElement","scrollingElement","documentElement","offsetHeight","scrollHeight","offsetWidth","scrollWidth","scrollTop","scrollLeft","_iterator","_step","_step$value","flatten","maxDepth","Infinity","childKey","childValue","determineLazyBehavior","hasBeenSelected","isLazy","isSelected","_options$lazyBehavior","lazyBehavior","minSafeInteger","MIN_SAFE_INTEGER","maxSafeInteger","MAX_SAFE_INTEGER","toNumber","toPrecision","precision","nextValue","scaleFactor","round","toFixed","countDecimalPlaces","p","valueToPercent","percentToValue","percent","roundValueToStep","clampValue","_extends","source","hasOwnProperty","isMouseEvent","PointerEvent","pointerType","MouseEvent","isTouchEvent","hasTouches","touches","filterPrimaryPointer","eventHandler","isPrimaryPointer","defaultPagePoint","pageX","pageY","pointFromTouch","pointType","primaryTouch","changedTouches","pointFromMouse","extractEventInfo","getViewportPointFromEvent","wrapPointerEventHandler","shouldFilterPrimaryPointer","listener","supportsPointerEvents","onpointerdown","supportsTouchEvents","ontouchstart","supportsMouseEvents","onmousedown","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","addPointerEvent","isMultiTouchEvent","PanSession","_event","handlers","threshold","_this","history","startEvent","lastEvent","lastEventInfo","removeListeners","updatePoint","info","getPanInfo","isPanStarted","isDistancePastThreshold","offset","_getFrameData","timestamp","_this$handlers","onStart","onMove","onPointerMove","buttons","onPointerUp","update","panInfo","_this$handlers2","onEnd","onSessionEnd","end","stopPropagation","preventDefault","_info","_getFrameData2","_timestamp","onSessionStart","_proto","updateHandlers","_this$removeListeners","subtractPoint","startPanPoint","lastPanPoint","delta","velocity","getVelocity","lastDevicePoint","toMilliseconds","seconds","timeDelta","timestampedPoint","lastPoint","time","currentVelocity","freeze","mapResponsive","prop","mapper","objectToArrayNotation","bps","br","_obj$br","arrayToObjectNotation","isResponsiveObjectLike","isCustomBreakpoint","maybeBreakpoint","getUserAgentBrowser","navigator","ua","userAgent","vendor","android","getUserAgentOS","platform","detectDeviceType","detectOS","os","detectBrowser","browser","detectTouch","ontouchmove","ontouchend","walkObject","predicate","inner"],"sources":["C:/ldt/LDT/management/node_modules/@chakra-ui/utils/dist/chakra-ui-utils.esm.js"],"sourcesContent":["export * from 'css-box-model';\nexport { default as mergeWith } from 'lodash.mergewith';\nimport sync, { cancelSync, getFrameData } from 'framesync';\n\nfunction getFirstItem(array) {\n  return array != null && array.length ? array[0] : undefined;\n}\nfunction getLastItem(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\nfunction getPrevItem(index, array, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n\n  var prevIndex = getPrevIndex(index, array.length, loop);\n  return array[prevIndex];\n}\nfunction getNextItem(index, array, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n\n  var nextIndex = getNextIndex(index, array.length, 1, loop);\n  return array[nextIndex];\n}\nfunction removeIndex(array, index) {\n  return array.filter(function (_, idx) {\n    return idx !== index;\n  });\n}\nfunction addItem(array, item) {\n  return [].concat(array, [item]);\n}\nfunction removeItem(array, item) {\n  return array.filter(function (eachItem) {\n    return eachItem !== item;\n  });\n}\n/**\n * Get the next index based on the current index and step.\n *\n * @param currentIndex the current index\n * @param length the total length or count of items\n * @param step the number of steps\n * @param loop whether to circle back once `currentIndex` is at the start/end\n */\n\nfunction getNextIndex(currentIndex, length, step, loop) {\n  if (step === void 0) {\n    step = 1;\n  }\n\n  if (loop === void 0) {\n    loop = true;\n  }\n\n  var lastIndex = length - 1;\n\n  if (currentIndex === -1) {\n    return step > 0 ? 0 : lastIndex;\n  }\n\n  var nextIndex = currentIndex + step;\n\n  if (nextIndex < 0) {\n    return loop ? lastIndex : 0;\n  }\n\n  if (nextIndex >= length) {\n    if (loop) return 0;\n    return currentIndex > length ? length : currentIndex;\n  }\n\n  return nextIndex;\n}\n/**\n * Get's the previous index based on the current index.\n * Mostly used for keyboard navigation.\n *\n * @param index - the current index\n * @param count - the length or total count of items in the array\n * @param loop - whether we should circle back to the\n * first/last once `currentIndex` is at the start/end\n */\n\nfunction getPrevIndex(index, count, loop) {\n  if (loop === void 0) {\n    loop = true;\n  }\n\n  return getNextIndex(index, count, -1, loop);\n}\n/**\n * Converts an array into smaller chunks or groups.\n *\n * @param array the array to chunk into group\n * @param size the length of each chunk\n */\n\nfunction chunk(array, size) {\n  return array.reduce(function (rows, currentValue, index) {\n    if (index % size === 0) {\n      rows.push([currentValue]);\n    } else {\n      rows[rows.length - 1].push(currentValue);\n    }\n\n    return rows;\n  }, []);\n}\n/**\n * Gets the next item based on a search string\n *\n * @param items array of items\n * @param searchString the search string\n * @param itemToString resolves an item to string\n * @param currentItem the current selected item\n */\n\nfunction getNextItemFromSearch(items, searchString, itemToString, currentItem) {\n  if (searchString == null) {\n    return currentItem;\n  } // If current item doesn't exist, find the item that matches the search string\n\n\n  if (!currentItem) {\n    var foundItem = items.find(function (item) {\n      return itemToString(item).toLowerCase().startsWith(searchString.toLowerCase());\n    });\n    return foundItem;\n  } // Filter items for ones that match the search string (case insensitive)\n\n\n  var matchingItems = items.filter(function (item) {\n    return itemToString(item).toLowerCase().startsWith(searchString.toLowerCase());\n  }); // If there's a match, let's get the next item to select\n\n  if (matchingItems.length > 0) {\n    var nextIndex; // If the currentItem is in the available items, we move to the next available option\n\n    if (matchingItems.includes(currentItem)) {\n      var currentIndex = matchingItems.indexOf(currentItem);\n      nextIndex = currentIndex + 1;\n\n      if (nextIndex === matchingItems.length) {\n        nextIndex = 0;\n      }\n\n      return matchingItems[nextIndex];\n    } // Else, we pick the first item in the available items\n\n\n    nextIndex = items.indexOf(matchingItems[0]);\n    return items[nextIndex];\n  } // a decent fallback to the currentItem\n\n\n  return currentItem;\n}\n\n// Number assertions\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isNotNumber(value) {\n  return typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value);\n}\nfunction isNumeric(value) {\n  return value != null && value - parseFloat(value) + 1 >= 0;\n} // Array assertions\n\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isEmptyArray(value) {\n  return isArray(value) && value.length === 0;\n} // Function assertions\n\nfunction isFunction(value) {\n  return typeof value === \"function\";\n} // Generic assertions\n\nfunction isDefined(value) {\n  return typeof value !== \"undefined\" && value !== undefined;\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\" || value === undefined;\n} // Object assertions\n\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type === \"object\" || type === \"function\") && !isArray(value);\n}\nfunction isEmptyObject(value) {\n  return isObject(value) && Object.keys(value).length === 0;\n}\nfunction isNotEmptyObject(value) {\n  return value && !isEmptyObject(value);\n}\nfunction isNull(value) {\n  return value == null;\n} // String assertions\n\nfunction isString(value) {\n  return Object.prototype.toString.call(value) === \"[object String]\";\n}\nfunction isCssVar(value) {\n  return /^var\\(--.+\\)$/.test(value);\n} // Empty assertions\n\nfunction isEmpty(value) {\n  if (isArray(value)) return isEmptyArray(value);\n  if (isObject(value)) return isEmptyObject(value);\n  if (value == null || value === \"\") return true;\n  return false;\n}\nvar __DEV__ = process.env.NODE_ENV !== \"production\";\nvar __TEST__ = process.env.NODE_ENV === \"test\";\nfunction isRefObject(val) {\n  return \"current\" in val;\n}\nfunction isInputEvent(value) {\n  return value && isObject(value) && isObject(value.target);\n}\n\nfunction omit(object, keys) {\n  var result = {};\n  Object.keys(object).forEach(function (key) {\n    if (keys.includes(key)) return;\n    result[key] = object[key];\n  });\n  return result;\n}\nfunction pick(object, keys) {\n  var result = {};\n  keys.forEach(function (key) {\n    if (key in object) {\n      result[key] = object[key];\n    }\n  });\n  return result;\n}\nfunction split(object, keys) {\n  var picked = {};\n  var omitted = {};\n  Object.keys(object).forEach(function (key) {\n    if (keys.includes(key)) {\n      picked[key] = object[key];\n    } else {\n      omitted[key] = object[key];\n    }\n  });\n  return [picked, omitted];\n}\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def  - the fallback value\n */\n\nfunction get(obj, path, fallback, index) {\n  var key = typeof path === \"string\" ? path.split(\".\") : [path];\n\n  for (index = 0; index < key.length; index += 1) {\n    if (!obj) break;\n    obj = obj[key[index]];\n  }\n\n  return obj === undefined ? fallback : obj;\n}\nvar memoize = function memoize(fn) {\n  var cache = new WeakMap();\n\n  var memoizedFn = function memoizedFn(obj, path, fallback, index) {\n    if (typeof obj === \"undefined\") {\n      return fn(obj, path, fallback);\n    }\n\n    if (!cache.has(obj)) {\n      cache.set(obj, new Map());\n    }\n\n    var map = cache.get(obj);\n\n    if (map.has(path)) {\n      return map.get(path);\n    }\n\n    var value = fn(obj, path, fallback, index);\n    map.set(path, value);\n    return value;\n  };\n\n  return memoizedFn;\n};\nvar memoizedGet = memoize(get);\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\n\nfunction getWithDefault(path, scale) {\n  return memoizedGet(scale, path, path);\n}\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nfunction objectFilter(object, fn) {\n  var result = {};\n  Object.keys(object).forEach(function (key) {\n    var value = object[key];\n    var shouldPass = fn(value, key, object);\n\n    if (shouldPass) {\n      result[key] = value;\n    }\n  });\n  return result;\n}\nvar filterUndefined = function filterUndefined(object) {\n  return objectFilter(object, function (val) {\n    return val !== null && val !== undefined;\n  });\n};\nvar objectKeys = function objectKeys(obj) {\n  return Object.keys(obj);\n};\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\n\nvar fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (carry, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n    carry[key] = value;\n    return carry;\n  }, {});\n};\n/**\n * Get the CSS variable ref stored in the theme\n */\n\nvar getCSSVar = function getCSSVar(theme, scale, value) {\n  var _theme$__cssMap$$varR, _theme$__cssMap$;\n\n  return (_theme$__cssMap$$varR = (_theme$__cssMap$ = theme.__cssMap[scale + \".\" + value]) == null ? void 0 : _theme$__cssMap$.varRef) != null ? _theme$__cssMap$$varR : value;\n};\n\nfunction analyzeCSSValue(value) {\n  var num = parseFloat(value.toString());\n  var unit = value.toString().replace(String(num), \"\");\n  return {\n    unitless: !unit,\n    value: num,\n    unit: unit\n  };\n}\n\nfunction px(value) {\n  if (value == null) return value;\n\n  var _analyzeCSSValue = analyzeCSSValue(value),\n      unitless = _analyzeCSSValue.unitless;\n\n  return unitless || isNumber(value) ? value + \"px\" : value;\n}\n\nvar sortByBreakpointValue = function sortByBreakpointValue(a, b) {\n  return parseInt(a[1], 10) > parseInt(b[1], 10) ? 1 : -1;\n};\n\nvar sortBps = function sortBps(breakpoints) {\n  return fromEntries(Object.entries(breakpoints).sort(sortByBreakpointValue));\n};\n\nfunction normalize(breakpoints) {\n  var sorted = sortBps(breakpoints);\n  return Object.assign(Object.values(sorted), sorted);\n}\n\nfunction keys(breakpoints) {\n  var value = Object.keys(sortBps(breakpoints));\n  return new Set(value);\n}\n\nfunction subtract(value) {\n  var _px;\n\n  if (!value) return value;\n  value = (_px = px(value)) != null ? _px : value;\n  var factor = value.endsWith(\"px\") ? -1 : // the equivalent of 1px in em using a 16px base\n  -0.0635;\n  return isNumber(value) ? \"\" + (value + factor) : value.replace(/([0-9]+\\.?[0-9]*)/, function (m) {\n    return \"\" + (parseFloat(m) + factor);\n  });\n}\n\nfunction queryString(min, max) {\n  var query = [\"@media screen\"];\n  if (min) query.push(\"and\", \"(min-width: \" + px(min) + \")\");\n  if (max) query.push(\"and\", \"(max-width: \" + px(max) + \")\");\n  return query.join(\" \");\n}\n\nfunction analyzeBreakpoints(breakpoints) {\n  var _breakpoints$base;\n\n  if (!breakpoints) return null;\n  breakpoints.base = (_breakpoints$base = breakpoints.base) != null ? _breakpoints$base : \"0px\";\n  var normalized = normalize(breakpoints);\n  var queries = Object.entries(breakpoints).sort(sortByBreakpointValue).map(function (_ref, index, entry) {\n    var _entry;\n\n    var breakpoint = _ref[0],\n        minW = _ref[1];\n\n    var _ref2 = (_entry = entry[index + 1]) != null ? _entry : [],\n        maxW = _ref2[1];\n\n    maxW = parseFloat(maxW) > 0 ? subtract(maxW) : undefined;\n    return {\n      breakpoint: breakpoint,\n      minW: minW,\n      maxW: maxW,\n      maxWQuery: queryString(null, maxW),\n      minWQuery: queryString(minW),\n      minMaxQuery: queryString(minW, maxW)\n    };\n  });\n\n  var _keys = keys(breakpoints);\n\n  var _keysArr = Array.from(_keys.values());\n\n  return {\n    keys: _keys,\n    normalized: normalized,\n    isResponsive: function isResponsive(test) {\n      var keys = Object.keys(test);\n      return keys.length > 0 && keys.every(function (key) {\n        return _keys.has(key);\n      });\n    },\n    asObject: sortBps(breakpoints),\n    asArray: normalize(breakpoints),\n    details: queries,\n    media: [null].concat(normalized.map(function (minW) {\n      return queryString(minW);\n    }).slice(1)),\n    toArrayValue: function toArrayValue(test) {\n      if (!isObject(test)) {\n        throw new Error(\"toArrayValue: value must be an object\");\n      }\n\n      var result = _keysArr.map(function (bp) {\n        var _test$bp;\n\n        return (_test$bp = test[bp]) != null ? _test$bp : null;\n      });\n\n      while (getLastItem(result) === null) {\n        result.pop();\n      }\n\n      return result;\n    },\n    toObjectValue: function toObjectValue(test) {\n      if (!Array.isArray(test)) {\n        throw new Error(\"toObjectValue: value must be an array\");\n      }\n\n      return test.reduce(function (acc, value, index) {\n        var key = _keysArr[index];\n        if (key != null && value != null) acc[key] = value;\n        return acc;\n      }, {});\n    }\n  };\n}\n\nfunction isElement(el) {\n  return el != null && typeof el == \"object\" && \"nodeType\" in el && el.nodeType === Node.ELEMENT_NODE;\n}\nfunction isHTMLElement(el) {\n  var _el$ownerDocument$def;\n\n  if (!isElement(el)) {\n    return false;\n  }\n\n  var win = (_el$ownerDocument$def = el.ownerDocument.defaultView) != null ? _el$ownerDocument$def : window;\n  return el instanceof win.HTMLElement;\n}\nfunction getOwnerWindow(node) {\n  var _getOwnerDocument$def, _getOwnerDocument;\n\n  return isElement(node) ? (_getOwnerDocument$def = (_getOwnerDocument = getOwnerDocument(node)) == null ? void 0 : _getOwnerDocument.defaultView) != null ? _getOwnerDocument$def : window : window;\n}\nfunction getOwnerDocument(node) {\n  var _node$ownerDocument;\n\n  return isElement(node) ? (_node$ownerDocument = node.ownerDocument) != null ? _node$ownerDocument : document : document;\n}\nfunction getEventWindow(event) {\n  var _view;\n\n  return (_view = event.view) != null ? _view : window;\n}\nfunction canUseDOM() {\n  return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\nvar isBrowser = canUseDOM();\nvar dataAttr = function dataAttr(condition) {\n  return condition ? \"\" : undefined;\n};\nvar ariaAttr = function ariaAttr(condition) {\n  return condition ? true : undefined;\n};\nvar cx = function cx() {\n  for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n    classNames[_key] = arguments[_key];\n  }\n\n  return classNames.filter(Boolean).join(\" \");\n};\nfunction getActiveElement(node) {\n  var doc = getOwnerDocument(node);\n  return doc == null ? void 0 : doc.activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent) return false;\n  return parent === child || parent.contains(child);\n}\nfunction addDomEvent(target, eventName, handler, options) {\n  target.addEventListener(eventName, handler, options);\n  return function () {\n    target.removeEventListener(eventName, handler, options);\n  };\n}\n/**\n * Get the normalized event key across all browsers\n * @param event keyboard event\n */\n\nfunction normalizeEventKey(event) {\n  var key = event.key,\n      keyCode = event.keyCode;\n  var isArrowKey = keyCode >= 37 && keyCode <= 40 && key.indexOf(\"Arrow\") !== 0;\n  var eventKey = isArrowKey ? \"Arrow\" + key : key;\n  return eventKey;\n}\nfunction getRelatedTarget(event) {\n  var _event$target, _event$relatedTarget;\n\n  var target = (_event$target = event.target) != null ? _event$target : event.currentTarget;\n  var activeElement = getActiveElement(target);\n  return (_event$relatedTarget = event.relatedTarget) != null ? _event$relatedTarget : activeElement;\n}\nfunction isRightClick(event) {\n  return event.button !== 0;\n}\n\n// Really great work done by Diego Haz on this one\nvar hasDisplayNone = function hasDisplayNone(element) {\n  return window.getComputedStyle(element).display === \"none\";\n};\nvar hasTabIndex = function hasTabIndex(element) {\n  return element.hasAttribute(\"tabindex\");\n};\nvar hasNegativeTabIndex = function hasNegativeTabIndex(element) {\n  return hasTabIndex(element) && element.tabIndex === -1;\n};\nfunction isDisabled(element) {\n  return Boolean(element.getAttribute(\"disabled\")) === true || Boolean(element.getAttribute(\"aria-disabled\")) === true;\n}\nfunction isInputElement(element) {\n  return isHTMLElement(element) && element.tagName.toLowerCase() === \"input\" && \"select\" in element;\n}\nfunction isActiveElement(element) {\n  var doc = isHTMLElement(element) ? getOwnerDocument(element) : document;\n  return doc.activeElement === element;\n}\nfunction hasFocusWithin(element) {\n  if (!document.activeElement) return false;\n  return element.contains(document.activeElement);\n}\nfunction isHidden(element) {\n  if (element.parentElement && isHidden(element.parentElement)) return true;\n  return element.hidden;\n}\nfunction isContentEditable(element) {\n  var value = element.getAttribute(\"contenteditable\");\n  return value !== \"false\" && value != null;\n}\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n    return false;\n  }\n\n  var localName = element.localName;\n  var focusableTags = [\"input\", \"select\", \"textarea\", \"button\"];\n  if (focusableTags.indexOf(localName) >= 0) return true;\n  var others = {\n    a: function a() {\n      return element.hasAttribute(\"href\");\n    },\n    audio: function audio() {\n      return element.hasAttribute(\"controls\");\n    },\n    video: function video() {\n      return element.hasAttribute(\"controls\");\n    }\n  };\n\n  if (localName in others) {\n    return others[localName]();\n  }\n\n  if (isContentEditable(element)) return true;\n  return hasTabIndex(element);\n}\nfunction isTabbable(element) {\n  if (!element) return false;\n  return isHTMLElement(element) && isFocusable(element) && !hasNegativeTabIndex(element);\n}\n\nvar focusableElList = [\"input:not([disabled])\", \"select:not([disabled])\", \"textarea:not([disabled])\", \"embed\", \"iframe\", \"object\", \"a[href]\", \"area[href]\", \"button:not([disabled])\", \"[tabindex]\", \"audio[controls]\", \"video[controls]\", \"*[tabindex]:not([aria-disabled])\", \"*[contenteditable]\"];\nvar focusableElSelector = focusableElList.join();\nfunction getAllFocusable(container) {\n  var focusableEls = Array.from(container.querySelectorAll(focusableElSelector));\n  focusableEls.unshift(container);\n  return focusableEls.filter(isFocusable).filter(function (el) {\n    return window.getComputedStyle(el).display !== \"none\";\n  });\n}\nfunction getFirstFocusable(container) {\n  var allFocusable = getAllFocusable(container);\n  return allFocusable.length ? allFocusable[0] : null;\n}\nfunction getAllTabbable(container, fallbackToFocusable) {\n  var allFocusable = Array.from(container.querySelectorAll(focusableElSelector));\n  var allTabbable = allFocusable.filter(isTabbable);\n\n  if (isTabbable(container)) {\n    allTabbable.unshift(container);\n  }\n\n  if (!allTabbable.length && fallbackToFocusable) {\n    return allFocusable;\n  }\n\n  return allTabbable;\n}\nfunction getFirstTabbableIn(container, fallbackToFocusable) {\n  var _getAllTabbable = getAllTabbable(container, fallbackToFocusable),\n      first = _getAllTabbable[0];\n\n  return first || null;\n}\nfunction getLastTabbableIn(container, fallbackToFocusable) {\n  var allTabbable = getAllTabbable(container, fallbackToFocusable);\n  return allTabbable[allTabbable.length - 1] || null;\n}\nfunction getNextTabbable(container, fallbackToFocusable) {\n  var allFocusable = getAllFocusable(container);\n  var index = allFocusable.indexOf(document.activeElement);\n  var slice = allFocusable.slice(index + 1);\n  return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nfunction getPreviousTabbable(container, fallbackToFocusable) {\n  var allFocusable = getAllFocusable(container).reverse();\n  var index = allFocusable.indexOf(document.activeElement);\n  var slice = allFocusable.slice(index + 1);\n  return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nfunction focusNextTabbable(container, fallbackToFocusable) {\n  var nextTabbable = getNextTabbable(container, fallbackToFocusable);\n\n  if (nextTabbable && isHTMLElement(nextTabbable)) {\n    nextTabbable.focus();\n  }\n}\nfunction focusPreviousTabbable(container, fallbackToFocusable) {\n  var previousTabbable = getPreviousTabbable(container, fallbackToFocusable);\n\n  if (previousTabbable && isHTMLElement(previousTabbable)) {\n    previousTabbable.focus();\n  }\n}\n\nfunction matches(element, selectors) {\n  if (\"matches\" in element) return element.matches(selectors);\n  if (\"msMatchesSelector\" in element) return element.msMatchesSelector(selectors);\n  return element.webkitMatchesSelector(selectors);\n}\n\nfunction closest(element, selectors) {\n  if (\"closest\" in element) return element.closest(selectors);\n\n  do {\n    if (matches(element, selectors)) return element;\n    element = element.parentElement || element.parentNode;\n  } while (element !== null && element.nodeType === 1);\n\n  return null;\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (it) return (it = it.call(o)).next.bind(it);\n\n  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n    if (it) o = it;\n    var i = 0;\n    return function () {\n      if (i >= o.length) return {\n        done: true\n      };\n      return {\n        done: false,\n        value: o[i++]\n      };\n    };\n  }\n\n  throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/* eslint-disable no-nested-ternary */\nfunction runIfFn(valueOrFn) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return isFunction(valueOrFn) ? valueOrFn.apply(void 0, args) : valueOrFn;\n}\nfunction callAllHandlers() {\n  for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    fns[_key2] = arguments[_key2];\n  }\n\n  return function func(event) {\n    fns.some(function (fn) {\n      fn == null ? void 0 : fn(event);\n      return event == null ? void 0 : event.defaultPrevented;\n    });\n  };\n}\nfunction callAll() {\n  for (var _len3 = arguments.length, fns = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    fns[_key3] = arguments[_key3];\n  }\n\n  return function mergedFn(arg) {\n    fns.forEach(function (fn) {\n      fn == null ? void 0 : fn(arg);\n    });\n  };\n}\nvar compose = function compose(fn1) {\n  for (var _len4 = arguments.length, fns = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    fns[_key4 - 1] = arguments[_key4];\n  }\n\n  return fns.reduce(function (f1, f2) {\n    return function () {\n      return f1(f2.apply(void 0, arguments));\n    };\n  }, fn1);\n};\nfunction once(fn) {\n  var result;\n  return function func() {\n    if (fn) {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      result = fn.apply(this, args);\n      fn = null;\n    }\n\n    return result;\n  };\n}\nvar noop = function noop() {};\nvar warn = once(function (options) {\n  return function () {\n    var condition = options.condition,\n        message = options.message;\n\n    if (condition && __DEV__) {\n      console.warn(message);\n    }\n  };\n});\nvar error = once(function (options) {\n  return function () {\n    var condition = options.condition,\n        message = options.message;\n\n    if (condition && __DEV__) {\n      console.error(message);\n    }\n  };\n});\nvar pipe = function pipe() {\n  for (var _len6 = arguments.length, fns = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    fns[_key6] = arguments[_key6];\n  }\n\n  return function (v) {\n    return fns.reduce(function (a, b) {\n      return b(a);\n    }, v);\n  };\n};\n\nvar distance1D = function distance1D(a, b) {\n  return Math.abs(a - b);\n};\n\nvar isPoint = function isPoint(point) {\n  return \"x\" in point && \"y\" in point;\n};\n\nfunction distance(a, b) {\n  if (isNumber(a) && isNumber(b)) {\n    return distance1D(a, b);\n  }\n\n  if (isPoint(a) && isPoint(b)) {\n    var xDelta = distance1D(a.x, b.x);\n    var yDelta = distance1D(a.y, b.y);\n    return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2));\n  }\n\n  return 0;\n}\n\nfunction focus(element, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$isActive = _options.isActive,\n      isActive = _options$isActive === void 0 ? isActiveElement : _options$isActive,\n      nextTick = _options.nextTick,\n      _options$preventScrol = _options.preventScroll,\n      preventScroll = _options$preventScrol === void 0 ? true : _options$preventScrol,\n      _options$selectTextIf = _options.selectTextIfInput,\n      selectTextIfInput = _options$selectTextIf === void 0 ? true : _options$selectTextIf;\n  if (!element || isActive(element)) return -1;\n\n  function triggerFocus() {\n    if (!element) {\n      warn({\n        condition: true,\n        message: \"[chakra-ui]: can't call focus() on `null` or `undefined` element\"\n      });\n      return;\n    }\n\n    if (supportsPreventScroll()) {\n      element.focus({\n        preventScroll: preventScroll\n      });\n    } else {\n      element.focus();\n\n      if (preventScroll) {\n        var scrollableElements = getScrollableElements(element);\n        restoreScrollPosition(scrollableElements);\n      }\n    }\n\n    if (isInputElement(element) && selectTextIfInput) {\n      element.select();\n    }\n  }\n\n  if (nextTick) {\n    return requestAnimationFrame(triggerFocus);\n  }\n\n  triggerFocus();\n  return -1;\n}\nvar supportsPreventScrollCached = null;\n\nfunction supportsPreventScroll() {\n  if (supportsPreventScrollCached == null) {\n    supportsPreventScrollCached = false;\n\n    try {\n      var div = document.createElement(\"div\");\n      div.focus({\n        get preventScroll() {\n          supportsPreventScrollCached = true;\n          return true;\n        }\n\n      });\n    } catch (e) {// Ignore\n    }\n  }\n\n  return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element) {\n  var _doc$defaultView;\n\n  var doc = getOwnerDocument(element);\n  var win = (_doc$defaultView = doc.defaultView) != null ? _doc$defaultView : window;\n  var parent = element.parentNode;\n  var scrollableElements = [];\n  var rootScrollingElement = doc.scrollingElement || doc.documentElement;\n\n  while (parent instanceof win.HTMLElement && parent !== rootScrollingElement) {\n    if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) {\n      scrollableElements.push({\n        element: parent,\n        scrollTop: parent.scrollTop,\n        scrollLeft: parent.scrollLeft\n      });\n    }\n\n    parent = parent.parentNode;\n  }\n\n  if (rootScrollingElement instanceof win.HTMLElement) {\n    scrollableElements.push({\n      element: rootScrollingElement,\n      scrollTop: rootScrollingElement.scrollTop,\n      scrollLeft: rootScrollingElement.scrollLeft\n    });\n  }\n\n  return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements) {\n  for (var _iterator = _createForOfIteratorHelperLoose(scrollableElements), _step; !(_step = _iterator()).done;) {\n    var _step$value = _step.value,\n        element = _step$value.element,\n        scrollTop = _step$value.scrollTop,\n        scrollLeft = _step$value.scrollLeft;\n    element.scrollTop = scrollTop;\n    element.scrollLeft = scrollLeft;\n  }\n}\n\nfunction flatten(target, maxDepth) {\n  if (maxDepth === void 0) {\n    maxDepth = Infinity;\n  }\n\n  if (!isObject(target) && !Array.isArray(target) || !maxDepth) {\n    return target;\n  }\n\n  return Object.entries(target).reduce(function (result, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n\n    if (isObject(value) || isArray(value)) {\n      Object.entries(flatten(value, maxDepth - 1)).forEach(function (_ref2) {\n        var childKey = _ref2[0],\n            childValue = _ref2[1];\n        // e.g. gray.500\n        result[key + \".\" + childKey] = childValue;\n      });\n    } else {\n      // e.g. transparent\n      result[key] = value;\n    }\n\n    return result;\n  }, {});\n}\n\n/**\n * Determines whether the children of a disclosure widget\n * should be rendered or not, depending on the lazy behavior.\n *\n * Used in accordion, tabs, popover, menu and other disclosure\n * widgets.\n */\nfunction determineLazyBehavior(options) {\n  var hasBeenSelected = options.hasBeenSelected,\n      isLazy = options.isLazy,\n      isSelected = options.isSelected,\n      _options$lazyBehavior = options.lazyBehavior,\n      lazyBehavior = _options$lazyBehavior === void 0 ? \"unmount\" : _options$lazyBehavior; // if not lazy, always render the disclosure's content\n\n  if (!isLazy) return true; // if the diclosure is selected, render the disclosure's content\n\n  if (isSelected) return true; // if the disclosure was selected but not active, keep its content active\n\n  if (lazyBehavior === \"keepMounted\" && hasBeenSelected) return true;\n  return false;\n}\n\nvar minSafeInteger = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar maxSafeInteger = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nfunction toNumber(value) {\n  var num = parseFloat(value);\n  return isNotNumber(num) ? 0 : num;\n}\n/**\n * Converts a value to a specific precision (or decimal points).\n *\n * Returns a string representing a number in fixed-point notation.\n *\n * @param value the value to convert\n * @param precision the precision or decimal points\n */\n\n\nfunction toPrecision(value, precision) {\n  var nextValue = toNumber(value);\n  var scaleFactor = Math.pow(10, precision != null ? precision : 10);\n  nextValue = Math.round(nextValue * scaleFactor) / scaleFactor;\n  return precision ? nextValue.toFixed(precision) : nextValue.toString();\n}\n/**\n * Counts the number of decimal places a number has\n *\n * @param value the decimal value to count\n */\n\nfunction countDecimalPlaces(value) {\n  if (!Number.isFinite(value)) return 0;\n  var e = 1;\n  var p = 0;\n\n  while (Math.round(value * e) / e !== value) {\n    e *= 10;\n    p += 1;\n  }\n\n  return p;\n}\n/**\n * Convert a value to percentage based on lower and upper bound values\n *\n * @param value the value in number\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction valueToPercent(value, min, max) {\n  return (value - min) * 100 / (max - min);\n}\n/**\n * Calculate the value based on percentage, lower and upper bound values\n *\n * @param percent the percent value in decimals (e.g 0.6, 0.3)\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction percentToValue(percent, min, max) {\n  return (max - min) * percent + min;\n}\n/**\n * Rounds a specific value to the next or previous step\n *\n * @param value the value to round\n * @param from the number that stepping started from\n * @param step the specified step\n */\n\nfunction roundValueToStep(value, from, step) {\n  var nextValue = Math.round((value - from) / step) * step + from;\n  var precision = countDecimalPlaces(step);\n  return toPrecision(nextValue, precision);\n}\n/**\n * Clamps a value to ensure it stays within the min and max range.\n *\n * @param value the value to clamp\n * @param min the minimum value\n * @param max the maximum value\n */\n\nfunction clampValue(value, min, max) {\n  if (value == null) return value;\n  warn({\n    condition: max < min,\n    message: \"clamp: max cannot be less than min\"\n  });\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\n/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\nfunction isMouseEvent(event) {\n  var win = getEventWindow(event); // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n\n  if (typeof win.PointerEvent !== \"undefined\" && event instanceof win.PointerEvent) {\n    return !!(event.pointerType === \"mouse\");\n  }\n\n  return event instanceof win.MouseEvent;\n}\nfunction isTouchEvent(event) {\n  var hasTouches = !!event.touches;\n  return hasTouches;\n}\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n  return function (event) {\n    var win = getEventWindow(event);\n    var isMouseEvent = event instanceof win.MouseEvent;\n    var isPrimaryPointer = !isMouseEvent || isMouseEvent && event.button === 0;\n\n    if (isPrimaryPointer) {\n      eventHandler(event);\n    }\n  };\n}\n\nvar defaultPagePoint = {\n  pageX: 0,\n  pageY: 0\n};\n\nfunction pointFromTouch(e, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n\n  var primaryTouch = e.touches[0] || e.changedTouches[0];\n  var point = primaryTouch || defaultPagePoint;\n  return {\n    x: point[pointType + \"X\"],\n    y: point[pointType + \"Y\"]\n  };\n}\n\nfunction pointFromMouse(point, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n\n  return {\n    x: point[pointType + \"X\"],\n    y: point[pointType + \"Y\"]\n  };\n}\n\nfunction extractEventInfo(event, pointType) {\n  if (pointType === void 0) {\n    pointType = \"page\";\n  }\n\n  return {\n    point: isTouchEvent(event) ? pointFromTouch(event, pointType) : pointFromMouse(event, pointType)\n  };\n}\nfunction getViewportPointFromEvent(event) {\n  return extractEventInfo(event, \"client\");\n}\nvar wrapPointerEventHandler = function wrapPointerEventHandler(handler, shouldFilterPrimaryPointer) {\n  if (shouldFilterPrimaryPointer === void 0) {\n    shouldFilterPrimaryPointer = false;\n  }\n\n  var listener = function listener(event) {\n    return handler(event, extractEventInfo(event));\n  };\n\n  return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener;\n}; // We check for event support via functions in case they've been mocked by a testing suite.\n\nvar supportsPointerEvents = function supportsPointerEvents() {\n  return isBrowser && window.onpointerdown === null;\n};\n\nvar supportsTouchEvents = function supportsTouchEvents() {\n  return isBrowser && window.ontouchstart === null;\n};\n\nvar supportsMouseEvents = function supportsMouseEvents() {\n  return isBrowser && window.onmousedown === null;\n};\n\nvar mouseEventNames = {\n  pointerdown: \"mousedown\",\n  pointermove: \"mousemove\",\n  pointerup: \"mouseup\",\n  pointercancel: \"mousecancel\",\n  pointerover: \"mouseover\",\n  pointerout: \"mouseout\",\n  pointerenter: \"mouseenter\",\n  pointerleave: \"mouseleave\"\n};\nvar touchEventNames = {\n  pointerdown: \"touchstart\",\n  pointermove: \"touchmove\",\n  pointerup: \"touchend\",\n  pointercancel: \"touchcancel\"\n};\nfunction getPointerEventName(name) {\n  if (supportsPointerEvents()) {\n    return name;\n  }\n\n  if (supportsTouchEvents()) {\n    return touchEventNames[name];\n  }\n\n  if (supportsMouseEvents()) {\n    return mouseEventNames[name];\n  }\n\n  return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, getPointerEventName(eventName), wrapPointerEventHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction isMultiTouchEvent(event) {\n  return isTouchEvent(event) && event.touches.length > 1;\n}\n\n/**\n * The event information passed to pan event handlers like `onPan`, `onPanStart`.\n *\n * It contains information about the current state of the tap gesture such as its\n * `point`, `delta`, and `offset`\n */\n\n/**\n * @internal\n *\n * A Pan Session is recognized when the pointer is down\n * and moved in the allowed direction.\n */\nvar PanSession = /*#__PURE__*/function () {\n  /**\n   * We use this to keep track of the `x` and `y` pan session history\n   * as the pan event happens. It helps to calculate the `offset` and `delta`\n   */\n  // The pointer event that started the pan session\n  // The current pointer event for the pan session\n  // The current pointer event info for the pan session\n\n  /**\n   * Minimal pan distance required before recognizing the pan.\n   * @default \"3px\"\n   */\n  function PanSession(_event, handlers, threshold) {\n    var _this = this;\n\n    this.history = [];\n    this.startEvent = null;\n    this.lastEvent = null;\n    this.lastEventInfo = null;\n    this.handlers = {};\n    this.removeListeners = noop;\n    this.threshold = 3;\n    this.win = void 0;\n\n    this.updatePoint = function () {\n      if (!(_this.lastEvent && _this.lastEventInfo)) return;\n      var info = getPanInfo(_this.lastEventInfo, _this.history);\n      var isPanStarted = _this.startEvent !== null;\n\n      var isDistancePastThreshold = distance(info.offset, {\n        x: 0,\n        y: 0\n      }) >= _this.threshold;\n\n      if (!isPanStarted && !isDistancePastThreshold) return;\n\n      var _getFrameData = getFrameData(),\n          timestamp = _getFrameData.timestamp;\n\n      _this.history.push(_extends({}, info.point, {\n        timestamp: timestamp\n      }));\n\n      var _this$handlers = _this.handlers,\n          onStart = _this$handlers.onStart,\n          onMove = _this$handlers.onMove;\n\n      if (!isPanStarted) {\n        onStart == null ? void 0 : onStart(_this.lastEvent, info);\n        _this.startEvent = _this.lastEvent;\n      }\n\n      onMove == null ? void 0 : onMove(_this.lastEvent, info);\n    };\n\n    this.onPointerMove = function (event, info) {\n      _this.lastEvent = event;\n      _this.lastEventInfo = info; // Because Safari doesn't trigger mouseup events when it's above a `<select>`\n\n      if (isMouseEvent(event) && event.buttons === 0) {\n        _this.onPointerUp(event, info);\n\n        return;\n      } // Throttle mouse move event to once per frame\n\n\n      sync.update(_this.updatePoint, true);\n    };\n\n    this.onPointerUp = function (event, info) {\n      // notify pan session ended\n      var panInfo = getPanInfo(info, _this.history);\n      var _this$handlers2 = _this.handlers,\n          onEnd = _this$handlers2.onEnd,\n          onSessionEnd = _this$handlers2.onSessionEnd;\n      onSessionEnd == null ? void 0 : onSessionEnd(event, panInfo);\n\n      _this.end(); // if panning never started, no need to call `onEnd`\n      // panning requires a pointermove of at least 3px\n\n\n      if (!onEnd || !_this.startEvent) return;\n      onEnd == null ? void 0 : onEnd(event, panInfo);\n    };\n\n    this.win = getEventWindow(_event); // If we have more than one touch, don't start detecting this gesture\n\n    if (isMultiTouchEvent(_event)) return;\n    this.handlers = handlers;\n\n    if (threshold) {\n      this.threshold = threshold;\n    } // stop default browser behavior\n\n\n    _event.stopPropagation();\n\n    _event.preventDefault(); // get and save the `pointerdown` event info in history\n    // we'll use it to compute the `offset`\n\n\n    var _info = extractEventInfo(_event);\n\n    var _getFrameData2 = getFrameData(),\n        _timestamp = _getFrameData2.timestamp;\n\n    this.history = [_extends({}, _info.point, {\n      timestamp: _timestamp\n    })]; // notify pan session start\n\n    var onSessionStart = handlers.onSessionStart;\n    onSessionStart == null ? void 0 : onSessionStart(_event, getPanInfo(_info, this.history)); // attach event listeners and return a single function to remove them all\n\n    this.removeListeners = pipe(addPointerEvent(this.win, \"pointermove\", this.onPointerMove), addPointerEvent(this.win, \"pointerup\", this.onPointerUp), addPointerEvent(this.win, \"pointercancel\", this.onPointerUp));\n  }\n\n  var _proto = PanSession.prototype;\n\n  _proto.updateHandlers = function updateHandlers(handlers) {\n    this.handlers = handlers;\n  };\n\n  _proto.end = function end() {\n    var _this$removeListeners;\n\n    (_this$removeListeners = this.removeListeners) == null ? void 0 : _this$removeListeners.call(this);\n    cancelSync.update(this.updatePoint);\n  };\n\n  return PanSession;\n}();\n\nfunction subtractPoint(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\n\nfunction startPanPoint(history) {\n  return history[0];\n}\n\nfunction lastPanPoint(history) {\n  return history[history.length - 1];\n}\n\nfunction getPanInfo(info, history) {\n  return {\n    point: info.point,\n    delta: subtractPoint(info.point, lastPanPoint(history)),\n    offset: subtractPoint(info.point, startPanPoint(history)),\n    velocity: getVelocity(history, 0.1)\n  };\n}\n\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\n\nvar toMilliseconds = function toMilliseconds(seconds) {\n  return seconds * 1000;\n};\n\nfunction getVelocity(history, timeDelta) {\n  if (history.length < 2) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n\n  var i = history.length - 1;\n  var timestampedPoint = null;\n  var lastPoint = lastDevicePoint(history);\n\n  while (i >= 0) {\n    timestampedPoint = history[i];\n\n    if (lastPoint.timestamp - timestampedPoint.timestamp > toMilliseconds(timeDelta)) {\n      break;\n    }\n\n    i--;\n  }\n\n  if (!timestampedPoint) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n\n  var time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\n\n  if (time === 0) {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n\n  var currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time,\n    y: (lastPoint.y - timestampedPoint.y) / time\n  };\n\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n\n  return currentVelocity;\n}\n\nvar breakpoints = Object.freeze([\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"]);\nfunction mapResponsive(prop, mapper) {\n  if (isArray(prop)) {\n    return prop.map(function (item) {\n      if (item === null) {\n        return null;\n      }\n\n      return mapper(item);\n    });\n  }\n\n  if (isObject(prop)) {\n    return objectKeys(prop).reduce(function (result, key) {\n      result[key] = mapper(prop[key]);\n      return result;\n    }, {});\n  }\n\n  if (prop != null) {\n    return mapper(prop);\n  }\n\n  return null;\n}\nfunction objectToArrayNotation(obj, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n\n  var result = bps.map(function (br) {\n    var _obj$br;\n\n    return (_obj$br = obj[br]) != null ? _obj$br : null;\n  });\n\n  while (getLastItem(result) === null) {\n    result.pop();\n  }\n\n  return result;\n}\nfunction arrayToObjectNotation(values, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n\n  var result = {};\n  values.forEach(function (value, index) {\n    var key = bps[index];\n    if (value == null) return;\n    result[key] = value;\n  });\n  return result;\n}\nfunction isResponsiveObjectLike(obj, bps) {\n  if (bps === void 0) {\n    bps = breakpoints;\n  }\n\n  var keys = Object.keys(obj);\n  return keys.length > 0 && keys.every(function (key) {\n    return bps.includes(key);\n  });\n}\n/**\n * since breakpoints are defined as custom properties on an array, you may\n * `Object.keys(theme.breakpoints)` to retrieve both regular numeric indices\n * and custom breakpoints as string.\n *\n * This function returns true given a custom array property.\n */\n\nvar isCustomBreakpoint = function isCustomBreakpoint(maybeBreakpoint) {\n  return Number.isNaN(Number(maybeBreakpoint));\n};\n\nfunction getUserAgentBrowser(navigator) {\n  var ua = navigator.userAgent,\n      vendor = navigator.vendor;\n  var android = /(android)/i.test(ua);\n\n  switch (true) {\n    case /CriOS/.test(ua):\n      return \"Chrome for iOS\";\n\n    case /Edg\\//.test(ua):\n      return \"Edge\";\n\n    case android && /Silk\\//.test(ua):\n      return \"Silk\";\n\n    case /Chrome/.test(ua) && /Google Inc/.test(vendor):\n      return \"Chrome\";\n\n    case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n      return \"Firefox\";\n\n    case android:\n      return \"AOSP\";\n\n    case /MSIE|Trident/.test(ua):\n      return \"IE\";\n\n    case /Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua):\n      return \"Safari\";\n\n    case /AppleWebKit/.test(ua):\n      return \"WebKit\";\n\n    default:\n      return null;\n  }\n}\n\nfunction getUserAgentOS(navigator) {\n  var ua = navigator.userAgent,\n      platform = navigator.platform;\n\n  switch (true) {\n    case /Android/.test(ua):\n      return \"Android\";\n\n    case /iPhone|iPad|iPod/.test(platform):\n      return \"iOS\";\n\n    case /Win/.test(platform):\n      return \"Windows\";\n\n    case /Mac/.test(platform):\n      return \"Mac\";\n\n    case /CrOS/.test(ua):\n      return \"Chrome OS\";\n\n    case /Firefox/.test(ua):\n      return \"Firefox OS\";\n\n    default:\n      return null;\n  }\n}\n\nfunction detectDeviceType(navigator) {\n  var ua = navigator.userAgent;\n  if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua)) return \"tablet\";\n  if (/(mobi)/i.test(ua)) return \"phone\";\n  return \"desktop\";\n}\nfunction detectOS(os) {\n  if (!isBrowser) return false;\n  return getUserAgentOS(window.navigator) === os;\n}\nfunction detectBrowser(browser) {\n  if (!isBrowser) return false;\n  return getUserAgentBrowser(window.navigator) === browser;\n}\nfunction detectTouch() {\n  if (!isBrowser) return false;\n  return window.ontouchstart === null && window.ontouchmove === null && window.ontouchend === null;\n}\n\nfunction walkObject(target, predicate) {\n  function inner(value, path) {\n    if (path === void 0) {\n      path = [];\n    }\n\n    if (isArray(value)) {\n      return value.map(function (item, index) {\n        return inner(item, [].concat(path, [String(index)]));\n      });\n    }\n\n    if (isObject(value)) {\n      return fromEntries(Object.entries(value).map(function (_ref) {\n        var key = _ref[0],\n            child = _ref[1];\n        return [key, inner(child, [].concat(path, [key]))];\n      }));\n    }\n\n    return predicate(value, path);\n  }\n\n  return inner(target);\n}\n\nexport { PanSession, __DEV__, __TEST__, addDomEvent, addItem, addPointerEvent, analyzeBreakpoints, ariaAttr, arrayToObjectNotation, breakpoints, callAll, callAllHandlers, canUseDOM, chunk, clampValue, closest, compose, contains, countDecimalPlaces, cx, dataAttr, detectBrowser, detectDeviceType, detectOS, detectTouch, determineLazyBehavior, distance, error, extractEventInfo, filterUndefined, flatten, focus, focusNextTabbable, focusPreviousTabbable, fromEntries, get, getActiveElement, getAllFocusable, getAllTabbable, getCSSVar, getEventWindow, getFirstFocusable, getFirstItem, getFirstTabbableIn, getLastItem, getLastTabbableIn, getNextIndex, getNextItem, getNextItemFromSearch, getNextTabbable, getOwnerDocument, getOwnerWindow, getPointerEventName, getPrevIndex, getPrevItem, getPreviousTabbable, getRelatedTarget, getViewportPointFromEvent, getWithDefault, hasDisplayNone, hasFocusWithin, hasNegativeTabIndex, hasTabIndex, isActiveElement, isArray, isBrowser, isContentEditable, isCssVar, isCustomBreakpoint, isDefined, isDisabled, isElement, isEmpty, isEmptyArray, isEmptyObject, isFocusable, isFunction, isHTMLElement, isHidden, isInputElement, isInputEvent, isMouseEvent, isMultiTouchEvent, isNotEmptyObject, isNotNumber, isNull, isNumber, isNumeric, isObject, isRefObject, isResponsiveObjectLike, isRightClick, isString, isTabbable, isTouchEvent, isUndefined, mapResponsive, maxSafeInteger, memoize, memoizedGet, minSafeInteger, noop, normalizeEventKey, objectFilter, objectKeys, objectToArrayNotation, omit, once, percentToValue, pick, pipe, px, removeIndex, removeItem, roundValueToStep, runIfFn, split, toPrecision, valueToPercent, walkObject, warn, wrapPointerEventHandler };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}