HEX
Server: Apache
System: Linux b5.s-host.com.ua 4.18.0-305.10.2.el7.x86_64 #1 SMP Fri Jul 23 21:00:55 UTC 2021 x86_64
User: unelbhzm (1470)
PHP: 8.0.18
Disabled: NONE
Upload Files
File: /sites/nuofama.com/wp-content/themes/blocksy/static/bundle/options.js.map
{"version":3,"file":"options.js","mappings":"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","sources":["webpack://blocksyOptions/webpack/runtime/load script","webpack://blocksyOptions/./node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","webpack://blocksyOptions/./node_modules/@react-spring/core/dist/react-spring-core.esm.js","webpack://blocksyOptions/./node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","webpack://blocksyOptions/./node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","webpack://blocksyOptions/./node_modules/@react-spring/web/dist/react-spring-web.esm.js","webpack://blocksyOptions/./node_modules/array-move/index.js","webpack://blocksyOptions/../src/index.js","webpack://blocksyOptions/./node_modules/@reach/component-component/es/index.js","webpack://blocksyOptions/./static/js/customizer/components/reach/portal.js","webpack://blocksyOptions/./node_modules/@reach/utils/es/index.js","webpack://blocksyOptions/./static/js/customizer/components/reach/dialog.js","webpack://blocksyOptions/./static/js/customizer/components/Overlay.js","webpack://blocksyOptions/./static/js/customizer/components/responsive-controls.js","webpack://blocksyOptions/./static/js/customizer/components/useDeviceManager.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/Sortable.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/helpers.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/sortablejs.js","webpack://blocksyOptions/./static/js/options/GenericOptionType.js","webpack://blocksyOptions/./static/js/options/containers/use-force-update.js","webpack://blocksyOptions/./static/js/options/containers/Condition.js","webpack://blocksyOptions/./static/js/options/containers/Tabs.js","webpack://blocksyOptions/./static/js/options/containers/Group.js","webpack://blocksyOptions/./static/js/options/containers/LabeledGroup.js","webpack://blocksyOptions/./static/js/options/containers/ct-has-meta-category-button.js","webpack://blocksyOptions/./static/js/options/GenericContainerType.js","webpack://blocksyOptions/./static/js/options/OptionsPanel.js","webpack://blocksyOptions/./static/js/options/components/InputWithOnlyNumbers.js","webpack://blocksyOptions/./static/js/customizer/preview-events.js","webpack://blocksyOptions/./static/js/options/components/PanelLevel.js","webpack://blocksyOptions/./static/js/options/helpers/get-label.js","webpack://blocksyOptions/./static/js/options/helpers/get-value-from-input.js","webpack://blocksyOptions/./static/js/options/helpers/parse-choices.js","webpack://blocksyOptions/./static/js/options/helpers/usePopoverMaker.js","webpack://blocksyOptions/./node_modules/colord/index.mjs","webpack://blocksyOptions/./static/js/options/helpers/normalize-color.js","webpack://blocksyOptions/./static/js/options/options/color-picker/color-picker-iris.js","webpack://blocksyOptions/./static/js/options/options/color-picker/picker-modal.js","webpack://blocksyOptions/./static/js/options/options/color-picker/single-picker.js","webpack://blocksyOptions/./static/js/options/options/ct-addable-box.js","webpack://blocksyOptions/./static/js/options/options/background/PatternPicker.js","webpack://blocksyOptions/./static/js/options/options/background/ImagePicker.js","webpack://blocksyOptions/./static/js/options/options/background/GradientPicker.js","webpack://blocksyOptions/./static/js/options/options/background/BackgroundModal.js","webpack://blocksyOptions/./static/js/options/options/ct-background.js","webpack://blocksyOptions/./static/js/options/options/ct-border.js","webpack://blocksyOptions/./static/js/options/options/box-shadow/box-shadow-modal.js","webpack://blocksyOptions/./static/js/options/options/ct-box-shadow.js","webpack://blocksyOptions/./static/js/options/options/ct-button.js","webpack://blocksyOptions/./static/js/options/options/ct-checkboxes.js","webpack://blocksyOptions/./static/js/options/options/color-palettes/PalettePreview.js","webpack://blocksyOptions/./static/js/options/options/color-palettes/ColorPalettesModal.js","webpack://blocksyOptions/./static/js/options/options/ct-color-palettes-picker.js","webpack://blocksyOptions/./static/js/options/options/ct-color-picker.js","webpack://blocksyOptions/./static/js/options/options/ct-customizer-reset-options.js","webpack://blocksyOptions/./static/js/options/options/ct-divider.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/DraggableItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/ColumnsBuilder.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/builder-sidebar/SecondaryItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/builder-sidebar/InvisiblePanels.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/builder-sidebar/PanelsManager.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/AvailableItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/columns/builderReducer.js","webpack://blocksyOptions/./static/js/options/options/ct-footer-builder.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/DraggableItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/PlacementsBuilder/PrimaryPlacement.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/PlacementsBuilder/Row.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/PlacementsBuilder.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/ViewSwitch.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/builder-sidebar/SecondaryItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/builder-sidebar/InvisiblePanels.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/builder-sidebar/PanelsManager.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/AvailableItems.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/builderReducer.js","webpack://blocksyOptions/./static/js/customizer/panels-builder/placements/BuilderRoot.js","webpack://blocksyOptions/./static/js/options/options/ct-header-builder.js","webpack://blocksyOptions/./static/js/options/options/ct-image-picker.js","webpack://blocksyOptions/./static/js/options/options/ct-image-uploader.js","webpack://blocksyOptions/./static/js/options/options/ct-layers-mirror.js","webpack://blocksyOptions/./static/js/options/options/ct-layers/SelectThatAddsItems.js","webpack://blocksyOptions/./static/js/options/options/ct-layers/LayerControls.js","webpack://blocksyOptions/./static/js/options/options/ct-layers.js","webpack://blocksyOptions/./static/js/options/options/ct-multi-image-uploader.js","webpack://blocksyOptions/./static/js/options/options/ct-notification.js","webpack://blocksyOptions/./static/js/options/options/ct-number.js","webpack://blocksyOptions/./static/js/options/options/ct-panel.js","webpack://blocksyOptions/./static/js/options/options/ct-radio.js","webpack://blocksyOptions/./static/js/options/options/ratio/RatioModal.js","webpack://blocksyOptions/./static/js/options/options/ct-ratio.js","webpack://blocksyOptions/./node_modules/compute-scroll-into-view/dist/index.module.js","webpack://blocksyOptions/./node_modules/tslib/tslib.es6.js","webpack://blocksyOptions/./node_modules/downshift/dist/downshift.esm.js","webpack://blocksyOptions/./static/js/options/options/ct-select.js","webpack://blocksyOptions/./static/js/options/options/ct-slider.js","webpack://blocksyOptions/./static/js/options/options/ct-spacer.js","webpack://blocksyOptions/./static/js/options/options/ct-spacing.js","webpack://blocksyOptions/./static/js/options/options/ct-switch.js","webpack://blocksyOptions/./static/js/options/options/ct-title.js","webpack://blocksyOptions/./static/js/options/options/typography/default-data.js","webpack://blocksyOptions/./static/js/options/options/typography/helpers.js","webpack://blocksyOptions/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://blocksyOptions/./node_modules/react-window/dist/index.esm.js","webpack://blocksyOptions/./node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack://blocksyOptions/./static/js/options/options/typography/FontsList.js","webpack://blocksyOptions/./static/js/options/options/typography/VariationsList.js","webpack://blocksyOptions/./static/js/options/options/typography/FontOptions.js","webpack://blocksyOptions/./static/js/options/options/typography/TypographyModal.js","webpack://blocksyOptions/./static/js/options/options/ct-typography.js","webpack://blocksyOptions/./static/js/options/options/ct-visibility.js","webpack://blocksyOptions/./static/js/options/options/ct-woocommerce-columns-and-rows.js","webpack://blocksyOptions/./static/js/options/options/ct-woocommerce-ratio.js","webpack://blocksyOptions/external var \"window.wp.date\"","webpack://blocksyOptions/./static/js/options/options/date-time-picker.js","webpack://blocksyOptions/./static/js/options/options/hidden.js","webpack://blocksyOptions/./static/js/options/options/html.js","webpack://blocksyOptions/./static/js/options/options/jsx.js","webpack://blocksyOptions/./static/js/options/options/react-outside-click-handler.js","webpack://blocksyOptions/./static/js/options/options/text.js","webpack://blocksyOptions/./static/js/options/options/textarea.js","webpack://blocksyOptions/./static/js/options/options/wp-editor.js","webpack://blocksyOptions/./static/js/public-path.js","webpack://blocksyOptions/./node_modules/bezier-easing/src/index.js","webpack://blocksyOptions/./node_modules/call-bind/callBound.js","webpack://blocksyOptions/./node_modules/call-bind/index.js","webpack://blocksyOptions/./node_modules/charenc/charenc.js","webpack://blocksyOptions/./node_modules/classnames/index.js","webpack://blocksyOptions/./node_modules/crypt/crypt.js","webpack://blocksyOptions/./node_modules/customizer-sync-helpers/dist/promote-into-responsive.js","webpack://blocksyOptions/./node_modules/deep-equal/index.js","webpack://blocksyOptions/./node_modules/define-properties/index.js","webpack://blocksyOptions/./node_modules/downshift/node_modules/react-is/cjs/react-is.production.min.js","webpack://blocksyOptions/./node_modules/downshift/node_modules/react-is/index.js","webpack://blocksyOptions/./node_modules/focus-trap/index.js","webpack://blocksyOptions/./node_modules/function-bind/implementation.js","webpack://blocksyOptions/./node_modules/function-bind/index.js","webpack://blocksyOptions/./node_modules/functions-have-names/index.js","webpack://blocksyOptions/./node_modules/get-intrinsic/index.js","webpack://blocksyOptions/./node_modules/has-property-descriptors/index.js","webpack://blocksyOptions/./node_modules/has-symbols/index.js","webpack://blocksyOptions/./node_modules/has-symbols/shams.js","webpack://blocksyOptions/./node_modules/has-tostringtag/shams.js","webpack://blocksyOptions/./node_modules/has/src/index.js","webpack://blocksyOptions/./node_modules/invariant/browser.js","webpack://blocksyOptions/./node_modules/is-arguments/index.js","webpack://blocksyOptions/./node_modules/is-buffer/index.js","webpack://blocksyOptions/./node_modules/is-date-object/index.js","webpack://blocksyOptions/./node_modules/is-regex/index.js","webpack://blocksyOptions/./node_modules/md5/md5.js","webpack://blocksyOptions/./node_modules/nanoid/index.browser.js","webpack://blocksyOptions/./node_modules/object-is/implementation.js","webpack://blocksyOptions/./node_modules/object-is/index.js","webpack://blocksyOptions/./node_modules/object-is/polyfill.js","webpack://blocksyOptions/./node_modules/object-is/shim.js","webpack://blocksyOptions/./node_modules/object-keys/implementation.js","webpack://blocksyOptions/./node_modules/object-keys/index.js","webpack://blocksyOptions/./node_modules/object-keys/isArguments.js","webpack://blocksyOptions/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://blocksyOptions/./node_modules/prop-types/index.js","webpack://blocksyOptions/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://blocksyOptions/./node_modules/react-sortable-hoc/dist/react-sortable-hoc.esm.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://blocksyOptions/./node_modules/react-spring/renderprops.js","webpack://blocksyOptions/./node_modules/regexp.prototype.flags/implementation.js","webpack://blocksyOptions/./node_modules/regexp.prototype.flags/index.js","webpack://blocksyOptions/./node_modules/regexp.prototype.flags/polyfill.js","webpack://blocksyOptions/./node_modules/regexp.prototype.flags/shim.js","webpack://blocksyOptions/./node_modules/simple-linear-scale/index.js","webpack://blocksyOptions/./node_modules/tabbable/index.js","webpack://blocksyOptions/./node_modules/webfontloader/webfontloader.js","webpack://blocksyOptions/./node_modules/xtend/immutable.js","webpack://blocksyOptions/./static/js/options/options/ sync nonrecursive \\.js$","webpack://blocksyOptions/external var \"React\"","webpack://blocksyOptions/external var \"ReactDOM\"","webpack://blocksyOptions/external var \"ctEvents\"","webpack://blocksyOptions/external var \"jQuery\"","webpack://blocksyOptions/external var \"window._\"","webpack://blocksyOptions/external var \"window.wp.components\"","webpack://blocksyOptions/external var \"window.wp.element\"","webpack://blocksyOptions/external var \"window.wp.i18n\"","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://blocksyOptions/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://blocksyOptions/webpack/bootstrap","webpack://blocksyOptions/webpack/runtime/compat get default export","webpack://blocksyOptions/webpack/runtime/define property getters","webpack://blocksyOptions/webpack/runtime/ensure chunk","webpack://blocksyOptions/webpack/runtime/get javascript chunk filename","webpack://blocksyOptions/webpack/runtime/global","webpack://blocksyOptions/webpack/runtime/hasOwnProperty shorthand","webpack://blocksyOptions/webpack/runtime/make namespace object","webpack://blocksyOptions/webpack/runtime/publicPath","webpack://blocksyOptions/webpack/runtime/jsonp chunk loading","webpack://blocksyOptions/./static/js/options/OptionsRoot.js","webpack://blocksyOptions/./static/js/options/initPanels.js","webpack://blocksyOptions/./static/js/backend/woo-variation.js","webpack://blocksyOptions/./static/js/backend/taxonomies.js","webpack://blocksyOptions/./static/js/options.js","webpack://blocksyOptions/./static/js/backend/widgets.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"blocksyOptions:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n  constructor() {\n    this.payload = void 0;\n    setAnimated(this, this);\n  }\n\n  getPayload() {\n    return this.payload || [];\n  }\n\n}\n\nclass AnimatedValue extends Animated {\n  constructor(_value) {\n    super();\n    this.done = true;\n    this.elapsedTime = void 0;\n    this.lastPosition = void 0;\n    this.lastVelocity = void 0;\n    this.v0 = void 0;\n    this.durationProgress = 0;\n    this._value = _value;\n\n    if (is.num(this._value)) {\n      this.lastPosition = this._value;\n    }\n  }\n\n  static create(value) {\n    return new AnimatedValue(value);\n  }\n\n  getPayload() {\n    return [this];\n  }\n\n  getValue() {\n    return this._value;\n  }\n\n  setValue(value, step) {\n    if (is.num(value)) {\n      this.lastPosition = value;\n\n      if (step) {\n        value = Math.round(value / step) * step;\n\n        if (this.done) {\n          this.lastPosition = value;\n        }\n      }\n    }\n\n    if (this._value === value) {\n      return false;\n    }\n\n    this._value = value;\n    return true;\n  }\n\n  reset() {\n    const {\n      done\n    } = this;\n    this.done = false;\n\n    if (is.num(this._value)) {\n      this.elapsedTime = 0;\n      this.durationProgress = 0;\n      this.lastPosition = this._value;\n      if (done) this.lastVelocity = null;\n      this.v0 = null;\n    }\n  }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n  constructor(value) {\n    super(0);\n    this._string = null;\n    this._toString = void 0;\n    this._toString = createInterpolator({\n      output: [value, value]\n    });\n  }\n\n  static create(value) {\n    return new AnimatedString(value);\n  }\n\n  getValue() {\n    let value = this._string;\n    return value == null ? this._string = this._toString(this._value) : value;\n  }\n\n  setValue(value) {\n    if (is.str(value)) {\n      if (value == this._string) {\n        return false;\n      }\n\n      this._string = value;\n      this._value = 1;\n    } else if (super.setValue(value)) {\n      this._string = null;\n    } else {\n      return false;\n    }\n\n    return true;\n  }\n\n  reset(goal) {\n    if (goal) {\n      this._toString = createInterpolator({\n        output: [this.getValue(), goal]\n      });\n    }\n\n    this._value = 0;\n    super.reset();\n  }\n\n}\n\nconst TreeContext = {\n  dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n  constructor(source) {\n    super();\n    this.source = source;\n    this.setValue(source);\n  }\n\n  getValue(animated) {\n    const values = {};\n    eachProp(this.source, (source, key) => {\n      if (isAnimated(source)) {\n        values[key] = source.getValue(animated);\n      } else if (hasFluidValue(source)) {\n        values[key] = getFluidValue(source);\n      } else if (!animated) {\n        values[key] = source;\n      }\n    });\n    return values;\n  }\n\n  setValue(source) {\n    this.source = source;\n    this.payload = this._makePayload(source);\n  }\n\n  reset() {\n    if (this.payload) {\n      each(this.payload, node => node.reset());\n    }\n  }\n\n  _makePayload(source) {\n    if (source) {\n      const payload = new Set();\n      eachProp(source, this._addToPayload, payload);\n      return Array.from(payload);\n    }\n  }\n\n  _addToPayload(source) {\n    if (TreeContext.dependencies && hasFluidValue(source)) {\n      TreeContext.dependencies.add(source);\n    }\n\n    const payload = getPayload(source);\n\n    if (payload) {\n      each(payload, node => this.add(node));\n    }\n  }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n  constructor(source) {\n    super(source);\n  }\n\n  static create(source) {\n    return new AnimatedArray(source);\n  }\n\n  getValue() {\n    return this.source.map(node => node.getValue());\n  }\n\n  setValue(source) {\n    const payload = this.getPayload();\n\n    if (source.length == payload.length) {\n      return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n    }\n\n    super.setValue(source.map(makeAnimated));\n    return true;\n  }\n\n}\n\nfunction makeAnimated(value) {\n  const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n  return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n  const parentNode = getAnimated(value);\n  return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\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\nconst withAnimated = (Component, host) => {\n  const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n  return forwardRef((givenProps, givenRef) => {\n    const instanceRef = useRef(null);\n    const ref = hasInstance && useCallback(value => {\n      instanceRef.current = updateRef(givenRef, value);\n    }, [givenRef]);\n    const [props, deps] = getAnimatedState(givenProps, host);\n    const forceUpdate = useForceUpdate();\n\n    const callback = () => {\n      const instance = instanceRef.current;\n\n      if (hasInstance && !instance) {\n        return;\n      }\n\n      const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n      if (didUpdate === false) {\n        forceUpdate();\n      }\n    };\n\n    const observer = new PropsObserver(callback, deps);\n    const observerRef = useRef();\n    useLayoutEffect(() => {\n      observerRef.current = observer;\n      each(deps, dep => addFluidObserver(dep, observer));\n      return () => {\n        if (observerRef.current) {\n          each(observerRef.current.deps, dep => removeFluidObserver(dep, observerRef.current));\n          raf.cancel(observerRef.current.update);\n        }\n      };\n    });\n    useEffect(callback, []);\n    useOnce(() => () => {\n      const observer = observerRef.current;\n      each(observer.deps, dep => removeFluidObserver(dep, observer));\n    });\n    const usedProps = host.getComponentProps(props.getValue());\n    return React.createElement(Component, _extends({}, usedProps, {\n      ref: ref\n    }));\n  });\n};\n\nclass PropsObserver {\n  constructor(update, deps) {\n    this.update = update;\n    this.deps = deps;\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      raf.write(this.update);\n    }\n  }\n\n}\n\nfunction getAnimatedState(props, host) {\n  const dependencies = new Set();\n  TreeContext.dependencies = dependencies;\n  if (props.style) props = _extends({}, props, {\n    style: host.createAnimatedStyle(props.style)\n  });\n  props = new AnimatedObject(props);\n  TreeContext.dependencies = null;\n  return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n  if (ref) {\n    if (is.fun(ref)) ref(value);else ref.current = value;\n  }\n\n  return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n  applyAnimatedValues: _applyAnimatedValues = () => false,\n  createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n  getComponentProps: _getComponentProps = props => props\n} = {}) => {\n  const hostConfig = {\n    applyAnimatedValues: _applyAnimatedValues,\n    createAnimatedStyle: _createAnimatedStyle,\n    getComponentProps: _getComponentProps\n  };\n\n  const animated = Component => {\n    const displayName = getDisplayName(Component) || 'Anonymous';\n\n    if (is.str(Component)) {\n      Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n    } else {\n      Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n    }\n\n    Component.displayName = `Animated(${displayName})`;\n    return Component;\n  };\n\n  eachProp(components, (Component, key) => {\n    if (is.arr(components)) {\n      key = getDisplayName(Component);\n    }\n\n    animated[key] = animated(Component);\n  });\n  return {\n    animated\n  };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n","import { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\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\nfunction callProp(value, ...args) {\n  return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n  let keys = DEFAULT_PROPS;\n\n  if (props.default && props.default !== true) {\n    props = props.default;\n    keys = Object.keys(props);\n  }\n\n  const defaults = {};\n\n  for (const key of keys) {\n    const value = transform(props[key], key);\n\n    if (!is.und(value)) {\n      defaults[key] = value;\n    }\n  }\n\n  return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n  config: 1,\n  from: 1,\n  to: 1,\n  ref: 1,\n  loop: 1,\n  reset: 1,\n  pause: 1,\n  cancel: 1,\n  reverse: 1,\n  immediate: 1,\n  default: 1,\n  delay: 1,\n  onProps: 1,\n  onStart: 1,\n  onChange: 1,\n  onPause: 1,\n  onResume: 1,\n  onRest: 1,\n  onResolve: 1,\n  items: 1,\n  trail: 1,\n  sort: 1,\n  expires: 1,\n  initial: 1,\n  enter: 1,\n  update: 1,\n  leave: 1,\n  children: 1,\n  onDestroyed: 1,\n  keys: 1,\n  callId: 1,\n  parentId: 1\n};\n\nfunction getForwardProps(props) {\n  const forward = {};\n  let count = 0;\n  eachProp(props, (value, prop) => {\n    if (!RESERVED_PROPS[prop]) {\n      forward[prop] = value;\n      count++;\n    }\n  });\n\n  if (count) {\n    return forward;\n  }\n}\n\nfunction inferTo(props) {\n  const to = getForwardProps(props);\n\n  if (to) {\n    const out = {\n      to\n    };\n    eachProp(props, (val, key) => key in to || (out[key] = val));\n    return out;\n  }\n\n  return _extends({}, props);\n}\nfunction computeGoal(value) {\n  value = getFluidValue(value);\n  return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n    range: [0, 1],\n    output: [value, value]\n  })(1) : value;\n}\nfunction hasProps(props) {\n  for (const _ in props) return true;\n\n  return false;\n}\nfunction isAsyncTo(to) {\n  return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n  var _ctrl$ref;\n\n  (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n  ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n  if (ref && ctrl.ref !== ref) {\n    var _ctrl$ref2;\n\n    (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n    ref.add(ctrl);\n    ctrl.ref = ref;\n  }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n  useLayoutEffect(() => {\n    if (timeSteps) {\n      let prevDelay = 0;\n      each(refs, (ref, i) => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          let delay = timeFrame * timeSteps[i];\n          if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n          each(controllers, ctrl => {\n            each(ctrl.queue, props => {\n              const memoizedDelayProp = props.delay;\n\n              props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n            });\n          });\n          ref.start();\n        }\n      });\n    } else {\n      let p = Promise.resolve();\n      each(refs, ref => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          const queues = controllers.map(ctrl => {\n            const q = ctrl.queue;\n            ctrl.queue = [];\n            return q;\n          });\n          p = p.then(() => {\n            each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n            return Promise.all(ref.start());\n          });\n        }\n      });\n    }\n  });\n}\n\nconst config = {\n  default: {\n    tension: 170,\n    friction: 26\n  },\n  gentle: {\n    tension: 120,\n    friction: 14\n  },\n  wobbly: {\n    tension: 180,\n    friction: 12\n  },\n  stiff: {\n    tension: 210,\n    friction: 20\n  },\n  slow: {\n    tension: 280,\n    friction: 60\n  },\n  molasses: {\n    tension: 280,\n    friction: 120\n  }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n  const n1 = 7.5625;\n  const d1 = 2.75;\n\n  if (x < 1 / d1) {\n    return n1 * x * x;\n  } else if (x < 2 / d1) {\n    return n1 * (x -= 1.5 / d1) * x + 0.75;\n  } else if (x < 2.5 / d1) {\n    return n1 * (x -= 2.25 / d1) * x + 0.9375;\n  } else {\n    return n1 * (x -= 2.625 / d1) * x + 0.984375;\n  }\n};\n\nconst easings = {\n  linear: x => x,\n  easeInQuad: x => x * x,\n  easeOutQuad: x => 1 - (1 - x) * (1 - x),\n  easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n  easeInCubic: x => x * x * x,\n  easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n  easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n  easeInQuart: x => x * x * x * x,\n  easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n  easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n  easeInQuint: x => x * x * x * x * x,\n  easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n  easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n  easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n  easeOutSine: x => Math.sin(x * Math.PI / 2),\n  easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n  easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n  easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n  easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n  easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n  easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n  easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n  easeInBack: x => c3 * x * x * x - c1 * x * x,\n  easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n  easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n  easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n  easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n  easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n  easeInBounce: x => 1 - bounceOut(1 - x),\n  easeOutBounce: bounceOut,\n  easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n  mass: 1,\n  damping: 1,\n  easing: easings.linear,\n  clamp: false\n});\n\nclass AnimationConfig {\n  constructor() {\n    this.tension = void 0;\n    this.friction = void 0;\n    this.frequency = void 0;\n    this.damping = void 0;\n    this.mass = void 0;\n    this.velocity = 0;\n    this.restVelocity = void 0;\n    this.precision = void 0;\n    this.progress = void 0;\n    this.duration = void 0;\n    this.easing = void 0;\n    this.clamp = void 0;\n    this.bounce = void 0;\n    this.decay = void 0;\n    this.round = void 0;\n    Object.assign(this, defaults);\n  }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n  if (defaultConfig) {\n    defaultConfig = _extends({}, defaultConfig);\n    sanitizeConfig(defaultConfig, newConfig);\n    newConfig = _extends({}, defaultConfig, newConfig);\n  }\n\n  sanitizeConfig(config, newConfig);\n  Object.assign(config, newConfig);\n\n  for (const key in defaults) {\n    if (config[key] == null) {\n      config[key] = defaults[key];\n    }\n  }\n\n  let {\n    mass,\n    frequency,\n    damping\n  } = config;\n\n  if (!is.und(frequency)) {\n    if (frequency < 0.01) frequency = 0.01;\n    if (damping < 0) damping = 0;\n    config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n    config.friction = 4 * Math.PI * damping * mass / frequency;\n  }\n\n  return config;\n}\n\nfunction sanitizeConfig(config, props) {\n  if (!is.und(props.decay)) {\n    config.duration = undefined;\n  } else {\n    const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n    if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n      config.duration = undefined;\n      config.decay = undefined;\n    }\n\n    if (isTensionConfig) {\n      config.frequency = undefined;\n    }\n  }\n}\n\nconst emptyArray = [];\nclass Animation {\n  constructor() {\n    this.changed = false;\n    this.values = emptyArray;\n    this.toValues = null;\n    this.fromValues = emptyArray;\n    this.to = void 0;\n    this.from = void 0;\n    this.config = new AnimationConfig();\n    this.immediate = false;\n  }\n\n}\n\nfunction scheduleProps(callId, {\n  key,\n  props,\n  defaultProps,\n  state,\n  actions\n}) {\n  return new Promise((resolve, reject) => {\n    var _props$cancel;\n\n    let delay;\n    let timeout;\n    let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n    if (cancel) {\n      onStart();\n    } else {\n      if (!is.und(props.pause)) {\n        state.paused = matchProp(props.pause, key);\n      }\n\n      let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n      if (pause !== true) {\n        pause = state.paused || matchProp(pause, key);\n      }\n\n      delay = callProp(props.delay || 0, key);\n\n      if (pause) {\n        state.resumeQueue.add(onResume);\n        actions.pause();\n      } else {\n        actions.resume();\n        onResume();\n      }\n    }\n\n    function onPause() {\n      state.resumeQueue.add(onResume);\n      state.timeouts.delete(timeout);\n      timeout.cancel();\n      delay = timeout.time - raf.now();\n    }\n\n    function onResume() {\n      if (delay > 0 && !Globals.skipAnimation) {\n        state.delayed = true;\n        timeout = raf.setTimeout(onStart, delay);\n        state.pauseQueue.add(onPause);\n        state.timeouts.add(timeout);\n      } else {\n        onStart();\n      }\n    }\n\n    function onStart() {\n      if (state.delayed) {\n        state.delayed = false;\n      }\n\n      state.pauseQueue.delete(onPause);\n      state.timeouts.delete(timeout);\n\n      if (callId <= (state.cancelId || 0)) {\n        cancel = true;\n      }\n\n      try {\n        actions.start(_extends({}, props, {\n          callId,\n          cancel\n        }), resolve);\n      } catch (err) {\n        reject(err);\n      }\n    }\n  });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n  value,\n  noop: true,\n  finished: true,\n  cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n  value,\n  finished,\n  cancelled\n});\nconst getCancelledResult = value => ({\n  value,\n  cancelled: true,\n  finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n  const {\n    callId,\n    parentId,\n    onRest\n  } = props;\n  const {\n    asyncTo: prevTo,\n    promise: prevPromise\n  } = state;\n\n  if (!parentId && to === prevTo && !props.reset) {\n    return prevPromise;\n  }\n\n  return state.promise = (async () => {\n    state.asyncId = callId;\n    state.asyncTo = to;\n    const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n    let preventBail;\n    let bail;\n    const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n    const bailIfEnded = bailSignal => {\n      const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n      if (bailResult) {\n        bailSignal.result = bailResult;\n        bail(bailSignal);\n        throw bailSignal;\n      }\n    };\n\n    const animate = (arg1, arg2) => {\n      const bailSignal = new BailSignal();\n      const skipAnimationSignal = new SkipAniamtionSignal();\n      return (async () => {\n        if (Globals.skipAnimation) {\n          stopAsync(state);\n          skipAnimationSignal.result = getFinishedResult(target, false);\n          bail(skipAnimationSignal);\n          throw skipAnimationSignal;\n        }\n\n        bailIfEnded(bailSignal);\n        const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n          to: arg1\n        });\n        props.parentId = callId;\n        eachProp(defaultProps, (value, key) => {\n          if (is.und(props[key])) {\n            props[key] = value;\n          }\n        });\n        const result = await target.start(props);\n        bailIfEnded(bailSignal);\n\n        if (state.paused) {\n          await new Promise(resume => {\n            state.resumeQueue.add(resume);\n          });\n        }\n\n        return result;\n      })();\n    };\n\n    let result;\n\n    if (Globals.skipAnimation) {\n      stopAsync(state);\n      return getFinishedResult(target, false);\n    }\n\n    try {\n      let animating;\n\n      if (is.arr(to)) {\n        animating = (async queue => {\n          for (const props of queue) {\n            await animate(props);\n          }\n        })(to);\n      } else {\n          animating = Promise.resolve(to(animate, target.stop.bind(target)));\n        }\n\n      await Promise.all([animating.then(preventBail), bailPromise]);\n      result = getFinishedResult(target.get(), true, false);\n    } catch (err) {\n      if (err instanceof BailSignal) {\n        result = err.result;\n      } else if (err instanceof SkipAniamtionSignal) {\n        result = err.result;\n      } else {\n        throw err;\n      }\n    } finally {\n      if (callId == state.asyncId) {\n        state.asyncId = parentId;\n        state.asyncTo = parentId ? prevTo : undefined;\n        state.promise = parentId ? prevPromise : undefined;\n      }\n    }\n\n    if (is.fun(onRest)) {\n      raf.batchedUpdates(() => {\n        onRest(result, target, target.item);\n      });\n    }\n\n    return result;\n  })();\n}\nfunction stopAsync(state, cancelId) {\n  flush(state.timeouts, t => t.cancel());\n  state.pauseQueue.clear();\n  state.resumeQueue.clear();\n  state.asyncId = state.asyncTo = state.promise = undefined;\n  if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n  constructor() {\n    super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n    this.result = void 0;\n  }\n\n}\nclass SkipAniamtionSignal extends Error {\n  constructor() {\n    super('SkipAnimationSignal');\n    this.result = void 0;\n  }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n  constructor(...args) {\n    super(...args);\n    this.id = nextId$1++;\n    this.key = void 0;\n    this._priority = 0;\n  }\n\n  get priority() {\n    return this._priority;\n  }\n\n  set priority(priority) {\n    if (this._priority != priority) {\n      this._priority = priority;\n\n      this._onPriorityChange(priority);\n    }\n  }\n\n  get() {\n    const node = getAnimated(this);\n    return node && node.getValue();\n  }\n\n  to(...args) {\n    return Globals.to(this, args);\n  }\n\n  interpolate(...args) {\n    deprecateInterpolate();\n    return Globals.to(this, args);\n  }\n\n  toJSON() {\n    return this.get();\n  }\n\n  observerAdded(count) {\n    if (count == 1) this._attach();\n  }\n\n  observerRemoved(count) {\n    if (count == 0) this._detach();\n  }\n\n  _attach() {}\n\n  _detach() {}\n\n  _onChange(value, idle = false) {\n    callFluidObservers(this, {\n      type: 'change',\n      parent: this,\n      value,\n      idle\n    });\n  }\n\n  _onPriorityChange(priority) {\n    if (!this.idle) {\n      frameLoop.sort(this);\n    }\n\n    callFluidObservers(this, {\n      type: 'priority',\n      parent: this,\n      priority\n    });\n  }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n  constructor(arg1, arg2) {\n    super();\n    this.key = void 0;\n    this.animation = new Animation();\n    this.queue = void 0;\n    this.defaultProps = {};\n    this._state = {\n      paused: false,\n      delayed: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._pendingCalls = new Set();\n    this._lastCallId = 0;\n    this._lastToId = 0;\n    this._memoizedDuration = 0;\n\n    if (!is.und(arg1) || !is.und(arg2)) {\n      const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n        from: arg1\n      });\n\n      if (is.und(props.default)) {\n        props.default = true;\n      }\n\n      this.start(props);\n    }\n  }\n\n  get idle() {\n    return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n  }\n\n  get goal() {\n    return getFluidValue(this.animation.to);\n  }\n\n  get velocity() {\n    const node = getAnimated(this);\n    return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n  }\n\n  get hasAnimated() {\n    return hasAnimated(this);\n  }\n\n  get isAnimating() {\n    return isAnimating(this);\n  }\n\n  get isPaused() {\n    return isPaused(this);\n  }\n\n  get isDelayed() {\n    return this._state.delayed;\n  }\n\n  advance(dt) {\n    let idle = true;\n    let changed = false;\n    const anim = this.animation;\n    let {\n      config,\n      toValues\n    } = anim;\n    const payload = getPayload(anim.to);\n\n    if (!payload && hasFluidValue(anim.to)) {\n      toValues = toArray(getFluidValue(anim.to));\n    }\n\n    anim.values.forEach((node, i) => {\n      if (node.done) return;\n      const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n      let finished = anim.immediate;\n      let position = to;\n\n      if (!finished) {\n        position = node.lastPosition;\n\n        if (config.tension <= 0) {\n          node.done = true;\n          return;\n        }\n\n        let elapsed = node.elapsedTime += dt;\n        const from = anim.fromValues[i];\n        const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n        let velocity;\n\n        if (!is.und(config.duration)) {\n          let p = 1;\n\n          if (config.duration > 0) {\n            if (this._memoizedDuration !== config.duration) {\n              this._memoizedDuration = config.duration;\n\n              if (node.durationProgress > 0) {\n                node.elapsedTime = config.duration * node.durationProgress;\n                elapsed = node.elapsedTime += dt;\n              }\n            }\n\n            p = (config.progress || 0) + elapsed / this._memoizedDuration;\n            p = p > 1 ? 1 : p < 0 ? 0 : p;\n            node.durationProgress = p;\n          }\n\n          position = from + config.easing(p) * (to - from);\n          velocity = (position - node.lastPosition) / dt;\n          finished = p == 1;\n        } else if (config.decay) {\n            const decay = config.decay === true ? 0.998 : config.decay;\n            const e = Math.exp(-(1 - decay) * elapsed);\n            position = from + v0 / (1 - decay) * (1 - e);\n            finished = Math.abs(node.lastPosition - position) < 0.1;\n            velocity = v0 * e;\n          } else {\n              velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n              const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n              const restVelocity = config.restVelocity || precision / 10;\n              const bounceFactor = config.clamp ? 0 : config.bounce;\n              const canBounce = !is.und(bounceFactor);\n              const isGrowing = from == to ? node.v0 > 0 : from < to;\n              let isMoving;\n              let isBouncing = false;\n              const step = 1;\n              const numSteps = Math.ceil(dt / step);\n\n              for (let n = 0; n < numSteps; ++n) {\n                isMoving = Math.abs(velocity) > restVelocity;\n\n                if (!isMoving) {\n                  finished = Math.abs(to - position) <= precision;\n\n                  if (finished) {\n                    break;\n                  }\n                }\n\n                if (canBounce) {\n                  isBouncing = position == to || position > to == isGrowing;\n\n                  if (isBouncing) {\n                    velocity = -velocity * bounceFactor;\n                    position = to;\n                  }\n                }\n\n                const springForce = -config.tension * 0.000001 * (position - to);\n                const dampingForce = -config.friction * 0.001 * velocity;\n                const acceleration = (springForce + dampingForce) / config.mass;\n                velocity = velocity + acceleration * step;\n                position = position + velocity * step;\n              }\n            }\n\n        node.lastVelocity = velocity;\n\n        if (Number.isNaN(position)) {\n          console.warn(`Got NaN while animating:`, this);\n          finished = true;\n        }\n      }\n\n      if (payload && !payload[i].done) {\n        finished = false;\n      }\n\n      if (finished) {\n        node.done = true;\n      } else {\n        idle = false;\n      }\n\n      if (node.setValue(position, config.round)) {\n        changed = true;\n      }\n    });\n    const node = getAnimated(this);\n    const currVal = node.getValue();\n\n    if (idle) {\n      const finalVal = getFluidValue(anim.to);\n\n      if ((currVal !== finalVal || changed) && !config.decay) {\n        node.setValue(finalVal);\n\n        this._onChange(finalVal);\n      } else if (changed && config.decay) {\n        this._onChange(currVal);\n      }\n\n      this._stop();\n    } else if (changed) {\n      this._onChange(currVal);\n    }\n  }\n\n  set(value) {\n    raf.batchedUpdates(() => {\n      this._stop();\n\n      this._focus(value);\n\n      this._set(value);\n    });\n    return this;\n  }\n\n  pause() {\n    this._update({\n      pause: true\n    });\n  }\n\n  resume() {\n    this._update({\n      pause: false\n    });\n  }\n\n  finish() {\n    if (isAnimating(this)) {\n      const {\n        to,\n        config\n      } = this.animation;\n      raf.batchedUpdates(() => {\n        this._onStart();\n\n        if (!config.decay) {\n          this._set(to, false);\n        }\n\n        this._stop();\n      });\n    }\n\n    return this;\n  }\n\n  update(props) {\n    const queue = this.queue || (this.queue = []);\n    queue.push(props);\n    return this;\n  }\n\n  start(to, arg2) {\n    let queue;\n\n    if (!is.und(to)) {\n      queue = [is.obj(to) ? to : _extends({}, arg2, {\n        to\n      })];\n    } else {\n      queue = this.queue || [];\n      this.queue = [];\n    }\n\n    return Promise.all(queue.map(props => {\n      const up = this._update(props);\n\n      return up;\n    })).then(results => getCombinedResult(this, results));\n  }\n\n  stop(cancel) {\n    const {\n      to\n    } = this.animation;\n\n    this._focus(this.get());\n\n    stopAsync(this._state, cancel && this._lastCallId);\n    raf.batchedUpdates(() => this._stop(to, cancel));\n    return this;\n  }\n\n  reset() {\n    this._update({\n      reset: true\n    });\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._start();\n    } else if (event.type == 'priority') {\n      this.priority = event.priority + 1;\n    }\n  }\n\n  _prepareNode(props) {\n    const key = this.key || '';\n    let {\n      to,\n      from\n    } = props;\n    to = is.obj(to) ? to[key] : to;\n\n    if (to == null || isAsyncTo(to)) {\n      to = undefined;\n    }\n\n    from = is.obj(from) ? from[key] : from;\n\n    if (from == null) {\n      from = undefined;\n    }\n\n    const range = {\n      to,\n      from\n    };\n\n    if (!hasAnimated(this)) {\n      if (props.reverse) [to, from] = [from, to];\n      from = getFluidValue(from);\n\n      if (!is.und(from)) {\n        this._set(from);\n      } else if (!getAnimated(this)) {\n          this._set(to);\n        }\n    }\n\n    return range;\n  }\n\n  _update(_ref, isLoop) {\n    let props = _extends({}, _ref);\n\n    const {\n      key,\n      defaultProps\n    } = this;\n    if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n    mergeActiveFn(this, props, 'onProps');\n    sendEvent(this, 'onProps', props, this);\n\n    const range = this._prepareNode(props);\n\n    if (Object.isFrozen(this)) {\n      throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n    }\n\n    const state = this._state;\n    return scheduleProps(++this._lastCallId, {\n      key,\n      props,\n      defaultProps,\n      state,\n      actions: {\n        pause: () => {\n          if (!isPaused(this)) {\n            setPausedBit(this, true);\n            flushCalls(state.pauseQueue);\n            sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        resume: () => {\n          if (isPaused(this)) {\n            setPausedBit(this, false);\n\n            if (isAnimating(this)) {\n              this._resume();\n            }\n\n            flushCalls(state.resumeQueue);\n            sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        start: this._merge.bind(this, range)\n      }\n    }).then(result => {\n      if (props.loop && result.finished && !(isLoop && result.noop)) {\n        const nextProps = createLoopUpdate(props);\n\n        if (nextProps) {\n          return this._update(nextProps, true);\n        }\n      }\n\n      return result;\n    });\n  }\n\n  _merge(range, props, resolve) {\n    if (props.cancel) {\n      this.stop(true);\n      return resolve(getCancelledResult(this));\n    }\n\n    const hasToProp = !is.und(range.to);\n    const hasFromProp = !is.und(range.from);\n\n    if (hasToProp || hasFromProp) {\n      if (props.callId > this._lastToId) {\n        this._lastToId = props.callId;\n      } else {\n        return resolve(getCancelledResult(this));\n      }\n    }\n\n    const {\n      key,\n      defaultProps,\n      animation: anim\n    } = this;\n    const {\n      to: prevTo,\n      from: prevFrom\n    } = anim;\n    let {\n      to = prevTo,\n      from = prevFrom\n    } = range;\n\n    if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n      to = from;\n    }\n\n    if (props.reverse) [to, from] = [from, to];\n    const hasFromChanged = !isEqual(from, prevFrom);\n\n    if (hasFromChanged) {\n      anim.from = from;\n    }\n\n    from = getFluidValue(from);\n    const hasToChanged = !isEqual(to, prevTo);\n\n    if (hasToChanged) {\n      this._focus(to);\n    }\n\n    const hasAsyncTo = isAsyncTo(props.to);\n    const {\n      config\n    } = anim;\n    const {\n      decay,\n      velocity\n    } = config;\n\n    if (hasToProp || hasFromProp) {\n      config.velocity = 0;\n    }\n\n    if (props.config && !hasAsyncTo) {\n      mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n    }\n\n    let node = getAnimated(this);\n\n    if (!node || is.und(to)) {\n      return resolve(getFinishedResult(this, true));\n    }\n\n    const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n    const value = reset ? from : this.get();\n    const goal = computeGoal(to);\n    const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n    const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n    if (hasToChanged) {\n      const nodeType = getAnimatedType(to);\n\n      if (nodeType !== node.constructor) {\n        if (immediate) {\n          node = this._set(goal);\n        } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n      }\n    }\n\n    const goalType = node.constructor;\n    let started = hasFluidValue(to);\n    let finished = false;\n\n    if (!started) {\n      const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n      if (hasToChanged || hasValueChanged) {\n        finished = isEqual(computeGoal(value), goal);\n        started = !finished;\n      }\n\n      if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n        started = true;\n      }\n    }\n\n    if (finished && isAnimating(this)) {\n      if (anim.changed && !reset) {\n        started = true;\n      } else if (!started) {\n          this._stop(prevTo);\n        }\n    }\n\n    if (!hasAsyncTo) {\n      if (started || hasFluidValue(prevTo)) {\n        anim.values = node.getPayload();\n        anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n      }\n\n      if (anim.immediate != immediate) {\n        anim.immediate = immediate;\n\n        if (!immediate && !reset) {\n          this._set(prevTo);\n        }\n      }\n\n      if (started) {\n        const {\n          onRest\n        } = anim;\n        each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n        const result = getFinishedResult(this, checkFinished(this, prevTo));\n        flushCalls(this._pendingCalls, result);\n\n        this._pendingCalls.add(resolve);\n\n        if (anim.changed) raf.batchedUpdates(() => {\n          anim.changed = !reset;\n          onRest == null ? void 0 : onRest(result, this);\n\n          if (reset) {\n            callProp(defaultProps.onRest, result);\n          } else {\n              anim.onStart == null ? void 0 : anim.onStart(result, this);\n            }\n        });\n      }\n    }\n\n    if (reset) {\n      this._set(value);\n    }\n\n    if (hasAsyncTo) {\n      resolve(runAsync(props.to, props, this._state, this));\n    } else if (started) {\n        this._start();\n      } else if (isAnimating(this) && !hasToChanged) {\n          this._pendingCalls.add(resolve);\n        } else {\n            resolve(getNoopResult(value));\n          }\n  }\n\n  _focus(value) {\n    const anim = this.animation;\n\n    if (value !== anim.to) {\n      if (getFluidObservers(this)) {\n        this._detach();\n      }\n\n      anim.to = value;\n\n      if (getFluidObservers(this)) {\n        this._attach();\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 0;\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      addFluidObserver(to, this);\n\n      if (isFrameValue(to)) {\n        priority = to.priority + 1;\n      }\n    }\n\n    this.priority = priority;\n  }\n\n  _detach() {\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      removeFluidObserver(to, this);\n    }\n  }\n\n  _set(arg, idle = true) {\n    const value = getFluidValue(arg);\n\n    if (!is.und(value)) {\n      const oldNode = getAnimated(this);\n\n      if (!oldNode || !isEqual(value, oldNode.getValue())) {\n        const nodeType = getAnimatedType(value);\n\n        if (!oldNode || oldNode.constructor != nodeType) {\n          setAnimated(this, nodeType.create(value));\n        } else {\n          oldNode.setValue(value);\n        }\n\n        if (oldNode) {\n          raf.batchedUpdates(() => {\n            this._onChange(value, idle);\n          });\n        }\n      }\n    }\n\n    return getAnimated(this);\n  }\n\n  _onStart() {\n    const anim = this.animation;\n\n    if (!anim.changed) {\n      anim.changed = true;\n      sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n    }\n  }\n\n  _onChange(value, idle) {\n    if (!idle) {\n      this._onStart();\n\n      callProp(this.animation.onChange, value, this);\n    }\n\n    callProp(this.defaultProps.onChange, value, this);\n\n    super._onChange(value, idle);\n  }\n\n  _start() {\n    const anim = this.animation;\n    getAnimated(this).reset(getFluidValue(anim.to));\n\n    if (!anim.immediate) {\n      anim.fromValues = anim.values.map(node => node.lastPosition);\n    }\n\n    if (!isAnimating(this)) {\n      setActiveBit(this, true);\n\n      if (!isPaused(this)) {\n        this._resume();\n      }\n    }\n  }\n\n  _resume() {\n    if (Globals.skipAnimation) {\n      this.finish();\n    } else {\n      frameLoop.start(this);\n    }\n  }\n\n  _stop(goal, cancel) {\n    if (isAnimating(this)) {\n      setActiveBit(this, false);\n      const anim = this.animation;\n      each(anim.values, node => {\n        node.done = true;\n      });\n\n      if (anim.toValues) {\n        anim.onChange = anim.onPause = anim.onResume = undefined;\n      }\n\n      callFluidObservers(this, {\n        type: 'idle',\n        parent: this\n      });\n      const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n      flushCalls(this._pendingCalls, result);\n\n      if (anim.changed) {\n        anim.changed = false;\n        sendEvent(this, 'onRest', result, this);\n      }\n    }\n  }\n\n}\n\nfunction checkFinished(target, to) {\n  const goal = computeGoal(to);\n  const value = computeGoal(target.get());\n  return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n  let loopRet = callProp(loop);\n\n  if (loopRet) {\n    const overrides = loopRet !== true && inferTo(loopRet);\n    const reverse = (overrides || props).reverse;\n    const reset = !overrides || overrides.reset;\n    return createUpdate(_extends({}, props, {\n      loop,\n      default: false,\n      pause: undefined,\n      to: !reverse || isAsyncTo(to) ? to : undefined,\n      from: reset ? props.from : undefined,\n      reset\n    }, overrides));\n  }\n}\nfunction createUpdate(props) {\n  const {\n    to,\n    from\n  } = props = inferTo(props);\n  const keys = new Set();\n  if (is.obj(to)) findDefined(to, keys);\n  if (is.obj(from)) findDefined(from, keys);\n  props.keys = keys.size ? Array.from(keys) : null;\n  return props;\n}\nfunction declareUpdate(props) {\n  const update = createUpdate(props);\n\n  if (is.und(update.default)) {\n    update.default = getDefaultProps(update);\n  }\n\n  return update;\n}\n\nfunction findDefined(values, keys) {\n  eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n  target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n  var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n  (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n  (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n  constructor(props, flush) {\n    this.id = nextId++;\n    this.springs = {};\n    this.queue = [];\n    this.ref = void 0;\n    this._flush = void 0;\n    this._initialProps = void 0;\n    this._lastAsyncId = 0;\n    this._active = new Set();\n    this._changed = new Set();\n    this._started = false;\n    this._item = void 0;\n    this._state = {\n      paused: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._events = {\n      onStart: new Map(),\n      onChange: new Map(),\n      onRest: new Map()\n    };\n    this._onFrame = this._onFrame.bind(this);\n\n    if (flush) {\n      this._flush = flush;\n    }\n\n    if (props) {\n      this.start(_extends({\n        default: true\n      }, props));\n    }\n  }\n\n  get idle() {\n    return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n      return spring.idle && !spring.isDelayed && !spring.isPaused;\n    });\n  }\n\n  get item() {\n    return this._item;\n  }\n\n  set item(item) {\n    this._item = item;\n  }\n\n  get() {\n    const values = {};\n    this.each((spring, key) => values[key] = spring.get());\n    return values;\n  }\n\n  set(values) {\n    for (const key in values) {\n      const value = values[key];\n\n      if (!is.und(value)) {\n        this.springs[key].set(value);\n      }\n    }\n  }\n\n  update(props) {\n    if (props) {\n      this.queue.push(createUpdate(props));\n    }\n\n    return this;\n  }\n\n  start(props) {\n    let {\n      queue\n    } = this;\n\n    if (props) {\n      queue = toArray(props).map(createUpdate);\n    } else {\n      this.queue = [];\n    }\n\n    if (this._flush) {\n      return this._flush(this, queue);\n    }\n\n    prepareKeys(this, queue);\n    return flushUpdateQueue(this, queue);\n  }\n\n  stop(arg, keys) {\n    if (arg !== !!arg) {\n      keys = arg;\n    }\n\n    if (keys) {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].stop(!!arg));\n    } else {\n      stopAsync(this._state, this._lastAsyncId);\n      this.each(spring => spring.stop(!!arg));\n    }\n\n    return this;\n  }\n\n  pause(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: true\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].pause());\n    }\n\n    return this;\n  }\n\n  resume(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: false\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].resume());\n    }\n\n    return this;\n  }\n\n  each(iterator) {\n    eachProp(this.springs, iterator);\n  }\n\n  _onFrame() {\n    const {\n      onStart,\n      onChange,\n      onRest\n    } = this._events;\n    const active = this._active.size > 0;\n    const changed = this._changed.size > 0;\n\n    if (active && !this._started || changed && !this._started) {\n      this._started = true;\n      flush(onStart, ([onStart, result]) => {\n        result.value = this.get();\n        onStart(result, this, this._item);\n      });\n    }\n\n    const idle = !active && this._started;\n    const values = changed || idle && onRest.size ? this.get() : null;\n\n    if (changed && onChange.size) {\n      flush(onChange, ([onChange, result]) => {\n        result.value = values;\n        onChange(result, this, this._item);\n      });\n    }\n\n    if (idle) {\n      this._started = false;\n      flush(onRest, ([onRest, result]) => {\n        result.value = values;\n        onRest(result, this, this._item);\n      });\n    }\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._changed.add(event.parent);\n\n      if (!event.idle) {\n        this._active.add(event.parent);\n      }\n    } else if (event.type == 'idle') {\n      this._active.delete(event.parent);\n    } else return;\n\n    raf.onFrame(this._onFrame);\n  }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n  return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n  const {\n    keys,\n    to,\n    from,\n    loop,\n    onRest,\n    onResolve\n  } = props;\n  const defaults = is.obj(props.default) && props.default;\n\n  if (loop) {\n    props.loop = false;\n  }\n\n  if (to === false) props.to = null;\n  if (from === false) props.from = null;\n  const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n  if (asyncTo) {\n    props.to = undefined;\n    props.onRest = undefined;\n\n    if (defaults) {\n      defaults.onRest = undefined;\n    }\n  } else {\n      each(BATCHED_EVENTS, key => {\n        const handler = props[key];\n\n        if (is.fun(handler)) {\n          const queue = ctrl['_events'][key];\n\n          props[key] = ({\n            finished,\n            cancelled\n          }) => {\n            const result = queue.get(handler);\n\n            if (result) {\n              if (!finished) result.finished = false;\n              if (cancelled) result.cancelled = true;\n            } else {\n              queue.set(handler, {\n                value: null,\n                finished: finished || false,\n                cancelled: cancelled || false\n              });\n            }\n          };\n\n          if (defaults) {\n            defaults[key] = props[key];\n          }\n        }\n      });\n    }\n\n  const state = ctrl['_state'];\n\n  if (props.pause === !state.paused) {\n    state.paused = props.pause;\n    flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n  } else if (state.paused) {\n      props.pause = true;\n    }\n\n  const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n  const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n  if (asyncTo || cancel && state.asyncId) {\n    promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n      props,\n      state,\n      actions: {\n        pause: noop,\n        resume: noop,\n\n        start(props, resolve) {\n          if (cancel) {\n            stopAsync(state, ctrl['_lastAsyncId']);\n            resolve(getCancelledResult(ctrl));\n          } else {\n            props.onRest = onRest;\n            resolve(runAsync(asyncTo, props, state, ctrl));\n          }\n        }\n\n      }\n    }));\n  }\n\n  if (state.paused) {\n    await new Promise(resume => {\n      state.resumeQueue.add(resume);\n    });\n  }\n\n  const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n  if (loop && result.finished && !(isLoop && result.noop)) {\n    const nextProps = createLoopUpdate(props, loop, to);\n\n    if (nextProps) {\n      prepareKeys(ctrl, [nextProps]);\n      return flushUpdate(ctrl, nextProps, true);\n    }\n  }\n\n  if (onResolve) {\n    raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n  }\n\n  return result;\n}\nfunction getSprings(ctrl, props) {\n  const springs = _extends({}, ctrl.springs);\n\n  if (props) {\n    each(toArray(props), props => {\n      if (is.und(props.keys)) {\n        props = createUpdate(props);\n      }\n\n      if (!is.obj(props.to)) {\n        props = _extends({}, props, {\n          to: undefined\n        });\n      }\n\n      prepareSprings(springs, props, key => {\n        return createSpring(key);\n      });\n    });\n  }\n\n  setSprings(ctrl, springs);\n  return springs;\n}\nfunction setSprings(ctrl, springs) {\n  eachProp(springs, (spring, key) => {\n    if (!ctrl.springs[key]) {\n      ctrl.springs[key] = spring;\n      addFluidObserver(spring, ctrl);\n    }\n  });\n}\n\nfunction createSpring(key, observer) {\n  const spring = new SpringValue();\n  spring.key = key;\n\n  if (observer) {\n    addFluidObserver(spring, observer);\n  }\n\n  return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n  if (props.keys) {\n    each(props.keys, key => {\n      const spring = springs[key] || (springs[key] = create(key));\n      spring['_prepareNode'](props);\n    });\n  }\n}\n\nfunction prepareKeys(ctrl, queue) {\n  each(queue, props => {\n    prepareSprings(ctrl.springs, props, key => {\n      return createSpring(key, ctrl);\n    });\n  });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n  const inherited = useContext(ctx);\n  const pause = props.pause || !!inherited.pause,\n        immediate = props.immediate || !!inherited.immediate;\n  props = useMemoOne(() => ({\n    pause,\n    immediate\n  }), [pause, immediate]);\n  const {\n    Provider\n  } = ctx;\n  return React.createElement(Provider, {\n    value: props\n  }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n  Object.assign(target, React.createContext(init));\n  target.Provider._context = target;\n  target.Consumer._context = target;\n  return target;\n}\n\nconst SpringRef = () => {\n  const current = [];\n\n  const SpringRef = function SpringRef(props) {\n    deprecateDirectCall();\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = _getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.current = current;\n\n  SpringRef.add = function (ctrl) {\n    if (!current.includes(ctrl)) {\n      current.push(ctrl);\n    }\n  };\n\n  SpringRef.delete = function (ctrl) {\n    const i = current.indexOf(ctrl);\n    if (~i) current.splice(i, 1);\n  };\n\n  SpringRef.pause = function () {\n    each(current, ctrl => ctrl.pause(...arguments));\n    return this;\n  };\n\n  SpringRef.resume = function () {\n    each(current, ctrl => ctrl.resume(...arguments));\n    return this;\n  };\n\n  SpringRef.set = function (values) {\n    each(current, ctrl => ctrl.set(values));\n  };\n\n  SpringRef.start = function (props) {\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = this._getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.stop = function () {\n    each(current, ctrl => ctrl.stop(...arguments));\n    return this;\n  };\n\n  SpringRef.update = function (props) {\n    each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n    return this;\n  };\n\n  const _getProps = function _getProps(arg, ctrl, index) {\n    return is.fun(arg) ? arg(index, ctrl) : arg;\n  };\n\n  SpringRef._getProps = _getProps;\n  return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n  const propsFn = is.fun(props) && props;\n  if (propsFn && !deps) deps = [];\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const layoutId = useRef(0);\n  const forceUpdate = useForceUpdate();\n  const state = useMemo(() => ({\n    ctrls: [],\n    queue: [],\n\n    flush(ctrl, updates) {\n      const springs = getSprings(ctrl, updates);\n      const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n      return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n        setSprings(ctrl, springs);\n        state.queue.push(() => {\n          resolve(flushUpdateQueue(ctrl, updates));\n        });\n        forceUpdate();\n      });\n    }\n\n  }), []);\n  const ctrls = useRef([...state.ctrls]);\n  const updates = [];\n  const prevLength = usePrev(length) || 0;\n  useMemo(() => {\n    each(ctrls.current.slice(length, prevLength), ctrl => {\n      detachRefs(ctrl, ref);\n      ctrl.stop(true);\n    });\n    ctrls.current.length = length;\n    declareUpdates(prevLength, length);\n  }, [length]);\n  useMemo(() => {\n    declareUpdates(0, Math.min(prevLength, length));\n  }, deps);\n\n  function declareUpdates(startIndex, endIndex) {\n    for (let i = startIndex; i < endIndex; i++) {\n      const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n      const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n      if (update) {\n        updates[i] = declareUpdate(update);\n      }\n    }\n  }\n\n  const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useLayoutEffect(() => {\n    layoutId.current++;\n    state.ctrls = ctrls.current;\n    const {\n      queue\n    } = state;\n\n    if (queue.length) {\n      state.queue = [];\n      each(queue, cb => cb());\n    }\n\n    each(ctrls.current, (ctrl, i) => {\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      const update = updates[i];\n\n      if (update) {\n        replaceRef(ctrl, update.ref);\n\n        if (ctrl.ref) {\n          ctrl.queue.push(update);\n        } else {\n          ctrl.start(update);\n        }\n      }\n    });\n  });\n  useOnce(() => () => {\n    each(state.ctrls, ctrl => ctrl.stop(true));\n  });\n  const values = springs.map(x => _extends({}, x));\n  return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n  const isFn = is.fun(props);\n  const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n  return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n  var _passedRef;\n\n  const propsFn = is.fun(propsArg) && propsArg;\n  if (propsFn && !deps) deps = [];\n  let reverse = true;\n  let passedRef = undefined;\n  const result = useSprings(length, (i, ctrl) => {\n    const props = propsFn ? propsFn(i, ctrl) : propsArg;\n    passedRef = props.ref;\n    reverse = reverse && props.reverse;\n    return props;\n  }, deps || [{}]);\n  const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n  useLayoutEffect(() => {\n    each(ref.current, (ctrl, i) => {\n      const parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        ctrl.start({\n          to: parent.springs\n        });\n      } else {\n        ctrl.start();\n      }\n    });\n  }, deps);\n\n  if (propsFn || arguments.length == 3) {\n    ref['_getProps'] = (propsArg, ctrl, i) => {\n      const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n      if (props) {\n        const parent = ref.current[i + (props.reverse ? 1 : -1)];\n        if (parent) props.to = parent.springs;\n        return props;\n      }\n    };\n\n    return result;\n  }\n\n  ref['start'] = propsArg => {\n    const results = [];\n    each(ref.current, (ctrl, i) => {\n      const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n      const parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        results.push(ctrl.start(_extends({}, props, {\n          to: parent.springs\n        })));\n      } else {\n        results.push(ctrl.start(_extends({}, props)));\n      }\n    });\n    return results;\n  };\n\n  return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n  TransitionPhase[\"MOUNT\"] = \"mount\";\n  TransitionPhase[\"ENTER\"] = \"enter\";\n  TransitionPhase[\"UPDATE\"] = \"update\";\n  TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n  const propsFn = is.fun(props) && props;\n  const {\n    reset,\n    sort,\n    trail = 0,\n    expires = true,\n    exitBeforeEnter = false,\n    onDestroyed,\n    ref: propsRef,\n    config: propsConfig\n  } = propsFn ? propsFn() : props;\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const items = toArray(data);\n  const transitions = [];\n  const usedTransitions = useRef(null);\n  const prevTransitions = reset ? null : usedTransitions.current;\n  useLayoutEffect(() => {\n    usedTransitions.current = transitions;\n  });\n  useOnce(() => {\n    each(usedTransitions.current, t => {\n      var _t$ctrl$ref;\n\n      (_t$ctrl$ref = t.ctrl.ref) == null ? void 0 : _t$ctrl$ref.add(t.ctrl);\n      const change = changes.get(t);\n\n      if (change) {\n        t.ctrl.start(change.payload);\n      }\n    });\n    return () => {\n      each(usedTransitions.current, t => {\n        if (t.expired) {\n          clearTimeout(t.expirationId);\n        }\n\n        detachRefs(t.ctrl, ref);\n        t.ctrl.stop(true);\n      });\n    };\n  });\n  const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n  const expired = reset && usedTransitions.current || [];\n  useLayoutEffect(() => each(expired, ({\n    ctrl,\n    item,\n    key\n  }) => {\n    detachRefs(ctrl, ref);\n    callProp(onDestroyed, item, key);\n  }));\n  const reused = [];\n  if (prevTransitions) each(prevTransitions, (t, i) => {\n    if (t.expired) {\n      clearTimeout(t.expirationId);\n      expired.push(t);\n    } else {\n      i = reused[i] = keys.indexOf(t.key);\n      if (~i) transitions[i] = t;\n    }\n  });\n  each(items, (item, i) => {\n    if (!transitions[i]) {\n      transitions[i] = {\n        key: keys[i],\n        item,\n        phase: TransitionPhase.MOUNT,\n        ctrl: new Controller()\n      };\n      transitions[i].ctrl.item = item;\n    }\n  });\n\n  if (reused.length) {\n    let i = -1;\n    const {\n      leave\n    } = propsFn ? propsFn() : props;\n    each(reused, (keyIndex, prevIndex) => {\n      const t = prevTransitions[prevIndex];\n\n      if (~keyIndex) {\n        i = transitions.indexOf(t);\n        transitions[i] = _extends({}, t, {\n          item: items[keyIndex]\n        });\n      } else if (leave) {\n        transitions.splice(++i, 0, t);\n      }\n    });\n  }\n\n  if (is.fun(sort)) {\n    transitions.sort((a, b) => sort(a.item, b.item));\n  }\n\n  let delay = -trail;\n  const forceUpdate = useForceUpdate();\n  const defaultProps = getDefaultProps(props);\n  const changes = new Map();\n  const exitingTransitions = useRef(new Map());\n  const forceChange = useRef(false);\n  each(transitions, (t, i) => {\n    const key = t.key;\n    const prevPhase = t.phase;\n    const p = propsFn ? propsFn() : props;\n    let to;\n    let phase;\n    let propsDelay = callProp(p.delay || 0, key);\n\n    if (prevPhase == TransitionPhase.MOUNT) {\n      to = p.enter;\n      phase = TransitionPhase.ENTER;\n    } else {\n      const isLeave = keys.indexOf(key) < 0;\n\n      if (prevPhase != TransitionPhase.LEAVE) {\n        if (isLeave) {\n          to = p.leave;\n          phase = TransitionPhase.LEAVE;\n        } else if (to = p.update) {\n          phase = TransitionPhase.UPDATE;\n        } else return;\n      } else if (!isLeave) {\n        to = p.enter;\n        phase = TransitionPhase.ENTER;\n      } else return;\n    }\n\n    to = callProp(to, t.item, i);\n    to = is.obj(to) ? inferTo(to) : {\n      to\n    };\n\n    if (!to.config) {\n      const config = propsConfig || defaultProps.config;\n      to.config = callProp(config, t.item, i, phase);\n    }\n\n    delay += trail;\n\n    const payload = _extends({}, defaultProps, {\n      delay: propsDelay + delay,\n      ref: propsRef,\n      immediate: p.immediate,\n      reset: false\n    }, to);\n\n    if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n      const _p = propsFn ? propsFn() : props;\n\n      const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n      payload.from = callProp(from, t.item, i);\n    }\n\n    const {\n      onResolve\n    } = payload;\n\n    payload.onResolve = result => {\n      callProp(onResolve, result);\n      const transitions = usedTransitions.current;\n      const t = transitions.find(t => t.key === key);\n      if (!t) return;\n\n      if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n        return;\n      }\n\n      if (t.ctrl.idle) {\n        const idle = transitions.every(t => t.ctrl.idle);\n\n        if (t.phase == TransitionPhase.LEAVE) {\n          const expiry = callProp(expires, t.item);\n\n          if (expiry !== false) {\n            const expiryMs = expiry === true ? 0 : expiry;\n            t.expired = true;\n\n            if (!idle && expiryMs > 0) {\n              if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n              return;\n            }\n          }\n        }\n\n        if (idle && transitions.some(t => t.expired)) {\n          exitingTransitions.current.delete(t);\n\n          if (exitBeforeEnter) {\n            forceChange.current = true;\n          }\n\n          forceUpdate();\n        }\n      }\n    };\n\n    const springs = getSprings(t.ctrl, payload);\n\n    if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n      exitingTransitions.current.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    } else {\n      changes.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    }\n  });\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useLayoutEffect(() => {\n    if (hasContext) {\n      each(transitions, t => {\n        t.ctrl.start({\n          default: context\n        });\n      });\n    }\n  }, [context]);\n  each(changes, (_, t) => {\n    if (exitingTransitions.current.size) {\n      const ind = transitions.findIndex(state => state.key === t.key);\n      transitions.splice(ind, 1);\n    }\n  });\n  useLayoutEffect(() => {\n    each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n      phase,\n      payload\n    }, t) => {\n      const {\n        ctrl\n      } = t;\n      t.phase = phase;\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext && phase == TransitionPhase.ENTER) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      if (payload) {\n        replaceRef(ctrl, payload.ref);\n\n        if (ctrl.ref && !forceChange.current) {\n          ctrl.update(payload);\n        } else {\n          ctrl.start(payload);\n\n          if (forceChange.current) {\n            forceChange.current = false;\n          }\n        }\n      }\n    });\n  }, reset ? void 0 : deps);\n\n  const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n    const {\n      springs\n    } = changes.get(t) || t.ctrl;\n    const elem = render(_extends({}, springs), t.item, t, i);\n    return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n      key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n      ref: elem.ref\n    })) : elem;\n  }));\n\n  return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n  key,\n  keys = key\n}, prevTransitions) {\n  if (keys === null) {\n    const reused = new Set();\n    return items.map(item => {\n      const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n      if (t) {\n        reused.add(t);\n        return t.key;\n      }\n\n      return nextKey++;\n    });\n  }\n\n  return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n  const trails = useTrail(items.length, props);\n  return items.map((item, index) => {\n    const result = children(item, index);\n    return is.fun(result) ? result(trails[index]) : result;\n  });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n  constructor(source, args) {\n    super();\n    this.key = void 0;\n    this.idle = true;\n    this.calc = void 0;\n    this._active = new Set();\n    this.source = source;\n    this.calc = createInterpolator(...args);\n\n    const value = this._get();\n\n    const nodeType = getAnimatedType(value);\n    setAnimated(this, nodeType.create(value));\n  }\n\n  advance(_dt) {\n    const value = this._get();\n\n    const oldValue = this.get();\n\n    if (!isEqual(value, oldValue)) {\n      getAnimated(this).setValue(value);\n\n      this._onChange(value, this.idle);\n    }\n\n    if (!this.idle && checkIdle(this._active)) {\n      becomeIdle(this);\n    }\n  }\n\n  _get() {\n    const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n    return this.calc(...inputs);\n  }\n\n  _start() {\n    if (this.idle && !checkIdle(this._active)) {\n      this.idle = false;\n      each(getPayload(this), node => {\n        node.done = false;\n      });\n\n      if (Globals.skipAnimation) {\n        raf.batchedUpdates(() => this.advance());\n        becomeIdle(this);\n      } else {\n        frameLoop.start(this);\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 1;\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        addFluidObserver(source, this);\n      }\n\n      if (isFrameValue(source)) {\n        if (!source.idle) {\n          this._active.add(source);\n        }\n\n        priority = Math.max(priority, source.priority + 1);\n      }\n    });\n    this.priority = priority;\n\n    this._start();\n  }\n\n  _detach() {\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        removeFluidObserver(source, this);\n      }\n    });\n\n    this._active.clear();\n\n    becomeIdle(this);\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      if (event.idle) {\n        this.advance();\n      } else {\n        this._active.add(event.parent);\n\n        this._start();\n      }\n    } else if (event.type == 'idle') {\n        this._active.delete(event.parent);\n      } else if (event.type == 'priority') {\n          this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n        }\n  }\n\n}\n\nfunction isIdle(source) {\n  return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n  return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n  if (!self.idle) {\n    self.idle = true;\n    each(getPayload(self), node => {\n      node.done = true;\n    });\n    callFluidObservers(self, {\n      type: 'idle',\n      parent: self\n    });\n  }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n  createStringInterpolator,\n  to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n  let time = raf.now() + ms;\n\n  let cancel = () => {\n    let i = timeouts.findIndex(t => t.cancel == cancel);\n    if (~i) timeouts.splice(i, 1);\n    pendingCount -= ~i ? 1 : 0;\n  };\n\n  let timeout = {\n    time,\n    handler,\n    cancel\n  };\n  timeouts.splice(findTimeout(time), 0, timeout);\n  pendingCount += 1;\n  start();\n  return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n  onStartQueue.delete(fn);\n  onFrameQueue.delete(fn);\n  updateQueue.delete(fn);\n  writeQueue.delete(fn);\n  onFinishQueue.delete(fn);\n};\n\nraf.sync = fn => {\n  sync = true;\n  raf.batchedUpdates(fn);\n  sync = false;\n};\n\nraf.throttle = fn => {\n  let lastArgs;\n\n  function queuedFn() {\n    try {\n      fn(...lastArgs);\n    } finally {\n      lastArgs = null;\n    }\n  }\n\n  function throttled(...args) {\n    lastArgs = args;\n    raf.onStart(queuedFn);\n  }\n\n  throttled.handler = fn;\n\n  throttled.cancel = () => {\n    onStartQueue.delete(queuedFn);\n    lastArgs = null;\n  };\n\n  return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n  if (raf.frameLoop !== 'demand') {\n    console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n  } else {\n    update();\n  }\n};\n\nlet ts = -1;\nlet pendingCount = 0;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n  if (sync) {\n    queue.delete(fn);\n    fn(0);\n  } else {\n    queue.add(fn);\n    start();\n  }\n}\n\nfunction start() {\n  if (ts < 0) {\n    ts = 0;\n\n    if (raf.frameLoop !== 'demand') {\n      nativeRaf(loop);\n    }\n  }\n}\n\nfunction stop() {\n  ts = -1;\n}\n\nfunction loop() {\n  if (~ts) {\n    nativeRaf(loop);\n    raf.batchedUpdates(update);\n  }\n}\n\nfunction update() {\n  let prevTs = ts;\n  ts = raf.now();\n  let count = findTimeout(ts);\n\n  if (count) {\n    eachSafely(timeouts.splice(0, count), t => t.handler());\n    pendingCount -= count;\n  }\n\n  onStartQueue.flush();\n  updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n  onFrameQueue.flush();\n  writeQueue.flush();\n  onFinishQueue.flush();\n\n  if (!pendingCount) {\n    stop();\n  }\n}\n\nfunction makeQueue() {\n  let next = new Set();\n  let current = next;\n  return {\n    add(fn) {\n      pendingCount += current == next && !next.has(fn) ? 1 : 0;\n      next.add(fn);\n    },\n\n    delete(fn) {\n      pendingCount -= current == next && next.has(fn) ? 1 : 0;\n      return next.delete(fn);\n    },\n\n    flush(arg) {\n      if (current.size) {\n        next = new Set();\n        pendingCount -= current.size;\n        eachSafely(current, fn => fn(arg) && next.add(fn));\n        pendingCount += next.size;\n        current = next;\n      }\n    }\n\n  };\n}\n\nfunction eachSafely(values, each) {\n  values.forEach(value => {\n    try {\n      each(value);\n    } catch (e) {\n      raf.catch(e);\n    }\n  });\n}\n\nconst __raf = {\n  count() {\n    return pendingCount;\n  },\n\n  isRunning() {\n    return ts >= 0;\n  },\n\n  clear() {\n    ts = -1;\n    timeouts = [];\n    onStartQueue = makeQueue();\n    updateQueue = makeQueue();\n    onFrameQueue = makeQueue();\n    writeQueue = makeQueue();\n    onFinishQueue = makeQueue();\n    pendingCount = 0;\n  }\n\n};\n\nexport { __raf, raf };\n","import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n  value,\n  writable: true,\n  configurable: true\n});\nconst is = {\n  arr: Array.isArray,\n  obj: a => !!a && a.constructor.name === 'Object',\n  fun: a => typeof a === 'function',\n  str: a => typeof a === 'string',\n  num: a => typeof a === 'number',\n  und: a => a === undefined\n};\nfunction isEqual(a, b) {\n  if (is.arr(a)) {\n    if (!is.arr(b) || a.length !== b.length) return false;\n\n    for (let i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n\n    return true;\n  }\n\n  return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n  if (is.arr(obj)) {\n    for (let i = 0; i < obj.length; i++) {\n      fn.call(ctx, obj[i], `${i}`);\n    }\n\n    return;\n  }\n\n  for (const key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      fn.call(ctx, obj[key], key);\n    }\n  }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n  if (queue.size) {\n    const items = Array.from(queue);\n    queue.clear();\n    each(items, iterator);\n  }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n  if (globals.to) to = globals.to;\n  if (globals.now) raf.now = globals.now;\n  if (globals.colors !== undefined) colors$1 = globals.colors;\n  if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n  if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n  if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n  if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n  if (globals.willAdvance) willAdvance = globals.willAdvance;\n  if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  get createStringInterpolator () { return createStringInterpolator$1; },\n  get to () { return to; },\n  get colors () { return colors$1; },\n  get skipAnimation () { return skipAnimation; },\n  get willAdvance () { return willAdvance; },\n  assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n  get idle() {\n    return !startQueue.size && !currentFrame.length;\n  },\n\n  start(animation) {\n    if (priority > animation.priority) {\n      startQueue.add(animation);\n      raf.onStart(flushStartQueue);\n    } else {\n      startSafely(animation);\n      raf(advance);\n    }\n  },\n\n  advance,\n\n  sort(animation) {\n    if (priority) {\n      raf.onFrame(() => frameLoop.sort(animation));\n    } else {\n      const prevIndex = currentFrame.indexOf(animation);\n\n      if (~prevIndex) {\n        currentFrame.splice(prevIndex, 1);\n        startUnsafely(animation);\n      }\n    }\n  },\n\n  clear() {\n    currentFrame = [];\n    startQueue.clear();\n  }\n\n};\n\nfunction flushStartQueue() {\n  startQueue.forEach(startSafely);\n  startQueue.clear();\n  raf(advance);\n}\n\nfunction startSafely(animation) {\n  if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n  currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n  const nextFrame = prevFrame;\n\n  for (let i = 0; i < currentFrame.length; i++) {\n    const animation = currentFrame[i];\n    priority = animation.priority;\n\n    if (!animation.idle) {\n      willAdvance(animation);\n      animation.advance(dt);\n\n      if (!animation.idle) {\n        nextFrame.push(animation);\n      }\n    }\n  }\n\n  priority = 0;\n  prevFrame = currentFrame;\n  prevFrame.length = 0;\n  currentFrame = nextFrame;\n  return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n  const index = arr.findIndex(test);\n  return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n  transparent: 0x00000000,\n  aliceblue: 0xf0f8ffff,\n  antiquewhite: 0xfaebd7ff,\n  aqua: 0x00ffffff,\n  aquamarine: 0x7fffd4ff,\n  azure: 0xf0ffffff,\n  beige: 0xf5f5dcff,\n  bisque: 0xffe4c4ff,\n  black: 0x000000ff,\n  blanchedalmond: 0xffebcdff,\n  blue: 0x0000ffff,\n  blueviolet: 0x8a2be2ff,\n  brown: 0xa52a2aff,\n  burlywood: 0xdeb887ff,\n  burntsienna: 0xea7e5dff,\n  cadetblue: 0x5f9ea0ff,\n  chartreuse: 0x7fff00ff,\n  chocolate: 0xd2691eff,\n  coral: 0xff7f50ff,\n  cornflowerblue: 0x6495edff,\n  cornsilk: 0xfff8dcff,\n  crimson: 0xdc143cff,\n  cyan: 0x00ffffff,\n  darkblue: 0x00008bff,\n  darkcyan: 0x008b8bff,\n  darkgoldenrod: 0xb8860bff,\n  darkgray: 0xa9a9a9ff,\n  darkgreen: 0x006400ff,\n  darkgrey: 0xa9a9a9ff,\n  darkkhaki: 0xbdb76bff,\n  darkmagenta: 0x8b008bff,\n  darkolivegreen: 0x556b2fff,\n  darkorange: 0xff8c00ff,\n  darkorchid: 0x9932ccff,\n  darkred: 0x8b0000ff,\n  darksalmon: 0xe9967aff,\n  darkseagreen: 0x8fbc8fff,\n  darkslateblue: 0x483d8bff,\n  darkslategray: 0x2f4f4fff,\n  darkslategrey: 0x2f4f4fff,\n  darkturquoise: 0x00ced1ff,\n  darkviolet: 0x9400d3ff,\n  deeppink: 0xff1493ff,\n  deepskyblue: 0x00bfffff,\n  dimgray: 0x696969ff,\n  dimgrey: 0x696969ff,\n  dodgerblue: 0x1e90ffff,\n  firebrick: 0xb22222ff,\n  floralwhite: 0xfffaf0ff,\n  forestgreen: 0x228b22ff,\n  fuchsia: 0xff00ffff,\n  gainsboro: 0xdcdcdcff,\n  ghostwhite: 0xf8f8ffff,\n  gold: 0xffd700ff,\n  goldenrod: 0xdaa520ff,\n  gray: 0x808080ff,\n  green: 0x008000ff,\n  greenyellow: 0xadff2fff,\n  grey: 0x808080ff,\n  honeydew: 0xf0fff0ff,\n  hotpink: 0xff69b4ff,\n  indianred: 0xcd5c5cff,\n  indigo: 0x4b0082ff,\n  ivory: 0xfffff0ff,\n  khaki: 0xf0e68cff,\n  lavender: 0xe6e6faff,\n  lavenderblush: 0xfff0f5ff,\n  lawngreen: 0x7cfc00ff,\n  lemonchiffon: 0xfffacdff,\n  lightblue: 0xadd8e6ff,\n  lightcoral: 0xf08080ff,\n  lightcyan: 0xe0ffffff,\n  lightgoldenrodyellow: 0xfafad2ff,\n  lightgray: 0xd3d3d3ff,\n  lightgreen: 0x90ee90ff,\n  lightgrey: 0xd3d3d3ff,\n  lightpink: 0xffb6c1ff,\n  lightsalmon: 0xffa07aff,\n  lightseagreen: 0x20b2aaff,\n  lightskyblue: 0x87cefaff,\n  lightslategray: 0x778899ff,\n  lightslategrey: 0x778899ff,\n  lightsteelblue: 0xb0c4deff,\n  lightyellow: 0xffffe0ff,\n  lime: 0x00ff00ff,\n  limegreen: 0x32cd32ff,\n  linen: 0xfaf0e6ff,\n  magenta: 0xff00ffff,\n  maroon: 0x800000ff,\n  mediumaquamarine: 0x66cdaaff,\n  mediumblue: 0x0000cdff,\n  mediumorchid: 0xba55d3ff,\n  mediumpurple: 0x9370dbff,\n  mediumseagreen: 0x3cb371ff,\n  mediumslateblue: 0x7b68eeff,\n  mediumspringgreen: 0x00fa9aff,\n  mediumturquoise: 0x48d1ccff,\n  mediumvioletred: 0xc71585ff,\n  midnightblue: 0x191970ff,\n  mintcream: 0xf5fffaff,\n  mistyrose: 0xffe4e1ff,\n  moccasin: 0xffe4b5ff,\n  navajowhite: 0xffdeadff,\n  navy: 0x000080ff,\n  oldlace: 0xfdf5e6ff,\n  olive: 0x808000ff,\n  olivedrab: 0x6b8e23ff,\n  orange: 0xffa500ff,\n  orangered: 0xff4500ff,\n  orchid: 0xda70d6ff,\n  palegoldenrod: 0xeee8aaff,\n  palegreen: 0x98fb98ff,\n  paleturquoise: 0xafeeeeff,\n  palevioletred: 0xdb7093ff,\n  papayawhip: 0xffefd5ff,\n  peachpuff: 0xffdab9ff,\n  peru: 0xcd853fff,\n  pink: 0xffc0cbff,\n  plum: 0xdda0ddff,\n  powderblue: 0xb0e0e6ff,\n  purple: 0x800080ff,\n  rebeccapurple: 0x663399ff,\n  red: 0xff0000ff,\n  rosybrown: 0xbc8f8fff,\n  royalblue: 0x4169e1ff,\n  saddlebrown: 0x8b4513ff,\n  salmon: 0xfa8072ff,\n  sandybrown: 0xf4a460ff,\n  seagreen: 0x2e8b57ff,\n  seashell: 0xfff5eeff,\n  sienna: 0xa0522dff,\n  silver: 0xc0c0c0ff,\n  skyblue: 0x87ceebff,\n  slateblue: 0x6a5acdff,\n  slategray: 0x708090ff,\n  slategrey: 0x708090ff,\n  snow: 0xfffafaff,\n  springgreen: 0x00ff7fff,\n  steelblue: 0x4682b4ff,\n  tan: 0xd2b48cff,\n  teal: 0x008080ff,\n  thistle: 0xd8bfd8ff,\n  tomato: 0xff6347ff,\n  turquoise: 0x40e0d0ff,\n  violet: 0xee82eeff,\n  wheat: 0xf5deb3ff,\n  white: 0xffffffff,\n  whitesmoke: 0xf5f5f5ff,\n  yellow: 0xffff00ff,\n  yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n  return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n  let match;\n\n  if (typeof color === 'number') {\n    return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n  }\n\n  if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n  if (colors$1 && colors$1[color] !== undefined) {\n    return colors$1[color];\n  }\n\n  if (match = rgb.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n  }\n\n  if (match = rgba.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n  }\n\n  if (match = hex3.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n  }\n\n  if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n  if (match = hex4.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n  }\n\n  if (match = hsl.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n  }\n\n  if (match = hsla.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\n\nfunction hslToRgb(h, s, l) {\n  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const p = 2 * l - q;\n  const r = hue2rgb(p, q, h + 1 / 3);\n  const g = hue2rgb(p, q, h);\n  const b = hue2rgb(p, q, h - 1 / 3);\n  return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n  const int = parseInt(str, 10);\n  if (int < 0) return 0;\n  if (int > 255) return 255;\n  return int;\n}\n\nfunction parse360(str) {\n  const int = parseFloat(str);\n  return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n  const num = parseFloat(str);\n  if (num < 0) return 0;\n  if (num > 1) return 255;\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n  const int = parseFloat(str);\n  if (int < 0) return 0;\n  if (int > 100) return 1;\n  return int / 100;\n}\n\nfunction colorToRgba(input) {\n  let int32Color = normalizeColor(input);\n  if (int32Color === null) return input;\n  int32Color = int32Color || 0;\n  let r = (int32Color & 0xff000000) >>> 24;\n  let g = (int32Color & 0x00ff0000) >>> 16;\n  let b = (int32Color & 0x0000ff00) >>> 8;\n  let a = (int32Color & 0x000000ff) / 255;\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n  if (is.fun(range)) {\n    return range;\n  }\n\n  if (is.arr(range)) {\n    return createInterpolator({\n      range,\n      output: output,\n      extrapolate\n    });\n  }\n\n  if (is.str(range.output[0])) {\n    return createStringInterpolator$1(range);\n  }\n\n  const config = range;\n  const outputRange = config.output;\n  const inputRange = config.range || [0, 1];\n  const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n  const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n  const easing = config.easing || (t => t);\n\n  return input => {\n    const range = findRange(input, inputRange);\n    return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n  };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n  let result = map ? map(input) : input;\n\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n  }\n\n  if (outputMin === outputMax) return outputMin;\n  if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n  if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n  result = easing(result);\n  if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n  return result;\n}\n\nfunction findRange(input, inputRange) {\n  for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n  return i - 1;\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\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n  if (observer.eventObserved) {\n    observer.eventObserved(event);\n  } else {\n    observer(event);\n  }\n}\n\nfunction callFluidObservers(target, event) {\n  let observers = target[$observers];\n\n  if (observers) {\n    observers.forEach(observer => {\n      callFluidObserver(observer, event);\n    });\n  }\n}\n\nclass FluidValue {\n  constructor(get) {\n    this[$get] = void 0;\n    this[$observers] = void 0;\n\n    if (!get && !(get = this.get)) {\n      throw Error('Unknown getter');\n    }\n\n    setFluidGetter(this, get);\n  }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n  if (target[$get]) {\n    let observers = target[$observers];\n\n    if (!observers) {\n      setHidden(target, $observers, observers = new Set());\n    }\n\n    if (!observers.has(observer)) {\n      observers.add(observer);\n\n      if (target.observerAdded) {\n        target.observerAdded(observers.size, observer);\n      }\n    }\n  }\n\n  return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n  let observers = target[$observers];\n\n  if (observers && observers.has(observer)) {\n    const count = observers.size - 1;\n\n    if (count) {\n      observers.delete(observer);\n    } else {\n      target[$observers] = null;\n    }\n\n    if (target.observerRemoved) {\n      target.observerRemoved(count, observer);\n    }\n  }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n  value,\n  writable: true,\n  configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n  const [token, fallback] = parseCSSVariable(input);\n\n  if (!token || isSSR()) {\n    return input;\n  }\n\n  const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n  if (value) {\n    return value.trim();\n  } else if (fallback && fallback.startsWith('--')) {\n    const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n    if (_value) {\n      return _value;\n    } else {\n      return input;\n    }\n  } else if (fallback && cssVariableRegex.test(fallback)) {\n    return variableToRgba(fallback);\n  } else if (fallback) {\n    return fallback;\n  }\n\n  return input;\n};\n\nconst parseCSSVariable = current => {\n  const match = cssVariableRegex.exec(current);\n  if (!match) return [,];\n  const [, token, fallback] = match;\n  return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n  if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n  const output = config.output.map(value => {\n    return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n  });\n  const keyframes = output.map(value => value.match(numberRegex).map(Number));\n  const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n    if (!(i in values)) {\n      throw Error('The arity of each \"output\" value must be equal');\n    }\n\n    return values[i];\n  }));\n  const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n    output\n  })));\n  return input => {\n    var _output$find;\n\n    const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n    let i = 0;\n    return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n  };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n  const func = fn;\n  let called = false;\n\n  if (typeof func != 'function') {\n    throw new TypeError(`${prefix}once requires a function parameter`);\n  }\n\n  return (...args) => {\n    if (!called) {\n      func(...args);\n      called = true;\n    }\n  };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n  warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n  warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n  return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nconst useIsMounted = () => {\n  const isMounted = useRef(false);\n  useLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n};\n\nfunction useForceUpdate() {\n  const update = useState()[1];\n  const isMounted = useIsMounted();\n  return () => {\n    if (isMounted.current) {\n      update(Math.random());\n    }\n  };\n}\n\nfunction useMemoOne(getResult, inputs) {\n  const [initial] = useState(() => ({\n    inputs,\n    result: getResult()\n  }));\n  const committed = useRef();\n  const prevCache = committed.current;\n  let cache = prevCache;\n\n  if (cache) {\n    const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n    if (!useCache) {\n      cache = {\n        inputs,\n        result: getResult()\n      };\n    }\n  } else {\n    cache = initial;\n  }\n\n  useEffect(() => {\n    committed.current = cache;\n\n    if (prevCache == initial) {\n      initial.inputs = initial.result = undefined;\n    }\n  }, [cache]);\n  return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n  if (next.length !== prev.length) {\n    return false;\n  }\n\n  for (let i = 0; i < next.length; i++) {\n    if (next[i] !== prev[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n  const prevRef = useRef();\n  useEffect(() => {\n    prevRef.current = value;\n  });\n  return prevRef.current;\n}\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };\n","import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n  if (value == null || typeof value === 'boolean' || value === '') return '';\n  if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n  return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n  if (!instance.nodeType || !instance.setAttribute) {\n    return false;\n  }\n\n  const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n  const _ref = props,\n        {\n    style,\n    children,\n    scrollTop,\n    scrollLeft\n  } = _ref,\n        attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  const values = Object.values(attributes);\n  const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n  if (children !== void 0) {\n    instance.textContent = children;\n  }\n\n  for (let name in style) {\n    if (style.hasOwnProperty(name)) {\n      const value = dangerousStyleValue(name, style[name]);\n\n      if (isCustomPropRE.test(name)) {\n        instance.style.setProperty(name, value);\n      } else {\n        instance.style[name] = value;\n      }\n    }\n  }\n\n  names.forEach((name, i) => {\n    instance.setAttribute(name, values[i]);\n  });\n\n  if (scrollTop !== void 0) {\n    instance.scrollTop = scrollTop;\n  }\n\n  if (scrollLeft !== void 0) {\n    instance.scrollLeft = scrollLeft;\n  }\n}\nlet isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n  prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n  return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n  constructor(_ref) {\n    let {\n      x,\n      y,\n      z\n    } = _ref,\n        style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n    const inputs = [];\n    const transforms = [];\n\n    if (x || y || z) {\n      inputs.push([x || 0, y || 0, z || 0]);\n      transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n    }\n\n    eachProp(style, (value, key) => {\n      if (key === 'transform') {\n        inputs.push([value || '']);\n        transforms.push(transform => [transform, transform === '']);\n      } else if (domTransforms.test(key)) {\n        delete style[key];\n        if (is.und(value)) return;\n        const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n        inputs.push(toArray(value));\n        transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n      }\n    });\n\n    if (inputs.length) {\n      style.transform = new FluidTransform(inputs, transforms);\n    }\n\n    super(style);\n  }\n\n}\n\nclass FluidTransform extends FluidValue {\n  constructor(inputs, transforms) {\n    super();\n    this._value = null;\n    this.inputs = inputs;\n    this.transforms = transforms;\n  }\n\n  get() {\n    return this._value || (this._value = this._get());\n  }\n\n  _get() {\n    let transform = '';\n    let identity = true;\n    each(this.inputs, (input, i) => {\n      const arg1 = getFluidValue(input[0]);\n      const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n      transform += ' ' + t;\n      identity = identity && id;\n    });\n    return identity ? 'none' : transform;\n  }\n\n  observerAdded(count) {\n    if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n  }\n\n  observerRemoved(count) {\n    if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._value = null;\n    }\n\n    callFluidObservers(this, event);\n  }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n  batchedUpdates: unstable_batchedUpdates,\n  createStringInterpolator,\n  colors\n});\nconst host = createHost(primitives, {\n  applyAnimatedValues,\n  createAnimatedStyle: style => new AnimatedStyle(style),\n  getComponentProps: _ref => {\n    let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n    return props;\n  }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\n","'use strict';\n\nconst arrayMoveMutate = (array, from, to) => {\n\tconst startIndex = to < 0 ? array.length + to : to;\n\tconst item = array.splice(from, 1)[0];\n\tarray.splice(startIndex, 0, item);\n};\n\nconst arrayMove = (array, from, to) => {\n\tarray = array.slice();\n\tarrayMoveMutate(array, from, to);\n\treturn array;\n};\n\nmodule.exports = arrayMove;\n// TODO: Remove this for the next major release\nmodule.exports.default = arrayMove;\n\nmodule.exports.mutate = arrayMoveMutate;\n","/**\n * Get nested property value\n *\n * Usage:\n * var obj = {foo: {bar: 'ok'}};\n * opg('foo/bar', obj); // 'ok'\n *\n * @param {String} properties 'a.b.c'\n * @param {Object} obj\n * @param {*} [defaultValue] If property will not exist\n * @param {String} [delimiter] Default '/'\n */\nexport const opg = (properties, obj, defaultValue) => {\n  const delimiter = '/'\n\n  if (typeof properties == 'string') {\n    properties = properties.split(delimiter)\n  } else {\n    properties = [properties]\n  }\n\n  var property = properties.shift()\n\n  if (!obj || typeof obj[property] == 'undefined') {\n    return defaultValue\n  }\n\n  if (properties.length) {\n    properties = properties.join(delimiter)\n\n    return opg(properties, obj[property], defaultValue, delimiter)\n  } else {\n    return obj[property]\n  }\n}\n\nconst propertiesWithoutLast = (properties) => {\n  const delimiter = '/'\n\n  if (typeof properties == 'string') {\n    properties = properties.split(delimiter)\n  }\n\n  if (properties.length > 1) {\n    properties.pop()\n  }\n\n  return properties\n}\n\nexport const normalizeCondition = (conditionDescriptor) => {\n  if (!conditionDescriptor.all) {\n    if (!conditionDescriptor.any) {\n      conditionDescriptor = {\n        all: conditionDescriptor,\n      }\n    }\n  }\n\n  return conditionDescriptor\n}\n\n/**\n * Support:\n *\n * // TODO: maybe implement short circuits for conditions\n *\n * {\n *   'path/to/elem':         'exact_value',\n *   'path/to/other_elem':   '! negated_exact_value',\n *   'path/to/other_elem_1': 'first_val | second_val | third_possible_val',\n *   'path/to/other_elem_2': '! first_val | second_val',\n * }\n */\nexport const matchValuesWithCondition = (\n  conditionDescriptor,\n  inferedValuesForContext\n) => {\n  let conditionsObject = Object.values(conditionDescriptor)[0]\n\n  const maybeGetMatcher = (matcher) => {\n    if (matcher.length > 4) {\n      return false\n    }\n\n    if (matcher.indexOf('any') === 0) {\n      return 'any'\n    }\n\n    if (matcher.indexOf('all') === 0) {\n      return 'all'\n    }\n\n    return false\n  }\n\n  const valuesToCheck = Object.keys(conditionsObject).map(\n    (singleOptionPath, index) => {\n      let maybeThat = Object.values(conditionsObject)[index]\n\n      if (\n        maybeGetMatcher(singleOptionPath) === 'all' ||\n        maybeGetMatcher(singleOptionPath) === 'any'\n      ) {\n        return matchValuesWithCondition(\n          {\n            [singleOptionPath]: maybeThat,\n          },\n          inferedValuesForContext\n        )\n      }\n\n      return tryToMatchValueWithOptionPath(\n        maybeThat,\n        singleOptionPath,\n        inferedValuesForContext\n      )\n    }\n  )\n\n  if (maybeGetMatcher(Object.keys(conditionDescriptor)[0]) === 'all') {\n    return valuesToCheck.every((v) => !!v)\n  }\n\n  if (maybeGetMatcher(Object.keys(conditionDescriptor)[0]) === 'any') {\n    return valuesToCheck.some((v) => !!v)\n  }\n}\n\nfunction extractScalarValueFor(singleOptionPath, inferedValuesForContext) {\n  const getAsInfered = (path, values = inferedValuesForContext) =>\n    opg(path, values)\n\n  if (singleOptionPath.indexOf(':') > -1) {\n    /**\n     * Congrats, gentlemans, we are having a custom matcher here\n     * To be honest, this is the dumbest thing I can figure out right now.\n     * There probably is a better way to handle that. One could go about\n     * getting an interface here or smth like that.\n     *\n     * WARNING: Hardcoded to ct-select.\n     * Also doesn't work with ct-inherit, will report the value\n     * incorrectly. Will be fixed properly when implementing the context\n     * asbtraction properly.\n     *\n     * choices matcher\n     * option_id:choices => LENGTH\n     */\n\n    let value = null\n    ;((thing, cb) => cb(thing))(\n      singleOptionPath.split(':'),\n      ([singleOptionPath, ...matcher]) => {\n        // TODO: start implementing matchers after we are done with\n        // everything else with Vue renderer\n\n        matcher = matcher.join(':')\n\n        if (matcher === 'visibility') {\n          value = getAsInfered(singleOptionPath, {\n            ...inferedValuesForContext,\n            [propertiesWithoutLast(singleOptionPath)]: opg(\n              propertiesWithoutLast(singleOptionPath),\n              inferedValuesForContext\n            )[inferedValuesForContext.wp_customizer_current_view]\n              ? 'yes'\n              : 'no',\n          })\n        }\n\n        if (matcher === 'responsive') {\n          value = getAsInfered(singleOptionPath, {\n            ...inferedValuesForContext,\n\n            [propertiesWithoutLast(singleOptionPath)]:\n              opg(\n                propertiesWithoutLast(singleOptionPath),\n                inferedValuesForContext\n              )[inferedValuesForContext.wp_customizer_current_view] ||\n              opg(\n                propertiesWithoutLast(singleOptionPath),\n                inferedValuesForContext\n              ),\n          })\n        }\n\n        if (matcher === 'truthy') {\n          value = !!getAsInfered(singleOptionPath) ? 'yes' : 'no'\n        }\n\n        if (matcher.indexOf('array-ids') > -1) {\n          const [arrayIdsDescriptor, id, path] = matcher.split(':')\n\n          console.log('here', {\n            arrayIdsDescriptor,\n            singleOptionPath,\n            inferedValuesForContext,\n          })\n\n          let maybeValue =\n            arrayIdsDescriptor.indexOf('array-ids-') > -1\n              ? arrayIdsDescriptor.split('-')[2]\n              : false\n\n          const properValue = getAsInfered(singleOptionPath)\n            .filter((v) => v.id === id)\n            .filter((v) => {\n              if (maybeValue) {\n                return maybeValue === opg(path, v).toString()\n              }\n\n              return true\n            })\n\n          value =\n            properValue.length === 0 ? 'no' : opg(path, properValue[0]) || 'no'\n        }\n\n        if (matcher.indexOf('json:') > -1) {\n          value = getAsInfered(\n            `${singleOptionPath}/${matcher.split(':')[1]}`\n          ).toString()\n        }\n\n        if (matcher === 'array_length') {\n          let properValue = getAsInfered(singleOptionPath)\n\n          value = (properValue || []).length.toString()\n        }\n\n        if (!value) {\n          throw new Error(\n            `Unknown matcher received. Please verify for typos. The received matcher: ${matcher}.`\n          )\n        }\n      }\n    )\n\n    /**\n     * Matcher got _matched_.\n     */\n    if (value) {\n      return value\n    } else {\n      // Fall back to raw value check, but omit the matcher.\n      singleOptionPath = singleOptionPath.split(':')[0]\n    }\n  }\n\n  let properValue = getAsInfered(singleOptionPath)\n\n  if (!properValue) return false\n\n  if (properValue.desktop) {\n    return properValue\n  }\n\n  return properValue.toString()\n}\n\nfunction tryToMatchValueWithOptionPath(\n  maybeThat,\n  singleOptionPath,\n  inferedValuesForContext\n) {\n  let properValue = extractScalarValueFor(\n    singleOptionPath,\n    inferedValuesForContext\n  )\n\n  if (\n    maybeThat &&\n    maybeThat.toString() &&\n    maybeThat.toString().indexOf('~') === 0\n  ) {\n    let toMatch = maybeThat.replace('~', '')\n\n    if (properValue.desktop) {\n      return (\n        properValue.desktop === toMatch ||\n        properValue.tablet === toMatch ||\n        properValue.mobile === toMatch\n      )\n    }\n\n    return properValue === toMatch\n  }\n\n  properValue = properValue.toString()\n  maybeThat = maybeThat.toString()\n\n  /**\n   * The context value is not yet stabilized\n   */\n  if (!properValue) return false\n\n  /**\n   * Pipe operator\n   */\n  if (maybeThat.indexOf('|') > -1) {\n    if (maybeThat.indexOf('!') === 0) {\n      return (\n        maybeThat\n          .substring(1)\n          .split('|')\n          .map((el) => el.trim())\n          .includes(properValue.trim()) === -1\n      )\n    } else {\n      return (\n        maybeThat\n          .split('|')\n          .map((el) => el.trim())\n          .indexOf(properValue.trim()) > -1\n      )\n    }\n  }\n\n  /**\n   * Negation operator\n   */\n  if (maybeThat.indexOf('!') === 0) {\n    return properValue !== maybeThat.substring(1).trim()\n  }\n\n  /**\n   * Contains operator\n   */\n  if (maybeThat.indexOf('*') === 0) {\n    return (\n      properValue.indexOf(\n        maybeThat\n          .trim()\n          .substring(1)\n          .trim()\n      ) > -1\n    )\n  }\n\n  /**\n   * Simple equality\n   */\n  return properValue === maybeThat.trim()\n}\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport { object, func, oneOfType, node } from \"prop-types\";\n\nvar cleanProps = function cleanProps(props) {\n  var initialState = props.initialState,\n      getInitialState = props.getInitialState,\n      refs = props.refs,\n      getRefs = props.getRefs,\n      didMount = props.didMount,\n      didUpdate = props.didUpdate,\n      willUnmount = props.willUnmount,\n      getSnapshotBeforeUpdate = props.getSnapshotBeforeUpdate,\n      shouldUpdate = props.shouldUpdate,\n      render = props.render,\n      rest = _objectWithoutProperties(props, [\"initialState\", \"getInitialState\", \"refs\", \"getRefs\", \"didMount\", \"didUpdate\", \"willUnmount\", \"getSnapshotBeforeUpdate\", \"shouldUpdate\", \"render\"]);\n\n  return rest;\n};\n\nvar Component = function (_React$Component) {\n  _inherits(Component, _React$Component);\n\n  function Component() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Component);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Component.prototype.getArgs = function getArgs() {\n    var state = this.state,\n        props = this.props,\n        setState = this._setState,\n        forceUpdate = this._forceUpdate,\n        refs = this._refs;\n\n    return {\n      state: state,\n      props: cleanProps(props),\n      refs: refs,\n      setState: setState,\n      forceUpdate: forceUpdate\n    };\n  };\n\n  Component.prototype.componentDidMount = function componentDidMount() {\n    if (this.props.didMount) this.props.didMount(this.getArgs());\n  };\n\n  Component.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n    if (this.props.shouldUpdate) return this.props.shouldUpdate({\n      props: this.props,\n      state: this.state,\n      nextProps: cleanProps(nextProps),\n      nextState: nextState\n    });else return true;\n  };\n\n  Component.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (this.props.willUnmount) this.props.willUnmount({\n      state: this.state,\n      props: cleanProps(this.props),\n      refs: this._refs\n    });\n  };\n\n  Component.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState, snapshot) {\n    if (this.props.didUpdate) this.props.didUpdate(Object.assign(this.getArgs(), {\n      prevProps: cleanProps(prevProps),\n      prevState: prevState\n    }), snapshot);\n  };\n\n  Component.prototype.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps, prevState) {\n    if (this.props.getSnapshotBeforeUpdate) {\n      return this.props.getSnapshotBeforeUpdate(Object.assign(this.getArgs(), {\n        prevProps: cleanProps(prevProps),\n        prevState: prevState\n      }));\n    } else {\n      return null;\n    }\n  };\n\n  Component.prototype.render = function render() {\n    var _props = this.props,\n        children = _props.children,\n        render = _props.render;\n\n    return render ? render(this.getArgs()) : typeof children === \"function\" ? children(this.getArgs()) : children || null;\n  };\n\n  return Component;\n}(React.Component);\n\nComponent.defaultProps = {\n  getInitialState: function getInitialState() {},\n  getRefs: function getRefs() {\n    return {};\n  }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.state = this.props.initialState || this.props.getInitialState(this.props);\n  this._refs = this.props.refs || this.props.getRefs(this.getArgs());\n\n  this._setState = function () {\n    return _this2.setState.apply(_this2, arguments);\n  };\n\n  this._forceUpdate = function () {\n    return _this2.forceUpdate.apply(_this2, arguments);\n  };\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Component.propTypes = {\n  initialState: object,\n  getInitialState: func,\n  refs: object,\n  getRefs: func,\n  didMount: func,\n  didUpdate: func,\n  willUnmount: func,\n  getSnapshotBeforeUpdate: func,\n  shouldUpdate: func,\n  render: func,\n  children: oneOfType([func, node])\n} : void 0;\n\n\nexport default Component;","import {\n\tcreateElement,\n\tuseEffect,\n\tcreatePortal,\n\tuseState,\n\tFragment\n} from '@wordpress/element'\nimport Component from '@reach/component-component'\n\nlet Portal = ({\n\tchildren,\n\tcontainer = document.body,\n\ttype = 'reach-portal'\n}) => (\n\t<Component\n\t\tgetRefs={() => ({ node: null })}\n\t\tdidMount={({ refs, forceUpdate }) => {\n\t\t\tlet containerNode = container.hasOwnProperty('current')\n\t\t\t\t? container.current\n\t\t\t\t: container\n\t\t\trefs.node = document.createElement(type)\n\t\t\tcontainerNode.appendChild(refs.node)\n\t\t\tforceUpdate()\n\t\t}}\n\t\twillUnmount={({ refs: { node } }) => {\n\t\t\tlet containerNode = container.hasOwnProperty('current')\n\t\t\t\t? container.current\n\t\t\t\t: container\n\t\t\tif (containerNode) {\n\t\t\t\tcontainerNode.removeChild(node)\n\t\t\t}\n\t\t}}\n\t\trender={({ refs: { node } }) => {\n\t\t\treturn node ? createPortal(children, node) : null\n\t\t}}\n\t/>\n)\n\nexport default Portal\n","var checkedPkgs = {};\n\nvar checkStyles = function checkStyles() {};\n\nif (process.env.NODE_ENV !== \"production\") {\n  checkStyles = function checkStyles(pkg) {\n    // only check once per package\n    if (checkedPkgs[pkg]) return;\n    checkedPkgs[pkg] = true;\n\n    if (parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--reach-\" + pkg), 10) !== 1) {\n      console.warn(\"@reach/\" + pkg + \" styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:\\n\\n    import \\\"@reach/\" + pkg + \"/styles.css\\\";\\n\\n  Otherwise you'll need to include them some other way:\\n\\n    <link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"node_modules/@reach/\" + pkg + \"/styles.css\\\" />\\n\\n  For more information visit https://ui.reach.tech/styling.\\n  \");\n    }\n  };\n}\n\nexport { checkStyles };\n\nexport var wrapEvent = function wrapEvent(theirHandler, ourHandler) {\n  return function (event) {\n    theirHandler && theirHandler(event);\n    if (!event.defaultPrevented) {\n      return ourHandler(event);\n    }\n  };\n};\n\nexport var assignRef = function assignRef(ref, value) {\n  if (ref == null) return;\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else {\n    try {\n      ref.current = value;\n    } catch (error) {\n      throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n    }\n  }\n};","import Component from '@reach/component-component'\nimport Portal from './portal'\nimport { checkStyles, wrapEvent } from '@reach/utils'\nimport createFocusTrap from 'focus-trap'\nimport {\n\tcreateElement,\n\tuseEffect,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\n\nlet createAriaHider = (dialogNode) => {\n\tlet originalValues = []\n\tlet rootNodes = []\n\n\tArray.prototype.forEach.call(\n\t\tdocument.querySelectorAll('body > *'),\n\t\t(node) => {\n\t\t\tif (node === dialogNode.parentNode) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tlet attr = node.getAttribute('aria-hidden')\n\t\t\tlet alreadyHidden = attr !== null && attr !== 'false'\n\t\t\tif (alreadyHidden) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toriginalValues.push(attr)\n\t\t\trootNodes.push(node)\n\t\t\tnode.setAttribute('aria-hidden', 'true')\n\t\t}\n\t)\n\n\treturn () => {\n\t\trootNodes.forEach((node, index) => {\n\t\t\tlet originalValue = originalValues[index]\n\t\t\tif (originalValue === null) {\n\t\t\t\tnode.removeAttribute('aria-hidden')\n\t\t\t} else {\n\t\t\t\tnode.setAttribute('aria-hidden', originalValue)\n\t\t\t}\n\t\t})\n\t}\n}\n\nlet k = () => {}\n\nlet checkDialogStyles = () => checkStyles('dialog')\n\nlet portalDidMount = (refs, initialFocusRef) => {\n\trefs.disposeAriaHider = createAriaHider(refs.overlayNode)\n\trefs.trap = createFocusTrap(refs.overlayNode, {\n\t\tinitialFocus: initialFocusRef\n\t\t\t? () => initialFocusRef.current\n\t\t\t: undefined,\n\t\tfallbackFocus: refs.contentNode,\n\t\tescapeDeactivates: false,\n\t\tclickOutsideDeactivates: false,\n\t})\n\t// refs.trap.activate()\n}\n\nlet contentWillUnmount = ({ refs }) => {\n\trefs.trap.deactivate()\n\trefs.disposeAriaHider()\n}\n\nlet FocusContext = React.createContext()\n\nlet DialogOverlay = React.forwardRef(\n\t(\n\t\t{\n\t\t\tcontainer,\n\t\t\tisOpen = true,\n\t\t\tonDismiss = k,\n\t\t\tinitialFocusRef,\n\t\t\tonClick,\n\t\t\tonKeyDown,\n\t\t\t...props\n\t\t},\n\t\tforwardRef\n\t) => (\n\t\t<Component didMount={checkDialogStyles}>\n\t\t\t{isOpen ? (\n\t\t\t\t<Portal container={container} data-reach-dialog-wrapper>\n\t\t\t\t\t<Component\n\t\t\t\t\t\trefs={{ overlayNode: null, contentNode: null }}\n\t\t\t\t\t\tdidMount={({ refs }) => {\n\t\t\t\t\t\t\tportalDidMount(refs, initialFocusRef)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\twillUnmount={contentWillUnmount}>\n\t\t\t\t\t\t{({ refs }) => (\n\t\t\t\t\t\t\t<FocusContext.Provider\n\t\t\t\t\t\t\t\tvalue={(node) => (refs.contentNode = node)}>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tdata-reach-dialog-overlay\n\t\t\t\t\t\t\t\t\tonClick={wrapEvent(onClick, (event) => {\n\t\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tonDismiss()\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\tonKeyDown={wrapEvent(onKeyDown, (event) => {\n\t\t\t\t\t\t\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\tonDismiss()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\trefs.overlayNode = node\n\t\t\t\t\t\t\t\t\t\tforwardRef && forwardRef(node)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FocusContext.Provider>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Component>\n\t\t\t\t</Portal>\n\t\t\t) : null}\n\t\t</Component>\n\t)\n)\n\nDialogOverlay.propTypes = {\n\tinitialFocusRef: () => {},\n}\n\nlet stopPropagation = (event) => event.stopPropagation()\n\nlet DialogContent = React.forwardRef(\n\t({ onClick, onKeyDown, ...props }, forwardRef) => (\n\t\t<FocusContext.Consumer>\n\t\t\t{(contentRef) => (\n\t\t\t\t<div\n\t\t\t\t\taria-modal=\"true\"\n\t\t\t\t\tdata-reach-dialog-content\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\tonClick={wrapEvent(onClick, stopPropagation)}\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tcontentRef(node)\n\t\t\t\t\t\tforwardRef && forwardRef(node)\n\t\t\t\t\t}}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</FocusContext.Consumer>\n\t)\n)\n\nlet Dialog = ({ container, isOpen, onDismiss = k, ...props }) => (\n\t<DialogOverlay container={container} isOpen={isOpen} onDismiss={onDismiss}>\n\t\t<DialogContent {...props} />\n\t</DialogOverlay>\n)\n\nexport { DialogOverlay, DialogContent, Dialog }\n","import {\n\tcreateElement,\n\tComponent,\n\tuseEffect,\n\tuseState,\n\tuseContext,\n\tcreateContext,\n\tFragment,\n} from '@wordpress/element'\nimport { Dialog, DialogOverlay, DialogContent } from './reach/dialog'\nimport { Transition } from 'react-spring/renderprops'\nimport { __ } from 'ct-i18n'\nimport classnames from 'classnames'\n\nconst defaultIsVisible = (i) => !!i\n\nconst Overlay = ({\n\titems,\n\tisVisible = defaultIsVisible,\n\trender,\n\tclassName,\n\tinitialFocusRef,\n\tonDismiss,\n\tonCloseButtonClick,\n}) => {\n\treturn (\n\t\t<Transition\n\t\t\titems={items}\n\t\t\tonStart={() =>\n\t\t\t\tdocument.body.classList[isVisible(items) ? 'add' : 'remove'](\n\t\t\t\t\t'ct-dashboard-overlay-open'\n\t\t\t\t)\n\t\t\t}\n\t\t\tconfig={{ duration: 200 }}\n\t\t\tfrom={{ opacity: 0, y: -10 }}\n\t\t\tenter={{ opacity: 1, y: 0 }}\n\t\t\tleave={{ opacity: 0, y: 10 }}>\n\t\t\t{(items) =>\n\t\t\t\tisVisible(items) &&\n\t\t\t\t((props) => (\n\t\t\t\t\t<DialogOverlay\n\t\t\t\t\t\tstyle={{ opacity: props.opacity }}\n\t\t\t\t\t\tcontainer={document.body}\n\t\t\t\t\t\tonDismiss={() => onDismiss()}\n\t\t\t\t\t\tinitialFocusRef={initialFocusRef}>\n\t\t\t\t\t\t<DialogContent\n\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\ttransform: `translate3d(0px, ${props.y}px, 0px)`,\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName=\"close-button\"\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tonCloseButtonClick\n\t\t\t\t\t\t\t\t\t\t? onCloseButtonClick()\n\t\t\t\t\t\t\t\t\t\t: onDismiss()\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t{render(items, props)}\n\t\t\t\t\t\t</DialogContent>\n\t\t\t\t\t</DialogOverlay>\n\t\t\t\t))\n\t\t\t}\n\t\t</Transition>\n\t)\n}\n\nexport default Overlay\n","import { createElement, Component, Fragment } from '@wordpress/element'\nimport classnames from 'classnames'\nexport { maybePromoteScalarValueIntoResponsive } from 'customizer-sync-helpers/dist/promote-into-responsive'\nimport { getOptionFor } from '../../options/GenericOptionType'\n\n/**\n * true\n * false\n * skip\n */\nexport const isOptionEnabledFor = (currentDevice, responsiveDescriptor) =>\n\t({\n\t\tdesktop: true,\n\t\ttablet: true,\n\t\tmobile: true,\n\n\t\t...(typeof responsiveDescriptor === 'boolean'\n\t\t\t? {}\n\t\t\t: responsiveDescriptor || {}),\n\t}[currentDevice])\n\nexport const isOptionResponsiveFor = (option, args = {}) => {\n\tlet { ignoreHidden = false } = args\n\n\tlet OptionComponent = getOptionFor(option)\n\n\tif (OptionComponent.hiddenResponsive) {\n\t\tif (!ignoreHidden) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn !!option.responsive\n}\n\nexport const getValueForDevice = ({ value, option, device }) => {\n\tconst devices = ['desktop', 'tablet', 'mobile']\n\n\tif (\n\t\tdevice === 'tablet' &&\n\t\tisOptionEnabledFor(device, option.responsive) === 'skip'\n\t) {\n\t\treturn value.mobile\n\t}\n\n\treturn value[device]\n}\n\nconst ResponsiveControls = ({ device, setDevice, responsiveDescriptor }) => (\n\t<div className=\"ct-control-options\">\n\t\t<ul className=\"ct-responsive-controls ct-devices\">\n\t\t\t{['desktop', 'tablet', 'mobile']\n\t\t\t\t.filter(\n\t\t\t\t\t(d) =>\n\t\t\t\t\t\tisOptionEnabledFor(d, responsiveDescriptor) !== 'skip'\n\t\t\t\t)\n\t\t\t\t.map((d) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() => setDevice(d)}\n\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tactive: d === device,\n\t\t\t\t\t\t\t\t'ct-disabled': !isOptionEnabledFor(\n\t\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\t\tresponsiveDescriptor\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t`ct-${d}`\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tkey={d}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t</ul>\n\t</div>\n)\n\nexport default ResponsiveControls\n","import {\n\tuseState,\n\tuseEffect,\n\tuseCallback,\n\tcreateContext,\n\tcreateElement,\n\tuseContext,\n} from '@wordpress/element'\n\nexport const DeviceManagerStateContext = createContext()\nexport const DeviceManagerActionsContext = createContext()\n\nexport const useDeviceManagerState = () => {\n\tconst context = useContext(DeviceManagerStateContext)\n\n\treturn context || { currentView: 'desktop' }\n}\n\nexport const useDeviceManagerActions = () => {\n\tconst context = useContext(DeviceManagerActionsContext)\n\treturn context || {}\n}\n\nexport const useDeviceManager = (args = {}) => {\n\tconst { withTablet = true } = args\n\n\tconst [currentView, setCurrentView] = useState(\n\t\twp.customize && wp.customize.previewedDevice\n\t\t\t? wp.customize.previewedDevice()\n\t\t\t: 'desktop'\n\t)\n\n\tconst listener = () => {\n\t\tsetCurrentView(\n\t\t\twp.customize && wp.customize.previewedDevice\n\t\t\t\t? wp.customize.previewedDevice()\n\t\t\t\t: 'desktop'\n\t\t)\n\t}\n\n\tuseEffect(() => {\n\t\tif (!wp.customize) return\n\t\tsetTimeout(() => wp.customize.previewedDevice.bind(listener), 1000)\n\n\t\treturn () => {\n\t\t\tif (!wp.customize) return\n\t\t\twp.customize.previewedDevice.unbind(listener)\n\t\t}\n\t}, [])\n\n\treturn [\n\t\twithTablet\n\t\t\t? currentView\n\t\t\t: currentView === 'tablet'\n\t\t\t? 'mobile'\n\t\t\t: currentView,\n\t\t(device) => {\n\t\t\tsetCurrentView(device)\n\t\t\twp.customize && wp.customize.previewedDevice.set(device)\n\t\t},\n\t]\n}\n\nexport const DeviceManagerProvider = ({ children }) => {\n\tconst [currentView, setDevice] = useDeviceManager()\n\n\treturn (\n\t\t<DeviceManagerStateContext.Provider value={{ currentView }}>\n\t\t\t<DeviceManagerActionsContext.Provider value={{ setDevice }}>\n\t\t\t\t{children}\n\t\t\t</DeviceManagerActionsContext.Provider>\n\t\t</DeviceManagerStateContext.Provider>\n\t)\n}\n","import { createElement, Component } from '@wordpress/element'\nimport SortableJS, { Sortable as SortableChanged } from './sortablejs'\n\nconst store = {\n\tnextSibling: null,\n\tactiveComponent: null,\n}\n\nclass Sortable extends Component {\n\tstatic defaultProps = {\n\t\toptions: {},\n\t\ttag: 'div',\n\t\tstyle: {},\n\t}\n\n\tsortable = null\n\n\tcomponentDidMount() {\n\t\tconst options = { ...this.props.options }\n\n\t\t;[\n\t\t\t'onChoose',\n\t\t\t'onStart',\n\t\t\t'onEnd',\n\t\t\t'onAdd',\n\t\t\t'onUpdate',\n\t\t\t'onSort',\n\t\t\t'onRemove',\n\t\t\t'onFilter',\n\t\t\t'onMove',\n\t\t\t'onClone',\n\t\t].forEach((name) => {\n\t\t\tconst eventHandler = options[name]\n\n\t\t\toptions[name] = (...params) => {\n\t\t\t\tconst [evt] = params\n\n\t\t\t\tif (name === 'onChoose') {\n\t\t\t\t\tstore.nextSibling = evt.item.nextElementSibling\n\t\t\t\t\tstore.activeComponent = this\n\t\t\t\t} else if (\n\t\t\t\t\t(name === 'onAdd' || name === 'onUpdate') &&\n\t\t\t\t\tthis.props.onChange\n\t\t\t\t) {\n\t\t\t\t\tconst items = this.sortable.toArray()\n\t\t\t\t\tconst remote = store.activeComponent\n\t\t\t\t\tconst remoteItems = remote.sortable.toArray()\n\n\t\t\t\t\tconst referenceNode =\n\t\t\t\t\t\tstore.nextSibling &&\n\t\t\t\t\t\tstore.nextSibling.parentNode !== null\n\t\t\t\t\t\t\t? store.nextSibling\n\t\t\t\t\t\t\t: null\n\n\t\t\t\t\tevt.from.insertBefore(evt.item, referenceNode)\n\t\t\t\t\tif (remote !== this) {\n\t\t\t\t\t\tconst remoteOptions = remote.props.options || {}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof remoteOptions.group === 'object' &&\n\t\t\t\t\t\t\tremoteOptions.group.pull === 'clone'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Remove the node with the same data-reactid\n\t\t\t\t\t\t\t// evt.item.parentNode.removeChild(evt.item)\n\t\t\t\t\t\t\t;[...evt.item.parentNode.children]\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t(el) =>\n\t\t\t\t\t\t\t\t\t\tel.dataset.id === evt.item.dataset.id &&\n\t\t\t\t\t\t\t\t\t\tel !== evt.item\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.map((el) => el.remove())\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tremote.props.onChange &&\n\t\t\t\t\t\t\tremote.props.onChange(\n\t\t\t\t\t\t\t\tremoteItems,\n\t\t\t\t\t\t\t\tremote.sortable,\n\t\t\t\t\t\t\t\tevt\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onChange &&\n\t\t\t\t\t\tthis.props.onChange(items, this.sortable, evt)\n\t\t\t\t}\n\n\t\t\t\tif (evt.type === 'move') {\n\t\t\t\t\tconst [evt, originalEvent] = params\n\t\t\t\t\tconst canMove = eventHandler\n\t\t\t\t\t\t? eventHandler(evt, originalEvent)\n\t\t\t\t\t\t: true\n\t\t\t\t\treturn canMove\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\teventHandler && eventHandler(evt)\n\t\t\t\t}, 0)\n\t\t\t}\n\t\t})\n\n\t\tthis.sortable = SortableJS.create(this.node, options)\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.sortable) {\n\t\t\tthis.sortable.destroy()\n\t\t\tthis.sortable = null\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { tag: Component, options, onChange, ...props } = this.props\n\n\t\treturn <Component {...props} ref={(node) => (this.node = node)} />\n\t}\n}\n\nexport default Sortable\n","export const customItemsSeparator = () => '~'\nexport const getOriginalId = (id) => id.split('~')[0]\n\nexport const shortenItemId = (id) => {\n\tlet components = id.split(customItemsSeparator())\n\n\tif (components.length === 1) {\n\t\treturn components[0]\n\t}\n\n\treturn components[1].substring(0, 6)\n}\n","/**!\n * Sortable 1.11.0\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\n(function (global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\"\n    ? (module.exports = factory())\n    : typeof define === \"function\" && define.amd\n    ? define(factory)\n    : ((global =\n        typeof globalThis !== \"undefined\" ? globalThis : global || self),\n      (global.Sortable = factory()));\n})(this, function () {\n  \"use strict\";\n  const __warn =\n    \"\" +\n    \"Importing Sortable directly from GitHub is deprecated.\\n\" +\n    \"This file will not receive any more updates.\\n\" +\n    \"Please follow the usage instructions to continue getting support: https://github.com/SortableJS/Sortable\";\n\n  // console.warn(__warn);\n\n  var version = \"1.11.0\";\n\n  function userAgent(pattern) {\n    if (typeof window !== \"undefined\" && window.navigator) {\n      return !!(/*@__PURE__*/ navigator.userAgent.match(pattern));\n    }\n  }\n\n  const IE11OrLess = userAgent(\n    /(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i\n  );\n  const Edge = userAgent(/Edge/i);\n  const FireFox = userAgent(/firefox/i);\n  const Safari =\n    userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\n  const IOS = userAgent(/iP(ad|od|hone)/i);\n  const ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\n  const captureMode = {\n    capture: false,\n    passive: false,\n  };\n\n  function on(el, event, fn) {\n    el.addEventListener(event, fn, !IE11OrLess && captureMode);\n  }\n\n  function off(el, event, fn) {\n    el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n  }\n\n  function matches(/**HTMLElement*/ el, /**String*/ selector) {\n    if (!selector) return;\n\n    selector[0] === \">\" && (selector = selector.substring(1));\n\n    if (el) {\n      try {\n        if (el.matches) {\n          return el.matches(selector);\n        } else if (el.msMatchesSelector) {\n          return el.msMatchesSelector(selector);\n        } else if (el.webkitMatchesSelector) {\n          return el.webkitMatchesSelector(selector);\n        }\n      } catch (_) {\n        return false;\n      }\n    }\n\n    return false;\n  }\n\n  function getParentOrHost(el) {\n    return el.host && el !== document && el.host.nodeType\n      ? el.host\n      : el.parentNode;\n  }\n\n  function closest(\n    /**HTMLElement*/ el,\n    /**String*/ selector,\n    /**HTMLElement*/ ctx,\n    includeCTX\n  ) {\n    if (el) {\n      ctx = ctx || document;\n\n      do {\n        if (\n          (selector != null &&\n            (selector[0] === \">\"\n              ? el.parentNode === ctx && matches(el, selector)\n              : matches(el, selector))) ||\n          (includeCTX && el === ctx)\n        ) {\n          return el;\n        }\n\n        if (el === ctx) break;\n        /* jshint boss:true */\n      } while ((el = getParentOrHost(el)));\n    }\n\n    return null;\n  }\n\n  const R_SPACE = /\\s+/g;\n\n  function toggleClass(el, name, state) {\n    if (el && name) {\n      if (el.classList) {\n        el.classList[state ? \"add\" : \"remove\"](name);\n      } else {\n        let className = (\" \" + el.className + \" \")\n          .replace(R_SPACE, \" \")\n          .replace(\" \" + name + \" \", \" \");\n        el.className = (className + (state ? \" \" + name : \"\")).replace(\n          R_SPACE,\n          \" \"\n        );\n      }\n    }\n  }\n\n  function css(el, prop, val) {\n    let style = el && el.style;\n\n    if (style) {\n      if (val === void 0) {\n        if (document.defaultView && document.defaultView.getComputedStyle) {\n          val = document.defaultView.getComputedStyle(el, \"\");\n        } else if (el.currentStyle) {\n          val = el.currentStyle;\n        }\n\n        return prop === void 0 ? val : val[prop];\n      } else {\n        if (!(prop in style) && prop.indexOf(\"webkit\") === -1) {\n          prop = \"-webkit-\" + prop;\n        }\n\n        style[prop] = val + (typeof val === \"string\" ? \"\" : \"px\");\n      }\n    }\n  }\n\n  function matrix(el, selfOnly) {\n    let appliedTransforms = \"\";\n    if (typeof el === \"string\") {\n      appliedTransforms = el;\n    } else {\n      do {\n        //@ts-ignore\n        let transform = css(el, \"transform\");\n\n        if (transform && transform !== \"none\") {\n          appliedTransforms = transform + \" \" + appliedTransforms;\n        }\n        /* jshint boss:true */\n      } while (!selfOnly && (el = el.parentNode));\n    }\n\n    //@ts-ignore\n    const matrixFn =\n      window.DOMMatrix ||\n      window.WebKitCSSMatrix ||\n      window.CSSMatrix ||\n      window.MSCSSMatrix;\n    /*jshint -W056 */\n    return matrixFn && new matrixFn(appliedTransforms);\n  }\n\n  function find(ctx, tagName, iterator) {\n    if (ctx) {\n      let list = ctx.getElementsByTagName(tagName),\n        i = 0,\n        n = list.length;\n\n      if (iterator) {\n        for (; i < n; i++) {\n          iterator(list[i], i);\n        }\n      }\n\n      return list;\n    }\n\n    return [];\n  }\n\n  function getWindowScrollingElement() {\n    let scrollingElement = document.scrollingElement;\n\n    if (scrollingElement) {\n      return scrollingElement;\n    } else {\n      return document.documentElement;\n    }\n  }\n\n  /**\n   * Returns the \"bounding client rect\" of given element\n   * @param  {HTMLElement} el                       The element whose boundingClientRect is wanted\n   * @param  {[Boolean]} relativeToContainingBlock  Whether the rect should be relative to the containing block of (including) the container\n   * @param  {[Boolean]} relativeToNonStaticParent  Whether the rect should be relative to the relative parent of (including) the contaienr\n   * @param  {[Boolean]} undoScale                  Whether the container's scale() should be undone\n   * @param  {[HTMLElement]} container              The parent the element will be placed in\n   * @return {Object}                               The boundingClientRect of el, with specified adjustments\n   */\n  function getRect(\n    el,\n    relativeToContainingBlock,\n    relativeToNonStaticParent,\n    undoScale,\n    container\n  ) {\n    if (!el.getBoundingClientRect && el !== window) return;\n\n    let elRect, top, left, bottom, right, height, width;\n\n    if (el !== window && el !== getWindowScrollingElement()) {\n      elRect = el.getBoundingClientRect();\n      top = elRect.top;\n      left = elRect.left;\n      bottom = elRect.bottom;\n      right = elRect.right;\n      height = elRect.height;\n      width = elRect.width;\n    } else {\n      top = 0;\n      left = 0;\n      bottom = window.innerHeight;\n      right = window.innerWidth;\n      height = window.innerHeight;\n      width = window.innerWidth;\n    }\n\n    if (\n      (relativeToContainingBlock || relativeToNonStaticParent) &&\n      el !== window\n    ) {\n      // Adjust for translate()\n      container = container || el.parentNode;\n\n      // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n      // Not needed on <= IE11\n      if (!IE11OrLess) {\n        do {\n          if (\n            container &&\n            container.getBoundingClientRect &&\n            //@ts-ignore\n            (css(container, \"transform\") !== \"none\" ||\n              (relativeToNonStaticParent &&\n                //@ts-ignore\n                css(container, \"position\") !== \"static\"))\n          ) {\n            let containerRect = container.getBoundingClientRect();\n\n            // Set relative to edges of padding box of container\n            //@ts-ignore\n            top -=\n              containerRect.top + parseInt(css(container, \"border-top-width\"));\n            //@ts-ignore\n            left -=\n              containerRect.left +\n              parseInt(css(container, \"border-left-width\"));\n            bottom = top + elRect.height;\n            right = left + elRect.width;\n\n            break;\n          }\n          /* jshint boss:true */\n        } while ((container = container.parentNode));\n      }\n    }\n\n    if (undoScale && el !== window) {\n      // Adjust for scale()\n      //@ts-ignore\n      let elMatrix = matrix(container || el),\n        scaleX = elMatrix && elMatrix.a,\n        scaleY = elMatrix && elMatrix.d;\n\n      if (elMatrix) {\n        top /= scaleY;\n        left /= scaleX;\n\n        width /= scaleX;\n        height /= scaleY;\n\n        bottom = top + height;\n        right = left + width;\n      }\n    }\n\n    return {\n      top: top,\n      left: left,\n      bottom: bottom,\n      right: right,\n      width: width,\n      height: height,\n    };\n  }\n\n  /**\n   * Checks if a side of an element is scrolled past a side of its parents\n   * @param  {HTMLElement}  el           The element who's side being scrolled out of view is in question\n   * @param  {String}       elSide       Side of the element in question ('top', 'left', 'right', 'bottom')\n   * @param  {String}       parentSide   Side of the parent in question ('top', 'left', 'right', 'bottom')\n   * @return {HTMLElement}               The parent scroll element that the el's side is scrolled past, or null if there is no such element\n   */\n  function isScrolledPast(el, elSide, parentSide) {\n    let parent = getParentAutoScrollElement(el, true),\n      //@ts-ignore\n      elSideVal = getRect(el)[elSide];\n\n    /* jshint boss:true */\n    while (parent) {\n      //@ts-ignore\n      let parentSideVal = getRect(parent)[parentSide],\n        visible;\n\n      if (parentSide === \"top\" || parentSide === \"left\") {\n        visible = elSideVal >= parentSideVal;\n      } else {\n        visible = elSideVal <= parentSideVal;\n      }\n\n      if (!visible) return parent;\n\n      if (parent === getWindowScrollingElement()) break;\n\n      parent = getParentAutoScrollElement(parent, false);\n    }\n\n    return false;\n  }\n\n  /**\n   * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n   * and non-draggable elements\n   * @param  {HTMLElement} el       The parent element\n   * @param  {Number} childNum      The index of the child\n   * @param  {Object} options       Parent Sortable's options\n   * @return {HTMLElement}          The child at index childNum, or null if not found\n   */\n  function getChild(el, childNum, options) {\n    let currentChild = 0,\n      i = 0,\n      children = el.children;\n\n    while (i < children.length) {\n      if (\n        children[i].style.display !== \"none\" &&\n        //@ts-ignore\n        children[i] !== Sortable.ghost &&\n        //@ts-ignore\n        children[i] !== Sortable.dragged &&\n        closest(children[i], options.draggable, el, false)\n      ) {\n        if (currentChild === childNum) {\n          return children[i];\n        }\n        currentChild++;\n      }\n\n      i++;\n    }\n    return null;\n  }\n\n  /**\n   * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n   * @param  {HTMLElement} el       Parent element\n   * @param  {selector} selector    Any other elements that should be ignored\n   * @return {HTMLElement}          The last child, ignoring ghostEl\n   */\n  function lastChild(el, selector) {\n    let last = el.lastElementChild;\n\n    while (\n      last &&\n      //@ts-ignore\n      (last === Sortable.ghost ||\n        //@ts-ignore\n        css(last, \"display\") === \"none\" ||\n        (selector && !matches(last, selector)))\n    ) {\n      last = last.previousElementSibling;\n    }\n\n    return last || null;\n  }\n\n  /**\n   * Returns the index of an element within its parent for a selected set of\n   * elements\n   * @param  {HTMLElement} el\n   * @param  {selector} selector\n   * @return {number}\n   */\n  function index(el, selector) {\n    let index = 0;\n\n    if (!el || !el.parentNode) {\n      return -1;\n    }\n\n    /* jshint boss:true */\n    while ((el = el.previousElementSibling)) {\n      //@ts-ignore\n      if (\n        el.nodeName.toUpperCase() !== \"TEMPLATE\" &&\n        !el.matches('.ct-pointer') &&\n        el !== Sortable.clone &&\n        (!selector || matches(el, selector))\n      ) {\n        index++;\n      }\n    }\n\n    return index;\n  }\n\n  /**\n   * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n   * The value is returned in real pixels.\n   * @param  {HTMLElement} el\n   * @return {Array}             Offsets in the format of [left, top]\n   */\n  function getRelativeScrollOffset(el) {\n    let offsetLeft = 0,\n      offsetTop = 0,\n      winScroller = getWindowScrollingElement();\n\n    if (el) {\n      do {\n        //@ts-ignore\n        let elMatrix = matrix(el),\n          scaleX = elMatrix.a,\n          scaleY = elMatrix.d;\n\n        offsetLeft += el.scrollLeft * scaleX;\n        offsetTop += el.scrollTop * scaleY;\n      } while (el !== winScroller && (el = el.parentNode));\n    }\n\n    return [offsetLeft, offsetTop];\n  }\n\n  /**\n   * Returns the index of the object within the given array\n   * @param  {Array} arr   Array that may or may not hold the object\n   * @param  {Object} obj  An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n   * @return {Number}      The index of the object in the array, or -1\n   */\n  function indexOfObject(arr, obj) {\n    for (let i in arr) {\n      if (!arr.hasOwnProperty(i)) continue;\n      for (let key in obj) {\n        if (obj.hasOwnProperty(key) && obj[key] === arr[i][key])\n          return Number(i);\n      }\n    }\n    return -1;\n  }\n\n  function getParentAutoScrollElement(el, includeSelf) {\n    // skip to window\n    if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n\n    let elem = el;\n    let gotSelf = false;\n    do {\n      // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n      if (\n        elem.clientWidth < elem.scrollWidth ||\n        elem.clientHeight < elem.scrollHeight\n      ) {\n        //@ts-ignore\n        let elemCSS = css(elem);\n        if (\n          (elem.clientWidth < elem.scrollWidth &&\n            (elemCSS.overflowX == \"auto\" || elemCSS.overflowX == \"scroll\")) ||\n          (elem.clientHeight < elem.scrollHeight &&\n            (elemCSS.overflowY == \"auto\" || elemCSS.overflowY == \"scroll\"))\n        ) {\n          if (!elem.getBoundingClientRect || elem === document.body)\n            return getWindowScrollingElement();\n\n          if (gotSelf || includeSelf) return elem;\n          gotSelf = true;\n        }\n      }\n      /* jshint boss:true */\n    } while ((elem = elem.parentNode));\n\n    return getWindowScrollingElement();\n  }\n\n  function extend(dst, src) {\n    if (dst && src) {\n      for (let key in src) {\n        if (src.hasOwnProperty(key)) {\n          dst[key] = src[key];\n        }\n      }\n    }\n\n    return dst;\n  }\n\n  function isRectEqual(rect1, rect2) {\n    return (\n      Math.round(rect1.top) === Math.round(rect2.top) &&\n      Math.round(rect1.left) === Math.round(rect2.left) &&\n      Math.round(rect1.height) === Math.round(rect2.height) &&\n      Math.round(rect1.width) === Math.round(rect2.width)\n    );\n  }\n\n  let _throttleTimeout;\n  function throttle(callback, ms) {\n    return function () {\n      if (!_throttleTimeout) {\n        let args = arguments,\n          _this = this;\n\n        if (args.length === 1) {\n          callback.call(_this, args[0]);\n        } else {\n          callback.apply(_this, args);\n        }\n\n        _throttleTimeout = setTimeout(function () {\n          _throttleTimeout = void 0;\n        }, ms);\n      }\n    };\n  }\n\n  function cancelThrottle() {\n    clearTimeout(_throttleTimeout);\n    _throttleTimeout = void 0;\n  }\n\n  function scrollBy(el, x, y) {\n    el.scrollLeft += x;\n    el.scrollTop += y;\n  }\n\n  function clone(el) {\n    //@ts-ignore\n    let Polymer = window.Polymer;\n    //@ts-ignore\n    let $ = window.jQuery || window.Zepto;\n\n    if (Polymer && Polymer.dom) {\n      return Polymer.dom(el).cloneNode(true);\n    } else if ($) {\n      return $(el).clone(true)[0];\n    } else {\n      return el.cloneNode(true);\n    }\n  }\n\n  function setRect(el, rect) {\n    css(el, \"position\", \"absolute\");\n    css(el, \"top\", rect.top);\n    css(el, \"left\", rect.left);\n    css(el, \"width\", rect.width);\n    css(el, \"height\", rect.height);\n  }\n\n  function unsetRect(el) {\n    css(el, \"position\", \"\");\n    css(el, \"top\", \"\");\n    css(el, \"left\", \"\");\n    css(el, \"width\", \"\");\n    css(el, \"height\", \"\");\n  }\n\n  const expando = \"Sortable\" + new Date().getTime();\n\n  function AnimationStateManager() {\n    let animationStates = [],\n      animationCallbackId;\n\n    return {\n      captureAnimationState() {\n        animationStates = [];\n        if (!this.options.animation) return;\n        let children = [].slice.call(this.el.children);\n\n        children.forEach((child) => {\n          if (css(child, \"display\") === \"none\" || child === Sortable.ghost)\n            return;\n          animationStates.push({\n            target: child,\n            rect: getRect(child),\n          });\n          let fromRect = {\n            ...animationStates[animationStates.length - 1].rect,\n          };\n\n          // If animating: compensate for current animation\n          if (child.thisAnimationDuration) {\n            let childMatrix = matrix(child, true);\n            if (childMatrix) {\n              fromRect.top -= childMatrix.f;\n              fromRect.left -= childMatrix.e;\n            }\n          }\n\n          child.fromRect = fromRect;\n        });\n      },\n\n      addAnimationState(state) {\n        animationStates.push(state);\n      },\n\n      removeAnimationState(target) {\n        animationStates.splice(indexOfObject(animationStates, { target }), 1);\n      },\n\n      animateAll(callback) {\n        if (!this.options.animation) {\n          clearTimeout(animationCallbackId);\n          if (typeof callback === \"function\") callback();\n          return;\n        }\n\n        let animating = false,\n          animationTime = 0;\n\n        animationStates.forEach((state) => {\n          let time = 0,\n            target = state.target,\n            fromRect = target.fromRect,\n            toRect = getRect(target),\n            prevFromRect = target.prevFromRect,\n            prevToRect = target.prevToRect,\n            animatingRect = state.rect,\n            targetMatrix = matrix(target, true);\n\n          if (targetMatrix) {\n            // Compensate for current animation\n            toRect.top -= targetMatrix.f;\n            toRect.left -= targetMatrix.e;\n          }\n\n          target.toRect = toRect;\n\n          if (target.thisAnimationDuration) {\n            // Could also check if animatingRect is between fromRect and toRect\n            if (\n              isRectEqual(prevFromRect, toRect) &&\n              !isRectEqual(fromRect, toRect) &&\n              // Make sure animatingRect is on line between toRect & fromRect\n              (animatingRect.top - toRect.top) /\n                (animatingRect.left - toRect.left) ===\n                (fromRect.top - toRect.top) / (fromRect.left - toRect.left)\n            ) {\n              // If returning to same place as started from animation and on same axis\n              time = calculateRealTime(\n                animatingRect,\n                prevFromRect,\n                prevToRect,\n                this.options\n              );\n            }\n          }\n\n          // if fromRect != toRect: animate\n          if (!isRectEqual(toRect, fromRect)) {\n            target.prevFromRect = fromRect;\n            target.prevToRect = toRect;\n\n            if (!time) {\n              time = this.options.animation;\n            }\n            this.animate(target, animatingRect, toRect, time);\n          }\n\n          if (time) {\n            animating = true;\n            animationTime = Math.max(animationTime, time);\n            clearTimeout(target.animationResetTimer);\n            target.animationResetTimer = setTimeout(function () {\n              target.animationTime = 0;\n              target.prevFromRect = null;\n              target.fromRect = null;\n              target.prevToRect = null;\n              target.thisAnimationDuration = null;\n            }, time);\n            target.thisAnimationDuration = time;\n          }\n        });\n\n        clearTimeout(animationCallbackId);\n        if (!animating) {\n          if (typeof callback === \"function\") callback();\n        } else {\n          animationCallbackId = setTimeout(function () {\n            if (typeof callback === \"function\") callback();\n          }, animationTime);\n        }\n        animationStates = [];\n      },\n\n      animate(target, currentRect, toRect, duration) {\n        if (duration) {\n          css(target, \"transition\", \"\");\n          css(target, \"transform\", \"\");\n          let elMatrix = matrix(this.el),\n            scaleX = elMatrix && elMatrix.a,\n            scaleY = elMatrix && elMatrix.d,\n            translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n            translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n\n          target.animatingX = !!translateX;\n          target.animatingY = !!translateY;\n\n          css(\n            target,\n            \"transform\",\n            \"translate3d(\" + translateX + \"px,\" + translateY + \"px,0)\"\n          );\n\n          this.forRepaintDummy = repaint(target); // repaint\n\n          css(\n            target,\n            \"transition\",\n            \"transform \" +\n              duration +\n              \"ms\" +\n              (this.options.easing ? \" \" + this.options.easing : \"\")\n          );\n          css(target, \"transform\", \"translate3d(0,0,0)\");\n          typeof target.animated === \"number\" && clearTimeout(target.animated);\n          target.animated = setTimeout(function () {\n            css(target, \"transition\", \"\");\n            css(target, \"transform\", \"\");\n            target.animated = false;\n\n            target.animatingX = false;\n            target.animatingY = false;\n          }, duration);\n        }\n      },\n    };\n  }\n\n  function repaint(target) {\n    return target.offsetWidth;\n  }\n\n  function calculateRealTime(animatingRect, fromRect, toRect, options) {\n    return (\n      (Math.sqrt(\n        Math.pow(fromRect.top - animatingRect.top, 2) +\n          Math.pow(fromRect.left - animatingRect.left, 2)\n      ) /\n        Math.sqrt(\n          Math.pow(fromRect.top - toRect.top, 2) +\n            Math.pow(fromRect.left - toRect.left, 2)\n        )) *\n      options.animation\n    );\n  }\n\n  let plugins = [];\n\n  const defaults = {\n    initializeByDefault: true,\n  };\n\n  var PluginManager = {\n    mount(plugin) {\n      // Set default static properties\n      for (let option in defaults) {\n        if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n          plugin[option] = defaults[option];\n        }\n      }\n      plugins.push(plugin);\n    },\n    pluginEvent(eventName, sortable, evt) {\n      this.eventCanceled = false;\n      evt.cancel = () => {\n        this.eventCanceled = true;\n      };\n      const eventNameGlobal = eventName + \"Global\";\n      plugins.forEach((plugin) => {\n        if (!sortable[plugin.pluginName]) return;\n        // Fire global events if it exists in this sortable\n        if (sortable[plugin.pluginName][eventNameGlobal]) {\n          sortable[plugin.pluginName][eventNameGlobal]({ sortable, ...evt });\n        }\n\n        // Only fire plugin event if plugin is enabled in this sortable,\n        // and plugin has event defined\n        if (\n          sortable.options[plugin.pluginName] &&\n          sortable[plugin.pluginName][eventName]\n        ) {\n          sortable[plugin.pluginName][eventName]({ sortable, ...evt });\n        }\n      });\n    },\n    initializePlugins(sortable, el, defaults, options) {\n      plugins.forEach((plugin) => {\n        const pluginName = plugin.pluginName;\n        if (!sortable.options[pluginName] && !plugin.initializeByDefault)\n          return;\n\n        let initialized = new plugin(sortable, el, sortable.options);\n        initialized.sortable = sortable;\n        initialized.options = sortable.options;\n        sortable[pluginName] = initialized;\n\n        // Add default options from plugin\n        Object.assign(defaults, initialized.defaults);\n      });\n\n      for (let option in sortable.options) {\n        if (!sortable.options.hasOwnProperty(option)) continue;\n        let modified = this.modifyOption(\n          sortable,\n          option,\n          sortable.options[option]\n        );\n        if (typeof modified !== \"undefined\") {\n          sortable.options[option] = modified;\n        }\n      }\n    },\n    getEventProperties(name, sortable) {\n      let eventProperties = {};\n      plugins.forEach((plugin) => {\n        if (typeof plugin.eventProperties !== \"function\") return;\n        Object.assign(\n          eventProperties,\n          plugin.eventProperties.call(sortable[plugin.pluginName], name)\n        );\n      });\n\n      return eventProperties;\n    },\n    modifyOption(sortable, name, value) {\n      let modifiedValue;\n      plugins.forEach((plugin) => {\n        // Plugin must exist on the Sortable\n        if (!sortable[plugin.pluginName]) return;\n\n        // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n        if (\n          plugin.optionListeners &&\n          typeof plugin.optionListeners[name] === \"function\"\n        ) {\n          modifiedValue = plugin.optionListeners[name].call(\n            sortable[plugin.pluginName],\n            value\n          );\n        }\n      });\n\n      return modifiedValue;\n    },\n  };\n\n  function dispatchEvent({\n    sortable,\n    rootEl,\n    name,\n    targetEl,\n    cloneEl,\n    toEl,\n    fromEl,\n    oldIndex,\n    newIndex,\n    oldDraggableIndex,\n    newDraggableIndex,\n    originalEvent,\n    putSortable,\n    extraEventProperties,\n  }) {\n    sortable = sortable || (rootEl && rootEl[expando]);\n    if (!sortable) return;\n\n    let evt,\n      options = sortable.options,\n      onName = \"on\" + name.charAt(0).toUpperCase() + name.substr(1);\n    // Support for new CustomEvent feature\n    if (window.CustomEvent && !IE11OrLess && !Edge) {\n      evt = new CustomEvent(name, {\n        bubbles: true,\n        cancelable: true,\n      });\n    } else {\n      evt = document.createEvent(\"Event\");\n      evt.initEvent(name, true, true);\n    }\n\n    evt.to = toEl || rootEl;\n    evt.from = fromEl || rootEl;\n    evt.item = targetEl || rootEl;\n    evt.clone = cloneEl;\n\n    evt.oldIndex = oldIndex;\n    evt.newIndex = newIndex;\n\n    evt.oldDraggableIndex = oldDraggableIndex;\n    evt.newDraggableIndex = newDraggableIndex;\n\n    evt.originalEvent = originalEvent;\n    evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n    let allEventProperties = {\n      ...extraEventProperties,\n      ...PluginManager.getEventProperties(name, sortable),\n    };\n    for (let option in allEventProperties) {\n      evt[option] = allEventProperties[option];\n    }\n\n    if (rootEl) {\n      rootEl.dispatchEvent(evt);\n    }\n\n    if (options[onName]) {\n      options[onName].call(sortable, evt);\n    }\n  }\n\n  /**!\n   * Sortable\n   * @author\tRubaXa   <trash@rubaxa.org>\n   * @author\towenm    <owen23355@gmail.com>\n   * @license MIT\n   */\n\n  let pluginEvent = function (\n    eventName,\n    sortable,\n    { evt: originalEvent, ...data } = {}\n  ) {\n    PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, {\n      dragEl,\n      parentEl,\n      ghostEl,\n      rootEl,\n      nextEl,\n      lastDownEl,\n      cloneEl,\n      cloneHidden,\n      dragStarted: moved,\n      putSortable,\n      activeSortable: Sortable.active,\n      originalEvent,\n\n      oldIndex,\n      oldDraggableIndex,\n      newIndex,\n      newDraggableIndex,\n\n      hideGhostForTarget: _hideGhostForTarget,\n      unhideGhostForTarget: _unhideGhostForTarget,\n\n      cloneNowHidden() {\n        cloneHidden = true;\n      },\n      cloneNowShown() {\n        cloneHidden = false;\n      },\n\n      dispatchSortableEvent(name) {\n        _dispatchEvent({ sortable, name, originalEvent });\n      },\n\n      ...data,\n    });\n  };\n\n  function _dispatchEvent(info) {\n    dispatchEvent({\n      putSortable,\n      cloneEl,\n      targetEl: dragEl,\n      rootEl,\n      oldIndex,\n      oldDraggableIndex,\n      newIndex,\n      newDraggableIndex,\n      ...info,\n    });\n  }\n\n  let dragEl,\n    parentEl,\n    ghostEl,\n    rootEl,\n    nextEl,\n    lastDownEl,\n    cloneEl,\n    cloneHidden,\n    oldIndex,\n    newIndex,\n    oldDraggableIndex,\n    newDraggableIndex,\n    activeGroup,\n    putSortable,\n    awaitingDragStarted = false,\n    ignoreNextClick = false,\n    sortables = [],\n    tapEvt,\n    touchEvt,\n    lastDx,\n    lastDy,\n    tapDistanceLeft,\n    tapDistanceTop,\n    moved,\n    lastTarget,\n    lastDirection,\n    pastFirstInvertThresh = false,\n    isCircumstantialInvert = false,\n    targetMoveDistance,\n    // For positioning ghost absolutely\n    ghostRelativeParent,\n    ghostRelativeParentInitialScroll = [], // (left, top)\n    _silent = false,\n    savedInputChecked = [];\n\n  /** @const */\n  const documentExists = typeof document !== \"undefined\",\n    PositionGhostAbsolutely = IOS,\n    CSSFloatProperty = Edge || IE11OrLess ? \"cssFloat\" : \"float\",\n    // This will not pass for IE9, because IE9 DnD only works on anchors\n    supportDraggable =\n      documentExists &&\n      !ChromeForAndroid &&\n      !IOS &&\n      \"draggable\" in document.createElement(\"div\"),\n    supportCssPointerEvents = (function () {\n      if (!documentExists) return;\n      // false when <= IE11\n      if (IE11OrLess) {\n        return false;\n      }\n      let el = document.createElement(\"x\");\n      el.style.cssText = \"pointer-events:auto\";\n      return el.style.pointerEvents === \"auto\";\n    })(),\n    _detectDirection = function (el, options) {\n      let elCSS = css(el),\n        elWidth =\n          parseInt(elCSS.width) -\n          parseInt(elCSS.paddingLeft) -\n          parseInt(elCSS.paddingRight) -\n          parseInt(elCSS.borderLeftWidth) -\n          parseInt(elCSS.borderRightWidth),\n        child1 = getChild(el, 0, options),\n        child2 = getChild(el, 1, options),\n        firstChildCSS = child1 && css(child1),\n        secondChildCSS = child2 && css(child2),\n        firstChildWidth =\n          firstChildCSS &&\n          parseInt(firstChildCSS.marginLeft) +\n            parseInt(firstChildCSS.marginRight) +\n            getRect(child1).width,\n        secondChildWidth =\n          secondChildCSS &&\n          parseInt(secondChildCSS.marginLeft) +\n            parseInt(secondChildCSS.marginRight) +\n            getRect(child2).width;\n\n      if (elCSS.display === \"flex\") {\n        return elCSS.flexDirection === \"column\" ||\n          elCSS.flexDirection === \"column-reverse\"\n          ? \"vertical\"\n          : \"horizontal\";\n      }\n\n      if (elCSS.display === \"grid\") {\n        return elCSS.gridTemplateColumns.split(\" \").length <= 1\n          ? \"vertical\"\n          : \"horizontal\";\n      }\n\n      if (child1 && firstChildCSS.float && firstChildCSS.float !== \"none\") {\n        let touchingSideChild2 =\n          firstChildCSS.float === \"left\" ? \"left\" : \"right\";\n\n        return child2 &&\n          (secondChildCSS.clear === \"both\" ||\n            secondChildCSS.clear === touchingSideChild2)\n          ? \"vertical\"\n          : \"horizontal\";\n      }\n\n      return child1 &&\n        (firstChildCSS.display === \"block\" ||\n          firstChildCSS.display === \"flex\" ||\n          firstChildCSS.display === \"table\" ||\n          firstChildCSS.display === \"grid\" ||\n          (firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === \"none\") ||\n          (child2 &&\n            elCSS[CSSFloatProperty] === \"none\" &&\n            firstChildWidth + secondChildWidth > elWidth))\n        ? \"vertical\"\n        : \"horizontal\";\n    },\n    _dragElInRowColumn = function (dragRect, targetRect, vertical) {\n      let dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n        dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n        dragElOppLength = vertical ? dragRect.width : dragRect.height,\n        targetS1Opp = vertical ? targetRect.left : targetRect.top,\n        targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n        targetOppLength = vertical ? targetRect.width : targetRect.height;\n\n      return (\n        dragElS1Opp === targetS1Opp ||\n        dragElS2Opp === targetS2Opp ||\n        dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2\n      );\n    },\n    /**\n     * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n     * @param  {Number} x      X position\n     * @param  {Number} y      Y position\n     * @return {HTMLElement}   Element of the first found nearest Sortable\n     */\n    _detectNearestEmptySortable = function (x, y) {\n      let ret;\n      sortables.some((sortable) => {\n        if (lastChild(sortable)) return;\n\n        let rect = getRect(sortable),\n          threshold = sortable[expando].options.emptyInsertThreshold,\n          insideHorizontally =\n            x >= rect.left - threshold && x <= rect.right + threshold,\n          insideVertically =\n            y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n        if (threshold && insideHorizontally && insideVertically) {\n          return (ret = sortable);\n        }\n      });\n      return ret;\n    },\n    _prepareGroup = function (options) {\n      function toFn(value, pull) {\n        return function (to, from, dragEl, evt) {\n          let sameGroup =\n            to.options.group.name &&\n            from.options.group.name &&\n            to.options.group.name === from.options.group.name;\n\n          if (value == null && (pull || sameGroup)) {\n            // Default pull value\n            // Default pull and put value if same group\n            return true;\n          } else if (value == null || value === false) {\n            return false;\n          } else if (pull && value === \"clone\") {\n            return value;\n          } else if (typeof value === \"function\") {\n            return toFn(value(to, from, dragEl, evt), pull)(\n              to,\n              from,\n              dragEl,\n              evt\n            );\n          } else {\n            let otherGroup = (pull ? to : from).options.group.name;\n\n            return (\n              value === true ||\n              (typeof value === \"string\" && value === otherGroup) ||\n              (value.join && value.indexOf(otherGroup) > -1)\n            );\n          }\n        };\n      }\n\n      let group = {};\n      let originalGroup = options.group;\n\n      if (!originalGroup || typeof originalGroup != \"object\") {\n        originalGroup = { name: originalGroup };\n      }\n\n      group.name = originalGroup.name;\n      group.checkPull = toFn(originalGroup.pull, true);\n      group.checkPut = toFn(originalGroup.put);\n      group.revertClone = originalGroup.revertClone;\n\n      options.group = group;\n    },\n    _hideGhostForTarget = function () {\n      if (!supportCssPointerEvents && ghostEl) {\n        css(ghostEl, \"display\", \"none\");\n      }\n    },\n    _unhideGhostForTarget = function () {\n      if (!supportCssPointerEvents && ghostEl) {\n        css(ghostEl, \"display\", \"\");\n      }\n    };\n\n  // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n  if (documentExists) {\n    document.addEventListener(\n      \"click\",\n      function (evt) {\n        if (ignoreNextClick) {\n          evt.preventDefault();\n          evt.stopPropagation && evt.stopPropagation();\n          evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n          ignoreNextClick = false;\n          return false;\n        }\n      },\n      true\n    );\n  }\n\n  let nearestEmptyInsertDetectEvent = function (evt) {\n    if (dragEl) {\n      evt = evt.touches ? evt.touches[0] : evt;\n      let nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n      if (nearest) {\n        // Create imitation event\n        let event = {};\n        for (let i in evt) {\n          if (evt.hasOwnProperty(i)) {\n            event[i] = evt[i];\n          }\n        }\n        event.target = event.rootEl = nearest;\n        event.preventDefault = void 0;\n        event.stopPropagation = void 0;\n        nearest[expando]._onDragOver(event);\n      }\n    }\n  };\n\n  let _checkOutsideTargetEl = function (evt) {\n    if (dragEl) {\n      dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n    }\n  };\n\n  /**\n   * @class  Sortable\n   * @param  {HTMLElement}  el\n   * @param  {Object}       [options]\n   */\n  function Sortable(el, options) {\n    if (!(el && el.nodeType && el.nodeType === 1)) {\n      throw `Sortable: \\`el\\` must be an HTMLElement, not ${{}.toString.call(\n        el\n      )}`;\n    }\n\n    this.el = el; // root element\n    this.options = options = Object.assign({}, options);\n\n    // Export instance\n    el[expando] = this;\n\n    let defaults = {\n      group: null,\n      sort: true,\n      disabled: false,\n      store: null,\n      handle: null,\n      draggable: /^[uo]l$/i.test(el.nodeName) ? \">li\" : \">*\",\n      swapThreshold: 1, // percentage; 0 <= x <= 1\n      invertSwap: false, // invert always\n      invertedSwapThreshold: null, // will be set to same as swapThreshold if default\n      removeCloneOnHide: true,\n      direction: function () {\n        return _detectDirection(el, this.options);\n      },\n      ghostClass: \"sortable-ghost\",\n      chosenClass: \"sortable-chosen\",\n      dragClass: \"sortable-drag\",\n      ignore: \"a, img\",\n      filter: null,\n      preventOnFilter: true,\n      animation: 0,\n      easing: null,\n      setData: function (dataTransfer, dragEl) {\n        dataTransfer.setData(\"Text\", dragEl.textContent);\n      },\n      dropBubble: false,\n      dragoverBubble: false,\n      dataIdAttr: \"data-id\",\n      delay: 0,\n      delayOnTouchOnly: false,\n      touchStartThreshold:\n        (Number.parseInt ? Number : window).parseInt(\n          window.devicePixelRatio,\n          10\n        ) || 1,\n      forceFallback: false,\n      fallbackClass: \"sortable-fallback\",\n      fallbackOnBody: false,\n      fallbackTolerance: 0,\n      fallbackOffset: { x: 0, y: 0 },\n      supportPointer:\n        Sortable.supportPointer !== false && \"PointerEvent\" in window,\n      emptyInsertThreshold: 5,\n    };\n\n    PluginManager.initializePlugins(this, el, defaults);\n\n    // Set default options\n    for (let name in defaults) {\n      !(name in options) && (options[name] = defaults[name]);\n    }\n\n    _prepareGroup(options);\n\n    // Bind all private methods\n    for (let fn in this) {\n      if (fn.charAt(0) === \"_\" && typeof this[fn] === \"function\") {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n\n    // Setup drag mode\n    this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n    if (this.nativeDraggable) {\n      // Touch start threshold cannot be greater than the native dragstart threshold\n      this.options.touchStartThreshold = 1;\n    }\n\n    // Bind events\n    if (options.supportPointer) {\n      on(el, \"pointerdown\", this._onTapStart);\n    } else {\n      on(el, \"mousedown\", this._onTapStart);\n      on(el, \"touchstart\", this._onTapStart);\n    }\n\n    if (this.nativeDraggable) {\n      on(el, \"dragover\", this);\n      on(el, \"dragenter\", this);\n    }\n\n    sortables.push(this.el);\n\n    // Restore sorting\n    options.store &&\n      options.store.get &&\n      this.sort(options.store.get(this) || []);\n\n    // Add animation state manager\n    Object.assign(this, AnimationStateManager());\n  }\n\n  Sortable.prototype = /** @lends Sortable.prototype */ {\n    constructor: Sortable,\n\n    _isOutsideThisEl: function (target) {\n      if (!this.el.contains(target) && target !== this.el) {\n        lastTarget = null;\n      }\n    },\n\n    _getDirection: function (evt, target) {\n      return typeof this.options.direction === \"function\"\n        ? this.options.direction.call(this, evt, target, dragEl)\n        : this.options.direction;\n    },\n\n    _onTapStart: function (/** Event|TouchEvent */ evt) {\n      if (!evt.cancelable) return;\n      let _this = this,\n        el = this.el,\n        options = this.options,\n        preventOnFilter = options.preventOnFilter,\n        type = evt.type,\n        touch =\n          (evt.touches && evt.touches[0]) ||\n          (evt.pointerType && evt.pointerType === \"touch\" && evt),\n        target = (touch || evt).target,\n        originalTarget =\n          (evt.target.shadowRoot &&\n            ((evt.path && evt.path[0]) ||\n              (evt.composedPath && evt.composedPath()[0]))) ||\n          target,\n        filter = options.filter;\n\n      _saveInputCheckedState(el);\n\n      // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n      if (dragEl) {\n        return;\n      }\n\n      if (\n        (/mousedown|pointerdown/.test(type) && evt.button !== 0) ||\n        options.disabled\n      ) {\n        return; // only left button and enabled\n      }\n\n      // cancel dnd if original target is content editable\n      if (originalTarget.isContentEditable) {\n        return;\n      }\n\n      // Safari ignores further event handling after mousedown\n      if (\n        !this.nativeDraggable &&\n        Safari &&\n        target &&\n        target.tagName.toUpperCase() === \"SELECT\"\n      ) {\n        return;\n      }\n\n      target = closest(target, options.draggable, el, false);\n\n      if (target && target.animated) {\n        return;\n      }\n\n      if (lastDownEl === target) {\n        // Ignoring duplicate `down`\n        return;\n      }\n\n      // Get the index of the dragged element within its parent\n      oldIndex = index(target);\n      oldDraggableIndex = index(target, options.draggable);\n\n      // Check filter\n      if (typeof filter === \"function\") {\n        if (filter.call(this, evt, target, this)) {\n          _dispatchEvent({\n            sortable: _this,\n            rootEl: originalTarget,\n            name: \"filter\",\n            targetEl: target,\n            toEl: el,\n            fromEl: el,\n          });\n          pluginEvent(\"filter\", _this, { evt });\n          preventOnFilter && evt.cancelable && evt.preventDefault();\n          return; // cancel dnd\n        }\n      } else if (filter) {\n        filter = filter.split(\",\").some(function (criteria) {\n          criteria = closest(originalTarget, criteria.trim(), el, false);\n\n          if (criteria) {\n            _dispatchEvent({\n              sortable: _this,\n              rootEl: criteria,\n              name: \"filter\",\n              targetEl: target,\n              fromEl: el,\n              toEl: el,\n            });\n            pluginEvent(\"filter\", _this, { evt });\n            return true;\n          }\n        });\n\n        if (filter) {\n          preventOnFilter && evt.cancelable && evt.preventDefault();\n          return; // cancel dnd\n        }\n      }\n\n      if (\n        options.handle &&\n        !closest(originalTarget, options.handle, el, false)\n      ) {\n        return;\n      }\n\n      // Prepare `dragstart`\n      this._prepareDragStart(evt, touch, target);\n    },\n\n    _prepareDragStart: function (\n      /** Event */ evt,\n      /** Touch */ touch,\n      /** HTMLElement */ target\n    ) {\n      let _this = this,\n        el = _this.el,\n        options = _this.options,\n        ownerDocument = el.ownerDocument,\n        dragStartFn;\n\n      if (target && !dragEl && target.parentNode === el) {\n        let dragRect = getRect(target);\n        rootEl = el;\n        dragEl = target;\n        parentEl = dragEl.parentNode;\n        nextEl = dragEl.nextSibling;\n        lastDownEl = target;\n        activeGroup = options.group;\n\n        Sortable.dragged = dragEl;\n\n        // PORTME: added offset\n        let offset = 0;\n\n        const targetBoundingRect = target.getBoundingClientRect()\n\n        if (targetBoundingRect.left + 95 < ((touch || evt).clientX)) {\n            offset = ((touch || evt).clientX) - targetBoundingRect.left - (\n                95 / 2\n            )\n        }\n\n        tapEvt = {\n          target: dragEl,\n          clientX: (touch || evt).clientX - offset,\n          clientY: (touch || evt).clientY,\n        };\n\n        tapDistanceLeft = tapEvt.clientX - dragRect.left;\n        tapDistanceTop = tapEvt.clientY - dragRect.top;\n\n        this._lastX = (touch || evt).clientX - offset;\n        this._lastY = (touch || evt).clientY;\n\n        dragEl.style[\"will-change\"] = \"all\";\n\n        dragStartFn = function () {\n          pluginEvent(\"delayEnded\", _this, { evt });\n          if (Sortable.eventCanceled) {\n            _this._onDrop();\n            return;\n          }\n          // Delayed drag has been triggered\n          // we can re-enable the events: touchmove/mousemove\n          _this._disableDelayedDragEvents();\n\n          if (!FireFox && _this.nativeDraggable) {\n            dragEl.draggable = true;\n          }\n\n          // Bind the events: dragstart/dragend\n          _this._triggerDragStart(evt, touch);\n\n          // Drag start event\n          _dispatchEvent({\n            sortable: _this,\n            name: \"choose\",\n            originalEvent: evt,\n          });\n\n          // Chosen item\n          toggleClass(dragEl, options.chosenClass, true);\n        };\n\n        // Disable \"draggable\"\n        options.ignore.split(\",\").forEach(function (criteria) {\n          find(dragEl, criteria.trim(), _disableDraggable);\n        });\n\n        on(ownerDocument, \"dragover\", nearestEmptyInsertDetectEvent);\n        on(ownerDocument, \"mousemove\", nearestEmptyInsertDetectEvent);\n        on(ownerDocument, \"touchmove\", nearestEmptyInsertDetectEvent);\n\n        on(ownerDocument, \"mouseup\", _this._onDrop);\n        on(ownerDocument, \"touchend\", _this._onDrop);\n        on(ownerDocument, \"touchcancel\", _this._onDrop);\n\n        // Make dragEl draggable (must be before delay for FireFox)\n        if (FireFox && this.nativeDraggable) {\n          this.options.touchStartThreshold = 4;\n          dragEl.draggable = true;\n        }\n\n        pluginEvent(\"delayStart\", this, { evt });\n\n        // Delay is impossible for native DnD in Edge or IE\n        if (\n          options.delay &&\n          (!options.delayOnTouchOnly || touch) &&\n          (!this.nativeDraggable || !(Edge || IE11OrLess))\n        ) {\n          if (Sortable.eventCanceled) {\n            this._onDrop();\n            return;\n          }\n          // If the user moves the pointer or let go the click or touch\n          // before the delay has been reached:\n          // disable the delayed drag\n          on(ownerDocument, \"mouseup\", _this._disableDelayedDrag);\n          on(ownerDocument, \"touchend\", _this._disableDelayedDrag);\n          on(ownerDocument, \"touchcancel\", _this._disableDelayedDrag);\n          on(ownerDocument, \"mousemove\", _this._delayedDragTouchMoveHandler);\n          on(ownerDocument, \"touchmove\", _this._delayedDragTouchMoveHandler);\n          options.supportPointer &&\n            on(\n              ownerDocument,\n              \"pointermove\",\n              _this._delayedDragTouchMoveHandler\n            );\n\n          _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n        } else {\n          dragStartFn();\n        }\n      }\n    },\n\n    _delayedDragTouchMoveHandler: function (/** TouchEvent|PointerEvent **/ e) {\n      let touch = e.touches ? e.touches[0] : e;\n      if (\n        Math.max(\n          Math.abs(touch.clientX - this._lastX),\n          Math.abs(touch.clientY - this._lastY)\n        ) >=\n        Math.floor(\n          this.options.touchStartThreshold /\n            ((this.nativeDraggable && window.devicePixelRatio) || 1)\n        )\n      ) {\n        this._disableDelayedDrag();\n      }\n    },\n\n    _disableDelayedDrag: function () {\n      dragEl && _disableDraggable(dragEl);\n      clearTimeout(this._dragStartTimer);\n\n      this._disableDelayedDragEvents();\n    },\n\n    _disableDelayedDragEvents: function () {\n      let ownerDocument = this.el.ownerDocument;\n      off(ownerDocument, \"mouseup\", this._disableDelayedDrag);\n      off(ownerDocument, \"touchend\", this._disableDelayedDrag);\n      off(ownerDocument, \"touchcancel\", this._disableDelayedDrag);\n      off(ownerDocument, \"mousemove\", this._delayedDragTouchMoveHandler);\n      off(ownerDocument, \"touchmove\", this._delayedDragTouchMoveHandler);\n      off(ownerDocument, \"pointermove\", this._delayedDragTouchMoveHandler);\n    },\n\n    _triggerDragStart: function (/** Event */ evt, /** Touch */ touch) {\n      touch = touch || (evt.pointerType == \"touch\" && evt);\n\n      if (!this.nativeDraggable || touch) {\n        if (this.options.supportPointer) {\n          on(document, \"pointermove\", this._onTouchMove);\n        } else if (touch) {\n          on(document, \"touchmove\", this._onTouchMove);\n        } else {\n          on(document, \"mousemove\", this._onTouchMove);\n        }\n      } else {\n        on(dragEl, \"dragend\", this);\n        on(rootEl, \"dragstart\", this._onDragStart);\n      }\n\n      try {\n        if (document.selection) {\n          // Timeout neccessary for IE9\n          _nextTick(function () {\n            document.selection.empty();\n          });\n        } else {\n          window.getSelection().removeAllRanges();\n        }\n      } catch (err) {}\n    },\n\n    _dragStarted: function (fallback, evt) {\n      awaitingDragStarted = false;\n      if (rootEl && dragEl) {\n        pluginEvent(\"dragStarted\", this, { evt });\n\n        if (this.nativeDraggable) {\n          on(document, \"dragover\", _checkOutsideTargetEl);\n        }\n        let options = this.options;\n\n        // Apply effect\n        !fallback && toggleClass(dragEl, options.dragClass, false);\n        toggleClass(dragEl, options.ghostClass, true);\n\n        Sortable.active = this;\n\n        fallback && this._appendGhost();\n\n        // Drag start event\n        _dispatchEvent({\n          sortable: this,\n          name: \"start\",\n          originalEvent: evt,\n        });\n      } else {\n        this._nulling();\n      }\n    },\n\n    _emulateDragOver: function () {\n      if (touchEvt) {\n        this._lastX = touchEvt.clientX;\n        this._lastY = touchEvt.clientY;\n\n        _hideGhostForTarget();\n\n        let target = document.elementFromPoint(\n          touchEvt.clientX,\n          touchEvt.clientY\n        );\n        let parent = target;\n\n        while (target && target.shadowRoot) {\n          target = target.shadowRoot.elementFromPoint(\n            touchEvt.clientX,\n            touchEvt.clientY\n          );\n          if (target === parent) break;\n          parent = target;\n        }\n\n        dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n        if (parent) {\n          do {\n            if (parent[expando]) {\n              let inserted;\n\n              inserted = parent[expando]._onDragOver({\n                clientX: touchEvt.clientX,\n                clientY: touchEvt.clientY,\n                target: target,\n                rootEl: parent,\n              });\n\n              if (inserted && !this.options.dragoverBubble) {\n                break;\n              }\n            }\n\n            target = parent; // store last element\n          } while (\n            /* jshint boss:true */\n            (parent = parent.parentNode)\n          );\n        }\n\n        _unhideGhostForTarget();\n      }\n    },\n\n    _onTouchMove: function (/**TouchEvent*/ evt) {\n      if (tapEvt) {\n        let options = this.options,\n          fallbackTolerance = options.fallbackTolerance,\n          fallbackOffset = options.fallbackOffset,\n          touch = evt.touches ? evt.touches[0] : evt,\n          ghostMatrix = ghostEl && matrix(ghostEl, true),\n          scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n          scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n          relativeScrollOffset =\n            PositionGhostAbsolutely &&\n            ghostRelativeParent &&\n            getRelativeScrollOffset(ghostRelativeParent),\n          dx =\n            (touch.clientX - tapEvt.clientX + fallbackOffset.x) /\n              (scaleX || 1) +\n            (relativeScrollOffset\n              ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0]\n              : 0) /\n              (scaleX || 1),\n          dy =\n            (touch.clientY - tapEvt.clientY + fallbackOffset.y) /\n              (scaleY || 1) +\n            (relativeScrollOffset\n              ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1]\n              : 0) /\n              (scaleY || 1);\n\n        // only set the status to dragging, when we are actually dragging\n        if (!Sortable.active && !awaitingDragStarted) {\n          if (\n            fallbackTolerance &&\n            Math.max(\n              Math.abs(touch.clientX - this._lastX),\n              Math.abs(touch.clientY - this._lastY)\n            ) < fallbackTolerance\n          ) {\n            return;\n          }\n          this._onDragStart(evt, true);\n        }\n\n        if (ghostEl) {\n          if (ghostMatrix) {\n            ghostMatrix.e += dx - (lastDx || 0);\n            ghostMatrix.f += dy - (lastDy || 0);\n          } else {\n            ghostMatrix = {\n              a: 1,\n              b: 0,\n              c: 0,\n              d: 1,\n              e: dx,\n              f: dy,\n            };\n          }\n\n          let cssMatrix = `matrix(${ghostMatrix.a},${ghostMatrix.b},${ghostMatrix.c},${ghostMatrix.d},${ghostMatrix.e},${ghostMatrix.f})`;\n\n          css(ghostEl, \"webkitTransform\", cssMatrix);\n          css(ghostEl, \"mozTransform\", cssMatrix);\n          css(ghostEl, \"msTransform\", cssMatrix);\n          css(ghostEl, \"transform\", cssMatrix);\n\n          lastDx = dx;\n          lastDy = dy;\n\n          touchEvt = touch;\n        }\n\n        evt.cancelable && evt.preventDefault();\n      }\n    },\n\n    _appendGhost: function () {\n      // Bug if using scale(): https://stackoverflow.com/questions/2637058\n      // Not being adjusted for\n      if (!ghostEl) {\n        let container = this.options.fallbackOnBody ? document.body : rootEl,\n          rect = getRect(\n            dragEl,\n            true,\n            PositionGhostAbsolutely,\n            true,\n            container\n          ),\n          options = this.options;\n\n        // Position absolutely\n        if (PositionGhostAbsolutely) {\n          // Get relatively positioned parent\n          ghostRelativeParent = container;\n\n          while (\n            css(ghostRelativeParent, \"position\") === \"static\" &&\n            css(ghostRelativeParent, \"transform\") === \"none\" &&\n            ghostRelativeParent !== document\n          ) {\n            ghostRelativeParent = ghostRelativeParent.parentNode;\n          }\n\n          if (\n            ghostRelativeParent !== document.body &&\n            ghostRelativeParent !== document.documentElement\n          ) {\n            if (ghostRelativeParent === document)\n              ghostRelativeParent = getWindowScrollingElement();\n\n            rect.top += ghostRelativeParent.scrollTop;\n            rect.left += ghostRelativeParent.scrollLeft;\n          } else {\n            ghostRelativeParent = getWindowScrollingElement();\n          }\n          ghostRelativeParentInitialScroll = getRelativeScrollOffset(\n            ghostRelativeParent\n          );\n        }\n\n        ghostEl = dragEl.cloneNode(true);\n\n        toggleClass(ghostEl, options.ghostClass, false);\n        toggleClass(ghostEl, options.fallbackClass, true);\n        toggleClass(ghostEl, options.dragClass, true);\n\n        css(ghostEl, \"transition\", \"\");\n        css(ghostEl, \"transform\", \"\");\n\n        css(ghostEl, \"box-sizing\", \"border-box\");\n        css(ghostEl, \"margin\", 0);\n        css(ghostEl, \"top\", rect.top);\n        css(ghostEl, \"left\", rect.left);\n        css(ghostEl, \"width\", rect.width);\n        css(ghostEl, \"height\", rect.height);\n        css(ghostEl, \"opacity\", \"0.8\");\n        css(\n          ghostEl,\n          \"position\",\n          PositionGhostAbsolutely ? \"absolute\" : \"fixed\"\n        );\n        css(ghostEl, \"zIndex\", \"100000\");\n        css(ghostEl, \"pointerEvents\", \"none\");\n\n        Sortable.ghost = ghostEl;\n\n        container.appendChild(ghostEl);\n\n        // Set transform-origin\n        css(\n          ghostEl,\n          \"transform-origin\",\n          (tapDistanceLeft / parseInt(ghostEl.style.width)) * 100 +\n            \"% \" +\n            (tapDistanceTop / parseInt(ghostEl.style.height)) * 100 +\n            \"%\"\n        );\n      }\n    },\n\n    _onDragStart: function (/**Event*/ evt, /**boolean*/ fallback) {\n      let _this = this;\n      let dataTransfer = evt.dataTransfer;\n      let options = _this.options;\n\n      pluginEvent(\"dragStart\", this, { evt });\n      if (Sortable.eventCanceled) {\n        this._onDrop();\n        return;\n      }\n\n      pluginEvent(\"setupClone\", this);\n      if (!Sortable.eventCanceled) {\n        cloneEl = clone(dragEl);\n\n        cloneEl.draggable = false;\n        cloneEl.style[\"will-change\"] = \"\";\n\n        this._hideClone();\n\n        toggleClass(cloneEl, this.options.chosenClass, false);\n        Sortable.clone = cloneEl;\n      }\n\n      // #1143: IFrame support workaround\n      _this.cloneId = _nextTick(function () {\n        pluginEvent(\"clone\", _this);\n        if (Sortable.eventCanceled) return;\n\n        if (!_this.options.removeCloneOnHide) {\n          rootEl.insertBefore(cloneEl, dragEl);\n        }\n        _this._hideClone();\n\n        _dispatchEvent({\n          sortable: _this,\n          name: \"clone\",\n        });\n      });\n\n      !fallback && toggleClass(dragEl, options.dragClass, true);\n\n      // Set proper drop events\n      if (fallback) {\n        ignoreNextClick = true;\n        _this._loopId = setInterval(_this._emulateDragOver, 50);\n      } else {\n        // Undo what was set in _prepareDragStart before drag started\n        off(document, \"mouseup\", _this._onDrop);\n        off(document, \"touchend\", _this._onDrop);\n        off(document, \"touchcancel\", _this._onDrop);\n\n        if (dataTransfer) {\n          dataTransfer.effectAllowed = \"move\";\n          options.setData && options.setData.call(_this, dataTransfer, dragEl);\n        }\n\n        on(document, \"drop\", _this);\n\n        // #1276 fix:\n        css(dragEl, \"transform\", \"translateZ(0)\");\n      }\n\n      awaitingDragStarted = true;\n\n      _this._dragStartId = _nextTick(\n        _this._dragStarted.bind(_this, fallback, evt)\n      );\n      on(document, \"selectstart\", _this);\n\n      moved = true;\n\n      if (Safari) {\n        css(document.body, \"user-select\", \"none\");\n      }\n    },\n\n    // Returns true - if no further action is needed (either inserted or another condition)\n    _onDragOver: function (/**Event*/ evt) {\n      let el = this.el,\n        target = evt.target,\n        dragRect,\n        targetRect,\n        revert,\n        options = this.options,\n        group = options.group,\n        activeSortable = Sortable.active,\n        isOwner = activeGroup === group,\n        canSort = options.sort,\n        fromSortable = putSortable || activeSortable,\n        vertical,\n        _this = this,\n        completedFired = false;\n\n      if (_silent) return;\n\n      function dragOverEvent(name, extra) {\n        pluginEvent(name, _this, {\n          evt,\n          isOwner,\n          axis: vertical ? \"vertical\" : \"horizontal\",\n          revert,\n          dragRect,\n          targetRect,\n          canSort,\n          fromSortable,\n          target,\n          completed,\n          onMove(target, after) {\n            return onMove(\n              rootEl,\n              el,\n              dragEl,\n              dragRect,\n              target,\n              getRect(target),\n              evt,\n              after\n            );\n          },\n          changed,\n          ...extra,\n        });\n      }\n\n      // Capture animation state\n      function capture() {\n        dragOverEvent(\"dragOverAnimationCapture\");\n\n        _this.captureAnimationState();\n        if (_this !== fromSortable) {\n          fromSortable.captureAnimationState();\n        }\n      }\n\n      // Return invocation when dragEl is inserted (or completed)\n      function completed(insertion) {\n        dragOverEvent(\"dragOverCompleted\", { insertion });\n\n        if (insertion) {\n          // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n          if (isOwner) {\n            activeSortable._hideClone();\n          } else {\n            activeSortable._showClone(_this);\n          }\n\n          if (_this !== fromSortable) {\n            // Set ghost class to new sortable's ghost class\n            toggleClass(\n              dragEl,\n              putSortable\n                ? putSortable.options.ghostClass\n                : activeSortable.options.ghostClass,\n              false\n            );\n            toggleClass(dragEl, options.ghostClass, true);\n          }\n\n          if (putSortable !== _this && _this !== Sortable.active) {\n            putSortable = _this;\n          } else if (_this === Sortable.active && putSortable) {\n            putSortable = null;\n          }\n\n          // Animation\n          if (fromSortable === _this) {\n            _this._ignoreWhileAnimating = target;\n          }\n          _this.animateAll(function () {\n            dragOverEvent(\"dragOverAnimationComplete\");\n            _this._ignoreWhileAnimating = null;\n          });\n          if (_this !== fromSortable) {\n            fromSortable.animateAll();\n            fromSortable._ignoreWhileAnimating = null;\n          }\n        }\n\n        // Null lastTarget if it is not inside a previously swapped element\n        if (\n          (target === dragEl && !dragEl.animated) ||\n          (target === el && !target.animated)\n        ) {\n          lastTarget = null;\n        }\n\n        // no bubbling and not fallback\n        if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n          dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n          // Do not detect for empty insert if already inserted\n          !insertion && nearestEmptyInsertDetectEvent(evt);\n        }\n\n        !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n\n        return (completedFired = true);\n      }\n\n      // Call when dragEl has been inserted\n      function changed() {\n        newIndex = index(dragEl);\n        newDraggableIndex = index(dragEl, options.draggable);\n        _dispatchEvent({\n          sortable: _this,\n          name: \"change\",\n          toEl: el,\n          newIndex,\n          newDraggableIndex,\n          originalEvent: evt,\n        });\n      }\n\n      if (evt.preventDefault !== void 0) {\n        evt.cancelable && evt.preventDefault();\n      }\n\n      target = closest(target, options.draggable, el, true);\n\n      dragOverEvent(\"dragOver\");\n      if (Sortable.eventCanceled) return completedFired;\n\n      if (\n        dragEl.contains(evt.target) ||\n        (target.animated && target.animatingX && target.animatingY) ||\n        _this._ignoreWhileAnimating === target\n      ) {\n        return completed(false);\n      }\n\n      ignoreNextClick = false;\n\n      if (\n        activeSortable &&\n        !options.disabled &&\n        (isOwner\n          ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n          : putSortable === this ||\n            ((this.lastPutMode = activeGroup.checkPull(\n              this,\n              activeSortable,\n              dragEl,\n              evt\n            )) &&\n              group.checkPut(this, activeSortable, dragEl, evt)))\n      ) {\n        vertical = this._getDirection(evt, target) === \"vertical\";\n\n        dragRect = getRect(dragEl);\n\n        dragOverEvent(\"dragOverValid\");\n        if (Sortable.eventCanceled) return completedFired;\n\n        if (revert) {\n          parentEl = rootEl; // actualization\n          capture();\n\n          this._hideClone();\n\n          dragOverEvent(\"revert\");\n\n          if (!Sortable.eventCanceled) {\n            if (nextEl) {\n              rootEl.insertBefore(dragEl, nextEl);\n            } else {\n              rootEl.appendChild(dragEl);\n            }\n          }\n\n          return completed(true);\n        }\n\n        let elLastChild = lastChild(el, options.draggable);\n\n        if (\n          !elLastChild ||\n          (_ghostIsLast(evt, vertical, this) && !elLastChild.animated)\n        ) {\n          // If already at end of list: Do not insert\n          if (elLastChild === dragEl) {\n            return completed(false);\n          }\n\n          // assign target only if condition is true\n          if (elLastChild && el === evt.target) {\n            target = elLastChild;\n          }\n\n          if (target) {\n            targetRect = getRect(target);\n          }\n\n          if (\n            onMove(\n              rootEl,\n              el,\n              dragEl,\n              dragRect,\n              target,\n              targetRect,\n              evt,\n              !!target\n            ) !== false\n          ) {\n            capture();\n            el.appendChild(dragEl);\n            parentEl = el; // actualization\n\n            changed();\n            return completed(true);\n          }\n        } else if (target.parentNode === el) {\n          targetRect = getRect(target);\n          let direction = 0,\n            targetBeforeFirstSwap,\n            differentLevel = dragEl.parentNode !== el,\n            differentRowCol = !_dragElInRowColumn(\n              (dragEl.animated && dragEl.toRect) || dragRect,\n              (target.animated && target.toRect) || targetRect,\n              vertical\n            ),\n            side1 = vertical ? \"top\" : \"left\",\n            scrolledPastTop =\n              isScrolledPast(target, \"top\", \"top\") ||\n              isScrolledPast(dragEl, \"top\", \"top\"),\n            scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n          if (lastTarget !== target) {\n            targetBeforeFirstSwap = targetRect[side1];\n            pastFirstInvertThresh = false;\n            isCircumstantialInvert =\n              (!differentRowCol && options.invertSwap) || differentLevel;\n          }\n\n          direction = _getSwapDirection(\n            evt,\n            target,\n            targetRect,\n            vertical,\n            differentRowCol ? 1 : options.swapThreshold,\n            options.invertedSwapThreshold == null\n              ? options.swapThreshold\n              : options.invertedSwapThreshold,\n            isCircumstantialInvert,\n            lastTarget === target\n          );\n\n          let sibling;\n\n          if (direction !== 0) {\n            // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n            let dragIndex = index(dragEl);\n\n            do {\n              dragIndex -= direction;\n              sibling = parentEl.children[dragIndex];\n            } while (\n              sibling &&\n              (css(sibling, \"display\") === \"none\" || sibling === ghostEl)\n            );\n          }\n          // If dragEl is already beside target: Do not insert\n          if (direction === 0 || sibling === target) {\n            return completed(false);\n          }\n\n          lastTarget = target;\n\n          lastDirection = direction;\n\n          let nextSibling = target.nextElementSibling,\n            after = false;\n\n          after = direction === 1;\n\n          let moveVector = onMove(\n            rootEl,\n            el,\n            dragEl,\n            dragRect,\n            target,\n            targetRect,\n            evt,\n            after\n          );\n\n          if (moveVector !== false) {\n            if (moveVector === 1 || moveVector === -1) {\n              after = moveVector === 1;\n            }\n\n            _silent = true;\n            setTimeout(_unsilent, 30);\n\n            capture();\n\n            if (after && !nextSibling) {\n              el.appendChild(dragEl);\n            } else {\n              target.parentNode.insertBefore(\n                dragEl,\n                after ? nextSibling : target\n              );\n            }\n\n            // Undo chrome's scroll adjustment (has no effect on other browsers)\n            if (scrolledPastTop) {\n              scrollBy(\n                scrolledPastTop,\n                0,\n                scrollBefore - scrolledPastTop.scrollTop\n              );\n            }\n\n            parentEl = dragEl.parentNode; // actualization\n\n            // must be done before animation\n            if (\n              targetBeforeFirstSwap !== undefined &&\n              !isCircumstantialInvert\n            ) {\n              targetMoveDistance = Math.abs(\n                targetBeforeFirstSwap - getRect(target)[side1]\n              );\n            }\n            changed();\n\n            return completed(true);\n          }\n        }\n\n        if (el.contains(dragEl)) {\n          return completed(false);\n        }\n      }\n\n      return false;\n    },\n\n    _ignoreWhileAnimating: null,\n\n    _offMoveEvents: function () {\n      off(document, \"mousemove\", this._onTouchMove);\n      off(document, \"touchmove\", this._onTouchMove);\n      off(document, \"pointermove\", this._onTouchMove);\n      off(document, \"dragover\", nearestEmptyInsertDetectEvent);\n      off(document, \"mousemove\", nearestEmptyInsertDetectEvent);\n      off(document, \"touchmove\", nearestEmptyInsertDetectEvent);\n    },\n\n    _offUpEvents: function () {\n      let ownerDocument = this.el.ownerDocument;\n\n      off(ownerDocument, \"mouseup\", this._onDrop);\n      off(ownerDocument, \"touchend\", this._onDrop);\n      off(ownerDocument, \"pointerup\", this._onDrop);\n      off(ownerDocument, \"touchcancel\", this._onDrop);\n      off(document, \"selectstart\", this);\n    },\n\n    _onDrop: function (/**Event*/ evt) {\n      let el = this.el,\n        options = this.options;\n\n      // Get the index of the dragged element within its parent\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n\n      pluginEvent(\"drop\", this, {\n        evt,\n      });\n\n      parentEl = dragEl && dragEl.parentNode;\n\n      // Get again after plugin event\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n\n      if (Sortable.eventCanceled) {\n        this._nulling();\n        return;\n      }\n\n      awaitingDragStarted = false;\n      isCircumstantialInvert = false;\n      pastFirstInvertThresh = false;\n\n      clearInterval(this._loopId);\n\n      clearTimeout(this._dragStartTimer);\n\n      _cancelNextTick(this.cloneId);\n      _cancelNextTick(this._dragStartId);\n\n      // Unbind events\n      if (this.nativeDraggable) {\n        off(document, \"drop\", this);\n        off(el, \"dragstart\", this._onDragStart);\n      }\n      this._offMoveEvents();\n      this._offUpEvents();\n\n      if (Safari) {\n        css(document.body, \"user-select\", \"\");\n      }\n\n      css(dragEl, \"transform\", \"\");\n\n      if (evt) {\n        if (moved) {\n          evt.cancelable && evt.preventDefault();\n          !options.dropBubble && evt.stopPropagation();\n        }\n\n        ghostEl &&\n          ghostEl.parentNode &&\n          ghostEl.parentNode.removeChild(ghostEl);\n\n        if (\n          rootEl === parentEl ||\n          (putSortable && putSortable.lastPutMode !== \"clone\")\n        ) {\n          // Remove clone(s)\n          cloneEl &&\n            cloneEl.parentNode &&\n            cloneEl.parentNode.removeChild(cloneEl);\n        }\n\n        if (dragEl) {\n          if (this.nativeDraggable) {\n            off(dragEl, \"dragend\", this);\n          }\n\n          _disableDraggable(dragEl);\n          dragEl.style[\"will-change\"] = \"\";\n\n          // Remove classes\n          // ghostClass is added in dragStarted\n          if (moved && !awaitingDragStarted) {\n            toggleClass(\n              dragEl,\n              putSortable\n                ? putSortable.options.ghostClass\n                : this.options.ghostClass,\n              false\n            );\n          }\n          toggleClass(dragEl, this.options.chosenClass, false);\n\n          // Drag stop event\n          _dispatchEvent({\n            sortable: this,\n            name: \"unchoose\",\n            toEl: parentEl,\n            newIndex: null,\n            newDraggableIndex: null,\n            originalEvent: evt,\n          });\n\n          if (rootEl !== parentEl) {\n            if (newIndex >= 0) {\n              // Add event\n              _dispatchEvent({\n                rootEl: parentEl,\n                name: \"add\",\n                toEl: parentEl,\n                fromEl: rootEl,\n                originalEvent: evt,\n              });\n\n              // Remove event\n              _dispatchEvent({\n                sortable: this,\n                name: \"remove\",\n                toEl: parentEl,\n                originalEvent: evt,\n              });\n\n              // drag from one list and drop into another\n              _dispatchEvent({\n                rootEl: parentEl,\n                name: \"sort\",\n                toEl: parentEl,\n                fromEl: rootEl,\n                originalEvent: evt,\n              });\n\n              _dispatchEvent({\n                sortable: this,\n                name: \"sort\",\n                toEl: parentEl,\n                originalEvent: evt,\n              });\n            }\n\n            putSortable && putSortable.save();\n          } else {\n            if (newIndex !== oldIndex) {\n              if (newIndex >= 0) {\n                // drag & drop within the same list\n                _dispatchEvent({\n                  sortable: this,\n                  name: \"update\",\n                  toEl: parentEl,\n                  originalEvent: evt,\n                });\n\n                _dispatchEvent({\n                  sortable: this,\n                  name: \"sort\",\n                  toEl: parentEl,\n                  originalEvent: evt,\n                });\n              }\n            }\n          }\n\n          if (Sortable.active) {\n            /* jshint eqnull:true */\n            if (newIndex == null || newIndex === -1) {\n              newIndex = oldIndex;\n              newDraggableIndex = oldDraggableIndex;\n            }\n\n            _dispatchEvent({\n              sortable: this,\n              name: \"end\",\n              toEl: parentEl,\n              originalEvent: evt,\n            });\n\n            // Save sorting\n            this.save();\n          } else {\n              // PORTME: added the dispatch block\n            _dispatchEvent({\n              sortable: this,\n              name: 'end',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n          }\n        }\n      }\n      this._nulling();\n    },\n\n    _nulling: function () {\n      pluginEvent(\"nulling\", this);\n\n      rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n\n      savedInputChecked.forEach(function (el) {\n        el.checked = true;\n      });\n\n      savedInputChecked.length = lastDx = lastDy = 0;\n    },\n\n    handleEvent: function (/**Event*/ evt) {\n      switch (evt.type) {\n        case \"drop\":\n        case \"dragend\":\n          this._onDrop(evt);\n          break;\n\n        case \"dragenter\":\n        case \"dragover\":\n          if (dragEl) {\n            this._onDragOver(evt);\n            _globalDragOver(evt);\n          }\n          break;\n\n        case \"selectstart\":\n          evt.preventDefault();\n          break;\n      }\n    },\n\n    /**\n     * Serializes the item into an array of string.\n     * @returns {String[]}\n     */\n    toArray: function () {\n      let order = [],\n        el,\n        children = this.el.children,\n        i = 0,\n        n = children.length,\n        options = this.options;\n\n      for (; i < n; i++) {\n        el = children[i];\n        if (closest(el, options.draggable, this.el, false)) {\n          order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n        }\n      }\n\n      return order;\n    },\n\n    /**\n     * Sorts the elements according to the array.\n     * @param  {String[]}  order  order of the items\n     */\n    sort: function (order) {\n      let items = {},\n        rootEl = this.el;\n\n      this.toArray().forEach(function (id, i) {\n        let el = rootEl.children[i];\n\n        if (closest(el, this.options.draggable, rootEl, false)) {\n          items[id] = el;\n        }\n      }, this);\n\n      order.forEach(function (id) {\n        if (items[id]) {\n          rootEl.removeChild(items[id]);\n          rootEl.appendChild(items[id]);\n        }\n      });\n    },\n\n    /**\n     * Save the current sorting\n     */\n    save: function () {\n      let store = this.options.store;\n      store && store.set && store.set(this);\n    },\n\n    /**\n     * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n     * @param   {HTMLElement}  el\n     * @param   {String}       [selector]  default: `options.draggable`\n     * @returns {HTMLElement|null}\n     */\n    closest: function (el, selector) {\n      return closest(el, selector || this.options.draggable, this.el, false);\n    },\n\n    /**\n     * Set/get option\n     * @param   {string} name\n     * @param   {*}      [value]\n     * @returns {*}\n     */\n    option: function (name, value) {\n      let options = this.options;\n\n      if (value === void 0) {\n        return options[name];\n      } else {\n        let modifiedValue = PluginManager.modifyOption(this, name, value);\n        if (typeof modifiedValue !== \"undefined\") {\n          options[name] = modifiedValue;\n        } else {\n          options[name] = value;\n        }\n\n        if (name === \"group\") {\n          _prepareGroup(options);\n        }\n      }\n    },\n\n    /**\n     * Destroy\n     */\n    destroy: function () {\n      pluginEvent(\"destroy\", this);\n      let el = this.el;\n\n      el[expando] = null;\n\n      off(el, \"mousedown\", this._onTapStart);\n      off(el, \"touchstart\", this._onTapStart);\n      off(el, \"pointerdown\", this._onTapStart);\n\n      if (this.nativeDraggable) {\n        off(el, \"dragover\", this);\n        off(el, \"dragenter\", this);\n      }\n      // Remove draggable attributes\n      Array.prototype.forEach.call(\n        el.querySelectorAll(\"[draggable]\"),\n        function (el) {\n          el.removeAttribute(\"draggable\");\n        }\n      );\n\n      this._onDrop();\n\n      this._disableDelayedDragEvents();\n\n      sortables.splice(sortables.indexOf(this.el), 1);\n\n      this.el = el = null;\n    },\n\n    _hideClone: function () {\n      if (!cloneHidden) {\n        pluginEvent(\"hideClone\", this);\n        if (Sortable.eventCanceled) return;\n\n        css(cloneEl, \"display\", \"none\");\n        if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n          cloneEl.parentNode.removeChild(cloneEl);\n        }\n        cloneHidden = true;\n      }\n    },\n\n    _showClone: function (putSortable) {\n      if (putSortable.lastPutMode !== \"clone\") {\n        this._hideClone();\n        return;\n      }\n\n      if (cloneHidden) {\n        pluginEvent(\"showClone\", this);\n        if (Sortable.eventCanceled) return;\n\n        // show clone at dragEl or original position\n        if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n          rootEl.insertBefore(cloneEl, dragEl);\n        } else if (nextEl) {\n          rootEl.insertBefore(cloneEl, nextEl);\n        } else {\n          rootEl.appendChild(cloneEl);\n        }\n\n        if (this.options.group.revertClone) {\n          this.animate(dragEl, cloneEl);\n        }\n\n        css(cloneEl, \"display\", \"\");\n        cloneHidden = false;\n      }\n    },\n  };\n\n  function _globalDragOver(/**Event*/ evt) {\n    if (evt.dataTransfer) {\n      evt.dataTransfer.dropEffect = \"move\";\n    }\n    evt.cancelable && evt.preventDefault();\n  }\n\n  function onMove(\n    fromEl,\n    toEl,\n    dragEl,\n    dragRect,\n    targetEl,\n    targetRect,\n    originalEvent,\n    willInsertAfter\n  ) {\n    let evt,\n      sortable = fromEl[expando],\n      onMoveFn = sortable.options.onMove,\n      retVal;\n    // Support for new CustomEvent feature\n    if (window.CustomEvent && !IE11OrLess && !Edge) {\n      evt = new CustomEvent(\"move\", {\n        bubbles: true,\n        cancelable: true,\n      });\n    } else {\n      evt = document.createEvent(\"Event\");\n      evt.initEvent(\"move\", true, true);\n    }\n\n    evt.to = toEl;\n    evt.from = fromEl;\n    evt.dragged = dragEl;\n    evt.draggedRect = dragRect;\n    evt.related = targetEl || toEl;\n    evt.relatedRect = targetRect || getRect(toEl);\n    evt.willInsertAfter = willInsertAfter;\n\n    evt.originalEvent = originalEvent;\n\n    fromEl.dispatchEvent(evt);\n\n    if (onMoveFn) {\n      retVal = onMoveFn.call(sortable, evt, originalEvent);\n    }\n\n    return retVal;\n  }\n\n  function _disableDraggable(el) {\n    el.draggable = false;\n  }\n\n  function _unsilent() {\n    _silent = false;\n  }\n\n  function _ghostIsLast(evt, vertical, sortable) {\n    let rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n    const spacer = 10;\n\n    return vertical\n      ? evt.clientX > rect.right + spacer ||\n          (evt.clientX <= rect.right &&\n            evt.clientY > rect.bottom &&\n            evt.clientX >= rect.left)\n      : (evt.clientX > rect.right && evt.clientY > rect.top) ||\n          (evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer);\n  }\n\n  function _getSwapDirection(\n    evt,\n    target,\n    targetRect,\n    vertical,\n    swapThreshold,\n    invertedSwapThreshold,\n    invertSwap,\n    isLastTarget\n  ) {\n    let mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n      targetLength = vertical ? targetRect.height : targetRect.width,\n      targetS1 = vertical ? targetRect.top : targetRect.left,\n      targetS2 = vertical ? targetRect.bottom : targetRect.right,\n      invert = false;\n\n    if (!invertSwap) {\n      // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n      if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n        // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n        // check if past first invert threshold on side opposite of lastDirection\n        if (\n          !pastFirstInvertThresh &&\n          (lastDirection === 1\n            ? mouseOnAxis >\n              targetS1 + (targetLength * invertedSwapThreshold) / 2\n            : mouseOnAxis <\n              targetS2 - (targetLength * invertedSwapThreshold) / 2)\n        ) {\n          // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n          pastFirstInvertThresh = true;\n        }\n\n        if (!pastFirstInvertThresh) {\n          // dragEl shadow (target move distance shadow)\n          if (\n            lastDirection === 1\n              ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n              : mouseOnAxis > targetS2 - targetMoveDistance\n          ) {\n            return -lastDirection;\n          }\n        } else {\n          invert = true;\n        }\n      } else {\n        // Regular\n        if (\n          mouseOnAxis > targetS1 + (targetLength * (1 - swapThreshold)) / 2 &&\n          mouseOnAxis < targetS2 - (targetLength * (1 - swapThreshold)) / 2\n        ) {\n          return _getInsertDirection(target);\n        }\n      }\n    }\n\n    invert = invert || invertSwap;\n\n    if (invert) {\n      // Invert of regular\n      if (\n        mouseOnAxis < targetS1 + (targetLength * invertedSwapThreshold) / 2 ||\n        mouseOnAxis > targetS2 - (targetLength * invertedSwapThreshold) / 2\n      ) {\n        return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n      }\n    }\n\n    return 0;\n  }\n\n  /**\n   * Gets the direction dragEl must be swapped relative to target in order to make it\n   * seem that dragEl has been \"inserted\" into that element's position\n   * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\n   * @return {Number}                   Direction dragEl must be swapped\n   */\n  function _getInsertDirection(target) {\n    if (index(dragEl) < index(target)) {\n      return 1;\n    } else {\n      return -1;\n    }\n  }\n\n  /**\n   * Generate id\n   * @param   {HTMLElement} el\n   * @returns {String}\n   * @private\n   */\n  function _generateId(el) {\n    let str = el.tagName + el.className + el.src + el.href + el.textContent,\n      i = str.length,\n      sum = 0;\n\n    while (i--) {\n      sum += str.charCodeAt(i);\n    }\n\n    return sum.toString(36);\n  }\n\n  function _saveInputCheckedState(root) {\n    savedInputChecked.length = 0;\n\n    let inputs = root.getElementsByTagName(\"input\");\n    let idx = inputs.length;\n\n    while (idx--) {\n      let el = inputs[idx];\n      el.checked && savedInputChecked.push(el);\n    }\n  }\n\n  function _nextTick(fn) {\n    return setTimeout(fn, 0);\n  }\n\n  function _cancelNextTick(id) {\n    return clearTimeout(id);\n  }\n\n  // Fixed #973:\n  if (documentExists) {\n    on(document, \"touchmove\", function (evt) {\n      if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n        evt.preventDefault();\n      }\n    });\n  }\n\n  // Export utils\n  Sortable.utils = {\n    on: on,\n    off: off,\n    css: css,\n    find: find,\n    is: function (el, selector) {\n      return !!closest(el, selector, el, false);\n    },\n    extend: extend,\n    throttle: throttle,\n    closest: closest,\n    toggleClass: toggleClass,\n    clone: clone,\n    index: index,\n    nextTick: _nextTick,\n    cancelNextTick: _cancelNextTick,\n    detectDirection: _detectDirection,\n    getChild: getChild,\n  };\n\n  /**\n   * Get the Sortable instance of an element\n   * @param  {HTMLElement} element The element\n   * @return {Sortable|undefined}         The instance of Sortable\n   */\n  Sortable.get = function (element) {\n    return element[expando];\n  };\n\n  /**\n   * Mount a plugin to Sortable\n   * @param  {...SortablePlugin|SortablePlugin[]} plugins       Plugins being mounted\n   */\n  Sortable.mount = function (...plugins) {\n    if (plugins[0].constructor === Array) plugins = plugins[0];\n\n    plugins.forEach((plugin) => {\n      if (!plugin.prototype || !plugin.prototype.constructor) {\n        throw `Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(\n          plugin\n        )}`;\n      }\n      if (plugin.utils) Sortable.utils = { ...Sortable.utils, ...plugin.utils };\n\n      PluginManager.mount(plugin);\n    });\n  };\n\n  /**\n   * Create sortable instance\n   * @param {HTMLElement}  el\n   * @param {Object}      [options]\n   */\n  Sortable.create = function (el, options) {\n    return new Sortable(el, options);\n  };\n\n  // Export\n  Sortable.version = version;\n\n  let autoScrolls = [],\n    scrollEl,\n    scrollRootEl,\n    scrolling = false,\n    lastAutoScrollX,\n    lastAutoScrollY,\n    touchEvt$1,\n    pointerElemChangedInterval;\n\n  function AutoScrollPlugin() {\n    function AutoScroll() {\n      this.defaults = {\n        scroll: true,\n        scrollSensitivity: 30,\n        scrollSpeed: 10,\n        bubbleScroll: true,\n      };\n\n      // Bind all private methods\n      for (let fn in this) {\n        if (fn.charAt(0) === \"_\" && typeof this[fn] === \"function\") {\n          this[fn] = this[fn].bind(this);\n        }\n      }\n    }\n\n    AutoScroll.prototype = {\n      dragStarted({ originalEvent }) {\n        if (this.sortable.nativeDraggable) {\n          on(document, \"dragover\", this._handleAutoScroll);\n        } else {\n          if (this.options.supportPointer) {\n            on(document, \"pointermove\", this._handleFallbackAutoScroll);\n          } else if (originalEvent.touches) {\n            on(document, \"touchmove\", this._handleFallbackAutoScroll);\n          } else {\n            on(document, \"mousemove\", this._handleFallbackAutoScroll);\n          }\n        }\n      },\n\n      dragOverCompleted({ originalEvent }) {\n        // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n        if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n          this._handleAutoScroll(originalEvent);\n        }\n      },\n\n      drop() {\n        if (this.sortable.nativeDraggable) {\n          off(document, \"dragover\", this._handleAutoScroll);\n        } else {\n          off(document, \"pointermove\", this._handleFallbackAutoScroll);\n          off(document, \"touchmove\", this._handleFallbackAutoScroll);\n          off(document, \"mousemove\", this._handleFallbackAutoScroll);\n        }\n\n        clearPointerElemChangedInterval();\n        clearAutoScrolls();\n        cancelThrottle();\n      },\n\n      nulling() {\n        touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n\n        autoScrolls.length = 0;\n      },\n\n      _handleFallbackAutoScroll(evt) {\n        this._handleAutoScroll(evt, true);\n      },\n\n      _handleAutoScroll(evt, fallback) {\n        const x = (evt.touches ? evt.touches[0] : evt).clientX,\n          y = (evt.touches ? evt.touches[0] : evt).clientY,\n          elem = document.elementFromPoint(x, y);\n\n        touchEvt$1 = evt;\n\n        // IE does not seem to have native autoscroll,\n        // Edge's autoscroll seems too conditional,\n        // MACOS Safari does not have autoscroll,\n        // Firefox and Chrome are good\n        if (fallback || Edge || IE11OrLess || Safari) {\n          autoScroll(evt, this.options, elem, fallback);\n\n          // Listener for pointer element change\n          let ogElemScroller = getParentAutoScrollElement(elem, true);\n          if (\n            scrolling &&\n            (!pointerElemChangedInterval ||\n              x !== lastAutoScrollX ||\n              y !== lastAutoScrollY)\n          ) {\n            pointerElemChangedInterval && clearPointerElemChangedInterval();\n            // Detect for pointer elem change, emulating native DnD behaviour\n            pointerElemChangedInterval = setInterval(() => {\n              let newElem = getParentAutoScrollElement(\n                document.elementFromPoint(x, y),\n                true\n              );\n              if (newElem !== ogElemScroller) {\n                ogElemScroller = newElem;\n                clearAutoScrolls();\n              }\n              autoScroll(evt, this.options, newElem, fallback);\n            }, 10);\n            lastAutoScrollX = x;\n            lastAutoScrollY = y;\n          }\n        } else {\n          // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n          if (\n            !this.options.bubbleScroll ||\n            getParentAutoScrollElement(elem, true) ===\n              getWindowScrollingElement()\n          ) {\n            clearAutoScrolls();\n            return;\n          }\n          autoScroll(\n            evt,\n            this.options,\n            getParentAutoScrollElement(elem, false),\n            false\n          );\n        }\n      },\n    };\n\n    return Object.assign(AutoScroll, {\n      pluginName: \"scroll\",\n      initializeByDefault: true,\n    });\n  }\n\n  function clearAutoScrolls() {\n    autoScrolls.forEach(function (autoScroll) {\n      clearInterval(autoScroll.pid);\n    });\n    autoScrolls = [];\n  }\n\n  function clearPointerElemChangedInterval() {\n    clearInterval(pointerElemChangedInterval);\n  }\n\n  const autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n    // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n    if (!options.scroll) return;\n    const x = (evt.touches ? evt.touches[0] : evt).clientX,\n      y = (evt.touches ? evt.touches[0] : evt).clientY,\n      sens = options.scrollSensitivity,\n      speed = options.scrollSpeed,\n      winScroller = getWindowScrollingElement();\n\n    let scrollThisInstance = false,\n      scrollCustomFn;\n\n    // New scroll root, set scrollEl\n    if (scrollRootEl !== rootEl) {\n      scrollRootEl = rootEl;\n\n      clearAutoScrolls();\n\n      scrollEl = options.scroll;\n      scrollCustomFn = options.scrollFn;\n\n      if (scrollEl === true) {\n        scrollEl = getParentAutoScrollElement(rootEl, true);\n      }\n    }\n\n    let layersOut = 0;\n    let currentParent = scrollEl;\n    do {\n      let el = currentParent,\n        rect = getRect(el),\n        top = rect.top,\n        bottom = rect.bottom,\n        left = rect.left,\n        right = rect.right,\n        width = rect.width,\n        height = rect.height,\n        canScrollX,\n        canScrollY,\n        scrollWidth = el.scrollWidth,\n        scrollHeight = el.scrollHeight,\n        elCSS = css(el),\n        scrollPosX = el.scrollLeft,\n        scrollPosY = el.scrollTop;\n\n      if (el === winScroller) {\n        canScrollX =\n          width < scrollWidth &&\n          (elCSS.overflowX === \"auto\" ||\n            elCSS.overflowX === \"scroll\" ||\n            elCSS.overflowX === \"visible\");\n        canScrollY =\n          height < scrollHeight &&\n          (elCSS.overflowY === \"auto\" ||\n            elCSS.overflowY === \"scroll\" ||\n            elCSS.overflowY === \"visible\");\n      } else {\n        canScrollX =\n          width < scrollWidth &&\n          (elCSS.overflowX === \"auto\" || elCSS.overflowX === \"scroll\");\n        canScrollY =\n          height < scrollHeight &&\n          (elCSS.overflowY === \"auto\" || elCSS.overflowY === \"scroll\");\n      }\n\n      let vx =\n        canScrollX &&\n        (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) -\n          (Math.abs(left - x) <= sens && !!scrollPosX);\n      let vy =\n        canScrollY &&\n        (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) -\n          (Math.abs(top - y) <= sens && !!scrollPosY);\n\n      if (!autoScrolls[layersOut]) {\n        for (let i = 0; i <= layersOut; i++) {\n          if (!autoScrolls[i]) {\n            autoScrolls[i] = {};\n          }\n        }\n      }\n\n      if (\n        autoScrolls[layersOut].vx != vx ||\n        autoScrolls[layersOut].vy != vy ||\n        autoScrolls[layersOut].el !== el\n      ) {\n        autoScrolls[layersOut].el = el;\n        autoScrolls[layersOut].vx = vx;\n        autoScrolls[layersOut].vy = vy;\n\n        clearInterval(autoScrolls[layersOut].pid);\n\n        if (vx != 0 || vy != 0) {\n          scrollThisInstance = true;\n          /* jshint loopfunc:true */\n          autoScrolls[layersOut].pid = setInterval(\n            function () {\n              // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n              if (isFallback && this.layer === 0) {\n                Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n              }\n              let scrollOffsetY = autoScrolls[this.layer].vy\n                ? autoScrolls[this.layer].vy * speed\n                : 0;\n              let scrollOffsetX = autoScrolls[this.layer].vx\n                ? autoScrolls[this.layer].vx * speed\n                : 0;\n\n              if (typeof scrollCustomFn === \"function\") {\n                if (\n                  scrollCustomFn.call(\n                    Sortable.dragged.parentNode[expando],\n                    scrollOffsetX,\n                    scrollOffsetY,\n                    evt,\n                    touchEvt$1,\n                    autoScrolls[this.layer].el\n                  ) !== \"continue\"\n                ) {\n                  return;\n                }\n              }\n\n              scrollBy(\n                autoScrolls[this.layer].el,\n                scrollOffsetX,\n                scrollOffsetY\n              );\n            }.bind({ layer: layersOut }),\n            24\n          );\n        }\n      }\n      layersOut++;\n    } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n    scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n  }, 30);\n\n  const drop = function ({\n    originalEvent,\n    putSortable,\n    dragEl,\n    activeSortable,\n    dispatchSortableEvent,\n    hideGhostForTarget,\n    unhideGhostForTarget,\n  }) {\n    if (!originalEvent) return;\n    let toSortable = putSortable || activeSortable;\n    hideGhostForTarget();\n    let touch =\n      originalEvent.changedTouches && originalEvent.changedTouches.length\n        ? originalEvent.changedTouches[0]\n        : originalEvent;\n    let target = document.elementFromPoint(touch.clientX, touch.clientY);\n    unhideGhostForTarget();\n    if (toSortable && !toSortable.el.contains(target)) {\n      dispatchSortableEvent(\"spill\");\n      this.onSpill({ dragEl, putSortable });\n    }\n  };\n\n  function Revert() {}\n\n  Revert.prototype = {\n    startIndex: null,\n    dragStart({ oldDraggableIndex }) {\n      this.startIndex = oldDraggableIndex;\n    },\n    onSpill({ dragEl, putSortable }) {\n      this.sortable.captureAnimationState();\n      if (putSortable) {\n        putSortable.captureAnimationState();\n      }\n      let nextSibling = getChild(\n        this.sortable.el,\n        this.startIndex,\n        this.options\n      );\n\n      if (nextSibling) {\n        this.sortable.el.insertBefore(dragEl, nextSibling);\n      } else {\n        this.sortable.el.appendChild(dragEl);\n      }\n      this.sortable.animateAll();\n      if (putSortable) {\n        putSortable.animateAll();\n      }\n    },\n    drop,\n  };\n\n  Object.assign(Revert, {\n    pluginName: \"revertOnSpill\",\n  });\n\n  function Remove() {}\n\n  Remove.prototype = {\n    onSpill({ dragEl, putSortable }) {\n      const parentSortable = putSortable || this.sortable;\n      parentSortable.captureAnimationState();\n      dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n      parentSortable.animateAll();\n    },\n    drop,\n  };\n\n  Object.assign(Remove, {\n    pluginName: \"removeOnSpill\",\n  });\n\n  let lastSwapEl;\n\n  function SwapPlugin() {\n    function Swap() {\n      this.defaults = {\n        swapClass: \"sortable-swap-highlight\",\n      };\n    }\n\n    Swap.prototype = {\n      dragStart({ dragEl }) {\n        lastSwapEl = dragEl;\n      },\n      dragOverValid({\n        completed,\n        target,\n        onMove,\n        activeSortable,\n        changed,\n        cancel,\n      }) {\n        if (!activeSortable.options.swap) return;\n        let el = this.sortable.el,\n          options = this.options;\n        if (target && target !== el) {\n          let prevSwapEl = lastSwapEl;\n          if (onMove(target) !== false) {\n            toggleClass(target, options.swapClass, true);\n            lastSwapEl = target;\n          } else {\n            lastSwapEl = null;\n          }\n\n          if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n            toggleClass(prevSwapEl, options.swapClass, false);\n          }\n        }\n        changed();\n\n        completed(true);\n        cancel();\n      },\n      drop({ activeSortable, putSortable, dragEl }) {\n        let toSortable = putSortable || this.sortable;\n        let options = this.options;\n        lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n        if (\n          lastSwapEl &&\n          (options.swap || (putSortable && putSortable.options.swap))\n        ) {\n          if (dragEl !== lastSwapEl) {\n            toSortable.captureAnimationState();\n            if (toSortable !== activeSortable)\n              activeSortable.captureAnimationState();\n            swapNodes(dragEl, lastSwapEl);\n\n            toSortable.animateAll();\n            if (toSortable !== activeSortable) activeSortable.animateAll();\n          }\n        }\n      },\n      nulling() {\n        lastSwapEl = null;\n      },\n    };\n\n    return Object.assign(Swap, {\n      pluginName: \"swap\",\n      eventProperties() {\n        return {\n          swapItem: lastSwapEl,\n        };\n      },\n    });\n  }\n\n  function swapNodes(n1, n2) {\n    let p1 = n1.parentNode,\n      p2 = n2.parentNode,\n      i1,\n      i2;\n\n    if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n\n    i1 = index(n1);\n    i2 = index(n2);\n\n    if (p1.isEqualNode(p2) && i1 < i2) {\n      i2++;\n    }\n    p1.insertBefore(n2, p1.children[i1]);\n    p2.insertBefore(n1, p2.children[i2]);\n  }\n\n  let multiDragElements = [],\n    multiDragClones = [],\n    lastMultiDragSelect, // for selection with modifier key down (SHIFT)\n    multiDragSortable,\n    initialFolding = false, // Initial multi-drag fold when drag started\n    folding = false, // Folding any other time\n    dragStarted = false,\n    dragEl$1,\n    clonesFromRect,\n    clonesHidden;\n\n  function MultiDragPlugin() {\n    function MultiDrag(sortable) {\n      // Bind all private methods\n      for (let fn in this) {\n        if (fn.charAt(0) === \"_\" && typeof this[fn] === \"function\") {\n          this[fn] = this[fn].bind(this);\n        }\n      }\n\n      if (sortable.options.supportPointer) {\n        on(document, \"pointerup\", this._deselectMultiDrag);\n      } else {\n        on(document, \"mouseup\", this._deselectMultiDrag);\n        on(document, \"touchend\", this._deselectMultiDrag);\n      }\n\n      on(document, \"keydown\", this._checkKeyDown);\n      on(document, \"keyup\", this._checkKeyUp);\n\n      this.defaults = {\n        selectedClass: \"sortable-selected\",\n        multiDragKey: null,\n        setData(dataTransfer, dragEl) {\n          let data = \"\";\n          if (multiDragElements.length && multiDragSortable === sortable) {\n            multiDragElements.forEach((multiDragElement, i) => {\n              data += (!i ? \"\" : \", \") + multiDragElement.textContent;\n            });\n          } else {\n            data = dragEl.textContent;\n          }\n          dataTransfer.setData(\"Text\", data);\n        },\n      };\n    }\n\n    MultiDrag.prototype = {\n      multiDragKeyDown: false,\n      isMultiDrag: false,\n\n      delayStartGlobal({ dragEl: dragged }) {\n        dragEl$1 = dragged;\n      },\n\n      delayEnded() {\n        this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n      },\n\n      setupClone({ sortable, cancel }) {\n        if (!this.isMultiDrag) return;\n        for (let i = 0; i < multiDragElements.length; i++) {\n          multiDragClones.push(clone(multiDragElements[i]));\n\n          multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n\n          multiDragClones[i].draggable = false;\n          multiDragClones[i].style[\"will-change\"] = \"\";\n\n          toggleClass(multiDragClones[i], this.options.selectedClass, false);\n          multiDragElements[i] === dragEl$1 &&\n            toggleClass(multiDragClones[i], this.options.chosenClass, false);\n        }\n\n        sortable._hideClone();\n        cancel();\n      },\n\n      clone({ sortable, rootEl, dispatchSortableEvent, cancel }) {\n        if (!this.isMultiDrag) return;\n        if (!this.options.removeCloneOnHide) {\n          if (multiDragElements.length && multiDragSortable === sortable) {\n            insertMultiDragClones(true, rootEl);\n            dispatchSortableEvent(\"clone\");\n\n            cancel();\n          }\n        }\n      },\n\n      showClone({ cloneNowShown, rootEl, cancel }) {\n        if (!this.isMultiDrag) return;\n        insertMultiDragClones(false, rootEl);\n        multiDragClones.forEach((clone) => {\n          css(clone, \"display\", \"\");\n        });\n\n        cloneNowShown();\n        clonesHidden = false;\n        cancel();\n      },\n\n      hideClone({ sortable, cloneNowHidden, cancel }) {\n        if (!this.isMultiDrag) return;\n        multiDragClones.forEach((clone) => {\n          css(clone, \"display\", \"none\");\n          if (this.options.removeCloneOnHide && clone.parentNode) {\n            clone.parentNode.removeChild(clone);\n          }\n        });\n\n        cloneNowHidden();\n        clonesHidden = true;\n        cancel();\n      },\n\n      dragStartGlobal({ sortable }) {\n        if (!this.isMultiDrag && multiDragSortable) {\n          multiDragSortable.multiDrag._deselectMultiDrag();\n        }\n\n        multiDragElements.forEach((multiDragElement) => {\n          multiDragElement.sortableIndex = index(multiDragElement);\n        });\n\n        // Sort multi-drag elements\n        multiDragElements = multiDragElements.sort(function (a, b) {\n          return a.sortableIndex - b.sortableIndex;\n        });\n        dragStarted = true;\n      },\n\n      dragStarted({ sortable }) {\n        if (!this.isMultiDrag) return;\n        if (this.options.sort) {\n          // Capture rects,\n          // hide multi drag elements (by positioning them absolute),\n          // set multi drag elements rects to dragRect,\n          // show multi drag elements,\n          // animate to rects,\n          // unset rects & remove from DOM\n\n          sortable.captureAnimationState();\n\n          if (this.options.animation) {\n            multiDragElements.forEach((multiDragElement) => {\n              if (multiDragElement === dragEl$1) return;\n              css(multiDragElement, \"position\", \"absolute\");\n            });\n\n            let dragRect = getRect(dragEl$1, false, true, true);\n\n            multiDragElements.forEach((multiDragElement) => {\n              if (multiDragElement === dragEl$1) return;\n              setRect(multiDragElement, dragRect);\n            });\n\n            folding = true;\n            initialFolding = true;\n          }\n        }\n\n        sortable.animateAll(() => {\n          folding = false;\n          initialFolding = false;\n\n          if (this.options.animation) {\n            multiDragElements.forEach((multiDragElement) => {\n              unsetRect(multiDragElement);\n            });\n          }\n\n          // Remove all auxiliary multidrag items from el, if sorting enabled\n          if (this.options.sort) {\n            removeMultiDragElements();\n          }\n        });\n      },\n\n      dragOver({ target, completed, cancel }) {\n        if (folding && ~multiDragElements.indexOf(target)) {\n          completed(false);\n          cancel();\n        }\n      },\n\n      revert({ fromSortable, rootEl, sortable, dragRect }) {\n        if (multiDragElements.length > 1) {\n          // Setup unfold animation\n          multiDragElements.forEach((multiDragElement) => {\n            sortable.addAnimationState({\n              target: multiDragElement,\n              rect: folding ? getRect(multiDragElement) : dragRect,\n            });\n\n            unsetRect(multiDragElement);\n\n            multiDragElement.fromRect = dragRect;\n\n            fromSortable.removeAnimationState(multiDragElement);\n          });\n          folding = false;\n          insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n        }\n      },\n\n      dragOverCompleted({\n        sortable,\n        isOwner,\n        insertion,\n        activeSortable,\n        parentEl,\n        putSortable,\n      }) {\n        let options = this.options;\n        if (insertion) {\n          // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n          if (isOwner) {\n            activeSortable._hideClone();\n          }\n\n          initialFolding = false;\n          // If leaving sort:false root, or already folding - Fold to new location\n          if (\n            options.animation &&\n            multiDragElements.length > 1 &&\n            (folding ||\n              (!isOwner && !activeSortable.options.sort && !putSortable))\n          ) {\n            // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n            let dragRectAbsolute = getRect(dragEl$1, false, true, true);\n\n            multiDragElements.forEach((multiDragElement) => {\n              if (multiDragElement === dragEl$1) return;\n              setRect(multiDragElement, dragRectAbsolute);\n\n              // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n              // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n              parentEl.appendChild(multiDragElement);\n            });\n\n            folding = true;\n          }\n\n          // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n          if (!isOwner) {\n            // Only remove if not folding (folding will remove them anyways)\n            if (!folding) {\n              removeMultiDragElements();\n            }\n\n            if (multiDragElements.length > 1) {\n              let clonesHiddenBefore = clonesHidden;\n              activeSortable._showClone(sortable);\n\n              // Unfold animation for clones if showing from hidden\n              if (\n                activeSortable.options.animation &&\n                !clonesHidden &&\n                clonesHiddenBefore\n              ) {\n                multiDragClones.forEach((clone) => {\n                  activeSortable.addAnimationState({\n                    target: clone,\n                    rect: clonesFromRect,\n                  });\n\n                  clone.fromRect = clonesFromRect;\n                  clone.thisAnimationDuration = null;\n                });\n              }\n            } else {\n              activeSortable._showClone(sortable);\n            }\n          }\n        }\n      },\n\n      dragOverAnimationCapture({ dragRect, isOwner, activeSortable }) {\n        multiDragElements.forEach((multiDragElement) => {\n          multiDragElement.thisAnimationDuration = null;\n        });\n\n        if (\n          activeSortable.options.animation &&\n          !isOwner &&\n          activeSortable.multiDrag.isMultiDrag\n        ) {\n          clonesFromRect = Object.assign({}, dragRect);\n          let dragMatrix = matrix(dragEl$1, true);\n          clonesFromRect.top -= dragMatrix.f;\n          clonesFromRect.left -= dragMatrix.e;\n        }\n      },\n\n      dragOverAnimationComplete() {\n        if (folding) {\n          folding = false;\n          removeMultiDragElements();\n        }\n      },\n\n      drop({\n        originalEvent: evt,\n        rootEl,\n        parentEl,\n        sortable,\n        dispatchSortableEvent,\n        oldIndex,\n        putSortable,\n      }) {\n        let toSortable = putSortable || this.sortable;\n\n        if (!evt) return;\n\n        let options = this.options,\n          children = parentEl.children;\n\n        // Multi-drag selection\n        if (!dragStarted) {\n          if (options.multiDragKey && !this.multiDragKeyDown) {\n            this._deselectMultiDrag();\n          }\n          toggleClass(\n            dragEl$1,\n            options.selectedClass,\n            !~multiDragElements.indexOf(dragEl$1)\n          );\n\n          if (!~multiDragElements.indexOf(dragEl$1)) {\n            multiDragElements.push(dragEl$1);\n            dispatchEvent({\n              sortable,\n              rootEl,\n              name: \"select\",\n              targetEl: dragEl$1,\n              originalEvt: evt,\n            });\n\n            // Modifier activated, select from last to dragEl\n            if (\n              evt.shiftKey &&\n              lastMultiDragSelect &&\n              sortable.el.contains(lastMultiDragSelect)\n            ) {\n              let lastIndex = index(lastMultiDragSelect),\n                currentIndex = index(dragEl$1);\n\n              if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n                // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n                // (but previous selection existed)\n                let n, i;\n                if (currentIndex > lastIndex) {\n                  i = lastIndex;\n                  n = currentIndex;\n                } else {\n                  i = currentIndex;\n                  n = lastIndex + 1;\n                }\n\n                for (; i < n; i++) {\n                  if (~multiDragElements.indexOf(children[i])) continue;\n                  toggleClass(children[i], options.selectedClass, true);\n                  multiDragElements.push(children[i]);\n\n                  dispatchEvent({\n                    sortable,\n                    rootEl,\n                    name: \"select\",\n                    targetEl: children[i],\n                    originalEvt: evt,\n                  });\n                }\n              }\n            } else {\n              lastMultiDragSelect = dragEl$1;\n            }\n\n            multiDragSortable = toSortable;\n          } else {\n            multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n            lastMultiDragSelect = null;\n            dispatchEvent({\n              sortable,\n              rootEl,\n              name: \"deselect\",\n              targetEl: dragEl$1,\n              originalEvt: evt,\n            });\n          }\n        }\n\n        // Multi-drag drop\n        if (dragStarted && this.isMultiDrag) {\n          // Do not \"unfold\" after around dragEl if reverted\n          if (\n            (parentEl[expando].options.sort || parentEl !== rootEl) &&\n            multiDragElements.length > 1\n          ) {\n            let dragRect = getRect(dragEl$1),\n              multiDragIndex = index(\n                dragEl$1,\n                \":not(.\" + this.options.selectedClass + \")\"\n              );\n\n            if (!initialFolding && options.animation)\n              dragEl$1.thisAnimationDuration = null;\n\n            toSortable.captureAnimationState();\n\n            if (!initialFolding) {\n              if (options.animation) {\n                dragEl$1.fromRect = dragRect;\n                multiDragElements.forEach((multiDragElement) => {\n                  multiDragElement.thisAnimationDuration = null;\n                  if (multiDragElement !== dragEl$1) {\n                    let rect = folding ? getRect(multiDragElement) : dragRect;\n                    multiDragElement.fromRect = rect;\n\n                    // Prepare unfold animation\n                    toSortable.addAnimationState({\n                      target: multiDragElement,\n                      rect: rect,\n                    });\n                  }\n                });\n              }\n\n              // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n              // properly they must all be removed\n              removeMultiDragElements();\n\n              multiDragElements.forEach((multiDragElement) => {\n                if (children[multiDragIndex]) {\n                  parentEl.insertBefore(\n                    multiDragElement,\n                    children[multiDragIndex]\n                  );\n                } else {\n                  parentEl.appendChild(multiDragElement);\n                }\n                multiDragIndex++;\n              });\n\n              // If initial folding is done, the elements may have changed position because they are now\n              // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n              // must be fired here as Sortable will not.\n              if (oldIndex === index(dragEl$1)) {\n                let update = false;\n                multiDragElements.forEach((multiDragElement) => {\n                  if (\n                    multiDragElement.sortableIndex !== index(multiDragElement)\n                  ) {\n                    update = true;\n                    return;\n                  }\n                });\n\n                if (update) {\n                  dispatchSortableEvent(\"update\");\n                }\n              }\n            }\n\n            // Must be done after capturing individual rects (scroll bar)\n            multiDragElements.forEach((multiDragElement) => {\n              unsetRect(multiDragElement);\n            });\n\n            toSortable.animateAll();\n          }\n\n          multiDragSortable = toSortable;\n        }\n\n        // Remove clones if necessary\n        if (\n          rootEl === parentEl ||\n          (putSortable && putSortable.lastPutMode !== \"clone\")\n        ) {\n          multiDragClones.forEach((clone) => {\n            clone.parentNode && clone.parentNode.removeChild(clone);\n          });\n        }\n      },\n\n      nullingGlobal() {\n        this.isMultiDrag = dragStarted = false;\n        multiDragClones.length = 0;\n      },\n\n      destroyGlobal() {\n        this._deselectMultiDrag();\n        off(document, \"pointerup\", this._deselectMultiDrag);\n        off(document, \"mouseup\", this._deselectMultiDrag);\n        off(document, \"touchend\", this._deselectMultiDrag);\n\n        off(document, \"keydown\", this._checkKeyDown);\n        off(document, \"keyup\", this._checkKeyUp);\n      },\n\n      _deselectMultiDrag(evt) {\n        if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n        // Only deselect if selection is in this sortable\n        if (multiDragSortable !== this.sortable) return;\n\n        // Only deselect if target is not item in this sortable\n        if (\n          evt &&\n          closest(evt.target, this.options.draggable, this.sortable.el, false)\n        )\n          return;\n\n        // Only deselect if left click\n        if (evt && evt.button !== 0) return;\n\n        while (multiDragElements.length) {\n          let el = multiDragElements[0];\n          toggleClass(el, this.options.selectedClass, false);\n          multiDragElements.shift();\n          dispatchEvent({\n            sortable: this.sortable,\n            rootEl: this.sortable.el,\n            name: \"deselect\",\n            targetEl: el,\n            originalEvt: evt,\n          });\n        }\n      },\n\n      _checkKeyDown(evt) {\n        if (evt.key === this.options.multiDragKey) {\n          this.multiDragKeyDown = true;\n        }\n      },\n\n      _checkKeyUp(evt) {\n        if (evt.key === this.options.multiDragKey) {\n          this.multiDragKeyDown = false;\n        }\n      },\n    };\n\n    return Object.assign(MultiDrag, {\n      // Static methods & properties\n      pluginName: \"multiDrag\",\n      utils: {\n        /**\n         * Selects the provided multi-drag item\n         * @param  {HTMLElement} el    The element to be selected\n         */\n        select(el) {\n          let sortable = el.parentNode[expando];\n          if (\n            !sortable ||\n            !sortable.options.multiDrag ||\n            ~multiDragElements.indexOf(el)\n          )\n            return;\n          if (multiDragSortable && multiDragSortable !== sortable) {\n            multiDragSortable.multiDrag._deselectMultiDrag();\n            multiDragSortable = sortable;\n          }\n          toggleClass(el, sortable.options.selectedClass, true);\n          multiDragElements.push(el);\n        },\n        /**\n         * Deselects the provided multi-drag item\n         * @param  {HTMLElement} el    The element to be deselected\n         */\n        deselect(el) {\n          let sortable = el.parentNode[expando],\n            index = multiDragElements.indexOf(el);\n          if (!sortable || !sortable.options.multiDrag || !~index) return;\n          toggleClass(el, sortable.options.selectedClass, false);\n          multiDragElements.splice(index, 1);\n        },\n      },\n      eventProperties() {\n        const oldIndicies = [],\n          newIndicies = [];\n\n        multiDragElements.forEach((multiDragElement) => {\n          oldIndicies.push({\n            multiDragElement,\n            index: multiDragElement.sortableIndex,\n          });\n\n          // multiDragElements will already be sorted if folding\n          let newIndex;\n          if (folding && multiDragElement !== dragEl$1) {\n            newIndex = -1;\n          } else if (folding) {\n            newIndex = index(\n              multiDragElement,\n              \":not(.\" + this.options.selectedClass + \")\"\n            );\n          } else {\n            newIndex = index(multiDragElement);\n          }\n          newIndicies.push({\n            multiDragElement,\n            index: newIndex,\n          });\n        });\n        return {\n          items: [...multiDragElements],\n          clones: [...multiDragClones],\n          oldIndicies,\n          newIndicies,\n        };\n      },\n      optionListeners: {\n        multiDragKey(key) {\n          key = key.toLowerCase();\n          if (key === \"ctrl\") {\n            key = \"Control\";\n          } else if (key.length > 1) {\n            key = key.charAt(0).toUpperCase() + key.substr(1);\n          }\n          return key;\n        },\n      },\n    });\n  }\n\n  function insertMultiDragElements(clonesInserted, rootEl) {\n    multiDragElements.forEach((multiDragElement, i) => {\n      let target =\n        rootEl.children[\n          multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)\n        ];\n      if (target) {\n        rootEl.insertBefore(multiDragElement, target);\n      } else {\n        rootEl.appendChild(multiDragElement);\n      }\n    });\n  }\n\n  /**\n   * Insert multi-drag clones\n   * @param  {[Boolean]} elementsInserted  Whether the multi-drag elements are inserted\n   * @param  {HTMLElement} rootEl\n   */\n  function insertMultiDragClones(elementsInserted, rootEl) {\n    multiDragClones.forEach((clone, i) => {\n      let target =\n        rootEl.children[\n          clone.sortableIndex + (elementsInserted ? Number(i) : 0)\n        ];\n      if (target) {\n        rootEl.insertBefore(clone, target);\n      } else {\n        rootEl.appendChild(clone);\n      }\n    });\n  }\n\n  function removeMultiDragElements() {\n    multiDragElements.forEach((multiDragElement) => {\n      if (multiDragElement === dragEl$1) return;\n      multiDragElement.parentNode &&\n        multiDragElement.parentNode.removeChild(multiDragElement);\n    });\n  }\n\n  Sortable.mount(new AutoScrollPlugin());\n  Sortable.mount(Remove, Revert);\n\n  Sortable.mount(new SwapPlugin());\n  Sortable.mount(new MultiDragPlugin());\n\n  return Sortable;\n});\n","import {\n\tcreateElement,\n\tFragment,\n\tComponent,\n\tuseState,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport ResponsiveControls, {\n\tmaybePromoteScalarValueIntoResponsive,\n\tisOptionEnabledFor,\n\tgetValueForDevice,\n\tisOptionResponsiveFor,\n} from '../customizer/components/responsive-controls'\nimport deepEqual from 'deep-equal'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\nimport { __ } from 'ct-i18n'\nimport { getOptionLabelFor } from './helpers/get-label'\nimport ctEvents from 'ct-events'\n\nconst CORE_OPTIONS_CONTEXT = require.context('./options/', false, /\\.js$/)\nCORE_OPTIONS_CONTEXT.keys().forEach(CORE_OPTIONS_CONTEXT)\n\nconst hasCoreOptionModifier = (type) => {\n\tlet index = CORE_OPTIONS_CONTEXT.keys()\n\t\t.map((module) => module.replace(/^\\.\\//, '').replace(/\\.js$/, ''))\n\t\t.indexOf(type)\n\n\treturn index > -1 && CORE_OPTIONS_CONTEXT.keys()[index]\n}\n\nexport const capitalizeFirstLetter = (str) => {\n\tstr = str == null ? '' : String(str)\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nconst DefaultOptionComponent = ({ option }) => {\n\treturn <div>Unimplemented option: {option.type}</div>\n}\n\nexport const getOptionFor = (option) => {\n\tconst dynamicOptionTypes = {}\n\tctEvents.trigger('blocksy:options:register', dynamicOptionTypes)\n\n\tif (hasCoreOptionModifier(option.type)) {\n\t\treturn CORE_OPTIONS_CONTEXT(hasCoreOptionModifier(option.type)).default\n\t}\n\n\tif (dynamicOptionTypes[option.type]) {\n\t\treturn dynamicOptionTypes[option.type]\n\t}\n\n\treturn DefaultOptionComponent\n}\n\nexport const optionWithDefault = ({ option, value }) =>\n\tvalue === undefined ? option.value : value\n\nconst GenericOptionType = ({\n\toption,\n\tvalue,\n\tvalues,\n\tonChange,\n\tonChangeFor,\n\thasRevertButton,\n\tid,\n\tpurpose,\n}) => {\n\tlet maybeGutenbergDevice = null\n\n\tconst childComponentRef = useRef(null)\n\n\tif (wp.data && wp.data.useSelect) {\n\t\tmaybeGutenbergDevice = wp.data.useSelect((select) => {\n\t\t\tif (!select('core/edit-post')) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn select('core/edit-post').__experimentalGetPreviewDeviceType()\n\t\t})\n\t}\n\n\tconst getInitialDevice = () => {\n\t\tif (wp.customize && wp.customize.previewedDevice) {\n\t\t\treturn wp.customize.previewedDevice()\n\t\t}\n\n\t\tif (\n\t\t\twp.data &&\n\t\t\twp.data.select &&\n\t\t\twp.data.select('core/edit-post') &&\n\t\t\twp.data.select('core/edit-post').__experimentalGetPreviewDeviceType\n\t\t) {\n\t\t\treturn wp.data\n\t\t\t\t.select('core/edit-post')\n\t\t\t\t.__experimentalGetPreviewDeviceType()\n\t\t\t\t.toLowerCase()\n\t\t}\n\n\t\treturn 'desktop'\n\t}\n\n\tconst [device, setInnerDevice] = useState(getInitialDevice())\n\n\tconst listener = () => {\n\t\tsetInnerDevice(getInitialDevice())\n\t}\n\n\tconst ctEventsListener = ({ device }) => {\n\t\tsetInnerDevice(device)\n\t}\n\n\tconst setDevice = (device) => {\n\t\tctEvents.trigger('ct:options:device:update', { device })\n\t\tsetInnerDevice(device)\n\t\twp.customize && wp.customize.previewedDevice.set(device)\n\n\t\tif (\n\t\t\twp.data &&\n\t\t\twp.data.dispatch &&\n\t\t\twp.data.dispatch('core/edit-post') &&\n\t\t\twp.data.dispatch('core/edit-post')\n\t\t\t\t.__experimentalSetPreviewDeviceType\n\t\t) {\n\t\t\twp.data\n\t\t\t\t.dispatch('core/edit-post')\n\t\t\t\t.__experimentalSetPreviewDeviceType(\n\t\t\t\t\tdevice.replace(/\\w/, (c) => c.toUpperCase())\n\t\t\t\t)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (maybeGutenbergDevice) {\n\t\t\tsetInnerDevice(maybeGutenbergDevice.toLowerCase())\n\t\t}\n\t}, [maybeGutenbergDevice])\n\n\tuseEffect(() => {\n\t\tif (option.type !== 'ct-typography') {\n\t\t\tif (!isOptionResponsiveFor(option) && !option.markAsAutoFor) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (wp.customize) {\n\t\t\tsetTimeout(() => wp.customize.previewedDevice.bind(listener), 1000)\n\t\t}\n\n\t\tctEvents.on('ct:options:device:update', ctEventsListener)\n\n\t\tsetInnerDevice(getInitialDevice())\n\n\t\treturn () => {\n\t\t\tif (option.type !== 'ct-typography') {\n\t\t\t\tif (!isOptionResponsiveFor(option)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wp.customize) {\n\t\t\t\twp.customize.previewedDevice.unbind(listener)\n\t\t\t}\n\n\t\t\tctEvents.off('ct:options:device:update', ctEventsListener)\n\t\t}\n\t}, [])\n\n\tlet OptionComponent = getOptionFor(option)\n\tlet BeforeOptionContent = { content: null, option }\n\n\tctEvents.trigger('blocksy:options:before-option', BeforeOptionContent)\n\n\tconst globalResponsiveValue = maybePromoteScalarValueIntoResponsive(\n\t\toptionWithDefault({ value, option }),\n\t\tisOptionResponsiveFor(option)\n\t)\n\n\tconst valueWithResponsive = isOptionResponsiveFor(option, {\n\t\tignoreHidden: true,\n\t})\n\t\t? getValueForDevice({ option, value: globalResponsiveValue, device })\n\t\t: globalResponsiveValue\n\n\tconst onChangeWithMobileBridge = (value) => {\n\t\tif (option.triggerRefreshOnChange) {\n\t\t\twp.customize &&\n\t\t\t\twp.customize.previewer &&\n\t\t\t\twp.customize.previewer.refresh()\n\t\t}\n\n\t\tif (\n\t\t\toption.switchDeviceOnChange &&\n\t\t\twp.customize &&\n\t\t\twp.customize.previewedDevice() !== option.switchDeviceOnChange\n\t\t) {\n\t\t\twp.customize.previewedDevice.set(option.switchDeviceOnChange)\n\t\t}\n\n\t\tif (\n\t\t\toption.sync &&\n\t\t\t(Object.keys(option.sync).length > 0 ||\n\t\t\t\tArray.isArray(option.sync)) &&\n\t\t\twp.customize &&\n\t\t\twp.customize.previewer\n\t\t) {\n\t\t\twp.customize.previewer.send('ct:sync:refresh_partial', {\n\t\t\t\tid: option.sync.id || option.id,\n\t\t\t\toption,\n\t\t\t})\n\t\t}\n\n\t\tonChange(value)\n\t}\n\n\tconst onChangeWithResponsiveBridge = (scalarValue) => {\n\t\tconst responsiveValue = maybePromoteScalarValueIntoResponsive(\n\t\t\toptionWithDefault({ value, option }),\n\t\t\tisOptionResponsiveFor(option)\n\t\t)\n\n\t\tonChangeWithMobileBridge(\n\t\t\tisOptionResponsiveFor(option, { ignoreHidden: true })\n\t\t\t\t? {\n\t\t\t\t\t\t...responsiveValue,\n\t\t\t\t\t\t[device === 'tablet' &&\n\t\t\t\t\t\tisOptionEnabledFor('tablet', option.responsive) ===\n\t\t\t\t\t\t\t'skip'\n\t\t\t\t\t\t\t? 'mobile'\n\t\t\t\t\t\t\t: device]: scalarValue,\n\t\t\t\t\t\t...(device === 'desktop'\n\t\t\t\t\t\t\t? Object.keys(responsiveValue).reduce(\n\t\t\t\t\t\t\t\t\t(currentValue, key) => ({\n\t\t\t\t\t\t\t\t\t\t...currentValue,\n\t\t\t\t\t\t\t\t\t\t...(key !== 'desktop' &&\n\t\t\t\t\t\t\t\t\t\tkey !== '__changed' &&\n\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\tmaybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t).reduce(\n\t\t\t\t\t\t\t\t\t\t\t(result, key) =>\n\t\t\t\t\t\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t\t\t\t\t\t\t? maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t  )[key] ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t  maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t  ).desktop\n\t\t\t\t\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\tresponsiveValue.__changed || []\n\t\t\t\t\t\t\t\t\t\t).indexOf('tablet') === -1\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t[key]: scalarValue,\n\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t...(device === 'tablet' &&\n\t\t\t\t\t\tisOptionEnabledFor('tablet', option.responsive) !==\n\t\t\t\t\t\t\t'skip'\n\t\t\t\t\t\t\t? Object.keys(responsiveValue).reduce(\n\t\t\t\t\t\t\t\t\t(currentValue, key) => ({\n\t\t\t\t\t\t\t\t\t\t...currentValue,\n\t\t\t\t\t\t\t\t\t\t...(key !== 'desktop' &&\n\t\t\t\t\t\t\t\t\t\tkey !== 'tablet' &&\n\t\t\t\t\t\t\t\t\t\tkey !== '__changed' &&\n\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\tmaybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t).reduce(\n\t\t\t\t\t\t\t\t\t\t\t(result, key) =>\n\t\t\t\t\t\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t\t\t\t\t\t\t? maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t  )[key] ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t  maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t  ).desktop\n\t\t\t\t\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\tresponsiveValue.__changed || []\n\t\t\t\t\t\t\t\t\t\t).indexOf(key) === -1\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t[key]: scalarValue,\n\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t__changed: [\n\t\t\t\t\t\t\t...(responsiveValue.__changed || []),\n\t\t\t\t\t\t\t...(device !== 'desktop' ? [device] : []),\n\t\t\t\t\t\t].filter(\n\t\t\t\t\t\t\t(value, index, self) =>\n\t\t\t\t\t\t\t\tself.indexOf(value) === index\n\t\t\t\t\t\t),\n\t\t\t\t  }\n\t\t\t\t: scalarValue\n\t\t)\n\t}\n\n\t/**\n\t * Handle transparent components\n\t */\n\tif (!OptionComponent) {\n\t\treturn <div>Unimplemented option: {option.type}</div>\n\t}\n\n\tlet renderingConfig = { design: true, label: true, wrapperAttr: {} }\n\tlet LabelToolbar = () => null\n\tlet OptionMetaWrapper = null\n\tlet ControlEnd = () => null\n\tlet sectionClassName = () => ({})\n\n\trenderingConfig = {\n\t\t...renderingConfig,\n\t\t...(OptionComponent.renderingConfig || {}),\n\t}\n\n\tif (option.design) {\n\t\trenderingConfig.design = option.design\n\t}\n\n\tif (typeof renderingConfig.design === 'function') {\n\t\trenderingConfig.design = renderingConfig.design({\n\t\t\toption,\n\t\t\tvalue: valueWithResponsive,\n\t\t})\n\t}\n\n\tif (OptionComponent.LabelToolbar) {\n\t\tLabelToolbar = OptionComponent.LabelToolbar\n\t}\n\n\tif (OptionComponent.ControlEnd) {\n\t\tControlEnd = OptionComponent.ControlEnd\n\t}\n\n\tif (OptionComponent.MetaWrapper) {\n\t\tOptionMetaWrapper = OptionComponent.MetaWrapper\n\t}\n\n\tif (OptionComponent.sectionClassName) {\n\t\tsectionClassName = OptionComponent.sectionClassName\n\t}\n\n\tlet OptionComponentWithoutDesign = (\n\t\t<Fragment>\n\t\t\t{BeforeOptionContent && BeforeOptionContent.content}\n\t\t\t<OptionComponent\n\t\t\t\tkey={id}\n\t\t\t\t{...{\n\t\t\t\t\t...(option.type === 'ct-slider'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tref: (c) => {\n\t\t\t\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\t\t\tchildComponentRef.current = c\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\toption: {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tvalue: isOptionResponsiveFor(option, {\n\t\t\t\t\t\t\tignoreHidden: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t? getValueForDevice({\n\t\t\t\t\t\t\t\t\tdevice,\n\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\tvalue: maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\t\toption.value || ''\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t  })\n\t\t\t\t\t\t\t: maybePromoteScalarValueIntoResponsive(\n\t\t\t\t\t\t\t\t\toption.value || '',\n\t\t\t\t\t\t\t\t\tisOptionResponsiveFor(option)\n\t\t\t\t\t\t\t  ),\n\t\t\t\t\t},\n\t\t\t\t\tvalue: valueWithResponsive,\n\t\t\t\t\tid,\n\t\t\t\t\tvalues,\n\t\t\t\t\tonChangeFor,\n\t\t\t\t\tdevice,\n\t\t\t\t\tonChange: onChangeWithResponsiveBridge,\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Fragment>\n\t)\n\n\tif (!renderingConfig.design || renderingConfig.design === 'none') {\n\t\treturn OptionComponentWithoutDesign\n\t}\n\n\tlet maybeLabel = getOptionLabelFor({\n\t\tid,\n\t\toption,\n\t\tvalues,\n\t\trenderingConfig,\n\t})\n\n\tlet maybeDesc =\n\t\tObject.keys(option).indexOf('desc') === -1 ? false : option.desc\n\n\tlet maybeLink =\n\t\tObject.keys(option).indexOf('link') === -1 ? false : option.link || ' '\n\n\tconst actualDesignType =\n\t\ttypeof renderingConfig.design === 'boolean'\n\t\t\t? 'block'\n\t\t\t: renderingConfig.design\n\n\tif (renderingConfig.design === 'compact') {\n\t\treturn (\n\t\t\t<section {...(option.sectionAttr || {})}>\n\t\t\t\t{maybeLabel && <label>{maybeLabel}</label>}\n\n\t\t\t\t{((isOptionResponsiveFor(option) &&\n\t\t\t\t\tisOptionEnabledFor(device, option.responsive)) ||\n\t\t\t\t\t!isOptionResponsiveFor(option)) &&\n\t\t\t\t\tOptionComponentWithoutDesign}\n\t\t\t\t{maybeLink && (\n\t\t\t\t\t<a\n\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t__html: maybeLink,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...(option.linkAttr || {})}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</section>\n\t\t)\n\t}\n\n\tconst getActualOption = ({\n\t\twrapperAttr: { className, ...additionalWrapperAttr } = {},\n\t\t...props\n\t} = {}) => {\n\t\tconst { className: optionClassName, ...optionAdditionalWrapperAttr } =\n\t\t\toption.wrapperAttr || {}\n\n\t\tlet computeOptionValue = renderingConfig.computeOptionValue\n\n\t\tif (!computeOptionValue) {\n\t\t\tcomputeOptionValue = (o) => o\n\t\t}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t'ct-control',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\toptionClassName,\n\t\t\t\t\t\t{}\n\t\t\t\t\t)}\n\t\t\t\t\tdata-design={actualDesignType}\n\t\t\t\t\t{...(option.divider\n\t\t\t\t\t\t? { 'data-divider': option.divider }\n\t\t\t\t\t\t: {})}\n\t\t\t\t\t{...{\n\t\t\t\t\t\t...((isOptionResponsiveFor(option) &&\n\t\t\t\t\t\t\t!isOptionEnabledFor(device, option.responsive)) ||\n\t\t\t\t\t\toption.state === 'disabled'\n\t\t\t\t\t\t\t? { 'data-state': 'disabled' }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t}}\n\t\t\t\t\t{...{\n\t\t\t\t\t\t...optionAdditionalWrapperAttr,\n\t\t\t\t\t\t...additionalWrapperAttr,\n\t\t\t\t\t}}>\n\t\t\t\t\t<header>\n\t\t\t\t\t\t{maybeLabel && <label>{maybeLabel}</label>}\n\n\t\t\t\t\t\t{option.type !== 'ct-image-picker' &&\n\t\t\t\t\t\t\toption.type !== 'ct-layers' &&\n\t\t\t\t\t\t\toption.type !== 'ct-image-uploader' &&\n\t\t\t\t\t\t\toption.type !== 'ct-panel' &&\n\t\t\t\t\t\t\thasRevertButton &&\n\t\t\t\t\t\t\t!option.disableRevertButton && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdisabled={deepEqual(\n\t\t\t\t\t\t\t\t\t\tcomputeOptionValue(option.value),\n\t\t\t\t\t\t\t\t\t\trenderingConfig.getValueForRevert\n\t\t\t\t\t\t\t\t\t\t\t? renderingConfig.getValueForRevert(\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t: optionWithDefault({\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\t  })\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tclassName=\"ct-revert\"\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tchildComponentRef &&\n\t\t\t\t\t\t\t\t\t\t\tchildComponentRef.current\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tchildComponentRef.current.handleOptionRevert()\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (renderingConfig.performRevert) {\n\t\t\t\t\t\t\t\t\t\t\trenderingConfig.performRevert({\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeFor,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tonChangeWithMobileBridge(option.value)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<LabelToolbar\n\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\tvalue: valueWithResponsive,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tonChange: onChangeWithResponsiveBridge,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{isOptionResponsiveFor(option, {\n\t\t\t\t\t\t\tignoreHidden: true,\n\t\t\t\t\t\t}) &&\n\t\t\t\t\t\t\tactualDesignType.indexOf('block') > -1 &&\n\t\t\t\t\t\t\t!option.skipResponsiveControls && (\n\t\t\t\t\t\t\t\t<ResponsiveControls\n\t\t\t\t\t\t\t\t\tdevice={device}\n\t\t\t\t\t\t\t\t\tresponsiveDescriptor={option.responsive}\n\t\t\t\t\t\t\t\t\tsetDevice={setDevice}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</header>\n\n\t\t\t\t\t{isOptionResponsiveFor(option) &&\n\t\t\t\t\t\t!isOptionEnabledFor(device, option.responsive) && (\n\t\t\t\t\t\t\t<div className=\"ct-disabled-notification\">\n\t\t\t\t\t\t\t\t{option.disabledDeviceMessage ||\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\"Option can't be edited for current device\",\n\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t{((isOptionResponsiveFor(option) &&\n\t\t\t\t\t\tisOptionEnabledFor(device, option.responsive)) ||\n\t\t\t\t\t\t!isOptionResponsiveFor(option)) && (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<section\n\t\t\t\t\t\t\t\t{...(option.sectionAttr || {})}\n\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'ct-responsive-container':\n\t\t\t\t\t\t\t\t\t\t\tisOptionResponsiveFor(option, {\n\t\t\t\t\t\t\t\t\t\t\t\tignoreHidden: true,\n\t\t\t\t\t\t\t\t\t\t\t}) && actualDesignType === 'inline',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tsectionClassName({\n\t\t\t\t\t\t\t\t\t\tdesign: actualDesignType,\n\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t(option.sectionAttr || {}).class || ''\n\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t{isOptionResponsiveFor(option, {\n\t\t\t\t\t\t\t\t\tignoreHidden: true,\n\t\t\t\t\t\t\t\t}) &&\n\t\t\t\t\t\t\t\t\tactualDesignType === 'inline' && (\n\t\t\t\t\t\t\t\t\t\t<ResponsiveControls\n\t\t\t\t\t\t\t\t\t\t\tdevice={device}\n\t\t\t\t\t\t\t\t\t\t\tresponsiveDescriptor={\n\t\t\t\t\t\t\t\t\t\t\t\toption.responsive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsetDevice={setDevice}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{OptionComponentWithoutDesign}\n\n\t\t\t\t\t\t\t\t{maybeLink && (\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t\t\t__html: maybeLink,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t{...(option.linkAttr || {})}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</section>\n\n\t\t\t\t\t\t\t<ControlEnd />\n\n\t\t\t\t\t\t\t{maybeDesc && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t\t__html: maybeDesc,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"ct-option-description\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</Fragment>\n\t\t)\n\t}\n\n\treturn OptionMetaWrapper ? (\n\t\t<OptionMetaWrapper\n\t\t\tid={id}\n\t\t\toption={option}\n\t\t\tvalue={valueWithResponsive}\n\t\t\tonChangeFor={onChangeFor}\n\t\t\tvalues={values}\n\t\t\tgetActualOption={getActualOption}\n\t\t/>\n\t) : (\n\t\tgetActualOption()\n\t)\n}\n\nexport default GenericOptionType\n","import { useMemo, useReducer } from '@wordpress/element'\n\nconst reducer = (state, _) => !state\n\nconst useForceUpdate = () => {\n\tconst [, dispatch] = useReducer(reducer, true)\n\n\tconst memoizedDispatch = useMemo(\n\t\t() => () => {\n\t\t\tdispatch(null)\n\t\t},\n\t\t[dispatch]\n\t)\n\n\treturn memoizedDispatch\n}\n\nexport default useForceUpdate\n","import { createElement, useMemo, useEffect } from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\nimport { useDeviceManagerState } from '../../customizer/components/useDeviceManager'\n\nimport useForceUpdate from './use-force-update'\n\nconst Condition = ({\n\trenderingChunk,\n\tvalue,\n\tonChange,\n\tpurpose,\n\tparentValue,\n\thasRevertButton,\n}) => {\n\tconst forceUpdate = useForceUpdate()\n\tconst { currentView } = useDeviceManagerState()\n\n\tuseEffect(() => {\n\t\trenderingChunk.map(\n\t\t\t(conditionOption) =>\n\t\t\t\tconditionOption.global &&\n\t\t\t\tObject.keys(conditionOption.condition).map((key) =>\n\t\t\t\t\twp.customize(key, (val) =>\n\t\t\t\t\t\tval.bind((to) => setTimeout(() => forceUpdate()))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t)\n\t}, [])\n\n\treturn renderingChunk.map((conditionOption) => {\n\t\tlet valueForCondition = null\n\n\t\tif (conditionOption.values_source === 'global') {\n\t\t\tlet allReplaces = Array.isArray(conditionOption.perform_replace)\n\t\t\t\t? conditionOption.perform_replace\n\t\t\t\t: [conditionOption.perform_replace]\n\n\t\t\tlet conditionToWatch = {\n\t\t\t\t...conditionOption.condition,\n\t\t\t\t...(conditionOption.perform_replace\n\t\t\t\t\t? (Array.isArray(conditionOption.perform_replace)\n\t\t\t\t\t\t\t? conditionOption.perform_replace\n\t\t\t\t\t\t\t: [conditionOption.perform_replace]\n\t\t\t\t\t  ).reduce((res, singleReplace) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...res,\n\t\t\t\t\t\t\t\t...conditionOption.perform_replace.condition,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t  }, {})\n\t\t\t\t\t: {}),\n\t\t\t}\n\n\t\t\tvalueForCondition = Object.keys(conditionToWatch).reduce(\n\t\t\t\t(current, key) => ({\n\t\t\t\t\t...current,\n\t\t\t\t\t[key]: wp.customize(key)(),\n\t\t\t\t}),\n\t\t\t\t{}\n\t\t\t)\n\t\t}\n\n\t\tif (conditionOption.values_source === 'parent') {\n\t\t\tvalueForCondition = parentValue\n\t\t}\n\n\t\tif (!valueForCondition) {\n\t\t\tvalueForCondition = {\n\t\t\t\t...value,\n\t\t\t\twp_customizer_current_view: currentView,\n\t\t\t}\n\t\t}\n\n\t\tif (conditionOption.perform_replace) {\n\t\t\tlet allReplaces = Array.isArray(conditionOption.perform_replace)\n\t\t\t\t? conditionOption.perform_replace\n\t\t\t\t: [conditionOption.perform_replace]\n\n\t\t\tallReplaces.map((singleReplace) => {\n\t\t\t\tlet conditionReplaceMatches = matchValuesWithCondition(\n\t\t\t\t\tnormalizeCondition(singleReplace.condition),\n\t\t\t\t\tvalueForCondition\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\tconditionReplaceMatches &&\n\t\t\t\t\tvalueForCondition[singleReplace.key] &&\n\t\t\t\t\tvalueForCondition[singleReplace.key] === singleReplace.from\n\t\t\t\t) {\n\t\t\t\t\tvalueForCondition[singleReplace.key] = singleReplace.to\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tlet conditionMatches = matchValuesWithCondition(\n\t\t\tnormalizeCondition(conditionOption.condition),\n\t\t\tvalueForCondition\n\t\t)\n\n\t\treturn conditionMatches ? (\n\t\t\t<OptionsPanel\n\t\t\t\tpurpose={purpose}\n\t\t\t\tkey={conditionOption.id}\n\t\t\t\tonChange={onChange}\n\t\t\t\toptions={conditionOption.options}\n\t\t\t\tvalue={value}\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\tparentValue={parentValue}\n\t\t\t/>\n\t\t) : (\n\t\t\t[]\n\t\t)\n\t})\n}\n\nexport default Condition\n","import { createElement, Fragment, Component } from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\nimport classnames from 'classnames'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nexport default class Tabs extends Component {\n\tstate = {\n\t\tcurrentTab: 0\n\t}\n\n\trender() {\n\t\tconst filteredTabs = this.props.renderingChunk.filter(\n\t\t\tsingleTab =>\n\t\t\t\t!singleTab.condition ||\n\t\t\t\tmatchValuesWithCondition(\n\t\t\t\t\tnormalizeCondition(singleTab.condition),\n\t\t\t\t\tthis.props.value\n\t\t\t\t)\n\t\t)\n\n\t\tconst currentTab = filteredTabs[this.state.currentTab]\n\n\t\treturn (\n\t\t\t<div className=\"ct-tabs\">\n\t\t\t\t<ul>\n\t\t\t\t\t{filteredTabs\n\t\t\t\t\t\t.map((singleTab, index) => ({ singleTab, index }))\n\t\t\t\t\t\t.map(({ singleTab, index }) => (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={singleTab.id}\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tthis.setState({ currentTab: index })\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\t\tactive: index === this.state.currentTab\n\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t{singleTab.title\n\t\t\t\t\t\t\t\t\t? singleTab.title\n\t\t\t\t\t\t\t\t\t: singleTab.id}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t</ul>\n\n\t\t\t\t<div className=\"ct-current-tab\">\n\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\tpurpose={this.props.purpose}\n\t\t\t\t\t\tkey={currentTab.id}\n\t\t\t\t\t\tonChange={(key, val) => this.props.onChange(key, val)}\n\t\t\t\t\t\toptions={currentTab.options}\n\t\t\t\t\t\tvalue={this.props.value}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n}\n\n/*\nconst Condition = ({ renderingChunk, value, onChange }) =>\n\trenderingChunk.map(\n\t\tconditionOption =>\n\t\t\tmatchValuesWithCondition(\n\t\t\t\tnormalizeCondition(conditionOption.condition),\n\t\t\t\tvalue\n\t\t\t) ? (\n\t\t\t\t<OptionsPanel\n\t\t\t\t\tkey={conditionOption.id}\n\t\t\t\t\tonChange={val => onChange({ ...value, ...val })}\n\t\t\t\t\toptions={conditionOption.options}\n\t\t\t\t\tvalue={value}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t[]\n\t\t\t)\n\t)\n\nexport default Condition\n\n*/\n","import { createElement, Fragment } from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\nimport { capitalizeFirstLetter } from '../GenericOptionType'\n\nimport {\n\tuseDeviceManagerState,\n\tuseDeviceManagerActions,\n} from '../../customizer/components/useDeviceManager'\nimport ResponsiveControls from '../../customizer/components/responsive-controls'\n\nconst Group = ({ renderingChunk, value, onChange, purpose, hasRevertButton }) =>\n\trenderingChunk.map((groupOption) => {\n\t\tconst {\n\t\t\tlabel,\n\t\t\toptions,\n\t\t\tid,\n\t\t\tattr = {},\n\t\t\twrapperAttr = {},\n\t\t\tresponsive = false,\n\t\t} = groupOption\n\t\tconst { currentView } = useDeviceManagerState()\n\t\tconst { setDevice } = useDeviceManagerActions()\n\n\t\tconst groupContents = (\n\t\t\t<OptionsPanel\n\t\t\t\tpurpose={purpose}\n\t\t\t\tonChange={onChange}\n\t\t\t\toptions={options}\n\t\t\t\tvalue={value}\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t/>\n\t\t)\n\n\t\treturn (\n\t\t\t<div key={id} className=\"ct-controls-group\" {...wrapperAttr}>\n\t\t\t\t{label && (\n\t\t\t\t\t<header>\n\t\t\t\t\t\t<label>{label}</label>\n\n\t\t\t\t\t\t{responsive && (\n\t\t\t\t\t\t\t<ResponsiveControls\n\t\t\t\t\t\t\t\tdevice={currentView}\n\t\t\t\t\t\t\t\tresponsiveDescriptor={responsive}\n\t\t\t\t\t\t\t\tsetDevice={setDevice}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\t\t\t\t<section\n\t\t\t\t\t{...attr}\n\t\t\t\t\t{...(currentView !== 'desktop'\n\t\t\t\t\t\t? { 'data-disabled-last': '' }\n\t\t\t\t\t\t: {})}>\n\t\t\t\t\t{groupContents}\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t)\n\t})\n\nexport default Group\n","import {\n\tcreateElement,\n\tuseMemo,\n\tuseRef,\n\tuseEffect,\n\tuseContext,\n} from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\nimport {\n\tuseDeviceManagerState,\n\tuseDeviceManagerActions,\n} from '../../customizer/components/useDeviceManager'\nimport { capitalizeFirstLetter, optionWithDefault } from '../GenericOptionType'\nimport deepEqual from 'deep-equal'\n\nimport ResponsiveControls from '../../customizer/components/responsive-controls'\n\nimport { getOptionLabelFor } from '../helpers/get-label'\n\nconst SingleChoice = ({\n\tsingleChoice,\n\tgroupOption,\n\tpurpose,\n\tonChange,\n\tvalue,\n\thasRevertButton,\n\tparentValue,\n}) => {\n\treturn (\n\t\t<div key={singleChoice.id} className=\"ct-labeled-group-item\">\n\t\t\t{singleChoice.label && <label>{singleChoice.label}</label>}\n\n\t\t\t<OptionsPanel\n\t\t\t\tpurpose={purpose}\n\t\t\t\tkey={groupOption.id}\n\t\t\t\tonChange={onChange}\n\t\t\t\toptions={{\n\t\t\t\t\t[singleChoice.id]: {\n\t\t\t\t\t\t...groupOption.options[singleChoice.id],\n\t\t\t\t\t\tdesign: 'none',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tvalue={value}\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\tparentValue={parentValue}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nconst LabeledGroup = ({\n\trenderingChunk,\n\tvalue,\n\tonChange,\n\tpurpose,\n\tparentValue,\n\thasRevertButton,\n}) => {\n\tconst { currentView } = useDeviceManagerState()\n\tconst { setDevice } = useDeviceManagerActions()\n\n\treturn renderingChunk.map((groupOption) => {\n\t\tlet valueForCondition = null\n\n\t\tif (!valueForCondition) {\n\t\t\tvalueForCondition = {\n\t\t\t\t...value,\n\t\t\t\twp_customizer_current_view: currentView,\n\t\t\t}\n\t\t}\n\n\t\tconst totalAmountofMatched = groupOption.choices.filter(\n\t\t\t(singleChoice) =>\n\t\t\t\tsingleChoice.condition\n\t\t\t\t\t? matchValuesWithCondition(\n\t\t\t\t\t\t\tnormalizeCondition(singleChoice.condition),\n\t\t\t\t\t\t\tvalueForCondition\n\t\t\t\t\t  )\n\t\t\t\t\t: true\n\t\t)\n\n\t\tlet maybeLabel = getOptionLabelFor({\n\t\t\tid: groupOption.id,\n\t\t\toption: groupOption,\n\t\t\tvalues: value,\n\t\t})\n\n\t\tif (totalAmountofMatched.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tif (totalAmountofMatched.length === 1) {\n\t\t\treturn (\n\t\t\t\t<OptionsPanel\n\t\t\t\t\tpurpose={purpose}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\tkey={groupOption.id}\n\t\t\t\t\toptions={{\n\t\t\t\t\t\t[groupOption.choices[0].id]: {\n\t\t\t\t\t\t\t...groupOption.options[groupOption.choices[0].id],\n\n\t\t\t\t\t\t\t...(groupOption.divider\n\t\t\t\t\t\t\t\t? { divider: groupOption.divider }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\t\tparentValue={parentValue}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"ct-control\"\n\t\t\t\tdata-design=\"block\"\n\t\t\t\t{...(groupOption.divider\n\t\t\t\t\t? { 'data-divider': groupOption.divider }\n\t\t\t\t\t: {})}>\n\t\t\t\t<header>\n\t\t\t\t\t{maybeLabel && <label>{maybeLabel}</label>}\n\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tdisabled={groupOption.choices.every(({ id }) =>\n\t\t\t\t\t\t\tdeepEqual(\n\t\t\t\t\t\t\t\tgroupOption.options[id].value,\n\t\t\t\t\t\t\t\toptionWithDefault({\n\t\t\t\t\t\t\t\t\tvalue: value[id],\n\t\t\t\t\t\t\t\t\toption: groupOption.options[id],\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tclassName=\"ct-revert\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tgroupOption.choices.reduce(\n\t\t\t\t\t\t\t\t(previousPromise, nextChoice) => {\n\t\t\t\t\t\t\t\t\treturn previousPromise.then(() => {\n\t\t\t\t\t\t\t\t\t\treturn new Promise((r) => {\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextChoice.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupOption.options[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnextChoice.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t].value\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\tr()\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPromise.resolve()\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{groupOption.responsive && (\n\t\t\t\t\t\t<ResponsiveControls\n\t\t\t\t\t\t\tdevice={currentView}\n\t\t\t\t\t\t\tresponsiveDescriptor={groupOption.responsive}\n\t\t\t\t\t\t\tsetDevice={setDevice}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</header>\n\t\t\t\t<section className=\"ct-labeled-group\">\n\t\t\t\t\t{totalAmountofMatched.map((singleChoice) => (\n\t\t\t\t\t\t<SingleChoice\n\t\t\t\t\t\t\tkey={singleChoice.id}\n\t\t\t\t\t\t\tsingleChoice={singleChoice}\n\t\t\t\t\t\t\tgroupOption={groupOption}\n\t\t\t\t\t\t\tpurpose={purpose}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\t\t\t\tparentValue={parentValue}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t)\n\t})\n}\n\nexport default LabeledGroup\n","import { createElement, Fragment } from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\n\nconst Group = ({ renderingChunk, value, onChange, purpose, hasRevertButton }) =>\n\trenderingChunk.map((conditionOption) => {\n\t\tconst {\n\t\t\tlabel,\n\t\t\toptions,\n\t\t\tid,\n\t\t\tattr = {},\n\t\t\tresponsive = false,\n\t\t\toptionId,\n\t\t} = conditionOption\n\n\t\tif (\n\t\t\tvalue[optionId].find(\n\t\t\t\t({ id, enabled, meta_elements }) =>\n\t\t\t\t\tenabled &&\n\t\t\t\t\t(id === 'post_meta' || id === 'custom_meta') &&\n\t\t\t\t\t(meta_elements || []).find(\n\t\t\t\t\t\t({ id, style }) =>\n\t\t\t\t\t\t\t(id === 'categories' || id === 'tags') &&\n\t\t\t\t\t\t\tstyle === 'pill'\n\t\t\t\t\t)\n\t\t\t)\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<OptionsPanel\n\t\t\t\t\tpurpose={purpose}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\toptions={options}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn null\n\t})\n\nexport default Group\n","import { createElement, Fragment } from '@wordpress/element'\nimport Condition from './containers/Condition'\nimport Tabs from './containers/Tabs'\nimport Group from './containers/Group'\nimport LabeledGroup from './containers/LabeledGroup'\nimport HasMetaCategoryButton from './containers/ct-has-meta-category-button'\n\nconst GenericContainerType = ({\n\tvalue,\n\trenderingChunk,\n\tonChange,\n\tparentValue,\n\tpurpose,\n\thasRevertButton,\n}) => {\n\tlet Container = null\n\n\tif (renderingChunk[0].type === 'ct-has-meta-category-button') {\n\t\tContainer = HasMetaCategoryButton\n\t}\n\n\tif (renderingChunk[0].type === 'ct-condition') {\n\t\tContainer = Condition\n\t}\n\n\tif (renderingChunk[0].type === 'tab') {\n\t\tContainer = Tabs\n\t}\n\n\tif (renderingChunk[0].type === 'ct-group') {\n\t\tContainer = Group\n\t}\n\n\tif (renderingChunk[0].type === 'ct-labeled-group') {\n\t\tContainer = LabeledGroup\n\t}\n\n\tif (Container) {\n\t\treturn (\n\t\t\t<Container\n\t\t\t\tpurpose={purpose}\n\t\t\t\tonChange={onChange}\n\t\t\t\tvalue={value}\n\t\t\t\trenderingChunk={renderingChunk}\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\tparentValue={parentValue}\n\t\t\t/>\n\t\t)\n\t}\n\n\treturn <div>Unknown container type.</div>\n}\n\nexport default GenericContainerType\n","import {\n\tcreateElement,\n\tComponent,\n\tFragment,\n\tmemo,\n\tuseMemo,\n} from '@wordpress/element'\nimport GenericOptionType from './GenericOptionType'\nimport GenericContainerType from './GenericContainerType'\nimport { flattenOptions } from './helpers/get-value-from-input'\n\nconst OptionsPanel = (props) => {\n\tlet {\n\t\toptions,\n\t\tvalue,\n\t\tonChange, // default | customizer\n\t\tpurpose = 'default',\n\t\thasRevertButton = true,\n\t\trenderOptions = null,\n\t\tparentValue,\n\t} = props\n\n\tif (renderOptions) {\n\t\treturn renderOptions({\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t})\n\t}\n\n\tlet SlotFillProvider = null\n\n\tif (window.wp.components) {\n\t\tSlotFillProvider = window.wp.components.SlotFillProvider\n\t}\n\n\tconst renderingChunks = useMemo(() => {\n\t\tconst localOptions = flattenOptions(options)\n\n\t\treturn [\n\t\t\t...(localOptions.__CT_KEYS_ORDER__\n\t\t\t\t? Object.keys(localOptions.__CT_KEYS_ORDER__)\n\t\t\t\t\t\t.map((orderKey) => parseInt(orderKey, 10))\n\t\t\t\t\t\t.sort((a, b) => a - b)\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(orderKey) =>\n\t\t\t\t\t\t\t\tlocalOptions.__CT_KEYS_ORDER__[orderKey]\n\t\t\t\t\t\t)\n\t\t\t\t: Object.keys(localOptions)),\n\t\t]\n\t\t\t.filter((id) => id !== '__CT_KEYS_ORDER__')\n\t\t\t.map((id) => ({\n\t\t\t\t...localOptions[id],\n\t\t\t\tid,\n\t\t\t}))\n\t\t\t.reduce((chunksHolder, currentOptionDescriptor, index) => {\n\t\t\t\tif (chunksHolder.length === 0) {\n\t\t\t\t\treturn [[currentOptionDescriptor]]\n\t\t\t\t}\n\n\t\t\t\tlet lastChunk = chunksHolder[chunksHolder.length - 1]\n\n\t\t\t\tif (\n\t\t\t\t\t((lastChunk[0].options &&\n\t\t\t\t\t\tlastChunk[0].type === currentOptionDescriptor.type) ||\n\t\t\t\t\t\tcurrentOptionDescriptor.type === 'ct-tab-group' ||\n\t\t\t\t\t\tcurrentOptionDescriptor.type === 'ct-tab-group-sync') &&\n\t\t\t\t\t/**\n\t\t\t\t\t * Do not group rendering chunks for boxes\n\t\t\t\t\t */\n\t\t\t\t\tcurrentOptionDescriptor.type !== 'box' &&\n\t\t\t\t\t/**\n\t\t\t\t\t * Do not group rendering chunks for ct-popup's\n\t\t\t\t\t */\n\t\t\t\t\tcurrentOptionDescriptor.type !== 'ct-popup'\n\t\t\t\t) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...chunksHolder.slice(0, -1),\n\t\t\t\t\t\t[...lastChunk, currentOptionDescriptor],\n\t\t\t\t\t]\n\t\t\t\t}\n\n\t\t\t\treturn [...chunksHolder, [currentOptionDescriptor]]\n\t\t\t}, [])\n\t}, [options])\n\n\tlet finalResult = renderingChunks.map((renderingChunk) => {\n\t\t/**\n\t\t * We are dealing with a container\n\t\t */\n\t\tif (\n\t\t\trenderingChunk[0].options ||\n\t\t\trenderingChunk[0].type === 'ct-tab-group-sync'\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<GenericContainerType\n\t\t\t\t\tkey={renderingChunk[0].id}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tparentValue={parentValue}\n\t\t\t\t\trenderingChunk={renderingChunk}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\tpurpose={purpose}\n\t\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * We have a regular option type here\n\t\t */\n\t\treturn (\n\t\t\t<GenericOptionType\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\tpurpose={purpose}\n\t\t\t\tkey={renderingChunk[0].id}\n\t\t\t\tid={renderingChunk[0].id}\n\t\t\t\tvalue={value[renderingChunk[0].id]}\n\t\t\t\tvalues={value}\n\t\t\t\toption={renderingChunk[0]}\n\t\t\t\tonChangeFor={(id, newValue) => onChange(id, newValue)}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange(renderingChunk[0].id, newValue)\n\t\t\t\t}\n\t\t\t/>\n\t\t)\n\t})\n\n\treturn window.wp.components ? (\n\t\t<SlotFillProvider>{finalResult}</SlotFillProvider>\n\t) : (\n\t\tfinalResult\n\t)\n}\n\nexport default OptionsPanel\n","import { createElement, Component } from '@wordpress/element'\nimport _ from 'underscore'\nimport { __ } from 'ct-i18n'\nimport cls from 'classnames'\n\nconst InputWithOnlyNumbers = ({\n\tdisabled,\n\tclassName = '',\n\tvalue,\n\tonBlur,\n\tonChange,\n\tstep = 1,\n\tplaceholder = __('Default', 'blocksy'),\n}) => (\n\t<input\n\t\ttype=\"text\"\n\t\tvalue={value}\n\t\tonKeyDown={(e) => {\n\t\t\t// Allow: backspace, delete, tab, escape, enter and.\n\t\t\tif (\n\t\t\t\t// Allow Esc\n\t\t\t\t[46, 8, 9, 27, 13, 110, 190, 27].indexOf(e.keyCode) > -1 ||\n\t\t\t\t// Allow: Ctrl+A.\n\t\t\t\t(e.keyCode == 65 && e.ctrlKey === true) ||\n\t\t\t\t// Allow -.\n\t\t\t\te.keyCode == 109 ||\n\t\t\t\te.keyCode == 189 ||\n\t\t\t\te.keyCode == 173 ||\n\t\t\t\t// Allow: Ctrl+C.\n\t\t\t\t(e.keyCode == 67 && e.ctrlKey === true) ||\n\t\t\t\t// Allow: Ctrl+X.\n\t\t\t\t(e.keyCode == 88 && e.ctrlKey === true) ||\n\t\t\t\t// Allow: home, end, left, right.\n\t\t\t\t(e.keyCode >= 35 &&\n\t\t\t\t\te.keyCode <= 39 &&\n\t\t\t\t\te.keyCode !== 38 &&\n\t\t\t\t\te.keyCode !== 40)\n\t\t\t) {\n\t\t\t\t// Let it happen, don't do anything.\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet valueForComputation = '__unset__'\n\n\t\t\tif (value.toString().trim().length === 0) {\n\t\t\t\tvalueForComputation = 0\n\t\t\t} else {\n\t\t\t\tlet maybeValue = parseFloat(value)\n\n\t\t\t\tif (maybeValue || maybeValue === 0) {\n\t\t\t\t\tvalueForComputation = maybeValue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet actualStep = e.shiftKey ? step * 10 : step\n\n\t\t\t/**\n\t\t\t * Arrow up\n\t\t\t */\n\t\t\tif (e.keyCode === 38 && value !== '__unset__') {\n\t\t\t\tonChange(valueForComputation + actualStep, true)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Arrow down\n\t\t\t */\n\t\t\tif (e.keyCode === 40 && value !== '__unset__') {\n\t\t\t\tonChange(valueForComputation - actualStep, true)\n\t\t\t}\n\n\t\t\t// Ensure that it is a number and stop the keypress.\n\t\t\tif (\n\t\t\t\t(e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n\t\t\t\t(e.keyCode < 96 || e.keyCode > 105)\n\t\t\t) {\n\t\t\t\te.preventDefault()\n\t\t\t}\n\t\t}}\n\t\tonChange={({ target: { value } }) => onChange(value)}\n\t\tplaceholder={placeholder}\n\t\tonBlur={() => onBlur && onBlur}\n\t\tclassName={cls({\n\t\t\tinactive: value === 'auto',\n\t\t})}\n\t/>\n)\n\nexport default InputWithOnlyNumbers\n","import ctEvents from 'ct-events'\n\nlet deepLinkLocation = null\n\nexport const getDeepLinkPanel = () =>\n\tdeepLinkLocation ? deepLinkLocation.split(':')[1] : false\nexport const removeDeepLink = () => (deepLinkLocation = null)\n\nif (wp.customize) {\n\twp.customize.bind('ready', () => {\n\t\twp.customize.previewer.bind('ct-initiate-deep-link', (location) => {\n\t\t\tconst [section, panel] = location.split(':')\n\t\t\tconst expanded = Object.values(\n\t\t\t\twp.customize.section._value\n\t\t\t).find((e) => e.expanded())\n\n\t\t\tif (!expanded || expanded.id !== section) {\n\t\t\t\tdeepLinkLocation = location\n\t\t\t\twp.customize.section(section).expand()\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tctEvents.trigger('ct-deep-link-start', location)\n\t\t})\n\t})\n}\n","import {\n\tFragment,\n\tcreateElement,\n\tcreateContext,\n\tuseEffect,\n\tcreatePortal,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseReducer,\n\tuseCallback,\n} from '@wordpress/element'\nimport {\n\tgetDeepLinkPanel,\n\tremoveDeepLink,\n} from '../../customizer/preview-events'\nimport ctEvents from 'ct-events'\n\nexport const PanelContext = createContext({\n\ttitlePrefix: '',\n\tisOpen: false,\n\tisTransitioning: false,\n\n\tpreviousPanel: false,\n\n\tcurrentLevel: 1,\n\n\tsecondLevelTitlePrefix: '',\n\tsecondLevelTitleLabel: '',\n})\n\nconst panelsReducer = (state, action) => {\n\tif (action.type === 'PANEL_OPEN') {\n\t\tconst { panelId } = action.payload\n\n\t\tif (state.isOpen && state.isOpen === panelId) {\n\t\t\treturn state\n\t\t}\n\n\t\tif (state.isTransitioning) {\n\t\t\treturn state\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tisOpen: panelId,\n\t\t\tisTransitioning: panelId,\n\t\t\tcurrentLevel: 1,\n\t\t\t...(state.isOpen\n\t\t\t\t? {\n\t\t\t\t\t\tpreviousPanel: state.isOpen,\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t}\n\t}\n\n\tif (action.type === 'PANEL_RECEIVE_TITLE') {\n\t\tconst { titlePrefix } = action.payload\n\n\t\treturn {\n\t\t\t...state,\n\t\t\ttitlePrefix,\n\t\t}\n\t}\n\n\tif (action.type === 'PANEL_RECEIVE_META') {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.payload,\n\t\t}\n\t}\n\n\tif (action.type === 'PANEL_OPEN_SECOND_LEVEL') {\n\t\t// const { titlePrefix } = action.payload\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tcurrentLevel: 2,\n\t\t}\n\t}\n\n\tif (action.type === 'PANEL_CLOSE') {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...(state.currentLevel === 2\n\t\t\t\t? { currentLevel: 1 }\n\t\t\t\t: {\n\t\t\t\t\t\tisTransitioning: state.isOpen,\n\t\t\t\t\t\tisOpen: false,\n\t\t\t\t\t\tcurrentLevel: 1,\n\t\t\t\t  }),\n\t\t}\n\t}\n\n\tif (action.type === 'PANEL_FINISH_TRANSITIONING') {\n\t\treturn {\n\t\t\t...state,\n\t\t\tisTransitioning: false,\n\t\t\t...(state.isOpen && state.isOpen !== state.previousPanel\n\t\t\t\t? {\n\t\t\t\t\t\tpreviousPanel: false,\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t}\n\t}\n\n\treturn state\n}\n\nconst PanelLevel = ({\n\tid,\n\tchildren,\n\tcontainerRef,\n\tparentContainerRef,\n\tuseRefsAsWrappers,\n}) => {\n\tconst [panelsState, panelsDispatch] = useReducer(panelsReducer, {\n\t\tisOpen: false,\n\t\tisTransitioning: false,\n\t})\n\n\tuseEffect(() => {\n\t\tctEvents.on('ct-deep-link-start', (location) => {\n\t\t\tconst [_, panelId] = location.split(':')\n\n\t\t\tif (!panelId) {\n\t\t\t\tpanelsDispatch({\n\t\t\t\t\ttype: 'PANEL_CLOSE',\n\t\t\t\t})\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpanelsDispatch({\n\t\t\t\ttype: 'PANEL_OPEN',\n\t\t\t\tpayload: { panelId },\n\t\t\t})\n\t\t})\n\n\t\tif (getDeepLinkPanel()) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tpanelsDispatch({\n\t\t\t\t\ttype: 'PANEL_OPEN',\n\t\t\t\t\tpayload: { panelId: getDeepLinkPanel() },\n\t\t\t\t})\n\n\t\t\t\tremoveDeepLink()\n\t\t\t}, 300)\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<PanelContext.Provider\n\t\t\tvalue={{\n\t\t\t\tid,\n\t\t\t\tcontainerRef,\n\t\t\t\tpanelsState,\n\t\t\t\tpanelsDispatch,\n\t\t\t\tpanelsHelpers: {\n\t\t\t\t\tisOpenFor: (panelId) =>\n\t\t\t\t\t\tpanelsState.isOpen && panelId === panelsState.isOpen,\n\n\t\t\t\t\tisTransitioningFor: (panelId) =>\n\t\t\t\t\t\t(panelsState.previousPanel &&\n\t\t\t\t\t\t\tpanelId === panelsState.previousPanel) ||\n\t\t\t\t\t\t(panelsState.isTransitioning &&\n\t\t\t\t\t\t\tpanelId === panelsState.isTransitioning),\n\n\t\t\t\t\topen: (panelId) =>\n\t\t\t\t\t\tpanelsDispatch({\n\t\t\t\t\t\t\ttype: 'PANEL_OPEN',\n\t\t\t\t\t\t\tpayload: { panelId },\n\t\t\t\t\t\t}),\n\n\t\t\t\t\tclose: () => {\n\t\t\t\t\t\tpanelsDispatch({\n\t\t\t\t\t\t\ttype: 'PANEL_CLOSE',\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\n\t\t\t\t\tstopTransitioning: () => {\n\t\t\t\t\t\tpanelsDispatch({\n\t\t\t\t\t\t\ttype: 'PANEL_FINISH_TRANSITIONING',\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\n\t\t\t\t\tgetWrapperParent: () =>\n\t\t\t\t\t\tuseRefsAsWrappers\n\t\t\t\t\t\t\t? parentContainerRef.current\n\t\t\t\t\t\t\t: containerRef.current.closest(\n\t\t\t\t\t\t\t\t\t'[id=\"customize-theme-controls\"]'\n\t\t\t\t\t\t\t  ),\n\n\t\t\t\t\topenSecondLevel: () => {\n\t\t\t\t\t\tpanelsDispatch({\n\t\t\t\t\t\t\ttype: 'PANEL_OPEN_SECOND_LEVEL',\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\n\t\t\t\t\tgetParentOptionsWrapper: () =>\n\t\t\t\t\t\tuseRefsAsWrappers\n\t\t\t\t\t\t\t? containerRef.current\n\t\t\t\t\t\t\t: containerRef.current.closest(\n\t\t\t\t\t\t\t\t\t'.accordion-section-content'\n\t\t\t\t\t\t\t  ),\n\t\t\t\t},\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PanelContext.Provider>\n\t)\n}\n\nexport default PanelLevel\n","import { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nexport const capitalizeFirstLetter = str => {\n\tstr = str == null ? '' : String(str)\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport const getOptionLabelFor = ({ id, option, values, renderingConfig }) => {\n\tlet maybeLabel =\n\t\tObject.keys(option).indexOf('label') === -1\n\t\t\t? capitalizeFirstLetter(id).replace(/\\_|\\-/g, ' ')\n\t\t\t: option.label\n\n\tif (maybeLabel !== maybeLabel.toString()) {\n\t\tmaybeLabel =\n\t\t\tObject.keys(maybeLabel).reduce((approvedLabel, currentLabel) => {\n\t\t\t\tif (approvedLabel) {\n\t\t\t\t\treturn approvedLabel\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tmatchValuesWithCondition(\n\t\t\t\t\t\tnormalizeCondition(maybeLabel[currentLabel]),\n\t\t\t\t\t\tvalues\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn currentLabel\n\t\t\t\t}\n\n\t\t\t\treturn approvedLabel\n\t\t\t}, null) || Object.keys(maybeLabel)[0]\n\t}\n\n\t/**\n\t * Fuck JS\n\t */\n\tif (maybeLabel === '') {\n\t\tmaybeLabel = true\n\t}\n\n\tif (renderingConfig && !renderingConfig.label) {\n\t\tmaybeLabel = false\n\t}\n\n\treturn maybeLabel\n}\n","import _ from 'underscore'\n\nexport const getFirstLevelOptions = (options, hasInnerOptions = true) => {\n\tconst { __CT_KEYS_ORDER__, ...rest } = options\n\n\treturn Object.keys(rest).reduce((currentOptions, currentOptionId) => {\n\t\tif (!options[currentOptionId].type) {\n\t\t\treturn {\n\t\t\t\t...currentOptions,\n\t\t\t\t...getFirstLevelOptions(\n\t\t\t\t\toptions[currentOptionId],\n\t\t\t\t\thasInnerOptions\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\n\t\tif (options[currentOptionId].options) {\n\t\t\treturn {\n\t\t\t\t...currentOptions,\n\t\t\t\t...getFirstLevelOptions(\n\t\t\t\t\toptions[currentOptionId].options,\n\t\t\t\t\thasInnerOptions\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\n\t\tif (options[currentOptionId]['inner-options'] && hasInnerOptions) {\n\t\t\treturn {\n\t\t\t\t...currentOptions,\n\t\t\t\t[currentOptionId]: options[currentOptionId],\n\t\t\t\t...getFirstLevelOptions(\n\t\t\t\t\toptions[currentOptionId]['inner-options'],\n\t\t\t\t\thasInnerOptions\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t...currentOptions,\n\t\t\t[currentOptionId]: options[currentOptionId],\n\t\t}\n\t}, {})\n}\n\nexport const flattenOptions = (options) =>\n\tObject.keys(options).reduce(\n\t\t(result, currentId) => ({\n\t\t\t...result,\n\n\t\t\t...(options[currentId].type\n\t\t\t\t? { [currentId]: options[currentId] }\n\t\t\t\t: currentId === '__CT_KEYS_ORDER__'\n\t\t\t\t? { [currentId]: options[currentId] }\n\t\t\t\t: flattenOptions(options[currentId])),\n\t\t}),\n\t\t{}\n\t)\n\nexport const getValueFromInput = (\n\toptions,\n\tvalues,\n\tvalueGetter = null,\n\thasInnerOptions = true\n) => {\n\tlet firstLevelOptions = getFirstLevelOptions(options, hasInnerOptions)\n\n\treturn {\n\t\t...values,\n\t\t...Object.keys(firstLevelOptions).reduce(\n\t\t\t(currentValues, currentOptionId) => {\n\t\t\t\tlet actualValue = null\n\n\t\t\t\tif (Object.keys(values).indexOf(currentOptionId) > -1) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t_.isString(values[currentOptionId]) ||\n\t\t\t\t\t\t_.isNumber(values[currentOptionId])\n\t\t\t\t\t) {\n\t\t\t\t\t\tactualValue = values[currentOptionId]\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_.isObject(values[currentOptionId])) {\n\t\t\t\t\t\tactualValue = {\n\t\t\t\t\t\t\t...(firstLevelOptions[currentOptionId].value || {}),\n\t\t\t\t\t\t\t...values[currentOptionId],\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_.isArray(values[currentOptionId])) {\n\t\t\t\t\t\tactualValue = values[currentOptionId]\n\t\t\t\t\t\t\t? values[currentOptionId]\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t...(firstLevelOptions[currentOptionId]\n\t\t\t\t\t\t\t\t\t\t.value || []),\n\t\t\t\t\t\t\t\t\t// ...values[currentOptionId],\n\t\t\t\t\t\t\t  ]\n\t\t\t\t\t}\n\t\t\t\t} else if (valueGetter) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentValues,\n\t\t\t\t\t\t...valueGetter(\n\t\t\t\t\t\t\tcurrentOptionId,\n\t\t\t\t\t\t\tfirstLevelOptions[currentOptionId]\n\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\tObject.keys(firstLevelOptions[currentOptionId]).indexOf(\n\t\t\t\t\t\t\t'value'\n\t\t\t\t\t\t) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tactualValue = firstLevelOptions[currentOptionId].value\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactualValue = ''\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...currentValues,\n\t\t\t\t\t[currentOptionId]: actualValue,\n\t\t\t\t}\n\t\t\t},\n\t\t\t{}\n\t\t),\n\t}\n}\n","export const maybeTransformUnorderedChoices = choices =>\n\tArray.isArray(choices)\n\t\t? choices\n\t\t: Object.keys(choices).reduce(\n\t\t\t\t(current, choice) => [\n\t\t\t\t\t...current,\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: choice,\n\t\t\t\t\t\tvalue: choices[choice]\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t[]\n\t\t\t)\n","import { useMemo, useRef, useState, useEffect } from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\n\nexport function nullifyTransforms(el) {\n\tconst parseTransform = (el) =>\n\t\twindow\n\t\t\t.getComputedStyle(el)\n\t\t\t.transform.split(/\\(|,|\\)/)\n\t\t\t.slice(1, -1)\n\t\t\t.map((v) => parseFloat(v))\n\n\t// 1\n\tlet { top, left, width, height } = el.getBoundingClientRect()\n\tlet transformArr = parseTransform(el)\n\n\tif (transformArr.length == 6) {\n\t\t// 2D matrix\n\t\tconst t = transformArr\n\n\t\t// 2\n\t\tlet det = t[0] * t[3] - t[1] * t[2]\n\n\t\t// 3\n\t\treturn {\n\t\t\twidth: width / t[0],\n\t\t\theight: height / t[3],\n\t\t\tleft: (left * t[3] - top * t[2] + t[2] * t[5] - t[4] * t[3]) / det,\n\t\t\ttop: (-left * t[1] + top * t[0] + t[4] * t[1] - t[0] * t[5]) / det,\n\t\t}\n\t} else {\n\t\t// This case is not handled because it's very rarely needed anyway.\n\t\t// We just return the tranformed metrics, as they are, for consistency.\n\t\treturn { top, left, width, height }\n\t}\n}\n\nconst usePopoverMaker = ({\n\tcontentRef: contentRefProp,\n\tshouldCalculate = true,\n\tref,\n\tdefaultHeight = 0,\n} = {}) => {\n\tconst contentRef = useRef()\n\tconst [s, setState] = useState(null)\n\n\tconst refresh = () => {\n\t\tif (!shouldCalculate) {\n\t\t\treturn\n\t\t}\n\n\t\tsetState(Math.random())\n\t}\n\n\tconst refreshOnScroll = (e) => {\n\t\tif (!e.target || !e.target.classList || !e.target.classList.contains) {\n\t\t\treturn\n\t\t}\n\n\t\tlet modalRef = contentRefProp || contentRef\n\n\t\tif (e.target.classList.contains('ct-modal-scroll')) {\n\t\t\trefresh()\n\t\t}\n\n\t\tif (\n\t\t\tmodalRef &&\n\t\t\tmodalRef.current &&\n\t\t\t!modalRef.current.contains(e.target)\n\t\t) {\n\t\t\trefresh()\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\trefresh()\n\t\t}, 500)\n\n\t\twindow.addEventListener('resize', refresh)\n\t\twindow.addEventListener('scroll', refreshOnScroll, true)\n\n\t\tlet observer\n\n\t\tif (ref.current) {\n\t\t\tobserver = new window.ResizeObserver(refresh)\n\n\t\t\tobserver.observe(ref.current, {\n\t\t\t\tattributes: true,\n\t\t\t})\n\n\t\t\tif (ref.current.closest('.ct-tabs-scroll')) {\n\t\t\t\tobserver.observe(ref.current.closest('.ct-tabs-scroll'), {\n\t\t\t\t\tattributes: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (ref.current.closest('.ct-modal-scroll')) {\n\t\t\t\tobserver.observe(ref.current.closest('.ct-modal-scroll'), {\n\t\t\t\t\tattributes: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (ref.current.closest('.customize-pane-child')) {\n\t\t\t\tobserver.observe(ref.current.closest('.customize-pane-child'), {\n\t\t\t\t\tattributes: true,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (contentRefProp ? contentRefProp.current : contentRef.current) {\n\t\t\tif (!observer) {\n\t\t\t\tobserver = new window.ResizeObserver(refresh)\n\t\t\t}\n\n\t\t\tobserver.observe(\n\t\t\t\tcontentRefProp ? contentRefProp.current : contentRef.current,\n\t\t\t\t{\n\t\t\t\t\tattributes: true,\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', refresh)\n\t\t\twindow.removeEventListener('scroll', refreshOnScroll, true)\n\n\t\t\tif (observer) {\n\t\t\t\tobserver.disconnect()\n\t\t\t}\n\t\t}\n\t}, [shouldCalculate, contentRef.current, contentRefProp, ref.current])\n\n\tlet { right, yOffset, position, otherStyles } = useMemo(() => {\n\t\tlet right = 0\n\t\tlet yOffset = 0\n\t\tlet position = 'bottom'\n\t\tlet otherStyles = {}\n\n\t\tif (!shouldCalculate) {\n\t\t\treturn { yOffset, right, position }\n\t\t}\n\n\t\tif (ref.current) {\n\t\t\tlet rect = ref.current.getBoundingClientRect()\n\n\t\t\tlet el = ref.current.closest('.ct-select-input')\n\t\t\t\t? ref.current.closest('.ct-select-input')\n\t\t\t\t: ref.current\n\n\t\t\tlet maybeWidthFlag = getComputedStyle(el, ':before').content\n\n\t\t\tyOffset = rect.top + rect.height\n\t\t\tright = window.innerWidth - rect.right\n\n\t\t\tif (document.body.classList.contains('rtl')) {\n\t\t\t\tright = rect.left\n\t\t\t}\n\n\t\t\tif (maybeWidthFlag.indexOf('ref-width') > -1) {\n\t\t\t\tlet width = rect.width\n\n\t\t\t\tif (\n\t\t\t\t\tmaybeWidthFlag.indexOf('left') > -1 &&\n\t\t\t\t\tel.previousElementSibling\n\t\t\t\t) {\n\t\t\t\t\tif (document.body.classList.contains('rtl')) {\n\t\t\t\t\t\twidth =\n\t\t\t\t\t\t\tel.previousElementSibling.getBoundingClientRect()\n\t\t\t\t\t\t\t\t.right - rect.left\n\t\t\t\t\t} else {\n\t\t\t\t\t\twidth =\n\t\t\t\t\t\t\trect.right -\n\t\t\t\t\t\t\tel.previousElementSibling.getBoundingClientRect()\n\t\t\t\t\t\t\t\t.left\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (maybeWidthFlag.indexOf('right') > -1) {\n\t\t\t\t\tlet nextRect = el.parentNode // el.nextElementSibling || el.parentNode\n\t\t\t\t\t\t.getBoundingClientRect()\n\n\t\t\t\t\tif (document.body.classList.contains('rtl')) {\n\t\t\t\t\t\tright = nextRect.left\n\t\t\t\t\t\twidth = rect.right - nextRect.left\n\t\t\t\t\t} else {\n\t\t\t\t\t\tright = window.innerWidth - nextRect.right\n\t\t\t\t\t\twidth = nextRect.right - rect.left\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\totherStyles['--x-select-dropdown-width'] = `${width}px`\n\t\t\t}\n\n\t\t\tlet popoverRect =\n\t\t\t\t(contentRefProp && contentRefProp.current) || contentRef.current\n\t\t\t\t\t? nullifyTransforms(\n\t\t\t\t\t\t\tcontentRefProp\n\t\t\t\t\t\t\t\t? contentRefProp.current\n\t\t\t\t\t\t\t\t: contentRef.current\n\t\t\t\t\t  )\n\t\t\t\t\t: { height: defaultHeight }\n\n\t\t\tif (\n\t\t\t\tyOffset + popoverRect.height > window.innerHeight &&\n\t\t\t\trect.top - 15 > popoverRect.height\n\t\t\t) {\n\t\t\t\tposition = 'top'\n\t\t\t\tyOffset = window.innerHeight - rect.bottom + rect.height\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tyOffset + popoverRect.height > window.innerHeight &&\n\t\t\t\tposition === 'bottom'\n\t\t\t) {\n\t\t\t\tposition = 'top'\n\t\t\t\tyOffset = 0\n\t\t\t}\n\t\t}\n\n\t\treturn { yOffset, right, position, otherStyles }\n\t}, [\n\t\ts,\n\t\tshouldCalculate,\n\t\tref,\n\t\tref.current,\n\t\tcontentRefProp,\n\t\tcontentRef.current,\n\t\tdefaultHeight,\n\t])\n\n\treturn {\n\t\trefreshPopover: refresh,\n\t\tstyles: {\n\t\t\t'--modal-y-offset': `${yOffset}px`,\n\t\t\t'--modal-x-offset': `${right}px`,\n\t\t\t...otherStyles,\n\t\t\t// [position === 'bottom' ? 'top' : 'bottom']: `${yOffset}px`,\n\t\t\t// right: `${right}px`,\n\t\t},\n\n\t\tposition,\n\n\t\tpopoverProps: {\n\t\t\tref: contentRefProp || contentRef,\n\t\t\t...(position\n\t\t\t\t? {\n\t\t\t\t\t\t'data-position': position,\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t},\n\t}\n}\n\nexport default usePopoverMaker\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","import { colord } from 'colord'\n\nexport const normalizeColor = (color) => {\n\tconst parsedColor = colord(color)\n\n\tif (!parsedColor.parsed) {\n\t\treturn color\n\t}\n\n\tif (color[0] === '#' && color.length <= 7) {\n\t\treturn color\n\t}\n\n\tif (parsedColor.rgba.a === 1) {\n\t\treturn color\n\t}\n\n\treturn parsedColor.toRgbString()\n}\n","import { createElement, Component, createRef } from '@wordpress/element'\nimport { ColorPicker } from '@wordpress/components'\nimport _ from '_'\nimport $ from 'jquery'\nimport { __ } from 'ct-i18n'\n\nimport { normalizeColor } from '../../helpers/normalize-color'\n\nconst ColorPickerIris = ({ onChange, value, value: { color } }) => {\n\tconst isNew = wp.components.GradientPicker\n\n\treturn (\n\t\t<div\n\t\t\tclassName={\n\t\t\t\tisNew\n\t\t\t\t\t? 'ct-gutenberg-color-picker-new'\n\t\t\t\t\t: 'ct-gutenberg-color-picker'\n\t\t\t}>\n\t\t\t<ColorPicker\n\t\t\t\tcolor={color}\n\t\t\t\tenableAlpha\n\t\t\t\t{...(isNew\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tonChange: (color) => {\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\tcolor: normalizeColor(color),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tonChangeComplete: (result) => {\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\tresult.rgb.a === 1\n\t\t\t\t\t\t\t\t\t\t\t? result.hex\n\t\t\t\t\t\t\t\t\t\t\t: `rgba(${result.rgb.r}, ${result.rgb.g}, ${result.rgb.b}, ${result.rgb.a})`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  })}\n\t\t\t/>\n\n\t\t\t<div className=\"ct-color-picker-value\">\n\t\t\t\t<input\n\t\t\t\t\tonChange={({ target: { value: color } }) => {\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\tcolor: normalizeColor(color),\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={normalizeColor(color)}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default ColorPickerIris\n","import {\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tcreateRef,\n\tFragment,\n} from '@wordpress/element'\nimport ColorPickerIris from './color-picker-iris.js'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\n\nimport { nullifyTransforms } from '../../helpers/usePopoverMaker'\n\nexport const getNoColorPropFor = (option) =>\n\toption.noColorTransparent ? 'transparent' : `CT_CSS_SKIP_RULE`\n\nconst focusOrOpenCustomizerSectionProps = (section) => ({\n\ttarget: '_blank',\n\thref: `${\n\t\twindow.ct_localizations ? window.ct_localizations.customizer_url : ''\n\t}${encodeURIComponent(`[section]=${section}`)}`,\n\t...(wp && wp.customize && wp.customize.section\n\t\t? {\n\t\t\t\tonClick: (e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\twp.customize.section(section).expand()\n\t\t\t\t},\n\t\t  }\n\t\t: {}),\n})\n\nconst getLeftForEl = (modal, el) => {\n\tif (!modal) return\n\tif (!el) return\n\n\tlet style = getComputedStyle(modal)\n\n\tlet wrapperLeft = parseFloat(style.left)\n\n\tel = el.firstElementChild.getBoundingClientRect()\n\n\treturn {\n\t\t'--option-modal-arrow-position': `${\n\t\t\tel.left + el.width / 2 - wrapperLeft - 6\n\t\t}px`,\n\t}\n}\n\nconst PickerModal = ({\n\tcontainerRef,\n\tel,\n\tvalue,\n\tpicker,\n\tonChange,\n\toption,\n\tstyle,\n\twrapperProps = {},\n\tinline_modal,\n\tappendToBody,\n\tinheritValue,\n}) => {\n\tconst getValueForPicker = useMemo(() => {\n\t\tif (value.color === getNoColorPropFor(option)) {\n\t\t\treturn { color: '', key: 'empty' }\n\t\t}\n\n\t\tif ((value.color || '').indexOf(getNoColorPropFor(option)) > -1) {\n\t\t\treturn {\n\t\t\t\tkey: '',\n\t\t\t\tcolor: '',\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t(value.color || '').indexOf(getNoColorPropFor(option)) > -1 &&\n\t\t\tpicker.inherit\n\t\t) {\n\t\t\treturn {\n\t\t\t\tkey: 'picker' + inheritValue,\n\t\t\t\tcolor: getComputedStyle(document.documentElement)\n\t\t\t\t\t.getPropertyValue(\n\t\t\t\t\t\tinheritValue.replace(/var\\(/, '').replace(/\\)/, '')\n\t\t\t\t\t)\n\t\t\t\t\t.trim()\n\t\t\t\t\t.replace(/\\s/g, ''),\n\t\t\t}\n\t\t}\n\n\t\tif ((value.color || '').indexOf('var') > -1) {\n\t\t\treturn {\n\t\t\t\tkey: 'var' + value.color,\n\t\t\t\tcolor: getComputedStyle(document.documentElement)\n\t\t\t\t\t.getPropertyValue(\n\t\t\t\t\t\tvalue.color.replace(/var\\(/, '').replace(/\\)/, '')\n\t\t\t\t\t)\n\t\t\t\t\t.trim()\n\t\t\t\t\t.replace(/\\s/g, ''),\n\t\t\t}\n\t\t}\n\n\t\treturn { key: 'color', color: value.color }\n\t}, [value, option, picker, inheritValue])\n\n\tlet valueToCheck = value.color\n\n\tif (\n\t\t(value.color || '').indexOf(getNoColorPropFor(option)) > -1 &&\n\t\tpicker.inherit\n\t) {\n\t\tvalueToCheck = inheritValue\n\t}\n\n\tconst arrowLeft = useMemo(\n\t\t() =>\n\t\t\twrapperProps.ref &&\n\t\t\twrapperProps.ref.current &&\n\t\t\tel &&\n\t\t\tgetLeftForEl(wrapperProps.ref.current, el.current),\n\t\t[wrapperProps.ref && wrapperProps.ref.current, el && el.current]\n\t)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\tclassName={classnames(\n\t\t\t\t\t`ct-color-picker-modal`,\n\t\t\t\t\t{\n\t\t\t\t\t\t'ct-option-modal': !inline_modal && appendToBody,\n\t\t\t\t\t},\n\t\t\t\t\toption.modalClassName\n\t\t\t\t)}\n\t\t\t\tstyle={{\n\t\t\t\t\t...arrowLeft,\n\t\t\t\t\t...(style ? style : {}),\n\t\t\t\t}}\n\t\t\t\t{...wrapperProps}>\n\t\t\t\t{!option.predefined && (\n\t\t\t\t\t<div className=\"ct-color-picker-top\">\n\t\t\t\t\t\t<ul className=\"ct-color-picker-skins\">\n\t\t\t\t\t\t\t{[\n\t\t\t\t\t\t\t\t'paletteColor1',\n\t\t\t\t\t\t\t\t'paletteColor2',\n\t\t\t\t\t\t\t\t'paletteColor3',\n\t\t\t\t\t\t\t\t'paletteColor4',\n\t\t\t\t\t\t\t\t'paletteColor5',\n\t\t\t\t\t\t\t\t'paletteColor6',\n\t\t\t\t\t\t\t\t'paletteColor7',\n\t\t\t\t\t\t\t\t'paletteColor8',\n\t\t\t\t\t\t\t].map((color) => (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tkey={color}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackground: `var(--${color})`,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\t\t\t\tvalueToCheck === `var(--${color})`,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tcolor: `var(--${color})`,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<div className=\"ct-tooltip-top\">\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor1: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 1',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor2: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 2',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor3: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 3',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor4: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor5: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 5',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor6: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 6',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor7: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 7',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tpaletteColor8: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Color 8',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}[color]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t\t{!option.skipNoColorPill && false && (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tcolor: getNoColorPropFor(option),\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={classnames('ct-no-color-pill', {\n\t\t\t\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\t\t\t\tvalue.color ===\n\t\t\t\t\t\t\t\t\t\t\tgetNoColorPropFor(option),\n\t\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t\t\t\t\t\t{__('No Color', 'blocksy')}\n\t\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<ColorPickerIris\n\t\t\t\t\tonChange={(v) => onChange(v)}\n\t\t\t\t\tvalue={{\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tcolor: getValueForPicker.color,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Fragment>\n\t)\n}\n\nexport default PickerModal\n","import {\n\tcreateElement,\n\tComponent,\n\tcreatePortal,\n\tuseRef,\n\tcreateRef,\n} from '@wordpress/element'\nimport PickerModal, { getNoColorPropFor } from './picker-modal'\nimport { Transition } from 'react-spring/renderprops'\nimport bezierEasing from 'bezier-easing'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nimport usePopoverMaker from '../../helpers/usePopoverMaker'\n\nconst resolveInherit = (picker, option, values) => {\n\tif (typeof picker.inherit === 'string') {\n\t\tif (picker.inherit.indexOf('self') > -1) {\n\t\t\tconst currentValue = values[option.id] || option.value\n\t\t\tconst pickerToInheritFrom = picker.inherit.split(':')[1]\n\n\t\t\tlet maybeNextValue = currentValue[pickerToInheritFrom].color\n\n\t\t\tif (maybeNextValue.indexOf('CT_CSS_SKIP_RULE') > -1) {\n\t\t\t\tmaybeNextValue = option.pickers.find(\n\t\t\t\t\t({ id }) => id === pickerToInheritFrom\n\t\t\t\t).inherit\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackground: maybeNextValue || '',\n\t\t\t}\n\t\t}\n\n\t\treturn { background: picker.inherit }\n\t}\n\n\tlet background = Object.keys(picker.inherit).reduce(\n\t\t(maybeResult, currentVar) => {\n\t\t\tif (maybeResult) {\n\t\t\t\treturn maybeResult\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmatchValuesWithCondition(\n\t\t\t\t\tnormalizeCondition(picker.inherit[currentVar]),\n\t\t\t\t\tpicker.inherit_source === 'global'\n\t\t\t\t\t\t? Object.keys(picker.inherit[currentVar]).reduce(\n\t\t\t\t\t\t\t\t(current, key) => ({\n\t\t\t\t\t\t\t\t\t...current,\n\t\t\t\t\t\t\t\t\t[key]: wp.customize(key)(),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: values\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn currentVar\n\t\t\t}\n\n\t\t\treturn maybeResult\n\t\t},\n\t\tnull\n\t)\n\n\tif (!background) {\n\t\treturn {}\n\t}\n\n\treturn {\n\t\tbackground,\n\t}\n}\n\nconst SinglePicker = ({\n\toption,\n\tvalue,\n\tonChange,\n\tpicker,\n\n\tonPickingChange,\n\tstopTransitioning,\n\n\tinnerRef,\n\n\tcontainerRef,\n\tmodalRef,\n\n\tisTransitioning,\n\tisPicking,\n\tvalues,\n}) => {\n\tconst el = useRef()\n\n\tconst { appendToBody = true } = option\n\n\tconst { refreshPopover, styles, popoverProps } = usePopoverMaker({\n\t\tcontentRef: modalRef,\n\t\tref: containerRef || {},\n\t\tdefaultHeight: 379,\n\t\tshouldCalculate: !option.inline_modal || appendToBody,\n\t})\n\n\tif (option.inline_modal) {\n\t\treturn (\n\t\t\t<PickerModal\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\toption={option}\n\t\t\t\tonChange={onChange}\n\t\t\t\tpicker={picker}\n\t\t\t\tvalue={value}\n\t\t\t\tinline_modal={!!option.inline_modal}\n\t\t\t/>\n\t\t)\n\t}\n\n\tlet modal = null\n\n\tif (\n\t\tisTransitioning === picker.id ||\n\t\t(isPicking || '').split(':')[0] === picker.id\n\t) {\n\t\tmodal = createPortal(\n\t\t\t<Transition\n\t\t\t\titems={isPicking}\n\t\t\t\tonRest={() => stopTransitioning()}\n\t\t\t\tconfig={{\n\t\t\t\t\tduration: 100,\n\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t}}\n\t\t\t\tfrom={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: { opacity: 1 }\n\t\t\t\t}\n\t\t\t\tenter={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t}\n\t\t\t\tleave={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t}>\n\t\t\t\t{(isPicking) =>\n\t\t\t\t\t(isPicking || '').split(':')[0] === picker.id &&\n\t\t\t\t\t((props) => (\n\t\t\t\t\t\t<PickerModal\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\t\t...(appendToBody ? styles : {}),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tpicker={picker}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\tel={el}\n\t\t\t\t\t\t\tinheritValue={\n\t\t\t\t\t\t\t\tpicker.inherit\n\t\t\t\t\t\t\t\t\t? resolveInherit(picker, option, values)\n\t\t\t\t\t\t\t\t\t\t\t.background\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twrapperProps={\n\t\t\t\t\t\t\t\tappendToBody\n\t\t\t\t\t\t\t\t\t? popoverProps\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\tref: modalRef,\n\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tappendToBody={appendToBody}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t</Transition>,\n\t\t\tappendToBody\n\t\t\t\t? document.body\n\t\t\t\t: el.current.closest('section').parentNode\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={(instance) => {\n\t\t\t\tel.current = instance\n\n\t\t\t\tif (innerRef) {\n\t\t\t\t\tinnerRef.current = instance\n\t\t\t\t}\n\t\t\t}}\n\t\t\tclassName={classnames('ct-color-picker-single', {})}>\n\t\t\t<span tabIndex=\"0\">\n\t\t\t\t<span\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t[`ct-no-color`]:\n\t\t\t\t\t\t\t(value || {}).color === getNoColorPropFor(option),\n\n\t\t\t\t\t\t[`ct-color-inherit`]:\n\t\t\t\t\t\t\t(value || { color: '' }).color.indexOf('INHERIT') >\n\t\t\t\t\t\t\t-1,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\tif (option.skipModal) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\trefreshPopover()\n\n\t\t\t\t\t\tlet futureIsPicking = isPicking\n\t\t\t\t\t\t\t? isPicking.split(':')[0] === picker.id\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: `${picker.id}:${isPicking.split(':')[0]}`\n\t\t\t\t\t\t\t: picker.id\n\n\t\t\t\t\t\tonPickingChange(futureIsPicking)\n\t\t\t\t\t}}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t((value || {}).color || '').indexOf(\n\t\t\t\t\t\t\tgetNoColorPropFor(option)\n\t\t\t\t\t\t) === -1\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tbackground: (value || {}).color,\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t...(picker.inherit &&\n\t\t\t\t\t\t\t\t\t(value || {}).color !==\n\t\t\t\t\t\t\t\t\t\tgetNoColorPropFor(option)\n\t\t\t\t\t\t\t\t\t\t? resolveInherit(picker, option, values)\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t}>\n\t\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t\t{(value || { color: '' }).color.indexOf('INHERIT') > -1\n\t\t\t\t\t\t\t? __('Inherited', 'blocksy')\n\t\t\t\t\t\t\t: picker.title}\n\t\t\t\t\t</i>\n\n\t\t\t\t\t{(value || { color: '' }).color.indexOf('INHERIT') > -1 && (\n\t\t\t\t\t\t<svg width=\"25\" height=\"25\" viewBox=\"0 0 30 30\">\n\t\t\t\t\t\t\t<path d=\"M15 3c-3 0-5.7 1.1-7.8 2.9-.4.3-.5.9-.2 1.4.3.4 1 .5 1.4.2h.1C10.3 5.9 12.5 5 15 5c5.2 0 9.5 3.9 10 9h-3l4 6 4-6h-3.1C26.4 7.9 21.3 3 15 3zM4 10l-4 6h3.1c.5 6.1 5.6 11 11.9 11 3 0 5.7-1.1 7.8-2.9.4-.3.5-1 .2-1.4-.3-.4-1-.5-1.4-.2h-.1c-1.7 1.5-4 2.4-6.5 2.4-5.2 0-9.5-3.9-10-9h3L4 10z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</span>\n\n\t\t\t{modal}\n\t\t</div>\n\t)\n}\n\nexport default SinglePicker\n","import {\n\tcreateElement,\n\tComponent,\n\tuseContext,\n\tcreateContext,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport {\n\tSortableContainer,\n\tSortableElement,\n\tSortableHandle,\n} from 'react-sortable-hoc'\n\nimport arrayMove from 'array-move'\n\nimport { __ } from 'ct-i18n'\n\nimport OptionsPanel from '../OptionsPanel'\nimport { getValueFromInput } from '../helpers/get-value-from-input'\nimport nanoid from 'nanoid'\n\nconst LayerControls = SortableHandle(({ items, onChange, value }) => {\n\tconst { removeForId, addForId, option, toggleOptionsPanel } = useContext(\n\t\tLayersContext\n\t)\n\n\treturn (\n\t\t<div className=\"ct-layer-controls\">\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"ct-visibility\"\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tonChange(\n\t\t\t\t\t\titems.map((l) =>\n\t\t\t\t\t\t\tl.__id === value.__id\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\tenabled: !{\n\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t}.enabled,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: l\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t}}>\n\t\t\t\t<svg width=\"13px\" height=\"13px\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t<path d=\"M12,4C4.1,4,0,12,0,12s3.1,8,12,8c8.1,0,12-8,12-8S20.1,4,12,4z M12,17c-2.9,0-5-2.2-5-5c0-2.8,2.1-5,5-5s5,2.2,5,5C17,14.8,14.9,17,12,17z M12,9c-1.7,0-3,1.4-3,3c0,1.6,1.3,3,3,3s3-1.4,3-3C15,10.4,13.7,9,12,9z\" />\n\t\t\t\t</svg>\n\t\t\t</button>\n\n\t\t\t<div className=\"ct-layer-label\">\n\t\t\t\t<span>{window._.template(option['preview-template'])(value)}</span>\n\t\t\t</div>\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"ct-clone\"\n\t\t\t\tonClick={() => addForId(value)}>\n\t\t\t\t<svg width=\"11px\" height=\"11px\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t<path d=\"M23,24H7.7c-0.6,0-1-0.4-1-1V7.7c0-0.6,0.4-1,1-1H23c0.6,0,1,0.4,1,1V23C24,23.6,23.6,24,23,24z M8.7,22H22V8.7 H8.7V22z\" />\n\t\t\t\t\t<path d=\"M17.3,16.3c0,0.6-0.4,1-1,1H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h15.3c0.6,0,1,0.4,1,1V16.3z\" />\n\t\t\t\t</svg>\n\n\t\t\t\t<i className=\"ct-tooltip-top\">{__('Clone Item', 'blocksy')}</i>\n\t\t\t</button>\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"ct-remove\"\n\t\t\t\tonClick={() => removeForId(value.__id)}\n\t\t\t/>\n\n\t\t\t{option['inner-options'] && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ct-toggle\"\n\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\ttoggleOptionsPanel(value.__id)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t)\n})\n\nconst valueWithUniqueIds = (value) =>\n\tvalue.map((singleItem) => ({\n\t\t...singleItem,\n\n\t\t...(singleItem.__id\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\t__id: nanoid(),\n\t\t\t  }),\n\t}))\n\nconst getDefaultState = () => ({\n\tcurrentlyPickedItem: null,\n\tisDragging: false,\n\tisOpen: false,\n})\n\nexport const LayersContext = createContext(getDefaultState())\n\nconst { Provider, Consumer } = LayersContext\n\nclass SingleItem extends Component {\n\tstate = {\n\t\tisOpen: false,\n\t}\n\n\trender() {\n\t\tconst { value, items, onChange } = this.props\n\n\t\treturn (\n\t\t\t<Consumer>\n\t\t\t\t{({ option, isDragging, isOpen, parentValue }) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName={classnames('ct-layer', option.itemClass, {\n\t\t\t\t\t\t\t[`ct-disabled`]: !{ enabled: true, ...value }\n\t\t\t\t\t\t\t\t.enabled,\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t<LayerControls\n\t\t\t\t\t\t\titems={items}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{isOpen === value.__id &&\n\t\t\t\t\t\t\t(!isDragging ||\n\t\t\t\t\t\t\t\t(isDragging && isDragging !== isOpen)) && (\n\t\t\t\t\t\t\t\t<div className=\"ct-layer-content\">\n\t\t\t\t\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\t\tparentValue={parentValue}\n\t\t\t\t\t\t\t\t\t\tonChange={(key, newValue) => {\n\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\titems.map((l) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tl.__id === value.__id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[key]: newValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: l\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvalue={getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\toption['inner-options'],\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t...(option.value.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === value.id\n\t\t\t\t\t\t\t\t\t\t\t\t).length > 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t? option.value.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.id === id\n\t\t\t\t\t\t\t\t\t\t\t\t\t  )[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titems\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t__id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) => __id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.__id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t  ]\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\toptions={option['inner-options']}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</li>\n\t\t\t\t)}\n\t\t\t</Consumer>\n\t\t)\n\t}\n}\n\nconst SortableItem = SortableElement(SingleItem)\n\nconst SortableList = SortableContainer(({ items, onChange }) => (\n\t<Consumer>\n\t\t{({ option }) => (\n\t\t\t<ul className=\"ct-layers\">\n\t\t\t\t{items.map((value, index) => (\n\t\t\t\t\t<SortableItem\n\t\t\t\t\t\tkey={value.__id}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tdisabled={!!option.disableDrag}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t)}\n\t</Consumer>\n))\n\nconst Layers = ({ value, option, onChange, values }) => {\n\tconst [state, setState] = useState(getDefaultState())\n\n\tconst localOnChange = (v) => {\n\t\tonChange(v)\n\t}\n\n\tconst addForId = (val = {}) => {\n\t\tlocalOnChange([\n\t\t\t...(value || []),\n\t\t\t{\n\t\t\t\tenabled: true,\n\t\t\t\t...getValueFromInput(option['inner-options'] || {}, {}),\n\t\t\t\t...val,\n\t\t\t\t__id: nanoid(),\n\t\t\t},\n\t\t])\n\t}\n\n\tconst computedValue = valueWithUniqueIds(value)\n\n\treturn (\n\t\t<Provider\n\t\t\tvalue={{\n\t\t\t\t...state,\n\t\t\t\tparentValue: values,\n\t\t\t\taddForId,\n\t\t\t\toption,\n\n\t\t\t\tremoveForId: (idToRemove) =>\n\t\t\t\t\tlocalOnChange(\n\t\t\t\t\t\tvalueWithUniqueIds(value).filter(\n\t\t\t\t\t\t\t({ __id: id }) => id !== idToRemove\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\n\t\t\t\ttoggleOptionsPanel: (idToAdd) => {\n\t\t\t\t\tif (value.length > 0 && !value[0].__id) {\n\t\t\t\t\t\tlocalOnChange(computedValue)\n\t\t\t\t\t}\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tisOpen: state.isOpen === idToAdd ? false : idToAdd,\n\t\t\t\t\t}))\n\t\t\t\t},\n\t\t\t}}>\n\t\t\t<SortableList\n\t\t\t\tuseDragHandle\n\t\t\t\tdistance={3}\n\t\t\t\tlockAxis=\"y\"\n\t\t\t\titems={computedValue}\n\t\t\t\tonChange={(v) => {\n\t\t\t\t\tlocalOnChange(v)\n\t\t\t\t}}\n\t\t\t\thelperContainer={() =>\n\t\t\t\t\tdocument.querySelector('#customize-theme-controls') ||\n\t\t\t\t\tdocument.body\n\t\t\t\t}\n\t\t\t\tonSortEnd={({ oldIndex, newIndex }) => {\n\t\t\t\t\tlocalOnChange(arrayMove(computedValue, oldIndex, newIndex))\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tisDragging: false,\n\t\t\t\t\t}))\n\t\t\t\t}}\n\t\t\t\tupdateBeforeSortStart={({ index }) => {\n\t\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\t\tif (value.length > 0 && !value[0].__id) {\n\t\t\t\t\t\t\twp.customize &&\n\t\t\t\t\t\t\t\twp.customize.previewer &&\n\t\t\t\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t\t\t\t'ct:sync:refresh_partial',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tshouldSkip: true,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\tlocalOnChange(computedValue)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tisDragging: computedValue[index].__id,\n\t\t\t\t\t\t}))\n\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t/>\n\n\t\t\t<button\n\t\t\t\tclassName=\"button\"\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\taddForId()\n\t\t\t\t}}>\n\t\t\t\t{__('Add New Item', 'blocksy')}\n\t\t\t</button>\n\t\t</Provider>\n\t)\n}\n\nexport default Layers\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\nimport GenericOptionType from '../../GenericOptionType'\n\nexport const patternsList = [\n\t{\n\t\tid: 'type-1',\n\t\ttitle: __('Hideout', 'blocksy'),\n\t\tsrc: 'patterns/hideout.svg',\n\t},\n\n\t{\n\t\tid: 'type-2',\n\t\ttitle: __('Triangles', 'blocksy'),\n\t\tsrc: 'patterns/triangles.svg',\n\t},\n\n\t{\n\t\tid: 'type-3',\n\t\ttitle: __('Bubbles', 'blocksy'),\n\t\tsrc: 'patterns/bubbles.svg',\n\t},\n\n\t{\n\t\tid: 'type-4',\n\t\ttitle: __('Wiggle', 'blocksy'),\n\t\tsrc: 'patterns/wiggle.svg',\n\t},\n\n\t{\n\t\tid: 'type-5',\n\t\ttitle: __('Polka Dots', 'blocksy'),\n\t\tsrc: 'patterns/polka-dots.svg',\n\t},\n\n\t{\n\t\tid: 'type-6',\n\t\ttitle: __('Overlaping Circles', 'blocksy'),\n\t\tsrc: 'patterns/overlaping-circles.svg',\n\t},\n\n\t{\n\t\tid: 'type-7',\n\t\ttitle: __('Texture', 'blocksy'),\n\t\tsrc: 'patterns/texture.svg',\n\t},\n\n\t{\n\t\tid: 'type-8',\n\t\ttitle: __('Diagonal Lines', 'blocksy'),\n\t\tsrc: 'patterns/diagonal-lines.svg',\n\t},\n\n\t{\n\t\tid: 'type-9',\n\t\ttitle: __('Rain', 'blocksy'),\n\t\tsrc: 'patterns/rain.svg',\n\t},\n\n\t{\n\t\tid: 'type-10',\n\t\ttitle: __('Stripes', 'blocksy'),\n\t\tsrc: 'patterns/stripes.svg',\n\t},\n\n\t{\n\t\tid: 'type-11',\n\t\ttitle: __('Diagonal Stripes', 'blocksy'),\n\t\tsrc: 'patterns/diagonal-stripes.svg',\n\t},\n\n\t{\n\t\tid: 'type-12',\n\t\ttitle: __('Intersecting Circles', 'blocksy'),\n\t\tsrc: 'patterns/intersecting-circles.svg',\n\t},\n\n\t{\n\t\tid: 'type-13',\n\t\ttitle: __('Bank Note', 'blocksy'),\n\t\tsrc: 'patterns/bank-note.svg',\n\t},\n\n\t{\n\t\tid: 'type-14',\n\t\ttitle: __('Zig Zag', 'blocksy'),\n\t\tsrc: 'patterns/zig-zag.svg',\n\t},\n\n\t{\n\t\tid: 'type-15',\n\t\ttitle: __('Endless Clouds', 'blocksy'),\n\t\tsrc: 'patterns/endless-clouds.svg',\n\t},\n\n\t{\n\t\tid: 'type-16',\n\t\ttitle: __('Honey Comb', 'blocksy'),\n\t\tsrc: 'patterns/honey-comb.svg',\n\t},\n\n\t{\n\t\tid: 'type-17',\n\t\ttitle: __('Cross Stripes', 'blocksy'),\n\t\tsrc: 'patterns/cross-stripes.svg',\n\t},\n\n\t{\n\t\tid: 'type-18',\n\t\ttitle: __('Autumn', 'blocksy'),\n\t\tsrc: 'patterns/autumn.svg',\n\t},\n]\n\nexport const getUrlForPattern = (id) =>\n\t(window.ct_localizations || ct_customizer_localizations).static_public_url +\n\t`images/${patternsList.find((p) => p.id === id).src}`\n\nconst PatternPicker = ({ option, value, onChange }) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t<ul className=\"ct-patterns-list\">\n\t\t\t\t{patternsList.map((singlePattern) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tbackground_pattern: singlePattern.id,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\tsinglePattern.id === value.background_pattern,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tkey={singlePattern.id}\n\t\t\t\t\t\ttitle={singlePattern.title}>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\twindow.ct_localizations ||\n\t\t\t\t\t\t\t\t\tct_customizer_localizations\n\t\t\t\t\t\t\t\t).static_public_url +\n\t\t\t\t\t\t\t\t`images/${singlePattern.src}`\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t\t<GenericOptionType\n\t\t\t\tvalue={value['patternColor']}\n\t\t\t\tvalues={value}\n\t\t\t\toption={{\n\t\t\t\t\tid: 'patternColor',\n\t\t\t\t\tlabel: __('Pattern Color', 'blocksy'),\n\t\t\t\t\ttype: 'ct-color-picker',\n\t\t\t\t\tdesign: 'inline',\n\t\t\t\t\tvalue: option.value['patternColor'],\n\t\t\t\t\tpickers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Initial', 'blocksy'),\n\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tskipNoColorPill: true,\n\t\t\t\t\tskipArrow: true,\n\t\t\t\t\tappendToBody: false,\n\t\t\t\t}}\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tpatternColor: newValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t</Fragment>\n\t)\n}\n\nexport default PatternPicker\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\nimport GenericOptionType from '../../GenericOptionType'\n\nconst ImagePicker = ({ option, value, onChange, setOutsideClickFreezed }) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t<GenericOptionType\n\t\t\t\tvalue={value['background_image']}\n\t\t\t\tvalues={value}\n\t\t\t\toption={{\n\t\t\t\t\tid: 'background_image',\n\t\t\t\t\tlabel: false,\n\t\t\t\t\ttype: 'ct-image-uploader',\n\t\t\t\t\tvalue: option.value['background_image'],\n\t\t\t\t\thas_position_picker: true,\n\t\t\t\t\temptyLabel: __('Select Image', 'blocksy'),\n\t\t\t\t\tfilledLabel: __('Change Image', 'blocksy'),\n\t\t\t\t\tonFrameOpen: () => {\n\t\t\t\t\t\tsetOutsideClickFreezed(true)\n\t\t\t\t\t},\n\n\t\t\t\t\tonFrameClose: () => {\n\t\t\t\t\t\tsetOutsideClickFreezed(false)\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tbackground_image: newValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<GenericOptionType\n\t\t\t\tvalue={value['background_repeat']}\n\t\t\t\tvalues={value}\n\t\t\t\toption={{\n\t\t\t\t\tid: 'background_repeat',\n\t\t\t\t\tlabel: __('Background Repeat', 'blocksy'),\n\t\t\t\t\tattr: { 'data-type': 'repeat' },\n\t\t\t\t\ttype: 'ct-radio',\n\t\t\t\t\tview: 'text',\n\t\t\t\t\tdesign: 'block',\n\t\t\t\t\tvalue: option.value['background_repeat'],\n\t\t\t\t\tchoices: {\n\t\t\t\t\t\trepeat: `<svg viewBox=\"0 0 16 16\"><path d=\"M0,0h4v4H0V0z M6,0h4v4H6V0z M12,0h4v4h-4V0z M0,6h4v4H0V6z M6,6h4v4H6V6z M12,6h4v4h-4V6z M0,12h4v4H0V12z M6,12h4v4H6V12zM12,12h4v4h-4V12z\"/></svg>\n\t\t\t\t\t\t\t<span class=\"ct-tooltip-top\">${__('Repeat', 'blocksy')}</span>`,\n\n\t\t\t\t\t\t'repeat-y': `<svg viewBox=\"0 0 16 16\"><rect x=\"6\" width=\"4\" height=\"4\"/><rect x=\"6\" y=\"6\" width=\"4\" height=\"4\"/><rect x=\"6\" y=\"12\" width=\"4\" height=\"4\"/></svg>\n\t\t\t\t\t\t\t<span class=\"ct-tooltip-top\">${__('Repeat Y', 'blocksy')}</span>`,\n\n\t\t\t\t\t\t'repeat-x': `<svg viewBox=\"0 0 16 16\"><rect y=\"6\" width=\"4\" height=\"4\"/><rect x=\"6\" y=\"6\" width=\"4\" height=\"4\"/><rect x=\"12\" y=\"6\" width=\"4\" height=\"4\"/></svg>\n\t\t\t\t\t\t\t<span class=\"ct-tooltip-top\">${__('Repeat X', 'blocksy')}</span>`,\n\n\t\t\t\t\t\t'no-repeat': `<svg viewBox=\"0 0 16 16\"><rect x=\"6\" y=\"6\" width=\"4\" height=\"4\"/></svg>\n\t\t\t\t\t\t\t<span class=\"ct-tooltip-top\">${__('No Repeat', 'blocksy')}</span>`,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tbackground_repeat: newValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<GenericOptionType\n\t\t\t\tvalue={value['background_size']}\n\t\t\t\tvalues={value}\n\t\t\t\toption={{\n\t\t\t\t\tid: 'background_size',\n\t\t\t\t\tlabel: __('Background Size', 'blocksy'),\n\t\t\t\t\ttype: 'ct-radio',\n\t\t\t\t\tview: 'text',\n\t\t\t\t\tdesign: 'block',\n\t\t\t\t\tvalue: option.value['background_size'],\n\t\t\t\t\tchoices: {\n\t\t\t\t\t\tauto: __('Auto', 'blocksy'),\n\t\t\t\t\t\tcover: __('Cover', 'blocksy'),\n\t\t\t\t\t\tcontain: __('Contain', 'blocksy'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tbackground_size: newValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<GenericOptionType\n\t\t\t\tvalue={value['background_attachment']}\n\t\t\t\tvalues={value}\n\t\t\t\toption={{\n\t\t\t\t\tid: 'background_size',\n\t\t\t\t\tlabel: __('Background Attachment', 'blocksy'),\n\t\t\t\t\ttype: 'ct-radio',\n\t\t\t\t\tview: 'text',\n\t\t\t\t\tdesign: 'block',\n\t\t\t\t\tvalue: option.value['background_attachment'],\n\t\t\t\t\tchoices: {\n\t\t\t\t\t\tscroll: __('Scroll', 'blocksy'),\n\t\t\t\t\t\tfixed: __('Fixed', 'blocksy'),\n\t\t\t\t\t\tinherit: __('Inherit', 'blocksy'),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tbackground_attachment: newValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t{value.background_image.url && (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tvalue.overlayColor &&\n\t\t\t\t\t\t\tvalue.overlayColor.default.color.indexOf(\n\t\t\t\t\t\t\t\t'CT_CSS_SKIP_RULE'\n\t\t\t\t\t\t\t) === -1\n\t\t\t\t\t\t\t\t? 'yes'\n\t\t\t\t\t\t\t\t: 'no'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalues={{}}\n\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\tid: 'has_overlay',\n\t\t\t\t\t\t\tlabel: __('Image Overlay', 'blocksy'),\n\t\t\t\t\t\t\ttype: 'ct-radio',\n\t\t\t\t\t\t\tview: 'text',\n\t\t\t\t\t\t\tdesign: 'block',\n\t\t\t\t\t\t\tvalue: 'no',\n\t\t\t\t\t\t\tchoices: {\n\t\t\t\t\t\t\t\tno: __('Disabled', 'blocksy'),\n\t\t\t\t\t\t\t\tyes: __('Enabled', 'blocksy'),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\tonChange={(newValue) => {\n\t\t\t\t\t\t\tlet hasOverlay =\n\t\t\t\t\t\t\t\tvalue.overlayColor.default.color.indexOf(\n\t\t\t\t\t\t\t\t\t'CT_CSS_SKIP_RULE'\n\t\t\t\t\t\t\t\t) === -1\n\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\toverlayColor: {\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tcolor: hasOverlay\n\t\t\t\t\t\t\t\t\t\t\t? 'CT_CSS_SKIP_RULE'\n\t\t\t\t\t\t\t\t\t\t\t: 'rgba(0, 0, 0, 0.2)',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{value.overlayColor &&\n\t\t\t\t\t\tvalue.overlayColor.default.color.indexOf(\n\t\t\t\t\t\t\t'CT_CSS_SKIP_RULE'\n\t\t\t\t\t\t) === -1 && (\n\t\t\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\t\t\tvalue={value['overlayColor']}\n\t\t\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\t\tid: 'overlayColor',\n\t\t\t\t\t\t\t\t\tlabel: __('Image Overlay Color', 'blocksy'),\n\t\t\t\t\t\t\t\t\ttype: 'ct-color-picker',\n\t\t\t\t\t\t\t\t\tdesign: 'inline',\n\t\t\t\t\t\t\t\t\tvalue: option.value['overlayColor'],\n\t\t\t\t\t\t\t\t\tpickers: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttitle: __('Initial', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tskipArrow: true,\n\t\t\t\t\t\t\t\t\tappendToBody: false,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\toverlayColor: newValue,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</Fragment>\n\t)\n}\n\nexport default ImagePicker\n","import {\n\tFragment,\n\tcreateElement,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\n\nimport classnames from 'classnames'\n\nimport { GradientPicker as StableGradientPicker } from '@wordpress/components'\n\nconst GradientPicker = ({ value, onChange }) => {\n\tconst allGradients = (window.ct_customizer_localizations ||\n\t\twindow.ct_localizations)['gradients']\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<StableGradientPicker\n\t\t\t\tvalue={value.gradient || ''}\n\t\t\t\tonChange={(val) => {\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tgradient: val,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t/>\n\n\t\t\t<ul className={'ct-gradient-swatches'}>\n\t\t\t\t{allGradients.map(({ gradient, slug }) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tgradient:\n\t\t\t\t\t\t\t\t\tvalue.gradient === gradient ? '' : gradient,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\tactive: gradient === value.gradient,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t'--background-image': gradient,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={slug}></li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</Fragment>\n\t)\n}\n\nexport default GradientPicker\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\n\nimport GenericOptionType from '../../GenericOptionType'\nimport PatternPicker from './PatternPicker'\nimport ImagePicker from './ImagePicker'\n\nimport GradientPicker from './GradientPicker'\n\nconst BackgroundModal = ({\n\toption,\n\toption: { activeTabs = ['color', 'gradient', 'image'] },\n\tvalue,\n\tisOpen,\n\tonChange,\n\tsetOutsideClickFreezed,\n}) => {\n\treturn (\n\t\t<Fragment>\n\t\t\t<ul\n\t\t\t\tclassName=\"ct-modal-tabs\"\n\t\t\t\tonMouseUp={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t}}>\n\t\t\t\t{activeTabs.map((type) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tdata-type={type}\n\t\t\t\t\t\tkey={type}\n\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\ttype === value.background_type ||\n\t\t\t\t\t\t\t\t(type === 'image' &&\n\t\t\t\t\t\t\t\t\t(value.background_type === 'pattern' ||\n\t\t\t\t\t\t\t\t\t\tvalue.background_type === 'image')),\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tbackground_type: type,\n\n\t\t\t\t\t\t\t\t...(type === 'gradient' && !value.gradient\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tgradient:\n\t\t\t\t\t\t\t\t\t\t\t\t'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',\n\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolor: __('Color', 'blocksy'),\n\t\t\t\t\t\t\t\tgradient: __('Gradient', 'blocksy'),\n\t\t\t\t\t\t\t\t// pattern: __('Pattern', 'blocksy'),\n\t\t\t\t\t\t\t\timage: __('Image', 'blocksy'),\n\t\t\t\t\t\t\t}[type]\n\t\t\t\t\t\t}\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\n\t\t\t<div\n\t\t\t\tclassName={classnames(\n\t\t\t\t\t{\n\t\t\t\t\t\t'ct-image-tab ct-options-container':\n\t\t\t\t\t\t\tvalue.background_type === 'image' ||\n\t\t\t\t\t\t\tvalue.background_type === 'pattern',\n\t\t\t\t\t\t'ct-color-picker-modal':\n\t\t\t\t\t\t\tvalue.background_type === 'gradient',\n\t\t\t\t\t\t'ct-gradient-tab': value.background_type === 'gradient',\n\t\t\t\t\t\t'ct-color-tab': value.background_type === 'color',\n\t\t\t\t\t},\n\t\t\t\t\t'ct-modal-tabs-content'\n\t\t\t\t)}>\n\t\t\t\t{(value.background_type === 'image' ||\n\t\t\t\t\tvalue.background_type === 'pattern') && (\n\t\t\t\t\t<ul\n\t\t\t\t\t\tclassName=\"ct-radio-option ct-buttons-group\"\n\t\t\t\t\t\tonMouseUp={(e) => {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t{['image', 'pattern'].map((type) => (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tdata-type={type}\n\t\t\t\t\t\t\t\tkey={type}\n\t\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\t\tactive: type === value.background_type,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\tbackground_type: type,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tpattern: __('Pattern', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\timage: __('Image', 'blocksy'),\n\t\t\t\t\t\t\t\t\t}[type]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t)}\n\n\t\t\t\t{value.background_type === 'pattern' && (\n\t\t\t\t\t<PatternPicker\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{value.background_type === 'image' && (\n\t\t\t\t\t<ImagePicker\n\t\t\t\t\t\tsetOutsideClickFreezed={setOutsideClickFreezed}\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{value.background_type === 'gradient' && (\n\t\t\t\t\t<GradientPicker value={value} onChange={onChange} />\n\t\t\t\t)}\n\n\t\t\t\t{value.background_type !== 'gradient' && (\n\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\tvalue={value['backgroundColor']}\n\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\tid: 'backgroundColor',\n\t\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\tvalue.background_type === 'color'\n\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t: __('Background Color', 'blocksy'),\n\t\t\t\t\t\t\ttype: 'ct-color-picker',\n\t\t\t\t\t\t\tskipNoColorPill: true,\n\t\t\t\t\t\t\tdesign:\n\t\t\t\t\t\t\t\tvalue.background_type === 'color'\n\t\t\t\t\t\t\t\t\t? 'none'\n\t\t\t\t\t\t\t\t\t: 'inline',\n\t\t\t\t\t\t\tvalue: option.value['backgroundColor'],\n\t\t\t\t\t\t\tpickers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttitle: __('Initial', 'blocksy'),\n\t\t\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tinline_modal: value.background_type === 'color',\n\t\t\t\t\t\t\tskipArrow: true,\n\t\t\t\t\t\t\tappendToBody: false,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tbackgroundColor: newValue,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Fragment>\n\t)\n}\n\nexport default BackgroundModal\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tcreatePortal,\n\tuseState,\n} from '@wordpress/element'\nimport cls from 'classnames'\nimport BackgroundModal from './background/BackgroundModal'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport { getUrlForPattern } from './background/PatternPicker'\nimport { __ } from 'ct-i18n'\n\nimport usePopoverMaker from '../helpers/usePopoverMaker'\n\n/**\n * Support color picker values inside the background picker.\n * Which means transitions from ct-color-picker are made possible thanks to\n * this logic.\n */\nconst maybeConvertFromColorPickerTo = (value) => {\n\tif (!value.background_type) {\n\t\tif (value[Object.keys(value)[0]].color) {\n\t\t\treturn {\n\t\t\t\tbackground_type: 'color',\n\t\t\t\tbackground_pattern: 'type-1',\n\t\t\t\tbackground_image: {\n\t\t\t\t\tattachment_id: null,\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t},\n\n\t\t\t\tbackground_repeat: 'no-repeat',\n\t\t\t\tbackground_size: 'auto',\n\t\t\t\tbackground_attachment: 'scroll',\n\n\t\t\t\tpatternColor: {\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tcolor: '#e5e7ea',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tbackgroundColor: {\n\t\t\t\t\tdefault: value[Object.keys(value)[0]],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\treturn value\n}\n\nconst Background = ({ option, value, onChange }) => {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [outsideClickFreezed, setOutsideClickFreezed] = useState(false)\n\tconst backgroundWrapper = useRef()\n\n\tvalue = maybeConvertFromColorPickerTo(value)\n\n\tconst isInherit =\n\t\t!option.has_no_color &&\n\t\tvalue.background_type === 'color' &&\n\t\t(value.backgroundColor.default.color === 'CT_CSS_SKIP_RULE' ||\n\t\t\tvalue.backgroundColor.default.color === 'transparent')\n\n\tconst isNoColor =\n\t\toption.has_no_color &&\n\t\tvalue.background_type === 'color' &&\n\t\t(value.backgroundColor.default.color === 'CT_CSS_SKIP_RULE' ||\n\t\t\tvalue.backgroundColor.default.color === 'transparent')\n\n\tconst { styles, popoverProps } = usePopoverMaker({\n\t\tref: backgroundWrapper,\n\t\tdefaultHeight: 434,\n\t\tshouldCalculate: backgroundWrapper && backgroundWrapper.current,\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tref={backgroundWrapper}\n\t\t\tclassName={cls('ct-background', {\n\t\t\t\tactive: isOpen,\n\t\t\t})}>\n\t\t\t<div\n\t\t\t\tclassName={cls('ct-background-preview', {\n\t\t\t\t\t'ct-color-inherit': isInherit,\n\t\t\t\t\t'ct-no-color': isNoColor,\n\t\t\t\t})}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tsetIsOpen(!isOpen)\n\n\t\t\t\t\tif (value.background_type === 'color') {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvalue.backgroundColor.default.color ===\n\t\t\t\t\t\t\t\t'CT_CSS_SKIP_RULE' ||\n\t\t\t\t\t\t\tvalue.backgroundColor.default.color ===\n\t\t\t\t\t\t\t\t'transparent'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tbackgroundColor: {\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\toption.default_inherit_color ||\n\t\t\t\t\t\t\t\t\t\t\t'#ffffff',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdata-background-type={value.background_type}\n\t\t\t\tstyle={{\n\t\t\t\t\t...(value.backgroundColor.default.color.indexOf(\n\t\t\t\t\t\t'CT_CSS_SKIP_RULE'\n\t\t\t\t\t) > -1\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tbackgroundColor:\n\t\t\t\t\t\t\t\t\tvalue.backgroundColor.default.color,\n\t\t\t\t\t\t  }),\n\n\t\t\t\t\t'--background-position': `${Math.round(\n\t\t\t\t\t\tparseFloat(value.background_image.x) * 100\n\t\t\t\t\t)}% ${Math.round(\n\t\t\t\t\t\tparseFloat(value.background_image.y) * 100\n\t\t\t\t\t)}%`,\n\n\t\t\t\t\t'--pattern-mask':\n\t\t\t\t\t\tvalue.background_type === 'pattern'\n\t\t\t\t\t\t\t? `url(${getUrlForPattern(\n\t\t\t\t\t\t\t\t\tvalue.background_pattern\n\t\t\t\t\t\t\t  )})`\n\t\t\t\t\t\t\t: '',\n\n\t\t\t\t\t'--background-image':\n\t\t\t\t\t\tvalue.background_type === 'gradient'\n\t\t\t\t\t\t\t? value.gradient\n\t\t\t\t\t\t\t: value.background_image.url\n\t\t\t\t\t\t\t? `${\n\t\t\t\t\t\t\t\t\tvalue.overlayColor &&\n\t\t\t\t\t\t\t\t\tvalue.overlayColor.default.color.indexOf(\n\t\t\t\t\t\t\t\t\t\t'CT_CSS_SKIP_RULE'\n\t\t\t\t\t\t\t\t\t) === -1\n\t\t\t\t\t\t\t\t\t\t? `linear-gradient(${value.overlayColor.default.color}, ${value.overlayColor.default.color}), `\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t  }url(${value.background_image.url})`\n\t\t\t\t\t\t\t: 'none',\n\t\t\t\t\t'--pattern-color': value.patternColor.default.color,\n\t\t\t\t}}>\n\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinherit: __('Inherited', 'blocksy'),\n\t\t\t\t\t\t\tno_color: __('No Color', 'blocksy'),\n\t\t\t\t\t\t\tpattern: __('Pattern', 'blocksy'),\n\t\t\t\t\t\t\tgradient: __('Gradient', 'blocksy'),\n\t\t\t\t\t\t\tcolor: __('Color', 'blocksy'),\n\t\t\t\t\t\t\timage: __('Image', 'blocksy'),\n\t\t\t\t\t\t}[\n\t\t\t\t\t\t\tisNoColor\n\t\t\t\t\t\t\t\t? 'no_color'\n\t\t\t\t\t\t\t\t: isInherit\n\t\t\t\t\t\t\t\t? 'inherit'\n\t\t\t\t\t\t\t\t: value.background_type\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t</i>\n\n\t\t\t\t{isInherit && (\n\t\t\t\t\t<svg width=\"25\" height=\"25\" viewBox=\"0 0 30 30\">\n\t\t\t\t\t\t<path d=\"M15 3c-3 0-5.7 1.1-7.8 2.9-.4.3-.5.9-.2 1.4.3.4 1 .5 1.4.2h.1C10.3 5.9 12.5 5 15 5c5.2 0 9.5 3.9 10 9h-3l4 6 4-6h-3.1C26.4 7.9 21.3 3 15 3zM4 10l-4 6h3.1c.5 6.1 5.6 11 11.9 11 3 0 5.7-1.1 7.8-2.9.4-.3.5-1 .2-1.4-.3-.4-1-.5-1.4-.2h-.1c-1.7 1.5-4 2.4-6.5 2.4-5.2 0-9.5-3.9-10-9h3L4 10z\" />\n\t\t\t\t\t</svg>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{backgroundWrapper &&\n\t\t\t\tbackgroundWrapper.current &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<OutsideClickHandler\n\t\t\t\t\t\tuseCapture={false}\n\t\t\t\t\t\tdisplay=\"block\"\n\t\t\t\t\t\tdisabled={!isOpen || outsideClickFreezed}\n\t\t\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\t\t\tsetTimeout(() => setIsOpen(false))\n\t\t\t\t\t\t}}\n\t\t\t\t\t\twrapperProps={{\n\t\t\t\t\t\t\tstyle: styles,\n\t\t\t\t\t\t\t...popoverProps,\n\t\t\t\t\t\t\tclassName: cls(\n\t\t\t\t\t\t\t\t'ct-option-modal ct-background-modal',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tactive: isOpen,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<BackgroundModal\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\tisOpen={isOpen}\n\t\t\t\t\t\t\tsetOutsideClickFreezed={setOutsideClickFreezed}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</OutsideClickHandler>,\n\t\t\t\t\tdocument.body\n\t\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default Background\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseRef,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport classnames from 'classnames'\nimport ColorPicker from './ct-color-picker'\n\nimport { __ } from 'ct-i18n'\n\nconst clamp = (min, max, value) => Math.max(min, Math.min(max, value))\n\nconst Border = ({ value, option, onChange }) => {\n\tconst [isOpen, setIsOpen] = useState(false)\n\n\treturn (\n\t\t<div className={classnames('ct-option-border')}>\n\t\t\t<div\n\t\t\t\tclassName={classnames('ct-value-changer', {\n\t\t\t\t\t['active']: isOpen,\n\t\t\t\t})}>\n\t\t\t\t{value.style !== 'none' && !value.inherit && (\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tvalue={value.width}\n\t\t\t\t\t\t// disabled={value.style === 'none'}\n\t\t\t\t\t\tonChange={({ target: { value: width } }) =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\twidth: clamp(1, 5, parseInt(width, 10) || 1),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"ct-current-value\"\n\t\t\t\t\tdata-style={value.inherit ? 'none' : value.style}\n\t\t\t\t\tonClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t\t{value.inherit\n\t\t\t\t\t\t? __('Inherit', 'blocksy')\n\t\t\t\t\t\t: value.style === 'none'\n\t\t\t\t\t\t? __('none', 'blocksy')\n\t\t\t\t\t\t: null}\n\t\t\t\t</span>\n\t\t\t\t<OutsideClickHandler\n\t\t\t\t\tclassName=\"ct-units-list\"\n\t\t\t\t\tdisabled={!isOpen}\n\t\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\t\tif (!isOpen) return\n\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t}}>\n\t\t\t\t\t{['solid', 'dashed', 'dotted', 'none'].map((style) => (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={style}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\tstyle,\n\t\t\t\t\t\t\t\t\t...(Object.keys(option.value).indexOf(\n\t\t\t\t\t\t\t\t\t\t'inherit'\n\t\t\t\t\t\t\t\t\t) > -1\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\tinherit: false,\n\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-style={style}>\n\t\t\t\t\t\t\t{style === 'none' ? __('None', 'blocksy') : null}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t))}\n\t\t\t\t</OutsideClickHandler>\n\t\t\t</div>\n\n\t\t\t{value.style !== 'none' && !value.inherit && (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\tonChange={(colorValue) =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tcolor: colorValue.default,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\tpickers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t\t\t\ttitle: __('Initial', 'blocksy'),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\tdefault: value.color,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{option.secondColor && (\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tonChange={(colorValue) =>\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\tsecondColor: colorValue.default,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\tpickers: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t\t\t\t\ttitle: __('Hover', 'blocksy'),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvalue.secondColor ||\n\t\t\t\t\t\t\t\t\toption.value.secondColor,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default Border\n","import { createElement, createPortal } from '@wordpress/element'\nimport { Transition } from 'react-spring/renderprops'\nimport bezierEasing from 'bezier-easing'\nimport classnames from 'classnames'\nimport GenericOptionType from '../../GenericOptionType'\nimport { __ } from 'ct-i18n'\nimport Switch from '../ct-switch'\nimport usePopoverMaker from '../../helpers/usePopoverMaker'\n\nconst BoxShadowModal = ({\n\toption,\n\tvalue,\n\tonChange,\n\tpicker,\n\n\tonPickingChange,\n\tstopTransitioning,\n\n\tel,\n\n\thOffsetRef,\n\tvOffsetRef,\n\tblurRef,\n\tspreadRef,\n\n\tisTransitioning,\n\tisPicking,\n}) => {\n\tconst { styles, popoverProps } = usePopoverMaker({\n\t\tref: el,\n\t\tdefaultHeight: !option.hide_shadow_placement ? 507 : 437,\n\t\tshouldCalculate:\n\t\t\tisTransitioning === picker.id ||\n\t\t\t(isPicking || '').split(':')[0] === picker.id,\n\t})\n\n\treturn (\n\t\t(isTransitioning === picker.id ||\n\t\t\t(isPicking || '').split(':')[0] === picker.id) &&\n\t\tcreatePortal(\n\t\t\t<Transition\n\t\t\t\titems={isPicking}\n\t\t\t\tonRest={(isOpen) => {\n\t\t\t\t\tstopTransitioning()\n\t\t\t\t}}\n\t\t\t\tconfig={{\n\t\t\t\t\tduration: 100,\n\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t}}\n\t\t\t\tfrom={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: { opacity: 1 }\n\t\t\t\t}\n\t\t\t\tenter={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t}\n\t\t\t\tleave={\n\t\t\t\t\t(isPicking || '').indexOf(':') === -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t  }\n\t\t\t\t}>\n\t\t\t\t{(isPicking) =>\n\t\t\t\t\t(isPicking || '').split(':')[0] === picker.id &&\n\t\t\t\t\t((props) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{ ...props, ...styles }}\n\t\t\t\t\t\t\t{...popoverProps}\n\t\t\t\t\t\t\tclassName=\"ct-option-modal ct-box-shadow-modal\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseDownCapture={(e) => {\n\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseUpCapture={(e) => {\n\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t<div className=\"ct-shadow-trigger\">\n\t\t\t\t\t\t\t\t<label>{__('Enable/Disable', 'blocksy')}</label>\n\t\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\t\tvalue={value.enable ? 'yes' : 'no'}\n\t\t\t\t\t\t\t\t\tonChange={() => {\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tenable: !value.enable,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div className=\"shadow-sliders\">\n\t\t\t\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\t\t\t\tvalue={value.h_offset}\n\t\t\t\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\t\t\t\tid=\"h_offset\"\n\t\t\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\t\t\tid: 'h_offset',\n\t\t\t\t\t\t\t\t\t\tlabel: __(\n\t\t\t\t\t\t\t\t\t\t\t'Horizontal Offset',\n\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\t\t\t\t\tsteps: 'half',\n\t\t\t\t\t\t\t\t\t\tvalue: option.value.h_offset,\n\t\t\t\t\t\t\t\t\t\tmin: -100,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tdesign: 'compact',\n\t\t\t\t\t\t\t\t\t\tref: hOffsetRef,\n\t\t\t\t\t\t\t\t\t\t// skipInput: true\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\th_offset: newValue,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\t\t\t\tvalue={value.v_offset}\n\t\t\t\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\t\t\t\tid=\"v_offset\"\n\t\t\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\t\t\tsteps: 'half',\n\t\t\t\t\t\t\t\t\t\tid: 'v_offset',\n\t\t\t\t\t\t\t\t\t\tlabel: __('Vertical Offset', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\t\t\t\t\tvalue: option.value.v_offset,\n\t\t\t\t\t\t\t\t\t\tmin: -100,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tdesign: 'compact',\n\t\t\t\t\t\t\t\t\t\tref: vOffsetRef,\n\t\t\t\t\t\t\t\t\t\t// skipInput: true\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tv_offset: newValue,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\t\t\t\tvalue={value.blur}\n\t\t\t\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\t\t\t\tid=\"blur\"\n\t\t\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\t\t\tsteps: 'positive',\n\t\t\t\t\t\t\t\t\t\tid: 'blur',\n\t\t\t\t\t\t\t\t\t\tlabel: __('Blur', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\t\t\t\t\tvalue: option.value.blur,\n\t\t\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tdesign: 'compact',\n\t\t\t\t\t\t\t\t\t\tref: blurRef,\n\t\t\t\t\t\t\t\t\t\t// skipInput: true\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\tonChange={(newValue) => {\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tblur: newValue,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<GenericOptionType\n\t\t\t\t\t\t\t\t\tvalue={value.spread}\n\t\t\t\t\t\t\t\t\tvalues={value}\n\t\t\t\t\t\t\t\t\tid=\"spread\"\n\t\t\t\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\t\t\t\tsteps: 'half',\n\t\t\t\t\t\t\t\t\t\tid: 'spread',\n\t\t\t\t\t\t\t\t\t\tlabel: __('Spread', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\t\t\t\t\tvalue: option.value.spread,\n\t\t\t\t\t\t\t\t\t\tmin: -100,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tdesign: 'compact',\n\t\t\t\t\t\t\t\t\t\tref: spreadRef,\n\t\t\t\t\t\t\t\t\t\t// skipInput: true\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\tspread: newValue,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{!option.hide_shadow_placement && (\n\t\t\t\t\t\t\t\t<ul className=\"ct-shadow-style\">\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\t\tinset: false,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\t\t\t\tactive: !value.inset,\n\t\t\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t\t\t{__('Outline', 'blocksy')}\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\t\tinset: true,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\t\t\t\tactive: value.inset,\n\t\t\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t\t\t{__('Inset', 'blocksy')}\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t</Transition>,\n\t\t\tdocument.body\n\t\t)\n\t)\n}\n\nexport default BoxShadowModal\n","import { createElement, useState, useRef, useContext } from '@wordpress/element'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport classnames from 'classnames'\nimport SingleColorPicker from './color-picker/single-picker'\nimport { __ } from 'ct-i18n'\nimport BoxShadowModal from './box-shadow/box-shadow-modal'\n\nconst clamp = (min, max, value) => Math.max(min, Math.min(max, value))\n\nconst BoxShadow = ({ value, option, onChange }) => {\n\tconst [{ isPicking, isTransitioning }, setAnimationState] = useState({\n\t\tisPicking: null,\n\t\tisTransitioning: null,\n\t})\n\n\tconst [focusedComponent, setFocusedComponent] = useState(null)\n\n\tconst el = useRef()\n\tconst colorPicker = useRef()\n\n\tconst hOffsetRef = useRef()\n\tconst vOffsetRef = useRef()\n\tconst blurRef = useRef()\n\tconst spreadRef = useRef()\n\n\tconst containerRef = useRef()\n\tconst modalRef = useRef()\n\n\treturn (\n\t\t<div ref={el} className={classnames('ct-box-shadow')}>\n\t\t\t<OutsideClickHandler\n\t\t\t\tuseCapture={false}\n\t\t\t\tdisabled={!isPicking}\n\t\t\t\tclassName=\"ct-box-shadow-values\"\n\t\t\t\tadditionalRefs={[colorPicker, modalRef]}\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tif (!isPicking) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisTransitioning: isPicking.split(':')[0],\n\t\t\t\t\t\tisPicking: null,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\twrapperProps={{\n\t\t\t\t\tref: containerRef,\n\t\t\t\t\tonClick: (e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tlet futureIsPicking = isPicking\n\t\t\t\t\t\t\t? isPicking.split(':')[0] === 'opts'\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: `opts:${isPicking.split(':')[0]}`\n\t\t\t\t\t\t\t: 'opts'\n\n\t\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\t\tisTransitioning: 'opts',\n\t\t\t\t\t\t\tisPicking: futureIsPicking,\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}}>\n\t\t\t\t<span>\n\t\t\t\t\t{value.inherit\n\t\t\t\t\t\t? __('Inherit', 'blocksy')\n\t\t\t\t\t\t: value.enable\n\t\t\t\t\t\t? __('Adjust', 'blocksy')\n\t\t\t\t\t\t: __('None', 'blocksy')}\n\t\t\t\t</span>\n\t\t\t</OutsideClickHandler>\n\n\t\t\t{value.enable && !value.inherit && (\n\t\t\t\t<SingleColorPicker\n\t\t\t\t\tinnerRef={colorPicker}\n\t\t\t\t\tpicker={{\n\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\ttitle: 'Initial',\n\t\t\t\t\t}}\n\t\t\t\t\toption={{\n\t\t\t\t\t\tpickers: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'default',\n\t\t\t\t\t\t\t\ttitle: 'Initial',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}}\n\t\t\t\t\tisPicking={isPicking}\n\t\t\t\t\tisTransitioning={isTransitioning}\n\t\t\t\t\tmodalRef={modalRef}\n\t\t\t\t\tcontainerRef={containerRef}\n\t\t\t\t\tonPickingChange={(isPicking) => {\n\t\t\t\t\t\tif (!value.enable) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\t\tisTransitioning: 'default',\n\t\t\t\t\t\t\tisPicking,\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tstopTransitioning={() =>\n\t\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\t\tisPicking,\n\t\t\t\t\t\t\tisTransitioning: false,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tonChange={(colorValue) =>\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\tcolor: colorValue,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tvalue={value.color}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<BoxShadowModal\n\t\t\t\tel={el}\n\t\t\t\tvalue={value}\n\t\t\t\tonChange={(value) =>\n\t\t\t\t\tonChange({\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tinherit: false,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\toption={option}\n\t\t\t\tisPicking={isPicking}\n\t\t\t\tisTransitioning={isTransitioning}\n\t\t\t\thOffsetRef={hOffsetRef}\n\t\t\t\tvOffsetRef={vOffsetRef}\n\t\t\t\tblurRef={blurRef}\n\t\t\t\tspreadRef={spreadRef}\n\t\t\t\tpicker={{\n\t\t\t\t\tid: 'opts',\n\t\t\t\t}}\n\t\t\t\tonPickingChange={(isPicking) => {\n\t\t\t\t\tif (!value.enable) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisTransitioning: 'opts',\n\t\t\t\t\t\tisPicking,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tstopTransitioning={() =>\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisPicking,\n\t\t\t\t\t\tisTransitioning: false,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default BoxShadow\n","import { Fragment, createElement, Component } from '@wordpress/element'\n\nconst Button = ({ option: { text = '', attr = {}, panel, url } }) => (\n\t<a\n\t\t{...{\n\t\t\t...(attr || {})\n\t\t}}\n\t\thref={url}\n\t\ttarget=\"_blank\"\n\t\tonClick={e => {\n\t\t\treturn\n\t\t\te.preventDefault()\n\n\t\t\tif (panel && wp.customize && wp.customize.panel(panel)) {\n\t\t\t\twp.customize.panel(panel).expand()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\turl && location.assign(url)\n\t\t}}>\n\t\t{text}\n\t</a>\n)\n\nexport default Button\n","import {\n\tcreateElement,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from '@wordpress/element'\nimport { maybeTransformUnorderedChoices } from '../helpers/parse-choices.js'\nimport classnames from 'classnames'\n\nimport _ from 'underscore'\n\nconst Checkboxes = ({\n\toption,\n\tvalue,\n\tonChange,\n\toption: { view = 'checkboxes' }\n}) => {\n\tconst orderedChoices = maybeTransformUnorderedChoices(option.choices)\n\n\tconst { inline = false } = option\n\n\tif (view === 'checkboxes') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"ct-option-checkbox\"\n\t\t\t\t{...(inline ? { ['data-inline']: '' } : {})}\n\t\t\t\t{...option.attr || {}}>\n\t\t\t\t{orderedChoices.map(({ key, value: choiceValue }) => (\n\t\t\t\t\t<label key={key}>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\ttypeof value[key] === 'boolean'\n\t\t\t\t\t\t\t\t\t? value[key]\n\t\t\t\t\t\t\t\t\t: value[key] === 'true'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata-id={key}\n\t\t\t\t\t\t\tonChange={({ target: { checked } }) =>\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t[key]: value[key]\n\t\t\t\t\t\t\t\t\t\t? Object.values(value).filter(v => v)\n\t\t\t\t\t\t\t\t\t\t\t\t.length === 1 &&\n\t\t\t\t\t\t\t\t\t\t\t!option.allow_empty\n\t\t\t\t\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{choiceValue}\n\t\t\t\t\t</label>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"ct-option-checkbox ct-buttons-group\"\n\t\t\t{...(inline ? { ['data-inline']: '' } : {})}\n\t\t\t{...option.attr || {}}>\n\t\t\t{orderedChoices.map(({ key, value: choiceValue }) => (\n\t\t\t\t<li\n\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\ttypeof value[key] === 'boolean'\n\t\t\t\t\t\t\t\t? value[key]\n\t\t\t\t\t\t\t\t: value[key] === 'true'\n\t\t\t\t\t})}\n\t\t\t\t\tdata-id={key}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tonClick={({ target: { checked } }) =>\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t[key]: value[key]\n\t\t\t\t\t\t\t\t? Object.values(value).filter(v => v).length ===\n\t\t\t\t\t\t\t\t\t\t1 && !option.allow_empty\n\t\t\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t})\n\t\t\t\t\t}>\n\t\t\t\t\t{choiceValue}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n\nexport default Checkboxes\n","import { createElement, useRef, Fragment } from '@wordpress/element'\nimport OptionsPanel from '../../OptionsPanel'\nimport { __, sprintf } from 'ct-i18n'\nimport classnames from 'classnames'\n\nconst PalettePreview = ({\n\trenderBefore = () => null,\n\tvalue,\n\tonChange,\n\tonClick,\n\tcurrentPalette = null,\n\tclassName,\n}) => {\n\tif (!currentPalette) {\n\t\tcurrentPalette = value\n\n\t\tif (value.palettes) {\n\t\t\tcurrentPalette = value.palettes.find(\n\t\t\t\t({ id }) => id === value.current_palette\n\t\t\t)\n\t\t}\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classnames('ct-single-palette', className)}\n\t\t\tonClick={(e) => {\n\t\t\t\tif (\n\t\t\t\t\te.target.closest('.ct-color-picker-modal') ||\n\t\t\t\t\te.target.classList.contains('ct-color-picker-modal')\n\t\t\t\t) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tonClick()\n\t\t\t}}>\n\t\t\t{renderBefore()}\n\t\t\t<OptionsPanel\n\t\t\t\thasRevertButton={false}\n\t\t\t\tonChange={(optionId, optionValue) => {\n\t\t\t\t\tif (optionId !== 'color') {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tonChange(\n\t\t\t\t\t\toptionId,\n\t\t\t\t\t\tObject.keys(optionValue).reduce(\n\t\t\t\t\t\t\t(finalValue, currentId) => ({\n\t\t\t\t\t\t\t\t...finalValue,\n\t\t\t\t\t\t\t\t...(currentId.indexOf('color') === 0\n\t\t\t\t\t\t\t\t\t? { [currentId]: optionValue[currentId] }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t}),\n\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t}}\n\t\t\t\tvalue={{ color: currentPalette }}\n\t\t\t\toptions={{\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\ttype: 'ct-color-picker',\n\t\t\t\t\t\tpredefined: true,\n\t\t\t\t\t\tdesign: 'none',\n\t\t\t\t\t\tlabel: false,\n\t\t\t\t\t\tmodalClassName: 'ct-color-palette-modal',\n\t\t\t\t\t\tvalue: currentPalette,\n\n\t\t\t\t\t\t...(onChange ? {} : { skipModal: true }),\n\n\t\t\t\t\t\tpickers: Object.keys(currentPalette)\n\t\t\t\t\t\t\t.filter((k) => k.indexOf('color') === 0)\n\t\t\t\t\t\t\t.map((key, index) => ({\n\t\t\t\t\t\t\t\ttitle: sprintf(\n\t\t\t\t\t\t\t\t\t__('Color %s', 'blocksy'),\n\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tid: key,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default PalettePreview\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __, sprintf } from 'ct-i18n'\nimport { Transition, animated } from '@react-spring/web'\nimport PalettePreview from './PalettePreview'\n\nconst ColorPalettesModal = ({ option, value, onChange, wrapperProps = {} }) => {\n\treturn (\n\t\t<animated.div\n\t\t\tclassName=\"ct-option-modal ct-palettes-modal\"\n\t\t\t{...wrapperProps}>\n\t\t\t{value.palettes.map((palette, index) => (\n\t\t\t\t<PalettePreview\n\t\t\t\t\tcurrentPalette={palette}\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tvalue.current_palette === palette.id ? 'ct-active' : ''\n\t\t\t\t\t}\n\t\t\t\t\trenderBefore={() => (\n\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t{sprintf(__('Palette #%s', 'blocksy'), index + 1)}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t)}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tconst { id, ...colors } = palette\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\tcurrent_palette: id,\n\t\t\t\t\t\t\t...colors,\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</animated.div>\n\t)\n}\n\nexport default ColorPalettesModal\n","import {\n\tcreateElement,\n\tcreatePortal,\n\tuseRef,\n\tFragment,\n\tuseState,\n} from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\nimport { __ } from 'ct-i18n'\nimport cls from 'classnames'\nimport PalettePreview from './color-palettes/PalettePreview'\nimport ColorPalettesModal from './color-palettes/ColorPalettesModal'\n\nimport usePopoverMaker from '../helpers/usePopoverMaker'\nimport OutsideClickHandler from './react-outside-click-handler'\n\nimport { Transition } from '@react-spring/web'\nimport bezierEasing from 'bezier-easing'\n\nconst ColorPalettes = ({ option, value, onChange }) => {\n\tconst colorPalettesWrapper = useRef()\n\n\tconst [{ isOpen, isTransitioning }, setModalState] = useState({\n\t\tisOpen: false,\n\t\tisTransitioning: false,\n\t})\n\n\tconst { styles, popoverProps } = usePopoverMaker({\n\t\tref: colorPalettesWrapper,\n\t\tdefaultHeight: 430,\n\t\tshouldCalculate: isTransitioning || isOpen,\n\t})\n\n\tconst setIsOpen = (isOpen) => {\n\t\tsetModalState((state) => ({\n\t\t\t...state,\n\t\t\tisOpen,\n\t\t\tisTransitioning: true,\n\t\t}))\n\t}\n\n\tconst stopTransitioning = () =>\n\t\tsetModalState((state) => ({\n\t\t\t...state,\n\t\t\tisTransitioning: false,\n\t\t}))\n\tconst properValue = {\n\t\t...option.value,\n\t\t...Object.keys(value).reduce(\n\t\t\t(all, currentKey) => ({\n\t\t\t\t...all,\n\t\t\t\t...(value[currentKey]\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t[currentKey]: value[currentKey],\n\t\t\t\t\t  }\n\t\t\t\t\t: {}),\n\t\t\t}),\n\t\t\t{}\n\t\t),\n\t\t...(option.value.palettes\n\t\t\t? {\n\t\t\t\t\tpalettes: option.value.palettes.map((p, index) => {\n\t\t\t\t\t\tlet maybeCurrentlyInValue = value.palettes.find(\n\t\t\t\t\t\t\t({ id }) => p.id === id\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tlet maybeCurrentValue = {}\n\n\t\t\t\t\t\tif (p.id === value.current_palette) {\n\t\t\t\t\t\t\tObject.keys(p).map((maybeColor) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tmaybeColor.indexOf('color') === 0 &&\n\t\t\t\t\t\t\t\t\tvalue[maybeColor]\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tmaybeCurrentValue[maybeColor] =\n\t\t\t\t\t\t\t\t\t\tvalue[maybeColor]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst result = {\n\t\t\t\t\t\t\t...Object.keys(p).reduce(\n\t\t\t\t\t\t\t\t(all, currentKey) => ({\n\t\t\t\t\t\t\t\t\t...all,\n\t\t\t\t\t\t\t\t\t...(p[currentKey]\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t[currentKey]: p[currentKey],\n\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...Object.keys(maybeCurrentlyInValue || {}).reduce(\n\t\t\t\t\t\t\t\t(all, currentKey) => ({\n\t\t\t\t\t\t\t\t\t...all,\n\t\t\t\t\t\t\t\t\t...(maybeCurrentlyInValue[currentKey]\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t[currentKey]:\n\t\t\t\t\t\t\t\t\t\t\t\t\tmaybeCurrentlyInValue[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentKey\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...maybeCurrentValue,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn result\n\t\t\t\t\t}),\n\t\t\t  }\n\t\t\t: {}),\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<OutsideClickHandler\n\t\t\t\tdisabled={!isOpen}\n\t\t\t\tuseCapture={false}\n\t\t\t\tclassName=\"ct-palettes-preview\"\n\t\t\t\tadditionalRefs={[popoverProps.ref]}\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t}}\n\t\t\t\twrapperProps={{\n\t\t\t\t\tref: colorPalettesWrapper,\n\t\t\t\t\tonClick: (e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.target.closest('.ct-color-picker-modal') ||\n\t\t\t\t\t\t\te.target.classList.contains('ct-color-picker-modal')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!properValue.palettes) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t\t},\n\t\t\t\t}}>\n\t\t\t\t<PalettePreview\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (!properValue.palettes) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={properValue}\n\t\t\t\t\tonChange={(optionId, optionValue) => {\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...properValue,\n\t\t\t\t\t\t\t...optionValue,\n\t\t\t\t\t\t\t...(properValue.palettes\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tpalettes: properValue.palettes.map(\n\t\t\t\t\t\t\t\t\t\t\t(p) =>\n\t\t\t\t\t\t\t\t\t\t\t\tp.id ===\n\t\t\t\t\t\t\t\t\t\t\t\tproperValue.current_palette\n\t\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...optionValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: p\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</OutsideClickHandler>\n\n\t\t\t{(isTransitioning || isOpen) &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<Transition\n\t\t\t\t\t\titems={isOpen}\n\t\t\t\t\t\tonRest={(isOpen) => {\n\t\t\t\t\t\t\tstopTransitioning()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\tduration: 100,\n\t\t\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tfrom={\n\t\t\t\t\t\t\tisOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: { opacity: 1 }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tenter={\n\t\t\t\t\t\t\tisOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tleave={\n\t\t\t\t\t\t\t!isOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}>\n\t\t\t\t\t\t{(style, item) => {\n\t\t\t\t\t\t\tif (!item) {\n\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ColorPalettesModal\n\t\t\t\t\t\t\t\t\twrapperProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\t\t\t\t\t...styles,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t...popoverProps,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonChange={(value) => {\n\t\t\t\t\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t\t\t\t\t\tonChange(value)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalue={properValue}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t</Transition>,\n\t\t\t\t\tdocument.body\n\t\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default ColorPalettes\n","import {\n\tcreateElement,\n\tComponent,\n\tFragment,\n\tcreateContext,\n\tuseRef,\n\tuseContext,\n\tuseState,\n} from '@wordpress/element'\nimport SinglePicker from './color-picker/single-picker'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nconst ColorPicker = ({ option, values, value, onChange }) => {\n\tconst [{ isPicking, isTransitioning }, setState] = useState({\n\t\tisPicking: null,\n\t\tisTransitioning: null,\n\t})\n\n\tconst containerRef = useRef()\n\tconst modalRef = useRef()\n\n\treturn (\n\t\t<OutsideClickHandler\n\t\t\tuseCapture={false}\n\t\t\tdisplay=\"inline-block\"\n\t\t\tdisabled={!isPicking}\n\t\t\twrapperProps={{\n\t\t\t\tref: containerRef,\n\t\t\t}}\n\t\t\tclassName=\"ct-color-picker-container\"\n\t\t\tadditionalRefs={[modalRef]}\n\t\t\tonOutsideClick={() => {\n\t\t\t\tsetState(({ isPicking }) => ({\n\t\t\t\t\tisPicking: null,\n\t\t\t\t\tisTransitioning: isPicking,\n\t\t\t\t}))\n\t\t\t}}>\n\t\t\t{option.pickers\n\t\t\t\t.filter(\n\t\t\t\t\t(picker) =>\n\t\t\t\t\t\t!picker.condition ||\n\t\t\t\t\t\tmatchValuesWithCondition(\n\t\t\t\t\t\t\tnormalizeCondition(picker.condition),\n\t\t\t\t\t\t\tpicker.condition_source === 'global'\n\t\t\t\t\t\t\t\t? Object.keys(picker.condition).reduce(\n\t\t\t\t\t\t\t\t\t\t(current, key) => ({\n\t\t\t\t\t\t\t\t\t\t\t...current,\n\t\t\t\t\t\t\t\t\t\t\t[key]: wp.customize(key)(),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t: values\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map((picker) => (\n\t\t\t\t\t<SinglePicker\n\t\t\t\t\t\tcontainerRef={containerRef}\n\t\t\t\t\t\tpicker={picker}\n\t\t\t\t\t\tkey={picker.id}\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\tisPicking={isPicking}\n\t\t\t\t\t\tmodalRef={modalRef}\n\t\t\t\t\t\tisTransitioning={isTransitioning}\n\t\t\t\t\t\tvalues={values}\n\t\t\t\t\t\tonPickingChange={(isPicking) =>\n\t\t\t\t\t\t\tsetState({\n\t\t\t\t\t\t\t\tisTransitioning: picker.id,\n\t\t\t\t\t\t\t\tisPicking,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstopTransitioning={() =>\n\t\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tisTransitioning: false,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={(newPicker) =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t[picker.id]: newPicker,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={value[picker.id] || option.value[picker.id]}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t</OutsideClickHandler>\n\t)\n}\n\nexport default ColorPicker\n","import { Fragment, createElement, useState } from '@wordpress/element'\nimport Overlay from '../../customizer/components/Overlay'\nimport { __ } from 'ct-i18n'\n\nconst CustomizerResetOptions = ({ value, option, onChange }) => {\n\tconst [isShowing, setIsShowing] = useState(false)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<button\n\t\t\t\tclassName=\"button\"\n\t\t\t\tstyle={{ width: '100%' }}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\tsetIsShowing(true)\n\t\t\t\t}}>\n\t\t\t\t{__('Reset Options', 'blocksy')}\n\t\t\t</button>\n\n\t\t\t<Overlay\n\t\t\t\titems={isShowing}\n\t\t\t\tclassName=\"ct-admin-modal ct-reset-options\"\n\t\t\t\tonDismiss={() => setIsShowing(false)}\n\t\t\t\trender={() => (\n\t\t\t\t\t<div className=\"ct-modal-content\">\n\t\t\t\t\t\t<h2 className=\"ct-modal-title\">\n\t\t\t\t\t\t\t{__('Reset Settings', 'blocksy')}\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t{__(\n\t\t\t\t\t\t\t\t'You are about to reset all settings to their default values, are you sure you want to continue?',\n\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"ct-modal-actions has-divider\"\n\t\t\t\t\t\t\tdata-buttons=\"2\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsetIsShowing(false)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"button\">\n\t\t\t\t\t\t\t\t{__('Cancel', 'blocksy')}\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName=\"button button-primary\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\t\t\t\tjQuery.post(\n\t\t\t\t\t\t\t\t\t\tajaxurl,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\twp_customize: 'on',\n\t\t\t\t\t\t\t\t\t\t\taction: 'ct_customizer_reset',\n\t\t\t\t\t\t\t\t\t\t\tnonce:\n\t\t\t\t\t\t\t\t\t\t\t\tct_customizer_localizations.customizer_reset_none,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t\t\twp.customize\n\t\t\t\t\t\t\t\t\t\t\t\t.state('saved')\n\t\t\t\t\t\t\t\t\t\t\t\t.set(true)\n\t\t\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{__('Confirm', 'blocksy')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t/>\n\t\t</Fragment>\n\t)\n}\n\nexport default CustomizerResetOptions\n","import { Fragment, createElement, Component } from '@wordpress/element'\nimport classnames from 'classnames'\n\nconst Divider = ({ option: { attr: { class: className, ...attr } = {} } }) => (\n\t<div className={classnames('ct-divider', className)} {...attr} />\n)\n\nDivider.renderingConfig = { design: 'none' }\n\nexport default Divider\n","import { createElement, useContext } from '@wordpress/element'\nimport cls from 'classnames'\nimport Sortable from '../placements/Sortable'\nimport { DragDropContext } from '../../../options/options/ct-footer-builder'\nimport { PanelContext } from '../../../options/components/PanelLevel'\n\nimport { customItemsSeparator, getOriginalId } from '../placements/helpers'\n\nconst shallowCompare = (prev, next) => {\n\tfor (let key in next) {\n\t\tif (next[key] !== prev[key]) return false\n\t}\n\treturn true\n}\n\nfunction memo(Component, areEqual = shallowCompare) {\n\tlet prevProps = {}\n\tlet prevResult\n\n\treturn (nextProps) => {\n\t\tif (prevResult !== undefined && areEqual(prevProps, nextProps)) {\n\t\t\treturn prevResult\n\t\t}\n\n\t\tprevProps = nextProps\n\t\tprevResult = createElement(Component, Object.assign({}, nextProps))\n\n\t\treturn prevResult\n\t}\n}\n\nexport const DraggableItem = ({\n\titem,\n\tindex,\n\tpanelType,\n\tonRemove,\n\trenderItem,\n\tonClick,\n\tclassName,\n}) => {\n\tconst itemData = ct_customizer_localizations.header_builder_data[\n\t\tpanelType\n\t].find(({ id }) => id === getOriginalId(item))\n\n\tconst { builderValue } = useContext(DragDropContext)\n\n\tif (renderItem) {\n\t\treturn renderItem({ item, itemData, index })\n\t}\n\n\t/**\n\t * Dynamic items have a : in their ID\n\t */\n\tconst allDynamicItems = Object.keys(builderValue.items).filter(\n\t\t(id) => id.indexOf(customItemsSeparator()) > -1\n\t)\n\n\tconst allClonesAndOriginal = [\n\t\tgetOriginalId(item),\n\t\t...allDynamicItems.filter(\n\t\t\t(id) => getOriginalId(id) === getOriginalId(item)\n\t\t),\n\t]\n\n\treturn (\n\t\t<div\n\t\t\tdata-id={item}\n\t\t\tclassName={cls('ct-builder-item', className, {\n\t\t\t\t// 'ct-is-dragging': snapshot.isDragging\n\t\t\t})}\n\t\t\tonClick={onClick}>\n\t\t\t{itemData && itemData.config\n\t\t\t\t? allClonesAndOriginal.length > 1\n\t\t\t\t\t? `${itemData.config.name} ${\n\t\t\t\t\t\t\tallClonesAndOriginal.indexOf(item) + 1\n\t\t\t\t\t  }`\n\t\t\t\t\t: itemData.config.name\n\t\t\t\t: item}\n\n\t\t\t<button\n\t\t\t\tclassName=\"ct-btn-remove\"\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tonRemove()\n\t\t\t\t}}></button>\n\t\t</div>\n\t)\n}\n\nconst DraggableItems = ({\n\titems,\n\tdraggableId,\n\thasPointers = true,\n\tclassName,\n\ttagName = 'div',\n\tdirection = 'horizontal',\n\tgroup = 'header_sortables',\n\toptions = {},\n\tpropsForItem = (item) => ({}),\n\tpanelType = 'footer',\n\tdisplayWrapper = true,\n\t...props\n}) => {\n\tconst { isDragging, setIsDragging, onChange, setList } =\n\t\tuseContext(DragDropContext)\n\n\tconst { panelsHelpers } = useContext(PanelContext)\n\n\tconst itemsOutput = items.map((item, index) => (\n\t\t<DraggableItem\n\t\t\tkey={item}\n\t\t\tindex={index}\n\t\t\tpanelType={panelType}\n\t\t\titem={item}\n\t\t\tclassName={\n\t\t\t\tpanelsHelpers.isOpenFor(`builder_panel_${item}`)\n\t\t\t\t\t? 'ct-customizing'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation()\n\t\t\t\te.preventDefault()\n\n\t\t\t\tpanelsHelpers.open(`builder_panel_${item}`)\n\t\t\t}}\n\t\t\tonRemove={() => {\n\t\t\t\tpanelsHelpers.close()\n\n\t\t\t\tsetList({\n\t\t\t\t\t[draggableId]: items.filter((id) => id !== item),\n\t\t\t\t})\n\t\t\t}}\n\t\t\t{...propsForItem(item)}\n\t\t/>\n\t))\n\n\tif (!displayWrapper) {\n\t\treturn itemsOutput\n\t}\n\n\treturn (\n\t\t<Sortable\n\t\t\toptions={{\n\t\t\t\tdelay: 0,\n\t\t\t\tgroup,\n\t\t\t\tfallbackOnBody: true,\n\t\t\t\tforceFallback: true,\n\t\t\t\tfallbackTolerance: 5,\n\t\t\t\tfilter: '.ct-pointer, .ct-btn-remove',\n\t\t\t\tdirection: direction,\n\t\t\t\ttouchStartThreshold: 5,\n\t\t\t\tonStart: (event) => {\n\t\t\t\t\tsetIsDragging(event.item.dataset.id)\n\n\t\t\t\t\tdocument.body.classList.add('ct-builder-dragging')\n\n\t\t\t\t\tif (event.from && group && group.pull !== 'clone') {\n\t\t\t\t\t\tevent.to.classList.add('ct-is-over')\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tonEnd: () => {\n\t\t\t\t\tsetIsDragging(false)\n\t\t\t\t\tdocument.body.classList.remove('ct-builder-dragging')\n\t\t\t\t\t;[\n\t\t\t\t\t\t...document.querySelectorAll(\n\t\t\t\t\t\t\t'.ct-panel-builder .ct-is-over'\n\t\t\t\t\t\t),\n\t\t\t\t\t].map((el) => el.classList.remove('ct-is-over'))\n\t\t\t\t},\n\n\t\t\t\tonMove: (event, originalEvent) => {\n\t\t\t\t\tif (event.from.closest('#ct-option-header-builder-items')) {\n\t\t\t\t\t\tPromise.resolve().then(() =>\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t...event.from.querySelectorAll(\n\t\t\t\t\t\t\t\t\t`[data-id=\"${event.dragged.dataset.id}\"]`\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t].map((el) => {\n\t\t\t\t\t\t\t\tel.classList.remove('ct-builder-item')\n\t\t\t\t\t\t\t\tel.classList.add('ct-item-in-builder')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.to) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.to.children &&\n\t\t\t\t\t\t\tArray.from(event.to.children).filter(\n\t\t\t\t\t\t\t\t(e) =>\n\t\t\t\t\t\t\t\t\te.dataset.id !== '__pointer__' &&\n\t\t\t\t\t\t\t\t\te.dataset.id !== '__filler__'\n\t\t\t\t\t\t\t).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\t;[\n\t\t\t\t\t\t\t...document.querySelectorAll(\n\t\t\t\t\t\t\t\t'.ct-panel-builder .ct-is-over'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t].map((el) => el.classList.remove('ct-is-over'))\n\n\t\t\t\t\t\tevent.to.classList.add('ct-is-over')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t...options,\n\t\t\t}}\n\t\t\tonChange={(order, sortable, evt) => {\n\t\t\t\tif (draggableId === 'available-items') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tonChange({\n\t\t\t\t\tid: draggableId,\n\t\t\t\t\tvalue: order.filter(\n\t\t\t\t\t\t(i) => i !== '__pointer__' && i !== '__filler__'\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t}}\n\t\t\ttag={tagName}\n\t\t\tclassName={cls('ct-builder-items', className)}\n\t\t\t{...props}\n\t\t\tdata-id={draggableId}>\n\t\t\t{draggableId !== 'available-items' && isDragging && (\n\t\t\t\t<div data-id=\"__filler__\" className=\"ct-filler\"></div>\n\t\t\t)}\n\n\t\t\t{hasPointers && isDragging && (\n\t\t\t\t<div data-id=\"__pointer__\" className=\"ct-pointer\"></div>\n\t\t\t)}\n\n\t\t\t{itemsOutput}\n\t\t</Sortable>\n\t)\n}\n\nexport default DraggableItems\n","import { createElement, useContext } from '@wordpress/element'\nimport { __ } from 'ct-i18n'\nimport cls from 'classnames'\nimport DraggableItems from './DraggableItems'\nimport { PanelContext } from '../../../options/components/PanelLevel'\n\nconst Bar = ({ bar, builderValue, direction = 'horizontal' }) => {\n\tconst { panelsHelpers } = useContext(PanelContext)\n\n\tconst maybeValues = builderValue.items[bar.id]\n\tconst allItems = ct_customizer_localizations.header_builder_data.footer\n\n\tconst primaryItem = allItems.find(({ id }) => id === bar.id)\n\n\tconst values = maybeValues ? maybeValues.values : {}\n\n\tlet columns = 'initial'\n\n\tif (bar.columns.length === 2) {\n\t\tcolumns = values['2_columns_layout'] || {\n\t\t\tdesktop: 'repeat(2, 1fr)',\n\t\t\ttablet: 'initial',\n\t\t\tmobile: 'initial',\n\t\t}\n\t}\n\n\tif (bar.columns.length === 3) {\n\t\tcolumns = values['3_columns_layout'] || {\n\t\t\tdesktop: 'repeat(3, 1fr)',\n\t\t\ttablet: 'initial',\n\t\t\tmobile: 'initial',\n\t\t}\n\t}\n\n\tif (bar.columns.length === 4) {\n\t\tcolumns = values['4_columns_layout'] || {\n\t\t\tdesktop: 'repeat(4, 1fr)',\n\t\t\ttablet: 'initial',\n\t\t\tmobile: 'initial',\n\t\t}\n\t}\n\n\tif (bar.columns.length === 5) {\n\t\tcolumns = values['5_columns_layout'] || {\n\t\t\tdesktop: 'repeat(5, 1fr)',\n\t\t\ttablet: 'initial',\n\t\t\tmobile: 'initial',\n\t\t}\n\t}\n\n\tif (bar.columns.length === 6) {\n\t\tcolumns = values['6_columns_layout'] || {\n\t\t\tdesktop: 'repeat(6, 1fr)',\n\t\t\ttablet: 'initial',\n\t\t\tmobile: 'initial',\n\t\t}\n\t}\n\n\tif (columns && columns.desktop) {\n\t\tcolumns = columns.desktop\n\t}\n\n\treturn (\n\t\t<li className=\"builder-row\">\n\t\t\t<div\n\t\t\t\tclassName=\"ct-row-actions\"\n\t\t\t\tonClick={() => panelsHelpers.open(`builder_panel_${bar.id}`)}>\n\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t\t'top-row': __('Top Row', 'blocksy'),\n\t\t\t\t\t\t'middle-row': __('Middle Row', 'blocksy'),\n\t\t\t\t\t\t'bottom-row': __('Bottom Row', 'blocksy'),\n\t\t\t\t\t}[bar.id]\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<ul\n\t\t\t\tclassName=\"row-inner\"\n\t\t\t\tstyle={{\n\t\t\t\t\t'--gridTemplateColummns': columns,\n\t\t\t\t}}>\n\t\t\t\t{bar.columns.map((column, index) => (\n\t\t\t\t\t<li className=\"builder-column\" key={index}>\n\t\t\t\t\t\t<DraggableItems\n\t\t\t\t\t\t\tdraggableId={`${bar.id}:${index}`}\n\t\t\t\t\t\t\titems={column}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</li>\n\t)\n}\n\nconst shallowCompare = (prev, next) => {\n\tfor (let key in next) {\n\t\tif (next[key] !== prev[key]) return false\n\t}\n\n\treturn true\n}\n\nexport function memo(Component, areEqual = shallowCompare) {\n\tlet prevProps = {}\n\tlet prevResult\n\treturn (nextProps) => {\n\t\tif (prevResult !== undefined && areEqual(prevProps, nextProps)) {\n\t\t\treturn prevResult\n\t\t}\n\n\t\tprevProps = nextProps\n\t\tprevResult = createElement(Component, Object.assign({}, nextProps))\n\n\t\treturn prevResult\n\t}\n}\n\nconst ColumnsBuilder = memo(({ builderValue }) => (\n\t<div className={cls('placements-builder')}>\n\t\t<ul className=\"horizontal-rows\">\n\t\t\t{['top-row', 'middle-row', 'bottom-row'].map((bar) => (\n\t\t\t\t<Bar\n\t\t\t\t\tbuilderValue={builderValue}\n\t\t\t\t\tbar={builderValue.rows.find(({ id }) => id === bar)}\n\t\t\t\t\tkey={bar}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</ul>\n\t</div>\n))\n\n// const ColumnsBuilder = () => null\n\nexport default ColumnsBuilder\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport DraggableItems from '../DraggableItems'\nimport { DragDropContext } from '../../../../options/options/ct-footer-builder'\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\nimport { getOriginalId, customItemsSeparator } from '../../placements/helpers'\n\nimport { Slot } from '@wordpress/components'\n\nconst SecondaryItems = ({\n\tbuilderValue,\n\tbuilderValueDispatch,\n\tinlinedItemsFromBuilder,\n\tdisplayList = true,\n}) => {\n\tconst { panelsState, panelsActions, currentView, isDragging } =\n\t\tuseContext(DragDropContext)\n\n\tconst inlinedItemsFromAllViewsBuilder = builderValue.rows.reduce(\n\t\t(currentItems, { columns }) => [\n\t\t\t...currentItems,\n\t\t\t...(columns || []).reduce((c, items) => [...c, ...items], []),\n\t\t],\n\t\t[]\n\t)\n\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.footer.filter(\n\t\t\t({ config }) =>\n\t\t\t\t// config.devices.indexOf(currentView) > -1 &&\n\t\t\t\tconfig.enabled\n\t\t)\n\tconst allItems = ct_customizer_localizations.header_builder_data.footer\n\n\t/**\n\t * Dynamic items have a : in their ID\n\t */\n\tconst allDynamicItems = Object.keys(builderValue.items).filter(\n\t\t(id) => id.indexOf(customItemsSeparator()) > -1\n\t)\n\n\treturn (\n\t\t<DraggableItems\n\t\t\toptions={{ sort: false, filter: '.ct-item-in-builder' }}\n\t\t\tgroup={{\n\t\t\t\tname: 'header_sortables',\n\t\t\t\tput: false,\n\t\t\t\tpull: 'clone',\n\t\t\t}}\n\t\t\tdraggableId={'available-items'}\n\t\t\titems={[...secondaryItems.map(({ id }) => id), ...allDynamicItems]\n\t\t\t\t.filter((el) =>\n\t\t\t\t\tallItems.some(({ id }) => id === getOriginalId(el))\n\t\t\t\t)\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tconst aItemData =\n\t\t\t\t\t\tct_customizer_localizations.header_builder_data[\n\t\t\t\t\t\t\t'footer'\n\t\t\t\t\t\t].find(({ id }) => id === getOriginalId(a))\n\n\t\t\t\t\tconst bItemData =\n\t\t\t\t\t\tct_customizer_localizations.header_builder_data[\n\t\t\t\t\t\t\t'footer'\n\t\t\t\t\t\t].find(({ id }) => id === getOriginalId(b))\n\n\t\t\t\t\treturn aItemData.config.name.localeCompare(\n\t\t\t\t\t\tbItemData.config.name\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\thasPointers={false}\n\t\t\tpanelType=\"footer\"\n\t\t\tdisplayWrapper={displayList}\n\t\t\tpropsForItem={(item) => ({\n\t\t\t\trenderItem: ({ item, itemData, index }) => {\n\t\t\t\t\tconst itemOptions = allItems.find(\n\t\t\t\t\t\t({ id }) => id === getOriginalId(item)\n\t\t\t\t\t).options\n\n\t\t\t\t\tconst allClonesAndOriginal = [\n\t\t\t\t\t\tgetOriginalId(item),\n\t\t\t\t\t\t...allDynamicItems.filter(\n\t\t\t\t\t\t\t(id) => getOriginalId(id) === getOriginalId(item)\n\t\t\t\t\t\t),\n\t\t\t\t\t]\n\n\t\t\t\t\tconst itemName =\n\t\t\t\t\t\tallClonesAndOriginal.length > 1\n\t\t\t\t\t\t\t? `${itemData.config.name} ${\n\t\t\t\t\t\t\t\t\tallClonesAndOriginal.indexOf(item) + 1\n\t\t\t\t\t\t\t  }`\n\t\t\t\t\t\t\t: itemData.config.name\n\n\t\t\t\t\tconst option = {\n\t\t\t\t\t\tlabel: itemName,\n\t\t\t\t\t\t'inner-options': itemOptions,\n\t\t\t\t\t}\n\n\t\t\t\t\tconst itemInBuilder =\n\t\t\t\t\t\tinlinedItemsFromBuilder.indexOf(item) > -1\n\n\t\t\t\t\tconst id = `builder_panel_${item}`\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\t\tgetActualOption={({ open, container }) => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{inlinedItemsFromAllViewsBuilder.indexOf(\n\t\t\t\t\t\t\t\t\t\titem\n\t\t\t\t\t\t\t\t\t) > -1 && (\n\t\t\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\t\t\tgetValues={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tlet itemValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items[item]\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\titemValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t) > 5\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn itemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\titemOptions,\n\t\t\t\t\t\t\t\t\t\t\t\t\titemValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? itemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\t\t\tonChangeFor={(\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items[item]\n\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'ITEM_VALUE_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!currentValue ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(currentValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t).length === 0)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titemOptions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{displayList && (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tref={container}\n\t\t\t\t\t\t\t\t\t\t\tdata-id={item}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-item-in-builder':\n\t\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-builder-item':\n\t\t\t\t\t\t\t\t\t\t\t\t\t!itemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder && open()\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t{itemName}\n\n\t\t\t\t\t\t\t\t\t\t\t<Slot\n\t\t\t\t\t\t\t\t\t\t\t\tname={`ColumnsBuilderSidebarItem_${index}`}\n\t\t\t\t\t\t\t\t\t\t\t\tfillProps={{\n\t\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t\t\titemData,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t)}></PanelMetaWrapper>\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})}\n\t\t\tdirection=\"vertical\"\n\t\t/>\n\t)\n}\n\nexport default SecondaryItems\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\n\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\nimport { DragDropContext } from '../../../../options/options/ct-footer-builder'\n\nconst InvisiblePanels = ({ builderValue, builderValueDispatch }) => {\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.footer\n\tconst allItems = ct_customizer_localizations.header_builder_data.footer\n\n\tconst { panelsState, panelsActions } = useContext(DragDropContext)\n\n\tconst primaryItems = allItems.filter(\n\t\t({ id }) => !secondaryItems.find((item) => item.id === id)\n\t)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{primaryItems.map((primaryItem) => {\n\t\t\t\tconst option = {\n\t\t\t\t\tlabel: primaryItem.config.name,\n\t\t\t\t\t'inner-options': primaryItem.options,\n\t\t\t\t}\n\n\t\t\t\tconst id = `builder_panel_${primaryItem.id}`\n\n\t\t\t\treturn (\n\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tkey={primaryItem.id}\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\tgetActualOption={({ container }) => (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\tgetValues={() => {\n\t\t\t\t\t\t\t\t\t\tlet itemValue =\n\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items[primaryItem.id]\n\n\t\t\t\t\t\t\t\t\t\tconst maybeRow = builderValue.rows.find(\n\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === primaryItem.id\n\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\tlet hasWidgetAreas = false\n\n\t\t\t\t\t\t\t\t\t\tif (maybeRow) {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tmaybeRow.columns\n\t\t\t\t\t\t\t\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(allItems, current) => [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...allItems,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.join('')\n\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf('widget-area') > -1\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\thasWidgetAreas = true\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\titemValue &&\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(itemValue.values) > 5\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t...itemValue.values,\n\t\t\t\t\t\t\t\t\t\t\t\t...(maybeRow\n\t\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titems_per_row: maybeRow.columns.length.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thas_widget_areas: hasWidgetAreas\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'yes'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'no',\n\t\t\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t...getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryItem.options,\n\t\t\t\t\t\t\t\t\t\t\t\titemValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t? itemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t),\n\n\t\t\t\t\t\t\t\t\t\t\t...(maybeRow\n\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titems_per_row: maybeRow.columns.length.toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thas_widget_areas: hasWidgetAreas\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'yes'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'no',\n\t\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tonChangeFor={(optionId, optionValue) => {\n\t\t\t\t\t\t\t\t\t\tconst currentValue =\n\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items[primaryItem.id]\n\n\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\ttype: 'ITEM_VALUE_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\tid: primaryItem.id,\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\tvalues:\n\t\t\t\t\t\t\t\t\t\t\t\t\t!currentValue ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t(currentValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t).length === 0)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryItem.options,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t})}\n\t\t</Fragment>\n\t)\n}\n\nexport default InvisiblePanels\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport cls from 'classnames'\n\nimport { DragDropContext } from '../../../../options/options/ct-footer-builder'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\n\nimport { __ } from 'ct-i18n'\n\nconst PanelsManager = () => {\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.footer\n\tconst allItems = ct_customizer_localizations.header_builder_data.footer\n\n\tconst {\n\t\tbuilderValueCollection,\n\t\tbuilderValue,\n\t\tbuilderValueDispatch,\n\t\tpanelsActions,\n\t} = useContext(DragDropContext)\n\n\tconst allSections = builderValueCollection.sections.filter(\n\t\t({ id }) =>\n\t\t\tid !== 'type-2' && id !== 'type-3' && id.indexOf('ct-custom') === -1\n\t)\n\n\treturn (\n\t\t<div className=\"ct-panels-manager\">\n\t\t\t{allSections.map(({ name, id }) => {\n\t\t\t\treturn <div>{name}</div>\n\t\t\t})}\n\n\t\t\t<ul className={cls('ct-panels-list')}>\n\t\t\t\t{allSections.map(({ name, id }) => {\n\t\t\t\t\tlet panelLabel =\n\t\t\t\t\t\tname ||\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'type-1': __('Global Footer', 'blocksy'),\n\t\t\t\t\t\t}[id] ||\n\t\t\t\t\t\tid\n\n\t\t\t\t\tconst panelId = `builder_footer_panel_${id}`\n\n\t\t\t\t\tconst footerOptions =\n\t\t\t\t\t\tct_customizer_localizations.header_builder_data\n\t\t\t\t\t\t\t.footer_data.footer_options\n\n\t\t\t\t\tconst option = {\n\t\t\t\t\t\tlabel: panelLabel,\n\t\t\t\t\t\t'inner-options': footerOptions,\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\t\tid={panelId}\n\t\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\t\tgetActualOption={({ open }) => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{id === builderValue.id && (\n\t\t\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\t\t\tid={panelId}\n\t\t\t\t\t\t\t\t\t\t\tgetValues={() =>\n\t\t\t\t\t\t\t\t\t\t\t\tgetValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfooterOptions,\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: builderValue.settings\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\t\t\tonChangeFor={(\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'BUILDER_GLOBAL_SETTING_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{id === builderValue.id && (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\t\t\tactive: id === builderValue.id,\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-global': id === 'type-1',\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\topen()\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"ct-panel-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{panelLabel}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t)}></PanelMetaWrapper>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t</div>\n\t)\n}\n\nexport default PanelsManager\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\nimport DraggableItems from './DraggableItems'\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../options/helpers/get-value-from-input'\nimport { __ } from 'ct-i18n'\n\nimport OptionsPanel from '../../../options/OptionsPanel'\n\nimport { Slot } from '@wordpress/components'\n\nimport SecondaryItems from './builder-sidebar/SecondaryItems'\nimport InvisiblePanels from './builder-sidebar/InvisiblePanels'\nimport PanelsManager from './builder-sidebar/PanelsManager'\n\nconst AvailableItems = ({\n\tbuilderValue,\n\tbuilderValueCollection,\n\tbuilderValueDispatch,\n\tinlinedItemsFromBuilder,\n}) => {\n\t// panels | items | options\n\tconst [currentTab, setCurrentTab] = useState('items')\n\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.footer\n\tconst allItems = ct_customizer_localizations.header_builder_data.footer\n\n\tconst footerOptions =\n\t\tct_customizer_localizations.header_builder_data.footer_data\n\t\t\t.footer_options\n\n\treturn (\n\t\t<div className=\"ct-available-items ct-footer-builder-options\">\n\t\t\t<h3\n\t\t\t\tclassName=\"ct-title\"\n\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t__html: sprintf(\n\t\t\t\t\t\t__('Customizing: %s', 'blocksy'),\n\t\t\t\t\t\t`<span>${\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tbuilderValueCollection.sections.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === builderValue.id\n\t\t\t\t\t\t\t\t) || {}\n\t\t\t\t\t\t\t).name ||\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'type-1': __('Global Footer', 'blocksy'),\n\t\t\t\t\t\t\t}[builderValue.id] ||\n\t\t\t\t\t\t\tbuilderValue.id\n\t\t\t\t\t\t}</span>`\n\t\t\t\t\t),\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div className=\"ct-tabs\">\n\t\t\t\t<ul>\n\t\t\t\t\t{['items', 'panels'].map((tab) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={tab}\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\tsetCurrentTab(tab)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\tactive: tab === currentTab,\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpanels: __('Footers', 'blocksy'),\n\t\t\t\t\t\t\t\t\titems: __('Elements', 'blocksy'),\n\t\t\t\t\t\t\t\t}[tab]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\n\t\t\t\t<div className=\"ct-current-tab\">\n\t\t\t\t\t{currentTab === 'panels' && (\n\t\t\t\t\t\t<Slot name=\"ColumnsBuilderPanelsManager\">\n\t\t\t\t\t\t\t{(fills) =>\n\t\t\t\t\t\t\t\tfills.length === 0 ? <PanelsManager /> : fills\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</Slot>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<SecondaryItems\n\t\t\t\t\t\tbuilderValue={builderValue}\n\t\t\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t\t\t\tinlinedItemsFromBuilder={inlinedItemsFromBuilder}\n\t\t\t\t\t\tdisplayList={currentTab === 'items'}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<InvisiblePanels\n\t\t\t\tbuilderValue={builderValue}\n\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default AvailableItems\n","import nanoid from 'nanoid'\nimport { fetchCurrentFooter } from '../../../options/options/ct-footer-builder'\nimport { getOriginalId, customItemsSeparator } from '../placements/helpers'\n\nconst transformColumns = (columns, futureLength) => {\n\tcolumns = columns.filter((c) => c.length > 0)\n\n\treturn Array.from(Array(futureLength)).map((_, index) => {\n\t\tif (Array.isArray(columns[index])) {\n\t\t\treturn columns[index]\n\t\t}\n\n\t\treturn []\n\t})\n}\n\nexport const builderReducer = (builderValue, action) => {\n\tlet updatedGlobalState = {}\n\tlet newSections = []\n\n\tlet futureBuilderValue = builderValue.sections.find(\n\t\t({ id }) =>\n\t\t\tid.indexOf(\n\t\t\t\tbuilderValue.__forced_static_footer__ ||\n\t\t\t\t\tfetchCurrentFooter() ||\n\t\t\t\t\tbuilderValue.sections[0].id\n\t\t\t) > -1\n\t)\n\n\tlet shouldUpdate = false\n\tlet updateItemId = false\n\tlet removeSectionIds = []\n\n\tif (action.type === 'BUILDER_GLOBAL_SETTING_ON_CHANGE') {\n\t\tconst { optionId, optionValue, values = {} } = action.payload\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\tsettings: {\n\t\t\t\t...futureBuilderValue.settings,\n\t\t\t\t[optionId]: optionValue,\n\t\t\t},\n\t\t}\n\t}\n\n\tif (action.type === 'ITEM_VALUE_ON_CHANGE') {\n\t\tconst { id, optionId, optionValue, values = {} } = action.payload\n\n\t\tupdateItemId = `${id}:${optionId}`\n\n\t\tlet items = futureBuilderValue.items\n\n\t\tif (\n\t\t\t(id === 'top-row' || id === 'middle-row' || id === 'bottom-row') &&\n\t\t\toptionId === 'items_per_row'\n\t\t) {\n\t\t\tfutureBuilderValue = {\n\t\t\t\t...futureBuilderValue,\n\t\t\t\trows: futureBuilderValue.rows.map((row) =>\n\t\t\t\t\trow.id === id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...row,\n\t\t\t\t\t\t\t\tcolumns: transformColumns(\n\t\t\t\t\t\t\t\t\trow.columns,\n\t\t\t\t\t\t\t\t\tparseInt(optionValue, 10)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: row\n\t\t\t\t),\n\t\t\t}\n\t\t} else {\n\t\t\tif (!items[id]) {\n\t\t\t\titems[id] = {\n\t\t\t\t\tid,\n\t\t\t\t\tvalues: {},\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfutureBuilderValue = {\n\t\t\t\t...futureBuilderValue,\n\t\t\t\titems: {\n\t\t\t\t\t...(Array.isArray(items) ? {} : items),\n\t\t\t\t\t[id]: {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t...items[id].values,\n\t\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tif (action.type === 'REMOVE_CLONED_ITEM') {\n\t\tlet {\n\t\t\t[action.payload.id]: removedItem,\n\t\t\t...localItems\n\t\t} = futureBuilderValue.items\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\titems: localItems,\n\t\t}\n\t}\n\n\tif (action.type === 'CLONE_ITEM') {\n\t\tconst futureId = getOriginalId(action.payload.id)\n\n\t\tlet completeFutureId = `${futureId}${customItemsSeparator()}${nanoid()}`\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\titems: {\n\t\t\t\t...futureBuilderValue.items,\n\t\t\t\t[completeFutureId]: {\n\t\t\t\t\tid: completeFutureId,\n\t\t\t\t\tvalues: futureBuilderValue.items[futureId]\n\t\t\t\t\t\t? futureBuilderValue.items[futureId].values || {}\n\t\t\t\t\t\t: {},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\n\tif (action.type === 'PICK_BUILDER_SECTION') {\n\t\tshouldUpdate = true\n\t\tupdatedGlobalState = { __forced_static_footer__: action.payload.id }\n\t}\n\n\tif (action.type === 'MARK_FOOTER_AS_GLOBAL') {\n\t\tshouldUpdate = true\n\n\t\tupdatedGlobalState = {\n\t\t\t__forced_static_footer__: action.payload.id,\n\t\t\tcurrent_section: action.payload.id,\n\t\t}\n\t}\n\n\tif (action.type === 'MARK_SPECIFIC_FOOTER_AS_GLOBAL') {\n\t\tupdatedGlobalState = {\n\t\t\tcurrent_section: action.payload.id,\n\t\t}\n\t}\n\n\tif (action.type === 'SET_LIST') {\n\t\tshouldUpdate = true\n\t\tconst { lists } = action.payload\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\trows: futureBuilderValue.rows.map(({ id: barId, columns }) => {\n\t\t\t\tconst keys = Object.keys(lists)\n\n\t\t\t\tif (keys.map((k) => k.split(':')[0]).indexOf(barId) > -1) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: barId,\n\t\t\t\t\t\tcolumns: columns.map((column, index) => {\n\t\t\t\t\t\t\tif (lists[`${barId}:${index}`]) {\n\t\t\t\t\t\t\t\treturn lists[`${barId}:${index}`]\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn column\n\t\t\t\t\t\t}),\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid: barId,\n\t\t\t\t\tcolumns,\n\t\t\t\t}\n\t\t\t}),\n\t\t}\n\t}\n\n\tif (action.type === 'CREATE_NEW_SECTION') {\n\t\tconst { name, copy } = action.payload\n\n\t\tnewSections = [\n\t\t\tcopy\n\t\t\t\t? {\n\t\t\t\t\t\t...(builderValue.sections.find(\n\t\t\t\t\t\t\t({ id }) => id === copy\n\t\t\t\t\t\t) || {}),\n\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tid: `ct-custom-${nanoid()}`,\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tid: `ct-custom-${nanoid()}`,\n\t\t\t\t\t\tmode: 'columns',\n\t\t\t\t\t\trows: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'top-row',\n\t\t\t\t\t\t\t\tcolumns: [[], []],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'middle-row',\n\t\t\t\t\t\t\t\tcolumns: [[], [], []],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'bottom-row',\n\t\t\t\t\t\t\t\tcolumns: [['copyright']],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tsettings: [],\n\t\t\t\t  },\n\t\t]\n\t}\n\n\tif (action.type === 'REMOVE_BUILDER_SECTION') {\n\t\tremoveSectionIds.push(action.payload.id)\n\t}\n\n\tconst actualBuilderValue = {\n\t\t...builderValue,\n\t\t...updatedGlobalState,\n\t\t__should_refresh__: shouldUpdate,\n\t\t__should_refresh_item__: updateItemId,\n\t\tsections: [\n\t\t\t...builderValue.sections.map((builder) =>\n\t\t\t\tbuilder.id === futureBuilderValue.id\n\t\t\t\t\t? futureBuilderValue\n\t\t\t\t\t: builder\n\t\t\t),\n\t\t\t...newSections,\n\t\t].filter(({ id }) => removeSectionIds.indexOf(id) === -1),\n\t}\n\n\treturn actualBuilderValue\n}\n","import {\n\tcreateElement,\n\tFragment,\n\tuseRef,\n\tComponent,\n\tuseEffect,\n\tuseMemo,\n\tcreatePortal,\n\tuseState,\n\tuseCallback,\n\tcreateContext,\n\tuseReducer,\n} from '@wordpress/element'\nimport { __ } from 'ct-i18n'\n\nimport ColumnsBuilder from '../../customizer/panels-builder/columns/ColumnsBuilder'\nimport AvailableItems from '../../customizer/panels-builder/columns/AvailableItems'\n\nimport { builderReducer } from '../../customizer/panels-builder/columns/builderReducer'\nexport const DragDropContext = createContext({})\n\nconst getDocument = (x) =>\n\tx.document || x.contentDocument || x.contentWindow.document\n\nexport const fetchCurrentFooter = () => {\n\tconst document = getDocument(\n\t\twp.customize.previewer.container.find('iframe')[0]\n\t)\n\n\tif (\n\t\twp.customize.previewer.container\n\t\t\t.find('iframe')[0]\n\t\t\t.contentDocument.querySelector('footer.ct-footer')\n\t) {\n\t\treturn wp.customize.previewer.container\n\t\t\t.find('iframe')[0]\n\t\t\t.contentDocument.querySelector('footer.ct-footer').dataset.id\n\t}\n\n\treturn null\n}\n\nconst FooterBuilder = ({\n\tvalue: allBuilderSections,\n\toption,\n\tonChange: onBuilderValueChange,\n}) => {\n\tconst currentFooter = useRef(null)\n\n\tif (currentFooter.current === null) {\n\t\tcurrentFooter.current = (\n\t\t\tallBuilderSections.sections.find(\n\t\t\t\t({ id }) => id.indexOf(fetchCurrentFooter()) > -1\n\t\t\t) || allBuilderSections.sections[0]\n\t\t).id\n\t}\n\n\tuseEffect(() => {\n\t\tlet {\n\t\t\t__forced_static_footer__,\n\t\t\t__should_refresh__,\n\t\t\t...old\n\t\t} = wp.customize('footer_placements')()\n\n\t\tObject.keys(old).map((key) => {\n\t\t\tif (parseFloat(key)) {\n\t\t\t\tdelete old[key]\n\t\t\t}\n\t\t})\n\n\t\ttry {\n\t\t\twp.customize('footer_placements')({\n\t\t\t\t...old,\n\t\t\t\t__forced_static_footer__: (\n\t\t\t\t\tallBuilderSections.sections.find(\n\t\t\t\t\t\t({ id }) => id.indexOf(fetchCurrentFooter()) > -1\n\t\t\t\t\t) || allBuilderSections.sections[0]\n\t\t\t\t).id,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\n\t\treturn () => {\n\t\t\tconst { __forced_static_footer__, ...old } = wp.customize(\n\t\t\t\t'footer_placements'\n\t\t\t)()\n\n\t\t\twp.customize('footer_placements')({\n\t\t\t\t__should_refresh__: true,\n\t\t\t\t[Math.random()]: 'update',\n\t\t\t\t...old,\n\t\t\t})\n\t\t}\n\t}, [])\n\n\tconst [builderValueCollection, builderValueDispatchInternal] = useReducer(\n\t\tbuilderReducer,\n\t\t{\n\t\t\t...allBuilderSections,\n\t\t\t...(currentFooter.current\n\t\t\t\t? {\n\t\t\t\t\t\t__forced_static_footer__: currentFooter.current,\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t}\n\t)\n\n\tconst [builderCollapsed, setBuilderCollapsed] = useState(false)\n\n\tconst builderValue = useMemo(\n\t\t() =>\n\t\t\tbuilderValueCollection.sections.find(\n\t\t\t\t({ id }) =>\n\t\t\t\t\tid === builderValueCollection.__forced_static_footer__\n\t\t\t) || builderValueCollection.sections[0],\n\t\t[builderValueCollection]\n\t)\n\n\tconst [isDragging, setIsDragging] = useState(false)\n\n\tconst inlinedItemsFromBuilder = builderValue.rows.reduce(\n\t\t(currentItems, { columns }) => [\n\t\t\t...currentItems,\n\t\t\t...(columns || []).reduce((c, items) => [...c, ...items], []),\n\t\t],\n\t\t[]\n\t)\n\n\tconst builderValueDispatch = useCallback(\n\t\t(action) => {\n\t\t\tlet newState = builderReducer(builderValueCollection, action)\n\n\t\t\tif (\n\t\t\t\taction.type === 'BUILDER_GLOBAL_SETTING_ON_CHANGE' &&\n\t\t\t\twp.customize.previewer\n\t\t\t) {\n\t\t\t\tconst builderValue =\n\t\t\t\t\tnewState.sections.find(\n\t\t\t\t\t\t({ id }) => id === newState.__forced_static_footer__\n\t\t\t\t\t) || newState.sections[0]\n\n\t\t\t\tconst { optionId, optionValue, values = {} } = action.payload\n\n\t\t\t\twp.customize.previewer.send('ct:footer:receive-value-update', {\n\t\t\t\t\titemId: 'global',\n\t\t\t\t\toptionId,\n\t\t\t\t\toptionValue,\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\t...builderValue.settings,\n\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\taction.type === 'ITEM_VALUE_ON_CHANGE' &&\n\t\t\t\twp.customize.previewer\n\t\t\t) {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\toptionId,\n\t\t\t\t\toptionValue,\n\t\t\t\t\tvalues = {},\n\t\t\t\t} = action.payload\n\n\t\t\t\tconst builderValue =\n\t\t\t\t\tnewState.sections.find(\n\t\t\t\t\t\t({ id }) => id === newState.__forced_static_footer__\n\t\t\t\t\t) || newState.sections[0]\n\n\t\t\t\tlet items = builderValue.items\n\n\t\t\t\tconst currentItem = items[id] || { values: {} }\n\n\t\t\t\twp.customize.previewer.send('ct:footer:receive-value-update', {\n\t\t\t\t\titemId: id,\n\t\t\t\t\toptionId,\n\t\t\t\t\toptionValue,\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\t...currentItem.values,\n\t\t\t\t\t\t...values,\n\t\t\t\t\t\t...(id === 'top-row' ||\n\t\t\t\t\t\tid === 'middle-row' ||\n\t\t\t\t\t\tid === 'bottom-row'\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\titems_per_row: builderValue.rows.find(\n\t\t\t\t\t\t\t\t\t\t({ id: _id }) => id === _id\n\t\t\t\t\t\t\t\t\t).columns.length,\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t...((id === 'top-row' ||\n\t\t\t\t\t\t\tid === 'middle-row' ||\n\t\t\t\t\t\t\tid === 'bottom-row') &&\n\t\t\t\t\t\toptionId === 'items_per_row'\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\titems_per_row: parseInt(optionValue, 10),\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tonBuilderValueChange(newState)\n\t\t\tbuilderValueDispatchInternal(action)\n\t\t},\n\t\t[\n\t\t\tbuilderValueDispatchInternal,\n\t\t\tonBuilderValueChange,\n\t\t\tbuilderValueCollection,\n\t\t]\n\t)\n\n\tconst setList = (lists) =>\n\t\tbuilderValueDispatch({\n\t\t\ttype: 'SET_LIST',\n\t\t\tonBuilderValueChange,\n\t\t\tpayload: {\n\t\t\t\tlists,\n\t\t\t},\n\t\t})\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tdocument\n\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t.classList.remove('ct-builder-collapsed')\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<DragDropContext.Provider\n\t\t\t\tvalue={{\n\t\t\t\t\tisDragging,\n\t\t\t\t\tsetIsDragging,\n\t\t\t\t\tsetList,\n\t\t\t\t\tbuilderValueDispatch,\n\t\t\t\t\tbuilderValueCollection,\n\t\t\t\t\tbuilderValue,\n\t\t\t\t\tonChange: ({ id, value }) => setList({ [id]: value }),\n\t\t\t\t}}>\n\t\t\t\t<AvailableItems\n\t\t\t\t\tbuilderValue={builderValue}\n\t\t\t\t\tinlinedItemsFromBuilder={inlinedItemsFromBuilder}\n\t\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t\t\tbuilderValueCollection={builderValueCollection}\n\t\t\t\t/>\n\n\t\t\t\t{createPortal(\n\t\t\t\t\t<div className=\"ct-builder-footer\">\n\t\t\t\t\t\t<ul className=\"ct-view-switch\">\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tclassName=\"ct-builder-toggle\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetBuilderCollapsed(!builderCollapsed)\n\n\t\t\t\t\t\t\t\t\tif (builderCollapsed) {\n\t\t\t\t\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t\t\t\t\t\t\t\t.classList.remove(\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-builder-collapsed'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t\t\t\t\t\t\t\t.classList.add(\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-builder-collapsed'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{builderCollapsed\n\t\t\t\t\t\t\t\t\t? __('Show Builder', 'blocksy')\n\t\t\t\t\t\t\t\t\t: __('Hide Builder', 'blocksy')}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t<ColumnsBuilder builderValue={builderValue} />\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.querySelector('.ct-panel-builder')\n\t\t\t\t)}\n\t\t\t</DragDropContext.Provider>\n\t\t</Fragment>\n\t)\n}\n\nFooterBuilder.renderingConfig = { design: 'none' }\n\nexport default FooterBuilder\n","import { createElement, useContext, Fragment } from '@wordpress/element'\nimport cls from 'classnames'\nimport Sortable from './Sortable'\nimport { DragDropContext } from './BuilderRoot'\nimport { PanelContext } from '../../../options/components/PanelLevel'\nimport { customItemsSeparator, getOriginalId } from './helpers'\nimport { capitalizeFirstLetter } from '../../../options/helpers/get-label'\n\nconst isItemAllowedIn = (itemId, barId, currentView) => {\n\tconst item = ct_customizer_localizations.header_builder_data.header.find(\n\t\t({ id }) => id === getOriginalId(itemId)\n\t)\n\n\tif (!item) {\n\t\treturn true\n\t}\n\n\tlet allowed_in = []\n\n\tif (Array.isArray(item.config.allowed_in)) {\n\t\tallowed_in = item.config.allowed_in\n\t} else {\n\t\tif (item.config.allowed_in[currentView]) {\n\t\t\tallowed_in = item.config.allowed_in[currentView]\n\t\t}\n\t}\n\n\tconst allowedRespected =\n\t\tallowed_in.length > 0 ? allowed_in.indexOf(barId) > -1 : true\n\n\tconst exclusionRespected =\n\t\titem.config.excluded_from.length > 0\n\t\t\t? item.config.excluded_from.indexOf(barId) === -1\n\t\t\t: true\n\n\treturn allowedRespected && exclusionRespected\n}\n\nexport const DraggableItem = ({\n\titem,\n\tindex,\n\tpanelType,\n\tonRemove,\n\trenderItem,\n\tonClick,\n\tclassName,\n}) => {\n\tconst itemData = ct_customizer_localizations.header_builder_data[\n\t\tpanelType\n\t].find(({ id }) => id === getOriginalId(item))\n\n\tconst { builderValue } = useContext(DragDropContext)\n\n\tif (renderItem) {\n\t\treturn renderItem({ item, itemData, index })\n\t}\n\n\t/**\n\t * Dynamic items have a : in their ID\n\t */\n\tconst allDynamicItems = builderValue.items\n\t\t.filter(({ id }) => id.indexOf(customItemsSeparator()) > -1)\n\t\t.map(({ id }) => id)\n\n\tconst allClonesAndOriginal = [\n\t\tgetOriginalId(item),\n\t\t...allDynamicItems.filter(\n\t\t\t(id) => getOriginalId(id) === getOriginalId(item)\n\t\t),\n\t]\n\n\tconst beautyItem = capitalizeFirstLetter(getOriginalId(item))\n\n\treturn (\n\t\t<div\n\t\t\tdata-id={item}\n\t\t\tclassName={cls('ct-builder-item', className, {\n\t\t\t\t// 'ct-is-dragging': snapshot.isDragging\n\t\t\t})}\n\t\t\tonClick={onClick}>\n\t\t\t{allClonesAndOriginal.length > 1\n\t\t\t\t? `${itemData?.config?.name ?? beautyItem} ${\n\t\t\t\t\t\tallClonesAndOriginal.indexOf(item) + 1\n\t\t\t\t  }`\n\t\t\t\t: itemData?.config?.name ?? beautyItem}\n\n\t\t\t<button\n\t\t\t\tclassName=\"ct-btn-remove\"\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tonRemove()\n\t\t\t\t}}></button>\n\t\t</div>\n\t)\n}\n\nconst DraggableItems = ({\n\titems,\n\tdraggableId,\n\thasPointers = true,\n\tclassName,\n\ttagName = 'div',\n\tdirection = 'horizontal',\n\tgroup = 'header_sortables',\n\toptions = {},\n\tpropsForItem = (item) => ({}),\n\tdisplayWrapper = true,\n\t...props\n}) => {\n\tconst { currentView, isDragging, setIsDragging, onChange, setList } =\n\t\tuseContext(DragDropContext)\n\n\tconst { panelsHelpers } = useContext(PanelContext)\n\n\tconst itemsOutput = items.map((item, index) => (\n\t\t<DraggableItem\n\t\t\tkey={item}\n\t\t\tindex={index}\n\t\t\tpanelType={'header'}\n\t\t\titem={item}\n\t\t\tclassName={\n\t\t\t\tpanelsHelpers.isOpenFor(`builder_panel_${item}`)\n\t\t\t\t\t? 'ct-customizing'\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation()\n\t\t\t\te.preventDefault()\n\n\t\t\t\tif (isDragging) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tpanelsHelpers.open(`builder_panel_${item}`)\n\t\t\t}}\n\t\t\tonRemove={() => {\n\t\t\t\tpanelsHelpers.close()\n\n\t\t\t\tsetList({\n\t\t\t\t\t[draggableId]: items.filter((id) => id !== item),\n\n\t\t\t\t\t...(currentView === 'desktop' && item === 'trigger'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t['offcanvas:start']: [],\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t})\n\t\t\t}}\n\t\t\t{...propsForItem(item)}\n\t\t/>\n\t))\n\n\tif (!displayWrapper) {\n\t\treturn <Fragment>{itemsOutput}</Fragment>\n\t}\n\n\treturn (\n\t\t<Sortable\n\t\t\toptions={{\n\t\t\t\tdelay: 0,\n\t\t\t\tgroup,\n\t\t\t\tfallbackOnBody: true,\n\t\t\t\tforceFallback: true,\n\t\t\t\tfallbackTolerance: 5,\n\t\t\t\tfilter: '.ct-pointer, .ct-btn-remove',\n\t\t\t\tdirection,\n\t\t\t\ttouchStartThreshold: 5,\n\t\t\t\tonStart: (event) => {\n\t\t\t\t\tsetIsDragging(event.item.dataset.id)\n\n\t\t\t\t\tlet currentView = wp.customize.previewedDevice()\n\n\t\t\t\t\tif (currentView === 'tablet') {\n\t\t\t\t\t\tcurrentView = 'mobile'\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tisItemAllowedIn(\n\t\t\t\t\t\t\tevent.item.dataset.id,\n\t\t\t\t\t\t\t'middle-row',\n\t\t\t\t\t\t\tcurrentView\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tdocument.body.classList.add('ct-builder-dragging')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.from && group && group.pull !== 'clone') {\n\t\t\t\t\t\tevent.to.classList.add('ct-is-over')\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tonEnd: () => {\n\t\t\t\t\tsetIsDragging(false)\n\t\t\t\t\tdocument.body.classList.remove('ct-builder-dragging')\n\t\t\t\t\t;[\n\t\t\t\t\t\t...document.querySelectorAll(\n\t\t\t\t\t\t\t'.ct-panel-builder .ct-is-over'\n\t\t\t\t\t\t),\n\t\t\t\t\t].map((el) => el.classList.remove('ct-is-over'))\n\t\t\t\t},\n\n\t\t\t\tonMove: (event, originalEvent) => {\n\t\t\t\t\tlet currentView = wp.customize.previewedDevice()\n\n\t\t\t\t\tif (currentView === 'tablet') {\n\t\t\t\t\t\tcurrentView = 'mobile'\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.from.closest('#ct-option-header-builder-items')) {\n\t\t\t\t\t\tPromise.resolve().then(() =>\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t...event.from.querySelectorAll(\n\t\t\t\t\t\t\t\t\t`[data-id=\"${event.dragged.dataset.id}\"]`\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t].map((el) => {\n\t\t\t\t\t\t\t\tel.classList.remove('ct-builder-item')\n\t\t\t\t\t\t\t\tel.classList.add('ct-item-in-builder')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\t;[\n\t\t\t\t\t\t...document.querySelectorAll(\n\t\t\t\t\t\t\t'.ct-panel-builder .ct-is-over'\n\t\t\t\t\t\t),\n\t\t\t\t\t].map((el) => el.classList.remove('ct-is-over'))\n\n\t\t\t\t\tif (event.to) {\n\t\t\t\t\t\tevent.to.classList.add('ct-is-over')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isItemAllowedIn(\n\t\t\t\t\t\t\tevent.dragged.dataset.id,\n\t\t\t\t\t\t\tevent.to.dataset.id.split(':')[0],\n\t\t\t\t\t\t\tcurrentView\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t...options,\n\t\t\t}}\n\t\t\tonChange={(order, sortable, evt) => {\n\t\t\t\t// console.log('here is change', order, draggableId)\n\n\t\t\t\tif (draggableId === 'available-items') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tonChange({\n\t\t\t\t\tid: draggableId,\n\t\t\t\t\tvalue: order.filter(\n\t\t\t\t\t\t(i) => i !== '__pointer__' && i !== '__filler__'\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t}}\n\t\t\ttag={tagName}\n\t\t\tclassName={cls('ct-builder-items', className)}\n\t\t\t{...props}\n\t\t\tdata-id={draggableId}>\n\t\t\t{['end', 'start-middle'].indexOf(draggableId.split(':')[1]) >\n\t\t\t\t-1 && <div data-id=\"__filler__\" className=\"ct-filler\"></div>}\n\t\t\t{hasPointers &&\n\t\t\t\tisDragging &&\n\t\t\t\tisItemAllowedIn(\n\t\t\t\t\tisDragging,\n\t\t\t\t\tdraggableId.split(':')[0],\n\t\t\t\t\tcurrentView\n\t\t\t\t) && <div data-id=\"__pointer__\" className=\"ct-pointer\"></div>}\n\t\t\t{itemsOutput}\n\t\t</Sortable>\n\t)\n}\n\nexport default DraggableItems\n","import { createElement } from '@wordpress/element'\nimport DraggableItems from '../DraggableItems'\n\nconst PrimaryPlacement = ({ placementName, bar, direction }) => {\n\tconst placement = bar.placements.find(({ id }) => id === placementName)\n\n\tlet placementsToRender = [placement]\n\n\tif (placementName !== 'middle') {\n\t\tconst middle = bar.placements.find(({ id }) => id === 'middle')\n\n\t\tif (middle && middle.items.length > 0) {\n\t\t\tif (placementName === 'start') {\n\t\t\t\tconst startMiddle = bar.placements.find(\n\t\t\t\t\t({ id }) => id === 'start-middle'\n\t\t\t\t)\n\n\t\t\t\tplacementsToRender = [placement, startMiddle]\n\t\t\t}\n\n\t\t\tif (placementName === 'end') {\n\t\t\t\tconst endMiddle = bar.placements.find(\n\t\t\t\t\t({ id }) => id === 'end-middle'\n\t\t\t\t)\n\n\t\t\t\tplacementsToRender = [endMiddle, placement]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={[`ct-builder-column-${placement.id}`]}\n\t\t\t{...(placement.id === 'middle'\n\t\t\t\t? { 'data-count': placement.items.length }\n\t\t\t\t: {})}>\n\t\t\t{placementsToRender.map((placement) => (\n\t\t\t\t<DraggableItems\n\t\t\t\t\tkey={placement.id}\n\t\t\t\t\tdirection={direction}\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tplacement.id === 'middle'\n\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t: `ct-${\n\t\t\t\t\t\t\t\t\tplacement.id.indexOf('-') > -1\n\t\t\t\t\t\t\t\t\t\t? 'secondary'\n\t\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t  }-column`\n\t\t\t\t\t}\n\t\t\t\t\tdraggableId={`${bar.id}:${placement.id}`}\n\t\t\t\t\titems={placement.items}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</li>\n\t)\n}\n\nexport default PrimaryPlacement\n","import { createElement, useContext } from '@wordpress/element'\nimport { __ } from 'ct-i18n'\nimport { PanelContext } from '../../../../options/components/PanelLevel'\n\nimport PrimaryPlacement from './PrimaryPlacement'\n\nconst Row = ({ bar, direction = 'horizontal' }) => {\n\tconst { panelsHelpers } = useContext(PanelContext)\n\n\treturn (\n\t\t<li className=\"builder-row\">\n\t\t\t<div\n\t\t\t\tclassName=\"ct-row-actions\"\n\t\t\t\tonClick={() => panelsHelpers.open(`builder_panel_${bar.id}`)}>\n\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t\t'top-row': __('Top Row', 'blocksy'),\n\t\t\t\t\t\t'middle-row': __('Main Row', 'blocksy'),\n\t\t\t\t\t\t'bottom-row': __('Bottom Row', 'blocksy'),\n\t\t\t\t\t\toffcanvas: __('Off Canvas Area', 'blocksy')\n\t\t\t\t\t}[bar.id]\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<ul className=\"row-inner\">\n\t\t\t\t{['start', 'middle', 'end']\n\t\t\t\t\t.filter(\n\t\t\t\t\t\tplacementName =>\n\t\t\t\t\t\t\t!!bar.placements.find(\n\t\t\t\t\t\t\t\t({ id }) => id === placementName\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.map(placementName => (\n\t\t\t\t\t\t<PrimaryPlacement\n\t\t\t\t\t\t\tkey={placementName}\n\t\t\t\t\t\t\tbar={bar}\n\t\t\t\t\t\t\tplacementName={placementName}\n\t\t\t\t\t\t\tdirection={direction}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t</ul>\n\t\t</li>\n\t)\n}\n\nexport default Row\n","import { createElement, useContext } from '@wordpress/element'\nimport { __ } from 'ct-i18n'\nimport cls from 'classnames'\nimport DraggableItems from './DraggableItems'\nimport Row from './PlacementsBuilder/Row'\n\nconst PlacementsBuilder = ({\n\tinlinedItemsFromBuilder,\n\tview,\n\tbuilderValueWithView,\n}) => {\n\tlet hasOffcanvas =\n\t\tview === 'mobile' ||\n\t\t(inlinedItemsFromBuilder.indexOf('trigger') > -1 &&\n\t\t\tbuilderValueWithView.find(({ id }) => id === 'offcanvas'))\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cls('placements-builder', {\n\t\t\t\t'ct-mobile': hasOffcanvas,\n\t\t\t})}>\n\t\t\t{hasOffcanvas && (\n\t\t\t\t<ul className=\"offcanvas-container\">\n\t\t\t\t\t<Row\n\t\t\t\t\t\tdirection=\"vertical\"\n\t\t\t\t\t\tbar={builderValueWithView.find(\n\t\t\t\t\t\t\t({ id }) => id === 'offcanvas'\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</ul>\n\t\t\t)}\n\n\t\t\t<ul className=\"horizontal-rows\">\n\t\t\t\t{['top-row', 'middle-row', 'bottom-row'].map((bar) => {\n\t\t\t\t\tconst maybeBar = builderValueWithView.find(\n\t\t\t\t\t\t({ id }) => id === bar\n\t\t\t\t\t)\n\n\t\t\t\t\tif (!maybeBar) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\treturn <Row bar={maybeBar} key={bar} />\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t</div>\n\t)\n}\n\nexport default PlacementsBuilder\n","import { createElement, useState, useEffect } from '@wordpress/element'\nimport cls from 'classnames'\nimport { __ } from 'ct-i18n'\n\nconst ViewSwitch = ({ currentView, setCurrentView }) => {\n\tconst [builderCollapsed, setBuilderCollapsed] = useState(false)\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tdocument\n\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t.classList.remove('ct-builder-collapsed')\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<ul className=\"ct-view-switch\">\n\t\t\t{['desktop', 'mobile'].map((view) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={view}\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tsetCurrentView(view === 'mobile' ? 'tablet' : view)\n\t\t\t\t\t}\n\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\tactive: currentView === view,\n\t\t\t\t\t})}>\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdesktop: __('Desktop Header', 'blocksy'),\n\t\t\t\t\t\t\tmobile: __('Tablet / Mobile Header', 'blocksy'),\n\t\t\t\t\t\t}[view]\n\t\t\t\t\t}\n\t\t\t\t</li>\n\t\t\t))}\n\n\t\t\t<li\n\t\t\t\tclassName=\"ct-builder-toggle\"\n\t\t\t\tonClick={() => {\n\t\t\t\t\tsetBuilderCollapsed(!builderCollapsed)\n\n\t\t\t\t\tif (builderCollapsed) {\n\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t\t\t\t.classList.remove('ct-builder-collapsed')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t.querySelector('.wp-full-overlay')\n\t\t\t\t\t\t\t.classList.add('ct-builder-collapsed')\n\t\t\t\t\t}\n\t\t\t\t}}>\n\t\t\t\t{builderCollapsed\n\t\t\t\t\t? __('Show Builder', 'blocksy')\n\t\t\t\t\t: __('Hide Builder', 'blocksy')}\n\t\t\t</li>\n\t\t</ul>\n\t)\n}\n\nexport default ViewSwitch\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport DraggableItems from '../DraggableItems'\nimport { DragDropContext } from '../BuilderRoot'\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\nimport { getOriginalId, customItemsSeparator } from '../helpers'\n\nimport { Slot } from '@wordpress/components'\n\nconst SecondaryItems = ({\n\tbuilderValue,\n\tbuilderValueDispatch,\n\tinlinedItemsFromBuilder,\n\tdisplayList = true,\n}) => {\n\tconst { panelsState, panelsActions, currentView, isDragging } =\n\t\tuseContext(DragDropContext)\n\n\tconst inlinedItemsFromAllViewsBuilder = [\n\t\t...builderValue.desktop.reduce(\n\t\t\t(currentItems, { id, placements }) => [\n\t\t\t\t...currentItems,\n\t\t\t\t...(placements || []).reduce(\n\t\t\t\t\t(c, { id, items }) => [...c, ...items],\n\t\t\t\t\t[]\n\t\t\t\t),\n\t\t\t],\n\t\t\t[]\n\t\t),\n\n\t\t...builderValue.mobile.reduce(\n\t\t\t(currentItems, { id, placements }) => [\n\t\t\t\t...currentItems,\n\t\t\t\t...(placements || []).reduce(\n\t\t\t\t\t(c, { id, items }) => [...c, ...items],\n\t\t\t\t\t[]\n\t\t\t\t),\n\t\t\t],\n\t\t\t[]\n\t\t),\n\t]\n\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.header.filter(\n\t\t\t({ config }) =>\n\t\t\t\t// config.devices.indexOf(currentView) > -1 &&\n\t\t\t\tconfig.enabled\n\t\t)\n\n\tconst allItems = ct_customizer_localizations.header_builder_data.header\n\n\t/**\n\t * Dynamic items have a : in their ID\n\t */\n\tconst allDynamicItems = builderValue.items\n\t\t.filter(({ id }) => id.indexOf(customItemsSeparator()) > -1)\n\t\t.map(({ id }) => id)\n\n\treturn (\n\t\t<DraggableItems\n\t\t\toptions={{ sort: false, filter: '.ct-item-in-builder' }}\n\t\t\tgroup={{\n\t\t\t\tname: 'header_sortables',\n\t\t\t\tput: false,\n\t\t\t\tpull: 'clone',\n\t\t\t}}\n\t\t\tdraggableId={'available-items'}\n\t\t\titems={[...secondaryItems.map(({ id }) => id), ...allDynamicItems]\n\t\t\t\t.filter((el) =>\n\t\t\t\t\tallItems.some(({ id }) => id === getOriginalId(el))\n\t\t\t\t)\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tconst aItemData = allItems.find(\n\t\t\t\t\t\t({ id }) => id === getOriginalId(a)\n\t\t\t\t\t)\n\n\t\t\t\t\tconst bItemData = allItems.find(\n\t\t\t\t\t\t({ id }) => id === getOriginalId(b)\n\t\t\t\t\t)\n\n\t\t\t\t\treturn aItemData.config.name.localeCompare(\n\t\t\t\t\t\tbItemData.config.name\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\thasPointers={false}\n\t\t\tdisplayWrapper={displayList}\n\t\t\tpropsForItem={(item) => ({\n\t\t\t\trenderItem: ({ item, itemData, index }) => {\n\t\t\t\t\tconst itemOptions = allItems.find(\n\t\t\t\t\t\t({ id }) => id === getOriginalId(item)\n\t\t\t\t\t).options\n\n\t\t\t\t\tconst allClonesAndOriginal = [\n\t\t\t\t\t\tgetOriginalId(item),\n\t\t\t\t\t\t...allDynamicItems.filter(\n\t\t\t\t\t\t\t(id) => getOriginalId(id) === getOriginalId(item)\n\t\t\t\t\t\t),\n\t\t\t\t\t]\n\n\t\t\t\t\tconst itemName =\n\t\t\t\t\t\tallClonesAndOriginal.length > 1\n\t\t\t\t\t\t\t? `${itemData.config.name} ${\n\t\t\t\t\t\t\t\t\tallClonesAndOriginal.indexOf(item) + 1\n\t\t\t\t\t\t\t  }`\n\t\t\t\t\t\t\t: itemData.config.name\n\n\t\t\t\t\tconst option = {\n\t\t\t\t\t\tlabel: itemName,\n\t\t\t\t\t\t'inner-options': itemOptions,\n\t\t\t\t\t}\n\n\t\t\t\t\tconst itemInBuilder =\n\t\t\t\t\t\tinlinedItemsFromBuilder.indexOf(item) > -1\n\n\t\t\t\t\tlet row = '__none__'\n\n\t\t\t\t\tif (itemInBuilder) {\n\t\t\t\t\t\trow = builderValue[currentView].find(\n\t\t\t\t\t\t\t({ id, placements }) => {\n\t\t\t\t\t\t\t\tconst rowItems = (placements || []).reduce(\n\t\t\t\t\t\t\t\t\t(c, { id, items }) => [...c, ...items],\n\t\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\treturn rowItems.find((i) => i === item)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t).id\n\t\t\t\t\t}\n\n\t\t\t\t\tconst id = `builder_panel_${item}`\n\n\t\t\t\t\tconst itemsOnlyWithTrigger = [\n\t\t\t\t\t\t'mobile-menu',\n\t\t\t\t\t\t'mobile-menu-secondary',\n\t\t\t\t\t\t'offcanvas-logo',\n\t\t\t\t\t]\n\n\t\t\t\t\tconst isSidebarRepresentationPresent =\n\t\t\t\t\t\tdisplayList &&\n\t\t\t\t\t\titemData.config.devices.includes(currentView) &&\n\t\t\t\t\t\t(!itemsOnlyWithTrigger.includes(item) ||\n\t\t\t\t\t\t\t(itemsOnlyWithTrigger.includes(item) &&\n\t\t\t\t\t\t\t\t(currentView !== 'desktop' ||\n\t\t\t\t\t\t\t\t\tinlinedItemsFromBuilder.indexOf('trigger') >\n\t\t\t\t\t\t\t\t\t\t-1)))\n\n\t\t\t\t\tlet itemTitle = itemData.config.name\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\t\tgetActualOption={({ open }) => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{inlinedItemsFromAllViewsBuilder.indexOf(\n\t\t\t\t\t\t\t\t\t\titem\n\t\t\t\t\t\t\t\t\t) > -1 && (\n\t\t\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\t\t\tgetValues={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tlet itemValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items.find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === item\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\titemValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t) > 5\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderSettings:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...itemValue.values,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemOptions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? itemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderSettings:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\t\t\tonChangeFor={(\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items.find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === item\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'ITEM_VALUE_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!currentValue ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(currentValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t).length === 0)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titemOptions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{isSidebarRepresentationPresent && (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tdata-id={item}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-item-in-builder':\n\t\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t\t'ct-builder-item':\n\t\t\t\t\t\t\t\t\t\t\t\t\t!itemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder && open()\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t{itemName}\n\n\t\t\t\t\t\t\t\t\t\t\t<Slot\n\t\t\t\t\t\t\t\t\t\t\t\tname={`PlacementsBuilderSidebarItem_${index}`}\n\t\t\t\t\t\t\t\t\t\t\t\tfillProps={{\n\t\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t\t\titemInBuilder,\n\t\t\t\t\t\t\t\t\t\t\t\t\titemData,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t)}></PanelMetaWrapper>\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})}\n\t\t\tdirection=\"vertical\"\n\t\t/>\n\t)\n}\n\nexport default SecondaryItems\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\n\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\nimport { DragDropContext } from '../BuilderRoot'\n\nconst InvisiblePanels = ({ builderValue, builderValueDispatch }) => {\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.header\n\tconst allItems = ct_customizer_localizations.header_builder_data.header\n\n\tconst { panelsState, panelsActions, currentView } =\n\t\tuseContext(DragDropContext)\n\n\tconst primaryItems = allItems.filter(\n\t\t({ id }) => !secondaryItems.find((item) => item.id === id)\n\t)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{primaryItems.map((primaryItem) => {\n\t\t\t\tconst option = {\n\t\t\t\t\tlabel: primaryItem.config.name,\n\t\t\t\t\t'inner-options': primaryItem.options,\n\t\t\t\t}\n\n\t\t\t\tconst id = `builder_panel_${primaryItem.id}`\n\n\t\t\t\treturn (\n\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tkey={primaryItem.id}\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\tgetActualOption={() => (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\tgetValues={() => {\n\t\t\t\t\t\t\t\t\t\tlet itemValue = builderValue.items.find(\n\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === primaryItem.id\n\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\tlet itemsCount = '0'\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tprimaryItem.id === 'top-row' ||\n\t\t\t\t\t\t\t\t\t\t\tprimaryItem.id === 'middle-row' ||\n\t\t\t\t\t\t\t\t\t\t\tprimaryItem.id === 'bottom-row'\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\titemsCount = builderValue[\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentView\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid === primaryItem.id\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t.placements.reduce((r, p) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn [...r, ...p.items]\n\t\t\t\t\t\t\t\t\t\t\t\t}, [])\n\t\t\t\t\t\t\t\t\t\t\t\t.length.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\titemValue &&\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(itemValue.values) > 5\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\titemsCount,\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderSettings:\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings || {},\n\t\t\t\t\t\t\t\t\t\t\t\t...itemValue.values,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t...getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryItem.options,\n\t\t\t\t\t\t\t\t\t\t\t\titemValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t? itemValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\titemsCount,\n\t\t\t\t\t\t\t\t\t\t\tbuilderSettings:\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings || {},\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tonChangeFor={(optionId, optionValue) => {\n\t\t\t\t\t\t\t\t\t\tconst currentValue =\n\t\t\t\t\t\t\t\t\t\t\tbuilderValue.items.find(\n\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tid === primaryItem.id\n\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\ttype: 'ITEM_VALUE_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\tid: primaryItem.id,\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\tvalues:\n\t\t\t\t\t\t\t\t\t\t\t\t\t!currentValue ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t(currentValue &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentValue.values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t).length === 0)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryItem.options,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t})}\n\t\t</Fragment>\n\t)\n}\n\nexport default InvisiblePanels\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport { DragDropContext } from '../BuilderRoot'\nimport cls from 'classnames'\nimport Panel, { PanelMetaWrapper } from '../../../../options/options/ct-panel'\nimport { getValueFromInput } from '../../../../options/helpers/get-value-from-input'\n\nimport { __ } from 'ct-i18n'\n\nconst PanelsManager = () => {\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.header\n\tconst allItems = ct_customizer_localizations.header_builder_data.header\n\n\tconst {\n\t\tbuilderValue,\n\t\toption,\n\t\tbuilderValueCollection,\n\t\tbuilderValueDispatch,\n\t\tpanelsActions,\n\t} = useContext(DragDropContext)\n\n\tconst allSections = builderValueCollection.sections.filter(\n\t\t({ id }) =>\n\t\t\tid !== 'type-2' && id !== 'type-3' && id.indexOf('ct-custom') === -1\n\t)\n\n\treturn (\n\t\t<ul className={cls('ct-panels-manager')}>\n\t\t\t{allSections.map(({ name, id }) => {\n\t\t\t\tlet panelLabel =\n\t\t\t\t\tname ||\n\t\t\t\t\t{\n\t\t\t\t\t\t'type-1': __('Global Header', 'blocksy'),\n\t\t\t\t\t}[id] ||\n\t\t\t\t\tid\n\n\t\t\t\tconst panelId = `builder_header_panel_${id}`\n\n\t\t\t\tconst headerOptions =\n\t\t\t\t\tct_customizer_localizations.header_builder_data.header_data\n\t\t\t\t\t\t.header_options\n\n\t\t\t\tconst option = {\n\t\t\t\t\tlabel: panelLabel,\n\t\t\t\t\t'inner-options': headerOptions,\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<PanelMetaWrapper\n\t\t\t\t\t\tid={panelId}\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t{...panelsActions}\n\t\t\t\t\t\tgetActualOption={({ open }) => (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{Object.keys(headerOptions).length > 0 &&\n\t\t\t\t\t\t\t\t\tid === builderValue.id && (\n\t\t\t\t\t\t\t\t\t\t<Panel\n\t\t\t\t\t\t\t\t\t\t\tid={panelId}\n\t\t\t\t\t\t\t\t\t\t\tgetValues={() =>\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings || {}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\t\t\tonChangeFor={(\n\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\toptionValue\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tbuilderValueDispatch({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'BUILDER_GLOBAL_SETTING_ON_CHANGE',\n\t\t\t\t\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theaderOptions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuilderValue.settings\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: builderValue.settings ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tview=\"simple\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{id === builderValue.id && (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\t\tactive: id === builderValue.id,\n\t\t\t\t\t\t\t\t\t\t\t'ct-global': id === 'type-1',\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tObject.keys(headerOptions)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.length > 0\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\topen()\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t<span className=\"ct-panel-name\">\n\t\t\t\t\t\t\t\t\t\t\t{panelLabel}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}></PanelMetaWrapper>\n\t\t\t\t)\n\t\t\t})}\n\t\t</ul>\n\t)\n}\n\nexport default PanelsManager\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseContext,\n\tFragment,\n} from '@wordpress/element'\nimport cls from 'classnames'\nimport { __, sprintf } from 'ct-i18n'\n\nimport { Slot } from '@wordpress/components'\n\nimport SecondaryItems from './builder-sidebar/SecondaryItems'\nimport InvisiblePanels from './builder-sidebar/InvisiblePanels'\n\nimport PanelsManager from './builder-sidebar/PanelsManager'\n\nimport { DragDropContext } from './BuilderRoot'\n\nimport classnames from 'classnames'\n\nconst AvailableItems = ({\n\tallBuilderSections,\n\tbuilderValue,\n\tbuilderValueDispatch,\n\tinlinedItemsFromBuilder,\n}) => {\n\t// panels | items | options\n\tconst [currentTab, setCurrentTab] = useState('items')\n\n\tconst { builderValueCollection } = useContext(DragDropContext)\n\n\tconst secondaryItems =\n\t\tct_customizer_localizations.header_builder_data.secondary_items.header\n\tconst allItems = ct_customizer_localizations.header_builder_data.header\n\n\tconst headerOptions =\n\t\tct_customizer_localizations.header_builder_data.header_data\n\t\t\t.header_options\n\n\treturn (\n\t\t<div className=\"ct-available-items\">\n\t\t\t<h3\n\t\t\t\tclassName=\"ct-title\"\n\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t__html: sprintf(\n\t\t\t\t\t\t__('Customizing: %s', 'blocksy'),\n\t\t\t\t\t\t`<span>${\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tbuilderValueCollection.sections.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === builderValue.id\n\t\t\t\t\t\t\t\t) || {}\n\t\t\t\t\t\t\t).name ||\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'type-1': __('Global Header', 'blocksy'),\n\t\t\t\t\t\t\t}[builderValue.id] ||\n\t\t\t\t\t\t\tbuilderValue.id\n\t\t\t\t\t\t}</span>`\n\t\t\t\t\t),\n\t\t\t\t}}\n\t\t\t/>\n\n\t\t\t<div className=\"ct-tabs\">\n\t\t\t\t<ul>\n\t\t\t\t\t{['items', 'panels'].map((tab) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={tab}\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\tsetCurrentTab(tab)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\tactive: tab === currentTab,\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpanels: __('Headers', 'blocksy'),\n\t\t\t\t\t\t\t\t\titems: __('Elements', 'blocksy'),\n\t\t\t\t\t\t\t\t}[tab]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\n\t\t\t\t<div className=\"ct-current-tab\">\n\t\t\t\t\t{currentTab === 'panels' && (\n\t\t\t\t\t\t<Slot name=\"PlacementsBuilderPanelsManager\">\n\t\t\t\t\t\t\t{(fills) =>\n\t\t\t\t\t\t\t\tfills.length === 0 ? <PanelsManager /> : fills\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</Slot>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<SecondaryItems\n\t\t\t\t\t\tbuilderValue={builderValue}\n\t\t\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t\t\t\tinlinedItemsFromBuilder={inlinedItemsFromBuilder}\n\t\t\t\t\t\tdisplayList={currentTab === 'items'}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<InvisiblePanels\n\t\t\t\tbuilderValue={builderValue}\n\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default AvailableItems\n","import { fetchCurrentHeader } from './BuilderRoot'\nimport { getOriginalId, customItemsSeparator } from './helpers'\nimport nanoid from 'nanoid'\n\nexport const builderReducer = (builderValue, action) => {\n\tlet updatedGlobalState = {}\n\tlet newSections = []\n\n\tlet futureBuilderValue = builderValue.sections.find(\n\t\t({ id }) =>\n\t\t\tid.indexOf(\n\t\t\t\tbuilderValue.__forced_static_header__ ||\n\t\t\t\t\tfetchCurrentHeader() ||\n\t\t\t\t\tbuilderValue.sections[0].id\n\t\t\t) > -1\n\t)\n\n\tlet shouldUpdate = false\n\tlet updateItemId = false\n\tlet removeSectionIds = []\n\n\tif (action.type === 'ITEM_VALUE_ON_CHANGE') {\n\t\tconst { id, optionId, optionValue, values = {} } = action.payload\n\n\t\tupdateItemId = `${id}:${optionId}`\n\n\t\tlet items = futureBuilderValue.items\n\n\t\tif (!items.find(({ id: _id }) => _id === id)) {\n\t\t\titems = [\n\t\t\t\t...items,\n\t\t\t\t{\n\t\t\t\t\tid,\n\t\t\t\t\tvalues: {},\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\titems: items.map((item) =>\n\t\t\t\titem.id === id\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t...item.values,\n\t\t\t\t\t\t\t\t...values,\n\t\t\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  }\n\t\t\t\t\t: item\n\t\t\t),\n\t\t}\n\t}\n\n\tif (action.type === 'PICK_BUILDER_SECTION') {\n\t\tshouldUpdate = true\n\t\tupdatedGlobalState = {\n\t\t\t__forced_static_header__: action.payload.id,\n\t\t}\n\t}\n\n\tif (action.type === 'MARK_HEADER_AS_GLOBAL') {\n\t\tshouldUpdate = true\n\t\tupdatedGlobalState = {\n\t\t\tcurrent_section: builderValue.__forced_static_header__,\n\t\t}\n\t}\n\n\tif (action.type === 'MARK_SPECIFIC_HEADER_AS_GLOBAL') {\n\t\tupdatedGlobalState = {\n\t\t\tcurrent_section: action.payload.id,\n\t\t}\n\t}\n\n\tif (action.type === 'CLONE_ITEM') {\n\t\tconst futureId = getOriginalId(action.payload.id)\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\titems: [\n\t\t\t\t...futureBuilderValue.items,\n\t\t\t\t{\n\t\t\t\t\tid: `${futureId}${customItemsSeparator()}${nanoid()}`,\n\t\t\t\t\tvalues: futureBuilderValue.items.find(\n\t\t\t\t\t\t({ id }) => id === futureId\n\t\t\t\t\t)\n\t\t\t\t\t\t? futureBuilderValue.items.find(\n\t\t\t\t\t\t\t\t({ id }) => id === futureId\n\t\t\t\t\t\t  ).values\n\t\t\t\t\t\t: {},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tif (action.type === 'REMOVE_CLONED_ITEM') {\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\titems: futureBuilderValue.items.filter(\n\t\t\t\t({ id }) => id !== action.payload.id\n\t\t\t),\n\t\t}\n\t}\n\n\tif (action.type === 'SET_LIST') {\n\t\tshouldUpdate = true\n\t\tconst { currentView, lists } = action.payload\n\n\t\tif (\n\t\t\t/**\n\t\t\t * If we just inserted offcanvas trigger on desktop\n\t\t\t */\n\t\t\tcurrentView === 'desktop' &&\n\t\t\tObject.values(lists)\n\t\t\t\t.reduce((all, current) => [...all, ...current], [])\n\t\t\t\t.indexOf('trigger') > -1 &&\n\t\t\t!futureBuilderValue.desktop.find(({ id }) => id === 'offcanvas')\n\t\t) {\n\t\t\tfutureBuilderValue = {\n\t\t\t\t...futureBuilderValue,\n\t\t\t\tdesktop: [\n\t\t\t\t\t...futureBuilderValue.desktop,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'offcanvas',\n\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t}\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\t[currentView]: futureBuilderValue[currentView].map(\n\t\t\t\t({ id: barId, placements }) => {\n\t\t\t\t\tconst keys = Object.keys(lists)\n\n\t\t\t\t\tif (keys.map((k) => k.split(':')[0]).indexOf(barId) > -1) {\n\t\t\t\t\t\tlet futureBar = {\n\t\t\t\t\t\t\tid: barId,\n\t\t\t\t\t\t\tplacements: placements.map(({ id, items }) => {\n\t\t\t\t\t\t\t\tif (lists[`${barId}:${id}`]) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\titems: lists[`${barId}:${id}`],\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn { id, items }\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfutureBar.placements.find(\n\t\t\t\t\t\t\t\t({ id }) => id === 'middle'\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tfutureBar.placements.find(\n\t\t\t\t\t\t\t\t({ id }) => id === 'middle'\n\t\t\t\t\t\t\t).items.length === 0 &&\n\t\t\t\t\t\t\tfutureBar.placements.find(\n\t\t\t\t\t\t\t\t({ id }) => id === 'start-middle'\n\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t(futureBar.placements.find(\n\t\t\t\t\t\t\t\t({ id }) => id === 'start-middle'\n\t\t\t\t\t\t\t).items.length > 0 ||\n\t\t\t\t\t\t\t\tfutureBar.placements.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === 'end-middle'\n\t\t\t\t\t\t\t\t).items.length > 0)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlet updater = {}\n\n\t\t\t\t\t\t\tupdater[`${barId}:start`] = [\n\t\t\t\t\t\t\t\t...futureBar.placements.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === 'start'\n\t\t\t\t\t\t\t\t).items,\n\t\t\t\t\t\t\t\t...futureBar.placements.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === 'start-middle'\n\t\t\t\t\t\t\t\t).items,\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tupdater[`${barId}:end`] = [\n\t\t\t\t\t\t\t\t...futureBar.placements.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === 'end-middle'\n\t\t\t\t\t\t\t\t).items,\n\t\t\t\t\t\t\t\t...futureBar.placements.find(\n\t\t\t\t\t\t\t\t\t({ id }) => id === 'end'\n\t\t\t\t\t\t\t\t).items,\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tupdater[`${barId}:start-middle`] = []\n\t\t\t\t\t\t\tupdater[`${barId}:end-middle`] = []\n\n\t\t\t\t\t\t\tfutureBar = {\n\t\t\t\t\t\t\t\tid: barId,\n\t\t\t\t\t\t\t\tplacements: futureBar.placements.map(\n\t\t\t\t\t\t\t\t\t({ id, items }) => {\n\t\t\t\t\t\t\t\t\t\tif (updater[`${barId}:${id}`]) {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t\titems:\n\t\t\t\t\t\t\t\t\t\t\t\t\tupdater[`${barId}:${id}`],\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn { id, items }\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn futureBar\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: barId,\n\t\t\t\t\t\tplacements,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t),\n\t\t}\n\t}\n\n\tif (action.type === 'BUILDER_GLOBAL_SETTING_ON_CHANGE') {\n\t\tconst { optionId, optionValue, values = {} } = action.payload\n\n\t\tfutureBuilderValue = {\n\t\t\t...futureBuilderValue,\n\t\t\tsettings: {\n\t\t\t\t...futureBuilderValue.settings,\n\t\t\t\t...values,\n\t\t\t\t[optionId]: optionValue,\n\t\t\t},\n\t\t}\n\t}\n\n\tif (action.type === 'CREATE_NEW_SECTION') {\n\t\tconst { name, copy } = action.payload\n\n\t\tnewSections = [\n\t\t\tcopy\n\t\t\t\t? {\n\t\t\t\t\t\t...(builderValue.sections.find(\n\t\t\t\t\t\t\t({ id }) => id === copy\n\t\t\t\t\t\t) || {}),\n\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tid: `ct-custom-${nanoid()}`,\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tid: `ct-custom-${nanoid()}`,\n\t\t\t\t\t\tmode: 'placements',\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tsettings: [],\n\t\t\t\t\t\tdesktop: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'top-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'middle-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: ['logo'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: ['menu'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'bottom-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\n\t\t\t\t\t\tmobile: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'top-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'middle-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: ['logo'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: ['trigger'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'bottom-row',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'end-middle',\n\t\t\t\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'offcanvas',\n\t\t\t\t\t\t\t\tplacements: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'start',\n\t\t\t\t\t\t\t\t\t\titems: ['mobile-menu'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t  },\n\t\t]\n\t}\n\n\tif (action.type === 'REMOVE_BUILDER_SECTION') {\n\t\tremoveSectionIds.push(action.payload.id)\n\t}\n\n\tconst actualBuilderValue = {\n\t\t...builderValue,\n\t\t...updatedGlobalState,\n\t\t__should_refresh__: shouldUpdate,\n\t\t__should_refresh_item__: updateItemId,\n\t\tsections: [\n\t\t\t...builderValue.sections.map((builder) =>\n\t\t\t\tbuilder.id === futureBuilderValue.id\n\t\t\t\t\t? futureBuilderValue\n\t\t\t\t\t: builder\n\t\t\t),\n\t\t\t...newSections,\n\t\t].filter(({ id }) => removeSectionIds.indexOf(id) === -1),\n\t}\n\n\treturn actualBuilderValue\n}\n","import {\n\tcreateElement,\n\tFragment,\n\tComponent,\n\tuseEffect,\n\tuseRef,\n\tuseMemo,\n\tcreatePortal,\n\tuseState,\n\tuseCallback,\n\tcreateContext,\n\tuseReducer,\n} from '@wordpress/element'\nimport PlacementsBuilder from './PlacementsBuilder'\nimport DraggableItems from './DraggableItems'\nimport ViewSwitch from './ViewSwitch'\nimport AvailableItems from './AvailableItems'\nimport { builderReducer } from './builderReducer'\nimport { useDeviceManager } from '../../components/useDeviceManager'\nimport ctEvents from 'ct-events'\n\nexport const DragDropContext = createContext({})\n\nconst getDocument = (x) =>\n\tx.document || x.contentDocument || x.contentWindow.document\n\nexport const fetchCurrentHeader = () => {\n\tconst document = getDocument(\n\t\twp.customize.previewer.container.find('iframe')[0]\n\t)\n\n\tif (\n\t\twp.customize.previewer.container\n\t\t\t.find('iframe')[0]\n\t\t\t.contentDocument.querySelector('header#header')\n\t) {\n\t\treturn wp.customize.previewer.container\n\t\t\t.find('iframe')[0]\n\t\t\t.contentDocument.querySelector('header#header').dataset.id\n\t}\n\n\treturn null\n}\n\nconst BuilderRoot = ({\n\tvalue: allBuilderSections,\n\toption,\n\tonChange: onBuilderValueChange,\n}) => {\n\tconst currentHeader = useRef(null)\n\n\tif (currentHeader.current === null) {\n\t\tcurrentHeader.current = (\n\t\t\tallBuilderSections.sections.find(\n\t\t\t\t({ id }) => id.indexOf(fetchCurrentHeader()) > -1\n\t\t\t) || allBuilderSections.sections[0]\n\t\t).id\n\t}\n\n\tuseEffect(() => {\n\t\tlet {\n\t\t\t__forced_dynamic_header__,\n\t\t\t__forced_static_header__,\n\t\t\t__should_refresh__,\n\t\t\t...old\n\t\t} = wp.customize('header_placements')()\n\n\t\tObject.keys(old).map((key) => {\n\t\t\tif (parseFloat(key)) {\n\t\t\t\tdelete old[key]\n\t\t\t}\n\t\t})\n\n\t\ttry {\n\t\t\twp.customize('header_placements')({\n\t\t\t\t...old,\n\t\t\t\t__forced_static_header__: (\n\t\t\t\t\tallBuilderSections.sections.find(\n\t\t\t\t\t\t({ id }) => id.indexOf(fetchCurrentHeader()) > -1\n\t\t\t\t\t) || allBuilderSections.sections[0]\n\t\t\t\t).id,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\n\t\treturn () => {\n\t\t\tconst {\n\t\t\t\t__forced_dynamic_header__,\n\t\t\t\t__forced_static_header__,\n\t\t\t\t__should_refresh__,\n\t\t\t\t...old\n\t\t\t} = wp.customize('header_placements')()\n\n\t\t\twp.customize('header_placements')({\n\t\t\t\t__should_refresh__: true,\n\t\t\t\t[Math.random()]: 'update',\n\t\t\t\t...old,\n\t\t\t})\n\t\t}\n\t}, [])\n\n\tconst [isDragging, setIsDragging] = useState(false)\n\n\tconst [builderValueCollection, builderValueDispatchInternal] = useReducer(\n\t\tbuilderReducer,\n\t\t{\n\t\t\t...allBuilderSections,\n\t\t\t...(currentHeader.current\n\t\t\t\t? {\n\t\t\t\t\t\t__forced_static_header__: currentHeader.current,\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t}\n\t)\n\n\tconst builderValue = useMemo(\n\t\t() =>\n\t\t\tbuilderValueCollection.sections.find(\n\t\t\t\t({ id }) =>\n\t\t\t\t\tid === builderValueCollection.__forced_static_header__\n\t\t\t) || builderValueCollection.sections[0],\n\t\t[builderValueCollection]\n\t)\n\n\t// desktop | mobile\n\tconst [currentView, setCurrentView] = useDeviceManager({\n\t\twithTablet: false,\n\t})\n\n\tconst inlinedItemsFromBuilder = useMemo(\n\t\t() =>\n\t\t\tbuilderValue[currentView].reduce(\n\t\t\t\t(currentItems, { id, placements }) => [\n\t\t\t\t\t...currentItems,\n\t\t\t\t\t...(placements || []).reduce(\n\t\t\t\t\t\t(c, { id, items }) => [...c, ...items],\n\t\t\t\t\t\t[]\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t\t[]\n\t\t\t),\n\t\t[builderValue, currentView]\n\t)\n\n\tconst builderValueDispatch = useCallback(\n\t\t(action) => {\n\t\t\tlet newState = builderReducer(builderValueCollection, action)\n\n\t\t\tif (action.type === 'ITEM_VALUE_ON_CHANGE') {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\toptionId,\n\t\t\t\t\toptionValue,\n\t\t\t\t\tvalues = {},\n\t\t\t\t} = action.payload\n\n\t\t\t\tconst builderValue =\n\t\t\t\t\tnewState.sections.find(\n\t\t\t\t\t\t({ id }) => id === newState.__forced_static_header__\n\t\t\t\t\t) || newState.sections[0]\n\n\t\t\t\tlet items = builderValue.items\n\n\t\t\t\tif (\n\t\t\t\t\tid === 'logo' &&\n\t\t\t\t\toptionId === 'custom_logo' &&\n\t\t\t\t\tbuilderValue.id === 'type-1'\n\t\t\t\t) {\n\t\t\t\t\twp.customize &&\n\t\t\t\t\t\twp.customize('custom_logo')(\n\t\t\t\t\t\t\toptionValue\n\t\t\t\t\t\t\t\t? optionValue.desktop\n\t\t\t\t\t\t\t\t\t? optionValue.desktop\n\t\t\t\t\t\t\t\t\t: optionValue\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\twp.customize.previewer &&\n\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t'ct:header:receive-value-update',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemId: id,\n\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\tfutureItems: builderValue.items,\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t...(\n\t\t\t\t\t\t\t\t\titems.find(({ id: _id }) => id === _id) || {\n\t\t\t\t\t\t\t\t\t\tvalues: {},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t).values,\n\t\t\t\t\t\t\t\t...values,\n\t\t\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (action.type === 'BUILDER_GLOBAL_SETTING_ON_CHANGE') {\n\t\t\t\tconst { optionId, optionValue, values = {} } = action.payload\n\n\t\t\t\tconst builderValue =\n\t\t\t\t\tnewState.sections.find(\n\t\t\t\t\t\t({ id }) => id === newState.__forced_static_header__\n\t\t\t\t\t) || newState.sections[0]\n\n\t\t\t\twp.customize.previewer &&\n\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t'ct:header:receive-value-update',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemId: 'global',\n\t\t\t\t\t\t\toptionId,\n\t\t\t\t\t\t\toptionValue,\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\t...builderValue.settings,\n\t\t\t\t\t\t\t\t...values,\n\t\t\t\t\t\t\t\t[optionId]: optionValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t}\n\n\t\t\tonBuilderValueChange(newState)\n\n\t\t\tbuilderValueDispatchInternal(action)\n\t\t},\n\t\t[\n\t\t\tbuilderValueDispatchInternal,\n\t\t\tonBuilderValueChange,\n\t\t\tbuilderValueCollection,\n\t\t]\n\t)\n\n\tconst setList = useCallback(\n\t\t(lists) =>\n\t\t\tbuilderValueDispatch({\n\t\t\t\ttype: 'SET_LIST',\n\t\t\t\tpayload: {\n\t\t\t\t\tcurrentView,\n\t\t\t\t\tlists,\n\t\t\t\t},\n\t\t\t}),\n\t\t[builderValueDispatch, currentView]\n\t)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<DragDropContext.Provider\n\t\t\t\tvalue={{\n\t\t\t\t\toption,\n\t\t\t\t\tcurrentView,\n\t\t\t\t\tisDragging,\n\t\t\t\t\tsetIsDragging,\n\t\t\t\t\tsetList,\n\t\t\t\t\tbuilderValueDispatch,\n\t\t\t\t\tbuilderValue,\n\t\t\t\t\tonChange: ({ id, value }) => setList({ [id]: value }),\n\t\t\t\t\tbuilderValueCollection,\n\t\t\t\t}}>\n\t\t\t\t<AvailableItems\n\t\t\t\t\tallBuilderSections={allBuilderSections}\n\t\t\t\t\tbuilderValue={builderValue}\n\t\t\t\t\tinlinedItemsFromBuilder={inlinedItemsFromBuilder}\n\t\t\t\t\tbuilderValueDispatch={builderValueDispatch}\n\t\t\t\t/>\n\n\t\t\t\t{createPortal(\n\t\t\t\t\t<div className=\"ct-builder-header\">\n\t\t\t\t\t\t<ViewSwitch\n\t\t\t\t\t\t\tcurrentView={currentView}\n\t\t\t\t\t\t\tsetCurrentView={setCurrentView}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PlacementsBuilder\n\t\t\t\t\t\t\tinlinedItemsFromBuilder={inlinedItemsFromBuilder}\n\t\t\t\t\t\t\tbuilderValueWithView={builderValue[currentView]}\n\t\t\t\t\t\t\tview={currentView}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.querySelector('.ct-panel-builder')\n\t\t\t\t)}\n\t\t\t</DragDropContext.Provider>\n\t\t</Fragment>\n\t)\n}\n\nexport default BuilderRoot\n","import { createElement } from '@wordpress/element'\nimport BuilderRoot from '../../customizer/panels-builder/placements/BuilderRoot'\n\nconst HeaderBuilder = props => <BuilderRoot {...props} />\nHeaderBuilder.renderingConfig = { design: 'none' }\n\nexport default HeaderBuilder\n","import { createElement, Component } from '@wordpress/element'\nimport classnames from 'classnames'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nconst ImagePicker = ({\n\toption: { choices, tabletChoices, mobileChoices },\n\toption,\n\tdevice,\n\tvalue,\n\tvalues,\n\tonChange,\n}) => {\n\tconst { className, ...attr } = { ...(option.attr || {}) }\n\n\tlet deviceChoices = option.choices\n\n\tif (device === 'tablet' && tabletChoices) {\n\t\tdeviceChoices = tabletChoices\n\t}\n\n\tif (device === 'mobile' && mobileChoices) {\n\t\tdeviceChoices = mobileChoices\n\t}\n\n\tlet matchingChoices = (Array.isArray(deviceChoices)\n\t\t? deviceChoices\n\t\t: Object.keys(deviceChoices).map((choice) => ({\n\t\t\t\tkey: choice,\n\t\t\t\t...deviceChoices[choice],\n\t\t  }))\n\t).filter(({ key }) => {\n\t\tif (!option.conditions) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (!option.conditions[key]) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn matchValuesWithCondition(\n\t\t\tnormalizeCondition(option.conditions[key]),\n\t\t\tvalues\n\t\t)\n\t})\n\n\tlet normalizedValue = matchingChoices.map(({ key }) => key).includes(value)\n\t\t? value\n\t\t: option.value\n\n\treturn (\n\t\t<ul\n\t\t\t{...attr}\n\t\t\tclassName={classnames('ct-image-picker', className)}\n\t\t\t{...(option.title && null ? { 'data-title': '' } : {})}>\n\t\t\t{matchingChoices.map((choice) => (\n\t\t\t\t<li\n\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\tactive: choice.key === normalizedValue,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => onChange(choice.key)}\n\t\t\t\t\tkey={choice.key}>\n\t\t\t\t\t{choice.src.indexOf('<svg') === -1 ? (\n\t\t\t\t\t\t<img src={choice.src} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t__html: choice.src,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{option.title && null && <span>{choice.title}</span>}\n\n\t\t\t\t\t{choice.title && (\n\t\t\t\t\t\t<span className=\"ct-tooltip-top\">{choice.title}</span>\n\t\t\t\t\t)}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n\nexport default ImagePicker\n","import { createElement, Component, Fragment } from '@wordpress/element'\nimport { FocalPointPicker } from '@wordpress/components'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\nimport _ from 'underscore'\n\nexport default class ImageUploader extends Component {\n\tparams = {\n\t\theight: 250,\n\t\twidth: 250,\n\t\tflex_width: true,\n\t\tflex_height: true,\n\t}\n\n\tstate = {\n\t\tattachment_info: null,\n\t}\n\n\tgetUrlFor = (attachmentInfo) =>\n\t\tattachmentInfo\n\t\t\t? (attachmentInfo.width < 700\n\t\t\t\t\t? attachmentInfo.sizes.full\n\t\t\t\t\t: _.max(\n\t\t\t\t\t\t\t_.values(\n\t\t\t\t\t\t\t\t_.keys(attachmentInfo.sizes).length === 1\n\t\t\t\t\t\t\t\t\t? attachmentInfo.sizes\n\t\t\t\t\t\t\t\t\t: _.omit(attachmentInfo.sizes, 'full')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t({ width }) => width\n\t\t\t\t\t  )\n\t\t\t  ).url || attachmentInfo.url\n\t\t\t: null\n\n\tonChange = (value, attachment_info = null) =>\n\t\tthis.props.onChange(\n\t\t\tthis.props.option.inline_value\n\t\t\t\t? value || ''\n\t\t\t\t: {\n\t\t\t\t\t\t...this.props.value,\n\t\t\t\t\t\turl: this.getUrlFor(attachment_info),\n\t\t\t\t\t\tattachment_id: value,\n\t\t\t\t  }\n\t\t)\n\n\tgetAttachmentId = (props = this.props) =>\n\t\tprops.option.inline_value ? props.value : props.value.attachment_id\n\n\t/**\n\t * Create a media modal select frame, and store it so the instance can be reused when needed.\n\t */\n\tinitFrame() {\n\t\tthis.frame = wp.media({\n\t\t\tbutton: {\n\t\t\t\ttext: 'Select',\n\t\t\t\tclose: false,\n\t\t\t},\n\t\t\tstates: [\n\t\t\t\tnew wp.media.controller.Library({\n\t\t\t\t\ttitle: __('Select logo', 'blocksy'),\n\t\t\t\t\tlibrary: wp.media.query({\n\t\t\t\t\t\ttype: this.props.option.mediaType || 'image',\n\t\t\t\t\t}),\n\t\t\t\t\tmultiple: false,\n\t\t\t\t\tdate: false,\n\t\t\t\t\tpriority: 20,\n\t\t\t\t\tsuggestedWidth: (this.props.option.logo || {}).width,\n\t\t\t\t\tsuggestedHeight: (this.props.option.logo || {}).height,\n\t\t\t\t}),\n\n\t\t\t\t...(this.props.option.skipCrop || true\n\t\t\t\t\t? []\n\t\t\t\t\t: [\n\t\t\t\t\t\t\tnew wp.media.controller.CustomizeImageCropper({\n\t\t\t\t\t\t\t\timgSelectOptions: this\n\t\t\t\t\t\t\t\t\t.calculateImageSelectOptions,\n\t\t\t\t\t\t\t\tcontrol: this,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t  ]),\n\t\t\t],\n\t\t})\n\n\t\tthis.frame.on('select', this.onSelect, this)\n\t\tthis.frame.on('close', () => {\n\t\t\tthis.props.option.onFrameClose && this.props.option.onFrameClose()\n\t\t})\n\t\tthis.frame.on('cropped', this.onCropped, this)\n\t\tthis.frame.on('skippedcrop', this.onSkippedCrop, this)\n\t}\n\n\t/**\n\t * Open the media modal to the library state.\n\t */\n\topenFrame() {\n\t\tthis.initFrame()\n\t\tthis.frame.setState('library').open()\n\t\tthis.props.option.onFrameOpen && this.props.option.onFrameOpen()\n\t}\n\n\t/**\n\t * After an image is selected in the media modal, switch to the cropper\n\t * state if the image isn't the right size.\n\t */\n\tonSelect = () => {\n\t\tvar attachment = this.frame.state().get('selection').first().toJSON()\n\n\t\tif (\n\t\t\t((this.props.option.logo || {}).width === attachment.width &&\n\t\t\t\t(this.props.option.logo || {}).height === attachment.height &&\n\t\t\t\t!(this.props.option.logo || {}).flex_width &&\n\t\t\t\t!(this.props.option.logo || {}).flex_height) ||\n\t\t\tthis.props.option.skipCrop ||\n\t\t\ttrue\n\t\t) {\n\t\t\tthis.setImageFromAttachment(attachment)\n\t\t\tthis.frame.close()\n\t\t} else {\n\t\t\tthis.frame.setState('cropper')\n\t\t}\n\t}\n\n\t/**\n\t * After the image has been cropped, apply the cropped image data to the setting.\n\t *\n\t * @param {object} croppedImage Cropped attachment data.\n\t */\n\tonCropped = (croppedImage) => {\n\t\tthis.setImageFromAttachment(croppedImage)\n\t}\n\n\t/**\n\t * Returns a set of options, computed from the attached image data and\n\t * control-specific data, to be fed to the imgAreaSelect plugin in\n\t * wp.media.view.Cropper.\n\t *\n\t * @param {wp.media.model.Attachment} attachment\n\t * @param {wp.media.controller.Cropper} controller\n\t * @returns {Object} Options\n\t */\n\tcalculateImageSelectOptions(attachment, controller) {\n\t\tvar control = controller.get('control')\n\t\tvar flexWidth = !!parseInt(\n\t\t\t(control.props.option.logo || {}).flex_width,\n\t\t\t10\n\t\t)\n\t\tvar flexHeight = !!parseInt(\n\t\t\t(control.props.option.logo || {}).flex_height,\n\t\t\t10\n\t\t)\n\t\tvar realWidth = attachment.get('width')\n\t\tvar realHeight = attachment.get('height')\n\t\tvar xInit = parseInt((control.props.option.logo || {}).width, 10)\n\t\tvar yInit = parseInt((control.props.option.logo || {}).height, 10)\n\t\tvar ratio = xInit / yInit\n\t\tvar xImg = xInit\n\t\tvar yImg = yInit\n\t\tvar x1\n\t\tvar y1\n\t\tvar imgSelectOptions\n\n\t\tif (realWidth / realHeight > ratio) {\n\t\t\tyInit = realHeight\n\t\t\txInit = yInit * ratio\n\t\t} else {\n\t\t\txInit = realWidth\n\t\t\tyInit = xInit / ratio\n\t\t}\n\n\t\tx1 = (realWidth - xInit) / 2\n\t\ty1 = (realHeight - yInit) / 2\n\n\t\timgSelectOptions = {\n\t\t\thandles: true,\n\t\t\tkeys: true,\n\t\t\tinstance: true,\n\t\t\tpersistent: true,\n\t\t\timageWidth: realWidth,\n\t\t\timageHeight: realHeight,\n\t\t\tminWidth: xImg > xInit ? xInit : xImg,\n\t\t\tminHeight: yImg > yInit ? yInit : yImg,\n\t\t\tx1: x1,\n\t\t\ty1: y1,\n\t\t\tx2: xInit + x1,\n\t\t\ty2: yInit + y1,\n\t\t}\n\n\t\tif (flexHeight === false && flexWidth === false) {\n\t\t\timgSelectOptions.aspectRatio = xInit + ':' + yInit\n\t\t}\n\n\t\tif (true === flexHeight) {\n\t\t\tdelete imgSelectOptions.minHeight\n\t\t\timgSelectOptions.maxWidth = realWidth\n\t\t}\n\n\t\tif (true === flexWidth) {\n\t\t\tdelete imgSelectOptions.minWidth\n\t\t\timgSelectOptions.maxHeight = realHeight\n\t\t}\n\n\t\treturn imgSelectOptions\n\t}\n\n\t/**\n\t * Return whether the image must be cropped, based on required dimensions.\n\t *\n\t * @param {bool} flexW\n\t * @param {bool} flexH\n\t * @param {int}  dstW\n\t * @param {int}  dstH\n\t * @param {int}  imgW\n\t * @param {int}  imgH\n\t * @return {bool}\n\t */\n\tmustBeCropped(flexW, flexH, dstW, dstH, imgW, imgH) {\n\t\tif (true === flexW && true === flexH) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (true === flexW && dstH === imgH) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (true === flexH && dstW === imgW) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (dstW === imgW && dstH === imgH) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (imgW <= dstW) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn true\n\t}\n\n\t/**\n\t * If cropping was skipped, apply the image data directly to the setting.\n\t */\n\tonSkippedCrop = () => {\n\t\tvar attachment = this.frame.state().get('selection').first().toJSON()\n\n\t\tthis.setImageFromAttachment(attachment)\n\t}\n\n\t/**\n\t * Updates the setting and re-renders the control UI.\n\t *\n\t * @param {object} attachment\n\t */\n\tsetImageFromAttachment(attachment) {\n\t\tthis.onChange(\n\t\t\tattachment.id,\n\t\t\tJSON.parse(\n\t\t\t\tJSON.stringify(wp.media.attachment(attachment.id).toJSON())\n\t\t\t)\n\t\t)\n\n\t\tthis.updateAttachmentInfo()\n\t}\n\n\tupdateAttachmentInfo = (force = false) => {\n\t\tlet id = this.getAttachmentId()\n\n\t\tif (!id) return\n\n\t\tif (!wp.media.attachment(id).get('url') || force) {\n\t\t\twp.media\n\t\t\t\t.attachment(id)\n\t\t\t\t.fetch()\n\t\t\t\t.then(() =>\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tattachment_info: JSON.parse(\n\t\t\t\t\t\t\tJSON.stringify(wp.media.attachment(id).toJSON())\n\t\t\t\t\t\t),\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tattachment_info: JSON.parse(\n\t\t\t\t\tJSON.stringify(wp.media.attachment(id).toJSON())\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\n\t\tthis.detachListener()\n\t\twp.media.attachment(id).on('change', this.updateAttachmentInfo)\n\t}\n\n\tdetachListener() {\n\t\tif (!this.getAttachmentId()) return\n\n\t\twp.media\n\t\t\t.attachment(this.getAttachmentId())\n\t\t\t.off('change', this.updateAttachmentInfo)\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.getAttachmentId() !== this.getAttachmentId(prevProps)) {\n\t\t\twp.media\n\t\t\t\t.attachment(this.getAttachmentId(prevProps))\n\t\t\t\t.off('change', this.updateAttachmentInfo)\n\n\t\t\tthis.updateAttachmentInfo()\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateAttachmentInfo()\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.detachListener()\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={classnames('attachment-media-view ct-attachment', {\n\t\t\t\t\t['landscape']:\n\t\t\t\t\t\tthis.getAttachmentId() && this.state.attachment_info,\n\t\t\t\t\t['attachment-media-view-image']:\n\t\t\t\t\t\tthis.getAttachmentId() && this.state.attachment_info,\n\t\t\t\t})}\n\t\t\t\t{...(this.props.option.attr || {})}>\n\t\t\t\t{this.getAttachmentId() && this.state.attachment_info ? (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"thumbnail thumbnail-image\"\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t!this.props.option.has_position_picker &&\n\t\t\t\t\t\t\t\tthis.openFrame()\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t{!this.props.option.has_position_picker && (\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\tclassName=\"attachment-thumb\"\n\t\t\t\t\t\t\t\t\tsrc={this.getUrlFor(\n\t\t\t\t\t\t\t\t\t\tthis.state.attachment_info\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{this.props.option.has_position_picker && (\n\t\t\t\t\t\t\t\t<FocalPointPicker\n\t\t\t\t\t\t\t\t\turl={this.getUrlFor(\n\t\t\t\t\t\t\t\t\t\tthis.state.attachment_info\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tdimensions={{\n\t\t\t\t\t\t\t\t\t\twidth: 400,\n\t\t\t\t\t\t\t\t\t\theight: 100,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalue={this.props.value}\n\t\t\t\t\t\t\t\t\tonChange={(drag_position) => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onChange({\n\t\t\t\t\t\t\t\t\t\t\t...this.props.value,\n\t\t\t\t\t\t\t\t\t\t\t...drag_position,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t<div className=\"actions\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"button edit-button control-focus\"\n\t\t\t\t\t\t\t\t\ttitle={__('Edit', 'blocksy')}\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.openFrame()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tid=\"customize-media-control-button-35\"></button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.setState({ attachment_info: null })\n\t\t\t\t\t\t\t\t\t\tthis.onChange(null)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle={__('Remove', 'blocksy')}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"button remove-button\"></button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Fragment>\n\t\t\t\t) : (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => this.openFrame()}\n\t\t\t\t\t\t\tclassName=\"button ct-upload-button\"\n\t\t\t\t\t\t\tid=\"customize-media-control-button-50\">\n\t\t\t\t\t\t\t{this.props.option.emptyLabel ||\n\t\t\t\t\t\t\t\t__('Select logo', 'blocksy')}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</Fragment>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n}\n","import { Fragment, createElement } from '@wordpress/element'\nimport OptionsPanel from '../OptionsPanel'\n\nconst LayersMirror = ({ values, onChangeFor, value, option, onChange }) => {\n\tconst wholeLayers = values[option.layers] || []\n\n\tconst ourLayers = wholeLayers.filter(\n\t\t({ id, enabled }) => enabled && id === option.field\n\t)\n\n\tif (ourLayers.length === 0) {\n\t\treturn null\n\t}\n\n\treturn ourLayers.map((layer, index) => {\n\t\tlet computedOptions = Object.keys(option['inner-options']).reduce(\n\t\t\t(all, optionId) => ({\n\t\t\t\t...all,\n\t\t\t\t[optionId]: {\n\t\t\t\t\t...option['inner-options'][optionId],\n\t\t\t\t\tlabel: option['inner-options'][optionId].label.replace(\n\t\t\t\t\t\t'INDEX ',\n\t\t\t\t\t\tourLayers.length === 1 ? '' : `${index + 1} `\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t}),\n\t\t\t{}\n\t\t)\n\n\t\treturn (\n\t\t\t<OptionsPanel\n\t\t\t\tkey={layer.__id || layer.id}\n\t\t\t\tonChange={(id, value) => {\n\t\t\t\t\tonChangeFor(\n\t\t\t\t\t\toption.layers,\n\t\t\t\t\t\twholeLayers.map((l) =>\n\t\t\t\t\t\t\tl.__id !== layer.__id\n\t\t\t\t\t\t\t\t? l\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t[id]: value,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t}}\n\t\t\t\toptions={computedOptions}\n\t\t\t\tvalue={layer}\n\t\t\t/>\n\t\t)\n\t})\n}\n\nLayersMirror.renderingConfig = { design: 'none' }\n\nexport default LayersMirror\n","import { createElement, Fragment, useContext } from '@wordpress/element'\nimport { itemsThatAreNotAdded, LayersContext } from '../ct-layers'\nimport Select from '../ct-select'\n\nconst SelectThatAddsItems = ({ value, option }) => {\n\tconst notAddedItems = itemsThatAreNotAdded(value, option)\n\n\tconst {\n\t\tcurrentlyPickedItem,\n\t\tsetCurrentItem,\n\t\taddCurrentlySelectedItem,\n\t} = useContext(LayersContext)\n\n\tif (notAddedItems.length <= 0) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<div className=\"ct-add-layer-controls\">\n\t\t\t<Select\n\t\t\t\tonChange={(currentlyPickedItem) =>\n\t\t\t\t\tsetCurrentItem(currentlyPickedItem)\n\t\t\t\t}\n\t\t\t\toption={{\n\t\t\t\t\tsearch: true,\n\t\t\t\t\tchoices: notAddedItems.map((key) => ({\n\t\t\t\t\t\tkey,\n\n\t\t\t\t\t\tvalue: window._.template(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\toption.settings[key] || {\n\t\t\t\t\t\t\t\t\tlabel: key,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t).label\n\t\t\t\t\t\t)({\n\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t}),\n\t\t\t\t\t})),\n\t\t\t\t\t...(option.selectOption || {}),\n\t\t\t\t}}\n\t\t\t\tvalue={currentlyPickedItem || notAddedItems[0]}\n\t\t\t/>\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"button button-primary\"\n\t\t\t\tonClick={() => addCurrentlySelectedItem()}>\n\t\t\t\t<svg width=\"10\" height=\"10\" viewBox=\"0 0 17 17\">\n\t\t\t\t\t<path d=\"M17,10h-7v7H7v-7H0V7h7V0h3v7h7V10z\" />\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t</div>\n\t)\n}\n\nexport default SelectThatAddsItems\n","import {\n\tcreateElement,\n\tuseContext,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\nimport { SortableHandle } from 'react-sortable-hoc'\nimport { LayersContext } from '../ct-layers'\nimport { __ } from 'ct-i18n'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nconst LayerControls = ({ itemIndex, items, onChange, value }) => {\n\tconst { removeForId, addForId, option, toggleOptionsPanel } = useContext(\n\t\tLayersContext\n\t)\n\n\tconst hasOptions =\n\t\toption.settings[value.id] &&\n\t\toption.settings[value.id].options &&\n\t\t(!option.settings[value.id].options_condition ||\n\t\t\t(option.settings[value.id].options_condition &&\n\t\t\t\tmatchValuesWithCondition(\n\t\t\t\t\tnormalizeCondition(\n\t\t\t\t\t\toption.settings[value.id].options_condition\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\titemIndex,\n\t\t\t\t\t}\n\t\t\t\t)))\n\n\tlet itemsOfType = items.filter(({ id }) => id === value.id)\n\tlet relativeIndex = itemsOfType.map(({ __id }) => __id).indexOf(value.__id)\n\n\treturn (\n\t\t<div className=\"ct-layer-controls\">\n\t\t\t{!option.disableHiding && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ct-visibility\"\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\titems.map((l) =>\n\t\t\t\t\t\t\t\tl.__id === value.__id\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t\tenabled: !{\n\t\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t\t}.enabled,\n\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t: l\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}}>\n\t\t\t\t\t<svg width=\"13px\" height=\"13px\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t\t<path d=\"M12,4C4.1,4,0,12,0,12s3.1,8,12,8c8.1,0,12-8,12-8S20.1,4,12,4z M12,17c-2.9,0-5-2.2-5-5c0-2.8,2.1-5,5-5s5,2.2,5,5C17,14.8,14.9,17,12,17z M12,9c-1.7,0-3,1.4-3,3c0,1.6,1.3,3,3,3s3-1.4,3-3C15,10.4,13.7,9,12,9z\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t<div className=\"ct-layer-label\">\n\t\t\t\t<span>\n\t\t\t\t\t{window._.template(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\toption.settings[value.id] || {\n\t\t\t\t\t\t\t\tlabel: value.id,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t).label\n\t\t\t\t\t)(value).replace(\n\t\t\t\t\t\t' INDEX',\n\t\t\t\t\t\titemsOfType.length === 1 ? '' : ` ${relativeIndex + 1}`\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t{option.settings[value.id] &&\n\t\t\t\toption.settings[value.id].clone &&\n\t\t\t\titems.filter(({ id }) => id === value.id).length <\n\t\t\t\t\t(parseInt(option.settings[value.id].clone) || 1) + 1 && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"ct-clone\"\n\t\t\t\t\t\tonClick={() => addForId(value.id, value)}>\n\t\t\t\t\t\t<svg width=\"11px\" height=\"11px\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t\t\t<path d=\"M23,24H7.7c-0.6,0-1-0.4-1-1V7.7c0-0.6,0.4-1,1-1H23c0.6,0,1,0.4,1,1V23C24,23.6,23.6,24,23,24z M8.7,22H22V8.7 H8.7V22z\" />\n\t\t\t\t\t\t\t<path d=\"M17.3,16.3c0,0.6-0.4,1-1,1H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h15.3c0.6,0,1,0.4,1,1V16.3z\" />\n\t\t\t\t\t\t</svg>\n\n\t\t\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t\t\t{__('Clone Item', 'blocksy')}\n\t\t\t\t\t\t</i>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t{(option.manageable ||\n\t\t\t\t(option.settings[value.id] &&\n\t\t\t\t\toption.settings[value.id].clone &&\n\t\t\t\t\titems.filter(({ id }) => id === value.id).length > 1) ||\n\t\t\t\t!option.settings[value.id]) && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ct-remove\"\n\t\t\t\t\tonClick={() => removeForId(value.__id)}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{hasOptions && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ct-toggle\"\n\t\t\t\t\tonMouseDown={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\ttoggleOptionsPanel(value.__id)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default SortableHandle(LayerControls)\n","import {\n\tcreateElement,\n\tComponent,\n\tcreateContext,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport {\n\tSortableContainer,\n\tSortableElement,\n\tSortableHandle,\n} from 'react-sortable-hoc'\n\nimport arrayMove from 'array-move'\n\nimport OptionsPanel from '../OptionsPanel'\nimport { getValueFromInput } from '../helpers/get-value-from-input'\nimport Select from './ct-select'\nimport nanoid from 'nanoid'\n\nimport SelectThatAddsItems from './ct-layers/SelectThatAddsItems'\nimport LayerControls from './ct-layers/LayerControls'\n\nconst valueWithUniqueIds = (value) =>\n\tvalue.map((singleItem) => ({\n\t\t...singleItem,\n\n\t\t...(singleItem.__id\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\t__id: nanoid(),\n\t\t\t  }),\n\t}))\n\nexport const itemsThatAreNotAdded = (value, option) =>\n\tObject.keys(option.settings).filter(\n\t\t(optionId) => !value.find(({ id }) => id === optionId)\n\t)\n\nconst getDefaultState = () => ({\n\tcurrentlyPickedItem: null,\n\tisDragging: false,\n\tisOpen: false,\n})\n\nexport const LayersContext = createContext(getDefaultState())\n\nconst { Provider, Consumer } = LayersContext\n\nclass SingleItem extends Component {\n\tstate = {\n\t\tisOpen: false,\n\t}\n\n\trender() {\n\t\tconst { value, items, onChange, index } = this.props\n\t\tconst itemIndex = items\n\t\t\t.map(({ __id }) => __id)\n\t\t\t.indexOf(value.__id)\n\t\t\t.toString()\n\n\t\treturn (\n\t\t\t<Consumer>\n\t\t\t\t{({ option, isDragging, isOpen, parentValue }) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName={classnames('ct-layer', option.itemClass, {\n\t\t\t\t\t\t\t[`ct-disabled`]: !{ enabled: true, ...value }\n\t\t\t\t\t\t\t\t.enabled,\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t<LayerControls\n\t\t\t\t\t\t\titems={items}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\titemIndex={itemIndex}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{option.settings[value.id] &&\n\t\t\t\t\t\t\toption.settings[value.id].options &&\n\t\t\t\t\t\t\tisOpen === value.__id &&\n\t\t\t\t\t\t\t(!isDragging ||\n\t\t\t\t\t\t\t\t(isDragging && isDragging !== isOpen)) && (\n\t\t\t\t\t\t\t\t<div className=\"ct-layer-content\">\n\t\t\t\t\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\t\t\t\t\thasRevertButton={false}\n\t\t\t\t\t\t\t\t\t\tparentValue={parentValue}\n\t\t\t\t\t\t\t\t\t\tonChange={(key, newValue) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\toption.settings[value.id]\n\t\t\t\t\t\t\t\t\t\t\t\t\t.sync &&\n\t\t\t\t\t\t\t\t\t\t\t\toption.settings[value.id].clone\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet totalItems = items.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === value.id\n\t\t\t\t\t\t\t\t\t\t\t\t).length\n\n\t\t\t\t\t\t\t\t\t\t\t\tlet idForSync = `${\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.settings[value.id]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.sync.id\n\t\t\t\t\t\t\t\t\t\t\t\t}_first`\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\ttotalItems > 1 &&\n\t\t\t\t\t\t\t\t\t\t\t\t\titems\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid === value.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(({ __id }) => __id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(value.__id) > 0\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tidForSync = `${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toption.settings[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t].sync.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t}_second`\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\twp.customize &&\n\t\t\t\t\t\t\t\t\t\t\t\t\twp.customize.previewer &&\n\t\t\t\t\t\t\t\t\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ct:sync:refresh_partial',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: idForSync,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\titems.map((l) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tl.__id === value.__id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...l,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[key]: newValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: l\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvalue={getValueFromInput(\n\t\t\t\t\t\t\t\t\t\t\toption.settings[value.id].options,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t...(option.value.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) => id === value.id\n\t\t\t\t\t\t\t\t\t\t\t\t).length > 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t? option.value.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.id === id\n\t\t\t\t\t\t\t\t\t\t\t\t\t  )[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titems\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({ id }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t__id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) => __id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.__id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t  ]\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\toptions={\n\t\t\t\t\t\t\t\t\t\t\toption.settings[value.id].options\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</li>\n\t\t\t\t)}\n\t\t\t</Consumer>\n\t\t)\n\t}\n}\n\nconst SortableItem = SortableElement(SingleItem)\n\nconst SortableList = SortableContainer(({ items, onChange }) => (\n\t<Consumer>\n\t\t{({ option }) => (\n\t\t\t<ul className=\"ct-layers\">\n\t\t\t\t{items.map((value, index) => (\n\t\t\t\t\t<SortableItem\n\t\t\t\t\t\tkey={value.__id}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tdisabled={!!option.disableDrag}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t)}\n\t</Consumer>\n))\n\nconst Layers = ({ value, option, onChange, values }) => {\n\tconst [state, setState] = useState(getDefaultState())\n\n\tconst addForId = (idToAdd, val = {}) => {\n\t\tonChange([\n\t\t\t...(value || []),\n\t\t\t{\n\t\t\t\tid: idToAdd,\n\t\t\t\tenabled: true,\n\t\t\t\t...getValueFromInput(\n\t\t\t\t\toption.settings[idToAdd].options || {},\n\t\t\t\t\t{}\n\t\t\t\t),\n\t\t\t\t...val,\n\t\t\t\t__id: nanoid(),\n\t\t\t},\n\t\t])\n\t}\n\n\tconst computedValue = (option.manageable\n\t\t? valueWithUniqueIds(value)\n\t\t: [\n\t\t\t\t...valueWithUniqueIds(value),\n\t\t\t\t...option.value\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ id }) => value.map(({ id }) => id).indexOf(id) === -1\n\t\t\t\t\t)\n\t\t\t\t\t.map((item) => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\t__id: nanoid(),\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t})),\n\t\t  ]\n\t).filter((item) => !!option.settings[item.id])\n\n\treturn (\n\t\t<Provider\n\t\t\tvalue={{\n\t\t\t\t...state,\n\t\t\t\tparentValue: values,\n\t\t\t\taddCurrentlySelectedItem: () => {\n\t\t\t\t\tconst idToAdd =\n\t\t\t\t\t\tstate.currentlyPickedItem ||\n\t\t\t\t\t\titemsThatAreNotAdded(\n\t\t\t\t\t\t\tvalueWithUniqueIds(value),\n\t\t\t\t\t\t\toption\n\t\t\t\t\t\t)[0]\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tcurrentlyPickedItem: null,\n\t\t\t\t\t}))\n\t\t\t\t\taddForId(idToAdd)\n\t\t\t\t},\n\t\t\t\taddForId: (id, value) => addForId(id, value),\n\t\t\t\toption: option,\n\t\t\t\tsetCurrentItem: (currentlyPickedItem) =>\n\t\t\t\t\tsetState((state) => ({ ...state, currentlyPickedItem })),\n\t\t\t\tremoveForId: (idToRemove) =>\n\t\t\t\t\tonChange(\n\t\t\t\t\t\tvalueWithUniqueIds(value).filter(\n\t\t\t\t\t\t\t({ __id: id }) => id !== idToRemove\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\n\t\t\t\ttoggleOptionsPanel: (idToAdd) => {\n\t\t\t\t\tif (value.length > 0 && !value[0].__id) {\n\t\t\t\t\t\twp.customize &&\n\t\t\t\t\t\t\twp.customize.previewer &&\n\t\t\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t\t\t'ct:sync:refresh_partial',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tshouldSkip: true,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\tonChange(computedValue)\n\t\t\t\t\t}\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tisOpen: state.isOpen === idToAdd ? false : idToAdd,\n\t\t\t\t\t}))\n\t\t\t\t},\n\t\t\t}}>\n\t\t\t{option.manageable && (\n\t\t\t\t<SelectThatAddsItems\n\t\t\t\t\t{...{\n\t\t\t\t\t\tvalue: computedValue,\n\t\t\t\t\t\toption,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<SortableList\n\t\t\t\tuseDragHandle\n\t\t\t\tdistance={3}\n\t\t\t\tlockAxis=\"y\"\n\t\t\t\titems={computedValue}\n\t\t\t\tonChange={(v) => onChange(v)}\n\t\t\t\thelperContainer={() =>\n\t\t\t\t\tdocument.querySelector('#customize-theme-controls') ||\n\t\t\t\t\tdocument.body\n\t\t\t\t}\n\t\t\t\tonSortEnd={({ oldIndex, newIndex }) => {\n\t\t\t\t\tonChange(arrayMove(computedValue, oldIndex, newIndex))\n\n\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tisDragging: false,\n\t\t\t\t\t}))\n\t\t\t\t}}\n\t\t\t\tupdateBeforeSortStart={({ index }) => {\n\t\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\t\tif (value.length > 0 && !value[0].__id) {\n\t\t\t\t\t\t\twp.customize &&\n\t\t\t\t\t\t\t\twp.customize.previewer &&\n\t\t\t\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t\t\t\t'ct:sync:refresh_partial',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tshouldSkip: true,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tonChange(computedValue)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetState((state) => ({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tisDragging: computedValue[index].__id,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Provider>\n\t)\n}\n\nexport default Layers\n","import { createElement, Component, Fragment } from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\nimport _ from 'underscore'\n\nconst ALLOWED_MEDIA_TYPES = ['image']\n\nexport default class MultiImageUploader extends Component {\n\tparams = {\n\t\theight: 250,\n\t\twidth: 250,\n\t\tflex_width: true,\n\t\tflex_height: true,\n\t}\n\n\tstate = {\n\t\tattachment_info: [],\n\t}\n\n\tgetUrlFor = (attachmentInfo) =>\n\t\tattachmentInfo\n\t\t\t? (attachmentInfo.width < 700\n\t\t\t\t\t? attachmentInfo.sizes.full\n\t\t\t\t\t: _.max(\n\t\t\t\t\t\t\t_.values(\n\t\t\t\t\t\t\t\t_.keys(attachmentInfo.sizes).length === 1\n\t\t\t\t\t\t\t\t\t? attachmentInfo.sizes\n\t\t\t\t\t\t\t\t\t: _.omit(attachmentInfo.sizes, 'full')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t({ width }) => width\n\t\t\t\t\t  )\n\t\t\t  ).url || attachmentInfo.url\n\t\t\t: null\n\n\trender() {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={classnames('ct-attachment-multi', {})}\n\t\t\t\t{...(this.props.option.attr || {})}>\n\t\t\t\t<wp.mediaUtils.MediaUpload\n\t\t\t\t\tonSelect={(media) => {\n\t\t\t\t\t\tconst result = media.map((attachment) => ({\n\t\t\t\t\t\t\turl: this.getUrlFor(attachment),\n\t\t\t\t\t\t\tattachment_id: attachment.id,\n\t\t\t\t\t\t}))\n\n\t\t\t\t\t\tthis.props.onChange(result)\n\t\t\t\t\t}}\n\t\t\t\t\tgallery={true}\n\t\t\t\t\tallowedTypes={ALLOWED_MEDIA_TYPES}\n\t\t\t\t\tvalue={this.props.value.map(\n\t\t\t\t\t\t({ attachment_id }) => attachment_id\n\t\t\t\t\t)}\n\t\t\t\t\tmultiple={true}\n\t\t\t\t\trender={({ open }) => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t{Array.isArray(this.props.value) &&\n\t\t\t\t\t\t\t\tthis.props.value.length > 0 && (\n\t\t\t\t\t\t\t\t\t<div className=\"ct-thumbnails-list\">\n\t\t\t\t\t\t\t\t\t\t{this.props.value.map(\n\t\t\t\t\t\t\t\t\t\t\t({ url, attachment_id }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={attachment_id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"thumbnail thumbnail-image\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topen()\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"attachment-thumb\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={url}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"actions\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"button edit-button control-focus\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Edit\"></button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Remove\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"button remove-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.onChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.value.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ta.attachment_id !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tattachment_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}></button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName=\"button edit-button control-focus\"\n\t\t\t\t\t\t\t\ttitle=\"Edit\"\n\t\t\t\t\t\t\t\tonClick={() => open()}>\n\t\t\t\t\t\t\t\t{__('Add/Edit Gallery', 'blocksy')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","import { Fragment, createElement, Component } from '@wordpress/element'\n\nconst Notification = ({ option: { text = '', attr = {} } }) => (\n\t<Fragment>\n\t\t<div\n\t\t\tclassName=\"ct-notification\"\n\t\t\t{...{\n\t\t\t\t...(attr || {}),\n\t\t\t}}\n\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t__html: text,\n\t\t\t}}\n\t\t/>\n\t</Fragment>\n)\n\nNotification.renderingConfig = { design: 'none' }\n\nexport default Notification\n","import { createElement, Component } from '@wordpress/element'\nimport _ from 'underscore'\nimport classnames from 'classnames'\nimport InputWithOnlyNumbers from '../components/InputWithOnlyNumbers'\n\nimport { clamp, round } from './ct-slider'\n\nconst NumberOption = ({\n\tvalue,\n\toption,\n\toption: { attr, step = 1, markAsAutoFor },\n\tdevice,\n\tonChange,\n}) => {\n\tconst parsedValue =\n\t\tmarkAsAutoFor && markAsAutoFor.indexOf(device) > -1 ? 'auto' : value\n\n\tconst min = !option.min && option.min !== 0 ? -Infinity : option.min\n\tconst max = !option.max && option.max !== 0 ? -Infinity : option.max\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classnames('ct-option-number', {\n\t\t\t\t[`ct-reached-limits`]:\n\t\t\t\t\tparseFloat(parsedValue) === parseInt(min) ||\n\t\t\t\t\tparseFloat(parsedValue) === parseInt(max),\n\t\t\t})}\n\t\t\t{...(attr || {})}>\n\t\t\t<a\n\t\t\t\tclassName={classnames('ct-minus', {\n\t\t\t\t\t['ct-disabled']: parseFloat(parsedValue) === parseInt(min),\n\t\t\t\t})}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tonChange(\n\t\t\t\t\t\tround(\n\t\t\t\t\t\t\tclamp(\n\t\t\t\t\t\t\t\tmin,\n\t\t\t\t\t\t\t\tmax,\n\t\t\t\t\t\t\t\tparseFloat(parsedValue) - parseFloat(step)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<a\n\t\t\t\tclassName={classnames('ct-plus', {\n\t\t\t\t\t['ct-disabled']: parseFloat(parsedValue) === parseInt(max),\n\t\t\t\t})}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tonChange(\n\t\t\t\t\t\tround(\n\t\t\t\t\t\t\tclamp(\n\t\t\t\t\t\t\t\tmin,\n\t\t\t\t\t\t\t\tmax,\n\t\t\t\t\t\t\t\tparseFloat(parsedValue) + parseFloat(step)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<InputWithOnlyNumbers\n\t\t\t\tvalue={parsedValue}\n\t\t\t\tstep={step}\n\t\t\t\tonBlur={() =>\n\t\t\t\t\tparseFloat(parsedValue)\n\t\t\t\t\t\t? onChange(round(clamp(min, max, parsedValue)))\n\t\t\t\t\t\t: []\n\t\t\t\t}\n\t\t\t\tonChange={(value, can_safely_parse) =>\n\t\t\t\t\tcan_safely_parse && _.isNumber(parseFloat(value))\n\t\t\t\t\t\t? onChange(round(clamp(min, max, value)))\n\t\t\t\t\t\t: parseFloat(value)\n\t\t\t\t\t\t? onChange(round(Math.min(parseFloat(value), max)))\n\t\t\t\t\t\t: onChange(round(value))\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default NumberOption\n","import {\n\tcreateElement,\n\tuseContext,\n\tuseEffect,\n\tcreatePortal,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport bezierEasing from 'bezier-easing'\n\nimport OptionsPanel from '../../options/OptionsPanel'\nimport Switch from './ct-switch'\nimport { PanelContext } from '../components/PanelLevel'\n\nimport { Transition, animated } from '@react-spring/web'\n\nexport const PanelMetaWrapper = ({ id, option, getActualOption, value }) => {\n\tconst {\n\t\tpanelsState,\n\t\tpanelsHelpers,\n\t\tpanelsDispatch,\n\t\tcontainerRef,\n\t} = useContext(PanelContext)\n\n\tconst selfPanelId = id\n\n\tuseEffect(() => {\n\t\tif (panelsState.previousPanel) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!panelsHelpers.isTransitioningFor(id)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (panelsHelpers.isOpenFor(id)) {\n\t\t\tif (\n\t\t\t\t!panelsHelpers\n\t\t\t\t\t.getWrapperParent()\n\t\t\t\t\t.querySelector('.ct-tmp-panel-wrapper')\n\t\t\t) {\n\t\t\t\tconst wrapper = document.createElement('div')\n\t\t\t\twrapper.classList.add('ct-tmp-panel-wrapper')\n\t\t\t\tpanelsHelpers.getWrapperParent().appendChild(wrapper)\n\t\t\t}\n\n\t\t\tif (panelsHelpers.getParentOptionsWrapper()) {\n\t\t\t\tpanelsHelpers\n\t\t\t\t\t.getParentOptionsWrapper()\n\t\t\t\t\t.classList.add('ct-panel-open')\n\t\t\t}\n\n\t\t\tconst h3 =\n\t\t\t\tcontainerRef.current.closest('ul') &&\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.closest('ul')\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t'.customize-section-description-container h3'\n\t\t\t\t\t)\n\n\t\t\tpanelsDispatch({\n\t\t\t\ttype: 'PANEL_RECEIVE_TITLE',\n\t\t\t\tpayload: {\n\t\t\t\t\ttitlePrefix: h3\n\t\t\t\t\t\t? `${h3.querySelector('span').innerText} ▸ ${\n\t\t\t\t\t\t\t\th3.innerText.split('\\n')[\n\t\t\t\t\t\t\t\t\th3.innerText.split('\\n').length - 1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t  }`\n\t\t\t\t\t\t: '',\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\tif (\n\t\t\t\t!containerRef.current.closest('.accordion-section-content') ||\n\t\t\t\t!containerRef.current\n\t\t\t\t\t.closest('.accordion-section-content')\n\t\t\t\t\t.classList.contains('ct-panel-open')\n\t\t\t) {\n\t\t\t\t// return\n\t\t\t}\n\n\t\t\tif (panelsHelpers.getParentOptionsWrapper()) {\n\t\t\t\tpanelsHelpers\n\t\t\t\t\t.getParentOptionsWrapper()\n\t\t\t\t\t.classList.remove('ct-panel-open')\n\t\t\t}\n\n\t\t\t/*\n\t\t\tsetTimeout(() =>\n\t\t\t\t(containerRef.current.querySelector('button')\n\t\t\t\t\t? containerRef.current.querySelector('button')\n\t\t\t\t\t: containerRef.current\n\t\t\t\t).focus()\n\t\t\t)\n            */\n\t\t}\n\t}, [panelsState.previousPanel, id, panelsHelpers.isOpenFor(id)])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\t;[\n\t\t\t\t...document.querySelectorAll('.ct-panel-open:not(.open)'),\n\t\t\t].map((el) => el.classList.remove('ct-panel-open'))\n\t\t}\n\t}, [])\n\n\tconst isEnabled = value === 'yes' || value === true\n\n\treturn getActualOption({\n\t\topen: () => panelsHelpers.open(id),\n\n\t\twrapperAttr: {\n\t\t\tclassName: `${\n\t\t\t\toption.switch\n\t\t\t\t\t? isEnabled\n\t\t\t\t\t\t? 'ct-click-allowed'\n\t\t\t\t\t\t: ''\n\t\t\t\t\t: 'ct-click-allowed'\n\t\t\t} ct-panel`,\n\t\t\tonClick: ({ target }) => {\n\t\t\t\tif (option.switch && !isEnabled) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (target.closest('.ct-tmp-panel-wrapper')) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tpanelsHelpers.open(selfPanelId)\n\t\t\t},\n\t\t},\n\t})\n}\n\nconst PanelContainer = ({ option, id, onChange, getValues, onChangeFor }) => {\n\tlet maybeLabel =\n\t\tObject.keys(option).indexOf('label') === -1\n\t\t\t? (id || '')\n\t\t\t\t\t.replace(/./, (s) => s.toUpperCase())\n\t\t\t\t\t.replace(/\\_|\\-/g, ' ')\n\t\t\t: option.label\n\n\tconst {\n\t\tpanelsState: { titlePrefix, previousPanel },\n\t\tpanelsState,\n\t\tpanelsHelpers,\n\t\tcontainerRef,\n\t} = useContext(PanelContext)\n\n\treturn containerRef.current &&\n\t\tpanelsHelpers.getWrapperParent().querySelector('.ct-tmp-panel-wrapper')\n\t\t? createPortal(\n\t\t\t\t<Transition\n\t\t\t\t\titems={panelsHelpers.isOpenFor(id)}\n\t\t\t\t\tfrom={{ transform: 'translateX(100%)' }}\n\t\t\t\t\tenter={{\n\t\t\t\t\t\ttransform: 'translateX(0%)',\n\t\t\t\t\t}}\n\t\t\t\t\tleave={\n\t\t\t\t\t\tpreviousPanel === id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\ttransform: 'translateX(-100%)',\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\ttransform: 'translateX(100%)',\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t}\n\t\t\t\t\tconfig={(item, type) => ({\n\t\t\t\t\t\t// delay: type === 'enter' ? 180 * 10 : 0,\n\t\t\t\t\t\t// duration: 2000,\n\t\t\t\t\t\tduration: 180,\n\t\t\t\t\t\teasing: bezierEasing(0.645, 0.045, 0.355, 1),\n\t\t\t\t\t})}\n\t\t\t\t\tonRest={(isOpen) => {\n\t\t\t\t\t\tpanelsHelpers.stopTransitioning()\n\n\t\t\t\t\t\tif (isOpen) {\n\t\t\t\t\t\t\t;[\n\t\t\t\t\t\t\t\t...panelsHelpers\n\t\t\t\t\t\t\t\t\t.getWrapperParent()\n\t\t\t\t\t\t\t\t\t.querySelectorAll('.ct-tmp-panel-wrapper'),\n\t\t\t\t\t\t\t].map((el) => {\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tif (!el.firstElementChild) {\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tel.firstElementChild.removeAttribute(\n\t\t\t\t\t\t\t\t\t\t'style'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!previousPanel) {\n\t\t\t\t\t\t\t;[\n\t\t\t\t\t\t\t\t...panelsHelpers\n\t\t\t\t\t\t\t\t\t.getWrapperParent()\n\t\t\t\t\t\t\t\t\t.querySelectorAll('.ct-tmp-panel-wrapper'),\n\t\t\t\t\t\t\t].map((el) => el.parentNode.removeChild(el))\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t{(props, isOpen) =>\n\t\t\t\t\t\tisOpen && (\n\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\tstyle={props}\n\t\t\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t\t\t'ct-customizer-panel ct-options-container',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'ct-panel-second-level':\n\t\t\t\t\t\t\t\t\t\t\tpanelsState.currentLevel === 2,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<div className=\"customize-panel-actions\">\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\tpanelsHelpers.close()\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"customize-section-back\"\n\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t\t\t<span>{titlePrefix}</span>\n\t\t\t\t\t\t\t\t\t\t\t{maybeLabel}\n\t\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div className=\"customizer-panel-content\">\n\t\t\t\t\t\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\t\t\t\t\t\tpurpose=\"customizer\"\n\t\t\t\t\t\t\t\t\t\t\tonChange={(key, val) =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeFor(key, val)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\toptions={option['inner-options']}\n\t\t\t\t\t\t\t\t\t\t\tvalue={getValues()}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{(panelsState.currentLevel === 2 ||\n\t\t\t\t\t\t\t\t\tpanelsState.secondLevelTitleLabel) && (\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"customize-panel-actions\">\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanelsHelpers.close()\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"customize-section-back\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{panelsState.titlePrefix +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t' ▸ ' +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaybeLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanelsState.secondLevelTitleLabel\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"customizer-panel-content\"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t</Transition>,\n\t\t\t\tpanelsHelpers\n\t\t\t\t\t.getWrapperParent()\n\t\t\t\t\t.querySelector('.ct-tmp-panel-wrapper')\n\t\t  )\n\t\t: null\n}\n\nconst Panel = ({\n\tid,\n\tgetValues,\n\tvalues,\n\tonChangeFor,\n\toption,\n\tvalue,\n\tview = 'normal',\n\tonChange,\n}) => {\n\tconst {\n\t\tpanelsState: { isOpen, isTransitioning },\n\t\tpanelsHelpers,\n\t} = useContext(PanelContext)\n\n\tif (view === 'simple') {\n\t\treturn panelsHelpers.isTransitioningFor(id) ||\n\t\t\tpanelsHelpers.isOpenFor(id) ? (\n\t\t\t<PanelContainer\n\t\t\t\tid={id}\n\t\t\t\tgetValues={() => (getValues ? getValues() : values)}\n\t\t\t\tonChangeFor={onChangeFor}\n\t\t\t\toption={option}\n\t\t\t/>\n\t\t) : null\n\t}\n\n\treturn (\n\t\t<div className=\"ct-customizer-panel-container\">\n\t\t\t<div className={classnames('ct-customizer-panel-option')}>\n\t\t\t\t{option.switch && (\n\t\t\t\t\t<Switch\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\toption={{\n\t\t\t\t\t\t\tbehavior: option.switchBehavior || 'words',\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<button type=\"button\" />\n\t\t\t</div>\n\n\t\t\t{(panelsHelpers.isTransitioningFor(id) ||\n\t\t\t\tpanelsHelpers.isOpenFor(id)) && (\n\t\t\t\t<PanelContainer\n\t\t\t\t\tid={id}\n\t\t\t\t\tgetValues={() => (getValues ? getValues() : values)}\n\t\t\t\t\tonChangeFor={onChangeFor}\n\t\t\t\t\toption={option}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nPanel.renderingConfig = {\n\tdesign: 'inline',\n}\n\nPanel.MetaWrapper = PanelMetaWrapper\n\nexport default Panel\n","import { createElement, Component } from '@wordpress/element'\nimport classnames from 'classnames'\nimport { normalizeCondition, matchValuesWithCondition } from 'match-conditions'\n\nconst RadioInput = (props) => {\n\tconst { inline = false } = props.option\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"ct-radio-option\"\n\t\t\t{...(inline ? { ['data-inline']: '' } : {})}\n\t\t\t{...(props.option.attr || {})}>\n\t\t\t{Object.keys(props.option.choices).map((choice) => (\n\t\t\t\t<label key={choice}>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tchecked={choice === props.value}\n\t\t\t\t\t\tonChange={() => props.onChange(choice)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{props.option.choices[choice]}\n\t\t\t\t</label>\n\t\t\t))}\n\t\t</div>\n\t)\n}\n\nconst DefaultRadio = ({\n\toption,\n\tvalues,\n\tvalue,\n\tonChange,\n\tsingleChoiceProps,\n}) => {\n\tconst { inline = false } = option\n\n\tlet matchingChoices = Object.keys(option.choices).filter((choice) => {\n\t\tif (!option.conditions) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (!option.conditions[choice]) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn matchValuesWithCondition(\n\t\t\tnormalizeCondition(option.conditions[choice]),\n\t\t\tvalues\n\t\t)\n\t})\n\n\tlet normalizedValue = matchingChoices.includes(value) ? value : option.value\n\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"ct-radio-option ct-buttons-group\"\n\t\t\t{...(inline ? { ['data-inline']: '' } : {})}\n\t\t\t{...(option.attr || {})}>\n\t\t\t{matchingChoices.map((choice, index) => (\n\t\t\t\t<li\n\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\tactive: choice === normalizedValue,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={() => onChange(choice)}\n\t\t\t\t\tkey={choice}\n\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t__html: option.choices[choice],\n\t\t\t\t\t}}\n\t\t\t\t\t{...(singleChoiceProps ? singleChoiceProps(choice) : {})}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n\nconst Radio = (props) => {\n\tconst {\n\t\toption: { view },\n\t} = props\n\n\tif (view === 'radio') {\n\t\treturn <RadioInput {...props} />\n\t}\n\n\treturn <DefaultRadio {...props} />\n}\n\nexport default Radio\n","import {\n\tcreateElement,\n\tComponent,\n\tcreatePortal,\n\tuseRef,\n\tcreateRef,\n} from '@wordpress/element'\nimport { Transition } from 'react-spring/renderprops'\nimport bezierEasing from 'bezier-easing'\nimport classnames from 'classnames'\nimport GenericOptionType from '../../GenericOptionType'\nimport { __ } from 'ct-i18n'\n\nconst RatioModal = ({\n\trenderContent,\n\tstopTransitioning,\n\n\tel,\n\n\tisTransitioning,\n\tisPicking,\n}) => {\n\treturn (\n\t\t(isTransitioning || isPicking) &&\n\t\tcreatePortal(\n\t\t\t<Transition\n\t\t\t\titems={isPicking}\n\t\t\t\tonRest={(isOpen) => stopTransitioning()}\n\t\t\t\tconfig={{\n\t\t\t\t\tduration: 100,\n\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t}}\n\t\t\t\tfrom={{\n\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\topacity: 0,\n\t\t\t\t}}\n\t\t\t\tenter={{\n\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\topacity: 1,\n\t\t\t\t}}\n\t\t\t\tleave={{\n\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\topacity: 0,\n\t\t\t\t}}>\n\t\t\t\t{(isPicking) =>\n\t\t\t\t\tisPicking &&\n\t\t\t\t\t((props) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={props}\n\t\t\t\t\t\t\tclassName=\"ct-ratio-modal\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseDownCapture={(e) => {\n\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseUpCapture={(e) => {\n\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{renderContent && renderContent()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t</Transition>,\n\t\t\tel.current.closest('.ct-single-palette')\n\t\t\t\t? el.current\n\t\t\t\t\t\t.closest('.ct-single-palette')\n\t\t\t\t\t\t.querySelector('.ct-color-modal-wrapper')\n\t\t\t\t: el.current.closest('.ct-color-modal-wrapper')\n\t\t\t\t? el.current.closest('.ct-color-modal-wrapper')\n\t\t\t\t: el.current\n\t\t\t\t\t\t.closest('.ct-control')\n\t\t\t\t\t\t.querySelector('.ct-color-modal-wrapper')\n\t\t)\n\t)\n}\n\nexport default RatioModal\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tuseRef,\n\tFragment,\n} from '@wordpress/element'\nimport cls from 'classnames'\nimport { __, sprintf } from 'ct-i18n'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport RatioModal from './ratio/RatioModal'\nimport OptionsPanel from '../OptionsPanel'\nimport { getValueFromInput } from '../helpers/get-value-from-input'\n\nconst Ratio = ({ option, value, onChange, onChangeFor, values }) => {\n\tconst [isForcedReversed, setIsReversed] = useState(false)\n\tlet {\n\t\thasOriginalRatio = true,\n\t\t// popup | inline\n\t\tview = 'popup',\n\t\tpreview_width_key = null,\n\t} = option || {}\n\n\tconst [currentModalTab, setCurrentTab] = useState('ratio')\n\n\tlet normal_ratios = ['4/3', '16/9', '2/1']\n\tlet reversed_ratios = ['3/4', '9/16', '1/2']\n\n\tconst el = useRef()\n\n\tconst [{ isPicking, isTransitioning }, setAnimationState] = useState({\n\t\tisPicking: false,\n\t\tisTransitioning: false,\n\t})\n\n\tconst isReversed =\n\t\tnormal_ratios.indexOf(value) > -1\n\t\t\t? false\n\t\t\t: reversed_ratios.indexOf(value) > -1\n\t\t\t? true\n\t\t\t: isForcedReversed\n\n\tlet currentTab =\n\t\tvalue === 'original'\n\t\t\t? 'original'\n\t\t\t: value.indexOf('/') === -1\n\t\t\t? 'custom'\n\t\t\t: 'predefined'\n\n\tlet isCustom = value.indexOf('/') === -1\n\n\tconst inlineRatioView = (\n\t\t<Fragment>\n\t\t\t{option && option['inner-options'] && (\n\t\t\t\t<ul className=\"ct-modal-tabs\">\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() => setCurrentTab('ratio')}\n\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\tactive: currentModalTab === 'ratio',\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t{__('Image Ratio', 'blocksy')}\n\t\t\t\t\t</li>\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() => setCurrentTab('size')}\n\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\tactive: currentModalTab === 'size',\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t{__('Image Size', 'blocksy')}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t)}\n\n\t\t\t<div className=\"ct-ratio-content\">\n\t\t\t\t{currentModalTab === 'ratio' && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cls('ct-ratio-picker', {\n\t\t\t\t\t\t\treversed: isReversed,\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t<ul className=\"ct-radio-option ct-buttons-group\">\n\t\t\t\t\t\t\t{hasOriginalRatio && (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\tactive: currentTab === 'original',\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tif (value !== 'original') {\n\t\t\t\t\t\t\t\t\t\t\tonChange('original')\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{__('Original', 'blocksy')}\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\tactive: currentTab === 'predefined',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tvalue.indexOf('/') === -1 ||\n\t\t\t\t\t\t\t\t\t\tvalue === 'original'\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\toption.value === 'original'\n\t\t\t\t\t\t\t\t\t\t\t\t? '1/1'\n\t\t\t\t\t\t\t\t\t\t\t\t: option.value\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{__('Predefined', 'blocksy')}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\tactive: currentTab === 'custom',\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tvalue.indexOf('/') !== -1 ||\n\t\t\t\t\t\t\t\t\t\tvalue === 'original'\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tlet [first, second] = (value ===\n\t\t\t\t\t\t\t\t\t\t'original'\n\t\t\t\t\t\t\t\t\t\t\t? option.value === 'original'\n\t\t\t\t\t\t\t\t\t\t\t\t? '1/1'\n\t\t\t\t\t\t\t\t\t\t\t\t: option.value\n\t\t\t\t\t\t\t\t\t\t\t: value\n\t\t\t\t\t\t\t\t\t\t).split('/')\n\t\t\t\t\t\t\t\t\t\tonChange(`${first}:${second}`)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{__('Custom', 'blocksy')}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t{currentTab === 'predefined' && (\n\t\t\t\t\t\t\t<div className=\"ct-ratio-predefined\">\n\t\t\t\t\t\t\t\t<ul className=\"ct-buttons-group\">\n\t\t\t\t\t\t\t\t\t{[\n\t\t\t\t\t\t\t\t\t\t'1/1',\n\t\t\t\t\t\t\t\t\t\t...(isReversed\n\t\t\t\t\t\t\t\t\t\t\t? reversed_ratios\n\t\t\t\t\t\t\t\t\t\t\t: normal_ratios),\n\t\t\t\t\t\t\t\t\t].map((ratio) => (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={ratio}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cls({\n\t\t\t\t\t\t\t\t\t\t\t\tactive: ratio === value,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onChange(ratio)}>\n\t\t\t\t\t\t\t\t\t\t\t{ratio}\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\t\t\t\t\tif (value === '1/1') {\n\t\t\t\t\t\t\t\t\t\t\tsetIsReversed(!isReversed)\n\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tlet [\n\t\t\t\t\t\t\t\t\t\t\tfirst_component,\n\t\t\t\t\t\t\t\t\t\t\tsecond_component,\n\t\t\t\t\t\t\t\t\t\t] = value.split('/')\n\n\t\t\t\t\t\t\t\t\t\tsetIsReversed(\n\t\t\t\t\t\t\t\t\t\t\t+first_component < +second_component\n\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\tvalue.split('/').reverse().join('/')\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t<span />\n\t\t\t\t\t\t\t\t\t<i className=\"ct-tooltip-top\">Reverse</i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currentTab === 'custom' && (\n\t\t\t\t\t\t\t<div className=\"ct-ratio-custom\">\n\t\t\t\t\t\t\t\t<div className=\"ct-option-input\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tvalue={value.split(':')[0]}\n\t\t\t\t\t\t\t\t\t\tonChange={({\n\t\t\t\t\t\t\t\t\t\t\ttarget: { value: val },\n\t\t\t\t\t\t\t\t\t\t}) => {\n\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\t`${val}:${value.split(':')[1]}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<span>:</span>\n\t\t\t\t\t\t\t\t<div className=\"ct-option-input\">\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tvalue={value.split(':')[1]}\n\t\t\t\t\t\t\t\t\t\tonChange={({\n\t\t\t\t\t\t\t\t\t\t\ttarget: { value: val },\n\t\t\t\t\t\t\t\t\t\t}) => {\n\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\t`${value.split(':')[0]}:${val}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"ct-notification\"\n\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t\t__html: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'Use this online %stool%s for calculating a custom image ratio based on your image size.',\n\t\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t'<a href=\"https://www.digitalrebellion.com/webapps/aspectcalc\" target=\"_blank\">',\n\t\t\t\t\t\t\t\t\t\t\t'</a>'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currentTab === 'original' && (\n\t\t\t\t\t\t\t<div className=\"ct-ratio-original\">\n\t\t\t\t\t\t\t\t<div className=\"ct-notification\">\n\t\t\t\t\t\t\t\t\t{__(\n\t\t\t\t\t\t\t\t\t\t'Images will be displayed using the aspect ratio in which they were uploaded.',\n\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{currentModalTab === 'size' && option['inner-options'] && (\n\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\tonChange={(key, val) => onChangeFor(key, val)}\n\t\t\t\t\t\toptions={option['inner-options']}\n\t\t\t\t\t\tvalue={values}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Fragment>\n\t)\n\n\tif (view === 'inline') {\n\t\treturn inlineRatioView\n\t}\n\n\treturn (\n\t\t<div ref={el} className={cls('ct-ratio-picker-container', {})}>\n\t\t\t<OutsideClickHandler\n\t\t\t\tuseCapture={false}\n\t\t\t\tdisabled={!isPicking}\n\t\t\t\tclassName=\"ct-ratio-preview\"\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tif (!isPicking) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisTransitioning: false,\n\t\t\t\t\t\tisPicking: false,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\twrapperProps={{\n\t\t\t\t\tonClick: (e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\t\tisTransitioning: true,\n\t\t\t\t\t\t\tisPicking: !isPicking,\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}}>\n\t\t\t\t{value.indexOf(':') > -1 && (\n\t\t\t\t\t<span className=\"ct-ratio-key\">\n\t\t\t\t\t\t{__('Custom', 'blocksy')}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\n\t\t\t\t{value.indexOf('/') > -1 && (\n\t\t\t\t\t<span className=\"ct-ratio-key\">\n\t\t\t\t\t\t{__('Predefined', 'blocksy')}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\n\t\t\t\t{value === 'original'\n\t\t\t\t\t? __('Original Ratio', 'blocksy')\n\t\t\t\t\t: value.replace('/', ':')}\n\n\t\t\t\t{preview_width_key && (\n\t\t\t\t\t<span className=\"ct-width-key\">\n\t\t\t\t\t\t{values[preview_width_key]}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</OutsideClickHandler>\n\n\t\t\t<RatioModal\n\t\t\t\tel={el}\n\t\t\t\tvalue={value}\n\t\t\t\tonChange={onChange}\n\t\t\t\toption={option}\n\t\t\t\tisPicking={isPicking}\n\t\t\t\tisTransitioning={isTransitioning}\n\t\t\t\tonPickingChange={(isPicking) => {\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisTransitioning: true,\n\t\t\t\t\t\tisPicking,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tstopTransitioning={() =>\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisPicking,\n\t\t\t\t\t\tisTransitioning: false,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\trenderContent={() => inlineRatioView}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nRatio.ControlEnd = () => (\n\t<div\n\t\tclassName=\"ct-color-modal-wrapper\"\n\t\tonMouseDown={(e) => e.stopPropagation()}\n\t\tonMouseUp={(e) => e.stopPropagation()}\n\t/>\n)\n\nexport default Ratio\n","function t(t){return\"object\"==typeof t&&null!=t&&1===t.nodeType}function e(t,e){return(!e||\"hidden\"!==t)&&\"visible\"!==t&&\"clip\"!==t}function n(t,n){if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){var r=getComputedStyle(t,null);return e(r.overflowY,n)||e(r.overflowX,n)||function(t){var e=function(t){if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}}(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)}(t)}return!1}function r(t,e,n,r,i,o,l,d){return o<t&&l>e||o>t&&l<e?0:o<=t&&d<=n||l>=e&&d>=n?o-t-r:l>e&&d<n||o<t&&d>n?l-e+i:0}export default function(e,i){var o=window,l=i.scrollMode,d=i.block,u=i.inline,h=i.boundary,a=i.skipOverflowHiddenElements,c=\"function\"==typeof h?h:function(t){return t!==h};if(!t(e))throw new TypeError(\"Invalid target\");for(var f=document.scrollingElement||document.documentElement,s=[],p=e;t(p)&&c(p);){if((p=p.parentElement)===f){s.push(p);break}null!=p&&p===document.body&&n(p)&&!n(document.documentElement)||null!=p&&n(p,a)&&s.push(p)}for(var m=o.visualViewport?o.visualViewport.width:innerWidth,g=o.visualViewport?o.visualViewport.height:innerHeight,w=window.scrollX||pageXOffset,v=window.scrollY||pageYOffset,W=e.getBoundingClientRect(),b=W.height,H=W.width,y=W.top,E=W.right,M=W.bottom,V=W.left,x=\"start\"===d||\"nearest\"===d?y:\"end\"===d?M:y+b/2,I=\"center\"===u?V+H/2:\"end\"===u?E:V,C=[],T=0;T<s.length;T++){var k=s[T],B=k.getBoundingClientRect(),D=B.height,O=B.width,R=B.top,X=B.right,Y=B.bottom,L=B.left;if(\"if-needed\"===l&&y>=0&&V>=0&&M<=g&&E<=m&&y>=R&&M<=Y&&V>=L&&E<=X)return C;var S=getComputedStyle(k),j=parseInt(S.borderLeftWidth,10),q=parseInt(S.borderTopWidth,10),z=parseInt(S.borderRightWidth,10),A=parseInt(S.borderBottomWidth,10),F=0,G=0,J=\"offsetWidth\"in k?k.offsetWidth-k.clientWidth-j-z:0,K=\"offsetHeight\"in k?k.offsetHeight-k.clientHeight-q-A:0;if(f===k)F=\"start\"===d?x:\"end\"===d?x-g:\"nearest\"===d?r(v,v+g,g,q,A,v+x,v+x+b,b):x-g/2,G=\"start\"===u?I:\"center\"===u?I-m/2:\"end\"===u?I-m:r(w,w+m,m,j,z,w+I,w+I+H,H),F=Math.max(0,F+v),G=Math.max(0,G+w);else{F=\"start\"===d?x-R-q:\"end\"===d?x-Y+A+K:\"nearest\"===d?r(R,Y,D,q,A+K,x,x+b,b):x-(R+D/2)+K/2,G=\"start\"===u?I-L-j:\"center\"===u?I-(L+O/2)+J/2:\"end\"===u?I-X+z+J:r(L,X,O,j,z+J,I,I+H,H);var N=k.scrollLeft,P=k.scrollTop;x+=P-(F=Math.max(0,Math.min(P+F,k.scrollHeight-D+K))),I+=N-(G=Math.max(0,Math.min(N+G,k.scrollWidth-O+J)))}C.push({el:k,top:F,left:G})}return C}\n//# sourceMappingURL=index.module.js.map\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport { cloneElement, Component, useRef, useEffect, useCallback, useLayoutEffect, useReducer, useMemo } from 'react';\nimport { isForwardRef } from 'react-is';\nimport computeScrollIntoView from 'compute-scroll-into-view';\nimport { __assign } from 'tslib';\n\nvar idCounter = 0;\n/**\n * Accepts a parameter and returns it if it's a function\n * or a noop function if it's not. This allows us to\n * accept a callback, but not worry about it if it's not\n * passed.\n * @param {Function} cb the callback\n * @return {Function} a function\n */\n\nfunction cbToCb(cb) {\n  return typeof cb === 'function' ? cb : noop;\n}\n\nfunction noop() {}\n/**\n * Scroll node into view if necessary\n * @param {HTMLElement} node the element that should scroll into view\n * @param {HTMLElement} menuNode the menu element of the component\n */\n\n\nfunction scrollIntoView(node, menuNode) {\n  if (!node) {\n    return;\n  }\n\n  var actions = computeScrollIntoView(node, {\n    boundary: menuNode,\n    block: 'nearest',\n    scrollMode: 'if-needed'\n  });\n  actions.forEach(function (_ref) {\n    var el = _ref.el,\n        top = _ref.top,\n        left = _ref.left;\n    el.scrollTop = top;\n    el.scrollLeft = left;\n  });\n}\n/**\n * @param {HTMLElement} parent the parent node\n * @param {HTMLElement} child the child node\n * @param {Window} environment The window context where downshift renders.\n * @return {Boolean} whether the parent is the child or the child is in the parent\n */\n\n\nfunction isOrContainsNode(parent, child, environment) {\n  var result = parent === child || child instanceof environment.Node && parent.contains && parent.contains(child);\n  return result;\n}\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n\n\nfunction debounce(fn, time) {\n  var timeoutId;\n\n  function cancel() {\n    if (timeoutId) {\n      clearTimeout(timeoutId);\n    }\n  }\n\n  function wrapper() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    cancel();\n    timeoutId = setTimeout(function () {\n      timeoutId = null;\n      fn.apply(void 0, args);\n    }, time);\n  }\n\n  wrapper.cancel = cancel;\n  return wrapper;\n}\n/**\n * This is intended to be used to compose event handlers.\n * They are executed in order until one of them sets\n * `event.preventDownshiftDefault = true`.\n * @param {...Function} fns the event handler functions\n * @return {Function} the event handler to add to an element\n */\n\n\nfunction callAllEventHandlers() {\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 (event) {\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n\n    return fns.some(function (fn) {\n      if (fn) {\n        fn.apply(void 0, [event].concat(args));\n      }\n\n      return event.preventDownshiftDefault || event.hasOwnProperty('nativeEvent') && event.nativeEvent.preventDownshiftDefault;\n    });\n  };\n}\n\nfunction handleRefs() {\n  for (var _len4 = arguments.length, refs = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n    refs[_key4] = arguments[_key4];\n  }\n\n  return function (node) {\n    refs.forEach(function (ref) {\n      if (typeof ref === 'function') {\n        ref(node);\n      } else if (ref) {\n        ref.current = node;\n      }\n    });\n  };\n}\n/**\n * This generates a unique ID for an instance of Downshift\n * @return {String} the unique ID\n */\n\n\nfunction generateId() {\n  return String(idCounter++);\n}\n/**\n * Resets idCounter to 0. Used for SSR.\n */\n\n\nfunction resetIdCounter() {\n  idCounter = 0;\n}\n/**\n * Default implementation for status message. Only added when menu is open.\n * Will specify if there are results in the list, and if so, how many,\n * and what keys are relevant.\n *\n * @param {Object} param the downshift state and other relevant properties\n * @return {String} the a11y status message\n */\n\n\nfunction getA11yStatusMessage$1(_ref2) {\n  var isOpen = _ref2.isOpen,\n      resultCount = _ref2.resultCount,\n      previousResultCount = _ref2.previousResultCount;\n\n  if (!isOpen) {\n    return '';\n  }\n\n  if (!resultCount) {\n    return 'No results are available.';\n  }\n\n  if (resultCount !== previousResultCount) {\n    return resultCount + \" result\" + (resultCount === 1 ? ' is' : 's are') + \" available, use up and down arrow keys to navigate. Press Enter key to select.\";\n  }\n\n  return '';\n}\n/**\n * Takes an argument and if it's an array, returns the first item in the array\n * otherwise returns the argument\n * @param {*} arg the maybe-array\n * @param {*} defaultValue the value if arg is falsey not defined\n * @return {*} the arg or it's first item\n */\n\n\nfunction unwrapArray(arg, defaultValue) {\n  arg = Array.isArray(arg) ?\n  /* istanbul ignore next (preact) */\n  arg[0] : arg;\n\n  if (!arg && defaultValue) {\n    return defaultValue;\n  } else {\n    return arg;\n  }\n}\n/**\n * @param {Object} element (P)react element\n * @return {Boolean} whether it's a DOM element\n */\n\n\nfunction isDOMElement(element) {\n\n\n  return typeof element.type === 'string';\n}\n/**\n * @param {Object} element (P)react element\n * @return {Object} the props\n */\n\n\nfunction getElementProps(element) {\n\n  return element.props;\n}\n/**\n * Throws a helpful error message for required properties. Useful\n * to be used as a default in destructuring or object params.\n * @param {String} fnName the function name\n * @param {String} propName the prop name\n */\n\n\nfunction requiredProp(fnName, propName) {\n  // eslint-disable-next-line no-console\n  console.error(\"The property \\\"\" + propName + \"\\\" is required in \\\"\" + fnName + \"\\\"\");\n}\n\nvar stateKeys = ['highlightedIndex', 'inputValue', 'isOpen', 'selectedItem', 'type'];\n/**\n * @param {Object} state the state object\n * @return {Object} state that is relevant to downshift\n */\n\nfunction pickState(state) {\n  if (state === void 0) {\n    state = {};\n  }\n\n  var result = {};\n  stateKeys.forEach(function (k) {\n    if (state.hasOwnProperty(k)) {\n      result[k] = state[k];\n    }\n  });\n  return result;\n}\n/**\n * This will perform a shallow merge of the given state object\n * with the state coming from props\n * (for the controlled component scenario)\n * This is used in state updater functions so they're referencing\n * the right state regardless of where it comes from.\n *\n * @param {Object} state The state of the component/hook.\n * @param {Object} props The props that may contain controlled values.\n * @returns {Object} The merged controlled state.\n */\n\n\nfunction getState(state, props) {\n  return Object.keys(state).reduce(function (prevState, key) {\n    prevState[key] = isControlledProp(props, key) ? props[key] : state[key];\n    return prevState;\n  }, {});\n}\n/**\n * This determines whether a prop is a \"controlled prop\" meaning it is\n * state which is controlled by the outside of this component rather\n * than within this component.\n *\n * @param {Object} props The props that may contain controlled values.\n * @param {String} key the key to check\n * @return {Boolean} whether it is a controlled controlled prop\n */\n\n\nfunction isControlledProp(props, key) {\n  return props[key] !== undefined;\n}\n/**\n * Normalizes the 'key' property of a KeyboardEvent in IE/Edge\n * @param {Object} event a keyboardEvent object\n * @return {String} keyboard key\n */\n\n\nfunction normalizeArrowKey(event) {\n  var key = event.key,\n      keyCode = event.keyCode;\n  /* istanbul ignore next (ie) */\n\n  if (keyCode >= 37 && keyCode <= 40 && key.indexOf('Arrow') !== 0) {\n    return \"Arrow\" + key;\n  }\n\n  return key;\n}\n/**\n * Simple check if the value passed is object literal\n * @param {*} obj any things\n * @return {Boolean} whether it's object literal\n */\n\n\nfunction isPlainObject(obj) {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * Returns the new index in the list, in a circular way. If next value is out of bonds from the total,\n * it will wrap to either 0 or itemCount - 1.\n *\n * @param {number} moveAmount Number of positions to move. Negative to move backwards, positive forwards.\n * @param {number} baseIndex The initial position to move from.\n * @param {number} itemCount The total number of items.\n * @param {Function} getItemNodeFromIndex Used to check if item is disabled.\n * @param {boolean} circular Specify if navigation is circular. Default is true.\n * @returns {number} The new index after the move.\n */\n\n\nfunction getNextWrappingIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n  if (circular === void 0) {\n    circular = true;\n  }\n\n  if (itemCount === 0) {\n    return -1;\n  }\n\n  var itemsLastIndex = itemCount - 1;\n\n  if (typeof baseIndex !== 'number' || baseIndex < 0 || baseIndex >= itemCount) {\n    baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n  }\n\n  var newIndex = baseIndex + moveAmount;\n\n  if (newIndex < 0) {\n    newIndex = circular ? itemsLastIndex : 0;\n  } else if (newIndex > itemsLastIndex) {\n    newIndex = circular ? 0 : itemsLastIndex;\n  }\n\n  var nonDisabledNewIndex = getNextNonDisabledIndex(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n\n  if (nonDisabledNewIndex === -1) {\n    return baseIndex >= itemCount ? -1 : baseIndex;\n  }\n\n  return nonDisabledNewIndex;\n}\n/**\n * Returns the next index in the list of an item that is not disabled.\n *\n * @param {number} moveAmount Number of positions to move. Negative to move backwards, positive forwards.\n * @param {number} baseIndex The initial position to move from.\n * @param {number} itemCount The total number of items.\n * @param {Function} getItemNodeFromIndex Used to check if item is disabled.\n * @param {boolean} circular Specify if navigation is circular. Default is true.\n * @returns {number} The new index. Returns baseIndex if item is not disabled. Returns next non-disabled item otherwise. If no non-disabled found it will return -1.\n */\n\n\nfunction getNextNonDisabledIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n  var currentElementNode = getItemNodeFromIndex(baseIndex);\n\n  if (!currentElementNode || !currentElementNode.hasAttribute('disabled')) {\n    return baseIndex;\n  }\n\n  if (moveAmount > 0) {\n    for (var index = baseIndex + 1; index < itemCount; index++) {\n      if (!getItemNodeFromIndex(index).hasAttribute('disabled')) {\n        return index;\n      }\n    }\n  } else {\n    for (var _index = baseIndex - 1; _index >= 0; _index--) {\n      if (!getItemNodeFromIndex(_index).hasAttribute('disabled')) {\n        return _index;\n      }\n    }\n  }\n\n  if (circular) {\n    return moveAmount > 0 ? getNextNonDisabledIndex(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n  }\n\n  return -1;\n}\n/**\n * Checks if event target is within the downshift elements.\n *\n * @param {EventTarget} target Target to check.\n * @param {HTMLElement[]} downshiftElements The elements that form downshift (list, toggle button etc).\n * @param {Window} environment The window context where downshift renders.\n * @param {boolean} checkActiveElement Whether to also check activeElement.\n *\n * @returns {boolean} Whether or not the target is within downshift elements.\n */\n\n\nfunction targetWithinDownshift(target, downshiftElements, environment, checkActiveElement) {\n  if (checkActiveElement === void 0) {\n    checkActiveElement = true;\n  }\n\n  return downshiftElements.some(function (contextNode) {\n    return contextNode && (isOrContainsNode(contextNode, target, environment) || checkActiveElement && isOrContainsNode(contextNode, environment.document.activeElement, environment));\n  });\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar validateControlledUnchanged = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n  validateControlledUnchanged = function validateControlledUnchanged(state, prevProps, nextProps) {\n    var warningDescription = \"This prop should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled Downshift element for the lifetime of the component. More info: https://github.com/downshift-js/downshift#control-props\";\n    Object.keys(state).forEach(function (propKey) {\n      if (prevProps[propKey] !== undefined && nextProps[propKey] === undefined) {\n        // eslint-disable-next-line no-console\n        console.error(\"downshift: A component has changed the controlled prop \\\"\" + propKey + \"\\\" to be uncontrolled. \" + warningDescription);\n      } else if (prevProps[propKey] === undefined && nextProps[propKey] !== undefined) {\n        // eslint-disable-next-line no-console\n        console.error(\"downshift: A component has changed the uncontrolled prop \\\"\" + propKey + \"\\\" to be controlled. \" + warningDescription);\n      }\n    });\n  };\n}\n\nvar cleanupStatus = debounce(function (documentProp) {\n  getStatusDiv(documentProp).textContent = '';\n}, 500);\n/**\n * @param {String} status the status message\n * @param {Object} documentProp document passed by the user.\n */\n\nfunction setStatus(status, documentProp) {\n  var div = getStatusDiv(documentProp);\n\n  if (!status) {\n    return;\n  }\n\n  div.textContent = status;\n  cleanupStatus(documentProp);\n}\n/**\n * Get the status node or create it if it does not already exist.\n * @param {Object} documentProp document passed by the user.\n * @return {HTMLElement} the status node.\n */\n\n\nfunction getStatusDiv(documentProp) {\n  if (documentProp === void 0) {\n    documentProp = document;\n  }\n\n  var statusDiv = documentProp.getElementById('a11y-status-message');\n\n  if (statusDiv) {\n    return statusDiv;\n  }\n\n  statusDiv = documentProp.createElement('div');\n  statusDiv.setAttribute('id', 'a11y-status-message');\n  statusDiv.setAttribute('role', 'status');\n  statusDiv.setAttribute('aria-live', 'polite');\n  statusDiv.setAttribute('aria-relevant', 'additions text');\n  Object.assign(statusDiv.style, {\n    border: '0',\n    clip: 'rect(0 0 0 0)',\n    height: '1px',\n    margin: '-1px',\n    overflow: 'hidden',\n    padding: '0',\n    position: 'absolute',\n    width: '1px'\n  });\n  documentProp.body.appendChild(statusDiv);\n  return statusDiv;\n}\n\nvar unknown = process.env.NODE_ENV !== \"production\" ? '__autocomplete_unknown__' : 0;\nvar mouseUp = process.env.NODE_ENV !== \"production\" ? '__autocomplete_mouseup__' : 1;\nvar itemMouseEnter = process.env.NODE_ENV !== \"production\" ? '__autocomplete_item_mouseenter__' : 2;\nvar keyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_arrow_up__' : 3;\nvar keyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_arrow_down__' : 4;\nvar keyDownEscape = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_escape__' : 5;\nvar keyDownEnter = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_enter__' : 6;\nvar keyDownHome = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_home__' : 7;\nvar keyDownEnd = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_end__' : 8;\nvar clickItem = process.env.NODE_ENV !== \"production\" ? '__autocomplete_click_item__' : 9;\nvar blurInput = process.env.NODE_ENV !== \"production\" ? '__autocomplete_blur_input__' : 10;\nvar changeInput = process.env.NODE_ENV !== \"production\" ? '__autocomplete_change_input__' : 11;\nvar keyDownSpaceButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_keydown_space_button__' : 12;\nvar clickButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_click_button__' : 13;\nvar blurButton = process.env.NODE_ENV !== \"production\" ? '__autocomplete_blur_button__' : 14;\nvar controlledPropUpdatedSelectedItem = process.env.NODE_ENV !== \"production\" ? '__autocomplete_controlled_prop_updated_selected_item__' : 15;\nvar touchEnd = process.env.NODE_ENV !== \"production\" ? '__autocomplete_touchend__' : 16;\n\nvar stateChangeTypes$3 = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  unknown: unknown,\n  mouseUp: mouseUp,\n  itemMouseEnter: itemMouseEnter,\n  keyDownArrowUp: keyDownArrowUp,\n  keyDownArrowDown: keyDownArrowDown,\n  keyDownEscape: keyDownEscape,\n  keyDownEnter: keyDownEnter,\n  keyDownHome: keyDownHome,\n  keyDownEnd: keyDownEnd,\n  clickItem: clickItem,\n  blurInput: blurInput,\n  changeInput: changeInput,\n  keyDownSpaceButton: keyDownSpaceButton,\n  clickButton: clickButton,\n  blurButton: blurButton,\n  controlledPropUpdatedSelectedItem: controlledPropUpdatedSelectedItem,\n  touchEnd: touchEnd\n});\n\nvar _excluded$4 = [\"refKey\", \"ref\"],\n    _excluded2$3 = [\"onClick\", \"onPress\", \"onKeyDown\", \"onKeyUp\", \"onBlur\"],\n    _excluded3$2 = [\"onKeyDown\", \"onBlur\", \"onChange\", \"onInput\", \"onChangeText\"],\n    _excluded4$1 = [\"refKey\", \"ref\"],\n    _excluded5$1 = [\"onMouseMove\", \"onMouseDown\", \"onClick\", \"onPress\", \"index\", \"item\"];\n\nvar Downshift = /*#__PURE__*/function () {\n  var Downshift = /*#__PURE__*/function (_Component) {\n    _inheritsLoose(Downshift, _Component);\n\n    function Downshift(_props) {\n      var _this;\n\n      _this = _Component.call(this, _props) || this; // fancy destructuring + defaults + aliases\n      // this basically says each value of state should either be set to\n      // the initial value or the default value if the initial value is not provided\n\n      _this.id = _this.props.id || \"downshift-\" + generateId();\n      _this.menuId = _this.props.menuId || _this.id + \"-menu\";\n      _this.labelId = _this.props.labelId || _this.id + \"-label\";\n      _this.inputId = _this.props.inputId || _this.id + \"-input\";\n\n      _this.getItemId = _this.props.getItemId || function (index) {\n        return _this.id + \"-item-\" + index;\n      };\n\n      _this.input = null;\n      _this.items = [];\n      _this.itemCount = null;\n      _this.previousResultCount = 0;\n      _this.timeoutIds = [];\n\n      _this.internalSetTimeout = function (fn, time) {\n        var id = setTimeout(function () {\n          _this.timeoutIds = _this.timeoutIds.filter(function (i) {\n            return i !== id;\n          });\n          fn();\n        }, time);\n\n        _this.timeoutIds.push(id);\n      };\n\n      _this.setItemCount = function (count) {\n        _this.itemCount = count;\n      };\n\n      _this.unsetItemCount = function () {\n        _this.itemCount = null;\n      };\n\n      _this.setHighlightedIndex = function (highlightedIndex, otherStateToSet) {\n        if (highlightedIndex === void 0) {\n          highlightedIndex = _this.props.defaultHighlightedIndex;\n        }\n\n        if (otherStateToSet === void 0) {\n          otherStateToSet = {};\n        }\n\n        otherStateToSet = pickState(otherStateToSet);\n\n        _this.internalSetState(_extends({\n          highlightedIndex: highlightedIndex\n        }, otherStateToSet));\n      };\n\n      _this.clearSelection = function (cb) {\n        _this.internalSetState({\n          selectedItem: null,\n          inputValue: '',\n          highlightedIndex: _this.props.defaultHighlightedIndex,\n          isOpen: _this.props.defaultIsOpen\n        }, cb);\n      };\n\n      _this.selectItem = function (item, otherStateToSet, cb) {\n        otherStateToSet = pickState(otherStateToSet);\n\n        _this.internalSetState(_extends({\n          isOpen: _this.props.defaultIsOpen,\n          highlightedIndex: _this.props.defaultHighlightedIndex,\n          selectedItem: item,\n          inputValue: _this.props.itemToString(item)\n        }, otherStateToSet), cb);\n      };\n\n      _this.selectItemAtIndex = function (itemIndex, otherStateToSet, cb) {\n        var item = _this.items[itemIndex];\n\n        if (item == null) {\n          return;\n        }\n\n        _this.selectItem(item, otherStateToSet, cb);\n      };\n\n      _this.selectHighlightedItem = function (otherStateToSet, cb) {\n        return _this.selectItemAtIndex(_this.getState().highlightedIndex, otherStateToSet, cb);\n      };\n\n      _this.internalSetState = function (stateToSet, cb) {\n        var isItemSelected, onChangeArg;\n        var onStateChangeArg = {};\n        var isStateToSetFunction = typeof stateToSet === 'function'; // we want to call `onInputValueChange` before the `setState` call\n        // so someone controlling the `inputValue` state gets notified of\n        // the input change as soon as possible. This avoids issues with\n        // preserving the cursor position.\n        // See https://github.com/downshift-js/downshift/issues/217 for more info.\n\n        if (!isStateToSetFunction && stateToSet.hasOwnProperty('inputValue')) {\n          _this.props.onInputValueChange(stateToSet.inputValue, _extends({}, _this.getStateAndHelpers(), stateToSet));\n        }\n\n        return _this.setState(function (state) {\n          state = _this.getState(state);\n          var newStateToSet = isStateToSetFunction ? stateToSet(state) : stateToSet; // Your own function that could modify the state that will be set.\n\n          newStateToSet = _this.props.stateReducer(state, newStateToSet); // checks if an item is selected, regardless of if it's different from\n          // what was selected before\n          // used to determine if onSelect and onChange callbacks should be called\n\n          isItemSelected = newStateToSet.hasOwnProperty('selectedItem'); // this keeps track of the object we want to call with setState\n\n          var nextState = {}; // this is just used to tell whether the state changed\n\n          var nextFullState = {}; // we need to call on change if the outside world is controlling any of our state\n          // and we're trying to update that state. OR if the selection has changed and we're\n          // trying to update the selection\n\n          if (isItemSelected && newStateToSet.selectedItem !== state.selectedItem) {\n            onChangeArg = newStateToSet.selectedItem;\n          }\n\n          newStateToSet.type = newStateToSet.type || unknown;\n          Object.keys(newStateToSet).forEach(function (key) {\n            // onStateChangeArg should only have the state that is\n            // actually changing\n            if (state[key] !== newStateToSet[key]) {\n              onStateChangeArg[key] = newStateToSet[key];\n            } // the type is useful for the onStateChangeArg\n            // but we don't actually want to set it in internal state.\n            // this is an undocumented feature for now... Not all internalSetState\n            // calls support it and I'm not certain we want them to yet.\n            // But it enables users controlling the isOpen state to know when\n            // the isOpen state changes due to mouseup events which is quite handy.\n\n\n            if (key === 'type') {\n              return;\n            }\n\n            nextFullState[key] = newStateToSet[key]; // if it's coming from props, then we don't care to set it internally\n\n            if (!isControlledProp(_this.props, key)) {\n              nextState[key] = newStateToSet[key];\n            }\n          }); // if stateToSet is a function, then we weren't able to call onInputValueChange\n          // earlier, so we'll call it now that we know what the inputValue state will be.\n\n          if (isStateToSetFunction && newStateToSet.hasOwnProperty('inputValue')) {\n            _this.props.onInputValueChange(newStateToSet.inputValue, _extends({}, _this.getStateAndHelpers(), newStateToSet));\n          }\n\n          return nextState;\n        }, function () {\n          // call the provided callback if it's a function\n          cbToCb(cb)(); // only call the onStateChange and onChange callbacks if\n          // we have relevant information to pass them.\n\n          var hasMoreStateThanType = Object.keys(onStateChangeArg).length > 1;\n\n          if (hasMoreStateThanType) {\n            _this.props.onStateChange(onStateChangeArg, _this.getStateAndHelpers());\n          }\n\n          if (isItemSelected) {\n            _this.props.onSelect(stateToSet.selectedItem, _this.getStateAndHelpers());\n          }\n\n          if (onChangeArg !== undefined) {\n            _this.props.onChange(onChangeArg, _this.getStateAndHelpers());\n          } // this is currently undocumented and therefore subject to change\n          // We'll try to not break it, but just be warned.\n\n\n          _this.props.onUserAction(onStateChangeArg, _this.getStateAndHelpers());\n        });\n      };\n\n      _this.rootRef = function (node) {\n        return _this._rootNode = node;\n      };\n\n      _this.getRootProps = function (_temp, _temp2) {\n        var _extends2;\n\n        var _ref = _temp === void 0 ? {} : _temp,\n            _ref$refKey = _ref.refKey,\n            refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n            ref = _ref.ref,\n            rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n\n        var _ref2 = _temp2 === void 0 ? {} : _temp2,\n            _ref2$suppressRefErro = _ref2.suppressRefError,\n            suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n        // this is used in the render to know whether the user has called getRootProps.\n        // It uses that to know whether to apply the props automatically\n        _this.getRootProps.called = true;\n        _this.getRootProps.refKey = refKey;\n        _this.getRootProps.suppressRefError = suppressRefError;\n\n        var _this$getState = _this.getState(),\n            isOpen = _this$getState.isOpen;\n\n        return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, _this.rootRef), _extends2.role = 'combobox', _extends2['aria-expanded'] = isOpen, _extends2['aria-haspopup'] = 'listbox', _extends2['aria-owns'] = isOpen ? _this.menuId : null, _extends2['aria-labelledby'] = _this.labelId, _extends2), rest);\n      };\n\n      _this.keyDownHandlers = {\n        ArrowDown: function ArrowDown(event) {\n          var _this2 = this;\n\n          event.preventDefault();\n\n          if (this.getState().isOpen) {\n            var amount = event.shiftKey ? 5 : 1;\n            this.moveHighlightedIndex(amount, {\n              type: keyDownArrowDown\n            });\n          } else {\n            this.internalSetState({\n              isOpen: true,\n              type: keyDownArrowDown\n            }, function () {\n              var itemCount = _this2.getItemCount();\n\n              if (itemCount > 0) {\n                var _this2$getState = _this2.getState(),\n                    highlightedIndex = _this2$getState.highlightedIndex;\n\n                var nextHighlightedIndex = getNextWrappingIndex(1, highlightedIndex, itemCount, function (index) {\n                  return _this2.getItemNodeFromIndex(index);\n                });\n\n                _this2.setHighlightedIndex(nextHighlightedIndex, {\n                  type: keyDownArrowDown\n                });\n              }\n            });\n          }\n        },\n        ArrowUp: function ArrowUp(event) {\n          var _this3 = this;\n\n          event.preventDefault();\n\n          if (this.getState().isOpen) {\n            var amount = event.shiftKey ? -5 : -1;\n            this.moveHighlightedIndex(amount, {\n              type: keyDownArrowUp\n            });\n          } else {\n            this.internalSetState({\n              isOpen: true,\n              type: keyDownArrowUp\n            }, function () {\n              var itemCount = _this3.getItemCount();\n\n              if (itemCount > 0) {\n                var _this3$getState = _this3.getState(),\n                    highlightedIndex = _this3$getState.highlightedIndex;\n\n                var nextHighlightedIndex = getNextWrappingIndex(-1, highlightedIndex, itemCount, function (index) {\n                  return _this3.getItemNodeFromIndex(index);\n                });\n\n                _this3.setHighlightedIndex(nextHighlightedIndex, {\n                  type: keyDownArrowUp\n                });\n              }\n            });\n          }\n        },\n        Enter: function Enter(event) {\n          if (event.which === 229) {\n            return;\n          }\n\n          var _this$getState2 = this.getState(),\n              isOpen = _this$getState2.isOpen,\n              highlightedIndex = _this$getState2.highlightedIndex;\n\n          if (isOpen && highlightedIndex != null) {\n            event.preventDefault();\n            var item = this.items[highlightedIndex];\n            var itemNode = this.getItemNodeFromIndex(highlightedIndex);\n\n            if (item == null || itemNode && itemNode.hasAttribute('disabled')) {\n              return;\n            }\n\n            this.selectHighlightedItem({\n              type: keyDownEnter\n            });\n          }\n        },\n        Escape: function Escape(event) {\n          event.preventDefault();\n          this.reset(_extends({\n            type: keyDownEscape\n          }, !this.state.isOpen && {\n            selectedItem: null,\n            inputValue: ''\n          }));\n        }\n      };\n      _this.buttonKeyDownHandlers = _extends({}, _this.keyDownHandlers, {\n        ' ': function _(event) {\n          event.preventDefault();\n          this.toggleMenu({\n            type: keyDownSpaceButton\n          });\n        }\n      });\n      _this.inputKeyDownHandlers = _extends({}, _this.keyDownHandlers, {\n        Home: function Home(event) {\n          var _this4 = this;\n\n          var _this$getState3 = this.getState(),\n              isOpen = _this$getState3.isOpen;\n\n          if (!isOpen) {\n            return;\n          }\n\n          event.preventDefault();\n          var itemCount = this.getItemCount();\n\n          if (itemCount <= 0 || !isOpen) {\n            return;\n          } // get next non-disabled starting downwards from 0 if that's disabled.\n\n\n          var newHighlightedIndex = getNextNonDisabledIndex(1, 0, itemCount, function (index) {\n            return _this4.getItemNodeFromIndex(index);\n          }, false);\n          this.setHighlightedIndex(newHighlightedIndex, {\n            type: keyDownHome\n          });\n        },\n        End: function End(event) {\n          var _this5 = this;\n\n          var _this$getState4 = this.getState(),\n              isOpen = _this$getState4.isOpen;\n\n          if (!isOpen) {\n            return;\n          }\n\n          event.preventDefault();\n          var itemCount = this.getItemCount();\n\n          if (itemCount <= 0 || !isOpen) {\n            return;\n          } // get next non-disabled starting upwards from last index if that's disabled.\n\n\n          var newHighlightedIndex = getNextNonDisabledIndex(-1, itemCount - 1, itemCount, function (index) {\n            return _this5.getItemNodeFromIndex(index);\n          }, false);\n          this.setHighlightedIndex(newHighlightedIndex, {\n            type: keyDownEnd\n          });\n        }\n      });\n\n      _this.getToggleButtonProps = function (_temp3) {\n        var _ref3 = _temp3 === void 0 ? {} : _temp3,\n            onClick = _ref3.onClick;\n            _ref3.onPress;\n            var onKeyDown = _ref3.onKeyDown,\n            onKeyUp = _ref3.onKeyUp,\n            onBlur = _ref3.onBlur,\n            rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$3);\n\n        var _this$getState5 = _this.getState(),\n            isOpen = _this$getState5.isOpen;\n\n        var enabledEventHandlers = {\n          onClick: callAllEventHandlers(onClick, _this.buttonHandleClick),\n          onKeyDown: callAllEventHandlers(onKeyDown, _this.buttonHandleKeyDown),\n          onKeyUp: callAllEventHandlers(onKeyUp, _this.buttonHandleKeyUp),\n          onBlur: callAllEventHandlers(onBlur, _this.buttonHandleBlur)\n        };\n        var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n        return _extends({\n          type: 'button',\n          role: 'button',\n          'aria-label': isOpen ? 'close menu' : 'open menu',\n          'aria-haspopup': true,\n          'data-toggle': true\n        }, eventHandlers, rest);\n      };\n\n      _this.buttonHandleKeyUp = function (event) {\n        // Prevent click event from emitting in Firefox\n        event.preventDefault();\n      };\n\n      _this.buttonHandleKeyDown = function (event) {\n        var key = normalizeArrowKey(event);\n\n        if (_this.buttonKeyDownHandlers[key]) {\n          _this.buttonKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n        }\n      };\n\n      _this.buttonHandleClick = function (event) {\n        event.preventDefault(); // handle odd case for Safari and Firefox which\n        // don't give the button the focus properly.\n\n        /* istanbul ignore if (can't reasonably test this) */\n\n        if (_this.props.environment.document.activeElement === _this.props.environment.document.body) {\n          event.target.focus();\n        } // to simplify testing components that use downshift, we'll not wrap this in a setTimeout\n        // if the NODE_ENV is test. With the proper build system, this should be dead code eliminated\n        // when building for production and should therefore have no impact on production code.\n\n\n        if (process.env.NODE_ENV === 'test') {\n          _this.toggleMenu({\n            type: clickButton\n          });\n        } else {\n          // Ensure that toggle of menu occurs after the potential blur event in iOS\n          _this.internalSetTimeout(function () {\n            return _this.toggleMenu({\n              type: clickButton\n            });\n          });\n        }\n      };\n\n      _this.buttonHandleBlur = function (event) {\n        var blurTarget = event.target; // Save blur target for comparison with activeElement later\n        // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not body element\n\n        _this.internalSetTimeout(function () {\n          if (!_this.isMouseDown && (_this.props.environment.document.activeElement == null || _this.props.environment.document.activeElement.id !== _this.inputId) && _this.props.environment.document.activeElement !== blurTarget // Do nothing if we refocus the same element again (to solve issue in Safari on iOS)\n          ) {\n            _this.reset({\n              type: blurButton\n            });\n          }\n        });\n      };\n\n      _this.getLabelProps = function (props) {\n        return _extends({\n          htmlFor: _this.inputId,\n          id: _this.labelId\n        }, props);\n      };\n\n      _this.getInputProps = function (_temp4) {\n        var _ref4 = _temp4 === void 0 ? {} : _temp4,\n            onKeyDown = _ref4.onKeyDown,\n            onBlur = _ref4.onBlur,\n            onChange = _ref4.onChange,\n            onInput = _ref4.onInput;\n            _ref4.onChangeText;\n            var rest = _objectWithoutPropertiesLoose(_ref4, _excluded3$2);\n\n        var onChangeKey;\n        var eventHandlers = {};\n        /* istanbul ignore next (preact) */\n\n        {\n          onChangeKey = 'onChange';\n        }\n\n        var _this$getState6 = _this.getState(),\n            inputValue = _this$getState6.inputValue,\n            isOpen = _this$getState6.isOpen,\n            highlightedIndex = _this$getState6.highlightedIndex;\n\n        if (!rest.disabled) {\n          var _eventHandlers;\n\n          eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, _this.inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, _this.inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, _this.inputHandleBlur), _eventHandlers);\n        }\n\n        return _extends({\n          'aria-autocomplete': 'list',\n          'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,\n          'aria-controls': isOpen ? _this.menuId : null,\n          'aria-labelledby': _this.labelId,\n          // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion\n          // revert back since autocomplete=\"nope\" is ignored on latest Chrome and Opera\n          autoComplete: 'off',\n          value: inputValue,\n          id: _this.inputId\n        }, eventHandlers, rest);\n      };\n\n      _this.inputHandleKeyDown = function (event) {\n        var key = normalizeArrowKey(event);\n\n        if (key && _this.inputKeyDownHandlers[key]) {\n          _this.inputKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n        }\n      };\n\n      _this.inputHandleChange = function (event) {\n        _this.internalSetState({\n          type: changeInput,\n          isOpen: true,\n          inputValue: event.target.value,\n          highlightedIndex: _this.props.defaultHighlightedIndex\n        });\n      };\n\n      _this.inputHandleBlur = function () {\n        // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not the body element\n        _this.internalSetTimeout(function () {\n          var downshiftButtonIsActive = _this.props.environment.document && !!_this.props.environment.document.activeElement && !!_this.props.environment.document.activeElement.dataset && _this.props.environment.document.activeElement.dataset.toggle && _this._rootNode && _this._rootNode.contains(_this.props.environment.document.activeElement);\n\n          if (!_this.isMouseDown && !downshiftButtonIsActive) {\n            _this.reset({\n              type: blurInput\n            });\n          }\n        });\n      };\n\n      _this.menuRef = function (node) {\n        _this._menuNode = node;\n      };\n\n      _this.getMenuProps = function (_temp5, _temp6) {\n        var _extends3;\n\n        var _ref5 = _temp5 === void 0 ? {} : _temp5,\n            _ref5$refKey = _ref5.refKey,\n            refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n            ref = _ref5.ref,\n            props = _objectWithoutPropertiesLoose(_ref5, _excluded4$1);\n\n        var _ref6 = _temp6 === void 0 ? {} : _temp6,\n            _ref6$suppressRefErro = _ref6.suppressRefError,\n            suppressRefError = _ref6$suppressRefErro === void 0 ? false : _ref6$suppressRefErro;\n\n        _this.getMenuProps.called = true;\n        _this.getMenuProps.refKey = refKey;\n        _this.getMenuProps.suppressRefError = suppressRefError;\n        return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, _this.menuRef), _extends3.role = 'listbox', _extends3['aria-labelledby'] = props && props['aria-label'] ? null : _this.labelId, _extends3.id = _this.menuId, _extends3), props);\n      };\n\n      _this.getItemProps = function (_temp7) {\n        var _enabledEventHandlers;\n\n        var _ref7 = _temp7 === void 0 ? {} : _temp7,\n            onMouseMove = _ref7.onMouseMove,\n            onMouseDown = _ref7.onMouseDown,\n            onClick = _ref7.onClick;\n            _ref7.onPress;\n            var index = _ref7.index,\n            _ref7$item = _ref7.item,\n            item = _ref7$item === void 0 ? process.env.NODE_ENV === 'production' ?\n        /* istanbul ignore next */\n        undefined : requiredProp('getItemProps', 'item') : _ref7$item,\n            rest = _objectWithoutPropertiesLoose(_ref7, _excluded5$1);\n\n        if (index === undefined) {\n          _this.items.push(item);\n\n          index = _this.items.indexOf(item);\n        } else {\n          _this.items[index] = item;\n        }\n\n        var onSelectKey = 'onClick';\n        var customClickHandler = onClick;\n        var enabledEventHandlers = (_enabledEventHandlers = {\n          // onMouseMove is used over onMouseEnter here. onMouseMove\n          // is only triggered on actual mouse movement while onMouseEnter\n          // can fire on DOM changes, interrupting keyboard navigation\n          onMouseMove: callAllEventHandlers(onMouseMove, function () {\n            if (index === _this.getState().highlightedIndex) {\n              return;\n            }\n\n            _this.setHighlightedIndex(index, {\n              type: itemMouseEnter\n            }); // We never want to manually scroll when changing state based\n            // on `onMouseMove` because we will be moving the element out\n            // from under the user which is currently scrolling/moving the\n            // cursor\n\n\n            _this.avoidScrolling = true;\n\n            _this.internalSetTimeout(function () {\n              return _this.avoidScrolling = false;\n            }, 250);\n          }),\n          onMouseDown: callAllEventHandlers(onMouseDown, function (event) {\n            // This prevents the activeElement from being changed\n            // to the item so it can remain with the current activeElement\n            // which is a more common use case.\n            event.preventDefault();\n          })\n        }, _enabledEventHandlers[onSelectKey] = callAllEventHandlers(customClickHandler, function () {\n          _this.selectItemAtIndex(index, {\n            type: clickItem\n          });\n        }), _enabledEventHandlers); // Passing down the onMouseDown handler to prevent redirect\n        // of the activeElement if clicking on disabled items\n\n        var eventHandlers = rest.disabled ? {\n          onMouseDown: enabledEventHandlers.onMouseDown\n        } : enabledEventHandlers;\n        return _extends({\n          id: _this.getItemId(index),\n          role: 'option',\n          'aria-selected': _this.getState().highlightedIndex === index\n        }, eventHandlers, rest);\n      };\n\n      _this.clearItems = function () {\n        _this.items = [];\n      };\n\n      _this.reset = function (otherStateToSet, cb) {\n        if (otherStateToSet === void 0) {\n          otherStateToSet = {};\n        }\n\n        otherStateToSet = pickState(otherStateToSet);\n\n        _this.internalSetState(function (_ref8) {\n          var selectedItem = _ref8.selectedItem;\n          return _extends({\n            isOpen: _this.props.defaultIsOpen,\n            highlightedIndex: _this.props.defaultHighlightedIndex,\n            inputValue: _this.props.itemToString(selectedItem)\n          }, otherStateToSet);\n        }, cb);\n      };\n\n      _this.toggleMenu = function (otherStateToSet, cb) {\n        if (otherStateToSet === void 0) {\n          otherStateToSet = {};\n        }\n\n        otherStateToSet = pickState(otherStateToSet);\n\n        _this.internalSetState(function (_ref9) {\n          var isOpen = _ref9.isOpen;\n          return _extends({\n            isOpen: !isOpen\n          }, isOpen && {\n            highlightedIndex: _this.props.defaultHighlightedIndex\n          }, otherStateToSet);\n        }, function () {\n          var _this$getState7 = _this.getState(),\n              isOpen = _this$getState7.isOpen,\n              highlightedIndex = _this$getState7.highlightedIndex;\n\n          if (isOpen) {\n            if (_this.getItemCount() > 0 && typeof highlightedIndex === 'number') {\n              _this.setHighlightedIndex(highlightedIndex, otherStateToSet);\n            }\n          }\n\n          cbToCb(cb)();\n        });\n      };\n\n      _this.openMenu = function (cb) {\n        _this.internalSetState({\n          isOpen: true\n        }, cb);\n      };\n\n      _this.closeMenu = function (cb) {\n        _this.internalSetState({\n          isOpen: false\n        }, cb);\n      };\n\n      _this.updateStatus = debounce(function () {\n        var state = _this.getState();\n\n        var item = _this.items[state.highlightedIndex];\n\n        var resultCount = _this.getItemCount();\n\n        var status = _this.props.getA11yStatusMessage(_extends({\n          itemToString: _this.props.itemToString,\n          previousResultCount: _this.previousResultCount,\n          resultCount: resultCount,\n          highlightedItem: item\n        }, state));\n\n        _this.previousResultCount = resultCount;\n        setStatus(status, _this.props.environment.document);\n      }, 200);\n\n      var _this$props = _this.props,\n          defaultHighlightedIndex = _this$props.defaultHighlightedIndex,\n          _this$props$initialHi = _this$props.initialHighlightedIndex,\n          _highlightedIndex = _this$props$initialHi === void 0 ? defaultHighlightedIndex : _this$props$initialHi,\n          defaultIsOpen = _this$props.defaultIsOpen,\n          _this$props$initialIs = _this$props.initialIsOpen,\n          _isOpen = _this$props$initialIs === void 0 ? defaultIsOpen : _this$props$initialIs,\n          _this$props$initialIn = _this$props.initialInputValue,\n          _inputValue = _this$props$initialIn === void 0 ? '' : _this$props$initialIn,\n          _this$props$initialSe = _this$props.initialSelectedItem,\n          _selectedItem = _this$props$initialSe === void 0 ? null : _this$props$initialSe;\n\n      var _state = _this.getState({\n        highlightedIndex: _highlightedIndex,\n        isOpen: _isOpen,\n        inputValue: _inputValue,\n        selectedItem: _selectedItem\n      });\n\n      if (_state.selectedItem != null && _this.props.initialInputValue === undefined) {\n        _state.inputValue = _this.props.itemToString(_state.selectedItem);\n      }\n\n      _this.state = _state;\n      return _this;\n    }\n\n    var _proto = Downshift.prototype;\n\n    /**\n     * Clear all running timeouts\n     */\n    _proto.internalClearTimeouts = function internalClearTimeouts() {\n      this.timeoutIds.forEach(function (id) {\n        clearTimeout(id);\n      });\n      this.timeoutIds = [];\n    }\n    /**\n     * Gets the state based on internal state or props\n     * If a state value is passed via props, then that\n     * is the value given, otherwise it's retrieved from\n     * stateToMerge\n     *\n     * @param {Object} stateToMerge defaults to this.state\n     * @return {Object} the state\n     */\n    ;\n\n    _proto.getState = function getState$1(stateToMerge) {\n      if (stateToMerge === void 0) {\n        stateToMerge = this.state;\n      }\n\n      return getState(stateToMerge, this.props);\n    };\n\n    _proto.getItemCount = function getItemCount() {\n      // things read better this way. They're in priority order:\n      // 1. `this.itemCount`\n      // 2. `this.props.itemCount`\n      // 3. `this.items.length`\n      var itemCount = this.items.length;\n\n      if (this.itemCount != null) {\n        itemCount = this.itemCount;\n      } else if (this.props.itemCount !== undefined) {\n        itemCount = this.props.itemCount;\n      }\n\n      return itemCount;\n    };\n\n    _proto.getItemNodeFromIndex = function getItemNodeFromIndex(index) {\n      return this.props.environment.document.getElementById(this.getItemId(index));\n    };\n\n    _proto.scrollHighlightedItemIntoView = function scrollHighlightedItemIntoView() {\n      /* istanbul ignore else (react-native) */\n      {\n        var node = this.getItemNodeFromIndex(this.getState().highlightedIndex);\n        this.props.scrollIntoView(node, this._menuNode);\n      }\n    };\n\n    _proto.moveHighlightedIndex = function moveHighlightedIndex(amount, otherStateToSet) {\n      var _this6 = this;\n\n      var itemCount = this.getItemCount();\n\n      var _this$getState8 = this.getState(),\n          highlightedIndex = _this$getState8.highlightedIndex;\n\n      if (itemCount > 0) {\n        var nextHighlightedIndex = getNextWrappingIndex(amount, highlightedIndex, itemCount, function (index) {\n          return _this6.getItemNodeFromIndex(index);\n        });\n        this.setHighlightedIndex(nextHighlightedIndex, otherStateToSet);\n      }\n    };\n\n    _proto.getStateAndHelpers = function getStateAndHelpers() {\n      var _this$getState9 = this.getState(),\n          highlightedIndex = _this$getState9.highlightedIndex,\n          inputValue = _this$getState9.inputValue,\n          selectedItem = _this$getState9.selectedItem,\n          isOpen = _this$getState9.isOpen;\n\n      var itemToString = this.props.itemToString;\n      var id = this.id;\n      var getRootProps = this.getRootProps,\n          getToggleButtonProps = this.getToggleButtonProps,\n          getLabelProps = this.getLabelProps,\n          getMenuProps = this.getMenuProps,\n          getInputProps = this.getInputProps,\n          getItemProps = this.getItemProps,\n          openMenu = this.openMenu,\n          closeMenu = this.closeMenu,\n          toggleMenu = this.toggleMenu,\n          selectItem = this.selectItem,\n          selectItemAtIndex = this.selectItemAtIndex,\n          selectHighlightedItem = this.selectHighlightedItem,\n          setHighlightedIndex = this.setHighlightedIndex,\n          clearSelection = this.clearSelection,\n          clearItems = this.clearItems,\n          reset = this.reset,\n          setItemCount = this.setItemCount,\n          unsetItemCount = this.unsetItemCount,\n          setState = this.internalSetState;\n      return {\n        // prop getters\n        getRootProps: getRootProps,\n        getToggleButtonProps: getToggleButtonProps,\n        getLabelProps: getLabelProps,\n        getMenuProps: getMenuProps,\n        getInputProps: getInputProps,\n        getItemProps: getItemProps,\n        // actions\n        reset: reset,\n        openMenu: openMenu,\n        closeMenu: closeMenu,\n        toggleMenu: toggleMenu,\n        selectItem: selectItem,\n        selectItemAtIndex: selectItemAtIndex,\n        selectHighlightedItem: selectHighlightedItem,\n        setHighlightedIndex: setHighlightedIndex,\n        clearSelection: clearSelection,\n        clearItems: clearItems,\n        setItemCount: setItemCount,\n        unsetItemCount: unsetItemCount,\n        setState: setState,\n        // props\n        itemToString: itemToString,\n        // derived\n        id: id,\n        // state\n        highlightedIndex: highlightedIndex,\n        inputValue: inputValue,\n        isOpen: isOpen,\n        selectedItem: selectedItem\n      };\n    } //////////////////////////// ROOT\n    ;\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this7 = this;\n\n      /* istanbul ignore if (react-native) */\n      if (process.env.NODE_ENV !== 'production' && !false && this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n        validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n      }\n      /* istanbul ignore if (react-native) */\n\n\n      {\n        // this.isMouseDown helps us track whether the mouse is currently held down.\n        // This is useful when the user clicks on an item in the list, but holds the mouse\n        // down long enough for the list to disappear (because the blur event fires on the input)\n        // this.isMouseDown is used in the blur handler on the input to determine whether the blur event should\n        // trigger hiding the menu.\n        var onMouseDown = function onMouseDown() {\n          _this7.isMouseDown = true;\n        };\n\n        var onMouseUp = function onMouseUp(event) {\n          _this7.isMouseDown = false; // if the target element or the activeElement is within a downshift node\n          // then we don't want to reset downshift\n\n          var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment);\n\n          if (!contextWithinDownshift && _this7.getState().isOpen) {\n            _this7.reset({\n              type: mouseUp\n            }, function () {\n              return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n            });\n          }\n        }; // Touching an element in iOS gives focus and hover states, but touching out of\n        // the element will remove hover, and persist the focus state, resulting in the\n        // blur event not being triggered.\n        // this.isTouchMove helps us track whether the user is tapping or swiping on a touch screen.\n        // If the user taps outside of Downshift, the component should be reset,\n        // but not if the user is swiping\n\n\n        var onTouchStart = function onTouchStart() {\n          _this7.isTouchMove = false;\n        };\n\n        var onTouchMove = function onTouchMove() {\n          _this7.isTouchMove = true;\n        };\n\n        var onTouchEnd = function onTouchEnd(event) {\n          var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment, false);\n\n          if (!_this7.isTouchMove && !contextWithinDownshift && _this7.getState().isOpen) {\n            _this7.reset({\n              type: touchEnd\n            }, function () {\n              return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n            });\n          }\n        };\n\n        var environment = this.props.environment;\n        environment.addEventListener('mousedown', onMouseDown);\n        environment.addEventListener('mouseup', onMouseUp);\n        environment.addEventListener('touchstart', onTouchStart);\n        environment.addEventListener('touchmove', onTouchMove);\n        environment.addEventListener('touchend', onTouchEnd);\n\n        this.cleanup = function () {\n          _this7.internalClearTimeouts();\n\n          _this7.updateStatus.cancel();\n\n          environment.removeEventListener('mousedown', onMouseDown);\n          environment.removeEventListener('mouseup', onMouseUp);\n          environment.removeEventListener('touchstart', onTouchStart);\n          environment.removeEventListener('touchmove', onTouchMove);\n          environment.removeEventListener('touchend', onTouchEnd);\n        };\n      }\n    };\n\n    _proto.shouldScroll = function shouldScroll(prevState, prevProps) {\n      var _ref10 = this.props.highlightedIndex === undefined ? this.getState() : this.props,\n          currentHighlightedIndex = _ref10.highlightedIndex;\n\n      var _ref11 = prevProps.highlightedIndex === undefined ? prevState : prevProps,\n          prevHighlightedIndex = _ref11.highlightedIndex;\n\n      var scrollWhenOpen = currentHighlightedIndex && this.getState().isOpen && !prevState.isOpen;\n      var scrollWhenNavigating = currentHighlightedIndex !== prevHighlightedIndex;\n      return scrollWhenOpen || scrollWhenNavigating;\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateControlledUnchanged(this.state, prevProps, this.props);\n        /* istanbul ignore if (react-native) */\n\n        if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n          validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n        }\n      }\n\n      if (isControlledProp(this.props, 'selectedItem') && this.props.selectedItemChanged(prevProps.selectedItem, this.props.selectedItem)) {\n        this.internalSetState({\n          type: controlledPropUpdatedSelectedItem,\n          inputValue: this.props.itemToString(this.props.selectedItem)\n        });\n      }\n\n      if (!this.avoidScrolling && this.shouldScroll(prevState, prevProps)) {\n        this.scrollHighlightedItemIntoView();\n      }\n      /* istanbul ignore else (react-native) */\n\n\n      {\n        this.updateStatus();\n      }\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.cleanup(); // avoids memory leak\n    };\n\n    _proto.render = function render() {\n      var children = unwrapArray(this.props.children, noop); // because the items are rerendered every time we call the children\n      // we clear this out each render and it will be populated again as\n      // getItemProps is called.\n\n      this.clearItems(); // we reset this so we know whether the user calls getRootProps during\n      // this render. If they do then we don't need to do anything,\n      // if they don't then we need to clone the element they return and\n      // apply the props for them.\n\n      this.getRootProps.called = false;\n      this.getRootProps.refKey = undefined;\n      this.getRootProps.suppressRefError = undefined; // we do something similar for getMenuProps\n\n      this.getMenuProps.called = false;\n      this.getMenuProps.refKey = undefined;\n      this.getMenuProps.suppressRefError = undefined; // we do something similar for getLabelProps\n\n      this.getLabelProps.called = false; // and something similar for getInputProps\n\n      this.getInputProps.called = false;\n      var element = unwrapArray(children(this.getStateAndHelpers()));\n\n      if (!element) {\n        return null;\n      }\n\n      if (this.getRootProps.called || this.props.suppressRefError) {\n        if (process.env.NODE_ENV !== 'production' && !this.getRootProps.suppressRefError && !this.props.suppressRefError) {\n          validateGetRootPropsCalledCorrectly(element, this.getRootProps);\n        }\n\n        return element;\n      } else if (isDOMElement(element)) {\n        // they didn't apply the root props, but we can clone\n        // this and apply the props ourselves\n        return /*#__PURE__*/cloneElement(element, this.getRootProps(getElementProps(element)));\n      }\n      /* istanbul ignore else */\n\n\n      if (process.env.NODE_ENV !== 'production') {\n        // they didn't apply the root props, but they need to\n        // otherwise we can't query around the autocomplete\n        throw new Error('downshift: If you return a non-DOM element, you must apply the getRootProps function');\n      }\n      /* istanbul ignore next */\n\n\n      return undefined;\n    };\n\n    return Downshift;\n  }(Component);\n\n  Downshift.defaultProps = {\n    defaultHighlightedIndex: null,\n    defaultIsOpen: false,\n    getA11yStatusMessage: getA11yStatusMessage$1,\n    itemToString: function itemToString(i) {\n      if (i == null) {\n        return '';\n      }\n\n      if (process.env.NODE_ENV !== 'production' && isPlainObject(i) && !i.hasOwnProperty('toString')) {\n        // eslint-disable-next-line no-console\n        console.warn('downshift: An object was passed to the default implementation of `itemToString`. You should probably provide your own `itemToString` implementation. Please refer to the `itemToString` API documentation.', 'The object that was passed:', i);\n      }\n\n      return String(i);\n    },\n    onStateChange: noop,\n    onInputValueChange: noop,\n    onUserAction: noop,\n    onChange: noop,\n    onSelect: noop,\n    onOuterClick: noop,\n    selectedItemChanged: function selectedItemChanged(prevItem, item) {\n      return prevItem !== item;\n    },\n    environment:\n    /* istanbul ignore next (ssr) */\n    typeof window === 'undefined' ? {} : window,\n    stateReducer: function stateReducer(state, stateToSet) {\n      return stateToSet;\n    },\n    suppressRefError: false,\n    scrollIntoView: scrollIntoView\n  };\n  Downshift.stateChangeTypes = stateChangeTypes$3;\n  return Downshift;\n}();\n\nprocess.env.NODE_ENV !== \"production\" ? Downshift.propTypes = {\n  children: PropTypes.func,\n  defaultHighlightedIndex: PropTypes.number,\n  defaultIsOpen: PropTypes.bool,\n  initialHighlightedIndex: PropTypes.number,\n  initialSelectedItem: PropTypes.any,\n  initialInputValue: PropTypes.string,\n  initialIsOpen: PropTypes.bool,\n  getA11yStatusMessage: PropTypes.func,\n  itemToString: PropTypes.func,\n  onChange: PropTypes.func,\n  onSelect: PropTypes.func,\n  onStateChange: PropTypes.func,\n  onInputValueChange: PropTypes.func,\n  onUserAction: PropTypes.func,\n  onOuterClick: PropTypes.func,\n  selectedItemChanged: PropTypes.func,\n  stateReducer: PropTypes.func,\n  itemCount: PropTypes.number,\n  id: PropTypes.string,\n  environment: PropTypes.shape({\n    addEventListener: PropTypes.func,\n    removeEventListener: PropTypes.func,\n    document: PropTypes.shape({\n      getElementById: PropTypes.func,\n      activeElement: PropTypes.any,\n      body: PropTypes.any\n    })\n  }),\n  suppressRefError: PropTypes.bool,\n  scrollIntoView: PropTypes.func,\n  // things we keep in state for uncontrolled components\n  // but can accept as props for controlled components\n\n  /* eslint-disable react/no-unused-prop-types */\n  selectedItem: PropTypes.any,\n  isOpen: PropTypes.bool,\n  inputValue: PropTypes.string,\n  highlightedIndex: PropTypes.number,\n  labelId: PropTypes.string,\n  inputId: PropTypes.string,\n  menuId: PropTypes.string,\n  getItemId: PropTypes.func\n  /* eslint-enable react/no-unused-prop-types */\n\n} : void 0;\nvar Downshift$1 = Downshift;\n\nfunction validateGetMenuPropsCalledCorrectly(node, _ref12) {\n  var refKey = _ref12.refKey;\n\n  if (!node) {\n    // eslint-disable-next-line no-console\n    console.error(\"downshift: The ref prop \\\"\" + refKey + \"\\\" from getMenuProps was not applied correctly on your menu element.\");\n  }\n}\n\nfunction validateGetRootPropsCalledCorrectly(element, _ref13) {\n  var refKey = _ref13.refKey;\n  var refKeySpecified = refKey !== 'ref';\n  var isComposite = !isDOMElement(element);\n\n  if (isComposite && !refKeySpecified && !isForwardRef(element)) {\n    // eslint-disable-next-line no-console\n    console.error('downshift: You returned a non-DOM element. You must specify a refKey in getRootProps');\n  } else if (!isComposite && refKeySpecified) {\n    // eslint-disable-next-line no-console\n    console.error(\"downshift: You returned a DOM element. You should not specify a refKey in getRootProps. You specified \\\"\" + refKey + \"\\\"\");\n  }\n\n  if (!isForwardRef(element) && !getElementProps(element)[refKey]) {\n    // eslint-disable-next-line no-console\n    console.error(\"downshift: You must apply the ref prop \\\"\" + refKey + \"\\\" from getRootProps onto your root element.\");\n  }\n}\n\nvar _excluded$3 = [\"isInitialMount\", \"highlightedIndex\", \"items\", \"environment\"];\nvar dropdownDefaultStateValues = {\n  highlightedIndex: -1,\n  isOpen: false,\n  selectedItem: null,\n  inputValue: ''\n};\n\nfunction callOnChangeProps(action, state, newState) {\n  var props = action.props,\n      type = action.type;\n  var changes = {};\n  Object.keys(state).forEach(function (key) {\n    invokeOnChangeHandler(key, action, state, newState);\n\n    if (newState[key] !== state[key]) {\n      changes[key] = newState[key];\n    }\n  });\n\n  if (props.onStateChange && Object.keys(changes).length) {\n    props.onStateChange(_extends({\n      type: type\n    }, changes));\n  }\n}\n\nfunction invokeOnChangeHandler(key, action, state, newState) {\n  var props = action.props,\n      type = action.type;\n  var handler = \"on\" + capitalizeString(key) + \"Change\";\n\n  if (props[handler] && newState[key] !== undefined && newState[key] !== state[key]) {\n    props[handler](_extends({\n      type: type\n    }, newState));\n  }\n}\n/**\n * Default state reducer that returns the changes.\n *\n * @param {Object} s state.\n * @param {Object} a action with changes.\n * @returns {Object} changes.\n */\n\n\nfunction stateReducer(s, a) {\n  return a.changes;\n}\n/**\n * Returns a message to be added to aria-live region when item is selected.\n *\n * @param {Object} selectionParameters Parameters required to build the message.\n * @returns {string} The a11y message.\n */\n\n\nfunction getA11ySelectionMessage(selectionParameters) {\n  var selectedItem = selectionParameters.selectedItem,\n      itemToStringLocal = selectionParameters.itemToString;\n  return selectedItem ? itemToStringLocal(selectedItem) + \" has been selected.\" : '';\n}\n/**\n * Debounced call for updating the a11y message.\n */\n\n\nvar updateA11yStatus = debounce(function (getA11yMessage, document) {\n  setStatus(getA11yMessage(), document);\n}, 200); // istanbul ignore next\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction useElementIds(_ref) {\n  var _ref$id = _ref.id,\n      id = _ref$id === void 0 ? \"downshift-\" + generateId() : _ref$id,\n      labelId = _ref.labelId,\n      menuId = _ref.menuId,\n      getItemId = _ref.getItemId,\n      toggleButtonId = _ref.toggleButtonId,\n      inputId = _ref.inputId;\n  var elementIdsRef = useRef({\n    labelId: labelId || id + \"-label\",\n    menuId: menuId || id + \"-menu\",\n    getItemId: getItemId || function (index) {\n      return id + \"-item-\" + index;\n    },\n    toggleButtonId: toggleButtonId || id + \"-toggle-button\",\n    inputId: inputId || id + \"-input\"\n  });\n  return elementIdsRef.current;\n}\n\nfunction getItemIndex(index, item, items) {\n  if (index !== undefined) {\n    return index;\n  }\n\n  if (items.length === 0) {\n    return -1;\n  }\n\n  return items.indexOf(item);\n}\n\nfunction itemToString(item) {\n  return item ? String(item) : '';\n}\n\nfunction isAcceptedCharacterKey(key) {\n  return /^\\S{1}$/.test(key);\n}\n\nfunction capitalizeString(string) {\n  return \"\" + string.slice(0, 1).toUpperCase() + string.slice(1);\n}\n\nfunction useLatestRef(val) {\n  var ref = useRef(val); // technically this is not \"concurrent mode safe\" because we're manipulating\n  // the value during render (so it's not idempotent). However, the places this\n  // hook is used is to support memoizing callbacks which will be called\n  // *during* render, so we need the latest values *during* render.\n  // If not for this, then we'd probably want to use useLayoutEffect instead.\n\n  ref.current = val;\n  return ref;\n}\n/**\n * Computes the controlled state using a the previous state, props,\n * two reducers, one from downshift and an optional one from the user.\n * Also calls the onChange handlers for state values that have changed.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\n\nfunction useEnhancedReducer(reducer, initialState, props) {\n  var prevStateRef = useRef();\n  var actionRef = useRef();\n  var enhancedReducer = useCallback(function (state, action) {\n    actionRef.current = action;\n    state = getState(state, action.props);\n    var changes = reducer(state, action);\n    var newState = action.props.stateReducer(state, _extends({}, action, {\n      changes: changes\n    }));\n    return newState;\n  }, [reducer]);\n\n  var _useReducer = useReducer(enhancedReducer, initialState),\n      state = _useReducer[0],\n      dispatch = _useReducer[1];\n\n  var propsRef = useLatestRef(props);\n  var dispatchWithProps = useCallback(function (action) {\n    return dispatch(_extends({\n      props: propsRef.current\n    }, action));\n  }, [propsRef]);\n  var action = actionRef.current;\n  useEffect(function () {\n    if (action && prevStateRef.current && prevStateRef.current !== state) {\n      callOnChangeProps(action, getState(prevStateRef.current, action.props), state);\n    }\n\n    prevStateRef.current = state;\n  }, [state, props, action]);\n  return [state, dispatchWithProps];\n}\n/**\n * Wraps the useEnhancedReducer and applies the controlled prop values before\n * returning the new state.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\n\nfunction useControlledReducer$1(reducer, initialState, props) {\n  var _useEnhancedReducer = useEnhancedReducer(reducer, initialState, props),\n      state = _useEnhancedReducer[0],\n      dispatch = _useEnhancedReducer[1];\n\n  return [getState(state, props), dispatch];\n}\n\nvar defaultProps$3 = {\n  itemToString: itemToString,\n  stateReducer: stateReducer,\n  getA11ySelectionMessage: getA11ySelectionMessage,\n  scrollIntoView: scrollIntoView,\n  circularNavigation: false,\n  environment:\n  /* istanbul ignore next (ssr) */\n  typeof window === 'undefined' ? {} : window\n};\n\nfunction getDefaultValue$1(props, propKey, defaultStateValues) {\n  if (defaultStateValues === void 0) {\n    defaultStateValues = dropdownDefaultStateValues;\n  }\n\n  var defaultPropKey = \"default\" + capitalizeString(propKey);\n\n  if (defaultPropKey in props) {\n    return props[defaultPropKey];\n  }\n\n  return defaultStateValues[propKey];\n}\n\nfunction getInitialValue$1(props, propKey, defaultStateValues) {\n  if (defaultStateValues === void 0) {\n    defaultStateValues = dropdownDefaultStateValues;\n  }\n\n  if (propKey in props) {\n    return props[propKey];\n  }\n\n  var initialPropKey = \"initial\" + capitalizeString(propKey);\n\n  if (initialPropKey in props) {\n    return props[initialPropKey];\n  }\n\n  return getDefaultValue$1(props, propKey, defaultStateValues);\n}\n\nfunction getInitialState$2(props) {\n  var selectedItem = getInitialValue$1(props, 'selectedItem');\n  var isOpen = getInitialValue$1(props, 'isOpen');\n  var highlightedIndex = getInitialValue$1(props, 'highlightedIndex');\n  var inputValue = getInitialValue$1(props, 'inputValue');\n  return {\n    highlightedIndex: highlightedIndex < 0 && selectedItem && isOpen ? props.items.indexOf(selectedItem) : highlightedIndex,\n    isOpen: isOpen,\n    selectedItem: selectedItem,\n    inputValue: inputValue\n  };\n}\n\nfunction getHighlightedIndexOnOpen(props, state, offset, getItemNodeFromIndex) {\n  var items = props.items,\n      initialHighlightedIndex = props.initialHighlightedIndex,\n      defaultHighlightedIndex = props.defaultHighlightedIndex;\n  var selectedItem = state.selectedItem,\n      highlightedIndex = state.highlightedIndex;\n\n  if (items.length === 0) {\n    return -1;\n  } // initialHighlightedIndex will give value to highlightedIndex on initial state only.\n\n\n  if (initialHighlightedIndex !== undefined && highlightedIndex === initialHighlightedIndex) {\n    return initialHighlightedIndex;\n  }\n\n  if (defaultHighlightedIndex !== undefined) {\n    return defaultHighlightedIndex;\n  }\n\n  if (selectedItem) {\n    if (offset === 0) {\n      return items.indexOf(selectedItem);\n    }\n\n    return getNextWrappingIndex(offset, items.indexOf(selectedItem), items.length, getItemNodeFromIndex, false);\n  }\n\n  if (offset === 0) {\n    return -1;\n  }\n\n  return offset < 0 ? items.length - 1 : 0;\n}\n/**\n * Reuse the movement tracking of mouse and touch events.\n *\n * @param {boolean} isOpen Whether the dropdown is open or not.\n * @param {Array<Object>} downshiftElementRefs Downshift element refs to track movement (toggleButton, menu etc.)\n * @param {Object} environment Environment where component/hook exists.\n * @param {Function} handleBlur Handler on blur from mouse or touch.\n * @returns {Object} Ref containing whether mouseDown or touchMove event is happening\n */\n\n\nfunction useMouseAndTouchTracker(isOpen, downshiftElementRefs, environment, handleBlur) {\n  var mouseAndTouchTrackersRef = useRef({\n    isMouseDown: false,\n    isTouchMove: false\n  });\n  useEffect(function () {\n    // The same strategy for checking if a click occurred inside or outside downsift\n    // as in downshift.js.\n    var onMouseDown = function onMouseDown() {\n      mouseAndTouchTrackersRef.current.isMouseDown = true;\n    };\n\n    var onMouseUp = function onMouseUp(event) {\n      mouseAndTouchTrackersRef.current.isMouseDown = false;\n\n      if (isOpen && !targetWithinDownshift(event.target, downshiftElementRefs.map(function (ref) {\n        return ref.current;\n      }), environment)) {\n        handleBlur();\n      }\n    };\n\n    var onTouchStart = function onTouchStart() {\n      mouseAndTouchTrackersRef.current.isTouchMove = false;\n    };\n\n    var onTouchMove = function onTouchMove() {\n      mouseAndTouchTrackersRef.current.isTouchMove = true;\n    };\n\n    var onTouchEnd = function onTouchEnd(event) {\n      if (isOpen && !mouseAndTouchTrackersRef.current.isTouchMove && !targetWithinDownshift(event.target, downshiftElementRefs.map(function (ref) {\n        return ref.current;\n      }), environment, false)) {\n        handleBlur();\n      }\n    };\n\n    environment.addEventListener('mousedown', onMouseDown);\n    environment.addEventListener('mouseup', onMouseUp);\n    environment.addEventListener('touchstart', onTouchStart);\n    environment.addEventListener('touchmove', onTouchMove);\n    environment.addEventListener('touchend', onTouchEnd);\n    return function cleanup() {\n      environment.removeEventListener('mousedown', onMouseDown);\n      environment.removeEventListener('mouseup', onMouseUp);\n      environment.removeEventListener('touchstart', onTouchStart);\n      environment.removeEventListener('touchmove', onTouchMove);\n      environment.removeEventListener('touchend', onTouchEnd);\n    }; // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen, environment]);\n  return mouseAndTouchTrackersRef;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line import/no-mutable-exports\n\n\nvar useGetterPropsCalledChecker = function useGetterPropsCalledChecker() {\n  return noop;\n};\n/**\n * Custom hook that checks if getter props are called correctly.\n *\n * @param  {...any} propKeys Getter prop names to be handled.\n * @returns {Function} Setter function called inside getter props to set call information.\n */\n\n/* istanbul ignore next */\n\n\nif (process.env.NODE_ENV !== 'production') {\n  useGetterPropsCalledChecker = function useGetterPropsCalledChecker() {\n    var isInitialMountRef = useRef(true);\n\n    for (var _len = arguments.length, propKeys = new Array(_len), _key = 0; _key < _len; _key++) {\n      propKeys[_key] = arguments[_key];\n    }\n\n    var getterPropsCalledRef = useRef(propKeys.reduce(function (acc, propKey) {\n      acc[propKey] = {};\n      return acc;\n    }, {}));\n    useEffect(function () {\n      Object.keys(getterPropsCalledRef.current).forEach(function (propKey) {\n        var propCallInfo = getterPropsCalledRef.current[propKey];\n\n        if (isInitialMountRef.current) {\n          if (!Object.keys(propCallInfo).length) {\n            // eslint-disable-next-line no-console\n            console.error(\"downshift: You forgot to call the \" + propKey + \" getter function on your component / element.\");\n            return;\n          }\n        }\n\n        var suppressRefError = propCallInfo.suppressRefError,\n            refKey = propCallInfo.refKey,\n            elementRef = propCallInfo.elementRef;\n\n        if ((!elementRef || !elementRef.current) && !suppressRefError) {\n          // eslint-disable-next-line no-console\n          console.error(\"downshift: The ref prop \\\"\" + refKey + \"\\\" from \" + propKey + \" was not applied correctly on your element.\");\n        }\n      });\n      isInitialMountRef.current = false;\n    });\n    var setGetterPropCallInfo = useCallback(function (propKey, suppressRefError, refKey, elementRef) {\n      getterPropsCalledRef.current[propKey] = {\n        suppressRefError: suppressRefError,\n        refKey: refKey,\n        elementRef: elementRef\n      };\n    }, []);\n    return setGetterPropCallInfo;\n  };\n}\n\nfunction useA11yMessageSetter(getA11yMessage, dependencyArray, _ref2) {\n  var isInitialMount = _ref2.isInitialMount,\n      highlightedIndex = _ref2.highlightedIndex,\n      items = _ref2.items,\n      environment = _ref2.environment,\n      rest = _objectWithoutPropertiesLoose(_ref2, _excluded$3);\n\n  // Sets a11y status message on changes in state.\n  useEffect(function () {\n    if (isInitialMount || false) {\n      return;\n    }\n\n    updateA11yStatus(function () {\n      return getA11yMessage(_extends({\n        highlightedIndex: highlightedIndex,\n        highlightedItem: items[highlightedIndex],\n        resultCount: items.length\n      }, rest));\n    }, environment.document); // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, dependencyArray);\n}\n\nfunction useScrollIntoView(_ref3) {\n  var highlightedIndex = _ref3.highlightedIndex,\n      isOpen = _ref3.isOpen,\n      itemRefs = _ref3.itemRefs,\n      getItemNodeFromIndex = _ref3.getItemNodeFromIndex,\n      menuElement = _ref3.menuElement,\n      scrollIntoViewProp = _ref3.scrollIntoView;\n  // used not to scroll on highlight by mouse.\n  var shouldScrollRef = useRef(true); // Scroll on highlighted item if change comes from keyboard.\n\n  useIsomorphicLayoutEffect(function () {\n    if (highlightedIndex < 0 || !isOpen || !Object.keys(itemRefs.current).length) {\n      return;\n    }\n\n    if (shouldScrollRef.current === false) {\n      shouldScrollRef.current = true;\n    } else {\n      scrollIntoViewProp(getItemNodeFromIndex(highlightedIndex), menuElement);\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [highlightedIndex]);\n  return shouldScrollRef;\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar useControlPropsValidator = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n  useControlPropsValidator = function useControlPropsValidator(_ref4) {\n    var isInitialMount = _ref4.isInitialMount,\n        props = _ref4.props,\n        state = _ref4.state;\n    // used for checking when props are moving from controlled to uncontrolled.\n    var prevPropsRef = useRef(props);\n    useEffect(function () {\n      if (isInitialMount) {\n        return;\n      }\n\n      validateControlledUnchanged(state, prevPropsRef.current, props);\n      prevPropsRef.current = props;\n    }, [state, props, isInitialMount]);\n  };\n}\n\n/* eslint-disable complexity */\n\nfunction downshiftCommonReducer(state, action, stateChangeTypes) {\n  var type = action.type,\n      props = action.props;\n  var changes;\n\n  switch (type) {\n    case stateChangeTypes.ItemMouseMove:\n      changes = {\n        highlightedIndex: action.index\n      };\n      break;\n\n    case stateChangeTypes.MenuMouseLeave:\n      changes = {\n        highlightedIndex: -1\n      };\n      break;\n\n    case stateChangeTypes.ToggleButtonClick:\n    case stateChangeTypes.FunctionToggleMenu:\n      changes = {\n        isOpen: !state.isOpen,\n        highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)\n      };\n      break;\n\n    case stateChangeTypes.FunctionOpenMenu:\n      changes = {\n        isOpen: true,\n        highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)\n      };\n      break;\n\n    case stateChangeTypes.FunctionCloseMenu:\n      changes = {\n        isOpen: false\n      };\n      break;\n\n    case stateChangeTypes.FunctionSetHighlightedIndex:\n      changes = {\n        highlightedIndex: action.highlightedIndex\n      };\n      break;\n\n    case stateChangeTypes.FunctionSetInputValue:\n      changes = {\n        inputValue: action.inputValue\n      };\n      break;\n\n    case stateChangeTypes.FunctionReset:\n      changes = {\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n        isOpen: getDefaultValue$1(props, 'isOpen'),\n        selectedItem: getDefaultValue$1(props, 'selectedItem'),\n        inputValue: getDefaultValue$1(props, 'inputValue')\n      };\n      break;\n\n    default:\n      throw new Error('Reducer called without proper action type.');\n  }\n\n  return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nfunction getItemIndexByCharacterKey(_a) {\n    var keysSoFar = _a.keysSoFar, highlightedIndex = _a.highlightedIndex, items = _a.items, itemToString = _a.itemToString, getItemNodeFromIndex = _a.getItemNodeFromIndex;\n    var lowerCasedKeysSoFar = keysSoFar.toLowerCase();\n    for (var index = 0; index < items.length; index++) {\n        var offsetIndex = (index + highlightedIndex + 1) % items.length;\n        var item = items[offsetIndex];\n        if (item !== undefined &&\n            itemToString(item)\n                .toLowerCase()\n                .startsWith(lowerCasedKeysSoFar)) {\n            var element = getItemNodeFromIndex(offsetIndex);\n            if (!(element === null || element === void 0 ? void 0 : element.hasAttribute('disabled'))) {\n                return offsetIndex;\n            }\n        }\n    }\n    return highlightedIndex;\n}\nvar propTypes$2 = {\n    items: PropTypes.array.isRequired,\n    itemToString: PropTypes.func,\n    getA11yStatusMessage: PropTypes.func,\n    getA11ySelectionMessage: PropTypes.func,\n    circularNavigation: PropTypes.bool,\n    highlightedIndex: PropTypes.number,\n    defaultHighlightedIndex: PropTypes.number,\n    initialHighlightedIndex: PropTypes.number,\n    isOpen: PropTypes.bool,\n    defaultIsOpen: PropTypes.bool,\n    initialIsOpen: PropTypes.bool,\n    selectedItem: PropTypes.any,\n    initialSelectedItem: PropTypes.any,\n    defaultSelectedItem: PropTypes.any,\n    id: PropTypes.string,\n    labelId: PropTypes.string,\n    menuId: PropTypes.string,\n    getItemId: PropTypes.func,\n    toggleButtonId: PropTypes.string,\n    stateReducer: PropTypes.func,\n    onSelectedItemChange: PropTypes.func,\n    onHighlightedIndexChange: PropTypes.func,\n    onStateChange: PropTypes.func,\n    onIsOpenChange: PropTypes.func,\n    environment: PropTypes.shape({\n        addEventListener: PropTypes.func,\n        removeEventListener: PropTypes.func,\n        document: PropTypes.shape({\n            getElementById: PropTypes.func,\n            activeElement: PropTypes.any,\n            body: PropTypes.any\n        })\n    })\n};\n/**\n * Default implementation for status message. Only added when menu is open.\n * Will specift if there are results in the list, and if so, how many,\n * and what keys are relevant.\n *\n * @param {Object} param the downshift state and other relevant properties\n * @return {String} the a11y status message\n */\nfunction getA11yStatusMessage(_a) {\n    var isOpen = _a.isOpen, resultCount = _a.resultCount, previousResultCount = _a.previousResultCount;\n    if (!isOpen) {\n        return '';\n    }\n    if (!resultCount) {\n        return 'No results are available.';\n    }\n    if (resultCount !== previousResultCount) {\n        return resultCount + \" result\" + (resultCount === 1 ? ' is' : 's are') + \" available, use up and down arrow keys to navigate. Press Enter or Space Bar keys to select.\";\n    }\n    return '';\n}\nvar defaultProps$2 = __assign(__assign({}, defaultProps$3), { getA11yStatusMessage: getA11yStatusMessage });\n// eslint-disable-next-line import/no-mutable-exports\nvar validatePropTypes$2 = noop;\n/* istanbul ignore next */\nif (process.env.NODE_ENV !== 'production') {\n    validatePropTypes$2 = function (options, caller) {\n        PropTypes.checkPropTypes(propTypes$2, options, 'prop', caller.name);\n    };\n}\n\nvar MenuKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_arrow_down__' : 0;\nvar MenuKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_arrow_up__' : 1;\nvar MenuKeyDownEscape = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_escape__' : 2;\nvar MenuKeyDownHome = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_home__' : 3;\nvar MenuKeyDownEnd = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_end__' : 4;\nvar MenuKeyDownEnter = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_enter__' : 5;\nvar MenuKeyDownSpaceButton = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_space_button__' : 6;\nvar MenuKeyDownCharacter = process.env.NODE_ENV !== \"production\" ? '__menu_keydown_character__' : 7;\nvar MenuBlur = process.env.NODE_ENV !== \"production\" ? '__menu_blur__' : 8;\nvar MenuMouseLeave$1 = process.env.NODE_ENV !== \"production\" ? '__menu_mouse_leave__' : 9;\nvar ItemMouseMove$1 = process.env.NODE_ENV !== \"production\" ? '__item_mouse_move__' : 10;\nvar ItemClick$1 = process.env.NODE_ENV !== \"production\" ? '__item_click__' : 11;\nvar ToggleButtonClick$1 = process.env.NODE_ENV !== \"production\" ? '__togglebutton_click__' : 12;\nvar ToggleButtonKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_arrow_down__' : 13;\nvar ToggleButtonKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_arrow_up__' : 14;\nvar ToggleButtonKeyDownCharacter = process.env.NODE_ENV !== \"production\" ? '__togglebutton_keydown_character__' : 15;\nvar FunctionToggleMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_toggle_menu__' : 16;\nvar FunctionOpenMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_open_menu__' : 17;\nvar FunctionCloseMenu$1 = process.env.NODE_ENV !== \"production\" ? '__function_close_menu__' : 18;\nvar FunctionSetHighlightedIndex$1 = process.env.NODE_ENV !== \"production\" ? '__function_set_highlighted_index__' : 19;\nvar FunctionSelectItem$1 = process.env.NODE_ENV !== \"production\" ? '__function_select_item__' : 20;\nvar FunctionSetInputValue$1 = process.env.NODE_ENV !== \"production\" ? '__function_set_input_value__' : 21;\nvar FunctionReset$2 = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 22;\n\nvar stateChangeTypes$2 = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  MenuKeyDownArrowDown: MenuKeyDownArrowDown,\n  MenuKeyDownArrowUp: MenuKeyDownArrowUp,\n  MenuKeyDownEscape: MenuKeyDownEscape,\n  MenuKeyDownHome: MenuKeyDownHome,\n  MenuKeyDownEnd: MenuKeyDownEnd,\n  MenuKeyDownEnter: MenuKeyDownEnter,\n  MenuKeyDownSpaceButton: MenuKeyDownSpaceButton,\n  MenuKeyDownCharacter: MenuKeyDownCharacter,\n  MenuBlur: MenuBlur,\n  MenuMouseLeave: MenuMouseLeave$1,\n  ItemMouseMove: ItemMouseMove$1,\n  ItemClick: ItemClick$1,\n  ToggleButtonClick: ToggleButtonClick$1,\n  ToggleButtonKeyDownArrowDown: ToggleButtonKeyDownArrowDown,\n  ToggleButtonKeyDownArrowUp: ToggleButtonKeyDownArrowUp,\n  ToggleButtonKeyDownCharacter: ToggleButtonKeyDownCharacter,\n  FunctionToggleMenu: FunctionToggleMenu$1,\n  FunctionOpenMenu: FunctionOpenMenu$1,\n  FunctionCloseMenu: FunctionCloseMenu$1,\n  FunctionSetHighlightedIndex: FunctionSetHighlightedIndex$1,\n  FunctionSelectItem: FunctionSelectItem$1,\n  FunctionSetInputValue: FunctionSetInputValue$1,\n  FunctionReset: FunctionReset$2\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftSelectReducer(state, action) {\n  var type = action.type,\n      props = action.props,\n      shiftKey = action.shiftKey;\n  var changes;\n\n  switch (type) {\n    case ItemClick$1:\n      changes = {\n        isOpen: getDefaultValue$1(props, 'isOpen'),\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n        selectedItem: props.items[action.index]\n      };\n      break;\n\n    case ToggleButtonKeyDownCharacter:\n      {\n        var lowercasedKey = action.key;\n        var inputValue = \"\" + state.inputValue + lowercasedKey;\n        var itemIndex = getItemIndexByCharacterKey({\n          keysSoFar: inputValue,\n          highlightedIndex: state.selectedItem ? props.items.indexOf(state.selectedItem) : -1,\n          items: props.items,\n          itemToString: props.itemToString,\n          getItemNodeFromIndex: action.getItemNodeFromIndex\n        });\n        changes = _extends({\n          inputValue: inputValue\n        }, itemIndex >= 0 && {\n          selectedItem: props.items[itemIndex]\n        });\n      }\n      break;\n\n    case ToggleButtonKeyDownArrowDown:\n      changes = {\n        highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n        isOpen: true\n      };\n      break;\n\n    case ToggleButtonKeyDownArrowUp:\n      changes = {\n        highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n        isOpen: true\n      };\n      break;\n\n    case MenuKeyDownEnter:\n    case MenuKeyDownSpaceButton:\n      changes = _extends({\n        isOpen: getDefaultValue$1(props, 'isOpen'),\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex')\n      }, state.highlightedIndex >= 0 && {\n        selectedItem: props.items[state.highlightedIndex]\n      });\n      break;\n\n    case MenuKeyDownHome:\n      changes = {\n        highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n      };\n      break;\n\n    case MenuKeyDownEnd:\n      changes = {\n        highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n      };\n      break;\n\n    case MenuKeyDownEscape:\n      changes = {\n        isOpen: false,\n        highlightedIndex: -1\n      };\n      break;\n\n    case MenuBlur:\n      changes = {\n        isOpen: false,\n        highlightedIndex: -1\n      };\n      break;\n\n    case MenuKeyDownCharacter:\n      {\n        var _lowercasedKey = action.key;\n\n        var _inputValue = \"\" + state.inputValue + _lowercasedKey;\n\n        var highlightedIndex = getItemIndexByCharacterKey({\n          keysSoFar: _inputValue,\n          highlightedIndex: state.highlightedIndex,\n          items: props.items,\n          itemToString: props.itemToString,\n          getItemNodeFromIndex: action.getItemNodeFromIndex\n        });\n        changes = _extends({\n          inputValue: _inputValue\n        }, highlightedIndex >= 0 && {\n          highlightedIndex: highlightedIndex\n        });\n      }\n      break;\n\n    case MenuKeyDownArrowDown:\n      changes = {\n        highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n      };\n      break;\n\n    case MenuKeyDownArrowUp:\n      changes = {\n        highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n      };\n      break;\n\n    case FunctionSelectItem$1:\n      changes = {\n        selectedItem: action.selectedItem\n      };\n      break;\n\n    default:\n      return downshiftCommonReducer(state, action, stateChangeTypes$2);\n  }\n\n  return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nvar _excluded$2 = [\"onMouseLeave\", \"refKey\", \"onKeyDown\", \"onBlur\", \"ref\"],\n    _excluded2$2 = [\"onClick\", \"onKeyDown\", \"refKey\", \"ref\"],\n    _excluded3$1 = [\"item\", \"index\", \"onMouseMove\", \"onClick\", \"refKey\", \"ref\"];\nuseSelect.stateChangeTypes = stateChangeTypes$2;\n\nfunction useSelect(userProps) {\n  if (userProps === void 0) {\n    userProps = {};\n  }\n\n  validatePropTypes$2(userProps, useSelect); // Props defaults and destructuring.\n\n  var props = _extends({}, defaultProps$2, userProps);\n\n  var items = props.items,\n      scrollIntoView = props.scrollIntoView,\n      environment = props.environment,\n      initialIsOpen = props.initialIsOpen,\n      defaultIsOpen = props.defaultIsOpen,\n      itemToString = props.itemToString,\n      getA11ySelectionMessage = props.getA11ySelectionMessage,\n      getA11yStatusMessage = props.getA11yStatusMessage; // Initial state depending on controlled props.\n\n  var initialState = getInitialState$2(props);\n\n  var _useControlledReducer = useControlledReducer$1(downshiftSelectReducer, initialState, props),\n      state = _useControlledReducer[0],\n      dispatch = _useControlledReducer[1];\n\n  var isOpen = state.isOpen,\n      highlightedIndex = state.highlightedIndex,\n      selectedItem = state.selectedItem,\n      inputValue = state.inputValue; // Element efs.\n\n  var toggleButtonRef = useRef(null);\n  var menuRef = useRef(null);\n  var itemRefs = useRef({}); // used not to trigger menu blur action in some scenarios.\n\n  var shouldBlurRef = useRef(true); // used to keep the inputValue clearTimeout object between renders.\n\n  var clearTimeoutRef = useRef(null); // prevent id re-generation between renders.\n\n  var elementIds = useElementIds(props); // used to keep track of how many items we had on previous cycle.\n\n  var previousResultCountRef = useRef();\n  var isInitialMountRef = useRef(true); // utility callback to get item element.\n\n  var latest = useLatestRef({\n    state: state,\n    props: props\n  }); // Some utils.\n\n  var getItemNodeFromIndex = useCallback(function (index) {\n    return itemRefs.current[elementIds.getItemId(index)];\n  }, [elementIds]); // Effects.\n  // Sets a11y status message on changes in state.\n\n  useA11yMessageSetter(getA11yStatusMessage, [isOpen, highlightedIndex, inputValue, items], _extends({\n    isInitialMount: isInitialMountRef.current,\n    previousResultCount: previousResultCountRef.current,\n    items: items,\n    environment: environment,\n    itemToString: itemToString\n  }, state)); // Sets a11y status message on changes in selectedItem.\n\n  useA11yMessageSetter(getA11ySelectionMessage, [selectedItem], _extends({\n    isInitialMount: isInitialMountRef.current,\n    previousResultCount: previousResultCountRef.current,\n    items: items,\n    environment: environment,\n    itemToString: itemToString\n  }, state)); // Scroll on highlighted item if change comes from keyboard.\n\n  var shouldScrollRef = useScrollIntoView({\n    menuElement: menuRef.current,\n    highlightedIndex: highlightedIndex,\n    isOpen: isOpen,\n    itemRefs: itemRefs,\n    scrollIntoView: scrollIntoView,\n    getItemNodeFromIndex: getItemNodeFromIndex\n  }); // Sets cleanup for the keysSoFar callback, debounded after 500ms.\n\n  useEffect(function () {\n    // init the clean function here as we need access to dispatch.\n    clearTimeoutRef.current = debounce(function (outerDispatch) {\n      outerDispatch({\n        type: FunctionSetInputValue$1,\n        inputValue: ''\n      });\n    }, 500); // Cancel any pending debounced calls on mount\n\n    return function () {\n      clearTimeoutRef.current.cancel();\n    };\n  }, []); // Invokes the keysSoFar callback set up above.\n\n  useEffect(function () {\n    if (!inputValue) {\n      return;\n    }\n\n    clearTimeoutRef.current(dispatch);\n  }, [dispatch, inputValue]);\n  useControlPropsValidator({\n    isInitialMount: isInitialMountRef.current,\n    props: props,\n    state: state\n  });\n  /* Controls the focus on the menu or the toggle button. */\n\n  useEffect(function () {\n    // Don't focus menu on first render.\n    if (isInitialMountRef.current) {\n      // Unless it was initialised as open.\n      if ((initialIsOpen || defaultIsOpen || isOpen) && menuRef.current) {\n        menuRef.current.focus();\n      }\n\n      return;\n    } // Focus menu on open.\n\n\n    if (isOpen) {\n      // istanbul ignore else\n      if (menuRef.current) {\n        menuRef.current.focus();\n      }\n\n      return;\n    } // Focus toggleButton on close, but not if it was closed with (Shift+)Tab.\n\n\n    if (environment.document.activeElement === menuRef.current) {\n      // istanbul ignore else\n      if (toggleButtonRef.current) {\n        shouldBlurRef.current = false;\n        toggleButtonRef.current.focus();\n      }\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [isOpen]);\n  useEffect(function () {\n    if (isInitialMountRef.current) {\n      return;\n    }\n\n    previousResultCountRef.current = items.length;\n  }); // Add mouse/touch events to document.\n\n  var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [menuRef, toggleButtonRef], environment, function () {\n    dispatch({\n      type: MenuBlur\n    });\n  });\n  var setGetterPropCallInfo = useGetterPropsCalledChecker('getMenuProps', 'getToggleButtonProps'); // Make initial ref false.\n\n  useEffect(function () {\n    isInitialMountRef.current = false;\n  }, []); // Reset itemRefs on close.\n\n  useEffect(function () {\n    if (!isOpen) {\n      itemRefs.current = {};\n    }\n  }, [isOpen]); // Event handler functions.\n\n  var toggleButtonKeyDownHandlers = useMemo(function () {\n    return {\n      ArrowDown: function ArrowDown(event) {\n        event.preventDefault();\n        dispatch({\n          type: ToggleButtonKeyDownArrowDown,\n          getItemNodeFromIndex: getItemNodeFromIndex,\n          shiftKey: event.shiftKey\n        });\n      },\n      ArrowUp: function ArrowUp(event) {\n        event.preventDefault();\n        dispatch({\n          type: ToggleButtonKeyDownArrowUp,\n          getItemNodeFromIndex: getItemNodeFromIndex,\n          shiftKey: event.shiftKey\n        });\n      }\n    };\n  }, [dispatch, getItemNodeFromIndex]);\n  var menuKeyDownHandlers = useMemo(function () {\n    return {\n      ArrowDown: function ArrowDown(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownArrowDown,\n          getItemNodeFromIndex: getItemNodeFromIndex,\n          shiftKey: event.shiftKey\n        });\n      },\n      ArrowUp: function ArrowUp(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownArrowUp,\n          getItemNodeFromIndex: getItemNodeFromIndex,\n          shiftKey: event.shiftKey\n        });\n      },\n      Home: function Home(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownHome,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      End: function End(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownEnd,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      Escape: function Escape() {\n        dispatch({\n          type: MenuKeyDownEscape\n        });\n      },\n      Enter: function Enter(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownEnter\n        });\n      },\n      ' ': function _(event) {\n        event.preventDefault();\n        dispatch({\n          type: MenuKeyDownSpaceButton\n        });\n      }\n    };\n  }, [dispatch, getItemNodeFromIndex]); // Action functions.\n\n  var toggleMenu = useCallback(function () {\n    dispatch({\n      type: FunctionToggleMenu$1\n    });\n  }, [dispatch]);\n  var closeMenu = useCallback(function () {\n    dispatch({\n      type: FunctionCloseMenu$1\n    });\n  }, [dispatch]);\n  var openMenu = useCallback(function () {\n    dispatch({\n      type: FunctionOpenMenu$1\n    });\n  }, [dispatch]);\n  var setHighlightedIndex = useCallback(function (newHighlightedIndex) {\n    dispatch({\n      type: FunctionSetHighlightedIndex$1,\n      highlightedIndex: newHighlightedIndex\n    });\n  }, [dispatch]);\n  var selectItem = useCallback(function (newSelectedItem) {\n    dispatch({\n      type: FunctionSelectItem$1,\n      selectedItem: newSelectedItem\n    });\n  }, [dispatch]);\n  var reset = useCallback(function () {\n    dispatch({\n      type: FunctionReset$2\n    });\n  }, [dispatch]);\n  var setInputValue = useCallback(function (newInputValue) {\n    dispatch({\n      type: FunctionSetInputValue$1,\n      inputValue: newInputValue\n    });\n  }, [dispatch]); // Getter functions.\n\n  var getLabelProps = useCallback(function (labelProps) {\n    return _extends({\n      id: elementIds.labelId,\n      htmlFor: elementIds.toggleButtonId\n    }, labelProps);\n  }, [elementIds]);\n  var getMenuProps = useCallback(function (_temp, _temp2) {\n    var _extends2;\n\n    var _ref = _temp === void 0 ? {} : _temp,\n        onMouseLeave = _ref.onMouseLeave,\n        _ref$refKey = _ref.refKey,\n        refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n        onKeyDown = _ref.onKeyDown,\n        onBlur = _ref.onBlur,\n        ref = _ref.ref,\n        rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n    var _ref2 = _temp2 === void 0 ? {} : _temp2,\n        _ref2$suppressRefErro = _ref2.suppressRefError,\n        suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n    var latestState = latest.current.state;\n\n    var menuHandleKeyDown = function menuHandleKeyDown(event) {\n      var key = normalizeArrowKey(event);\n\n      if (key && menuKeyDownHandlers[key]) {\n        menuKeyDownHandlers[key](event);\n      } else if (isAcceptedCharacterKey(key)) {\n        dispatch({\n          type: MenuKeyDownCharacter,\n          key: key,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      }\n    };\n\n    var menuHandleBlur = function menuHandleBlur() {\n      // if the blur was a result of selection, we don't trigger this action.\n      if (shouldBlurRef.current === false) {\n        shouldBlurRef.current = true;\n        return;\n      }\n\n      var shouldBlur = !mouseAndTouchTrackersRef.current.isMouseDown;\n      /* istanbul ignore else */\n\n      if (shouldBlur) {\n        dispatch({\n          type: MenuBlur\n        });\n      }\n    };\n\n    var menuHandleMouseLeave = function menuHandleMouseLeave() {\n      dispatch({\n        type: MenuMouseLeave$1\n      });\n    };\n\n    setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);\n    return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {\n      menuRef.current = menuNode;\n    }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2), latestState.isOpen && latestState.highlightedIndex > -1 && {\n      'aria-activedescendant': elementIds.getItemId(latestState.highlightedIndex)\n    }, {\n      onMouseLeave: callAllEventHandlers(onMouseLeave, menuHandleMouseLeave),\n      onKeyDown: callAllEventHandlers(onKeyDown, menuHandleKeyDown),\n      onBlur: callAllEventHandlers(onBlur, menuHandleBlur)\n    }, rest);\n  }, [dispatch, latest, menuKeyDownHandlers, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n  var getToggleButtonProps = useCallback(function (_temp3, _temp4) {\n    var _extends3;\n\n    var _ref3 = _temp3 === void 0 ? {} : _temp3,\n        onClick = _ref3.onClick,\n        onKeyDown = _ref3.onKeyDown,\n        _ref3$refKey = _ref3.refKey,\n        refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n        ref = _ref3.ref,\n        rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$2);\n\n    var _ref4 = _temp4 === void 0 ? {} : _temp4,\n        _ref4$suppressRefErro = _ref4.suppressRefError,\n        suppressRefError = _ref4$suppressRefErro === void 0 ? false : _ref4$suppressRefErro;\n\n    var toggleButtonHandleClick = function toggleButtonHandleClick() {\n      dispatch({\n        type: ToggleButtonClick$1\n      });\n    };\n\n    var toggleButtonHandleKeyDown = function toggleButtonHandleKeyDown(event) {\n      var key = normalizeArrowKey(event);\n\n      if (key && toggleButtonKeyDownHandlers[key]) {\n        toggleButtonKeyDownHandlers[key](event);\n      } else if (isAcceptedCharacterKey(key)) {\n        dispatch({\n          type: ToggleButtonKeyDownCharacter,\n          key: key,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      }\n    };\n\n    var toggleProps = _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {\n      toggleButtonRef.current = toggleButtonNode;\n    }), _extends3.id = elementIds.toggleButtonId, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-labelledby'] = elementIds.labelId + \" \" + elementIds.toggleButtonId, _extends3), rest);\n\n    if (!rest.disabled) {\n      toggleProps.onClick = callAllEventHandlers(onClick, toggleButtonHandleClick);\n      toggleProps.onKeyDown = callAllEventHandlers(onKeyDown, toggleButtonHandleKeyDown);\n    }\n\n    setGetterPropCallInfo('getToggleButtonProps', suppressRefError, refKey, toggleButtonRef);\n    return toggleProps;\n  }, [dispatch, latest, toggleButtonKeyDownHandlers, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n  var getItemProps = useCallback(function (_temp5) {\n    var _extends4;\n\n    var _ref5 = _temp5 === void 0 ? {} : _temp5,\n        item = _ref5.item,\n        index = _ref5.index,\n        onMouseMove = _ref5.onMouseMove,\n        onClick = _ref5.onClick,\n        _ref5$refKey = _ref5.refKey,\n        refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n        ref = _ref5.ref,\n        rest = _objectWithoutPropertiesLoose(_ref5, _excluded3$1);\n\n    var _latest$current = latest.current,\n        latestState = _latest$current.state,\n        latestProps = _latest$current.props;\n\n    var itemHandleMouseMove = function itemHandleMouseMove() {\n      if (index === latestState.highlightedIndex) {\n        return;\n      }\n\n      shouldScrollRef.current = false;\n      dispatch({\n        type: ItemMouseMove$1,\n        index: index\n      });\n    };\n\n    var itemHandleClick = function itemHandleClick() {\n      dispatch({\n        type: ItemClick$1,\n        index: index\n      });\n    };\n\n    var itemIndex = getItemIndex(index, item, latestProps.items);\n\n    if (itemIndex < 0) {\n      throw new Error('Pass either item or item index in getItemProps!');\n    }\n\n    var itemProps = _extends((_extends4 = {\n      role: 'option',\n      'aria-selected': \"\" + (itemIndex === latestState.highlightedIndex),\n      id: elementIds.getItemId(itemIndex)\n    }, _extends4[refKey] = handleRefs(ref, function (itemNode) {\n      if (itemNode) {\n        itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n      }\n    }), _extends4), rest);\n\n    if (!rest.disabled) {\n      itemProps.onMouseMove = callAllEventHandlers(onMouseMove, itemHandleMouseMove);\n      itemProps.onClick = callAllEventHandlers(onClick, itemHandleClick);\n    }\n\n    return itemProps;\n  }, [dispatch, latest, shouldScrollRef, elementIds]);\n  return {\n    // prop getters.\n    getToggleButtonProps: getToggleButtonProps,\n    getLabelProps: getLabelProps,\n    getMenuProps: getMenuProps,\n    getItemProps: getItemProps,\n    // actions.\n    toggleMenu: toggleMenu,\n    openMenu: openMenu,\n    closeMenu: closeMenu,\n    setHighlightedIndex: setHighlightedIndex,\n    selectItem: selectItem,\n    reset: reset,\n    setInputValue: setInputValue,\n    // state.\n    highlightedIndex: highlightedIndex,\n    isOpen: isOpen,\n    selectedItem: selectedItem,\n    inputValue: inputValue\n  };\n}\n\nvar InputKeyDownArrowDown = process.env.NODE_ENV !== \"production\" ? '__input_keydown_arrow_down__' : 0;\nvar InputKeyDownArrowUp = process.env.NODE_ENV !== \"production\" ? '__input_keydown_arrow_up__' : 1;\nvar InputKeyDownEscape = process.env.NODE_ENV !== \"production\" ? '__input_keydown_escape__' : 2;\nvar InputKeyDownHome = process.env.NODE_ENV !== \"production\" ? '__input_keydown_home__' : 3;\nvar InputKeyDownEnd = process.env.NODE_ENV !== \"production\" ? '__input_keydown_end__' : 4;\nvar InputKeyDownEnter = process.env.NODE_ENV !== \"production\" ? '__input_keydown_enter__' : 5;\nvar InputChange = process.env.NODE_ENV !== \"production\" ? '__input_change__' : 6;\nvar InputBlur = process.env.NODE_ENV !== \"production\" ? '__input_blur__' : 7;\nvar MenuMouseLeave = process.env.NODE_ENV !== \"production\" ? '__menu_mouse_leave__' : 8;\nvar ItemMouseMove = process.env.NODE_ENV !== \"production\" ? '__item_mouse_move__' : 9;\nvar ItemClick = process.env.NODE_ENV !== \"production\" ? '__item_click__' : 10;\nvar ToggleButtonClick = process.env.NODE_ENV !== \"production\" ? '__togglebutton_click__' : 11;\nvar FunctionToggleMenu = process.env.NODE_ENV !== \"production\" ? '__function_toggle_menu__' : 12;\nvar FunctionOpenMenu = process.env.NODE_ENV !== \"production\" ? '__function_open_menu__' : 13;\nvar FunctionCloseMenu = process.env.NODE_ENV !== \"production\" ? '__function_close_menu__' : 14;\nvar FunctionSetHighlightedIndex = process.env.NODE_ENV !== \"production\" ? '__function_set_highlighted_index__' : 15;\nvar FunctionSelectItem = process.env.NODE_ENV !== \"production\" ? '__function_select_item__' : 16;\nvar FunctionSetInputValue = process.env.NODE_ENV !== \"production\" ? '__function_set_input_value__' : 17;\nvar FunctionReset$1 = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 18;\nvar ControlledPropUpdatedSelectedItem = process.env.NODE_ENV !== \"production\" ? '__controlled_prop_updated_selected_item__' : 19;\n\nvar stateChangeTypes$1 = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  InputKeyDownArrowDown: InputKeyDownArrowDown,\n  InputKeyDownArrowUp: InputKeyDownArrowUp,\n  InputKeyDownEscape: InputKeyDownEscape,\n  InputKeyDownHome: InputKeyDownHome,\n  InputKeyDownEnd: InputKeyDownEnd,\n  InputKeyDownEnter: InputKeyDownEnter,\n  InputChange: InputChange,\n  InputBlur: InputBlur,\n  MenuMouseLeave: MenuMouseLeave,\n  ItemMouseMove: ItemMouseMove,\n  ItemClick: ItemClick,\n  ToggleButtonClick: ToggleButtonClick,\n  FunctionToggleMenu: FunctionToggleMenu,\n  FunctionOpenMenu: FunctionOpenMenu,\n  FunctionCloseMenu: FunctionCloseMenu,\n  FunctionSetHighlightedIndex: FunctionSetHighlightedIndex,\n  FunctionSelectItem: FunctionSelectItem,\n  FunctionSetInputValue: FunctionSetInputValue,\n  FunctionReset: FunctionReset$1,\n  ControlledPropUpdatedSelectedItem: ControlledPropUpdatedSelectedItem\n});\n\nfunction getInitialState$1(props) {\n  var initialState = getInitialState$2(props);\n  var selectedItem = initialState.selectedItem;\n  var inputValue = initialState.inputValue;\n\n  if (inputValue === '' && selectedItem && props.defaultInputValue === undefined && props.initialInputValue === undefined && props.inputValue === undefined) {\n    inputValue = props.itemToString(selectedItem);\n  }\n\n  return _extends({}, initialState, {\n    inputValue: inputValue\n  });\n}\n\nvar propTypes$1 = {\n  items: PropTypes.array.isRequired,\n  itemToString: PropTypes.func,\n  getA11yStatusMessage: PropTypes.func,\n  getA11ySelectionMessage: PropTypes.func,\n  circularNavigation: PropTypes.bool,\n  highlightedIndex: PropTypes.number,\n  defaultHighlightedIndex: PropTypes.number,\n  initialHighlightedIndex: PropTypes.number,\n  isOpen: PropTypes.bool,\n  defaultIsOpen: PropTypes.bool,\n  initialIsOpen: PropTypes.bool,\n  selectedItem: PropTypes.any,\n  initialSelectedItem: PropTypes.any,\n  defaultSelectedItem: PropTypes.any,\n  inputValue: PropTypes.string,\n  defaultInputValue: PropTypes.string,\n  initialInputValue: PropTypes.string,\n  id: PropTypes.string,\n  labelId: PropTypes.string,\n  menuId: PropTypes.string,\n  getItemId: PropTypes.func,\n  inputId: PropTypes.string,\n  toggleButtonId: PropTypes.string,\n  stateReducer: PropTypes.func,\n  onSelectedItemChange: PropTypes.func,\n  onHighlightedIndexChange: PropTypes.func,\n  onStateChange: PropTypes.func,\n  onIsOpenChange: PropTypes.func,\n  onInputValueChange: PropTypes.func,\n  environment: PropTypes.shape({\n    addEventListener: PropTypes.func,\n    removeEventListener: PropTypes.func,\n    document: PropTypes.shape({\n      getElementById: PropTypes.func,\n      activeElement: PropTypes.any,\n      body: PropTypes.any\n    })\n  })\n};\n/**\n * The useCombobox version of useControlledReducer, which also\n * checks if the controlled prop selectedItem changed between\n * renders. If so, it will also update inputValue with its\n * string equivalent. It uses the common useEnhancedReducer to\n * compute the rest of the state.\n *\n * @param {Function} reducer Reducer function from downshift.\n * @param {Object} initialState Initial state of the hook.\n * @param {Object} props The hook props.\n * @returns {Array} An array with the state and an action dispatcher.\n */\n\nfunction useControlledReducer(reducer, initialState, props) {\n  var previousSelectedItemRef = useRef();\n\n  var _useEnhancedReducer = useEnhancedReducer(reducer, initialState, props),\n      state = _useEnhancedReducer[0],\n      dispatch = _useEnhancedReducer[1]; // ToDo: if needed, make same approach as selectedItemChanged from Downshift.\n\n\n  useEffect(function () {\n    if (isControlledProp(props, 'selectedItem')) {\n      if (previousSelectedItemRef.current !== props.selectedItem) {\n        dispatch({\n          type: ControlledPropUpdatedSelectedItem,\n          inputValue: props.itemToString(props.selectedItem)\n        });\n      }\n\n      previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;\n    }\n  });\n  return [getState(state, props), dispatch];\n} // eslint-disable-next-line import/no-mutable-exports\n\n\nvar validatePropTypes$1 = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n  validatePropTypes$1 = function validatePropTypes(options, caller) {\n    PropTypes.checkPropTypes(propTypes$1, options, 'prop', caller.name);\n  };\n}\n\nvar defaultProps$1 = _extends({}, defaultProps$3, {\n  getA11yStatusMessage: getA11yStatusMessage$1,\n  circularNavigation: true\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftUseComboboxReducer(state, action) {\n  var type = action.type,\n      props = action.props,\n      shiftKey = action.shiftKey;\n  var changes;\n\n  switch (type) {\n    case ItemClick:\n      changes = {\n        isOpen: getDefaultValue$1(props, 'isOpen'),\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n        selectedItem: props.items[action.index],\n        inputValue: props.itemToString(props.items[action.index])\n      };\n      break;\n\n    case InputKeyDownArrowDown:\n      if (state.isOpen) {\n        changes = {\n          highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n        };\n      } else {\n        changes = {\n          highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n          isOpen: props.items.length >= 0\n        };\n      }\n\n      break;\n\n    case InputKeyDownArrowUp:\n      if (state.isOpen) {\n        changes = {\n          highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n        };\n      } else {\n        changes = {\n          highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n          isOpen: props.items.length >= 0\n        };\n      }\n\n      break;\n\n    case InputKeyDownEnter:\n      changes = _extends({}, state.isOpen && state.highlightedIndex >= 0 && {\n        selectedItem: props.items[state.highlightedIndex],\n        isOpen: getDefaultValue$1(props, 'isOpen'),\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n        inputValue: props.itemToString(props.items[state.highlightedIndex])\n      });\n      break;\n\n    case InputKeyDownEscape:\n      changes = _extends({\n        isOpen: false,\n        highlightedIndex: -1\n      }, !state.isOpen && {\n        selectedItem: null,\n        inputValue: ''\n      });\n      break;\n\n    case InputKeyDownHome:\n      changes = {\n        highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n      };\n      break;\n\n    case InputKeyDownEnd:\n      changes = {\n        highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n      };\n      break;\n\n    case InputBlur:\n      changes = _extends({\n        isOpen: false,\n        highlightedIndex: -1\n      }, state.highlightedIndex >= 0 && action.selectItem && {\n        selectedItem: props.items[state.highlightedIndex],\n        inputValue: props.itemToString(props.items[state.highlightedIndex])\n      });\n      break;\n\n    case InputChange:\n      changes = {\n        isOpen: true,\n        highlightedIndex: getDefaultValue$1(props, 'highlightedIndex'),\n        inputValue: action.inputValue\n      };\n      break;\n\n    case FunctionSelectItem:\n      changes = {\n        selectedItem: action.selectedItem,\n        inputValue: props.itemToString(action.selectedItem)\n      };\n      break;\n\n    case ControlledPropUpdatedSelectedItem:\n      changes = {\n        inputValue: action.inputValue\n      };\n      break;\n\n    default:\n      return downshiftCommonReducer(state, action, stateChangeTypes$1);\n  }\n\n  return _extends({}, state, changes);\n}\n/* eslint-enable complexity */\n\nvar _excluded$1 = [\"onMouseLeave\", \"refKey\", \"ref\"],\n    _excluded2$1 = [\"item\", \"index\", \"refKey\", \"ref\", \"onMouseMove\", \"onClick\", \"onPress\"],\n    _excluded3 = [\"onClick\", \"onPress\", \"refKey\", \"ref\"],\n    _excluded4 = [\"onKeyDown\", \"onChange\", \"onInput\", \"onBlur\", \"onChangeText\", \"refKey\", \"ref\"],\n    _excluded5 = [\"refKey\", \"ref\"];\nuseCombobox.stateChangeTypes = stateChangeTypes$1;\n\nfunction useCombobox(userProps) {\n  if (userProps === void 0) {\n    userProps = {};\n  }\n\n  validatePropTypes$1(userProps, useCombobox); // Props defaults and destructuring.\n\n  var props = _extends({}, defaultProps$1, userProps);\n\n  var initialIsOpen = props.initialIsOpen,\n      defaultIsOpen = props.defaultIsOpen,\n      items = props.items,\n      scrollIntoView = props.scrollIntoView,\n      environment = props.environment,\n      getA11yStatusMessage = props.getA11yStatusMessage,\n      getA11ySelectionMessage = props.getA11ySelectionMessage,\n      itemToString = props.itemToString; // Initial state depending on controlled props.\n\n  var initialState = getInitialState$1(props);\n\n  var _useControlledReducer = useControlledReducer(downshiftUseComboboxReducer, initialState, props),\n      state = _useControlledReducer[0],\n      dispatch = _useControlledReducer[1];\n\n  var isOpen = state.isOpen,\n      highlightedIndex = state.highlightedIndex,\n      selectedItem = state.selectedItem,\n      inputValue = state.inputValue; // Element refs.\n\n  var menuRef = useRef(null);\n  var itemRefs = useRef({});\n  var inputRef = useRef(null);\n  var toggleButtonRef = useRef(null);\n  var comboboxRef = useRef(null);\n  var isInitialMountRef = useRef(true); // prevent id re-generation between renders.\n\n  var elementIds = useElementIds(props); // used to keep track of how many items we had on previous cycle.\n\n  var previousResultCountRef = useRef(); // utility callback to get item element.\n\n  var latest = useLatestRef({\n    state: state,\n    props: props\n  });\n  var getItemNodeFromIndex = useCallback(function (index) {\n    return itemRefs.current[elementIds.getItemId(index)];\n  }, [elementIds]); // Effects.\n  // Sets a11y status message on changes in state.\n\n  useA11yMessageSetter(getA11yStatusMessage, [isOpen, highlightedIndex, inputValue, items], _extends({\n    isInitialMount: isInitialMountRef.current,\n    previousResultCount: previousResultCountRef.current,\n    items: items,\n    environment: environment,\n    itemToString: itemToString\n  }, state)); // Sets a11y status message on changes in selectedItem.\n\n  useA11yMessageSetter(getA11ySelectionMessage, [selectedItem], _extends({\n    isInitialMount: isInitialMountRef.current,\n    previousResultCount: previousResultCountRef.current,\n    items: items,\n    environment: environment,\n    itemToString: itemToString\n  }, state)); // Scroll on highlighted item if change comes from keyboard.\n\n  var shouldScrollRef = useScrollIntoView({\n    menuElement: menuRef.current,\n    highlightedIndex: highlightedIndex,\n    isOpen: isOpen,\n    itemRefs: itemRefs,\n    scrollIntoView: scrollIntoView,\n    getItemNodeFromIndex: getItemNodeFromIndex\n  });\n  useControlPropsValidator({\n    isInitialMount: isInitialMountRef.current,\n    props: props,\n    state: state\n  }); // Focus the input on first render if required.\n\n  useEffect(function () {\n    var focusOnOpen = initialIsOpen || defaultIsOpen || isOpen;\n\n    if (focusOnOpen && inputRef.current) {\n      inputRef.current.focus();\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, []);\n  useEffect(function () {\n    if (isInitialMountRef.current) {\n      return;\n    }\n\n    previousResultCountRef.current = items.length;\n  }); // Add mouse/touch events to document.\n\n  var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [comboboxRef, menuRef, toggleButtonRef], environment, function () {\n    dispatch({\n      type: InputBlur,\n      selectItem: false\n    });\n  });\n  var setGetterPropCallInfo = useGetterPropsCalledChecker('getInputProps', 'getComboboxProps', 'getMenuProps'); // Make initial ref false.\n\n  useEffect(function () {\n    isInitialMountRef.current = false;\n  }, []); // Reset itemRefs on close.\n\n  useEffect(function () {\n    if (!isOpen) {\n      itemRefs.current = {};\n    }\n  }, [isOpen]);\n  /* Event handler functions */\n\n  var inputKeyDownHandlers = useMemo(function () {\n    return {\n      ArrowDown: function ArrowDown(event) {\n        event.preventDefault();\n        dispatch({\n          type: InputKeyDownArrowDown,\n          shiftKey: event.shiftKey,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      ArrowUp: function ArrowUp(event) {\n        event.preventDefault();\n        dispatch({\n          type: InputKeyDownArrowUp,\n          shiftKey: event.shiftKey,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      Home: function Home(event) {\n        if (!latest.current.state.isOpen) {\n          return;\n        }\n\n        event.preventDefault();\n        dispatch({\n          type: InputKeyDownHome,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      End: function End(event) {\n        if (!latest.current.state.isOpen) {\n          return;\n        }\n\n        event.preventDefault();\n        dispatch({\n          type: InputKeyDownEnd,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      },\n      Escape: function Escape() {\n        var latestState = latest.current.state;\n\n        if (latestState.isOpen || latestState.inputValue || latestState.selectedItem || latestState.highlightedIndex > -1) {\n          dispatch({\n            type: InputKeyDownEscape\n          });\n        }\n      },\n      Enter: function Enter(event) {\n        var latestState = latest.current.state; // if closed or no highlighted index, do nothing.\n\n        if (!latestState.isOpen || latestState.highlightedIndex < 0 || event.which === 229 // if IME composing, wait for next Enter keydown event.\n        ) {\n          return;\n        }\n\n        event.preventDefault();\n        dispatch({\n          type: InputKeyDownEnter,\n          getItemNodeFromIndex: getItemNodeFromIndex\n        });\n      }\n    };\n  }, [dispatch, latest, getItemNodeFromIndex]); // Getter props.\n\n  var getLabelProps = useCallback(function (labelProps) {\n    return _extends({\n      id: elementIds.labelId,\n      htmlFor: elementIds.inputId\n    }, labelProps);\n  }, [elementIds]);\n  var getMenuProps = useCallback(function (_temp, _temp2) {\n    var _extends2;\n\n    var _ref = _temp === void 0 ? {} : _temp,\n        onMouseLeave = _ref.onMouseLeave,\n        _ref$refKey = _ref.refKey,\n        refKey = _ref$refKey === void 0 ? 'ref' : _ref$refKey,\n        ref = _ref.ref,\n        rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n    var _ref2 = _temp2 === void 0 ? {} : _temp2,\n        _ref2$suppressRefErro = _ref2.suppressRefError,\n        suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n\n    setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);\n    return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {\n      menuRef.current = menuNode;\n    }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {\n      dispatch({\n        type: MenuMouseLeave\n      });\n    }), _extends2), rest);\n  }, [dispatch, setGetterPropCallInfo, elementIds]);\n  var getItemProps = useCallback(function (_temp3) {\n    var _extends3, _ref4;\n\n    var _ref3 = _temp3 === void 0 ? {} : _temp3,\n        item = _ref3.item,\n        index = _ref3.index,\n        _ref3$refKey = _ref3.refKey,\n        refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n        ref = _ref3.ref,\n        onMouseMove = _ref3.onMouseMove,\n        onClick = _ref3.onClick;\n        _ref3.onPress;\n        var rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$1);\n\n    var _latest$current = latest.current,\n        latestProps = _latest$current.props,\n        latestState = _latest$current.state;\n    var itemIndex = getItemIndex(index, item, latestProps.items);\n\n    if (itemIndex < 0) {\n      throw new Error('Pass either item or item index in getItemProps!');\n    }\n\n    var onSelectKey = 'onClick';\n    var customClickHandler = onClick;\n\n    var itemHandleMouseMove = function itemHandleMouseMove() {\n      if (index === latestState.highlightedIndex) {\n        return;\n      }\n\n      shouldScrollRef.current = false;\n      dispatch({\n        type: ItemMouseMove,\n        index: index\n      });\n    };\n\n    var itemHandleClick = function itemHandleClick() {\n      dispatch({\n        type: ItemClick,\n        index: index\n      });\n\n      if (inputRef.current) {\n        inputRef.current.focus();\n      }\n    };\n\n    return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (itemNode) {\n      if (itemNode) {\n        itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n      }\n    }), _extends3.role = 'option', _extends3['aria-selected'] = \"\" + (itemIndex === latestState.highlightedIndex), _extends3.id = elementIds.getItemId(itemIndex), _extends3), !rest.disabled && (_ref4 = {\n      onMouseMove: callAllEventHandlers(onMouseMove, itemHandleMouseMove)\n    }, _ref4[onSelectKey] = callAllEventHandlers(customClickHandler, itemHandleClick), _ref4), rest);\n  }, [dispatch, latest, shouldScrollRef, elementIds]);\n  var getToggleButtonProps = useCallback(function (_temp4) {\n    var _extends4;\n\n    var _ref5 = _temp4 === void 0 ? {} : _temp4,\n        onClick = _ref5.onClick;\n        _ref5.onPress;\n        var _ref5$refKey = _ref5.refKey,\n        refKey = _ref5$refKey === void 0 ? 'ref' : _ref5$refKey,\n        ref = _ref5.ref,\n        rest = _objectWithoutPropertiesLoose(_ref5, _excluded3);\n\n    var toggleButtonHandleClick = function toggleButtonHandleClick() {\n      dispatch({\n        type: ToggleButtonClick\n      });\n\n      if (!latest.current.state.isOpen && inputRef.current) {\n        inputRef.current.focus();\n      }\n    };\n\n    return _extends((_extends4 = {}, _extends4[refKey] = handleRefs(ref, function (toggleButtonNode) {\n      toggleButtonRef.current = toggleButtonNode;\n    }), _extends4.id = elementIds.toggleButtonId, _extends4.tabIndex = -1, _extends4), !rest.disabled && _extends({}, {\n      onClick: callAllEventHandlers(onClick, toggleButtonHandleClick)\n    }), rest);\n  }, [dispatch, latest, elementIds]);\n  var getInputProps = useCallback(function (_temp5, _temp6) {\n    var _extends5;\n\n    var _ref6 = _temp5 === void 0 ? {} : _temp5,\n        onKeyDown = _ref6.onKeyDown,\n        onChange = _ref6.onChange,\n        onInput = _ref6.onInput,\n        onBlur = _ref6.onBlur;\n        _ref6.onChangeText;\n        var _ref6$refKey = _ref6.refKey,\n        refKey = _ref6$refKey === void 0 ? 'ref' : _ref6$refKey,\n        ref = _ref6.ref,\n        rest = _objectWithoutPropertiesLoose(_ref6, _excluded4);\n\n    var _ref7 = _temp6 === void 0 ? {} : _temp6,\n        _ref7$suppressRefErro = _ref7.suppressRefError,\n        suppressRefError = _ref7$suppressRefErro === void 0 ? false : _ref7$suppressRefErro;\n\n    setGetterPropCallInfo('getInputProps', suppressRefError, refKey, inputRef);\n    var latestState = latest.current.state;\n\n    var inputHandleKeyDown = function inputHandleKeyDown(event) {\n      var key = normalizeArrowKey(event);\n\n      if (key && inputKeyDownHandlers[key]) {\n        inputKeyDownHandlers[key](event);\n      }\n    };\n\n    var inputHandleChange = function inputHandleChange(event) {\n      dispatch({\n        type: InputChange,\n        inputValue: event.target.value\n      });\n    };\n\n    var inputHandleBlur = function inputHandleBlur() {\n      /* istanbul ignore else */\n      if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {\n        dispatch({\n          type: InputBlur,\n          selectItem: true\n        });\n      }\n    };\n    /* istanbul ignore next (preact) */\n\n\n    var onChangeKey = 'onChange';\n    var eventHandlers = {};\n\n    if (!rest.disabled) {\n      var _eventHandlers;\n\n      eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, inputHandleBlur), _eventHandlers);\n    }\n\n    return _extends((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {\n      inputRef.current = inputNode;\n    }), _extends5.id = elementIds.inputId, _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5), latestState.isOpen && latestState.highlightedIndex > -1 && {\n      'aria-activedescendant': elementIds.getItemId(latestState.highlightedIndex)\n    }, {\n      'aria-labelledby': elementIds.labelId,\n      // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion\n      // revert back since autocomplete=\"nope\" is ignored on latest Chrome and Opera\n      autoComplete: 'off',\n      value: latestState.inputValue\n    }, eventHandlers, rest);\n  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);\n  var getComboboxProps = useCallback(function (_temp7, _temp8) {\n    var _extends6;\n\n    var _ref8 = _temp7 === void 0 ? {} : _temp7,\n        _ref8$refKey = _ref8.refKey,\n        refKey = _ref8$refKey === void 0 ? 'ref' : _ref8$refKey,\n        ref = _ref8.ref,\n        rest = _objectWithoutPropertiesLoose(_ref8, _excluded5);\n\n    var _ref9 = _temp8 === void 0 ? {} : _temp8,\n        _ref9$suppressRefErro = _ref9.suppressRefError,\n        suppressRefError = _ref9$suppressRefErro === void 0 ? false : _ref9$suppressRefErro;\n\n    setGetterPropCallInfo('getComboboxProps', suppressRefError, refKey, comboboxRef);\n    return _extends((_extends6 = {}, _extends6[refKey] = handleRefs(ref, function (comboboxNode) {\n      comboboxRef.current = comboboxNode;\n    }), _extends6.role = 'combobox', _extends6['aria-haspopup'] = 'listbox', _extends6['aria-owns'] = elementIds.menuId, _extends6['aria-expanded'] = latest.current.state.isOpen, _extends6), rest);\n  }, [latest, setGetterPropCallInfo, elementIds]); // returns\n\n  var toggleMenu = useCallback(function () {\n    dispatch({\n      type: FunctionToggleMenu\n    });\n  }, [dispatch]);\n  var closeMenu = useCallback(function () {\n    dispatch({\n      type: FunctionCloseMenu\n    });\n  }, [dispatch]);\n  var openMenu = useCallback(function () {\n    dispatch({\n      type: FunctionOpenMenu\n    });\n  }, [dispatch]);\n  var setHighlightedIndex = useCallback(function (newHighlightedIndex) {\n    dispatch({\n      type: FunctionSetHighlightedIndex,\n      highlightedIndex: newHighlightedIndex\n    });\n  }, [dispatch]);\n  var selectItem = useCallback(function (newSelectedItem) {\n    dispatch({\n      type: FunctionSelectItem,\n      selectedItem: newSelectedItem\n    });\n  }, [dispatch]);\n  var setInputValue = useCallback(function (newInputValue) {\n    dispatch({\n      type: FunctionSetInputValue,\n      inputValue: newInputValue\n    });\n  }, [dispatch]);\n  var reset = useCallback(function () {\n    dispatch({\n      type: FunctionReset$1\n    });\n  }, [dispatch]);\n  return {\n    // prop getters.\n    getItemProps: getItemProps,\n    getLabelProps: getLabelProps,\n    getMenuProps: getMenuProps,\n    getInputProps: getInputProps,\n    getComboboxProps: getComboboxProps,\n    getToggleButtonProps: getToggleButtonProps,\n    // actions.\n    toggleMenu: toggleMenu,\n    openMenu: openMenu,\n    closeMenu: closeMenu,\n    setHighlightedIndex: setHighlightedIndex,\n    setInputValue: setInputValue,\n    selectItem: selectItem,\n    reset: reset,\n    // state.\n    highlightedIndex: highlightedIndex,\n    isOpen: isOpen,\n    selectedItem: selectedItem,\n    inputValue: inputValue\n  };\n}\n\nvar defaultStateValues = {\n  activeIndex: -1,\n  selectedItems: []\n};\n/**\n * Returns the initial value for a state key in the following order:\n * 1. controlled prop, 2. initial prop, 3. default prop, 4. default\n * value from Downshift.\n *\n * @param {Object} props Props passed to the hook.\n * @param {string} propKey Props key to generate the value for.\n * @returns {any} The initial value for that prop.\n */\n\nfunction getInitialValue(props, propKey) {\n  return getInitialValue$1(props, propKey, defaultStateValues);\n}\n/**\n * Returns the default value for a state key in the following order:\n * 1. controlled prop, 2. default prop, 3. default value from Downshift.\n *\n * @param {Object} props Props passed to the hook.\n * @param {string} propKey Props key to generate the value for.\n * @returns {any} The initial value for that prop.\n */\n\n\nfunction getDefaultValue(props, propKey) {\n  return getDefaultValue$1(props, propKey, defaultStateValues);\n}\n/**\n * Gets the initial state based on the provided props. It uses initial, default\n * and controlled props related to state in order to compute the initial value.\n *\n * @param {Object} props Props passed to the hook.\n * @returns {Object} The initial state.\n */\n\n\nfunction getInitialState(props) {\n  var activeIndex = getInitialValue(props, 'activeIndex');\n  var selectedItems = getInitialValue(props, 'selectedItems');\n  return {\n    activeIndex: activeIndex,\n    selectedItems: selectedItems\n  };\n}\n/**\n * Returns true if dropdown keydown operation is permitted. Should not be\n * allowed on keydown with modifier keys (ctrl, alt, shift, meta), on\n * input element with text content that is either highlighted or selection\n * cursor is not at the starting position.\n *\n * @param {KeyboardEvent} event The event from keydown.\n * @returns {boolean} Whether the operation is allowed.\n */\n\n\nfunction isKeyDownOperationPermitted(event) {\n  if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {\n    return false;\n  }\n\n  var element = event.target;\n\n  if (element instanceof HTMLInputElement && // if element is a text input\n  element.value !== '' && (element.selectionStart !== 0 || element.selectionEnd !== 0)) {\n    return false;\n  }\n\n  return true;\n}\n/**\n * Returns a message to be added to aria-live region when item is removed.\n *\n * @param {Object} selectionParameters Parameters required to build the message.\n * @returns {string} The a11y message.\n */\n\n\nfunction getA11yRemovalMessage(selectionParameters) {\n  var removedSelectedItem = selectionParameters.removedSelectedItem,\n      itemToStringLocal = selectionParameters.itemToString;\n  return itemToStringLocal(removedSelectedItem) + \" has been removed.\";\n}\n\nvar propTypes = {\n  selectedItems: PropTypes.array,\n  initialSelectedItems: PropTypes.array,\n  defaultSelectedItems: PropTypes.array,\n  itemToString: PropTypes.func,\n  getA11yRemovalMessage: PropTypes.func,\n  stateReducer: PropTypes.func,\n  activeIndex: PropTypes.number,\n  initialActiveIndex: PropTypes.number,\n  defaultActiveIndex: PropTypes.number,\n  onActiveIndexChange: PropTypes.func,\n  onSelectedItemsChange: PropTypes.func,\n  keyNavigationNext: PropTypes.string,\n  keyNavigationPrevious: PropTypes.string,\n  environment: PropTypes.shape({\n    addEventListener: PropTypes.func,\n    removeEventListener: PropTypes.func,\n    document: PropTypes.shape({\n      getElementById: PropTypes.func,\n      activeElement: PropTypes.any,\n      body: PropTypes.any\n    })\n  })\n};\nvar defaultProps = {\n  itemToString: defaultProps$3.itemToString,\n  stateReducer: defaultProps$3.stateReducer,\n  environment: defaultProps$3.environment,\n  getA11yRemovalMessage: getA11yRemovalMessage,\n  keyNavigationNext: 'ArrowRight',\n  keyNavigationPrevious: 'ArrowLeft'\n}; // eslint-disable-next-line import/no-mutable-exports\n\nvar validatePropTypes = noop;\n/* istanbul ignore next */\n\nif (process.env.NODE_ENV !== 'production') {\n  validatePropTypes = function validatePropTypes(options, caller) {\n    PropTypes.checkPropTypes(propTypes, options, 'prop', caller.name);\n  };\n}\n\nvar SelectedItemClick = process.env.NODE_ENV !== \"production\" ? '__selected_item_click__' : 0;\nvar SelectedItemKeyDownDelete = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_delete__' : 1;\nvar SelectedItemKeyDownBackspace = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_backspace__' : 2;\nvar SelectedItemKeyDownNavigationNext = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_navigation_next__' : 3;\nvar SelectedItemKeyDownNavigationPrevious = process.env.NODE_ENV !== \"production\" ? '__selected_item_keydown_navigation_previous__' : 4;\nvar DropdownKeyDownNavigationPrevious = process.env.NODE_ENV !== \"production\" ? '__dropdown_keydown_navigation_previous__' : 5;\nvar DropdownKeyDownBackspace = process.env.NODE_ENV !== \"production\" ? '__dropdown_keydown_backspace__' : 6;\nvar DropdownClick = process.env.NODE_ENV !== \"production\" ? '__dropdown_click__' : 7;\nvar FunctionAddSelectedItem = process.env.NODE_ENV !== \"production\" ? '__function_add_selected_item__' : 8;\nvar FunctionRemoveSelectedItem = process.env.NODE_ENV !== \"production\" ? '__function_remove_selected_item__' : 9;\nvar FunctionSetSelectedItems = process.env.NODE_ENV !== \"production\" ? '__function_set_selected_items__' : 10;\nvar FunctionSetActiveIndex = process.env.NODE_ENV !== \"production\" ? '__function_set_active_index__' : 11;\nvar FunctionReset = process.env.NODE_ENV !== \"production\" ? '__function_reset__' : 12;\n\nvar stateChangeTypes = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  SelectedItemClick: SelectedItemClick,\n  SelectedItemKeyDownDelete: SelectedItemKeyDownDelete,\n  SelectedItemKeyDownBackspace: SelectedItemKeyDownBackspace,\n  SelectedItemKeyDownNavigationNext: SelectedItemKeyDownNavigationNext,\n  SelectedItemKeyDownNavigationPrevious: SelectedItemKeyDownNavigationPrevious,\n  DropdownKeyDownNavigationPrevious: DropdownKeyDownNavigationPrevious,\n  DropdownKeyDownBackspace: DropdownKeyDownBackspace,\n  DropdownClick: DropdownClick,\n  FunctionAddSelectedItem: FunctionAddSelectedItem,\n  FunctionRemoveSelectedItem: FunctionRemoveSelectedItem,\n  FunctionSetSelectedItems: FunctionSetSelectedItems,\n  FunctionSetActiveIndex: FunctionSetActiveIndex,\n  FunctionReset: FunctionReset\n});\n\n/* eslint-disable complexity */\n\nfunction downshiftMultipleSelectionReducer(state, action) {\n  var type = action.type,\n      index = action.index,\n      props = action.props,\n      selectedItem = action.selectedItem;\n  var activeIndex = state.activeIndex,\n      selectedItems = state.selectedItems;\n  var changes;\n\n  switch (type) {\n    case SelectedItemClick:\n      changes = {\n        activeIndex: index\n      };\n      break;\n\n    case SelectedItemKeyDownNavigationPrevious:\n      changes = {\n        activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1\n      };\n      break;\n\n    case SelectedItemKeyDownNavigationNext:\n      changes = {\n        activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1\n      };\n      break;\n\n    case SelectedItemKeyDownBackspace:\n    case SelectedItemKeyDownDelete:\n      {\n        var newActiveIndex = activeIndex;\n\n        if (selectedItems.length === 1) {\n          newActiveIndex = -1;\n        } else if (activeIndex === selectedItems.length - 1) {\n          newActiveIndex = selectedItems.length - 2;\n        }\n\n        changes = _extends({\n          selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))\n        }, {\n          activeIndex: newActiveIndex\n        });\n        break;\n      }\n\n    case DropdownKeyDownNavigationPrevious:\n      changes = {\n        activeIndex: selectedItems.length - 1\n      };\n      break;\n\n    case DropdownKeyDownBackspace:\n      changes = {\n        selectedItems: selectedItems.slice(0, selectedItems.length - 1)\n      };\n      break;\n\n    case FunctionAddSelectedItem:\n      changes = {\n        selectedItems: [].concat(selectedItems, [selectedItem])\n      };\n      break;\n\n    case DropdownClick:\n      changes = {\n        activeIndex: -1\n      };\n      break;\n\n    case FunctionRemoveSelectedItem:\n      {\n        var _newActiveIndex = activeIndex;\n        var selectedItemIndex = selectedItems.indexOf(selectedItem);\n\n        if (selectedItems.length === 1) {\n          _newActiveIndex = -1;\n        } else if (selectedItemIndex === selectedItems.length - 1) {\n          _newActiveIndex = selectedItems.length - 2;\n        }\n\n        changes = _extends({\n          selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1))\n        }, {\n          activeIndex: _newActiveIndex\n        });\n        break;\n      }\n\n    case FunctionSetSelectedItems:\n      {\n        var newSelectedItems = action.selectedItems;\n        changes = {\n          selectedItems: newSelectedItems\n        };\n        break;\n      }\n\n    case FunctionSetActiveIndex:\n      {\n        var _newActiveIndex2 = action.activeIndex;\n        changes = {\n          activeIndex: _newActiveIndex2\n        };\n        break;\n      }\n\n    case FunctionReset:\n      changes = {\n        activeIndex: getDefaultValue(props, 'activeIndex'),\n        selectedItems: getDefaultValue(props, 'selectedItems')\n      };\n      break;\n\n    default:\n      throw new Error('Reducer called without proper action type.');\n  }\n\n  return _extends({}, state, changes);\n}\n\nvar _excluded = [\"refKey\", \"ref\", \"onClick\", \"onKeyDown\", \"selectedItem\", \"index\"],\n    _excluded2 = [\"refKey\", \"ref\", \"onKeyDown\", \"onClick\", \"preventKeyAction\"];\nuseMultipleSelection.stateChangeTypes = stateChangeTypes;\n\nfunction useMultipleSelection(userProps) {\n  if (userProps === void 0) {\n    userProps = {};\n  }\n\n  validatePropTypes(userProps, useMultipleSelection); // Props defaults and destructuring.\n\n  var props = _extends({}, defaultProps, userProps);\n\n  var getA11yRemovalMessage = props.getA11yRemovalMessage,\n      itemToString = props.itemToString,\n      environment = props.environment,\n      keyNavigationNext = props.keyNavigationNext,\n      keyNavigationPrevious = props.keyNavigationPrevious; // Reducer init.\n\n  var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, getInitialState(props), props),\n      state = _useControlledReducer[0],\n      dispatch = _useControlledReducer[1];\n\n  var activeIndex = state.activeIndex,\n      selectedItems = state.selectedItems; // Refs.\n\n  var isInitialMountRef = useRef(true);\n  var dropdownRef = useRef(null);\n  var previousSelectedItemsRef = useRef(selectedItems);\n  var selectedItemRefs = useRef();\n  selectedItemRefs.current = [];\n  var latest = useLatestRef({\n    state: state,\n    props: props\n  }); // Effects.\n\n  /* Sets a11y status message on changes in selectedItem. */\n\n  useEffect(function () {\n    if (isInitialMountRef.current) {\n      return;\n    }\n\n    if (selectedItems.length < previousSelectedItemsRef.current.length) {\n      var removedSelectedItem = previousSelectedItemsRef.current.find(function (item) {\n        return selectedItems.indexOf(item) < 0;\n      });\n      setStatus(getA11yRemovalMessage({\n        itemToString: itemToString,\n        resultCount: selectedItems.length,\n        removedSelectedItem: removedSelectedItem,\n        activeIndex: activeIndex,\n        activeSelectedItem: selectedItems[activeIndex]\n      }), environment.document);\n    }\n\n    previousSelectedItemsRef.current = selectedItems; // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [selectedItems.length]); // Sets focus on active item.\n\n  useEffect(function () {\n    if (isInitialMountRef.current) {\n      return;\n    }\n\n    if (activeIndex === -1 && dropdownRef.current) {\n      dropdownRef.current.focus();\n    } else if (selectedItemRefs.current[activeIndex]) {\n      selectedItemRefs.current[activeIndex].focus();\n    }\n  }, [activeIndex]);\n  useControlPropsValidator({\n    isInitialMount: isInitialMountRef.current,\n    props: props,\n    state: state\n  });\n  var setGetterPropCallInfo = useGetterPropsCalledChecker('getDropdownProps'); // Make initial ref false.\n\n  useEffect(function () {\n    isInitialMountRef.current = false;\n  }, []); // Event handler functions.\n\n  var selectedItemKeyDownHandlers = useMemo(function () {\n    var _ref;\n\n    return _ref = {}, _ref[keyNavigationPrevious] = function () {\n      dispatch({\n        type: SelectedItemKeyDownNavigationPrevious\n      });\n    }, _ref[keyNavigationNext] = function () {\n      dispatch({\n        type: SelectedItemKeyDownNavigationNext\n      });\n    }, _ref.Delete = function Delete() {\n      dispatch({\n        type: SelectedItemKeyDownDelete\n      });\n    }, _ref.Backspace = function Backspace() {\n      dispatch({\n        type: SelectedItemKeyDownBackspace\n      });\n    }, _ref;\n  }, [dispatch, keyNavigationNext, keyNavigationPrevious]);\n  var dropdownKeyDownHandlers = useMemo(function () {\n    var _ref2;\n\n    return _ref2 = {}, _ref2[keyNavigationPrevious] = function (event) {\n      if (isKeyDownOperationPermitted(event)) {\n        dispatch({\n          type: DropdownKeyDownNavigationPrevious\n        });\n      }\n    }, _ref2.Backspace = function Backspace(event) {\n      if (isKeyDownOperationPermitted(event)) {\n        dispatch({\n          type: DropdownKeyDownBackspace\n        });\n      }\n    }, _ref2;\n  }, [dispatch, keyNavigationPrevious]); // Getter props.\n\n  var getSelectedItemProps = useCallback(function (_temp) {\n    var _extends2;\n\n    var _ref3 = _temp === void 0 ? {} : _temp,\n        _ref3$refKey = _ref3.refKey,\n        refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n        ref = _ref3.ref,\n        onClick = _ref3.onClick,\n        onKeyDown = _ref3.onKeyDown,\n        selectedItem = _ref3.selectedItem,\n        index = _ref3.index,\n        rest = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var latestState = latest.current.state;\n    var itemIndex = getItemIndex(index, selectedItem, latestState.selectedItems);\n\n    if (itemIndex < 0) {\n      throw new Error('Pass either selectedItem or index in getSelectedItemProps!');\n    }\n\n    var selectedItemHandleClick = function selectedItemHandleClick() {\n      dispatch({\n        type: SelectedItemClick,\n        index: index\n      });\n    };\n\n    var selectedItemHandleKeyDown = function selectedItemHandleKeyDown(event) {\n      var key = normalizeArrowKey(event);\n\n      if (key && selectedItemKeyDownHandlers[key]) {\n        selectedItemKeyDownHandlers[key](event);\n      }\n    };\n\n    return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (selectedItemNode) {\n      if (selectedItemNode) {\n        selectedItemRefs.current.push(selectedItemNode);\n      }\n    }), _extends2.tabIndex = index === latestState.activeIndex ? 0 : -1, _extends2.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends2.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends2), rest);\n  }, [dispatch, latest, selectedItemKeyDownHandlers]);\n  var getDropdownProps = useCallback(function (_temp2, _temp3) {\n    var _extends3;\n\n    var _ref4 = _temp2 === void 0 ? {} : _temp2,\n        _ref4$refKey = _ref4.refKey,\n        refKey = _ref4$refKey === void 0 ? 'ref' : _ref4$refKey,\n        ref = _ref4.ref,\n        onKeyDown = _ref4.onKeyDown,\n        onClick = _ref4.onClick,\n        _ref4$preventKeyActio = _ref4.preventKeyAction,\n        preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio,\n        rest = _objectWithoutPropertiesLoose(_ref4, _excluded2);\n\n    var _ref5 = _temp3 === void 0 ? {} : _temp3,\n        _ref5$suppressRefErro = _ref5.suppressRefError,\n        suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;\n\n    setGetterPropCallInfo('getDropdownProps', suppressRefError, refKey, dropdownRef);\n\n    var dropdownHandleKeyDown = function dropdownHandleKeyDown(event) {\n      var key = normalizeArrowKey(event);\n\n      if (key && dropdownKeyDownHandlers[key]) {\n        dropdownKeyDownHandlers[key](event);\n      }\n    };\n\n    var dropdownHandleClick = function dropdownHandleClick() {\n      dispatch({\n        type: DropdownClick\n      });\n    };\n\n    return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (dropdownNode) {\n      if (dropdownNode) {\n        dropdownRef.current = dropdownNode;\n      }\n    }), _extends3), !preventKeyAction && {\n      onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),\n      onClick: callAllEventHandlers(onClick, dropdownHandleClick)\n    }, rest);\n  }, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]); // returns\n\n  var addSelectedItem = useCallback(function (selectedItem) {\n    dispatch({\n      type: FunctionAddSelectedItem,\n      selectedItem: selectedItem\n    });\n  }, [dispatch]);\n  var removeSelectedItem = useCallback(function (selectedItem) {\n    dispatch({\n      type: FunctionRemoveSelectedItem,\n      selectedItem: selectedItem\n    });\n  }, [dispatch]);\n  var setSelectedItems = useCallback(function (newSelectedItems) {\n    dispatch({\n      type: FunctionSetSelectedItems,\n      selectedItems: newSelectedItems\n    });\n  }, [dispatch]);\n  var setActiveIndex = useCallback(function (newActiveIndex) {\n    dispatch({\n      type: FunctionSetActiveIndex,\n      activeIndex: newActiveIndex\n    });\n  }, [dispatch]);\n  var reset = useCallback(function () {\n    dispatch({\n      type: FunctionReset\n    });\n  }, [dispatch]);\n  return {\n    getSelectedItemProps: getSelectedItemProps,\n    getDropdownProps: getDropdownProps,\n    addSelectedItem: addSelectedItem,\n    removeSelectedItem: removeSelectedItem,\n    setSelectedItems: setSelectedItems,\n    setActiveIndex: setActiveIndex,\n    reset: reset,\n    selectedItems: selectedItems,\n    activeIndex: activeIndex\n  };\n}\n\nexport { Downshift$1 as default, resetIdCounter, useCombobox, useMultipleSelection, useSelect };\n","import {\n\tcreatePortal,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateElement,\n\tComponent,\n\tFragment,\n} from '@wordpress/element'\nimport { maybeTransformUnorderedChoices } from '../helpers/parse-choices.js'\nimport Downshift from 'downshift'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\n\nimport usePopoverMaker from '../helpers/usePopoverMaker'\n\nconst Select = ({\n\tvalue,\n\toption,\n\toption: {\n\t\tchoices,\n\t\ttabletChoices,\n\t\tmobileChoices,\n\t\tplaceholder,\n\t\tsearchPlaceholder,\n\t\tdefaultToFirstItem = true,\n\t\tsearch = false,\n\t\tinputClassName = '',\n\t\tselectInputStart,\n\t\tappendToBody = false,\n\t},\n\tonInputValueChange = () => {},\n\trenderItemFor = (item) => item.value,\n\tonChange,\n\tdevice = 'desktop',\n}) => {\n\tconst inputRef = useRef(null)\n\tconst [tempState, setTempState] = useState(null)\n\n\tlet deviceChoices = choices\n\n\tif (device === 'tablet' && tabletChoices) {\n\t\tdeviceChoices = tabletChoices\n\t}\n\n\tif (device === 'mobile' && mobileChoices) {\n\t\tdeviceChoices = mobileChoices\n\t}\n\n\tconst orderedChoices = maybeTransformUnorderedChoices(deviceChoices)\n\n\tlet potentialValue =\n\t\tvalue || !defaultToFirstItem\n\t\t\t? value\n\t\t\t: parseInt(value, 10) === 0\n\t\t\t? value\n\t\t\t: (orderedChoices[0] || {}).key\n\n\tconst { styles, popoverProps } = usePopoverMaker({\n\t\tref: inputRef,\n\t\tdefaultHeight: 228,\n\t\tshouldCalculate: appendToBody,\n\t})\n\n\tuseEffect(() => {\n\t\tif (!appendToBody) {\n\t\t\treturn\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tsetTempState(Math.round())\n\t\t}, 50)\n\t}, [])\n\n\tlet maybeSelectedItem = orderedChoices.find(\n\t\t({ key }) => key === potentialValue\n\t)\n\n\tif (!maybeSelectedItem) {\n\t\tmaybeSelectedItem = orderedChoices.find(\n\t\t\t({ key }) => parseInt(key) === parseInt(potentialValue)\n\t\t)\n\t}\n\n\treturn (\n\t\t<Downshift\n\t\t\tkey={maybeSelectedItem?.key || 'downshift'}\n\t\t\tonInputValueChange={(value) => {\n\t\t\t\tonInputValueChange(value)\n\t\t\t}}\n\t\t\tselectedItem={\n\t\t\t\tmaybeSelectedItem || !defaultToFirstItem\n\t\t\t\t\t? potentialValue\n\t\t\t\t\t: (orderedChoices[0] || {}).key\n\t\t\t}\n\t\t\tonChange={(selection) => {\n\t\t\t\tonChange(selection)\n\t\t\t}}\n\t\t\titemToString={(item) => {\n\t\t\t\tlet maybeSelectedItem = orderedChoices.find(\n\t\t\t\t\t({ key }) => key === item\n\t\t\t\t)\n\n\t\t\t\tif (!maybeSelectedItem) {\n\t\t\t\t\tmaybeSelectedItem = orderedChoices.find(\n\t\t\t\t\t\t({ key }) => parseInt(key) === parseInt(item)\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn item && maybeSelectedItem ? maybeSelectedItem.value : ''\n\t\t\t}}>\n\t\t\t{({\n\t\t\t\tgetInputProps,\n\t\t\t\tgetItemProps,\n\t\t\t\tgetLabelProps,\n\t\t\t\tgetMenuProps,\n\t\t\t\tisOpen,\n\t\t\t\tinputValue,\n\t\t\t\thighlightedIndex,\n\t\t\t\tselectedItem,\n\t\t\t\topenMenu,\n\t\t\t\ttoggleMenu,\n\t\t\t\tsetState,\n\t\t\t}) => {\n\t\t\t\tlet dropdown = null\n\n\t\t\t\tif (isOpen) {\n\t\t\t\t\tdropdown = (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t{...getMenuProps({\n\t\t\t\t\t\t\t\tclassName: classnames('ct-select-dropdown', {\n\t\t\t\t\t\t\t\t\t'ct-fixed': appendToBody,\n\t\t\t\t\t\t\t\t}),\n\n\t\t\t\t\t\t\t\t...(appendToBody ? popoverProps : {}),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tstyle={appendToBody ? styles : {}}>\n\t\t\t\t\t\t\t{orderedChoices\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t\t\t!inputValue ||\n\t\t\t\t\t\t\t\t\t\t(orderedChoices.find(\n\t\t\t\t\t\t\t\t\t\t\t({ key }) =>\n\t\t\t\t\t\t\t\t\t\t\t\tkey.toString() ===\n\t\t\t\t\t\t\t\t\t\t\t\tselectedItem.toString()\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t\torderedChoices.find(\n\t\t\t\t\t\t\t\t\t\t\t\t({ key }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey.toString() ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem.toString()\n\t\t\t\t\t\t\t\t\t\t\t).value === inputValue) ||\n\t\t\t\t\t\t\t\t\t\titem.value\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\t\t\t\tinputValue.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\t\t\titem.key\n\t\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\t\t\t\tinputValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.map((item, index) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={index}>\n\t\t\t\t\t\t\t\t\t\t{item.group &&\n\t\t\t\t\t\t\t\t\t\t\t(index === 0 ||\n\t\t\t\t\t\t\t\t\t\t\t\torderedChoices[index - 1]\n\t\t\t\t\t\t\t\t\t\t\t\t\t.group !==\n\t\t\t\t\t\t\t\t\t\t\t\t\torderedChoices[index]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.group) && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ct-select-dropdown-group\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${index}-group`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.group}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t{...getItemProps({\n\t\t\t\t\t\t\t\t\t\t\t\tkey: item.key,\n\t\t\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\t\t\titem: item.key,\n\t\t\t\t\t\t\t\t\t\t\t\tclassName: classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'ct-select-dropdown-item',\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thighlightedIndex ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tselected:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.key,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t\t\t\t{renderItemFor(item)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\n\t\t\t\t\tif (appendToBody) {\n\t\t\t\t\t\tdropdown = createPortal(dropdown, document.body)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t'ct-select-input 1',\n\t\t\t\t\t\t\tinputClassName\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t{selectInputStart && selectInputStart()}\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t{...getInputProps({\n\t\t\t\t\t\t\t\tonKeyDown: (e) => {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\te.key === 'ArrowDown' &&\n\t\t\t\t\t\t\t\t\t\tsearch &&\n\t\t\t\t\t\t\t\t\t\t!isOpen\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tsetState({\n\t\t\t\t\t\t\t\t\t\t\tinputValue: '',\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\ttoggleMenu()\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tlet popover\n\n\t\t\t\t\t\t\t\t\t\tif (appendToBody) {\n\t\t\t\t\t\t\t\t\t\t\tpopover = document.querySelector(\n\t\t\t\t\t\t\t\t\t\t\t\t'body > .ct-select-dropdown.ct-fixed .ct-select-dropdown-item.selected'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tpopover = inputRef.current\n\t\t\t\t\t\t\t\t\t\t\t\t.closest('.ct-select-input')\n\t\t\t\t\t\t\t\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'.ct-select-dropdown .ct-select-dropdown-item.selected'\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (popover) {\n\t\t\t\t\t\t\t\t\t\t\tlet popoverTop = popover.parentNode.getBoundingClientRect()\n\t\t\t\t\t\t\t\t\t\t\t\t.top\n\n\t\t\t\t\t\t\t\t\t\t\tlet itemTop = popover.getBoundingClientRect()\n\t\t\t\t\t\t\t\t\t\t\t\t.top\n\n\t\t\t\t\t\t\t\t\t\t\tpopover.parentNode.scrollTop =\n\t\t\t\t\t\t\t\t\t\t\t\titemTop - popoverTop\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tsetTempState(Math.round())\n\t\t\t\t\t\t\t\t\t}, 50)\n\n\t\t\t\t\t\t\t\t\tif (search) {\n\t\t\t\t\t\t\t\t\t\tsetState({\n\t\t\t\t\t\t\t\t\t\t\tinputValue: '',\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tref: inputRef,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\tsearch && isOpen\n\t\t\t\t\t\t\t\t\t? searchPlaceholder ||\n\t\t\t\t\t\t\t\t\t  __('Type to search...', 'blocksy')\n\t\t\t\t\t\t\t\t\t: placeholder ||\n\t\t\t\t\t\t\t\t\t  __('Select value...', 'blocksy')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treadOnly={search ? !isOpen : true}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{dropdown}\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}}\n\t\t</Downshift>\n\t)\n}\n\nexport default Select\n","import {\n\tcreateElement,\n\tComponent,\n\tcreateRef,\n\tFragment,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport linearScale from 'simple-linear-scale'\n\nimport OutsideClickHandler from './react-outside-click-handler'\n\nimport { __ } from 'ct-i18n'\n\nexport const clamp = (min, max, value) => Math.max(min, Math.min(max, value))\nconst clampMax = (max, value) => Math.min(max, value)\n\nexport const round = (value, decimalPlaces = 1) => {\n\tconst multiplier = Math.pow(10, decimalPlaces)\n\n\tconst rounded = Math.round(value * multiplier + Number.EPSILON) / multiplier\n\n\treturn rounded\n}\n\nvar roundWholeNumbers = function (num, precision) {\n\tnum = parseFloat(num)\n\tif (!precision) return num\n\treturn Math.round(num / precision) * precision\n}\n\nconst UnitsList = ({\n\toption,\n\tvalue,\n\tonChange,\n\tis_open,\n\ttoggleOpen,\n\tcurrentUnit,\n\tgetNumericValue,\n\tgetAllowedDecimalPlaces,\n\n\tforced_current_unit,\n\tsetForcedCurrentUnit,\n}) => {\n\tconst pickUnit = (unit) => {\n\t\tconst numericValue = getNumericValue()\n\n\t\tlet futureUnitDescriptor = option.units.find(\n\t\t\t({ unit: u }) => u === unit\n\t\t)\n\n\t\tif (Object.keys(futureUnitDescriptor).includes('min')) {\n\t\t\tonChange(\n\t\t\t\t`${round(\n\t\t\t\t\tclamp(\n\t\t\t\t\t\toption.units.find(({ unit: u }) => u === unit).min,\n\t\t\t\t\t\toption.units.find(({ unit: u }) => u === unit).max,\n\t\t\t\t\t\tnumericValue === '' ? -Infinity : numericValue\n\t\t\t\t\t),\n\t\t\t\t\tgetAllowedDecimalPlaces(unit)\n\t\t\t\t)}${unit}`\n\t\t\t)\n\t\t} else {\n\t\t\tonChange(value)\n\t\t}\n\n\t\tif (\n\t\t\tfutureUnitDescriptor.unit === '' &&\n\t\t\tfutureUnitDescriptor.type === 'custom'\n\t\t) {\n\t\t\tsetForcedCurrentUnit('')\n\t\t} else {\n\t\t\tsetForcedCurrentUnit('__DEFAULT__')\n\t\t}\n\t}\n\n\tlet futureUnitDescriptor = option.units.find(\n\t\t({ unit: u }) => u === currentUnit\n\t)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<span\n\t\t\t\tonClick={() => toggleOpen()}\n\t\t\t\tclassName=\"ct-current-value\"\n\t\t\t\tdata-unit={\n\t\t\t\t\tcurrentUnit ||\n\t\t\t\t\t(futureUnitDescriptor &&\n\t\t\t\t\tfutureUnitDescriptor.type === 'custom'\n\t\t\t\t\t\t? __('custom', 'blocksy')\n\t\t\t\t\t\t: '')\n\t\t\t\t}>\n\t\t\t\t{currentUnit ||\n\t\t\t\t\t(futureUnitDescriptor &&\n\t\t\t\t\tfutureUnitDescriptor.type === 'custom'\n\t\t\t\t\t\t? __('Custom', 'blocksy')\n\t\t\t\t\t\t: '―')}\n\t\t\t</span>\n\n\t\t\t<OutsideClickHandler\n\t\t\t\tclassName=\"ct-units-list\"\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tif (!is_open) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\ttoggleOpen()\n\t\t\t\t}}>\n\t\t\t\t{option.units\n\t\t\t\t\t.filter(({ unit }) => unit !== currentUnit)\n\t\t\t\t\t.map(({ unit, type }) => (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={unit}\n\t\t\t\t\t\t\tdata-unit={type === 'custom' ? 'custom' : unit}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tpickUnit(unit)\n\t\t\t\t\t\t\t\ttoggleOpen()\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{unit ||\n\t\t\t\t\t\t\t\t(type === 'custom'\n\t\t\t\t\t\t\t\t\t? __('Custom', 'blocksy')\n\t\t\t\t\t\t\t\t\t: '―')}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t))}\n\t\t\t</OutsideClickHandler>\n\t\t</Fragment>\n\t)\n}\n\nexport default class Slider extends Component {\n\tstate = {\n\t\tis_dragging: false,\n\t\tis_open: false,\n\t\tis_empty_input: false,\n\t\tforced_current_unit: '__DEFAULT__',\n\t}\n\n\tel = createRef()\n\n\thasUnitsList = () =>\n\t\tthis.props.option.units && this.props.option.units.length > 1\n\n\tgetAllowedDecimalPlaces = (properUnit = null) => {\n\t\tconst decimals = this.props.option.units\n\t\t\t? this.props.option.units.find(\n\t\t\t\t\t({ unit }) => unit === (properUnit || this.getCurrentUnit())\n\t\t\t  )?.decimals || 0\n\t\t\t: this.props.option.decimals\n\n\t\treturn decimals !== 0 && !decimals ? 0 : decimals\n\t}\n\n\twithDefault = (currentUnit, defaultUnit) =>\n\t\tthis.props.option.units\n\t\t\t? this.props.option.units.find(({ unit }) => unit === currentUnit)\n\t\t\t\t? currentUnit\n\t\t\t\t: currentUnit || defaultUnit\n\t\t\t: currentUnit || defaultUnit\n\n\tgetCurrentUnit = () => {\n\t\tif (this.state.forced_current_unit !== '__DEFAULT__') {\n\t\t\treturn this.state.forced_current_unit\n\t\t}\n\n\t\tif (!this.props.option.units) {\n\t\t\treturn ''\n\t\t}\n\n\t\tlet defaultUnit = this.props.option.units\n\t\t\t? this.props.option.units[0].unit\n\t\t\t: ''\n\n\t\tif (\n\t\t\tthis.props.value === 'NaN' ||\n\t\t\tthis.props.value === '' ||\n\t\t\tthis.props.value === 'CT_CSS_SKIP_RULE'\n\t\t) {\n\t\t\treturn defaultUnit\n\t\t}\n\n\t\tlet computedUnit = this.props.value\n\t\t\t.toString()\n\t\t\t.replace(/[0-9]/g, '')\n\t\t\t.replace(/\\-/g, '')\n\t\t\t.replace(/\\./g, '')\n\t\t\t.replace('CT_CSS_SKIP_RULE', '')\n\n\t\tlet maybeActualUnit = this.props.option.units.find(\n\t\t\t({ unit }) => unit === computedUnit\n\t\t)\n\n\t\tif (maybeActualUnit) {\n\t\t\treturn computedUnit\n\t\t}\n\n\t\treturn ''\n\t}\n\n\tgetMax = () =>\n\t\tthis.props.option.units\n\t\t\t? this.props.option.units.find(\n\t\t\t\t\t({ unit }) => unit === this.getCurrentUnit()\n\t\t\t  )?.max || 0\n\t\t\t: this.props.option.max\n\n\tgetMin = () => {\n\t\treturn this.props.option.units\n\t\t\t? this.props.option.units.find(\n\t\t\t\t\t({ unit }) => unit === this.getCurrentUnit()\n\t\t\t  )?.min || 0\n\t\t\t: this.props.option.min\n\t}\n\n\tgetNumericValue = ({ forPosition = false } = {}) => {\n\t\tconst maybeValue = parseFloat(this.props.value, 10)\n\n\t\tif (maybeValue === 0) {\n\t\t\treturn maybeValue\n\t\t}\n\n\t\tif (!maybeValue) {\n\t\t\tif (\n\t\t\t\tthis.props.option.defaultPosition &&\n\t\t\t\tthis.props.option.defaultPosition === 'center' &&\n\t\t\t\tforPosition\n\t\t\t) {\n\t\t\t\tlet min = parseFloat(this.getMin(), 10)\n\t\t\t\tlet max = parseFloat(this.getMax(), 10)\n\n\t\t\t\treturn (max - min) / 2 + min\n\t\t\t}\n\n\t\t\treturn ''\n\t\t}\n\n\t\treturn maybeValue\n\t}\n\n\tcomputeAndSendNewValue({ pageX, shiftKey }) {\n\t\tlet { top, left, right, width } =\n\t\t\tthis.el.current.getBoundingClientRect()\n\n\t\tlet elLeftOffset = pageX - left - pageXOffset\n\n\t\tthis.props.onChange(\n\t\t\t`${roundWholeNumbers(\n\t\t\t\tround(\n\t\t\t\t\tlinearScale(\n\t\t\t\t\t\t[0, width],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tparseFloat(this.getMin(), 10),\n\t\t\t\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)(\n\t\t\t\t\t\tdocument.body.classList.contains('rtl')\n\t\t\t\t\t\t\t? width - elLeftOffset\n\t\t\t\t\t\t\t: elLeftOffset\n\t\t\t\t\t),\n\t\t\t\t\tthis.getAllowedDecimalPlaces()\n\t\t\t\t),\n\n\t\t\t\tshiftKey ? 10 : 1\n\t\t\t)}${this.getCurrentUnit()}`\n\t\t)\n\t}\n\n\thandleMove = (event) => {\n\t\tif (!this.state.is_dragging) return\n\t\tthis.computeAndSendNewValue(event)\n\t}\n\n\thandleUp = () => {\n\t\tthis.setState({\n\t\t\tis_dragging: false,\n\t\t})\n\n\t\tthis.detachEvents()\n\t}\n\n\thandleFocus = () => {\n\t\tif (this.isCustomValueInput()) {\n\t\t\tthis.setState({\n\t\t\t\tforced_current_unit: this.getCurrentUnit(),\n\t\t\t})\n\t\t}\n\t}\n\n\thandleOptionRevert = () => {\n\t\tthis.setState({\n\t\t\tforced_current_unit: '__DEFAULT__',\n\t\t})\n\t}\n\n\thandleBlur = () => {\n\t\tthis.setState({ is_empty_input: false })\n\n\t\tif (this.props.option.value === 'CT_CSS_SKIP_RULE') {\n\t\t\tif (this.props.value === 'CT_CSS_SKIP_RULE') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.getNumericValue() === '') {\n\t\t\t\tthis.props.onChange('CT_CSS_SKIP_RULE')\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.value.toString().trim() === '') {\n\t\t\tthis.props.onChange(this.props.option.value)\n\t\t\treturn\n\t\t}\n\n\t\tthis.props.onChange(\n\t\t\t`${clamp(\n\t\t\t\tparseFloat(this.getMin(), 10),\n\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\tparseFloat(this.getNumericValue(), 10)\n\t\t\t)}${this.getCurrentUnit()}`\n\t\t)\n\t}\n\n\thandleChange = (value) => {\n\t\tif (this.props.option.value === 'CT_CSS_SKIP_RULE') {\n\t\t\tif (value.toString().trim() === '') {\n\t\t\t\tthis.props.onChange('CT_CSS_SKIP_RULE')\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (this.isCustomValueInput()) {\n\t\t\tthis.props.onChange(value)\n\t\t\treturn\n\t\t}\n\n\t\tif (value.toString().trim() === '') {\n\t\t\tthis.setState({ is_empty_input: true })\n\t\t\treturn\n\t\t}\n\n\t\tthis.setState({ is_empty_input: false })\n\n\t\tthis.props.onChange(\n\t\t\t`${clampMax(\n\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\tparseFloat(value || this.getMin())\n\t\t\t)}${this.getCurrentUnit()}`\n\t\t)\n\t}\n\n\tattachEvents() {\n\t\tdocument.documentElement.addEventListener(\n\t\t\t'mousemove',\n\t\t\tthis.handleMove,\n\t\t\ttrue\n\t\t)\n\n\t\tdocument.documentElement.addEventListener(\n\t\t\t'mouseup',\n\t\t\tthis.handleUp,\n\t\t\ttrue\n\t\t)\n\t}\n\n\tdetachEvents() {\n\t\tdocument.documentElement.removeEventListener(\n\t\t\t'mousemove',\n\t\t\tthis.handleMove,\n\t\t\ttrue\n\t\t)\n\n\t\tdocument.documentElement.removeEventListener(\n\t\t\t'mouseup',\n\t\t\tthis.handleUp,\n\t\t\ttrue\n\t\t)\n\t}\n\n\tgetLeftValue() {\n\t\treturn `${linearScale(\n\t\t\t[parseFloat(this.getMin(), 10), parseFloat(this.getMax(), 10)],\n\t\t\t[0, 100]\n\t\t)(\n\t\t\tclamp(\n\t\t\t\tparseFloat(this.getMin(), 10),\n\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\tparseFloat(this.getNumericValue({ forPosition: true }), 10) ===\n\t\t\t\t\t0\n\t\t\t\t\t? 0\n\t\t\t\t\t: parseFloat(\n\t\t\t\t\t\t\tthis.getNumericValue({ forPosition: true }),\n\t\t\t\t\t\t\t10\n\t\t\t\t\t  )\n\t\t\t\t\t? parseFloat(\n\t\t\t\t\t\t\tthis.getNumericValue({ forPosition: true }),\n\t\t\t\t\t\t\t10\n\t\t\t\t\t  )\n\t\t\t\t\t: parseFloat(this.getMin(), 10)\n\t\t\t)\n\t\t)}`\n\t}\n\n\tisCustomValueInput() {\n\t\tif (!this.hasUnitsList()) return false\n\n\t\tlet maybeUnit = this.props.option.units.find(({ unit: u }) => u === '')\n\n\t\tif (!maybeUnit) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn (\n\t\t\tthis.getCurrentUnit() === '' &&\n\t\t\tmaybeUnit.unit === '' &&\n\t\t\tmaybeUnit.type === 'custom'\n\t\t)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"ct-option-slider\">\n\t\t\t\t{this.props.beforeOption && this.props.beforeOption()}\n\n\t\t\t\t{this.isCustomValueInput() ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t{...(this.props.option.ref\n\t\t\t\t\t\t\t\t? { ref: this.props.option.ref }\n\t\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tthis.state.is_empty_input ||\n\t\t\t\t\t\t\t\tthis.props.value === 'NaN' ||\n\t\t\t\t\t\t\t\t(this.props.value || '')\n\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t.indexOf('CT_CSS_SKIP_RULE') > -1\n\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t: this.props.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={() => this.handleFocus()}\n\t\t\t\t\t\t\tonChange={({ target: { value } }) =>\n\t\t\t\t\t\t\t\tthis.handleChange(value)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\tonMouseDown={({ pageX, pageY }) => {\n\t\t\t\t\t\t\tthis.attachEvents()\n\t\t\t\t\t\t\tthis.setState({ is_dragging: true })\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={(e) => this.computeAndSendNewValue(e)}\n\t\t\t\t\t\tref={this.el}\n\t\t\t\t\t\tclassName=\"ct-slider\"\n\t\t\t\t\t\t{...(this.props.option.steps\n\t\t\t\t\t\t\t? { ['data-steps']: '' }\n\t\t\t\t\t\t\t: {})}>\n\t\t\t\t\t\t<div style={{ width: `${this.getLeftValue()}%` }} />\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\tconst valueForComputation =\n\t\t\t\t\t\t\t\t\tthis.getNumericValue()\n\n\t\t\t\t\t\t\t\tlet step =\n\t\t\t\t\t\t\t\t\t1 /\n\t\t\t\t\t\t\t\t\tMath.pow(10, this.getAllowedDecimalPlaces())\n\n\t\t\t\t\t\t\t\tlet actualStep = e.shiftKey ? step * 10 : step\n\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Arrow up or left\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (e.keyCode === 38 || e.keyCode === 39) {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\t\t\t\tthis.props.onChange(\n\t\t\t\t\t\t\t\t\t\t`${clamp(\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(this.getMin(), 10),\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\t\t\t\t\t\t\t\tvalueForComputation + actualStep\n\t\t\t\t\t\t\t\t\t\t)}${this.getCurrentUnit()}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * Arrow down or right\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tif (e.keyCode === 40 || e.keyCode === 37) {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\t\t\t\tthis.props.onChange(\n\t\t\t\t\t\t\t\t\t\t`${clamp(\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(this.getMin(), 10),\n\t\t\t\t\t\t\t\t\t\t\tparseFloat(this.getMax(), 10),\n\t\t\t\t\t\t\t\t\t\t\tvalueForComputation - actualStep\n\t\t\t\t\t\t\t\t\t\t)}${this.getCurrentUnit()}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t'--position': `${this.getLeftValue()}%`,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{this.props.option.steps && (\n\t\t\t\t\t\t\t<section className={this.props.option.steps}>\n\t\t\t\t\t\t\t\t<i className=\"minus\"></i>\n\t\t\t\t\t\t\t\t<i className=\"zero\"></i>\n\t\t\t\t\t\t\t\t<i className=\"plus\"></i>\n\t\t\t\t\t\t\t</section>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!this.props.option.skipInput && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={classnames('ct-slider-input', {\n\t\t\t\t\t\t\t// ['ct-unit-changer']: !!this.props.option.units,\n\t\t\t\t\t\t\t['ct-value-changer']: true,\n\t\t\t\t\t\t\t'no-unit-list': !this.hasUnitsList(),\n\t\t\t\t\t\t\tactive: this.state.is_open,\n\t\t\t\t\t\t})}>\n\t\t\t\t\t\t{!this.isCustomValueInput() && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t{...(this.props.option.ref\n\t\t\t\t\t\t\t\t\t\t? { ref: this.props.option.ref }\n\t\t\t\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\t\t\t\t1 /\n\t\t\t\t\t\t\t\t\t\tMath.pow(\n\t\t\t\t\t\t\t\t\t\t\t10,\n\t\t\t\t\t\t\t\t\t\t\tthis.getAllowedDecimalPlaces()\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\tthis.state.is_empty_input\n\t\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t\t: this.getNumericValue()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonFocus={() => this.handleFocus()}\n\t\t\t\t\t\t\t\t\tonBlur={() => this.handleBlur()}\n\t\t\t\t\t\t\t\t\tonChange={({ target: { value } }) => {\n\t\t\t\t\t\t\t\t\t\tthis.handleChange(value)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{!this.hasUnitsList() && (\n\t\t\t\t\t\t\t<span className=\"ct-current-value\">\n\t\t\t\t\t\t\t\t{this.withDefault(\n\t\t\t\t\t\t\t\t\tthis.getCurrentUnit(),\n\t\t\t\t\t\t\t\t\tthis.props.option.defaultUnit || 'px'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{this.hasUnitsList() && (\n\t\t\t\t\t\t\t<UnitsList\n\t\t\t\t\t\t\t\toption={this.props.option}\n\t\t\t\t\t\t\t\tvalue={this.props.value}\n\t\t\t\t\t\t\t\tonChange={this.props.onChange}\n\t\t\t\t\t\t\t\tis_open={this.state.is_open}\n\t\t\t\t\t\t\t\tforced_current_unit={\n\t\t\t\t\t\t\t\t\tthis.state.forced_current_unit\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetForcedCurrentUnit={(unit) => {\n\t\t\t\t\t\t\t\t\tthis.setState({ forced_current_unit: unit })\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttoggleOpen={() =>\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\tis_open: !this.state.is_open,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentUnit={this.getCurrentUnit()}\n\t\t\t\t\t\t\t\tgetNumericValue={this.getNumericValue}\n\t\t\t\t\t\t\t\tgetAllowedDecimalPlaces={\n\t\t\t\t\t\t\t\t\tthis.getAllowedDecimalPlaces\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n}\n","import { Fragment, createElement, Component } from '@wordpress/element'\nimport classnames from 'classnames'\n\nconst Spacer = ({\n\toption: { height = 10, attr: { class: className, ...attr } = {} },\n}) => (\n\t<div\n\t\tclassName={classnames('ct-spacer', className)}\n\t\t{...attr}\n\t\tstyle={{\n\t\t\theight: `${height}px`,\n\t\t}}\n\t/>\n)\n\nSpacer.renderingConfig = { design: 'none' }\n\nexport default Spacer\n","import { createElement, Component, useState } from '@wordpress/element'\nimport { __ } from 'ct-i18n'\nimport InputWithOnlyNumbers from '../components/InputWithOnlyNumbers'\nimport cls from 'classnames'\nimport OutsideClickHandler from './react-outside-click-handler'\n\nconst Spacing = ({ value, option, onChange }) => {\n\tconst [isOpen, setIsOpen] = useState(false)\n\n\tconst units = [\n\t\t{ unit: 'px' },\n\t\t{ unit: '%' },\n\t\t{ unit: 'em' },\n\t\t{ unit: 'rem' },\n\t\t{ unit: 'pt' },\n\t]\n\n\tconst withDefault = (currentUnit, defaultUnit) =>\n\t\tunits.find(({ unit }) => unit === currentUnit)\n\t\t\t? currentUnit\n\t\t\t: currentUnit || units[0].unit\n\n\tconst getLinkedLeader = () =>\n\t\t['top', 'right', 'bottom', 'left'].find((v) => value[v] !== 'auto')\n\n\tconst getCurrentUnit = () =>\n\t\twithDefault(\n\t\t\tvalue[getLinkedLeader()]\n\t\t\t\t.toString()\n\t\t\t\t.replace(/[0-9]/g, '')\n\t\t\t\t.replace('-', '')\n\t\t\t\t.replace(/\\./g, '')\n\t\t)\n\n\tconst getNumericValue = (value, unit = '') => {\n\t\tif (value === 'auto') {\n\t\t\treturn value\n\t\t}\n\n\t\treturn `${parseFloat(value) === 0 ? 0 : parseFloat(value) || ''}${unit}`\n\t}\n\n\tconst handleChange = (futureValue, position) => {\n\t\tif (value.linked) {\n\t\t\tonChange({\n\t\t\t\t...value,\n\t\t\t\ttop:\n\t\t\t\t\tvalue.top === 'auto'\n\t\t\t\t\t\t? value.top\n\t\t\t\t\t\t: getNumericValue(futureValue, getCurrentUnit()),\n\t\t\t\tleft:\n\t\t\t\t\tvalue.left === 'auto'\n\t\t\t\t\t\t? value.left\n\t\t\t\t\t\t: getNumericValue(futureValue, getCurrentUnit()),\n\t\t\t\tright:\n\t\t\t\t\tvalue.right === 'auto'\n\t\t\t\t\t\t? value.right\n\t\t\t\t\t\t: getNumericValue(futureValue, getCurrentUnit()),\n\t\t\t\tbottom:\n\t\t\t\t\tvalue.bottom === 'auto'\n\t\t\t\t\t\t? value.bottom\n\t\t\t\t\t\t: getNumericValue(futureValue, getCurrentUnit()),\n\t\t\t})\n\n\t\t\treturn\n\t\t}\n\n\t\tonChange({\n\t\t\t...value,\n\t\t\t[position]: getNumericValue(futureValue, getCurrentUnit()),\n\t\t})\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cls('ct-option-spacing', {\n\t\t\t\tlinked: value.linked,\n\t\t\t})}>\n\t\t\t{['top', 'right', 'bottom', 'left'].map((side) => (\n\t\t\t\t<span key={side}>\n\t\t\t\t\t<InputWithOnlyNumbers\n\t\t\t\t\t\tplaceholder=\"\"\n\t\t\t\t\t\tvalue={getNumericValue(value[side])}\n\t\t\t\t\t\tonChange={(v) => handleChange(v, side)}\n\t\t\t\t\t\t{...{ placeholder: '', ...option.inputAttr }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<small>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttop: __('Top', 'blocksy'),\n\t\t\t\t\t\t\t\tbottom: __('Bottom', 'blocksy'),\n\t\t\t\t\t\t\t\tleft: __('Left', 'blocksy'),\n\t\t\t\t\t\t\t\tright: __('Right', 'blocksy'),\n\t\t\t\t\t\t\t}[side]\n\t\t\t\t\t\t}\n\t\t\t\t\t</small>\n\t\t\t\t</span>\n\t\t\t))}\n\n\t\t\t<div\n\t\t\t\tclassName={cls('ct-spacing-controls ct-value-changer', {\n\t\t\t\t\tactive: isOpen,\n\t\t\t\t})}>\n\t\t\t\t<a\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tif (value.linked) {\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tlinked: false,\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst futureValue = value[getLinkedLeader()]\n\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\ttop: value.top !== 'auto' ? futureValue : value.top,\n\t\t\t\t\t\t\tleft:\n\t\t\t\t\t\t\t\tvalue.left !== 'auto'\n\t\t\t\t\t\t\t\t\t? futureValue\n\t\t\t\t\t\t\t\t\t: value.left,\n\t\t\t\t\t\t\tbottom:\n\t\t\t\t\t\t\t\tvalue.bottom !== 'auto'\n\t\t\t\t\t\t\t\t\t? futureValue\n\t\t\t\t\t\t\t\t\t: value.bottom,\n\t\t\t\t\t\t\tright:\n\t\t\t\t\t\t\t\tvalue.right !== 'auto'\n\t\t\t\t\t\t\t\t\t? futureValue\n\t\t\t\t\t\t\t\t\t: value.right,\n\n\t\t\t\t\t\t\tlinked: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}}>\n\t\t\t\t\t<svg width=\"10\" height=\"10\" viewBox=\"0 0 15 15\">\n\t\t\t\t\t\t{value.linked ? (\n\t\t\t\t\t\t\t<path d=\"M12.2,5.5V4.7c0-2.6-2.1-4.7-4.7-4.7S2.8,2.1,2.8,4.7v0.8c-0.9,0-1.6,0.7-1.6,1.6v6.3c0,0.9,0.7,1.6,1.6,1.6h9.5c0.9,0,1.6-0.7,1.6-1.6V7.1C13.8,6.2,13.1,5.5,12.2,5.5z M10.7,5.5H4.3V4.7c0-1.8,1.4-3.2,3.2-3.2s3.2,1.4,3.2,3.2V5.5z\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<path d=\"M12.2,5.5h-1.6H9.9h-5H4.7l0-0.2C4.4,3.5,5.5,1.9,7.3,1.5c1.1-0.2,2.2,0.1,2.8,0.9l1.3-0.9c-1-1.1-2.6-1.8-4.3-1.5C4.5,0.5,2.8,2.9,3.2,5.5H2.8c-0.9,0-1.6,0.7-1.6,1.6v6.3c0,0.9,0.7,1.6,1.6,1.6h9.5c0.9,0,1.6-0.7,1.6-1.6V7.1C13.8,6.2,13.1,5.5,12.2,5.5z\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</svg>\n\t\t\t\t</a>\n\n\t\t\t\t<div\n\t\t\t\t\tonClick={() => setIsOpen(!isOpen)}\n\t\t\t\t\tclassName=\"ct-current-value\">\n\t\t\t\t\t{getCurrentUnit() || '―'}\n\t\t\t\t</div>\n\n\t\t\t\t<OutsideClickHandler\n\t\t\t\t\tclassName=\"ct-units-list\"\n\t\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\t\tif (!isOpen) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t}}>\n\t\t\t\t\t{units\n\t\t\t\t\t\t.filter(({ unit }) => unit !== getCurrentUnit())\n\n\t\t\t\t\t\t.map(({ unit }) => (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tkey={unit}\n\t\t\t\t\t\t\t\tdata-unit={unit}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t\ttop: getNumericValue(value.top, unit),\n\t\t\t\t\t\t\t\t\t\tleft: getNumericValue(value.left, unit),\n\t\t\t\t\t\t\t\t\t\tright: getNumericValue(\n\t\t\t\t\t\t\t\t\t\t\tvalue.right,\n\t\t\t\t\t\t\t\t\t\t\tunit\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tbottom: getNumericValue(\n\t\t\t\t\t\t\t\t\t\t\tvalue.bottom,\n\t\t\t\t\t\t\t\t\t\t\tunit\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{unit || '―'}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t</OutsideClickHandler>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default Spacing\n","import { createElement, Component } from '@wordpress/element'\nimport classnames from 'classnames'\n\nconst isActive = ({ option: { behavior = 'words' }, value }) =>\n\tbehavior === 'words' ? value === 'yes' : !!value\n\nconst alternateValueFor = ({\n\toption = {},\n\toption: { behavior = 'words' },\n\tvalue,\n}) =>\n\tisActive({ option, value })\n\t\t? behavior === 'words'\n\t\t\t? 'no'\n\t\t\t: false\n\t\t: behavior === 'words'\n\t\t? 'yes'\n\t\t: true\n\nconst Switch = ({ value, option = {}, onChange, onClick }) => (\n\t<div\n\t\tclassName={classnames({\n\t\t\t[`ct-option-switch`]: true,\n\t\t\t[`ct-active`]: isActive({ option, value }),\n\t\t})}\n\t\tonClick={(e) => {\n\t\t\tonClick && onClick(e)\n\t\t\tonChange(alternateValueFor({ option, value }))\n\t\t}}>\n\t\t<span />\n\t</div>\n)\n\nSwitch.renderingConfig = {\n\tdesign: 'inline',\n}\n\nexport default Switch\n","import { Fragment, createElement, Component } from '@wordpress/element'\n\nconst Title = ({\n\toption: { label = '', desc = '', attr = {}, variation = 'simple' }\n}) => (\n\t<Fragment>\n\t\t<div\n\t\t\tclassName=\"ct-title\"\n\t\t\t{...{\n\t\t\t\t'data-type': variation,\n\t\t\t\t...(attr || {})\n\t\t\t}}>\n\t\t\t<h3>{label}</h3>\n\t\t\t{desc && (\n\t\t\t\t<div className=\"ct-option-description\"\n\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t__html: desc\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t</Fragment>\n)\n\nTitle.renderingConfig = { design: 'none' }\n\nexport default Title\n","import { __ } from 'ct-i18n'\n\nexport const getDefaultFonts = ({ isDefault }) => ({\n\tsystem: {\n\t\ttype: 'system',\n\t\tfamilies: [\n\t\t\t...(!isDefault ? ['Default'] : []),\n\t\t\t'System Default',\n\t\t\t'Arial',\n\t\t\t'Verdana',\n\t\t\t'Trebuchet',\n\t\t\t'Georgia',\n\t\t\t'Times New Roman',\n\t\t\t'Palatino',\n\t\t\t'Helvetica',\n\t\t\t'Myriad Pro',\n\t\t\t'Lucida',\n\t\t\t'Gill Sans',\n\t\t\t'Impact',\n\t\t\t'Serif',\n\t\t\t'monospace',\n\t\t].map((family) => ({\n\t\t\tsource: 'system',\n\t\t\tfamily,\n\t\t\tdisplay:\n\t\t\t\tfamily === 'System Default'\n\t\t\t\t\t? __('System Default', 'blocksy')\n\t\t\t\t\t: family,\n\t\t\tvariations: [],\n\t\t\tall_variations: [\n\t\t\t\t...(family === 'Default' ? ['Default'] : []),\n\t\t\t\t'n1',\n\t\t\t\t'i1',\n\t\t\t\t'n2',\n\t\t\t\t'i2',\n\t\t\t\t'n3',\n\t\t\t\t'i3',\n\t\t\t\t'n4',\n\t\t\t\t'i4',\n\t\t\t\t'n5',\n\t\t\t\t'i5',\n\t\t\t\t'n6',\n\t\t\t\t'i6',\n\t\t\t\t'n7',\n\t\t\t\t'i7',\n\t\t\t\t'n8',\n\t\t\t\t'i8',\n\t\t\t\t'n9',\n\t\t\t\t'i9',\n\t\t\t],\n\t\t})),\n\t},\n})\n","import { __ } from 'ct-i18n'\n\nexport const fontFamilyToCSSFamily = (family) => {\n\tif (family === 'System Default') {\n\t\treturn \"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'\"\n\t}\n\n\treturn family.replace('ct_typekit_', '')\n}\n\nconst findSourceTypeSettingsFor = (font_family, fonts_list) =>\n\tObject.values(fonts_list).find(\n\t\t(single_font_source) =>\n\t\t\tsingle_font_source.families\n\t\t\t\t.map(({ family }) => family)\n\t\t\t\t.indexOf(font_family) > -1\n\t)\n\nexport const findSourceTypeFor = (font_family, fonts_list) => {\n\tlet source = findSourceTypeSettingsFor(font_family, fonts_list)\n\tif (!source) return false\n\treturn source.type\n}\n\nexport const findSelectedFontFamily = (font_family, fonts_list) => {\n\tlet source = findSourceTypeSettingsFor(font_family, fonts_list)\n\n\tif (!source) {\n\t\treturn null\n\t}\n\n\treturn source.families.find(({ family }) => family === font_family)\n}\n\nexport const decideVariationToSelect = (newValue, oldValue) => {\n\tif (newValue.all_variations.indexOf(oldValue.variation) > -1) {\n\t\treturn oldValue.variation\n\t}\n\n\tif (newValue.all_variations.indexOf('n4') > -1) {\n\t\treturn 'n4'\n\t}\n\n\treturn newValue.all_variations[0]\n}\n\nexport const humanizeVariationsShort = (variation) => {\n\tvar all = {\n\t\tn1: '100',\n\t\ti1: '100',\n\t\tn2: '200',\n\t\ti2: '200',\n\t\tn3: '300',\n\t\ti3: '300',\n\t\tn4: '400',\n\t\ti4: '400',\n\t\tn5: '500',\n\t\ti5: '500',\n\t\tn6: '600',\n\t\ti6: '600',\n\t\tn7: '700',\n\t\ti7: '700',\n\t\tn8: '800',\n\t\ti8: '800',\n\t\tn9: '900',\n\t\ti9: '900',\n\t\tDefault: __('Default', 'blocksy'),\n\t}\n\n\treturn all[variation]\n}\n\nexport const humanizeVariations = (variation) => {\n\tvar all = {\n\t\tn1: __('Thin 100', 'blocksy'),\n\t\ti1: __('Thin 100 Italic', 'blocksy'),\n\t\tn2: __('Extra-Light 200', 'blocksy'),\n\t\ti2: __('Extra-Light 200 Italic', 'blocksy'),\n\t\tn3: __('Light 300', 'blocksy'),\n\t\ti3: __('Light 300 Italic', 'blocksy'),\n\t\tn4: __('Regular', 'blocksy'),\n\t\ti4: __('Regular 400 Italic', 'blocksy'),\n\t\tn5: __('Medium 500', 'blocksy'),\n\t\ti5: __('Medium 500 Italic', 'blocksy'),\n\t\tn6: __('Semi-Bold 600', 'blocksy'),\n\t\ti6: __('Semi-Bold 600 Italic', 'blocksy'),\n\t\tn7: __('Bold 700', 'blocksy'),\n\t\ti7: __('Bold 700 Italic', 'blocksy'),\n\t\tn8: __('Extra-Bold 800', 'blocksy'),\n\t\ti8: __('Extra-Bold 800 Italic', 'blocksy'),\n\t\tn9: __('Ultra-Bold 900', 'blocksy'),\n\t\ti9: __('Ultra-Bold 900 Italic', 'blocksy'),\n\t\tDefault: __('Default Weight', 'blocksy'),\n\t}\n\n\treturn all[variation]\n}\n\nexport const familyForDisplay = (family) => {\n\tif (family.indexOf('ct_font') === 0) {\n\t\treturn family\n\t\t\t.replace('ct_font_', '')\n\t\t\t.replace(/([-_][a-z])/gi, ($1) =>\n\t\t\t\t$1.toUpperCase().replace('-', '').replace('_', '')\n\t\t\t)\n\t}\n\n\tif (family.indexOf('ct_typekit') === 0) {\n\t\treturn family\n\t\t\t.replace('ct_typekit_', '')\n\t\t\t.replace(/([-_][a-z])/gi, ($1) =>\n\t\t\t\t$1.toUpperCase().replace('-', ' ').replace('_', ' ')\n\t\t\t)\n\t}\n\n\tif (family === 'System Default') {\n\t\treturn __('System Default', 'blocksy')\n\t}\n\n\tif (family === 'Default') {\n\t\treturn __('Default', 'blocksy')\n\t}\n\n\treturn family\n}\n\nexport const humanizeFontSource = (source) => {\n\tlet titles = {\n\t\tsystem: __('System Font', 'blocksy'),\n\t\t'local-google-fonts': __('Local Google Font', 'blocksy'),\n\t\ttypekit: __('Adobe Font', 'blocksy'),\n\t\tfile: __('Custom Font', 'blocksy'),\n\t\tgoogle: __('Google Font', 'blocksy'),\n\t}\n\n\treturn titles[source] || source\n}\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n  return performance.now();\n} : function () {\n  return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n  cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n  var start = now();\n\n  function tick() {\n    if (now() - start >= delay) {\n      callback.call(null);\n    } else {\n      timeoutID.id = requestAnimationFrame(tick);\n    }\n  }\n\n  var timeoutID = {\n    id: requestAnimationFrame(tick)\n  };\n  return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n  if (recalculate === void 0) {\n    recalculate = false;\n  }\n\n  if (size === -1 || recalculate) {\n    var div = document.createElement('div');\n    var style = div.style;\n    style.width = '50px';\n    style.height = '50px';\n    style.overflow = 'scroll';\n    document.body.appendChild(div);\n    size = div.offsetWidth - div.clientWidth;\n    document.body.removeChild(div);\n  }\n\n  return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n  if (recalculate === void 0) {\n    recalculate = false;\n  }\n\n  if (cachedRTLResult === null || recalculate) {\n    var outerDiv = document.createElement('div');\n    var outerStyle = outerDiv.style;\n    outerStyle.width = '50px';\n    outerStyle.height = '50px';\n    outerStyle.overflow = 'scroll';\n    outerStyle.direction = 'rtl';\n    var innerDiv = document.createElement('div');\n    var innerStyle = innerDiv.style;\n    innerStyle.width = '100px';\n    innerStyle.height = '100px';\n    outerDiv.appendChild(innerDiv);\n    document.body.appendChild(outerDiv);\n\n    if (outerDiv.scrollLeft > 0) {\n      cachedRTLResult = 'positive-descending';\n    } else {\n      outerDiv.scrollLeft = 1;\n\n      if (outerDiv.scrollLeft === 0) {\n        cachedRTLResult = 'negative';\n      } else {\n        cachedRTLResult = 'positive-ascending';\n      }\n    }\n\n    document.body.removeChild(outerDiv);\n    return cachedRTLResult;\n  }\n\n  return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n  var columnIndex = _ref.columnIndex,\n      data = _ref.data,\n      rowIndex = _ref.rowIndex;\n  return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsOverscanCount = /*#__PURE__*/new WeakSet();\n    devWarningsOverscanRowsColumnsCount = /*#__PURE__*/new WeakSet();\n    devWarningsTagName = /*#__PURE__*/new WeakSet();\n  }\n}\n\nfunction createGridComponent(_ref2) {\n  var _class;\n\n  var getColumnOffset = _ref2.getColumnOffset,\n      getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n      getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n      getColumnWidth = _ref2.getColumnWidth,\n      getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n      getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n      getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n      getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n      getRowHeight = _ref2.getRowHeight,\n      getRowOffset = _ref2.getRowOffset,\n      getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n      getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n      initInstanceProps = _ref2.initInstanceProps,\n      shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n      validateProps = _ref2.validateProps;\n  return _class = /*#__PURE__*/function (_PureComponent) {\n    _inheritsLoose(Grid, _PureComponent);\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    function Grid(props) {\n      var _this;\n\n      _this = _PureComponent.call(this, props) || this;\n      _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n      _this._resetIsScrollingTimeoutId = null;\n      _this._outerRef = void 0;\n      _this.state = {\n        instance: _assertThisInitialized(_this),\n        isScrolling: false,\n        horizontalScrollDirection: 'forward',\n        scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n        scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n        scrollUpdateWasRequested: false,\n        verticalScrollDirection: 'forward'\n      };\n      _this._callOnItemsRendered = void 0;\n      _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n        return _this.props.onItemsRendered({\n          overscanColumnStartIndex: overscanColumnStartIndex,\n          overscanColumnStopIndex: overscanColumnStopIndex,\n          overscanRowStartIndex: overscanRowStartIndex,\n          overscanRowStopIndex: overscanRowStopIndex,\n          visibleColumnStartIndex: visibleColumnStartIndex,\n          visibleColumnStopIndex: visibleColumnStopIndex,\n          visibleRowStartIndex: visibleRowStartIndex,\n          visibleRowStopIndex: visibleRowStopIndex\n        });\n      });\n      _this._callOnScroll = void 0;\n      _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n        return _this.props.onScroll({\n          horizontalScrollDirection: horizontalScrollDirection,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          verticalScrollDirection: verticalScrollDirection,\n          scrollUpdateWasRequested: scrollUpdateWasRequested\n        });\n      });\n      _this._getItemStyle = void 0;\n\n      _this._getItemStyle = function (rowIndex, columnIndex) {\n        var _this$props = _this.props,\n            columnWidth = _this$props.columnWidth,\n            direction = _this$props.direction,\n            rowHeight = _this$props.rowHeight;\n\n        var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n        var key = rowIndex + \":\" + columnIndex;\n        var style;\n\n        if (itemStyleCache.hasOwnProperty(key)) {\n          style = itemStyleCache[key];\n        } else {\n          var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n\n          var isRtl = direction === 'rtl';\n          itemStyleCache[key] = style = {\n            position: 'absolute',\n            left: isRtl ? undefined : _offset,\n            right: isRtl ? _offset : undefined,\n            top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n            height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n            width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n          };\n        }\n\n        return style;\n      };\n\n      _this._getItemStyleCache = void 0;\n      _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n        return {};\n      });\n\n      _this._onScroll = function (event) {\n        var _event$currentTarget = event.currentTarget,\n            clientHeight = _event$currentTarget.clientHeight,\n            clientWidth = _event$currentTarget.clientWidth,\n            scrollLeft = _event$currentTarget.scrollLeft,\n            scrollTop = _event$currentTarget.scrollTop,\n            scrollHeight = _event$currentTarget.scrollHeight,\n            scrollWidth = _event$currentTarget.scrollWidth;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          }\n\n          var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n          // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n          // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n          // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n          var calculatedScrollLeft = scrollLeft;\n\n          if (direction === 'rtl') {\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                calculatedScrollLeft = -scrollLeft;\n                break;\n\n              case 'positive-descending':\n                calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n                break;\n            }\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n          var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n          return {\n            isScrolling: true,\n            horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n            scrollLeft: calculatedScrollLeft,\n            scrollTop: calculatedScrollTop,\n            verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._outerRefSetter = function (ref) {\n        var outerRef = _this.props.outerRef;\n        _this._outerRef = ref;\n\n        if (typeof outerRef === 'function') {\n          outerRef(ref);\n        } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n          outerRef.current = ref;\n        }\n      };\n\n      _this._resetIsScrollingDebounced = function () {\n        if (_this._resetIsScrollingTimeoutId !== null) {\n          cancelTimeout(_this._resetIsScrollingTimeoutId);\n        }\n\n        _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n      };\n\n      _this._resetIsScrolling = function () {\n        _this._resetIsScrollingTimeoutId = null;\n\n        _this.setState({\n          isScrolling: false\n        }, function () {\n          // Clear style cache after state update has been committed.\n          // This way we don't break pure sCU for items that don't use isScrolling param.\n          _this._getItemStyleCache(-1);\n        });\n      };\n\n      return _this;\n    }\n\n    Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    };\n\n    var _proto = Grid.prototype;\n\n    _proto.scrollTo = function scrollTo(_ref3) {\n      var scrollLeft = _ref3.scrollLeft,\n          scrollTop = _ref3.scrollTop;\n\n      if (scrollLeft !== undefined) {\n        scrollLeft = Math.max(0, scrollLeft);\n      }\n\n      if (scrollTop !== undefined) {\n        scrollTop = Math.max(0, scrollTop);\n      }\n\n      this.setState(function (prevState) {\n        if (scrollLeft === undefined) {\n          scrollLeft = prevState.scrollLeft;\n        }\n\n        if (scrollTop === undefined) {\n          scrollTop = prevState.scrollTop;\n        }\n\n        if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n          return null;\n        }\n\n        return {\n          horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          scrollUpdateWasRequested: true,\n          verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _proto.scrollToItem = function scrollToItem(_ref4) {\n      var _ref4$align = _ref4.align,\n          align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n          columnIndex = _ref4.columnIndex,\n          rowIndex = _ref4.rowIndex;\n      var _this$props2 = this.props,\n          columnCount = _this$props2.columnCount,\n          height = _this$props2.height,\n          rowCount = _this$props2.rowCount,\n          width = _this$props2.width;\n      var _this$state = this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop;\n      var scrollbarSize = getScrollbarSize();\n\n      if (columnIndex !== undefined) {\n        columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n      }\n\n      if (rowIndex !== undefined) {\n        rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n      }\n\n      var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n      var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n      // to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n\n      var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n      var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n      this.scrollTo({\n        scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n        scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n      });\n    };\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this$props3 = this.props,\n          initialScrollLeft = _this$props3.initialScrollLeft,\n          initialScrollTop = _this$props3.initialScrollTop;\n\n      if (this._outerRef != null) {\n        var outerRef = this._outerRef;\n\n        if (typeof initialScrollLeft === 'number') {\n          outerRef.scrollLeft = initialScrollLeft;\n        }\n\n        if (typeof initialScrollTop === 'number') {\n          outerRef.scrollTop = initialScrollTop;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      var direction = this.props.direction;\n      var _this$state2 = this.state,\n          scrollLeft = _this$state2.scrollLeft,\n          scrollTop = _this$state2.scrollTop,\n          scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // So we need to determine which browser behavior we're dealing with, and mimic it.\n        var outerRef = this._outerRef;\n\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              outerRef.scrollLeft = -scrollLeft;\n              break;\n\n            case 'positive-ascending':\n              outerRef.scrollLeft = scrollLeft;\n              break;\n\n            default:\n              var clientWidth = outerRef.clientWidth,\n                  scrollWidth = outerRef.scrollWidth;\n              outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        } else {\n          outerRef.scrollLeft = Math.max(0, scrollLeft);\n        }\n\n        outerRef.scrollTop = Math.max(0, scrollTop);\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    };\n\n    _proto.render = function render() {\n      var _this$props4 = this.props,\n          children = _this$props4.children,\n          className = _this$props4.className,\n          columnCount = _this$props4.columnCount,\n          direction = _this$props4.direction,\n          height = _this$props4.height,\n          innerRef = _this$props4.innerRef,\n          innerElementType = _this$props4.innerElementType,\n          innerTagName = _this$props4.innerTagName,\n          itemData = _this$props4.itemData,\n          _this$props4$itemKey = _this$props4.itemKey,\n          itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n          outerElementType = _this$props4.outerElementType,\n          outerTagName = _this$props4.outerTagName,\n          rowCount = _this$props4.rowCount,\n          style = _this$props4.style,\n          useIsScrolling = _this$props4.useIsScrolling,\n          width = _this$props4.width;\n      var isScrolling = this.state.isScrolling;\n\n      var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n          columnStartIndex = _this$_getHorizontalR[0],\n          columnStopIndex = _this$_getHorizontalR[1];\n\n      var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n          rowStartIndex = _this$_getVerticalRan[0],\n          rowStopIndex = _this$_getVerticalRan[1];\n\n      var items = [];\n\n      if (columnCount > 0 && rowCount) {\n        for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n          for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n            items.push(createElement(children, {\n              columnIndex: _columnIndex,\n              data: itemData,\n              isScrolling: useIsScrolling ? isScrolling : undefined,\n              key: itemKey({\n                columnIndex: _columnIndex,\n                data: itemData,\n                rowIndex: _rowIndex\n              }),\n              rowIndex: _rowIndex,\n              style: this._getItemStyle(_rowIndex, _columnIndex)\n            }));\n          }\n        }\n      } // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n\n\n      var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n      var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n      return createElement(outerElementType || outerTagName || 'div', {\n        className: className,\n        onScroll: this._onScroll,\n        ref: this._outerRefSetter,\n        style: _extends({\n          position: 'relative',\n          height: height,\n          width: width,\n          overflow: 'auto',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n          direction: direction\n        }, style)\n      }, createElement(innerElementType || innerTagName || 'div', {\n        children: items,\n        ref: innerRef,\n        style: {\n          height: estimatedTotalHeight,\n          pointerEvents: isScrolling ? 'none' : undefined,\n          width: estimatedTotalWidth\n        }\n      }));\n    };\n\n    _proto._callPropsCallbacks = function _callPropsCallbacks() {\n      var _this$props5 = this.props,\n          columnCount = _this$props5.columnCount,\n          onItemsRendered = _this$props5.onItemsRendered,\n          onScroll = _this$props5.onScroll,\n          rowCount = _this$props5.rowCount;\n\n      if (typeof onItemsRendered === 'function') {\n        if (columnCount > 0 && rowCount > 0) {\n          var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n              _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n              _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n              _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n              _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n          var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n              _overscanRowStartIndex = _this$_getVerticalRan2[0],\n              _overscanRowStopIndex = _this$_getVerticalRan2[1],\n              _visibleRowStartIndex = _this$_getVerticalRan2[2],\n              _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n          this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n        }\n      }\n\n      if (typeof onScroll === 'function') {\n        var _this$state3 = this.state,\n            _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n            _scrollLeft = _this$state3.scrollLeft,\n            _scrollTop = _this$state3.scrollTop,\n            _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n            _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n        this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n      }\n    } // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    ;\n\n    _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n      var _this$props6 = this.props,\n          columnCount = _this$props6.columnCount,\n          overscanColumnCount = _this$props6.overscanColumnCount,\n          overscanColumnsCount = _this$props6.overscanColumnsCount,\n          overscanCount = _this$props6.overscanCount,\n          rowCount = _this$props6.rowCount;\n      var _this$state4 = this.state,\n          horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n          isScrolling = _this$state4.isScrolling,\n          scrollLeft = _this$state4.scrollLeft;\n      var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n      var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n      var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n      var _this$props7 = this.props,\n          columnCount = _this$props7.columnCount,\n          overscanCount = _this$props7.overscanCount,\n          overscanRowCount = _this$props7.overscanRowCount,\n          overscanRowsCount = _this$props7.overscanRowsCount,\n          rowCount = _this$props7.rowCount;\n      var _this$state5 = this.state,\n          isScrolling = _this$state5.isScrolling,\n          verticalScrollDirection = _this$state5.verticalScrollDirection,\n          scrollTop = _this$state5.scrollTop;\n      var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n      var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n      var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    return Grid;\n  }(PureComponent), _class.defaultProps = {\n    direction: 'ltr',\n    itemData: undefined,\n    useIsScrolling: false\n  }, _class;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n  var children = _ref5.children,\n      direction = _ref5.direction,\n      height = _ref5.height,\n      innerTagName = _ref5.innerTagName,\n      outerTagName = _ref5.outerTagName,\n      overscanColumnsCount = _ref5.overscanColumnsCount,\n      overscanCount = _ref5.overscanCount,\n      overscanRowsCount = _ref5.overscanRowsCount,\n      width = _ref5.width;\n  var instance = _ref6.instance;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof overscanCount === 'number') {\n      if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n        devWarningsOverscanCount.add(instance);\n        console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n      }\n    }\n\n    if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n      if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n        devWarningsOverscanRowsColumnsCount.add(instance);\n        console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n      }\n    }\n\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n      }\n    }\n\n    if (children == null) {\n      throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n    }\n\n    switch (direction) {\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n    }\n\n    if (typeof width !== 'number') {\n      throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n    }\n\n    if (typeof height !== 'number') {\n      throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n    }\n  }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n  var rowCount = _ref.rowCount;\n  var rowMetadataMap = _ref2.rowMetadataMap,\n      estimatedRowHeight = _ref2.estimatedRowHeight,\n      lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n  var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredRowIndex >= rowCount) {\n    lastMeasuredRowIndex = rowCount - 1;\n  }\n\n  if (lastMeasuredRowIndex >= 0) {\n    var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n  var columnCount = _ref3.columnCount;\n  var columnMetadataMap = _ref4.columnMetadataMap,\n      estimatedColumnWidth = _ref4.estimatedColumnWidth,\n      lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n  var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredColumnIndex >= columnCount) {\n    lastMeasuredColumnIndex = columnCount - 1;\n  }\n\n  if (lastMeasuredColumnIndex >= 0) {\n    var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n  var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    itemSize = props.columnWidth;\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    itemSize = props.rowHeight;\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  if (index > lastMeasuredIndex) {\n    var offset = 0;\n\n    if (lastMeasuredIndex >= 0) {\n      var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n      var size = itemSize(i);\n      itemMetadataMap[i] = {\n        offset: offset,\n        size: size\n      };\n      offset += size;\n    }\n\n    if (itemType === 'column') {\n      instanceProps.lastMeasuredColumnIndex = index;\n    } else {\n      instanceProps.lastMeasuredRowIndex = index;\n    }\n  }\n\n  return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n  var itemMetadataMap, lastMeasuredIndex;\n\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n  }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n  while (low <= high) {\n    var middle = low + Math.floor((high - low) / 2);\n    var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n  var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n  var interval = 1;\n\n  while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n  var size = itemType === 'column' ? props.width : props.height;\n  var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n  // To ensure it reflects actual measurements instead of just estimates.\n\n  var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n  var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n  var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n  if (align === 'smart') {\n    if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n      align = 'auto';\n    } else {\n      align = 'center';\n    }\n  }\n\n  switch (align) {\n    case 'start':\n      return maxOffset;\n\n    case 'end':\n      return minOffset;\n\n    case 'center':\n      return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n    case 'auto':\n    default:\n      if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n        return scrollOffset;\n      } else if (minOffset > maxOffset) {\n        // Because we only take into account the scrollbar size when calculating minOffset\n        // this value can be larger than maxOffset when at the end of the list\n        return minOffset;\n      } else if (scrollOffset < minOffset) {\n        return minOffset;\n      } else {\n        return maxOffset;\n      }\n\n  }\n};\n\nvar VariableSizeGrid = /*#__PURE__*/createGridComponent({\n  getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n    return getItemMetadata('column', props, index, instanceProps).offset;\n  },\n  getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n    return findNearestItem('column', props, instanceProps, scrollLeft);\n  },\n  getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n    var columnCount = props.columnCount,\n        width = props.width;\n    var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n    var maxOffset = scrollLeft + width;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < columnCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n    return instanceProps.columnMetadataMap[index].size;\n  },\n  getEstimatedTotalHeight: getEstimatedTotalHeight,\n  getEstimatedTotalWidth: getEstimatedTotalWidth,\n  getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n  },\n  getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n  },\n  getRowOffset: function getRowOffset(props, index, instanceProps) {\n    return getItemMetadata('row', props, index, instanceProps).offset;\n  },\n  getRowHeight: function getRowHeight(props, index, instanceProps) {\n    return instanceProps.rowMetadataMap[index].size;\n  },\n  getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n    return findNearestItem('row', props, instanceProps, scrollTop);\n  },\n  getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n    var rowCount = props.rowCount,\n        height = props.height;\n    var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n    var maxOffset = scrollTop + height;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < rowCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  initInstanceProps: function initInstanceProps(props, instance) {\n    var _ref5 = props,\n        estimatedColumnWidth = _ref5.estimatedColumnWidth,\n        estimatedRowHeight = _ref5.estimatedRowHeight;\n    var instanceProps = {\n      columnMetadataMap: {},\n      estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n      estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n      lastMeasuredColumnIndex: -1,\n      lastMeasuredRowIndex: -1,\n      rowMetadataMap: {}\n    };\n\n    instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instance.resetAfterIndices({\n        columnIndex: columnIndex,\n        shouldForceUpdate: shouldForceUpdate\n      });\n    };\n\n    instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instance.resetAfterIndices({\n        rowIndex: rowIndex,\n        shouldForceUpdate: shouldForceUpdate\n      });\n    };\n\n    instance.resetAfterIndices = function (_ref6) {\n      var columnIndex = _ref6.columnIndex,\n          rowIndex = _ref6.rowIndex,\n          _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n          shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n      if (typeof columnIndex === 'number') {\n        instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n      }\n\n      if (typeof rowIndex === 'number') {\n        instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n      } // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n  shouldResetStyleCacheOnItemSizeChange: false,\n  validateProps: function validateProps(_ref7) {\n    var columnWidth = _ref7.columnWidth,\n        rowHeight = _ref7.rowHeight;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'function') {\n        throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n      } else if (typeof rowHeight !== 'function') {\n        throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n  return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsDirection = /*#__PURE__*/new WeakSet();\n    devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n  }\n}\n\nfunction createListComponent(_ref) {\n  var _class;\n\n  var getItemOffset = _ref.getItemOffset,\n      getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n      getItemSize = _ref.getItemSize,\n      getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n      getStartIndexForOffset = _ref.getStartIndexForOffset,\n      getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n      initInstanceProps = _ref.initInstanceProps,\n      shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n      validateProps = _ref.validateProps;\n  return _class = /*#__PURE__*/function (_PureComponent) {\n    _inheritsLoose(List, _PureComponent);\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    function List(props) {\n      var _this;\n\n      _this = _PureComponent.call(this, props) || this;\n      _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n      _this._outerRef = void 0;\n      _this._resetIsScrollingTimeoutId = null;\n      _this.state = {\n        instance: _assertThisInitialized(_this),\n        isScrolling: false,\n        scrollDirection: 'forward',\n        scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n        scrollUpdateWasRequested: false\n      };\n      _this._callOnItemsRendered = void 0;\n      _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n        return _this.props.onItemsRendered({\n          overscanStartIndex: overscanStartIndex,\n          overscanStopIndex: overscanStopIndex,\n          visibleStartIndex: visibleStartIndex,\n          visibleStopIndex: visibleStopIndex\n        });\n      });\n      _this._callOnScroll = void 0;\n      _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n        return _this.props.onScroll({\n          scrollDirection: scrollDirection,\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: scrollUpdateWasRequested\n        });\n      });\n      _this._getItemStyle = void 0;\n\n      _this._getItemStyle = function (index) {\n        var _this$props = _this.props,\n            direction = _this$props.direction,\n            itemSize = _this$props.itemSize,\n            layout = _this$props.layout;\n\n        var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n        var style;\n\n        if (itemStyleCache.hasOwnProperty(index)) {\n          style = itemStyleCache[index];\n        } else {\n          var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n          var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n          var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n          var isRtl = direction === 'rtl';\n          var offsetHorizontal = isHorizontal ? _offset : 0;\n          itemStyleCache[index] = style = {\n            position: 'absolute',\n            left: isRtl ? undefined : offsetHorizontal,\n            right: isRtl ? offsetHorizontal : undefined,\n            top: !isHorizontal ? _offset : 0,\n            height: !isHorizontal ? size : '100%',\n            width: isHorizontal ? size : '100%'\n          };\n        }\n\n        return style;\n      };\n\n      _this._getItemStyleCache = void 0;\n      _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n        return {};\n      });\n\n      _this._onScrollHorizontal = function (event) {\n        var _event$currentTarget = event.currentTarget,\n            clientWidth = _event$currentTarget.clientWidth,\n            scrollLeft = _event$currentTarget.scrollLeft,\n            scrollWidth = _event$currentTarget.scrollWidth;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollOffset === scrollLeft) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          }\n\n          var direction = _this.props.direction;\n          var scrollOffset = scrollLeft;\n\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n            // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                scrollOffset = -scrollLeft;\n                break;\n\n              case 'positive-descending':\n                scrollOffset = scrollWidth - clientWidth - scrollLeft;\n                break;\n            }\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n          return {\n            isScrolling: true,\n            scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n            scrollOffset: scrollOffset,\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._onScrollVertical = function (event) {\n        var _event$currentTarget2 = event.currentTarget,\n            clientHeight = _event$currentTarget2.clientHeight,\n            scrollHeight = _event$currentTarget2.scrollHeight,\n            scrollTop = _event$currentTarget2.scrollTop;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollOffset === scrollTop) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n          return {\n            isScrolling: true,\n            scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n            scrollOffset: scrollOffset,\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._outerRefSetter = function (ref) {\n        var outerRef = _this.props.outerRef;\n        _this._outerRef = ref;\n\n        if (typeof outerRef === 'function') {\n          outerRef(ref);\n        } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n          outerRef.current = ref;\n        }\n      };\n\n      _this._resetIsScrollingDebounced = function () {\n        if (_this._resetIsScrollingTimeoutId !== null) {\n          cancelTimeout(_this._resetIsScrollingTimeoutId);\n        }\n\n        _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n      };\n\n      _this._resetIsScrolling = function () {\n        _this._resetIsScrollingTimeoutId = null;\n\n        _this.setState({\n          isScrolling: false\n        }, function () {\n          // Clear style cache after state update has been committed.\n          // This way we don't break pure sCU for items that don't use isScrolling param.\n          _this._getItemStyleCache(-1, null);\n        });\n      };\n\n      return _this;\n    }\n\n    List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n      validateSharedProps$1(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    };\n\n    var _proto = List.prototype;\n\n    _proto.scrollTo = function scrollTo(scrollOffset) {\n      scrollOffset = Math.max(0, scrollOffset);\n      this.setState(function (prevState) {\n        if (prevState.scrollOffset === scrollOffset) {\n          return null;\n        }\n\n        return {\n          scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: true\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _proto.scrollToItem = function scrollToItem(index, align) {\n      if (align === void 0) {\n        align = 'auto';\n      }\n\n      var itemCount = this.props.itemCount;\n      var scrollOffset = this.state.scrollOffset;\n      index = Math.max(0, Math.min(index, itemCount - 1));\n      this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps));\n    };\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this$props2 = this.props,\n          direction = _this$props2.direction,\n          initialScrollOffset = _this$props2.initialScrollOffset,\n          layout = _this$props2.layout;\n\n      if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n        var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          outerRef.scrollLeft = initialScrollOffset;\n        } else {\n          outerRef.scrollTop = initialScrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      var _this$props3 = this.props,\n          direction = _this$props3.direction,\n          layout = _this$props3.layout;\n      var _this$state = this.state,\n          scrollOffset = _this$state.scrollOffset,\n          scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // So we need to determine which browser behavior we're dealing with, and mimic it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                outerRef.scrollLeft = -scrollOffset;\n                break;\n\n              case 'positive-ascending':\n                outerRef.scrollLeft = scrollOffset;\n                break;\n\n              default:\n                var clientWidth = outerRef.clientWidth,\n                    scrollWidth = outerRef.scrollWidth;\n                outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n                break;\n            }\n          } else {\n            outerRef.scrollLeft = scrollOffset;\n          }\n        } else {\n          outerRef.scrollTop = scrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    };\n\n    _proto.render = function render() {\n      var _this$props4 = this.props,\n          children = _this$props4.children,\n          className = _this$props4.className,\n          direction = _this$props4.direction,\n          height = _this$props4.height,\n          innerRef = _this$props4.innerRef,\n          innerElementType = _this$props4.innerElementType,\n          innerTagName = _this$props4.innerTagName,\n          itemCount = _this$props4.itemCount,\n          itemData = _this$props4.itemData,\n          _this$props4$itemKey = _this$props4.itemKey,\n          itemKey = _this$props4$itemKey === void 0 ? defaultItemKey$1 : _this$props4$itemKey,\n          layout = _this$props4.layout,\n          outerElementType = _this$props4.outerElementType,\n          outerTagName = _this$props4.outerTagName,\n          style = _this$props4.style,\n          useIsScrolling = _this$props4.useIsScrolling,\n          width = _this$props4.width;\n      var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n      var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n      var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n      var _this$_getRangeToRend = this._getRangeToRender(),\n          startIndex = _this$_getRangeToRend[0],\n          stopIndex = _this$_getRangeToRend[1];\n\n      var items = [];\n\n      if (itemCount > 0) {\n        for (var _index = startIndex; _index <= stopIndex; _index++) {\n          items.push(createElement(children, {\n            data: itemData,\n            key: itemKey(_index, itemData),\n            index: _index,\n            isScrolling: useIsScrolling ? isScrolling : undefined,\n            style: this._getItemStyle(_index)\n          }));\n        }\n      } // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n\n\n      var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n      return createElement(outerElementType || outerTagName || 'div', {\n        className: className,\n        onScroll: onScroll,\n        ref: this._outerRefSetter,\n        style: _extends({\n          position: 'relative',\n          height: height,\n          width: width,\n          overflow: 'auto',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n          direction: direction\n        }, style)\n      }, createElement(innerElementType || innerTagName || 'div', {\n        children: items,\n        ref: innerRef,\n        style: {\n          height: isHorizontal ? '100%' : estimatedTotalSize,\n          pointerEvents: isScrolling ? 'none' : undefined,\n          width: isHorizontal ? estimatedTotalSize : '100%'\n        }\n      }));\n    };\n\n    _proto._callPropsCallbacks = function _callPropsCallbacks() {\n      if (typeof this.props.onItemsRendered === 'function') {\n        var itemCount = this.props.itemCount;\n\n        if (itemCount > 0) {\n          var _this$_getRangeToRend2 = this._getRangeToRender(),\n              _overscanStartIndex = _this$_getRangeToRend2[0],\n              _overscanStopIndex = _this$_getRangeToRend2[1],\n              _visibleStartIndex = _this$_getRangeToRend2[2],\n              _visibleStopIndex = _this$_getRangeToRend2[3];\n\n          this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n        }\n      }\n\n      if (typeof this.props.onScroll === 'function') {\n        var _this$state2 = this.state,\n            _scrollDirection = _this$state2.scrollDirection,\n            _scrollOffset = _this$state2.scrollOffset,\n            _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n        this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n      }\n    } // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    ;\n\n    _proto._getRangeToRender = function _getRangeToRender() {\n      var _this$props5 = this.props,\n          itemCount = _this$props5.itemCount,\n          overscanCount = _this$props5.overscanCount;\n      var _this$state3 = this.state,\n          isScrolling = _this$state3.isScrolling,\n          scrollDirection = _this$state3.scrollDirection,\n          scrollOffset = _this$state3.scrollOffset;\n\n      if (itemCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n      var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n      var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    return List;\n  }(PureComponent), _class.defaultProps = {\n    direction: 'ltr',\n    itemData: undefined,\n    layout: 'vertical',\n    overscanCount: 2,\n    useIsScrolling: false\n  }, _class;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n  var children = _ref2.children,\n      direction = _ref2.direction,\n      height = _ref2.height,\n      layout = _ref2.layout,\n      innerTagName = _ref2.innerTagName,\n      outerTagName = _ref2.outerTagName,\n      width = _ref2.width;\n  var instance = _ref3.instance;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n        devWarningsTagName$1.add(instance);\n        console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n      }\n    } // TODO Deprecate direction \"horizontal\"\n\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n    switch (direction) {\n      case 'horizontal':\n      case 'vertical':\n        if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n          devWarningsDirection.add(instance);\n          console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n        }\n\n        break;\n\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n    }\n\n    switch (layout) {\n      case 'horizontal':\n      case 'vertical':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n    }\n\n    if (children == null) {\n      throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n    }\n\n    if (isHorizontal && typeof width !== 'number') {\n      throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n    } else if (!isHorizontal && typeof height !== 'number') {\n      throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n    }\n  }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n  var _ref = props,\n      itemSize = _ref.itemSize;\n  var itemMetadataMap = instanceProps.itemMetadataMap,\n      lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n  if (index > lastMeasuredIndex) {\n    var offset = 0;\n\n    if (lastMeasuredIndex >= 0) {\n      var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n      var size = itemSize(i);\n      itemMetadataMap[i] = {\n        offset: offset,\n        size: size\n      };\n      offset += size;\n    }\n\n    instanceProps.lastMeasuredIndex = index;\n  }\n\n  return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n  var itemMetadataMap = instanceProps.itemMetadataMap,\n      lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n  var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n  }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n  while (low <= high) {\n    var middle = low + Math.floor((high - low) / 2);\n    var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n  var itemCount = props.itemCount;\n  var interval = 1;\n\n  while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n  var itemCount = _ref2.itemCount;\n  var itemMetadataMap = _ref3.itemMetadataMap,\n      estimatedItemSize = _ref3.estimatedItemSize,\n      lastMeasuredIndex = _ref3.lastMeasuredIndex;\n  var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredIndex >= itemCount) {\n    lastMeasuredIndex = itemCount - 1;\n  }\n\n  if (lastMeasuredIndex >= 0) {\n    var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n    totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n  return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList = /*#__PURE__*/createListComponent({\n  getItemOffset: function getItemOffset(props, index, instanceProps) {\n    return getItemMetadata$1(props, index, instanceProps).offset;\n  },\n  getItemSize: function getItemSize(props, index, instanceProps) {\n    return instanceProps.itemMetadataMap[index].size;\n  },\n  getEstimatedTotalSize: getEstimatedTotalSize,\n  getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps) {\n    var direction = props.direction,\n        height = props.height,\n        layout = props.layout,\n        width = props.width; // TODO Deprecate direction \"horizontal\"\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n    // To ensure it reflects actual measurements instead of just estimates.\n\n    var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n    var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n    var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size);\n\n    if (align === 'smart') {\n      if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n    return findNearestItem$1(props, instanceProps, offset);\n  },\n  getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n    var direction = props.direction,\n        height = props.height,\n        itemCount = props.itemCount,\n        layout = props.layout,\n        width = props.width; // TODO Deprecate direction \"horizontal\"\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n    var maxOffset = scrollOffset + size;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < itemCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  initInstanceProps: function initInstanceProps(props, instance) {\n    var _ref4 = props,\n        estimatedItemSize = _ref4.estimatedItemSize;\n    var instanceProps = {\n      itemMetadataMap: {},\n      estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n      lastMeasuredIndex: -1\n    };\n\n    instance.resetAfterIndex = function (index, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n  shouldResetStyleCacheOnItemSizeChange: false,\n  validateProps: function validateProps(_ref5) {\n    var itemSize = _ref5.itemSize;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'function') {\n        throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar FixedSizeGrid = /*#__PURE__*/createGridComponent({\n  getColumnOffset: function getColumnOffset(_ref, index) {\n    var columnWidth = _ref.columnWidth;\n    return index * columnWidth;\n  },\n  getColumnWidth: function getColumnWidth(_ref2, index) {\n    var columnWidth = _ref2.columnWidth;\n    return columnWidth;\n  },\n  getRowOffset: function getRowOffset(_ref3, index) {\n    var rowHeight = _ref3.rowHeight;\n    return index * rowHeight;\n  },\n  getRowHeight: function getRowHeight(_ref4, index) {\n    var rowHeight = _ref4.rowHeight;\n    return rowHeight;\n  },\n  getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n    var rowCount = _ref5.rowCount,\n        rowHeight = _ref5.rowHeight;\n    return rowHeight * rowCount;\n  },\n  getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n    var columnCount = _ref6.columnCount,\n        columnWidth = _ref6.columnWidth;\n    return columnWidth * columnCount;\n  },\n  getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n    var columnCount = _ref7.columnCount,\n        columnWidth = _ref7.columnWidth,\n        width = _ref7.width;\n    var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n    var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n    var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n    if (align === 'smart') {\n      if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n        if (middleOffset < Math.ceil(width / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n          return lastColumnOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n\n      case 'auto':\n      default:\n        if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n          return scrollLeft;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollLeft < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n    var rowHeight = _ref8.rowHeight,\n        height = _ref8.height,\n        rowCount = _ref8.rowCount;\n    var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n    var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n    var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n    if (align === 'smart') {\n      if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n        if (middleOffset < Math.ceil(height / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n          return lastRowOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n\n      case 'auto':\n      default:\n        if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n          return scrollTop;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollTop < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n    var columnWidth = _ref9.columnWidth,\n        columnCount = _ref9.columnCount;\n    return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n  },\n  getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n    var columnWidth = _ref10.columnWidth,\n        columnCount = _ref10.columnCount,\n        width = _ref10.width;\n    var left = startIndex * columnWidth;\n    var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n    return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n    var rowHeight = _ref11.rowHeight,\n        rowCount = _ref11.rowCount;\n    return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n  },\n  getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n    var rowHeight = _ref12.rowHeight,\n        rowCount = _ref12.rowCount,\n        height = _ref12.height;\n    var top = startIndex * rowHeight;\n    var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n    return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  initInstanceProps: function initInstanceProps(props) {// Noop\n  },\n  shouldResetStyleCacheOnItemSizeChange: true,\n  validateProps: function validateProps(_ref13) {\n    var columnWidth = _ref13.columnWidth,\n        rowHeight = _ref13.rowHeight;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'number') {\n        throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n      }\n\n      if (typeof rowHeight !== 'number') {\n        throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n  getItemOffset: function getItemOffset(_ref, index) {\n    var itemSize = _ref.itemSize;\n    return index * itemSize;\n  },\n  getItemSize: function getItemSize(_ref2, index) {\n    var itemSize = _ref2.itemSize;\n    return itemSize;\n  },\n  getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n    var itemCount = _ref3.itemCount,\n        itemSize = _ref3.itemSize;\n    return itemSize * itemCount;\n  },\n  getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset) {\n    var direction = _ref4.direction,\n        height = _ref4.height,\n        itemCount = _ref4.itemCount,\n        itemSize = _ref4.itemSize,\n        layout = _ref4.layout,\n        width = _ref4.width;\n    // TODO Deprecate direction \"horizontal\"\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n    var maxOffset = Math.min(lastItemOffset, index * itemSize);\n    var minOffset = Math.max(0, index * itemSize - size + itemSize);\n\n    if (align === 'smart') {\n      if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        {\n          // \"Centered\" offset is usually the average of the min and max.\n          // But near the edges of the list, this doesn't hold true.\n          var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n          if (middleOffset < Math.ceil(size / 2)) {\n            return 0; // near the beginning\n          } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n            return lastItemOffset; // near the end\n          } else {\n            return middleOffset;\n          }\n        }\n\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n    var itemCount = _ref5.itemCount,\n        itemSize = _ref5.itemSize;\n    return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n  },\n  getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n    var direction = _ref6.direction,\n        height = _ref6.height,\n        itemCount = _ref6.itemCount,\n        itemSize = _ref6.itemSize,\n        layout = _ref6.layout,\n        width = _ref6.width;\n    // TODO Deprecate direction \"horizontal\"\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var offset = startIndex * itemSize;\n    var size = isHorizontal ? width : height;\n    var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n    return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  initInstanceProps: function initInstanceProps(props) {// Noop\n  },\n  shouldResetStyleCacheOnItemSizeChange: true,\n  validateProps: function validateProps(_ref7) {\n    var itemSize = _ref7.itemSize;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'number') {\n        throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n  for (var attribute in prev) {\n    if (!(attribute in next)) {\n      return true;\n    }\n  }\n\n  for (var _attribute in next) {\n    if (prev[_attribute] !== next[_attribute]) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nvar _excluded = [\"style\"],\n    _excluded2 = [\"style\"];\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n  var prevStyle = prevProps.style,\n      prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded);\n\n  var nextStyle = nextProps.style,\n      nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2);\n\n  return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n  return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { FixedSizeGrid, FixedSizeList, VariableSizeGrid, VariableSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","import { createElement, PureComponent } from 'react';\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _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\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\n// Check `document` and `window` in case of server-side rendering\nvar windowObject = void 0;\nif (typeof window !== 'undefined') {\n  windowObject = window;\n\n  // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== 'undefined') {\n  // eslint-disable-next-line no-restricted-globals\n  windowObject = self;\n} else {\n  windowObject = global;\n}\n\nvar cancelFrame = null;\nvar requestFrame = null;\n\nvar TIMEOUT_DURATION = 20;\n\nvar clearTimeoutFn = windowObject.clearTimeout;\nvar setTimeoutFn = windowObject.setTimeout;\n\nvar cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\n\nvar requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\n\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n  // For environments that don't support animation frame,\n  // fallback to a setTimeout based approach.\n  cancelFrame = clearTimeoutFn;\n  requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n    return setTimeoutFn(callback, TIMEOUT_DURATION);\n  };\n} else {\n  // Counter intuitively, environments that support animation frames can be trickier.\n  // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n  // In this case, we should fallback to a setTimeout() implementation.\n  cancelFrame = function cancelFrame(_ref) {\n    var _ref2 = slicedToArray(_ref, 2),\n        animationFrameID = _ref2[0],\n        timeoutID = _ref2[1];\n\n    cancelAnimationFrameFn(animationFrameID);\n    clearTimeoutFn(timeoutID);\n  };\n  requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n    var animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n      clearTimeoutFn(timeoutID);\n      callback();\n    });\n\n    var timeoutID = setTimeoutFn(function timeoutCallback() {\n      cancelAnimationFrameFn(animationFrameID);\n      callback();\n    }, TIMEOUT_DURATION);\n\n    return [animationFrameID, timeoutID];\n  };\n}\n\nfunction createDetectElementResize(nonce) {\n  var animationKeyframes = void 0;\n  var animationName = void 0;\n  var animationStartEvent = void 0;\n  var animationStyle = void 0;\n  var checkTriggers = void 0;\n  var resetTriggers = void 0;\n  var scrollListener = void 0;\n\n  var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n  if (!attachEvent) {\n    resetTriggers = function resetTriggers(element) {\n      var triggers = element.__resizeTriggers__,\n          expand = triggers.firstElementChild,\n          contract = triggers.lastElementChild,\n          expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + 'px';\n      expandChild.style.height = expand.offsetHeight + 1 + 'px';\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n\n    checkTriggers = function checkTriggers(element) {\n      return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n    };\n\n    scrollListener = function scrollListener(e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n        return;\n      }\n\n      var element = this;\n      resetTriggers(this);\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n      this.__resizeRAF__ = requestFrame(function animationFrame() {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n          element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n\n    /* Detect CSS Animations support to detect element display/re-attach */\n    var animation = false;\n    var keyframeprefix = '';\n    animationStartEvent = 'animationstart';\n    var domPrefixes = 'Webkit Moz O ms'.split(' ');\n    var startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' ');\n    var pfx = '';\n    {\n      var elm = document.createElement('fakeelement');\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n\n      if (animation === false) {\n        for (var i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = '-' + pfx.toLowerCase() + '-';\n            animationStartEvent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n\n    animationName = 'resizeanim';\n    animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n    animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n  }\n\n  var createStyles = function createStyles(doc) {\n    if (!doc.getElementById('detectElementResize')) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n          head = doc.head || doc.getElementsByTagName('head')[0],\n          style = doc.createElement('style');\n\n      style.id = 'detectElementResize';\n      style.type = 'text/css';\n\n      if (nonce != null) {\n        style.setAttribute('nonce', nonce);\n      }\n\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n\n      head.appendChild(style);\n    }\n  };\n\n  var addResizeListener = function addResizeListener(element, fn) {\n    if (attachEvent) {\n      element.attachEvent('onresize', fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        var doc = element.ownerDocument;\n        var elementStyle = windowObject.getComputedStyle(element);\n        if (elementStyle && elementStyle.position === 'static') {\n          element.style.position = 'relative';\n        }\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n        var expandTrigger = doc.createElement('div');\n        expandTrigger.className = 'expand-trigger';\n        expandTrigger.appendChild(doc.createElement('div'));\n        var contractTrigger = doc.createElement('div');\n        contractTrigger.className = 'contract-trigger';\n        element.__resizeTriggers__.appendChild(expandTrigger);\n        element.__resizeTriggers__.appendChild(contractTrigger);\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener('scroll', scrollListener, true);\n\n        /* Listen for a css animation to detect element display/re-attach */\n        if (animationStartEvent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName === animationName) {\n              resetTriggers(element);\n            }\n          };\n          element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n      element.__resizeListeners__.push(fn);\n    }\n  };\n\n  var removeResizeListener = function removeResizeListener(element, fn) {\n    if (attachEvent) {\n      element.detachEvent('onresize', fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener('scroll', scrollListener, true);\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {\n          // Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n\n  return {\n    addResizeListener: addResizeListener,\n    removeResizeListener: removeResizeListener\n  };\n}\n\nvar AutoSizer = function (_React$PureComponent) {\n  inherits(AutoSizer, _React$PureComponent);\n\n  function AutoSizer() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, AutoSizer);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n      height: _this.props.defaultHeight || 0,\n      width: _this.props.defaultWidth || 0\n    }, _this._onResize = function () {\n      var _this$props = _this.props,\n          disableHeight = _this$props.disableHeight,\n          disableWidth = _this$props.disableWidth,\n          onResize = _this$props.onResize;\n\n\n      if (_this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n\n        var _height = _this._parentNode.offsetHeight || 0;\n        var _width = _this._parentNode.offsetWidth || 0;\n\n        var _style = window.getComputedStyle(_this._parentNode) || {};\n        var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n        var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n        var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n        var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n        var newHeight = _height - paddingTop - paddingBottom;\n        var newWidth = _width - paddingLeft - paddingRight;\n\n        if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n          _this.setState({\n            height: _height - paddingTop - paddingBottom,\n            width: _width - paddingLeft - paddingRight\n          });\n\n          onResize({ height: _height, width: _width });\n        }\n      }\n    }, _this._setRef = function (autoSizer) {\n      _this._autoSizer = autoSizer;\n    }, _temp), possibleConstructorReturn(_this, _ret);\n  }\n\n  createClass(AutoSizer, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var nonce = this.props.nonce;\n\n      if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n        // Delay access of parentNode until mount.\n        // This handles edge-cases where the component has already been unmounted before its ref has been set,\n        // As well as libraries like react-lite which have a slightly different lifecycle.\n        this._parentNode = this._autoSizer.parentNode;\n\n        // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n        this._detectElementResize = createDetectElementResize(nonce);\n        this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n        this._onResize();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (this._detectElementResize && this._parentNode) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          children = _props.children,\n          className = _props.className,\n          disableHeight = _props.disableHeight,\n          disableWidth = _props.disableWidth,\n          style = _props.style;\n      var _state = this.state,\n          height = _state.height,\n          width = _state.width;\n\n      // Outer div should not force width/height since that may prevent containers from shrinking.\n      // Inner component should overflow and use calculated width/height.\n      // See issue #68 for more information.\n\n      var outerStyle = { overflow: 'visible' };\n      var childParams = {};\n\n      // Avoid rendering children before the initial measurements have been collected.\n      // At best this would just be wasting cycles.\n      var bailoutOnChildren = false;\n\n      if (!disableHeight) {\n        if (height === 0) {\n          bailoutOnChildren = true;\n        }\n        outerStyle.height = 0;\n        childParams.height = height;\n      }\n\n      if (!disableWidth) {\n        if (width === 0) {\n          bailoutOnChildren = true;\n        }\n        outerStyle.width = 0;\n        childParams.width = width;\n      }\n\n      return createElement(\n        'div',\n        {\n          className: className,\n          ref: this._setRef,\n          style: _extends({}, outerStyle, style)\n        },\n        !bailoutOnChildren && children(childParams)\n      );\n    }\n  }]);\n  return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n  onResize: function onResize() {},\n  disableHeight: false,\n  disableWidth: false,\n  style: {}\n};\n\nexport default AutoSizer;\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { getDefaultFonts } from './default-data'\nimport {\n\tfamilyForDisplay,\n\thumanizeVariations,\n\tfontFamilyToCSSFamily,\n\thumanizeFontSource,\n} from './helpers'\nimport { FixedSizeList as List } from 'react-window'\nimport WebFontLoader from 'webfontloader'\nimport AutoSizer from 'react-virtualized-auto-sizer'\n\nimport { __ } from 'ct-i18n'\n\nlet loadedFonts = []\n\nconst loadGoogleFonts = (font_families) => {\n\tif (font_families.length === 0) return\n\n\tloadedFonts = [...loadedFonts, ...font_families.map(({ family }) => family)]\n\n\tconst googleFonts = font_families\n\t\t.map(({ family }) => family)\n\t\t.filter((family) => family.indexOf('ct_typekit') === -1)\n\n\tconst typekitFonts = font_families.filter(\n\t\t({ family }) => family.indexOf('ct_typekit') > -1\n\t)\n\n\tif (googleFonts.length > 0 || typekitFonts.length > 0) {\n\t\tWebFontLoader.load({\n\t\t\t...(googleFonts.length > 0\n\t\t\t\t? {\n\t\t\t\t\t\tgoogle: {\n\t\t\t\t\t\t\tfamilies: googleFonts,\n\t\t\t\t\t\t},\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t\t...(typekitFonts.length > 0\n\t\t\t\t? {\n\t\t\t\t\t\ttypekit: {\n\t\t\t\t\t\t\tid: typekitFonts[0].kit,\n\t\t\t\t\t\t},\n\t\t\t\t  }\n\t\t\t\t: {}),\n\t\t\tclasses: false,\n\t\t\ttext: 'abcdefghijklmnopqrstuvwxyz',\n\t\t})\n\t}\n}\n\nconst SingleFont = ({\n\tdata: { linearFontsList, onPickFamily, value },\n\tindex,\n\tstyle,\n}) => {\n\tconst family = linearFontsList[index]\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tonClick={() => onPickFamily(family)}\n\t\t\tclassName={classnames(\n\t\t\t\t'ct-typography-single-font',\n\t\t\t\t`ct-${family.source}`,\n\t\t\t\t{\n\t\t\t\t\tactive: family.family === value.family,\n\t\t\t\t}\n\t\t\t)}\n\t\t\tkey={family.family}>\n\t\t\t<span className=\"ct-font-name\">\n\t\t\t\t<span\n\t\t\t\t\tclassName={`ct-font-type-${family.source}`}\n\t\t\t\t\ttitle={humanizeFontSource(family.source)}>\n\t\t\t\t\t{humanizeFontSource(family.source)[0]}\n\t\t\t\t</span>\n\t\t\t\t\n\t\t\t\t{familyForDisplay(family.display || family.family)}\n\n\t\t\t\t{family.variable && <i>({__('Variable', 'blocksy')})</i>}\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tstyle={{\n\t\t\t\t\tfontFamily: fontFamilyToCSSFamily(family.family),\n\t\t\t\t}}\n\t\t\t\tclassName=\"ct-font-preview\">\n\t\t\t\tSimply dummy text\n\t\t\t</span>\n\t\t</div>\n\t)\n}\n\nconst FontsList = ({\n\toption,\n\tvalue,\n\tonPickFamily,\n\ttypographyList,\n\tlinearFontsList,\n\tcurrentView,\n\tsearchTerm,\n}) => {\n\tconst listRef = useRef(null)\n\tconst timerRef = useRef(null)\n\tconst [scrollTimer, setScrollTimer] = useState(null)\n\n\tuseEffect(() => {\n\t\tif (value.family) {\n\t\t\tlistRef.current.scrollToItem(\n\t\t\t\tlinearFontsList\n\t\t\t\t\t.map(({ family }) => family)\n\t\t\t\t\t.indexOf(value.family),\n\t\t\t\t'start'\n\t\t\t)\n\t\t}\n\t}, [])\n\n\tconst onScroll = () => {\n\t\tscrollTimer && clearTimeout(scrollTimer)\n\n\t\tsetScrollTimer(\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!listRef.current) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst [overscanStartIndex] = listRef.current._getRangeToRender()\n\n\t\t\t\tconst perPage = 25\n\n\t\t\t\tconst totalPages = Math.ceil(linearFontsList.length / perPage)\n\t\t\t\tconst startingPage = Math.ceil(\n\t\t\t\t\t(overscanStartIndex + 1) / perPage\n\t\t\t\t)\n\t\t\t\t// const stopPage = Math.ceil((overscanStopIndex + 1) / perPage)\n\n\t\t\t\tconst pageItems = [...Array(perPage)]\n\t\t\t\t\t.map((_, i) => (startingPage - 1) * perPage + i)\n\t\t\t\t\t.map((index) => linearFontsList[index])\n\t\t\t\t\t.filter((s) => !!s)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ source, family }) =>\n\t\t\t\t\t\t\tloadedFonts.indexOf(family) === -1 &&\n\t\t\t\t\t\t\t(source === 'google' || source === 'typekit')\n\t\t\t\t\t)\n\n\t\t\t\tloadGoogleFonts(pageItems)\n\t\t\t}, 100)\n\t\t)\n\t}\n\n\tuseEffect(() => {\n\t\tonScroll()\n\t}, [linearFontsList])\n\n\treturn (\n\t\t<List\n\t\t\theight={360}\n\t\t\titemCount={linearFontsList.length}\n\t\t\titemSize={85}\n\t\t\tref={listRef}\n\t\t\tonScroll={(e) => {\n\t\t\t\tonScroll()\n\t\t\t}}\n\t\t\titemData={{\n\t\t\t\tlinearFontsList,\n\t\t\t\tonPickFamily,\n\t\t\t\tvalue,\n\t\t\t}}\n\t\t\tonItemsRendered={({ overscanStartIndex, overscanStopIndex }) => {}}\n\t\t\tclassName=\"ct-typography-fonts\">\n\t\t\t{SingleFont}\n\t\t</List>\n\t)\n}\n\nexport default FontsList\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { getDefaultFonts } from './default-data'\nimport { humanizeVariations, findSelectedFontFamily } from './helpers'\nimport { animated } from '@react-spring/web'\n\nconst VariationsList = ({ option, value, onChange, typographyList, props }) => {\n\tconst selectedFontFamily = findSelectedFontFamily(\n\t\tvalue.family,\n\t\ttypographyList\n\t)\n\n\tconst parentEl = useRef(null)\n\n\tuseEffect(() => {\n\t\tif (!selectedFontFamily) {\n\t\t\treturn\n\t\t}\n\n\t\tparentEl.current.scrollTop =\n\t\t\t(\n\t\t\t\tparentEl.current.children[\n\t\t\t\t\tselectedFontFamily.all_variations.indexOf(value.variation)\n\t\t\t\t] || parentEl.current.children[0]\n\t\t\t).offsetTop - parentEl.current.offsetTop\n\t}, [selectedFontFamily])\n\n\treturn (\n\t\t<animated.ul\n\t\t\tstyle={props}\n\t\t\tclassName=\"ct-typography-variations\"\n\t\t\tref={parentEl}>\n\t\t\t{selectedFontFamily &&\n\t\t\t\tselectedFontFamily.all_variations.map((variation) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\tvariation,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\tactive: variation === value.variation,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tkey={variation}>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"ct-variation-name\"\n\t\t\t\t\t\t\tdata-variation={variation}>\n\t\t\t\t\t\t\t{humanizeVariations(variation)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t</animated.ul>\n\t)\n}\n\nexport default VariationsList\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { __ } from 'ct-i18n'\n\nimport { animated } from '@react-spring/web'\n\nimport GenericOptionType from '../../GenericOptionType'\n\nconst FontOptions = ({ option, value, sizeRef, onChange, props }) => {\n\treturn (\n\t\t<animated.ul\n\t\t\tstyle={props}\n\t\t\tclassName=\"ct-typography-options\"\n\t\t\tkey=\"options\">\n\t\t\t<li key=\"size\">\n\t\t\t\t<GenericOptionType\n\t\t\t\t\tvalue={value.size}\n\t\t\t\t\tvalues={value}\n\t\t\t\t\tid=\"size\"\n\t\t\t\t\toption={{\n\t\t\t\t\t\tid: 'size',\n\t\t\t\t\t\tlabel: __('Font Size', 'blocksy'),\n\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\tvalue: option.value.size,\n\t\t\t\t\t\tref: sizeRef,\n\t\t\t\t\t\tresponsive: option.typography_responsive || true,\n\t\t\t\t\t\tunits: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'px',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 200,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'em',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'rem',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'pt',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'vw',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: '',\n\t\t\t\t\t\t\t\ttype: 'custom',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}}\n\t\t\t\t\thasRevertButton={true}\n\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\tsize: newValue,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</li>\n\n\t\t\t<li key=\"line-height\">\n\t\t\t\t<GenericOptionType\n\t\t\t\t\tvalue={value['line-height']}\n\t\t\t\t\tvalues={value}\n\t\t\t\t\tid=\"line-height\"\n\t\t\t\t\toption={{\n\t\t\t\t\t\tid: 'line-height',\n\t\t\t\t\t\tlabel: __('Line Height', 'blocksy'),\n\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\tvalue: option.value['line-height'],\n\t\t\t\t\t\tresponsive: option.typography_responsive || true,\n\t\t\t\t\t\tunits: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: '',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 10,\n\t\t\t\t\t\t\t\tdecimals: 1,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'px',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'em',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'pt',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: '%',\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}}\n\t\t\t\t\thasRevertButton={true}\n\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t'line-height': newValue,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</li>\n\n\t\t\t<li key=\"letter-spacing\">\n\t\t\t\t<GenericOptionType\n\t\t\t\t\tvalue={value['letter-spacing']}\n\t\t\t\t\tvalues={value}\n\t\t\t\t\tid=\"letter-spacing\"\n\t\t\t\t\toption={{\n\t\t\t\t\t\tid: 'letter-spacing',\n\t\t\t\t\t\tlabel: __('Letter Spacing', 'blocksy'),\n\t\t\t\t\t\ttype: 'ct-slider',\n\t\t\t\t\t\tvalue: option.value['letter-spacing'],\n\t\t\t\t\t\tresponsive: option.typography_responsive || true,\n\t\t\t\t\t\tdefaultPosition: 'center',\n\t\t\t\t\t\tunits: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'em',\n\t\t\t\t\t\t\t\tmin: -5,\n\t\t\t\t\t\t\t\tmax: 5,\n\t\t\t\t\t\t\t\tdecimals: 1,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'px',\n\t\t\t\t\t\t\t\tmin: -20,\n\t\t\t\t\t\t\t\tmax: 20,\n\t\t\t\t\t\t\t\tdecimals: 1,\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunit: 'rem',\n\t\t\t\t\t\t\t\tmin: -5,\n\t\t\t\t\t\t\t\tmax: 5,\n\t\t\t\t\t\t\t\tdecimals: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}}\n\t\t\t\t\thasRevertButton={true}\n\t\t\t\t\tonChange={(newValue) =>\n\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t'letter-spacing': newValue,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</li>\n\n\t\t\t<li key=\"variant\" className=\"ct-typography-variant\">\n\t\t\t\t<ul className={classnames('ct-text-transform')}>\n\t\t\t\t\t{['capitalize', 'uppercase'].map((variant) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={variant}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t'text-transform':\n\t\t\t\t\t\t\t\t\t\tvalue['text-transform'] === variant\n\t\t\t\t\t\t\t\t\t\t\t? 'none'\n\t\t\t\t\t\t\t\t\t\t\t: variant,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\tactive: variant === value['text-transform'],\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tdata-variant={variant}>\n\t\t\t\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcapitalize: __('Capitalize', 'blocksy'),\n\t\t\t\t\t\t\t\t\t\tuppercase: __('Uppercase', 'blocksy'),\n\t\t\t\t\t\t\t\t\t}[variant]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\n\t\t\t\t<ul className={classnames('ct-text-decoration')}>\n\t\t\t\t\t{['line-through', 'underline'].map((variant) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={variant}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t\t'text-decoration':\n\t\t\t\t\t\t\t\t\t\tvalue['text-decoration'] === variant\n\t\t\t\t\t\t\t\t\t\t\t? 'none'\n\t\t\t\t\t\t\t\t\t\t\t: variant,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName={classnames({\n\t\t\t\t\t\t\t\tactive: variant === value['text-decoration'],\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tdata-variant={variant}>\n\t\t\t\t\t\t\t<i className=\"ct-tooltip-top\">\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'line-through': __(\n\t\t\t\t\t\t\t\t\t\t\t'Line Through',\n\t\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tunderline: __('Underline', 'blocksy'),\n\t\t\t\t\t\t\t\t\t}[variant]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</animated.ul>\n\t)\n}\n\nexport default FontOptions\n","import {\n\tFragment,\n\tcreateElement,\n\tComponent,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport { getDefaultFonts } from './default-data'\nimport {\n\thumanizeVariationsShort,\n\tdecideVariationToSelect,\n\tfamilyForDisplay,\n} from './helpers'\nimport { __ } from 'ct-i18n'\nimport $ from 'jquery'\n\nimport bezierEasing from 'bezier-easing'\n\nimport { Transition, animated } from '@react-spring/web'\n\nimport FontsList from './FontsList'\nimport VariationsList from './VariationsList'\nimport FontOptions from './FontOptions'\n\nimport Overlay from '../../../customizer/components/Overlay'\n\nimport GenericOptionType from '../../GenericOptionType'\n\nconst combineRefs =\n\t(...refs) =>\n\t(el) => {\n\t\trefs.map((ref) => {\n\t\t\tif (typeof ref === 'function') {\n\t\t\t\tref(el)\n\t\t\t} else if (\n\t\t\t\ttypeof ref === 'object' &&\n\t\t\t\tref !== null &&\n\t\t\t\tref.hasOwnProperty('current')\n\t\t\t) {\n\t\t\t\tref.current = el\n\t\t\t} else if (ref === null) {\n\t\t\t\t// No-op\n\t\t\t}\n\t\t})\n\t}\n\nfunction fuzzysearch(needle, haystack) {\n\tvar hlen = haystack.length\n\tvar nlen = needle.length\n\tif (nlen > hlen) {\n\t\treturn false\n\t}\n\tif (nlen === hlen) {\n\t\treturn needle === haystack\n\t}\n\touter: for (var i = 0, j = 0; i < nlen; i++) {\n\t\tvar nch = needle.charCodeAt(i)\n\t\twhile (j < hlen) {\n\t\t\tif (haystack.charCodeAt(j++) === nch) {\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nconst TypographyModal = ({\n\toption,\n\tvalue,\n\tinitialView,\n\tcurrentView,\n\tpreviousView,\n\tsetCurrentView,\n\tsetInititialView,\n\tonChange,\n\twrapperProps = {},\n\tconfirmationRef,\n\n\tisConfirmingGdpr,\n\tsetIsConfirmingGdpr,\n}) => {\n\tconst [shouldDismiss, setShouldDismiss] = useState(false)\n\n\tconst [typographyList, setTypographyList] = useState(\n\t\tgetDefaultFonts(option)\n\t)\n\tconst [isSearch, setIsSearch] = useState(false)\n\tconst [searchTerm, setSearchTerm] = useState('')\n\n\tconst direction = useMemo(() => {\n\t\tif (previousView === '_') {\n\t\t\treturn 'static'\n\t\t}\n\n\t\tif (\n\t\t\t(currentView === 'search' && previousView === 'fonts') ||\n\t\t\t(previousView === 'search' && currentView === 'fonts')\n\t\t) {\n\t\t\treturn 'static'\n\t\t}\n\n\t\tif (previousView === 'options') {\n\t\t\treturn 'right'\n\t\t}\n\n\t\tif (previousView === 'fonts' && currentView === 'variations') {\n\t\t\treturn 'right'\n\t\t}\n\n\t\treturn 'left'\n\t}, [currentView, previousView])\n\n\tconst inputEl = useRef(null)\n\tconst sizeEl = useRef(null)\n\n\tconst linearFontsList = Object.keys(typographyList).reduce(\n\t\t(currentList, currentSource) => [\n\t\t\t...currentList,\n\t\t\t...(typographyList[currentSource].families || []).filter(\n\t\t\t\t({ family }) =>\n\t\t\t\t\tfuzzysearch(searchTerm.toLowerCase(), family.toLowerCase())\n\t\t\t),\n\t\t],\n\t\t[]\n\t)\n\n\tconst fetchFontsList = async () => {\n\t\tconst body = new FormData()\n\n\t\tbody.append('action', 'blocksy_get_fonts_list')\n\n\t\ttry {\n\t\t\tconst response = await fetch(ajaxurl, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody,\n\t\t\t})\n\n\t\t\tif (response.status === 200) {\n\t\t\t\tconst { success, data } = await response.json()\n\n\t\t\t\tif (success) {\n\t\t\t\t\tsetTypographyList({\n\t\t\t\t\t\t...data.fonts,\n\t\t\t\t\t\tsystem: {\n\t\t\t\t\t\t\t...data.fonts.system,\n\t\t\t\t\t\t\tfamilies: [\n\t\t\t\t\t\t\t\t...(option.isDefault\n\t\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tsource: 'system',\n\t\t\t\t\t\t\t\t\t\t\t\tfamily: 'Default',\n\t\t\t\t\t\t\t\t\t\t\t\tvariations: [],\n\t\t\t\t\t\t\t\t\t\t\t\tall_variations: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Default',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n1',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i1',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n2',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i2',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n3',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i3',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n5',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i5',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n6',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i6',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n7',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i7',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n8',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i8',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'n9',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'i9',\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t  ]),\n\n\t\t\t\t\t\t\t\t...data.fonts.system.families,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tuseEffect(() => {\n\t\tif (initialView && initialView !== 'done') {\n\t\t\tsetSearchTerm('')\n\t\t\tsetTimeout(() => {\n\t\t\t\t// setInititialView('done')\n\t\t\t})\n\t\t}\n\n\t\tif (initialView === 'font_size') {\n\t\t\tsetTimeout(() => sizeEl.current && sizeEl.current.focus(), 100)\n\t\t}\n\t}, [initialView])\n\n\tuseEffect(() => {\n\t\tfetchFontsList()\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (currentView === 'search') {\n\t\t\tinputEl.current.focus()\n\t\t}\n\t}, [currentView])\n\n\tconst pickFontFamily = (family) => {\n\t\tonChange({\n\t\t\t...value,\n\t\t\tfamily: family.family,\n\t\t\tvariation: decideVariationToSelect(family, value),\n\t\t})\n\t}\n\n\treturn (\n\t\t<animated.div\n\t\t\tclassName=\"ct-option-modal ct-typography-modal\"\n\t\t\t{...wrapperProps}>\n\t\t\t<div className=\"ct-typography-container\">\n\t\t\t\t<ul\n\t\t\t\t\tclassName={classnames('ct-typography-top', {\n\t\t\t\t\t\t'ct-switch-panel': currentView !== 'options',\n\t\t\t\t\t\t'ct-static': previousView === '_',\n\t\t\t\t\t})}>\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName=\"ct-back\"\n\t\t\t\t\t\tonClick={() => setCurrentView('options')}>\n\t\t\t\t\t\t<svg width=\"10\" height=\"10\" viewBox=\"0 0 15 15\">\n\t\t\t\t\t\t\t<path d=\"M14.2,6.8H2.6l4-4c0.3-0.3,0.3-0.8,0-1.1c-0.3-0.3-0.8-0.3-1.1,0L0.2,7l0,0c0,0-0.1,0.1-0.1,0.1c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1l0,0c0,0,0,0,0,0c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0,0,0,0,0.1C0.2,8,0.2,8,0.2,8l5.3,5.3c0.3,0.3,0.8,0.3,1.1,0c0.3-0.3,0.3-0.8,0-1.1l-4-4h11.7c0.4,0,0.8-0.3,0.8-0.8S14.7,6.8,14.2,6.8z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName={classnames('ct-font', {\n\t\t\t\t\t\t\tactive:\n\t\t\t\t\t\t\t\tcurrentView === 'search' ||\n\t\t\t\t\t\t\t\tcurrentView === 'fonts',\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsetCurrentView(\n\t\t\t\t\t\t\t\tcurrentView === 'fonts' ? 'search' : 'fonts'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tsetSearchTerm('')\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t{currentView !== 'search' && (\n\t\t\t\t\t\t\t<span>{familyForDisplay(value.family)}</span>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currentView === 'search' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\t\tref={inputEl}\n\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\t\t\tonKeyUp={(e) => {\n\t\t\t\t\t\t\t\t\tif (e.keyCode == 13) {\n\t\t\t\t\t\t\t\t\t\tif (linearFontsList.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tpickFontFamily(linearFontsList[0])\n\t\t\t\t\t\t\t\t\t\t\tsetCurrentView('options')\n\t\t\t\t\t\t\t\t\t\t\tsetSearchTerm('')\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonChange={({ target: { value } }) =>\n\t\t\t\t\t\t\t\t\tsetSearchTerm(value)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<svg width=\"8\" height=\"8\" viewBox=\"0 0 15 15\">\n\t\t\t\t\t\t\t{currentView === 'search' && (\n\t\t\t\t\t\t\t\t<path d=\"M8.9,7.5l4.6-4.6c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0L7.5,6.1L2.9,1.5c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4l4.6,4.6l-4.6,4.6c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0l4.6-4.6l4.6,4.6c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L8.9,7.5z\" />\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{currentView !== 'search' && (\n\t\t\t\t\t\t\t\t<path d=\"M14.6,14.6c-0.6,0.6-1.4,0.6-2,0l-2.5-2.5c-1,0.7-2.2,1-3.5,1C2.9,13.1,0,10.2,0,6.6S2.9,0,6.6,0c3.6,0,6.6,2.9,6.6,6.6c0,1.3-0.4,2.5-1,3.5l2.5,2.5C15.1,13.1,15.1,14,14.6,14.6z M6.6,1.9C4,1.9,1.9,4,1.9,6.6s2.1,4.7,4.7,4.7c2.6,0,4.7-2.1,4.7-4.7C11.3,4,9.2,1.9,6.6,1.9z\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName={classnames('ct-weight', {\n\t\t\t\t\t\t\tactive: currentView === 'variations',\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tonClick={() => setCurrentView('variations')}>\n\t\t\t\t\t\t<span data-variation={value.variation}>\n\t\t\t\t\t\t\t{humanizeVariationsShort(value.variation)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\n\t\t\t\t<Transition\n\t\t\t\t\titems={currentView}\n\t\t\t\t\timmediate={direction === 'static'}\n\t\t\t\t\tconfig={(item, type) => ({\n\t\t\t\t\t\tduration: 210,\n\t\t\t\t\t\teasing: bezierEasing(0.455, 0.03, 0.515, 0.955),\n\t\t\t\t\t})}\n\t\t\t\t\tfrom={{\n\t\t\t\t\t\ttransform:\n\t\t\t\t\t\t\tdirection === 'left'\n\t\t\t\t\t\t\t\t? 'translateX(100%)'\n\t\t\t\t\t\t\t\t: 'translateX(-100%)',\n\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t}}\n\t\t\t\t\tenter={{\n\t\t\t\t\t\ttransform: 'translateX(0%)',\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t}}\n\t\t\t\t\tleave={{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttransform:\n\t\t\t\t\t\t\tdirection === 'left'\n\t\t\t\t\t\t\t\t? 'translateX(-100%)'\n\t\t\t\t\t\t\t\t: 'translateX(100%)',\n\t\t\t\t\t}}>\n\t\t\t\t\t{(props, currentView, transition, key) => {\n\t\t\t\t\t\tif (currentView === 'options') {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<FontOptions\n\t\t\t\t\t\t\t\t\tsizeRef={sizeEl}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\tprops={props}\n\t\t\t\t\t\t\t\t\tcurrentView={currentView}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcurrentView === 'fonts' ||\n\t\t\t\t\t\t\tcurrentView === 'search'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<animated.div style={props} key={currentView}>\n\t\t\t\t\t\t\t\t\t<FontsList\n\t\t\t\t\t\t\t\t\t\ttypographyList={typographyList}\n\t\t\t\t\t\t\t\t\t\tsearchTerm={searchTerm}\n\t\t\t\t\t\t\t\t\t\tlinearFontsList={linearFontsList}\n\t\t\t\t\t\t\t\t\t\tcurrentView={`${currentView}:${previousView}`}\n\t\t\t\t\t\t\t\t\t\tonPickFamily={(family) => {\n\t\t\t\t\t\t\t\t\t\t\tif (family.source === 'google') {\n\t\t\t\t\t\t\t\t\t\t\t\tlet source =\n\t\t\t\t\t\t\t\t\t\t\t\t\twindow.ct_customizer_localizations\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ct_customizer_localizations\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ct_localizations\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t!source.dismissed_google_fonts_notice\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsConfirmingGdpr(family)\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tpickFontFamily(family)\n\t\t\t\t\t\t\t\t\t\t\t// setCurrentView('options')\n\t\t\t\t\t\t\t\t\t\t\t// setSearchTerm('')\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (currentView === 'variations') {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<VariationsList\n\t\t\t\t\t\t\t\t\tcurrentView={currentView}\n\t\t\t\t\t\t\t\t\tprops={props}\n\t\t\t\t\t\t\t\t\ttypographyList={typographyList}\n\t\t\t\t\t\t\t\t\tonChange={(value) => {\n\t\t\t\t\t\t\t\t\t\tonChange(value)\n\t\t\t\t\t\t\t\t\t\t// setCurrentView('options')\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t</Transition>\n\t\t\t</div>\n\n\t\t\t<Overlay\n\t\t\t\titems={!!isConfirmingGdpr}\n\t\t\t\tclassName=\"ct-admin-modal ct-gdpr-fonts-notice\"\n\t\t\t\tonDismiss={() => {}}\n\t\t\t\trender={() => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"ct-modal-content\"\n\t\t\t\t\t\tref={confirmationRef}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n\t\t\t\t\t\t\t\t<path d=\"M18.3,14.4c-0.1,0.3-0.4,0.6-0.8,0.6h-15c-0.4,0-0.7-0.2-0.8-0.6s0-0.7,0.3-0.9c0,0,2.1-1.6,2.1-6.8c0-3.2,2.6-5.8,5.8-5.8c3.2,0,5.8,2.6,5.8,5.8c0,5.2,2.1,6.8,2.1,6.8C18.3,13.7,18.4,14.1,18.3,14.4z M11.9,16.8c-0.4-0.2-0.9-0.1-1.1,0.3c-0.1,0.2-0.3,0.3-0.5,0.4c-0.2,0.1-0.4,0-0.6-0.1c-0.1-0.1-0.2-0.2-0.3-0.3c-0.2-0.4-0.7-0.5-1.1-0.3c-0.4,0.2-0.5,0.7-0.3,1.1c0.2,0.4,0.5,0.7,0.9,0.9c0.4,0.2,0.8,0.3,1.2,0.3c0.2,0,0.4,0,0.6-0.1c0.6-0.2,1.2-0.6,1.5-1.2C12.4,17.5,12.3,17,11.9,16.8z\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</i>\n\t\t\t\t\t\t<h2 className=\"ct-modal-title\">\n\t\t\t\t\t\t\t{__(\n\t\t\t\t\t\t\t\t\"Looks like you've picked a Google Font\",\n\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</h2>\n\n\t\t\t\t\t\t<p\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t__html: sprintf(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'By using external Google Fonts, your website might not comply with the privacy regulations in your country. As an alternative you can use a system font, our %sLocal Google Fonts%s extension, or this %splugin%s.',\n\t\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t'<a href=\"https://creativethemes.com/blocksy/docs/extensions/local-google-fonts/\" target=\"_blank\">',\n\t\t\t\t\t\t\t\t\t'</a>',\n\t\t\t\t\t\t\t\t\t'<a href=\"https://wordpress.org/plugins/local-google-fonts/\" target=\"_blank\">',\n\t\t\t\t\t\t\t\t\t'</a>'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"ct-modal-actions has-divider\"\n\t\t\t\t\t\t\tdata-buttons=\"2\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"ct-checkbox-container\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetShouldDismiss(!shouldDismiss)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={classnames('ct-checkbox', {\n\t\t\t\t\t\t\t\t\t\tactive: shouldDismiss,\n\t\t\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\twidth=\"10\"\n\t\t\t\t\t\t\t\t\t\theight=\"8\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 11.2 9.1\">\n\t\t\t\t\t\t\t\t\t\t<polyline\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"check\"\n\t\t\t\t\t\t\t\t\t\t\tpoints=\"1.2,4.8 4.4,7.9 9.9,1.2\"></polyline>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t{__(\n\t\t\t\t\t\t\t\t\t\"I understand, don't show this notification again.\",\n\t\t\t\t\t\t\t\t\t'blocksy'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetIsConfirmingGdpr(false)\n\t\t\t\t\t\t\t\t\tsetShouldDismiss(false)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{__('Cancel', 'blocksy')}\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName=\"button button-primary\"\n\t\t\t\t\t\t\t\tdisabled={!shouldDismiss}\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\tpickFontFamily(isConfirmingGdpr)\n\t\t\t\t\t\t\t\t\tsetIsConfirmingGdpr(false)\n\n\t\t\t\t\t\t\t\t\tif (shouldDismiss) {\n\t\t\t\t\t\t\t\t\t\tlet source =\n\t\t\t\t\t\t\t\t\t\t\twindow.ct_customizer_localizations\n\t\t\t\t\t\t\t\t\t\t\t\t? ct_customizer_localizations\n\t\t\t\t\t\t\t\t\t\t\t\t: ct_localizations\n\n\t\t\t\t\t\t\t\t\t\tsource.dismissed_google_fonts_notice =\n\t\t\t\t\t\t\t\t\t\t\t'yes'\n\n\t\t\t\t\t\t\t\t\t\t$.post(\n\t\t\t\t\t\t\t\t\t\t\tajaxurl,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\twp_customize: 'on',\n\t\t\t\t\t\t\t\t\t\t\t\taction: 'blocksy_dismissed_google_fonts_notice_handler',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t() => {}\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{__('Continue', 'blocksy')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t/>\n\t\t</animated.div>\n\t)\n}\n\nexport default TypographyModal\n","import {\n\tFragment,\n\tcreateElement,\n\tcreatePortal,\n\tComponent,\n\tuseRef,\n\tuseReducer,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseState,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport TypographyModal from './typography/TypographyModal'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport { humanizeVariations, familyForDisplay } from './typography/helpers'\nimport { maybePromoteScalarValueIntoResponsive } from '../../customizer/components/responsive-controls'\n\nimport usePopoverMaker from '../helpers/usePopoverMaker'\n\nimport { Transition } from '@react-spring/web'\nimport bezierEasing from 'bezier-easing'\n\nimport { __ } from 'ct-i18n'\n\nconst getLeftForEl = (modal, el) => {\n\tif (!modal) return\n\tif (!el) return\n\n\tlet style = getComputedStyle(modal)\n\n\tlet wrapperLeft = parseFloat(style.left)\n\n\tel = el.getBoundingClientRect()\n\n\treturn {\n\t\t'--option-modal-arrow-position': `${\n\t\t\tel.left + el.width / 2 - wrapperLeft - 6\n\t\t}px`,\n\t}\n}\n\nconst Typography = ({\n\toption: { label = '', desc = '', attr = {} },\n\toption,\n\tvalue,\n\tdevice,\n\tonChange,\n}) => {\n\t// const [isOpen, setIsOpen] = useState(false)\n\n\t// options | fonts | variations | search\n\tconst [currentViewCache, setCurrentViewCache] = useState('_:_')\n\n\tconst [isConfirmingGdpr, setIsConfirmingGdpr] = useState(false)\n\n\tconst typographyWrapper = useRef()\n\n\tlet [currentView, previousView] = useMemo(\n\t\t() => currentViewCache.split(':'),\n\t\t[currentViewCache]\n\t)\n\n\tconst setCurrentView = useCallback(\n\t\t(newView) => setCurrentViewCache(`${newView}:${currentView}`),\n\t\t[currentView]\n\t)\n\n\tconst [{ isOpen, isTransitioning }, setModalState] = useState({\n\t\tisOpen: false,\n\t\tisTransitioning: false,\n\t})\n\n\tconst { styles, popoverProps } = usePopoverMaker({\n\t\tref: typographyWrapper,\n\t\tdefaultHeight: 430,\n\t\tshouldCalculate: isTransitioning || isOpen,\n\t})\n\n\tconst setIsOpen = (isOpen) => {\n\t\tsetModalState((state) => ({\n\t\t\t...state,\n\t\t\tisOpen,\n\t\t\tisTransitioning: true,\n\t\t}))\n\t}\n\n\tconst stopTransitioning = () =>\n\t\tsetModalState((state) => ({\n\t\t\t...state,\n\t\t\tisTransitioning: false,\n\t\t}))\n\n\tconst fontFamilyRef = useRef()\n\tconst fontSizeRef = useRef()\n\tconst fontWeightRef = useRef()\n\tconst dotsRef = useRef()\n\n\tconst confirmationRef = useRef()\n\n\tconst arrowLeft = useMemo(() => {\n\t\tconst view = currentView\n\n\t\tconst futureRef =\n\t\t\tview === 'options'\n\t\t\t\t? fontSizeRef.current\n\t\t\t\t: view === 'fonts'\n\t\t\t\t? fontFamilyRef.current\n\t\t\t\t: view === 'variations'\n\t\t\t\t? fontWeightRef.current\n\t\t\t\t: fontSizeRef.current\n\n\t\treturn (\n\t\t\tpopoverProps.ref &&\n\t\t\tpopoverProps.ref.current &&\n\t\t\tgetLeftForEl(popoverProps.ref.current, futureRef)\n\t\t)\n\t}, [\n\t\tisOpen,\n\t\tcurrentView,\n\t\tpopoverProps.ref,\n\t\tpopoverProps.ref && popoverProps.ref.current,\n\t\tfontFamilyRef && fontFamilyRef.current,\n\t\tfontWeightRef && fontWeightRef.current,\n\t\tfontSizeRef && fontSizeRef.current,\n\t\tdotsRef && dotsRef.current,\n\t])\n\n\tlet visualFontSize =\n\t\tmaybePromoteScalarValueIntoResponsive(value['size'])[device] ===\n\t\t'CT_CSS_SKIP_RULE'\n\t\t\t? __('Default Size', 'blocksy')\n\t\t\t: maybePromoteScalarValueIntoResponsive(value['size'])[device]\n\n\tlet currentFontSizeUnit = maybePromoteScalarValueIntoResponsive(\n\t\tvalue['size']\n\t)\n\t\t[device].toString()\n\t\t.replace(/[0-9]/g, '')\n\t\t.replace(/\\-/g, '')\n\t\t.replace(/\\./g, '')\n\t\t.replace('CT_CSS_SKIP_RULE', '')\n\n\tlet unitsList = ['px', 'em', 'rem', 'pt', 'vw']\n\n\tif (\n\t\tmaybePromoteScalarValueIntoResponsive(value['size'])[device] !==\n\t\t\t'CT_CSS_SKIP_RULE' &&\n\t\tunitsList.indexOf(currentFontSizeUnit) === -1\n\t) {\n\t\tvisualFontSize = __('Custom', 'blocksy')\n\t}\n\n\treturn (\n\t\t<div className={classnames('ct-typography', {})}>\n\t\t\t<OutsideClickHandler\n\t\t\t\tdisabled={!isOpen}\n\t\t\t\tuseCapture={false}\n\t\t\t\tclassName=\"ct-typohraphy-value\"\n\t\t\t\tadditionalRefs={[popoverProps.ref, confirmationRef]}\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tif (isConfirmingGdpr) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t}}\n\t\t\t\twrapperProps={{\n\t\t\t\t\tref: typographyWrapper,\n\t\t\t\t\tonClick: (e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tif (isOpen) {\n\t\t\t\t\t\t\tsetCurrentView('options')\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetCurrentViewCache('options:_')\n\t\t\t\t\t\tsetIsOpen('options')\n\t\t\t\t\t},\n\t\t\t\t}}>\n\t\t\t\t<div>\n\t\t\t\t\t<span\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\t\tif (isOpen) {\n\t\t\t\t\t\t\t\tsetCurrentView('fonts')\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetCurrentViewCache('fonts:_')\n\t\t\t\t\t\t\tsetIsOpen('fonts')\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"ct-font\"\n\t\t\t\t\t\tref={fontFamilyRef}>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{value.family === 'Default'\n\t\t\t\t\t\t\t\t? __('Default Family', 'blocksy')\n\t\t\t\t\t\t\t\t: familyForDisplay(value.family)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<i>/</i>\n\t\t\t\t\t<span\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\t\tif (isOpen) {\n\t\t\t\t\t\t\t\tsetCurrentView('options')\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetCurrentViewCache('options:_')\n\t\t\t\t\t\t\tsetIsOpen('font_size')\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tref={fontSizeRef}\n\t\t\t\t\t\tclassName=\"ct-size\">\n\t\t\t\t\t\t<span>{visualFontSize}</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<i>/</i>\n\t\t\t\t\t<span\n\t\t\t\t\t\tref={fontWeightRef}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\t\tif (isOpen) {\n\t\t\t\t\t\t\t\tsetCurrentView('variations')\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetCurrentViewCache('variations:_')\n\t\t\t\t\t\t\tsetIsOpen('variations')\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"ct-weight\">\n\t\t\t\t\t\t<span>{humanizeVariations(value.variation)}</span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<a ref={dotsRef} />\n\t\t\t</OutsideClickHandler>\n\n\t\t\t{(isTransitioning || isOpen) &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<Transition\n\t\t\t\t\t\titems={isOpen}\n\t\t\t\t\t\tonRest={(isOpen) => {\n\t\t\t\t\t\t\tstopTransitioning()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\tduration: 100,\n\t\t\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tfrom={\n\t\t\t\t\t\t\tisOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: { opacity: 1 }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tenter={\n\t\t\t\t\t\t\tisOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tleave={\n\t\t\t\t\t\t\t!isOpen\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}>\n\t\t\t\t\t\t{(style, item) => {\n\t\t\t\t\t\t\tif (!item) {\n\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<TypographyModal\n\t\t\t\t\t\t\t\t\tisConfirmingGdpr={isConfirmingGdpr}\n\t\t\t\t\t\t\t\t\tsetIsConfirmingGdpr={setIsConfirmingGdpr}\n\t\t\t\t\t\t\t\t\tconfirmationRef={confirmationRef}\n\t\t\t\t\t\t\t\t\twrapperProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\t\t\t\t\t...styles,\n\t\t\t\t\t\t\t\t\t\t\t...arrowLeft,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t...popoverProps,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tinitialView={item}\n\t\t\t\t\t\t\t\t\tsetInititialView={(initialView) =>\n\t\t\t\t\t\t\t\t\t\tsetIsOpen(initialView)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcurrentView={currentView}\n\t\t\t\t\t\t\t\t\tpreviousView={previousView}\n\t\t\t\t\t\t\t\t\tsetCurrentView={setCurrentView}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\tisOpen &&\n\t\t\t\t\t\t\t((props) => (\n\t\t\t\t\t\t\t\t<TypographyModal\n\t\t\t\t\t\t\t\t\twrapperProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\t\t\t\t\t...styles,\n\t\t\t\t\t\t\t\t\t\t\t...arrowLeft,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t...popoverProps,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tinitialView={isOpen}\n\t\t\t\t\t\t\t\t\tsetInititialView={(initialView) =>\n\t\t\t\t\t\t\t\t\t\tsetIsOpen(initialView)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcurrentView={currentView}\n\t\t\t\t\t\t\t\t\tpreviousView={previousView}\n\t\t\t\t\t\t\t\t\tsetCurrentView={setCurrentView}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))\n                            */\n\t\t\t\t\t\t}}\n\t\t\t\t\t</Transition>,\n\t\t\t\t\tdocument.body\n\t\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default Typography\n","import {\n\tcreateElement,\n\tcreatePortal,\n\tuseContext,\n\tFragment,\n\tuseState,\n\tComponent,\n\tuseRef,\n} from '@wordpress/element'\nimport { maybeTransformUnorderedChoices } from '../helpers/parse-choices.js'\nimport classnames from 'classnames'\nimport { Transition } from 'react-spring/renderprops'\nimport bezierEasing from 'bezier-easing'\nimport OutsideClickHandler from './react-outside-click-handler'\nimport { __ } from 'ct-i18n'\n\nconst InlineVisibility = ({ option, value, onChange }) => {\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"ct-visibility-option ct-devices ct-buttons-group\"\n\t\t\t{...(option.attr || {})}>\n\t\t\t{maybeTransformUnorderedChoices(option.choices).map(\n\t\t\t\t({ key, value: val }) => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tclassName={classnames(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tactive: value[key],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t`ct-${key}`\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tonChange({\n\t\t\t\t\t\t\t\t...value,\n\t\t\t\t\t\t\t\t[key]: value[key]\n\t\t\t\t\t\t\t\t\t? Object.values(value).filter((v) => v)\n\t\t\t\t\t\t\t\t\t\t\t.length === 1 && !option.allow_empty\n\t\t\t\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t)}\n\t\t</ul>\n\t)\n}\n\nconst VisibilityModal = ({ option, value, onChange }) => {\n\tconst [{ isPicking, isTransitioning }, setAnimationState] = useState({\n\t\tisPicking: null,\n\t\tisTransitioning: null,\n\t})\n\n\tconst stopTransitioning = () =>\n\t\tsetAnimationState({\n\t\t\tisPicking,\n\t\t\tisTransitioning: false,\n\t\t})\n\n\tconst el = useRef()\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<OutsideClickHandler\n\t\t\t\tuseCapture={false}\n\t\t\t\tdisabled={!isPicking}\n\t\t\t\tclassName=\"ct-visibility-trigger\"\n\t\t\t\tadditionalRefs={[]}\n\t\t\t\tonOutsideClick={() => {\n\t\t\t\t\tif (!isPicking) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\tisTransitioning: true,\n\t\t\t\t\t\tisPicking: null,\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\twrapperProps={{\n\t\t\t\t\tref: el,\n\t\t\t\t\tonClick: (e) => {\n\t\t\t\t\t\te.preventDefault()\n\n\t\t\t\t\t\tsetAnimationState({\n\t\t\t\t\t\t\tisTransitioning: true,\n\t\t\t\t\t\t\tisPicking: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}}>\n\t\t\t\t<span>open visibility</span>\n\t\t\t</OutsideClickHandler>\n\n\t\t\t{(isTransitioning || isPicking) &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t<Transition\n\t\t\t\t\t\titems={isPicking}\n\t\t\t\t\t\tonRest={(isOpen) => {\n\t\t\t\t\t\t\tstopTransitioning()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\tduration: 100,\n\t\t\t\t\t\t\teasing: bezierEasing(0.25, 0.1, 0.25, 1.0),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tfrom={\n\t\t\t\t\t\t\tisPicking\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: { opacity: 1 }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tenter={\n\t\t\t\t\t\t\tisPicking\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(1, 1, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tleave={\n\t\t\t\t\t\t\tisPicking\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttransform: 'scale3d(0.95, 0.95, 1)',\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}>\n\t\t\t\t\t\t{(isPicking) =>\n\t\t\t\t\t\t\tisPicking &&\n\t\t\t\t\t\t\t((props) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tstyle={props}\n\t\t\t\t\t\t\t\t\tclassName=\"ct-box-shadow-modal\"\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonMouseDownCapture={(e) => {\n\t\t\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonMouseUpCapture={(e) => {\n\t\t\t\t\t\t\t\t\t\te.nativeEvent.stopImmediatePropagation()\n\t\t\t\t\t\t\t\t\t\te.nativeEvent.stopPropagation()\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t<InlineVisibility\n\t\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t}\n\t\t\t\t\t</Transition>,\n\t\t\t\t\tel.current.closest('.ct-labeled-group-item')\n\t\t\t\t\t\t? el.current\n\t\t\t\t\t\t\t\t.closest('.ct-labeled-group-item')\n\t\t\t\t\t\t\t\t.querySelector('.ct-visibility-modal-wrapper')\n\t\t\t\t\t\t: el.current.closest('.ct-single-palette')\n\t\t\t\t\t\t? el.current\n\t\t\t\t\t\t\t\t.closest('.ct-single-palette')\n\t\t\t\t\t\t\t\t.querySelector('.ct-visibility-modal-wrapper')\n\t\t\t\t\t\t: el.current.closest('.ct-visibility-modal-wrapper')\n\t\t\t\t\t\t? el.current.closest('.ct-visibility-modal-wrapper')\n\t\t\t\t\t\t: el.current\n\t\t\t\t\t\t\t\t.closest('.ct-control')\n\t\t\t\t\t\t\t\t.querySelector('.ct-visibility-modal-wrapper')\n\t\t\t\t)}\n\t\t</Fragment>\n\t)\n}\n\nconst Visibility = ({\n\toption,\n\toption: {\n\t\t// inline | modal\n\t\tview = 'inline',\n\t},\n\tvalue,\n\tonChange,\n}) => {\n\tif (view === 'inline') {\n\t\treturn (\n\t\t\t<InlineVisibility\n\t\t\t\toption={option}\n\t\t\t\tvalue={value}\n\t\t\t\tonChange={onChange}\n\t\t\t/>\n\t\t)\n\t}\n\n\treturn <VisibilityModal option={option} value={value} onChange={onChange} />\n}\n\nVisibility.hiddenResponsive = true\n\nVisibility.ControlEnd = () => <div className=\"ct-visibility-modal-wrapper\" />\n\nexport default Visibility\n","import {\n\tcreateElement,\n\tComponent,\n\tuseState,\n\tFragment,\n} from '@wordpress/element'\nimport cls from 'classnames'\nimport { __, sprintf } from 'ct-i18n'\nimport NumberOption from './ct-number'\nimport classnames from 'classnames'\n\nconst WooColumnsAndRows = ({\n\tonChange,\n\tvalue,\n\toption,\n\toption: { columns_id, rows_id },\n\tdevice,\n\tonChangeFor,\n\tvalues,\n\tvalues: { woocommerce_catalog_columns, woocommerce_catalog_rows },\n}) => {\n\tconst rowsValue = rows_id ? values[rows_id] : woocommerce_catalog_rows\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classnames('ct-woo-columns-and-rows', {})}\n\t\t\t{...(device !== 'desktop' ? { 'data-disabled-last': '' } : {})}>\n\t\t\t<div>\n\t\t\t\t<NumberOption\n\t\t\t\t\toption={{\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tattr: {\n\t\t\t\t\t\t\t...(option.attr || {}),\n\t\t\t\t\t\t\t'data-width': 'full',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t!columns_id && device === 'desktop'\n\t\t\t\t\t\t\t? woocommerce_catalog_columns\n\t\t\t\t\t\t\t: value\n\t\t\t\t\t}\n\t\t\t\t\tonChange={(val) => {\n\t\t\t\t\t\tdevice === 'desktop' && !columns_id\n\t\t\t\t\t\t\t? onChangeFor('woocommerce_catalog_columns', val)\n\t\t\t\t\t\t\t: onChange(val)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<p className=\"ct-option-description\">\n\t\t\t\t\t{__('Number of columns', 'blc')}\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div>\n\t\t\t\t<NumberOption\n\t\t\t\t\toption={{\n\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\tresponsive: false,\n\t\t\t\t\t\tvalue: 4,\n\t\t\t\t\t\tattr: {\n\t\t\t\t\t\t\t'data-width': 'full',\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={device === 'desktop' ? rowsValue : 'auto'}\n\t\t\t\t\tonChange={(val) => {\n\t\t\t\t\t\tdevice === 'desktop' &&\n\t\t\t\t\t\t\tonChangeFor(\n\t\t\t\t\t\t\t\trows_id || 'woocommerce_catalog_rows',\n\t\t\t\t\t\t\t\tval\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (wp.customize && wp.customize.previewer) {\n\t\t\t\t\t\t\twp.customize.previewer.send(\n\t\t\t\t\t\t\t\t'ct:sync:refresh_partial',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: rows_id || 'woocommerce_catalog_rows',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<p className=\"ct-option-description\">\n\t\t\t\t\t{__('Number of rows', 'blc')}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nWooColumnsAndRows.renderingConfig = {\n\tgetValueForRevert: ({\n\t\tvalue,\n\t\tvalues: { woocommerce_catalog_columns, woocommerce_catalog_rows },\n\t\toption,\n\t\toption: { columns_id, rows_id },\n\t\tvalues,\n\t\tdevice,\n\t}) => {\n\t\tconst rowsValue = rows_id ? values[rows_id] : woocommerce_catalog_rows\n\n\t\tlet myResult = {\n\t\t\t...value,\n\t\t\tdesktop: woocommerce_catalog_columns,\n\t\t\twoocommerce_catalog_columns,\n\t\t\twoocommerce_catalog_rows,\n\t\t}\n\n\t\treturn myResult\n\t},\n\n\tcomputeOptionValue: (v) => ({\n\t\t...v,\n\t\twoocommerce_catalog_columns: 4,\n\t\twoocommerce_catalog_rows: 4,\n\t}),\n\n\tcomputeOptionValue: (v) => {\n\t\tconst result = {\n\t\t\t...v,\n\t\t\twoocommerce_catalog_columns: 4,\n\t\t\twoocommerce_catalog_rows: 4,\n\t\t}\n\n\t\treturn result\n\t},\n\n\tperformRevert: ({ onChangeFor }) => {\n\t\tonChangeFor('woocommerce_catalog_columns', 4)\n\t\tonChangeFor('woocommerce_catalog_rows', 4)\n\t},\n}\n\nexport default WooColumnsAndRows\n","import { createElement, Component, useState } from '@wordpress/element'\nimport cls from 'classnames'\nimport { __, sprintf } from 'ct-i18n'\nimport Ratio from './ct-ratio'\n\nconst WooCommerceRatio = ({\n\tvalue,\n\tonChange,\n\tonChangeFor,\n\tvalues,\n\tvalues: {\n\t\twoocommerce_thumbnail_cropping_custom_width,\n\t\twoocommerce_thumbnail_cropping_custom_height,\n\t},\n\toption,\n\t...props\n}) => {\n\treturn (\n\t\t<Ratio\n\t\t\tonChange={(val) => {\n\t\t\t\tlet isCustom = val.indexOf('/') === -1\n\t\t\t\tlet [width, height] = val.split(isCustom ? ':' : '/')\n\n\t\t\t\tif (val === 'original') {\n\t\t\t\t\tonChangeFor('woocommerce_thumbnail_cropping', 'uncropped')\n\t\t\t\t\tonChange('uncropped')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tonChange(isCustom ? 'custom' : 'predefined')\n\t\t\t\tonChangeFor('woocommerce_thumbnail_cropping', 'custom')\n\n\t\t\t\tonChangeFor(\n\t\t\t\t\t'woocommerce_thumbnail_cropping_custom_height',\n\t\t\t\t\tparseFloat(height || '0') || 0\n\t\t\t\t)\n\n\t\t\t\tonChangeFor(\n\t\t\t\t\t'woocommerce_thumbnail_cropping_custom_width',\n\t\t\t\t\tparseFloat(width || '0') || 0\n\t\t\t\t)\n\t\t\t}}\n\t\t\tvalue={\n\t\t\t\tvalue === 'uncropped'\n\t\t\t\t\t? 'original'\n\t\t\t\t\t: value === '1:1'\n\t\t\t\t\t? `1/1`\n\t\t\t\t\t: `${woocommerce_thumbnail_cropping_custom_width}${\n\t\t\t\t\t\t\tvalue === 'custom' ? ':' : '/'\n\t\t\t\t\t  }${woocommerce_thumbnail_cropping_custom_height}`\n\t\t\t}\n\t\t\toption={{\n\t\t\t\t...option,\n\t\t\t\tvalue: '1/1',\n\t\t\t}}\n\t\t\tonChangeFor={onChangeFor}\n\t\t\tvalues={values}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nWooCommerceRatio.ControlEnd = () => (\n\t<div\n\t\tclassName=\"ct-color-modal-wrapper\"\n\t\tonMouseDown={(e) => e.stopPropagation()}\n\t\tonMouseUp={(e) => e.stopPropagation()}\n\t/>\n)\n\nexport default WooCommerceRatio\n","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.date;","import { createElement, Component } from '@wordpress/element'\nimport { DateTimePicker } from '@wordpress/components'\n\nimport { __experimentalGetSettings } from '@wordpress/date'\n\nconst LocalDateTimePicker = ({ value, option, onChange }) => {\n\tconst settings = __experimentalGetSettings()\n\n\tconst is12HourTime = /a(?!\\\\)/i.test(\n\t\tsettings.formats.time\n\t\t\t.toLowerCase() // Test only the lower case a\n\t\t\t.replace(/\\\\\\\\/g, '') // Replace \"//\" with empty strings\n\t\t\t.split('')\n\t\t\t.reverse()\n\t\t\t.join('') // Reverse the string and test for \"a\" not followed by a slash\n\t)\n\n\treturn (\n\t\t<div className=\"ct-date-time-picker\">\n\t\t\t<DateTimePicker\n\t\t\t\tcurrentDate={value ? value : new Date()}\n\t\t\t\tonChange={(date) => {\n\t\t\t\t\tonChange(date)\n\t\t\t\t}}\n\t\t\t\tis12Hour={is12HourTime}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\n/*\n\t<div className=\"ct-option-input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tvalue={value}\n\t\t\t{...{\n\t\t\t\t...(option.field_attr ? option.field_attr : {}),\n\t\t\t\t...(option.attr && option.attr.placeholder\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tplaceholder: option.attr.placeholder,\n\t\t\t\t\t  }\n\t\t\t\t\t: {}),\n\t\t\t}}\n\t\t\tonChange={({ target: { value } }) => onChange(value)}\n\t\t/>\n\t</div>\n)\n*/\n\nexport default LocalDateTimePicker\n","import { Fragment, createElement, Component } from '@wordpress/element'\n\nconst Hidden = ({ option: { text = '', attr = {} } }) => <Fragment />\n\nHidden.renderingConfig = { design: 'none' }\nHidden.MetaWrapper = () => null\n\nexport default Hidden\n","import {\n\tcreateElement,\n\tComponent,\n\tFragment,\n\tmemo,\n\tuseMemo,\n} from '@wordpress/element'\n\nconst HTML = (props) => {\n\tconst { option } = props\n\n\treturn (\n\t\t<div\n\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t__html: option.html || '',\n\t\t\t}}></div>\n\t)\n}\n\nexport default HTML\n","import {\n\tcreateElement,\n\tComponent,\n\tFragment,\n\tmemo,\n\tuseMemo,\n} from '@wordpress/element'\n\nconst Jsx = (props) => {\n\tconst { option } = props\n\n\tif (option.render) {\n\t\treturn option.render(props)\n\t}\n\n\treturn null\n}\n\nexport default Jsx\n","import {\n\tcreateElement,\n\tComponent,\n\tFragment,\n\tcreateRef,\n} from '@wordpress/element'\nimport cls from 'classnames'\n\nconst DISPLAY = {\n\tBLOCK: 'block',\n\tFLEX: 'flex',\n\tINLINE_BLOCK: 'inline-block',\n}\n\nconst defaultProps = {\n\tdisabled: false,\n\n\t// `useCapture` is set to true by default so that a `stopPropagation` in the\n\t// children will not prevent all outside click handlers from firing - maja\n\tuseCapture: true,\n\tdisplay: DISPLAY.BLOCK,\n}\n\nconst updateRef = (ref, instance) => {\n\tif (typeof ref === 'function') {\n\t\tref(instance)\n\t} else {\n\t\tref.current = instance\n\t}\n}\n\nexport default class OutsideClickHandler extends Component {\n\tcomponentDidMount() {\n\t\tconst { disabled, useCapture } = this.props\n\n\t\tif (!disabled) this.addMouseDownEventListener(useCapture)\n\t}\n\n\tchildNode = createRef()\n\n\tcheckIsInside = (event) => {\n\t\tconst result = [\n\t\t\tthis.childNode,\n\t\t\t...(this.props.additionalRefs || []),\n\t\t].reduce((isInside, currentRef) => {\n\t\t\tif (isInside) {\n\t\t\t\treturn isInside\n\t\t\t}\n\n\t\t\tif (!currentRef || !currentRef.current) {\n\t\t\t\treturn isInside\n\t\t\t}\n\n\t\t\treturn currentRef.current.contains(event.target)\n\t\t}, false)\n\n\t\treturn result\n\t}\n\n\tUNSAFE_componentWillReceiveProps({ disabled, useCapture }) {\n\t\tconst { disabled: prevDisabled } = this.props\n\n\t\tif (prevDisabled !== disabled) {\n\t\t\tif (disabled) {\n\t\t\t\tthis.removeEventListeners()\n\t\t\t} else {\n\t\t\t\tthis.addMouseDownEventListener(useCapture)\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.removeEventListeners()\n\t}\n\n\t// Use mousedown/mouseup to enforce that clicks remain outside the root's\n\t// descendant tree, even when dragged. This should also get triggered on\n\t// touch devices.\n\tonMouseDown = (e) => {\n\t\tconst { useCapture } = this.props\n\n\t\tif (!this.checkIsInside(e)) {\n\t\t\tif (this.removeMouseUp) {\n\t\t\t\tthis.removeMouseUp()\n\t\t\t\tthis.removeMouseUp = null\n\t\t\t}\n\n\t\t\tdocument.addEventListener('mouseup', this.onMouseUp, useCapture)\n\n\t\t\tthis.removeMouseUp = () => {\n\t\t\t\tdocument.removeEventListener(\n\t\t\t\t\t'mouseup',\n\t\t\t\t\tthis.onMouseUp,\n\t\t\t\t\tuseCapture\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Use mousedown/mouseup to enforce that clicks remain outside the root's\n\t// descendant tree, even when dragged. This should also get triggered on\n\t// touch devices.\n\tonMouseUp = (e) => {\n\t\tconst { onOutsideClick } = this.props\n\n\t\tif (this.removeMouseUp) {\n\t\t\tthis.removeMouseUp()\n\t\t\tthis.removeMouseUp = null\n\t\t}\n\n\t\tif (!this.checkIsInside(e)) {\n\t\t\tonOutsideClick(e)\n\t\t}\n\t}\n\n\tsetChildNodeRef = (ref) => {\n\t\tif (this.props.wrapperProps && this.props.wrapperProps.ref) {\n\t\t\tupdateRef(this.props.wrapperProps.ref, ref)\n\t\t}\n\n\t\tupdateRef(this.childNode, ref)\n\t}\n\n\taddMouseDownEventListener(useCapture) {\n\t\tdocument.addEventListener('mousedown', this.onMouseDown, useCapture)\n\n\t\tthis.removeMouseDown = () => {\n\t\t\tdocument.removeEventListener(\n\t\t\t\t'mousedown',\n\t\t\t\tthis.onMouseDown,\n\t\t\t\tuseCapture\n\t\t\t)\n\t\t}\n\t}\n\n\tremoveEventListeners() {\n\t\tif (this.removeMouseDown) this.removeMouseDown()\n\t\tif (this.removeMouseUp) this.removeMouseUp()\n\t}\n\n\trender() {\n\t\tconst { children, display, className, wrapperProps } = this.props\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cls(className)}\n\t\t\t\t{...(wrapperProps || {})}\n\t\t\t\tref={this.setChildNodeRef}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t)\n\t}\n}\n\nOutsideClickHandler.defaultProps = defaultProps\n","import { createElement } from '@wordpress/element'\n\nconst Text = ({ value, option, onChange }) => (\n\t<div className=\"ct-option-input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tvalue={value}\n\t\t\t{...{\n\t\t\t\t...(option.field_attr ? option.field_attr : {}),\n\t\t\t\t...(option.attr && option.attr.placeholder\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tplaceholder: option.attr.placeholder,\n\t\t\t\t\t  }\n\t\t\t\t\t: {}),\n\t\t\t}}\n\t\t\tonChange={({ target: { value } }) => onChange(value)}\n\t\t\t{...(option.select_on_focus\n\t\t\t\t? { onFocus: ({ target }) => target.select() }\n\t\t\t\t: {})}\n\t\t/>\n\t</div>\n)\n\nexport default Text\n","import { createElement, Component } from '@wordpress/element'\n\nconst TextArea = ({ value, option, onChange }) => {\n\tlet { placeholder, ...attr } = {\n\t\t...(option.attr || {}),\n\t}\n\n\treturn (\n\t\t<div className=\"ct-option-textarea\" {...attr}>\n\t\t\t<textarea\n\t\t\t\tvalue={value}\n\t\t\t\t{...{\n\t\t\t\t\t...(option.field_attr ? option.field_attr : {}),\n\t\t\t\t\t...(placeholder\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t}}\n\t\t\t\tonChange={({ target: { value } }) => onChange(value)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default TextArea\n","import {\n\tcreateElement,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n\tuseCallback,\n} from '@wordpress/element'\nimport md5 from 'md5'\n\nconst TextArea = ({ id, value, option, onChange }) => {\n\tconst el = useRef()\n\tconst editor = useRef(null)\n\tconst [editorId, _] = useState(\n\t\t`${id}-${md5(\n\t\t\tMath.random() + '-' + Math.random() + '-' + Math.random()\n\t\t)}`\n\t)\n\n\tconst correctEditor = () => wp.oldEditor || wp.editor\n\n\tconst listener = useCallback(\n\t\t() => onChange(correctEditor().getContent(editorId)),\n\t\t[editorId]\n\t)\n\n\tuseEffect(() => {\n\t\tcorrectEditor().initialize(editorId, {\n\t\t\tquicktags: true,\n\t\t\tmediaButtons: true,\n\t\t\t...option,\n\n\t\t\t...(window.tinymce\n\t\t\t\t? {\n\t\t\t\t\t\ttinymce: {\n\t\t\t\t\t\t\ttoolbar1:\n\t\t\t\t\t\t\t\t'formatselect,styleselect,bold,italic,bullist,numlist,link,alignleft,aligncenter,alignright,wp_adv',\n\t\t\t\t\t\t\ttoolbar2:\n\t\t\t\t\t\t\t\t'strikethrough,hr,forecolor,pastetext,removeformat,charmap,outdent,indent,undo,redo,wp_help',\n\n\t\t\t\t\t\t\t...(typeof option.tinymce === 'object'\n\t\t\t\t\t\t\t\t? option.tinymce\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\tstyle_formats_merge: true,\n\t\t\t\t\t\t\tstyle_formats: [],\n\t\t\t\t\t\t},\n\t\t\t\t  }\n\t\t\t\t: { tinymce: null }),\n\t\t})\n\n\t\tif (window.tinymce) {\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\twindow.tinymce.editors[editorId] &&\n\t\t\t\t\twindow.tinymce.editors[editorId].on('change', listener)\n\t\t\t)\n\t\t}\n\n\t\tif (wp.oldEditor) {\n\t\t\tsetTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\twindow.tinymce &&\n\t\t\t\t\t\t\twindow.tinymce.editors[editorId]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\twindow.tinymce.editors[editorId].off(\n\t\t\t\t\t\t\t\t'change',\n\t\t\t\t\t\t\t\tlistener\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcorrectEditor().remove(editorId)\n\n\t\t\t\t\t\tcorrectEditor().initialize(editorId, {\n\t\t\t\t\t\t\tquicktags: true,\n\t\t\t\t\t\t\tmediaButtons: true,\n\t\t\t\t\t\t\t...option,\n\n\t\t\t\t\t\t\t...(window.tinymce\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttinymce: {\n\t\t\t\t\t\t\t\t\t\t\ttoolbar1:\n\t\t\t\t\t\t\t\t\t\t\t\t'formatselect,styleselect,bold,italic,bullist,numlist,link,alignleft,aligncenter,alignright,wp_adv',\n\t\t\t\t\t\t\t\t\t\t\ttoolbar2:\n\t\t\t\t\t\t\t\t\t\t\t\t'strikethrough,hr,forecolor,pastetext,removeformat,charmap,outdent,indent,undo,redo,wp_help',\n\n\t\t\t\t\t\t\t\t\t\t\t...(typeof option.tinymce ===\n\t\t\t\t\t\t\t\t\t\t\t'object'\n\t\t\t\t\t\t\t\t\t\t\t\t? option.tinymce\n\t\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\t\tstyle_formats_merge: true,\n\t\t\t\t\t\t\t\t\t\t\tstyle_formats: [],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: { tinymce: null }),\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tif (window.tinymce) {\n\t\t\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\twindow.tinymce.editors[editorId] &&\n\t\t\t\t\t\t\t\t\twindow.tinymce.editors[editorId].on(\n\t\t\t\t\t\t\t\t\t\t'change',\n\t\t\t\t\t\t\t\t\t\tlistener\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 300)\n\t\t\t\t},\n\n\t\t\t\t1000\n\t\t\t)\n\t\t}\n\n\t\treturn () => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (window.tinymce && window.tinymce.editors[editorId]) {\n\t\t\t\t\twindow.tinymce.editors[editorId].off('change', listener)\n\t\t\t\t}\n\n\t\t\t\tcorrectEditor().remove(editorId)\n\t\t\t}, 300)\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div className=\"ct-option-editor\" {...(option.attr || {})}>\n\t\t\t<textarea\n\t\t\t\tstyle={{ opacity: 0 }}\n\t\t\t\tid={editorId}\n\t\t\t\tref={el}\n\t\t\t\tvalue={value}\n\t\t\t\tclassName=\"wp-editor-area\"\n\t\t\t\t{...{\n\t\t\t\t\t...(option.field_attr ? option.field_attr : {}),\n\t\t\t\t\t...(option.attr && option.attr.placeholder\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tplaceholder: option.attr.placeholder,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {}),\n\t\t\t\t}}\n\t\t\t\tonChange={({ target: { value } }) => onChange(value)}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default TextArea\n","__webpack_public_path__ = ct_localizations.public_url\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1)      { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n  var currentX, currentT, i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n   var currentSlope = getSlope(aGuessT, mX1, mX2);\n   if (currentSlope === 0.0) {\n     return aGuessT;\n   }\n   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n   aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n  return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  if (mX1 === mY1 && mX2 === mY2) {\n    return LinearEasing;\n  }\n\n  // Precompute samples table\n  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  for (var i = 0; i < kSplineTableSize; ++i) {\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n  }\n\n  function getTForX (aX) {\n    var intervalStart = 0.0;\n    var currentSample = 1;\n    var lastSample = kSplineTableSize - 1;\n\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    var guessForT = intervalStart + dist * kSampleStepSize;\n\n    var initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  return function BezierEasing (x) {\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var charenc = {\n  // UTF-8 encoding\n  utf8: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n    }\n  },\n\n  // Binary encoding\n  bin: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      for (var bytes = [], i = 0; i < str.length; i++)\n        bytes.push(str.charCodeAt(i) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      for (var str = [], i = 0; i < bytes.length; i++)\n        str.push(String.fromCharCode(bytes[i]));\n      return str.join('');\n    }\n  }\n};\n\nmodule.exports = charenc;\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","(function() {\n  var base64map\n      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n  crypt = {\n    // Bit-wise rotation left\n    rotl: function(n, b) {\n      return (n << b) | (n >>> (32 - b));\n    },\n\n    // Bit-wise rotation right\n    rotr: function(n, b) {\n      return (n << (32 - b)) | (n >>> b);\n    },\n\n    // Swap big-endian to little-endian and vice versa\n    endian: function(n) {\n      // If number given, swap endian\n      if (n.constructor == Number) {\n        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n      }\n\n      // Else, assume array and swap all items\n      for (var i = 0; i < n.length; i++)\n        n[i] = crypt.endian(n[i]);\n      return n;\n    },\n\n    // Generate an array of any length of random bytes\n    randomBytes: function(n) {\n      for (var bytes = []; n > 0; n--)\n        bytes.push(Math.floor(Math.random() * 256));\n      return bytes;\n    },\n\n    // Convert a byte array to big-endian 32-bit words\n    bytesToWords: function(bytes) {\n      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n        words[b >>> 5] |= bytes[i] << (24 - b % 32);\n      return words;\n    },\n\n    // Convert big-endian 32-bit words to a byte array\n    wordsToBytes: function(words) {\n      for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a hex string\n    bytesToHex: function(bytes) {\n      for (var hex = [], i = 0; i < bytes.length; i++) {\n        hex.push((bytes[i] >>> 4).toString(16));\n        hex.push((bytes[i] & 0xF).toString(16));\n      }\n      return hex.join('');\n    },\n\n    // Convert a hex string to a byte array\n    hexToBytes: function(hex) {\n      for (var bytes = [], c = 0; c < hex.length; c += 2)\n        bytes.push(parseInt(hex.substr(c, 2), 16));\n      return bytes;\n    },\n\n    // Convert a byte array to a base-64 string\n    bytesToBase64: function(bytes) {\n      for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n        for (var j = 0; j < 4; j++)\n          if (i * 8 + j * 6 <= bytes.length * 8)\n            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n          else\n            base64.push('=');\n      }\n      return base64.join('');\n    },\n\n    // Convert a base-64 string to a byte array\n    base64ToBytes: function(base64) {\n      // Remove non-base-64 characters\n      base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n          imod4 = ++i % 4) {\n        if (imod4 == 0) continue;\n        bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n      }\n      return bytes;\n    }\n  };\n\n  module.exports = crypt;\n})();\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar maybePromoteScalarValueIntoResponsive = function maybePromoteScalarValueIntoResponsive(value) {\n  var isResponsive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  /**\n   * Responsive value must necessarily have the desktop key attached to it\n   */\n  if (value && Object.keys(value).indexOf('desktop') > -1) {\n    if (!isResponsive) {\n      return value.desktop;\n    }\n\n    return value;\n  }\n\n  if (!isResponsive) {\n    return value;\n  }\n\n  return {\n    desktop: value,\n    tablet: value,\n    mobile: value\n  };\n};\n\nexports.maybePromoteScalarValueIntoResponsive = maybePromoteScalarValueIntoResponsive;\n//# sourceMappingURL=promote-into-responsive.js.map\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected;\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  /* eslint max-statements: [2, 50] */\n  var i, key;\n  if (typeof a !== typeof b) { return false; }\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if (aIsRegex || bIsRegex) {\n    return a.source === b.source && flags(a) === flags(b);\n  }\n\n  if (isDate(a) && isDate(b)) {\n    return getTime.call(a) === getTime.call(b);\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  try {\n    var ka = objectKeys(a);\n    var kb = objectKeys(b);\n  } catch (e) { // happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; }\n  }\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) { return false; }\n  }\n\n  return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n  var doc = document;\n  var container =\n    typeof element === 'string' ? doc.querySelector(element) : element;\n\n  var config = xtend(\n    {\n      returnFocusOnDeactivate: true,\n      escapeDeactivates: true\n    },\n    userOptions\n  );\n\n  var state = {\n    firstTabbableNode: null,\n    lastTabbableNode: null,\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false\n  };\n\n  var trap = {\n    activate: activate,\n    deactivate: deactivate,\n    pause: pause,\n    unpause: unpause\n  };\n\n  return trap;\n\n  function activate(activateOptions) {\n    if (state.active) return;\n\n    updateTabbableNodes();\n\n    state.active = true;\n    state.paused = false;\n    state.nodeFocusedBeforeActivation = doc.activeElement;\n\n    var onActivate =\n      activateOptions && activateOptions.onActivate\n        ? activateOptions.onActivate\n        : config.onActivate;\n    if (onActivate) {\n      onActivate();\n    }\n\n    addListeners();\n    return trap;\n  }\n\n  function deactivate(deactivateOptions) {\n    if (!state.active) return;\n\n    removeListeners();\n    state.active = false;\n    state.paused = false;\n\n    var onDeactivate =\n      deactivateOptions && deactivateOptions.onDeactivate !== undefined\n        ? deactivateOptions.onDeactivate\n        : config.onDeactivate;\n    if (onDeactivate) {\n      onDeactivate();\n    }\n\n    var returnFocus =\n      deactivateOptions && deactivateOptions.returnFocus !== undefined\n        ? deactivateOptions.returnFocus\n        : config.returnFocusOnDeactivate;\n    if (returnFocus) {\n      delay(function() {\n        tryFocus(state.nodeFocusedBeforeActivation);\n      });\n    }\n\n    return trap;\n  }\n\n  function pause() {\n    if (state.paused || !state.active) return;\n    state.paused = true;\n    removeListeners();\n  }\n\n  function unpause() {\n    if (!state.paused || !state.active) return;\n    state.paused = false;\n    addListeners();\n  }\n\n  function addListeners() {\n    if (!state.active) return;\n\n    // There can be only one listening focus trap at a time\n    if (listeningFocusTrap) {\n      listeningFocusTrap.pause();\n    }\n    listeningFocusTrap = trap;\n\n    updateTabbableNodes();\n\n    // Delay ensures that the focused element doesn't capture the event\n    // that caused the focus trap activation.\n    delay(function() {\n      tryFocus(getInitialFocusNode());\n    });\n    doc.addEventListener('focusin', checkFocusIn, true);\n    doc.addEventListener('mousedown', checkPointerDown, true);\n    doc.addEventListener('touchstart', checkPointerDown, true);\n    doc.addEventListener('click', checkClick, true);\n    doc.addEventListener('keydown', checkKey, true);\n\n    return trap;\n  }\n\n  function removeListeners() {\n    if (!state.active || listeningFocusTrap !== trap) return;\n\n    doc.removeEventListener('focusin', checkFocusIn, true);\n    doc.removeEventListener('mousedown', checkPointerDown, true);\n    doc.removeEventListener('touchstart', checkPointerDown, true);\n    doc.removeEventListener('click', checkClick, true);\n    doc.removeEventListener('keydown', checkKey, true);\n\n    listeningFocusTrap = null;\n\n    return trap;\n  }\n\n  function getNodeForOption(optionName) {\n    var optionValue = config[optionName];\n    var node = optionValue;\n    if (!optionValue) {\n      return null;\n    }\n    if (typeof optionValue === 'string') {\n      node = doc.querySelector(optionValue);\n      if (!node) {\n        throw new Error('`' + optionName + '` refers to no known node');\n      }\n    }\n    if (typeof optionValue === 'function') {\n      node = optionValue();\n      if (!node) {\n        throw new Error('`' + optionName + '` did not return a node');\n      }\n    }\n    return node;\n  }\n\n  function getInitialFocusNode() {\n    var node;\n    if (getNodeForOption('initialFocus') !== null) {\n      node = getNodeForOption('initialFocus');\n    } else if (container.contains(doc.activeElement)) {\n      node = doc.activeElement;\n    } else {\n      node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n    }\n\n    if (!node) {\n      throw new Error(\n        \"You can't have a focus-trap without at least one focusable element\"\n      );\n    }\n\n    return node;\n  }\n\n  // This needs to be done on mousedown and touchstart instead of click\n  // so that it precedes the focus event.\n  function checkPointerDown(e) {\n    if (container.contains(e.target)) return;\n    if (config.clickOutsideDeactivates) {\n      deactivate({\n        returnFocus: !tabbable.isFocusable(e.target)\n      });\n    } else {\n      e.preventDefault();\n    }\n  }\n\n  // In case focus escapes the trap for some strange reason, pull it back in.\n  function checkFocusIn(e) {\n    // In Firefox when you Tab out of an iframe the Document is briefly focused.\n    if (container.contains(e.target) || e.target instanceof Document) {\n      return;\n    }\n    e.stopImmediatePropagation();\n    tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n  }\n\n  function checkKey(e) {\n    if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n      e.preventDefault();\n      deactivate();\n      return;\n    }\n    if (isTabEvent(e)) {\n      checkTab(e);\n      return;\n    }\n  }\n\n  // Hijack Tab events on the first and last focusable nodes of the trap,\n  // in order to prevent focus from escaping. If it escapes for even a\n  // moment it can end up scrolling the page and causing confusion so we\n  // kind of need to capture the action at the keydown phase.\n  function checkTab(e) {\n    updateTabbableNodes();\n    if (e.shiftKey && e.target === state.firstTabbableNode) {\n      e.preventDefault();\n      tryFocus(state.lastTabbableNode);\n      return;\n    }\n    if (!e.shiftKey && e.target === state.lastTabbableNode) {\n      e.preventDefault();\n      tryFocus(state.firstTabbableNode);\n      return;\n    }\n  }\n\n  function checkClick(e) {\n    if (config.clickOutsideDeactivates) return;\n    if (container.contains(e.target)) return;\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  }\n\n  function updateTabbableNodes() {\n    var tabbableNodes = tabbable(container);\n    state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n    state.lastTabbableNode =\n      tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n  }\n\n  function tryFocus(node) {\n    if (node === doc.activeElement) return;\n    if (!node || !node.focus) {\n      tryFocus(getInitialFocusNode());\n      return;\n    }\n\n    node.focus();\n    state.mostRecentlyFocusedNode = node;\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  }\n}\n\nfunction isSelectableInput(node) {\n  return (\n    node.tagName &&\n    node.tagName.toLowerCase() === 'input' &&\n    typeof node.select === 'function'\n  );\n}\n\nfunction isEscapeEvent(e) {\n  return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n  return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n  return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","(function(){\r\n  var crypt = require('crypt'),\r\n      utf8 = require('charenc').utf8,\r\n      isBuffer = require('is-buffer'),\r\n      bin = require('charenc').bin,\r\n\r\n  // The core\r\n  md5 = function (message, options) {\r\n    // Convert to byte array\r\n    if (message.constructor == String)\r\n      if (options && options.encoding === 'binary')\r\n        message = bin.stringToBytes(message);\r\n      else\r\n        message = utf8.stringToBytes(message);\r\n    else if (isBuffer(message))\r\n      message = Array.prototype.slice.call(message, 0);\r\n    else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n      message = message.toString();\r\n    // else, assume byte array already\r\n\r\n    var m = crypt.bytesToWords(message),\r\n        l = message.length * 8,\r\n        a =  1732584193,\r\n        b = -271733879,\r\n        c = -1732584194,\r\n        d =  271733878;\r\n\r\n    // Swap endian\r\n    for (var i = 0; i < m.length; i++) {\r\n      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;\r\n    }\r\n\r\n    // Padding\r\n    m[l >>> 5] |= 0x80 << (l % 32);\r\n    m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n    // Method shortcuts\r\n    var FF = md5._ff,\r\n        GG = md5._gg,\r\n        HH = md5._hh,\r\n        II = md5._ii;\r\n\r\n    for (var i = 0; i < m.length; i += 16) {\r\n\r\n      var aa = a,\r\n          bb = b,\r\n          cc = c,\r\n          dd = d;\r\n\r\n      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);\r\n      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);\r\n      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);\r\n      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);\r\n      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);\r\n      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n      c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n      b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n      a = FF(a, b, c, d, m[i+12],  7,  1804603682);\r\n      d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n      c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n      b = FF(b, c, d, a, m[i+15], 22,  1236535329);\r\n\r\n      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);\r\n      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);\r\n      c = GG(c, d, a, b, m[i+11], 14,  643717713);\r\n      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);\r\n      d = GG(d, a, b, c, m[i+10],  9,  38016083);\r\n      c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);\r\n      d = GG(d, a, b, c, m[i+14],  9, -1019803690);\r\n      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);\r\n      a = GG(a, b, c, d, m[i+13],  5, -1444681467);\r\n      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);\r\n      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);\r\n      b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n      a = HH(a, b, c, d, m[i+ 5],  4, -378558);\r\n      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n      c = HH(c, d, a, b, m[i+11], 16,  1839030562);\r\n      b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);\r\n      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);\r\n      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n      b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n      a = HH(a, b, c, d, m[i+13],  4,  681279174);\r\n      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);\r\n      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);\r\n      d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n      c = HH(c, d, a, b, m[i+15], 16,  530742520);\r\n      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n      a = II(a, b, c, d, m[i+ 0],  6, -198630844);\r\n      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);\r\n      c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n      b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n      a = II(a, b, c, d, m[i+12],  6,  1700485571);\r\n      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n      c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);\r\n      d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n      b = II(b, c, d, a, m[i+13], 21,  1309151649);\r\n      a = II(a, b, c, d, m[i+ 4],  6, -145523070);\r\n      d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n      c = II(c, d, a, b, m[i+ 2], 15,  718787259);\r\n      b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n      a = (a + aa) >>> 0;\r\n      b = (b + bb) >>> 0;\r\n      c = (c + cc) >>> 0;\r\n      d = (d + dd) >>> 0;\r\n    }\r\n\r\n    return crypt.endian([a, b, c, d]);\r\n  };\r\n\r\n  // Auxiliary functions\r\n  md5._ff  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._gg  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._hh  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._ii  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n\r\n  // Package private blocksize\r\n  md5._blocksize = 16;\r\n  md5._digestsize = 16;\r\n\r\n  module.exports = function (message, options) {\r\n    if (message === undefined || message === null)\r\n      throw new Error('Illegal argument ' + message);\r\n\r\n    var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n    return options && options.asBytes ? digestbytes :\r\n        options && options.asString ? bin.bytesToString(digestbytes) :\r\n        crypt.bytesToHex(digestbytes);\r\n  };\r\n\r\n})();\r\n","// This file replaces `index.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nif (process.env.NODE_ENV !== 'production') {\n  // All bundlers will remove this block in production bundle\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    throw new Error(\n      'React Native does not have a built-in secure random generator. ' +\n      'If you don’t need unpredictable IDs, you can use `nanoid/non-secure`. ' +\n      'For secure ID install `expo-random` locally and use `nanoid/async`.'\n    )\n  }\n  if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {\n    throw new Error(\n      'Your browser does not have secure random generator. ' +\n      'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n    )\n  }\n}\n\nvar crypto = self.crypto || self.msCrypto\n\n// This alphabet uses a-z A-Z 0-9 _- symbols.\n// Symbols are generated for smaller size.\n// -_zyxwvutsrqponmlkjihgfedcba9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA\nvar url = '-_'\n// Loop from 36 to 0 (from z to a and 9 to 0 in Base36).\nvar i = 36\nwhile (i--) {\n  // 36 is radix. Number.prototype.toString(36) returns number\n  // in Base36 representation. Base36 is like hex, but it uses 0–9 and a-z.\n  url += i.toString(36)\n}\n// Loop from 36 to 10 (from Z to A in Base36).\ni = 36\nwhile (i-- - 10) {\n  url += i.toString(36).toUpperCase()\n}\n\nmodule.exports = function (size) {\n  var id = ''\n  var bytes = crypto.getRandomValues(new Uint8Array(size || 21))\n  i = size || 21\n\n  // Compact alternative for `for (var i = 0; i < size; i++)`\n  while (i--) {\n    // We can’t use bytes bigger than the alphabet. 63 is 00111111 bitmask.\n    // This mask reduces random byte 0-255 to 0-63 values.\n    // There is no need in `|| ''` and `* 1.6` hacks in here,\n    // because bitmask trim bytes exact to alphabet size.\n    id += url[bytes[i] & 63]\n  }\n  return id\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","export default function _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++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode } from 'react-dom';\nimport invariant from 'invariant';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\nvar Manager = function () {\n  function Manager() {\n    _classCallCheck(this, Manager);\n\n    _defineProperty(this, \"refs\", {});\n  }\n\n  _createClass(Manager, [{\n    key: \"add\",\n    value: function add(collection, ref) {\n      if (!this.refs[collection]) {\n        this.refs[collection] = [];\n      }\n\n      this.refs[collection].push(ref);\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(collection, ref) {\n      var index = this.getIndex(collection, ref);\n\n      if (index !== -1) {\n        this.refs[collection].splice(index, 1);\n      }\n    }\n  }, {\n    key: \"isActive\",\n    value: function isActive() {\n      return this.active;\n    }\n  }, {\n    key: \"getActive\",\n    value: function getActive() {\n      var _this = this;\n\n      return this.refs[this.active.collection].find(function (_ref) {\n        var node = _ref.node;\n        return node.sortableInfo.index == _this.active.index;\n      });\n    }\n  }, {\n    key: \"getIndex\",\n    value: function getIndex(collection, ref) {\n      return this.refs[collection].indexOf(ref);\n    }\n  }, {\n    key: \"getOrderedRefs\",\n    value: function getOrderedRefs() {\n      var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.active.collection;\n      return this.refs[collection].sort(sortByIndex);\n    }\n  }]);\n\n  return Manager;\n}();\n\nfunction sortByIndex(_ref2, _ref3) {\n  var index1 = _ref2.node.sortableInfo.index;\n  var index2 = _ref3.node.sortableInfo.index;\n  return index1 - index2;\n}\n\nfunction arrayMove(array, from, to) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof console !== 'undefined') {\n      console.warn(\"Deprecation warning: arrayMove will no longer be exported by 'react-sortable-hoc' in the next major release. Please install the `array-move` package locally instead. https://www.npmjs.com/package/array-move\");\n    }\n  }\n\n  array = array.slice();\n  array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);\n  return array;\n}\nfunction omit(obj, keysToOmit) {\n  return Object.keys(obj).reduce(function (acc, key) {\n    if (keysToOmit.indexOf(key) === -1) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\nvar events = {\n  end: ['touchend', 'touchcancel', 'mouseup'],\n  move: ['touchmove', 'mousemove'],\n  start: ['touchstart', 'mousedown']\n};\nvar vendorPrefix = function () {\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\n    return '';\n  }\n\n  var styles = window.getComputedStyle(document.documentElement, '') || ['-moz-hidden-iframe'];\n  var pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1];\n\n  switch (pre) {\n    case 'ms':\n      return 'ms';\n\n    default:\n      return pre && pre.length ? pre[0].toUpperCase() + pre.substr(1) : '';\n  }\n}();\nfunction setInlineStyles(node, styles) {\n  Object.keys(styles).forEach(function (key) {\n    node.style[key] = styles[key];\n  });\n}\nfunction setTranslate3d(node, translate) {\n  node.style[\"\".concat(vendorPrefix, \"Transform\")] = translate == null ? '' : \"translate3d(\".concat(translate.x, \"px,\").concat(translate.y, \"px,0)\");\n}\nfunction setTransitionDuration(node, duration) {\n  node.style[\"\".concat(vendorPrefix, \"TransitionDuration\")] = duration == null ? '' : \"\".concat(duration, \"ms\");\n}\nfunction closest(el, fn) {\n  while (el) {\n    if (fn(el)) {\n      return el;\n    }\n\n    el = el.parentNode;\n  }\n\n  return null;\n}\nfunction limit(min, max, value) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction getPixelValue(stringValue) {\n  if (stringValue.substr(-2) === 'px') {\n    return parseFloat(stringValue);\n  }\n\n  return 0;\n}\n\nfunction getElementMargin(element) {\n  var style = window.getComputedStyle(element);\n  return {\n    bottom: getPixelValue(style.marginBottom),\n    left: getPixelValue(style.marginLeft),\n    right: getPixelValue(style.marginRight),\n    top: getPixelValue(style.marginTop)\n  };\n}\nfunction provideDisplayName(prefix, Component$$1) {\n  var componentName = Component$$1.displayName || Component$$1.name;\n  return componentName ? \"\".concat(prefix, \"(\").concat(componentName, \")\") : prefix;\n}\nfunction getScrollAdjustedBoundingClientRect(node, scrollDelta) {\n  var boundingClientRect = node.getBoundingClientRect();\n  return {\n    top: boundingClientRect.top + scrollDelta.top,\n    left: boundingClientRect.left + scrollDelta.left\n  };\n}\nfunction getPosition(event) {\n  if (event.touches && event.touches.length) {\n    return {\n      x: event.touches[0].pageX,\n      y: event.touches[0].pageY\n    };\n  } else if (event.changedTouches && event.changedTouches.length) {\n    return {\n      x: event.changedTouches[0].pageX,\n      y: event.changedTouches[0].pageY\n    };\n  } else {\n    return {\n      x: event.pageX,\n      y: event.pageY\n    };\n  }\n}\nfunction isTouchEvent(event) {\n  return event.touches && event.touches.length || event.changedTouches && event.changedTouches.length;\n}\nfunction getEdgeOffset(node, parent) {\n  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    left: 0,\n    top: 0\n  };\n\n  if (!node) {\n    return undefined;\n  }\n\n  var nodeOffset = {\n    left: offset.left + node.offsetLeft,\n    top: offset.top + node.offsetTop\n  };\n\n  if (node.parentNode === parent) {\n    return nodeOffset;\n  }\n\n  return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getTargetIndex(newIndex, prevIndex, oldIndex) {\n  if (newIndex < oldIndex && newIndex > prevIndex) {\n    return newIndex - 1;\n  } else if (newIndex > oldIndex && newIndex < prevIndex) {\n    return newIndex + 1;\n  } else {\n    return newIndex;\n  }\n}\nfunction getLockPixelOffset(_ref) {\n  var lockOffset = _ref.lockOffset,\n      width = _ref.width,\n      height = _ref.height;\n  var offsetX = lockOffset;\n  var offsetY = lockOffset;\n  var unit = 'px';\n\n  if (typeof lockOffset === 'string') {\n    var match = /^[+-]?\\d*(?:\\.\\d*)?(px|%)$/.exec(lockOffset);\n    invariant(match !== null, 'lockOffset value should be a number or a string of a ' + 'number followed by \"px\" or \"%\". Given %s', lockOffset);\n    offsetX = parseFloat(lockOffset);\n    offsetY = parseFloat(lockOffset);\n    unit = match[1];\n  }\n\n  invariant(isFinite(offsetX) && isFinite(offsetY), 'lockOffset value should be a finite. Given %s', lockOffset);\n\n  if (unit === '%') {\n    offsetX = offsetX * width / 100;\n    offsetY = offsetY * height / 100;\n  }\n\n  return {\n    x: offsetX,\n    y: offsetY\n  };\n}\nfunction getLockPixelOffsets(_ref2) {\n  var height = _ref2.height,\n      width = _ref2.width,\n      lockOffset = _ref2.lockOffset;\n  var offsets = Array.isArray(lockOffset) ? lockOffset : [lockOffset, lockOffset];\n  invariant(offsets.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset);\n\n  var _offsets = _slicedToArray(offsets, 2),\n      minLockOffset = _offsets[0],\n      maxLockOffset = _offsets[1];\n\n  return [getLockPixelOffset({\n    height: height,\n    lockOffset: minLockOffset,\n    width: width\n  }), getLockPixelOffset({\n    height: height,\n    lockOffset: maxLockOffset,\n    width: width\n  })];\n}\n\nfunction isScrollable(el) {\n  var computedStyle = window.getComputedStyle(el);\n  var overflowRegex = /(auto|scroll)/;\n  var properties = ['overflow', 'overflowX', 'overflowY'];\n  return properties.find(function (property) {\n    return overflowRegex.test(computedStyle[property]);\n  });\n}\n\nfunction getScrollingParent(el) {\n  if (!(el instanceof HTMLElement)) {\n    return null;\n  } else if (isScrollable(el)) {\n    return el;\n  } else {\n    return getScrollingParent(el.parentNode);\n  }\n}\nfunction getContainerGridGap(element) {\n  var style = window.getComputedStyle(element);\n\n  if (style.display === 'grid') {\n    return {\n      x: getPixelValue(style.gridColumnGap),\n      y: getPixelValue(style.gridRowGap)\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0\n  };\n}\nvar KEYCODE = {\n  TAB: 9,\n  ESC: 27,\n  SPACE: 32,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40\n};\nvar NodeType = {\n  Anchor: 'A',\n  Button: 'BUTTON',\n  Canvas: 'CANVAS',\n  Input: 'INPUT',\n  Option: 'OPTION',\n  Textarea: 'TEXTAREA',\n  Select: 'SELECT'\n};\nfunction cloneNode(node) {\n  var selector = 'input, textarea, select, canvas, [contenteditable]';\n  var fields = node.querySelectorAll(selector);\n  var clonedNode = node.cloneNode(true);\n\n  var clonedFields = _toConsumableArray(clonedNode.querySelectorAll(selector));\n\n  clonedFields.forEach(function (field, i) {\n    if (field.type !== 'file') {\n      field.value = fields[i].value;\n    }\n\n    if (field.type === 'radio' && field.name) {\n      field.name = \"__sortableClone__\".concat(field.name);\n    }\n\n    if (field.tagName === NodeType.Canvas && fields[i].width > 0 && fields[i].height > 0) {\n      var destCtx = field.getContext('2d');\n      destCtx.drawImage(fields[i], 0, 0);\n    }\n  });\n  return clonedNode;\n}\n\nfunction sortableHandle(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableHandle, _React$Component);\n\n    function WithSortableHandle() {\n      _classCallCheck(this, WithSortableHandle);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(WithSortableHandle).apply(this, arguments));\n    }\n\n    _createClass(WithSortableHandle, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var node = findDOMNode(this);\n        node.sortableHandle = true;\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableHandle() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, this.props));\n      }\n    }]);\n\n    return WithSortableHandle;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableHandle', WrappedComponent)), _temp;\n}\nfunction isSortableHandle(node) {\n  return node.sortableHandle != null;\n}\n\nvar AutoScroller = function () {\n  function AutoScroller(container, onScrollCallback) {\n    _classCallCheck(this, AutoScroller);\n\n    this.container = container;\n    this.onScrollCallback = onScrollCallback;\n  }\n\n  _createClass(AutoScroller, [{\n    key: \"clear\",\n    value: function clear() {\n      if (this.interval == null) {\n        return;\n      }\n\n      clearInterval(this.interval);\n      this.interval = null;\n    }\n  }, {\n    key: \"update\",\n    value: function update(_ref) {\n      var _this = this;\n\n      var translate = _ref.translate,\n          minTranslate = _ref.minTranslate,\n          maxTranslate = _ref.maxTranslate,\n          width = _ref.width,\n          height = _ref.height;\n      var direction = {\n        x: 0,\n        y: 0\n      };\n      var speed = {\n        x: 1,\n        y: 1\n      };\n      var acceleration = {\n        x: 10,\n        y: 10\n      };\n      var _this$container = this.container,\n          scrollTop = _this$container.scrollTop,\n          scrollLeft = _this$container.scrollLeft,\n          scrollHeight = _this$container.scrollHeight,\n          scrollWidth = _this$container.scrollWidth,\n          clientHeight = _this$container.clientHeight,\n          clientWidth = _this$container.clientWidth;\n      var isTop = scrollTop === 0;\n      var isBottom = scrollHeight - scrollTop - clientHeight === 0;\n      var isLeft = scrollLeft === 0;\n      var isRight = scrollWidth - scrollLeft - clientWidth === 0;\n\n      if (translate.y >= maxTranslate.y - height / 2 && !isBottom) {\n        direction.y = 1;\n        speed.y = acceleration.y * Math.abs((maxTranslate.y - height / 2 - translate.y) / height);\n      } else if (translate.x >= maxTranslate.x - width / 2 && !isRight) {\n        direction.x = 1;\n        speed.x = acceleration.x * Math.abs((maxTranslate.x - width / 2 - translate.x) / width);\n      } else if (translate.y <= minTranslate.y + height / 2 && !isTop) {\n        direction.y = -1;\n        speed.y = acceleration.y * Math.abs((translate.y - height / 2 - minTranslate.y) / height);\n      } else if (translate.x <= minTranslate.x + width / 2 && !isLeft) {\n        direction.x = -1;\n        speed.x = acceleration.x * Math.abs((translate.x - width / 2 - minTranslate.x) / width);\n      }\n\n      if (this.interval) {\n        this.clear();\n        this.isAutoScrolling = false;\n      }\n\n      if (direction.x !== 0 || direction.y !== 0) {\n        this.interval = setInterval(function () {\n          _this.isAutoScrolling = true;\n          var offset = {\n            left: speed.x * direction.x,\n            top: speed.y * direction.y\n          };\n          _this.container.scrollTop += offset.top;\n          _this.container.scrollLeft += offset.left;\n\n          _this.onScrollCallback(offset);\n        }, 5);\n      }\n    }\n  }]);\n\n  return AutoScroller;\n}();\n\nfunction defaultGetHelperDimensions(_ref) {\n  var node = _ref.node;\n  return {\n    height: node.offsetHeight,\n    width: node.offsetWidth\n  };\n}\n\nfunction defaultShouldCancelStart(event) {\n  var interactiveElements = [NodeType.Input, NodeType.Textarea, NodeType.Select, NodeType.Option, NodeType.Button];\n\n  if (interactiveElements.indexOf(event.target.tagName) !== -1) {\n    return true;\n  }\n\n  if (closest(event.target, function (el) {\n    return el.contentEditable === 'true';\n  })) {\n    return true;\n  }\n\n  return false;\n}\n\nvar propTypes = {\n  axis: PropTypes.oneOf(['x', 'y', 'xy']),\n  contentWindow: PropTypes.any,\n  disableAutoscroll: PropTypes.bool,\n  distance: PropTypes.number,\n  getContainer: PropTypes.func,\n  getHelperDimensions: PropTypes.func,\n  helperClass: PropTypes.string,\n  helperContainer: PropTypes.oneOfType([PropTypes.func, typeof HTMLElement === 'undefined' ? PropTypes.any : PropTypes.instanceOf(HTMLElement)]),\n  hideSortableGhost: PropTypes.bool,\n  keyboardSortingTransitionDuration: PropTypes.number,\n  lockAxis: PropTypes.string,\n  lockOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))]),\n  lockToContainerEdges: PropTypes.bool,\n  onSortEnd: PropTypes.func,\n  onSortMove: PropTypes.func,\n  onSortOver: PropTypes.func,\n  onSortStart: PropTypes.func,\n  pressDelay: PropTypes.number,\n  pressThreshold: PropTypes.number,\n  keyCodes: PropTypes.shape({\n    lift: PropTypes.arrayOf(PropTypes.number),\n    drop: PropTypes.arrayOf(PropTypes.number),\n    cancel: PropTypes.arrayOf(PropTypes.number),\n    up: PropTypes.arrayOf(PropTypes.number),\n    down: PropTypes.arrayOf(PropTypes.number)\n  }),\n  shouldCancelStart: PropTypes.func,\n  transitionDuration: PropTypes.number,\n  updateBeforeSortStart: PropTypes.func,\n  useDragHandle: PropTypes.bool,\n  useWindowAsScrollContainer: PropTypes.bool\n};\nvar defaultKeyCodes = {\n  lift: [KEYCODE.SPACE],\n  drop: [KEYCODE.SPACE],\n  cancel: [KEYCODE.ESC],\n  up: [KEYCODE.UP, KEYCODE.LEFT],\n  down: [KEYCODE.DOWN, KEYCODE.RIGHT]\n};\nvar defaultProps = {\n  axis: 'y',\n  disableAutoscroll: false,\n  distance: 0,\n  getHelperDimensions: defaultGetHelperDimensions,\n  hideSortableGhost: true,\n  lockOffset: '50%',\n  lockToContainerEdges: false,\n  pressDelay: 0,\n  pressThreshold: 5,\n  keyCodes: defaultKeyCodes,\n  shouldCancelStart: defaultShouldCancelStart,\n  transitionDuration: 300,\n  useWindowAsScrollContainer: false\n};\nvar omittedProps = Object.keys(propTypes);\nfunction validateProps(props) {\n  invariant(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.');\n}\n\nfunction _finallyRethrows(body, finalizer) {\n  try {\n    var result = body();\n  } catch (e) {\n    return finalizer(true, e);\n  }\n\n  if (result && result.then) {\n    return result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n  }\n\n  return finalizer(false, value);\n}\nfunction sortableContainer(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableContainer, _React$Component);\n\n    function WithSortableContainer(props) {\n      var _this;\n\n      _classCallCheck(this, WithSortableContainer);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(WithSortableContainer).call(this, props));\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {});\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleStart\", function (event) {\n        var _this$props = _this.props,\n            distance = _this$props.distance,\n            shouldCancelStart = _this$props.shouldCancelStart;\n\n        if (event.button === 2 || shouldCancelStart(event)) {\n          return;\n        }\n\n        _this.touched = true;\n        _this.position = getPosition(event);\n        var node = closest(event.target, function (el) {\n          return el.sortableInfo != null;\n        });\n\n        if (node && node.sortableInfo && _this.nodeIsChild(node) && !_this.state.sorting) {\n          var useDragHandle = _this.props.useDragHandle;\n          var _node$sortableInfo = node.sortableInfo,\n              index = _node$sortableInfo.index,\n              collection = _node$sortableInfo.collection,\n              disabled = _node$sortableInfo.disabled;\n\n          if (disabled) {\n            return;\n          }\n\n          if (useDragHandle && !closest(event.target, isSortableHandle)) {\n            return;\n          }\n\n          _this.manager.active = {\n            collection: collection,\n            index: index\n          };\n\n          if (!isTouchEvent(event) && event.target.tagName === NodeType.Anchor) {\n            event.preventDefault();\n          }\n\n          if (!distance) {\n            if (_this.props.pressDelay === 0) {\n              _this.handlePress(event);\n            } else {\n              _this.pressTimer = setTimeout(function () {\n                return _this.handlePress(event);\n              }, _this.props.pressDelay);\n            }\n          }\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nodeIsChild\", function (node) {\n        return node.sortableInfo.manager === _this.manager;\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMove\", function (event) {\n        var _this$props2 = _this.props,\n            distance = _this$props2.distance,\n            pressThreshold = _this$props2.pressThreshold;\n\n        if (!_this.state.sorting && _this.touched && !_this._awaitingUpdateBeforeSortStart) {\n          var position = getPosition(event);\n          var delta = {\n            x: _this.position.x - position.x,\n            y: _this.position.y - position.y\n          };\n          var combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\n          _this.delta = delta;\n\n          if (!distance && (!pressThreshold || combinedDelta >= pressThreshold)) {\n            clearTimeout(_this.cancelTimer);\n            _this.cancelTimer = setTimeout(_this.cancel, 0);\n          } else if (distance && combinedDelta >= distance && _this.manager.isActive()) {\n            _this.handlePress(event);\n          }\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEnd\", function () {\n        _this.touched = false;\n\n        _this.cancel();\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancel\", function () {\n        var distance = _this.props.distance;\n        var sorting = _this.state.sorting;\n\n        if (!sorting) {\n          if (!distance) {\n            clearTimeout(_this.pressTimer);\n          }\n\n          _this.manager.active = null;\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handlePress\", function (event) {\n        try {\n          var active = _this.manager.getActive();\n\n          var _temp6 = function () {\n            if (active) {\n              var _temp7 = function _temp7() {\n                var index = _node.sortableInfo.index;\n                var margin = getElementMargin(_node);\n                var gridGap = getContainerGridGap(_this.container);\n\n                var containerBoundingRect = _this.scrollContainer.getBoundingClientRect();\n\n                var dimensions = _getHelperDimensions({\n                  index: index,\n                  node: _node,\n                  collection: _collection\n                });\n\n                _this.node = _node;\n                _this.margin = margin;\n                _this.gridGap = gridGap;\n                _this.width = dimensions.width;\n                _this.height = dimensions.height;\n                _this.marginOffset = {\n                  x: _this.margin.left + _this.margin.right + _this.gridGap.x,\n                  y: Math.max(_this.margin.top, _this.margin.bottom, _this.gridGap.y)\n                };\n                _this.boundingClientRect = _node.getBoundingClientRect();\n                _this.containerBoundingRect = containerBoundingRect;\n                _this.index = index;\n                _this.newIndex = index;\n                _this.axis = {\n                  x: _axis.indexOf('x') >= 0,\n                  y: _axis.indexOf('y') >= 0\n                };\n                _this.offsetEdge = getEdgeOffset(_node, _this.container);\n\n                if (_isKeySorting) {\n                  _this.initialOffset = getPosition(_objectSpread({}, event, {\n                    pageX: _this.boundingClientRect.left,\n                    pageY: _this.boundingClientRect.top\n                  }));\n                } else {\n                  _this.initialOffset = getPosition(event);\n                }\n\n                _this.initialScroll = {\n                  left: _this.scrollContainer.scrollLeft,\n                  top: _this.scrollContainer.scrollTop\n                };\n                _this.initialWindowScroll = {\n                  left: window.pageXOffset,\n                  top: window.pageYOffset\n                };\n                _this.helper = _this.helperContainer.appendChild(cloneNode(_node));\n                setInlineStyles(_this.helper, {\n                  boxSizing: 'border-box',\n                  height: \"\".concat(_this.height, \"px\"),\n                  left: \"\".concat(_this.boundingClientRect.left - margin.left, \"px\"),\n                  pointerEvents: 'none',\n                  position: 'fixed',\n                  top: \"\".concat(_this.boundingClientRect.top - margin.top, \"px\"),\n                  width: \"\".concat(_this.width, \"px\")\n                });\n\n                if (_isKeySorting) {\n                  _this.helper.focus();\n                }\n\n                if (_hideSortableGhost) {\n                  _this.sortableGhost = _node;\n                  setInlineStyles(_node, {\n                    opacity: 0,\n                    visibility: 'hidden'\n                  });\n                }\n\n                _this.minTranslate = {};\n                _this.maxTranslate = {};\n\n                if (_isKeySorting) {\n                  var _ref = _useWindowAsScrollContainer ? {\n                    top: 0,\n                    left: 0,\n                    width: _this.contentWindow.innerWidth,\n                    height: _this.contentWindow.innerHeight\n                  } : _this.containerBoundingRect,\n                      containerTop = _ref.top,\n                      containerLeft = _ref.left,\n                      containerWidth = _ref.width,\n                      containerHeight = _ref.height;\n\n                  var containerBottom = containerTop + containerHeight;\n                  var containerRight = containerLeft + containerWidth;\n\n                  if (_this.axis.x) {\n                    _this.minTranslate.x = containerLeft - _this.boundingClientRect.left;\n                    _this.maxTranslate.x = containerRight - (_this.boundingClientRect.left + _this.width);\n                  }\n\n                  if (_this.axis.y) {\n                    _this.minTranslate.y = containerTop - _this.boundingClientRect.top;\n                    _this.maxTranslate.y = containerBottom - (_this.boundingClientRect.top + _this.height);\n                  }\n                } else {\n                  if (_this.axis.x) {\n                    _this.minTranslate.x = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2;\n                    _this.maxTranslate.x = (_useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2;\n                  }\n\n                  if (_this.axis.y) {\n                    _this.minTranslate.y = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2;\n                    _this.maxTranslate.y = (_useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2;\n                  }\n                }\n\n                if (_helperClass) {\n                  _helperClass.split(' ').forEach(function (className) {\n                    return _this.helper.classList.add(className);\n                  });\n                }\n\n                _this.listenerNode = event.touches ? _node : _this.contentWindow;\n\n                if (_isKeySorting) {\n                  _this.listenerNode.addEventListener('wheel', _this.handleKeyEnd, true);\n\n                  _this.listenerNode.addEventListener('mousedown', _this.handleKeyEnd, true);\n\n                  _this.listenerNode.addEventListener('keydown', _this.handleKeyDown);\n                } else {\n                  events.move.forEach(function (eventName) {\n                    return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false);\n                  });\n                  events.end.forEach(function (eventName) {\n                    return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false);\n                  });\n                }\n\n                _this.setState({\n                  sorting: true,\n                  sortingIndex: index\n                });\n\n                if (_onSortStart) {\n                  _onSortStart({\n                    node: _node,\n                    index: index,\n                    collection: _collection,\n                    isKeySorting: _isKeySorting,\n                    nodes: _this.manager.getOrderedRefs(),\n                    helper: _this.helper\n                  }, event);\n                }\n\n                if (_isKeySorting) {\n                  _this.keyMove(0);\n                }\n              };\n\n              var _this$props3 = _this.props,\n                  _axis = _this$props3.axis,\n                  _getHelperDimensions = _this$props3.getHelperDimensions,\n                  _helperClass = _this$props3.helperClass,\n                  _hideSortableGhost = _this$props3.hideSortableGhost,\n                  updateBeforeSortStart = _this$props3.updateBeforeSortStart,\n                  _onSortStart = _this$props3.onSortStart,\n                  _useWindowAsScrollContainer = _this$props3.useWindowAsScrollContainer;\n              var _node = active.node,\n                  _collection = active.collection;\n              var _isKeySorting = _this.manager.isKeySorting;\n\n              var _temp8 = function () {\n                if (typeof updateBeforeSortStart === 'function') {\n                  _this._awaitingUpdateBeforeSortStart = true;\n\n                  var _temp9 = _finallyRethrows(function () {\n                    var index = _node.sortableInfo.index;\n                    return Promise.resolve(updateBeforeSortStart({\n                      collection: _collection,\n                      index: index,\n                      node: _node,\n                      isKeySorting: _isKeySorting\n                    }, event)).then(function () {});\n                  }, function (_wasThrown, _result) {\n                    _this._awaitingUpdateBeforeSortStart = false;\n                    if (_wasThrown) throw _result;\n                    return _result;\n                  });\n\n                  if (_temp9 && _temp9.then) return _temp9.then(function () {});\n                }\n              }();\n\n              return _temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8);\n            }\n          }();\n\n          return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortMove\", function (event) {\n        var onSortMove = _this.props.onSortMove;\n\n        if (typeof event.preventDefault === 'function') {\n          event.preventDefault();\n        }\n\n        _this.updateHelperPosition(event);\n\n        _this.animateNodes();\n\n        _this.autoscroll();\n\n        if (onSortMove) {\n          onSortMove(event);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortEnd\", function (event) {\n        var _this$props4 = _this.props,\n            hideSortableGhost = _this$props4.hideSortableGhost,\n            onSortEnd = _this$props4.onSortEnd;\n        var _this$manager = _this.manager,\n            collection = _this$manager.active.collection,\n            isKeySorting = _this$manager.isKeySorting;\n\n        var nodes = _this.manager.getOrderedRefs();\n\n        if (_this.listenerNode) {\n          if (isKeySorting) {\n            _this.listenerNode.removeEventListener('wheel', _this.handleKeyEnd, true);\n\n            _this.listenerNode.removeEventListener('mousedown', _this.handleKeyEnd, true);\n\n            _this.listenerNode.removeEventListener('keydown', _this.handleKeyDown);\n          } else {\n            events.move.forEach(function (eventName) {\n              return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove);\n            });\n            events.end.forEach(function (eventName) {\n              return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd);\n            });\n          }\n        }\n\n        _this.helper.parentNode.removeChild(_this.helper);\n\n        if (hideSortableGhost && _this.sortableGhost) {\n          setInlineStyles(_this.sortableGhost, {\n            opacity: '',\n            visibility: ''\n          });\n        }\n\n        for (var i = 0, len = nodes.length; i < len; i++) {\n          var _node2 = nodes[i];\n          var el = _node2.node;\n          _node2.edgeOffset = null;\n          _node2.boundingClientRect = null;\n          setTranslate3d(el, null);\n          setTransitionDuration(el, null);\n          _node2.translate = null;\n        }\n\n        _this.autoScroller.clear();\n\n        _this.manager.active = null;\n        _this.manager.isKeySorting = false;\n\n        _this.setState({\n          sorting: false,\n          sortingIndex: null\n        });\n\n        if (typeof onSortEnd === 'function') {\n          onSortEnd({\n            collection: collection,\n            newIndex: _this.newIndex,\n            oldIndex: _this.index,\n            isKeySorting: isKeySorting,\n            nodes: nodes\n          }, event);\n        }\n\n        _this.touched = false;\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"autoscroll\", function () {\n        var disableAutoscroll = _this.props.disableAutoscroll;\n        var isKeySorting = _this.manager.isKeySorting;\n\n        if (disableAutoscroll) {\n          _this.autoScroller.clear();\n\n          return;\n        }\n\n        if (isKeySorting) {\n          var translate = _objectSpread({}, _this.translate);\n\n          var scrollX = 0;\n          var scrollY = 0;\n\n          if (_this.axis.x) {\n            translate.x = Math.min(_this.maxTranslate.x, Math.max(_this.minTranslate.x, _this.translate.x));\n            scrollX = _this.translate.x - translate.x;\n          }\n\n          if (_this.axis.y) {\n            translate.y = Math.min(_this.maxTranslate.y, Math.max(_this.minTranslate.y, _this.translate.y));\n            scrollY = _this.translate.y - translate.y;\n          }\n\n          _this.translate = translate;\n          setTranslate3d(_this.helper, _this.translate);\n          _this.scrollContainer.scrollLeft += scrollX;\n          _this.scrollContainer.scrollTop += scrollY;\n          return;\n        }\n\n        _this.autoScroller.update({\n          height: _this.height,\n          maxTranslate: _this.maxTranslate,\n          minTranslate: _this.minTranslate,\n          translate: _this.translate,\n          width: _this.width\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onAutoScroll\", function (offset) {\n        _this.translate.x += offset.left;\n        _this.translate.y += offset.top;\n\n        _this.animateNodes();\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyDown\", function (event) {\n        var keyCode = event.keyCode;\n        var _this$props5 = _this.props,\n            shouldCancelStart = _this$props5.shouldCancelStart,\n            _this$props5$keyCodes = _this$props5.keyCodes,\n            customKeyCodes = _this$props5$keyCodes === void 0 ? {} : _this$props5$keyCodes;\n\n        var keyCodes = _objectSpread({}, defaultKeyCodes, customKeyCodes);\n\n        if (_this.manager.active && !_this.manager.isKeySorting || !_this.manager.active && (!keyCodes.lift.includes(keyCode) || shouldCancelStart(event) || !_this.isValidSortingTarget(event))) {\n          return;\n        }\n\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (keyCodes.lift.includes(keyCode) && !_this.manager.active) {\n          _this.keyLift(event);\n        } else if (keyCodes.drop.includes(keyCode) && _this.manager.active) {\n          _this.keyDrop(event);\n        } else if (keyCodes.cancel.includes(keyCode)) {\n          _this.newIndex = _this.manager.active.index;\n\n          _this.keyDrop(event);\n        } else if (keyCodes.up.includes(keyCode)) {\n          _this.keyMove(-1);\n        } else if (keyCodes.down.includes(keyCode)) {\n          _this.keyMove(1);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyLift\", function (event) {\n        var target = event.target;\n        var node = closest(target, function (el) {\n          return el.sortableInfo != null;\n        });\n        var _node$sortableInfo2 = node.sortableInfo,\n            index = _node$sortableInfo2.index,\n            collection = _node$sortableInfo2.collection;\n        _this.initialFocusedNode = target;\n        _this.manager.isKeySorting = true;\n        _this.manager.active = {\n          index: index,\n          collection: collection\n        };\n\n        _this.handlePress(event);\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyMove\", function (shift) {\n        var nodes = _this.manager.getOrderedRefs();\n\n        var lastIndex = nodes[nodes.length - 1].node.sortableInfo.index;\n        var newIndex = _this.newIndex + shift;\n        var prevIndex = _this.newIndex;\n\n        if (newIndex < 0 || newIndex > lastIndex) {\n          return;\n        }\n\n        _this.prevIndex = prevIndex;\n        _this.newIndex = newIndex;\n        var targetIndex = getTargetIndex(_this.newIndex, _this.prevIndex, _this.index);\n        var target = nodes.find(function (_ref2) {\n          var node = _ref2.node;\n          return node.sortableInfo.index === targetIndex;\n        });\n        var targetNode = target.node;\n        var scrollDelta = _this.containerScrollDelta;\n        var targetBoundingClientRect = target.boundingClientRect || getScrollAdjustedBoundingClientRect(targetNode, scrollDelta);\n        var targetTranslate = target.translate || {\n          x: 0,\n          y: 0\n        };\n        var targetPosition = {\n          top: targetBoundingClientRect.top + targetTranslate.y - scrollDelta.top,\n          left: targetBoundingClientRect.left + targetTranslate.x - scrollDelta.left\n        };\n        var shouldAdjustForSize = prevIndex < newIndex;\n        var sizeAdjustment = {\n          x: shouldAdjustForSize && _this.axis.x ? targetNode.offsetWidth - _this.width : 0,\n          y: shouldAdjustForSize && _this.axis.y ? targetNode.offsetHeight - _this.height : 0\n        };\n\n        _this.handleSortMove({\n          pageX: targetPosition.left + sizeAdjustment.x,\n          pageY: targetPosition.top + sizeAdjustment.y,\n          ignoreTransition: shift === 0\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyDrop\", function (event) {\n        _this.handleSortEnd(event);\n\n        if (_this.initialFocusedNode) {\n          _this.initialFocusedNode.focus();\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyEnd\", function (event) {\n        if (_this.manager.active) {\n          _this.keyDrop(event);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isValidSortingTarget\", function (event) {\n        var useDragHandle = _this.props.useDragHandle;\n        var target = event.target;\n        var node = closest(target, function (el) {\n          return el.sortableInfo != null;\n        });\n        return node && node.sortableInfo && !node.sortableInfo.disabled && (useDragHandle ? isSortableHandle(target) : target.sortableInfo);\n      });\n\n      validateProps(props);\n      _this.manager = new Manager();\n      _this.events = {\n        end: _this.handleEnd,\n        move: _this.handleMove,\n        start: _this.handleStart\n      };\n      return _this;\n    }\n\n    _createClass(WithSortableContainer, [{\n      key: \"getChildContext\",\n      value: function getChildContext() {\n        return {\n          manager: this.manager\n        };\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var _this2 = this;\n\n        var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n        var container = this.getContainer();\n        Promise.resolve(container).then(function (containerNode) {\n          _this2.container = containerNode;\n          _this2.document = _this2.container.ownerDocument || document;\n          var contentWindow = _this2.props.contentWindow || _this2.document.defaultView || window;\n          _this2.contentWindow = typeof contentWindow === 'function' ? contentWindow() : contentWindow;\n          _this2.scrollContainer = useWindowAsScrollContainer ? _this2.document.scrollingElement || _this2.document.documentElement : getScrollingParent(_this2.container) || _this2.container;\n          _this2.autoScroller = new AutoScroller(_this2.scrollContainer, _this2.onAutoScroll);\n          Object.keys(_this2.events).forEach(function (key) {\n            return events[key].forEach(function (eventName) {\n              return _this2.container.addEventListener(eventName, _this2.events[key], false);\n            });\n          });\n\n          _this2.container.addEventListener('keydown', _this2.handleKeyDown);\n        });\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        var _this3 = this;\n\n        if (this.helper && this.helper.parentNode) {\n          this.helper.parentNode.removeChild(this.helper);\n        }\n\n        if (!this.container) {\n          return;\n        }\n\n        Object.keys(this.events).forEach(function (key) {\n          return events[key].forEach(function (eventName) {\n            return _this3.container.removeEventListener(eventName, _this3.events[key]);\n          });\n        });\n        this.container.removeEventListener('keydown', this.handleKeyDown);\n      }\n    }, {\n      key: \"updateHelperPosition\",\n      value: function updateHelperPosition(event) {\n        var _this$props6 = this.props,\n            lockAxis = _this$props6.lockAxis,\n            lockOffset = _this$props6.lockOffset,\n            lockToContainerEdges = _this$props6.lockToContainerEdges,\n            transitionDuration = _this$props6.transitionDuration,\n            _this$props6$keyboard = _this$props6.keyboardSortingTransitionDuration,\n            keyboardSortingTransitionDuration = _this$props6$keyboard === void 0 ? transitionDuration : _this$props6$keyboard;\n        var isKeySorting = this.manager.isKeySorting;\n        var ignoreTransition = event.ignoreTransition;\n        var offset = getPosition(event);\n        var translate = {\n          x: offset.x - this.initialOffset.x,\n          y: offset.y - this.initialOffset.y\n        };\n        translate.y -= window.pageYOffset - this.initialWindowScroll.top;\n        translate.x -= window.pageXOffset - this.initialWindowScroll.left;\n        this.translate = translate;\n\n        if (lockToContainerEdges) {\n          var _getLockPixelOffsets = getLockPixelOffsets({\n            height: this.height,\n            lockOffset: lockOffset,\n            width: this.width\n          }),\n              _getLockPixelOffsets2 = _slicedToArray(_getLockPixelOffsets, 2),\n              minLockOffset = _getLockPixelOffsets2[0],\n              maxLockOffset = _getLockPixelOffsets2[1];\n\n          var minOffset = {\n            x: this.width / 2 - minLockOffset.x,\n            y: this.height / 2 - minLockOffset.y\n          };\n          var maxOffset = {\n            x: this.width / 2 - maxLockOffset.x,\n            y: this.height / 2 - maxLockOffset.y\n          };\n          translate.x = limit(this.minTranslate.x + minOffset.x, this.maxTranslate.x - maxOffset.x, translate.x);\n          translate.y = limit(this.minTranslate.y + minOffset.y, this.maxTranslate.y - maxOffset.y, translate.y);\n        }\n\n        if (lockAxis === 'x') {\n          translate.y = 0;\n        } else if (lockAxis === 'y') {\n          translate.x = 0;\n        }\n\n        if (isKeySorting && keyboardSortingTransitionDuration && !ignoreTransition) {\n          setTransitionDuration(this.helper, keyboardSortingTransitionDuration);\n        }\n\n        setTranslate3d(this.helper, translate);\n      }\n    }, {\n      key: \"animateNodes\",\n      value: function animateNodes() {\n        var _this$props7 = this.props,\n            transitionDuration = _this$props7.transitionDuration,\n            hideSortableGhost = _this$props7.hideSortableGhost,\n            onSortOver = _this$props7.onSortOver;\n        var containerScrollDelta = this.containerScrollDelta,\n            windowScrollDelta = this.windowScrollDelta;\n        var nodes = this.manager.getOrderedRefs();\n        var sortingOffset = {\n          left: this.offsetEdge.left + this.translate.x + containerScrollDelta.left,\n          top: this.offsetEdge.top + this.translate.y + containerScrollDelta.top\n        };\n        var isKeySorting = this.manager.isKeySorting;\n        var prevIndex = this.newIndex;\n        this.newIndex = null;\n\n        for (var i = 0, len = nodes.length; i < len; i++) {\n          var _node3 = nodes[i].node;\n          var index = _node3.sortableInfo.index;\n          var width = _node3.offsetWidth;\n          var height = _node3.offsetHeight;\n          var offset = {\n            height: this.height > height ? height / 2 : this.height / 2,\n            width: this.width > width ? width / 2 : this.width / 2\n          };\n          var mustShiftBackward = isKeySorting && index > this.index && index <= prevIndex;\n          var mustShiftForward = isKeySorting && index < this.index && index >= prevIndex;\n          var translate = {\n            x: 0,\n            y: 0\n          };\n          var edgeOffset = nodes[i].edgeOffset;\n\n          if (!edgeOffset) {\n            edgeOffset = getEdgeOffset(_node3, this.container);\n            nodes[i].edgeOffset = edgeOffset;\n\n            if (isKeySorting) {\n              nodes[i].boundingClientRect = getScrollAdjustedBoundingClientRect(_node3, containerScrollDelta);\n            }\n          }\n\n          var nextNode = i < nodes.length - 1 && nodes[i + 1];\n          var prevNode = i > 0 && nodes[i - 1];\n\n          if (nextNode && !nextNode.edgeOffset) {\n            nextNode.edgeOffset = getEdgeOffset(nextNode.node, this.container);\n\n            if (isKeySorting) {\n              nextNode.boundingClientRect = getScrollAdjustedBoundingClientRect(nextNode.node, containerScrollDelta);\n            }\n          }\n\n          if (index === this.index) {\n            if (hideSortableGhost) {\n              this.sortableGhost = _node3;\n              setInlineStyles(_node3, {\n                opacity: 0,\n                visibility: 'hidden'\n              });\n            }\n\n            continue;\n          }\n\n          if (transitionDuration) {\n            setTransitionDuration(_node3, transitionDuration);\n          }\n\n          if (this.axis.x) {\n            if (this.axis.y) {\n              if (mustShiftForward || index < this.index && (sortingOffset.left + windowScrollDelta.left - offset.width <= edgeOffset.left && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height || sortingOffset.top + windowScrollDelta.top + offset.height <= edgeOffset.top)) {\n                translate.x = this.width + this.marginOffset.x;\n\n                if (edgeOffset.left + translate.x > this.containerBoundingRect.width - offset.width) {\n                  if (nextNode) {\n                    translate.x = nextNode.edgeOffset.left - edgeOffset.left;\n                    translate.y = nextNode.edgeOffset.top - edgeOffset.top;\n                  }\n                }\n\n                if (this.newIndex === null) {\n                  this.newIndex = index;\n                }\n              } else if (mustShiftBackward || index > this.index && (sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top || sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top + height)) {\n                translate.x = -(this.width + this.marginOffset.x);\n\n                if (edgeOffset.left + translate.x < this.containerBoundingRect.left + offset.width) {\n                  if (prevNode) {\n                    translate.x = prevNode.edgeOffset.left - edgeOffset.left;\n                    translate.y = prevNode.edgeOffset.top - edgeOffset.top;\n                  }\n                }\n\n                this.newIndex = index;\n              }\n            } else {\n              if (mustShiftBackward || index > this.index && sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left) {\n                translate.x = -(this.width + this.marginOffset.x);\n                this.newIndex = index;\n              } else if (mustShiftForward || index < this.index && sortingOffset.left + windowScrollDelta.left <= edgeOffset.left + offset.width) {\n                translate.x = this.width + this.marginOffset.x;\n\n                if (this.newIndex == null) {\n                  this.newIndex = index;\n                }\n              }\n            }\n          } else if (this.axis.y) {\n            if (mustShiftBackward || index > this.index && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top) {\n              translate.y = -(this.height + this.marginOffset.y);\n              this.newIndex = index;\n            } else if (mustShiftForward || index < this.index && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height) {\n              translate.y = this.height + this.marginOffset.y;\n\n              if (this.newIndex == null) {\n                this.newIndex = index;\n              }\n            }\n          }\n\n          setTranslate3d(_node3, translate);\n          nodes[i].translate = translate;\n        }\n\n        if (this.newIndex == null) {\n          this.newIndex = this.index;\n        }\n\n        if (isKeySorting) {\n          this.newIndex = prevIndex;\n        }\n\n        var oldIndex = isKeySorting ? this.prevIndex : prevIndex;\n\n        if (onSortOver && this.newIndex !== oldIndex) {\n          onSortOver({\n            collection: this.manager.active.collection,\n            index: this.index,\n            newIndex: this.newIndex,\n            oldIndex: oldIndex,\n            isKeySorting: isKeySorting,\n            nodes: nodes,\n            helper: this.helper\n          });\n        }\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"getContainer\",\n      value: function getContainer() {\n        var getContainer = this.props.getContainer;\n\n        if (typeof getContainer !== 'function') {\n          return findDOMNode(this);\n        }\n\n        return getContainer(config.withRef ? this.getWrappedInstance() : undefined);\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, omit(this.props, omittedProps)));\n      }\n    }, {\n      key: \"helperContainer\",\n      get: function get() {\n        var helperContainer = this.props.helperContainer;\n\n        if (typeof helperContainer === 'function') {\n          return helperContainer();\n        }\n\n        return this.props.helperContainer || this.document.body;\n      }\n    }, {\n      key: \"containerScrollDelta\",\n      get: function get() {\n        var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n\n        if (useWindowAsScrollContainer) {\n          return {\n            left: 0,\n            top: 0\n          };\n        }\n\n        return {\n          left: this.scrollContainer.scrollLeft - this.initialScroll.left,\n          top: this.scrollContainer.scrollTop - this.initialScroll.top\n        };\n      }\n    }, {\n      key: \"windowScrollDelta\",\n      get: function get() {\n        return {\n          left: this.contentWindow.pageXOffset - this.initialWindowScroll.left,\n          top: this.contentWindow.pageYOffset - this.initialWindowScroll.top\n        };\n      }\n    }]);\n\n    return WithSortableContainer;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableList', WrappedComponent)), _defineProperty(_class, \"defaultProps\", defaultProps), _defineProperty(_class, \"propTypes\", propTypes), _defineProperty(_class, \"childContextTypes\", {\n    manager: PropTypes.object.isRequired\n  }), _temp;\n}\n\nvar propTypes$1 = {\n  index: PropTypes.number.isRequired,\n  collection: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  disabled: PropTypes.bool\n};\nvar omittedProps$1 = Object.keys(propTypes$1);\nfunction sortableElement(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableElement, _React$Component);\n\n    function WithSortableElement() {\n      _classCallCheck(this, WithSortableElement);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(WithSortableElement).apply(this, arguments));\n    }\n\n    _createClass(WithSortableElement, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.register();\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        if (this.node) {\n          if (prevProps.index !== this.props.index) {\n            this.node.sortableInfo.index = this.props.index;\n          }\n\n          if (prevProps.disabled !== this.props.disabled) {\n            this.node.sortableInfo.disabled = this.props.disabled;\n          }\n        }\n\n        if (prevProps.collection !== this.props.collection) {\n          this.unregister(prevProps.collection);\n          this.register();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.unregister();\n      }\n    }, {\n      key: \"register\",\n      value: function register() {\n        var _this$props = this.props,\n            collection = _this$props.collection,\n            disabled = _this$props.disabled,\n            index = _this$props.index;\n        var node = findDOMNode(this);\n        node.sortableInfo = {\n          collection: collection,\n          disabled: disabled,\n          index: index,\n          manager: this.context.manager\n        };\n        this.node = node;\n        this.ref = {\n          node: node\n        };\n        this.context.manager.add(collection, this.ref);\n      }\n    }, {\n      key: \"unregister\",\n      value: function unregister() {\n        var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.collection;\n        this.context.manager.remove(collection, this.ref);\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, omit(this.props, omittedProps$1)));\n      }\n    }]);\n\n    return WithSortableElement;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableElement', WrappedComponent)), _defineProperty(_class, \"contextTypes\", {\n    manager: PropTypes.object.isRequired\n  }), _defineProperty(_class, \"propTypes\", propTypes$1), _defineProperty(_class, \"defaultProps\", {\n    collection: 0\n  }), _temp;\n}\n\nexport { sortableContainer as SortableContainer, sortableContainer, sortableElement as SortableElement, sortableElement, sortableHandle as SortableHandle, sortableHandle, arrayMove };\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar _objectWithoutPropertiesLoose = _interopDefault(require('@babel/runtime/helpers/esm/objectWithoutPropertiesLoose'));\nvar _extends = _interopDefault(require('@babel/runtime/helpers/esm/extends'));\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ReactDOM = _interopDefault(require('react-dom'));\n\nlet bugfixes = undefined;\nlet applyAnimatedValues = undefined;\nlet colorNames = [];\nlet requestFrame = cb => typeof window !== 'undefined' && window.requestAnimationFrame(cb);\nlet cancelFrame = cb => typeof window !== 'undefined' && window.cancelAnimationFrame(cb);\nlet interpolation = undefined;\nlet now = () => Date.now();\nlet defaultElement = undefined;\nlet createAnimatedStyle = undefined;\nconst injectApplyAnimatedValues = (fn, transform) => applyAnimatedValues = {\n  fn,\n  transform\n};\nconst injectColorNames = names => colorNames = names;\nconst injectBugfixes = fn => bugfixes = fn;\nconst injectInterpolation = cls => interpolation = cls;\nconst injectFrame = (raf, caf) => {\n  var _ref = [raf, caf];\n  requestFrame = _ref[0];\n  cancelFrame = _ref[1];\n  return _ref;\n};\nconst injectNow = nowFn => now = nowFn;\nconst injectDefaultElement = el => defaultElement = el;\nconst injectCreateAnimatedStyle = factory => createAnimatedStyle = factory;\n\nvar Globals = /*#__PURE__*/Object.freeze({\n  get bugfixes () { return bugfixes; },\n  get applyAnimatedValues () { return applyAnimatedValues; },\n  get colorNames () { return colorNames; },\n  get requestFrame () { return requestFrame; },\n  get cancelFrame () { return cancelFrame; },\n  get interpolation () { return interpolation; },\n  get now () { return now; },\n  get defaultElement () { return defaultElement; },\n  get createAnimatedStyle () { return createAnimatedStyle; },\n  injectApplyAnimatedValues: injectApplyAnimatedValues,\n  injectColorNames: injectColorNames,\n  injectBugfixes: injectBugfixes,\n  injectInterpolation: injectInterpolation,\n  injectFrame: injectFrame,\n  injectNow: injectNow,\n  injectDefaultElement: injectDefaultElement,\n  injectCreateAnimatedStyle: injectCreateAnimatedStyle\n});\n\nclass Animated {\n  attach() {}\n\n  detach() {}\n\n  getValue() {}\n\n  getAnimatedValue() {\n    return this.getValue();\n  }\n\n  addChild(child) {}\n\n  removeChild(child) {}\n\n  getChildren() {\n    return [];\n  }\n\n}\n\nconst getValues = object => Object.keys(object).map(k => object[k]);\n\nclass AnimatedWithChildren extends Animated {\n  constructor() {\n    var _this;\n\n    super(...arguments);\n    _this = this;\n    this.children = [];\n\n    this.getChildren = () => this.children;\n\n    this.getPayload = function (index) {\n      if (index === void 0) {\n        index = undefined;\n      }\n\n      return index !== void 0 && _this.payload ? _this.payload[index] : _this.payload || _this;\n    };\n  }\n\n  addChild(child) {\n    if (this.children.length === 0) this.attach();\n    this.children.push(child);\n  }\n\n  removeChild(child) {\n    const index = this.children.indexOf(child);\n    this.children.splice(index, 1);\n    if (this.children.length === 0) this.detach();\n  }\n\n}\nclass AnimatedArrayWithChildren extends AnimatedWithChildren {\n  constructor() {\n    super(...arguments);\n    this.payload = [];\n\n    this.getAnimatedValue = () => this.getValue();\n\n    this.attach = () => this.payload.forEach(p => p instanceof Animated && p.addChild(this));\n\n    this.detach = () => this.payload.forEach(p => p instanceof Animated && p.removeChild(this));\n  }\n\n}\nclass AnimatedObjectWithChildren extends AnimatedWithChildren {\n  constructor() {\n    super(...arguments);\n    this.payload = {};\n\n    this.getAnimatedValue = () => this.getValue(true);\n\n    this.attach = () => getValues(this.payload).forEach(s => s instanceof Animated && s.addChild(this));\n\n    this.detach = () => getValues(this.payload).forEach(s => s instanceof Animated && s.removeChild(this));\n  }\n\n  getValue(animated) {\n    if (animated === void 0) {\n      animated = false;\n    }\n\n    const payload = {};\n\n    for (const key in this.payload) {\n      const value = this.payload[key];\n      if (animated && !(value instanceof Animated)) continue;\n      payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;\n    }\n\n    return payload;\n  }\n\n}\n\nclass AnimatedStyle extends AnimatedObjectWithChildren {\n  constructor(style) {\n    super();\n    style = style || {};\n    if (style.transform && !(style.transform instanceof Animated)) style = applyAnimatedValues.transform(style);\n    this.payload = style;\n  }\n\n}\n\n// http://www.w3.org/TR/css3-color/#svg-color\nconst colors = {\n  transparent: 0x00000000,\n  aliceblue: 0xf0f8ffff,\n  antiquewhite: 0xfaebd7ff,\n  aqua: 0x00ffffff,\n  aquamarine: 0x7fffd4ff,\n  azure: 0xf0ffffff,\n  beige: 0xf5f5dcff,\n  bisque: 0xffe4c4ff,\n  black: 0x000000ff,\n  blanchedalmond: 0xffebcdff,\n  blue: 0x0000ffff,\n  blueviolet: 0x8a2be2ff,\n  brown: 0xa52a2aff,\n  burlywood: 0xdeb887ff,\n  burntsienna: 0xea7e5dff,\n  cadetblue: 0x5f9ea0ff,\n  chartreuse: 0x7fff00ff,\n  chocolate: 0xd2691eff,\n  coral: 0xff7f50ff,\n  cornflowerblue: 0x6495edff,\n  cornsilk: 0xfff8dcff,\n  crimson: 0xdc143cff,\n  cyan: 0x00ffffff,\n  darkblue: 0x00008bff,\n  darkcyan: 0x008b8bff,\n  darkgoldenrod: 0xb8860bff,\n  darkgray: 0xa9a9a9ff,\n  darkgreen: 0x006400ff,\n  darkgrey: 0xa9a9a9ff,\n  darkkhaki: 0xbdb76bff,\n  darkmagenta: 0x8b008bff,\n  darkolivegreen: 0x556b2fff,\n  darkorange: 0xff8c00ff,\n  darkorchid: 0x9932ccff,\n  darkred: 0x8b0000ff,\n  darksalmon: 0xe9967aff,\n  darkseagreen: 0x8fbc8fff,\n  darkslateblue: 0x483d8bff,\n  darkslategray: 0x2f4f4fff,\n  darkslategrey: 0x2f4f4fff,\n  darkturquoise: 0x00ced1ff,\n  darkviolet: 0x9400d3ff,\n  deeppink: 0xff1493ff,\n  deepskyblue: 0x00bfffff,\n  dimgray: 0x696969ff,\n  dimgrey: 0x696969ff,\n  dodgerblue: 0x1e90ffff,\n  firebrick: 0xb22222ff,\n  floralwhite: 0xfffaf0ff,\n  forestgreen: 0x228b22ff,\n  fuchsia: 0xff00ffff,\n  gainsboro: 0xdcdcdcff,\n  ghostwhite: 0xf8f8ffff,\n  gold: 0xffd700ff,\n  goldenrod: 0xdaa520ff,\n  gray: 0x808080ff,\n  green: 0x008000ff,\n  greenyellow: 0xadff2fff,\n  grey: 0x808080ff,\n  honeydew: 0xf0fff0ff,\n  hotpink: 0xff69b4ff,\n  indianred: 0xcd5c5cff,\n  indigo: 0x4b0082ff,\n  ivory: 0xfffff0ff,\n  khaki: 0xf0e68cff,\n  lavender: 0xe6e6faff,\n  lavenderblush: 0xfff0f5ff,\n  lawngreen: 0x7cfc00ff,\n  lemonchiffon: 0xfffacdff,\n  lightblue: 0xadd8e6ff,\n  lightcoral: 0xf08080ff,\n  lightcyan: 0xe0ffffff,\n  lightgoldenrodyellow: 0xfafad2ff,\n  lightgray: 0xd3d3d3ff,\n  lightgreen: 0x90ee90ff,\n  lightgrey: 0xd3d3d3ff,\n  lightpink: 0xffb6c1ff,\n  lightsalmon: 0xffa07aff,\n  lightseagreen: 0x20b2aaff,\n  lightskyblue: 0x87cefaff,\n  lightslategray: 0x778899ff,\n  lightslategrey: 0x778899ff,\n  lightsteelblue: 0xb0c4deff,\n  lightyellow: 0xffffe0ff,\n  lime: 0x00ff00ff,\n  limegreen: 0x32cd32ff,\n  linen: 0xfaf0e6ff,\n  magenta: 0xff00ffff,\n  maroon: 0x800000ff,\n  mediumaquamarine: 0x66cdaaff,\n  mediumblue: 0x0000cdff,\n  mediumorchid: 0xba55d3ff,\n  mediumpurple: 0x9370dbff,\n  mediumseagreen: 0x3cb371ff,\n  mediumslateblue: 0x7b68eeff,\n  mediumspringgreen: 0x00fa9aff,\n  mediumturquoise: 0x48d1ccff,\n  mediumvioletred: 0xc71585ff,\n  midnightblue: 0x191970ff,\n  mintcream: 0xf5fffaff,\n  mistyrose: 0xffe4e1ff,\n  moccasin: 0xffe4b5ff,\n  navajowhite: 0xffdeadff,\n  navy: 0x000080ff,\n  oldlace: 0xfdf5e6ff,\n  olive: 0x808000ff,\n  olivedrab: 0x6b8e23ff,\n  orange: 0xffa500ff,\n  orangered: 0xff4500ff,\n  orchid: 0xda70d6ff,\n  palegoldenrod: 0xeee8aaff,\n  palegreen: 0x98fb98ff,\n  paleturquoise: 0xafeeeeff,\n  palevioletred: 0xdb7093ff,\n  papayawhip: 0xffefd5ff,\n  peachpuff: 0xffdab9ff,\n  peru: 0xcd853fff,\n  pink: 0xffc0cbff,\n  plum: 0xdda0ddff,\n  powderblue: 0xb0e0e6ff,\n  purple: 0x800080ff,\n  rebeccapurple: 0x663399ff,\n  red: 0xff0000ff,\n  rosybrown: 0xbc8f8fff,\n  royalblue: 0x4169e1ff,\n  saddlebrown: 0x8b4513ff,\n  salmon: 0xfa8072ff,\n  sandybrown: 0xf4a460ff,\n  seagreen: 0x2e8b57ff,\n  seashell: 0xfff5eeff,\n  sienna: 0xa0522dff,\n  silver: 0xc0c0c0ff,\n  skyblue: 0x87ceebff,\n  slateblue: 0x6a5acdff,\n  slategray: 0x708090ff,\n  slategrey: 0x708090ff,\n  snow: 0xfffafaff,\n  springgreen: 0x00ff7fff,\n  steelblue: 0x4682b4ff,\n  tan: 0xd2b48cff,\n  teal: 0x008080ff,\n  thistle: 0xd8bfd8ff,\n  tomato: 0xff6347ff,\n  turquoise: 0x40e0d0ff,\n  violet: 0xee82eeff,\n  wheat: 0xf5deb3ff,\n  white: 0xffffffff,\n  whitesmoke: 0xf5f5f5ff,\n  yellow: 0xffff00ff,\n  yellowgreen: 0x9acd32ff\n};\n\nclass Interpolation {\n  // Default config = config, args\n  // Short config   = range, output, extrapolate\n  static create(config, output, extra) {\n    if (typeof config === 'function') return config;else if (interpolation && config.output && typeof config.output[0] === 'string') return interpolation(config);else if (Array.isArray(config)) return Interpolation.create({\n      range: config,\n      output,\n      extrapolate: extra || 'extend'\n    });\n    let outputRange = config.output;\n    let inputRange = config.range || [0, 1];\n\n    let easing = config.easing || (t => t);\n\n    let extrapolateLeft = 'extend';\n    let map = config.map;\n    if (config.extrapolateLeft !== undefined) extrapolateLeft = config.extrapolateLeft;else if (config.extrapolate !== undefined) extrapolateLeft = config.extrapolate;\n    let extrapolateRight = 'extend';\n    if (config.extrapolateRight !== undefined) extrapolateRight = config.extrapolateRight;else if (config.extrapolate !== undefined) extrapolateRight = config.extrapolate;\n    return input => {\n      let range = findRange(input, inputRange);\n      return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, map);\n    };\n  }\n\n}\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n  let result = map ? map(input) : input; // Extrapolate\n\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n  }\n\n  if (outputMin === outputMax) return outputMin;\n  if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range\n\n  if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing\n\n  result = easing(result); // Output Range\n\n  if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n  return result;\n}\n\nfunction findRange(input, inputRange) {\n  for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n  return i - 1;\n}\n\n// const INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call() {\n  return '\\\\(\\\\s*(' + Array.prototype.slice.call(arguments).join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\n/*\nhttps://github.com/react-community/normalize-css-color\n\nBSD 3-Clause License\n\nCopyright (c) 2016, React Community\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nfunction normalizeColor(color) {\n  let match;\n\n  if (typeof color === 'number') {\n    return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n  } // Ordered based on occurrences on Facebook codebase\n\n\n  if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n  if (colors.hasOwnProperty(color)) return colors[color];\n\n  if (match = rgb.exec(color)) {\n    return (parse255(match[1]) << 24 | // r\n    parse255(match[2]) << 16 | // g\n    parse255(match[3]) << 8 | // b\n    0x000000ff) >>> // a\n    0;\n  }\n\n  if (match = rgba.exec(color)) {\n    return (parse255(match[1]) << 24 | // r\n    parse255(match[2]) << 16 | // g\n    parse255(match[3]) << 8 | // b\n    parse1(match[4])) >>> // a\n    0;\n  }\n\n  if (match = hex3.exec(color)) {\n    return parseInt(match[1] + match[1] + // r\n    match[2] + match[2] + // g\n    match[3] + match[3] + // b\n    'ff', // a\n    16) >>> 0;\n  } // https://drafts.csswg.org/css-color-4/#hex-notation\n\n\n  if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n  if (match = hex4.exec(color)) {\n    return parseInt(match[1] + match[1] + // r\n    match[2] + match[2] + // g\n    match[3] + match[3] + // b\n    match[4] + match[4], // a\n    16) >>> 0;\n  }\n\n  if (match = hsl.exec(color)) {\n    return (hslToRgb(parse360(match[1]), // h\n    parsePercentage(match[2]), // s\n    parsePercentage(match[3]) // l\n    ) | 0x000000ff) >>> // a\n    0;\n  }\n\n  if (match = hsla.exec(color)) {\n    return (hslToRgb(parse360(match[1]), // h\n    parsePercentage(match[2]), // s\n    parsePercentage(match[3]) // l\n    ) | parse1(match[4])) >>> // a\n    0;\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\n\nfunction hslToRgb(h, s, l) {\n  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const p = 2 * l - q;\n  const r = hue2rgb(p, q, h + 1 / 3);\n  const g = hue2rgb(p, q, h);\n  const b = hue2rgb(p, q, h - 1 / 3);\n  return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n  const int = parseInt(str, 10);\n  if (int < 0) return 0;\n  if (int > 255) return 255;\n  return int;\n}\n\nfunction parse360(str) {\n  const int = parseFloat(str);\n  return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n  const num = parseFloat(str);\n  if (num < 0) return 0;\n  if (num > 1) return 255;\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n  // parseFloat conveniently ignores the final %\n  const int = parseFloat(str);\n  if (int < 0) return 0;\n  if (int > 100) return 1;\n  return int / 100;\n}\n\nfunction colorToRgba(input) {\n  let int32Color = normalizeColor(input);\n  if (int32Color === null) return input;\n  int32Color = int32Color || 0;\n  let r = (int32Color & 0xff000000) >>> 24;\n  let g = (int32Color & 0x00ff0000) >>> 16;\n  let b = (int32Color & 0x0000ff00) >>> 8;\n  let a = (int32Color & 0x000000ff) / 255;\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n} // Problem: https://github.com/animatedjs/animated/pull/102\n// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662\n\n\nconst stringShapeRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g; // Covers rgb, rgba, hsl, hsla\n// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e\n\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi; // Covers color names (transparent, blue, etc.)\n\nconst colorNamesRegex = new RegExp(`(${Object.keys(colors).join('|')})`, 'g');\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape.  Supports\n * things like:\n *\n *   rgba(123, 42, 99, 0.36)           // colors\n *   -45deg                            // values with units\n *   0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows\n */\n\nfunction createInterpolation(config) {\n  // Replace colors with rgba\n  const outputRange = config.output.map(rangeValue => rangeValue.replace(colorRegex, colorToRgba)).map(rangeValue => rangeValue.replace(colorNamesRegex, colorToRgba)); // ->\n  // [\n  //   [0, 50],\n  //   [100, 150],\n  //   [200, 250],\n  //   [0, 0.5],\n  // ]\n\n  const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n  outputRange.forEach(value => {\n    value.match(stringShapeRegex).forEach((number, i) => outputRanges[i].push(+number));\n  });\n  const interpolations = outputRange[0].match(stringShapeRegex).map((value, i) => {\n    return Interpolation.create(_extends({}, config, {\n      output: outputRanges[i]\n    }));\n  });\n  return input => {\n    let i = 0;\n    return outputRange[0] // 'rgba(0, 100, 200, 0)'\n    // ->\n    // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n    .replace(stringShapeRegex, () => interpolations[i++](input)) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n    // round the opacity (4th column).\n    .replace(/rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi, (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`);\n  };\n}\n\nclass AnimatedInterpolation extends AnimatedArrayWithChildren {\n  constructor(parents, _config, _arg) {\n    super();\n\n    this.getValue = () => this.calc(...this.payload.map(value => value.getValue()));\n\n    this.updateConfig = (config, arg) => this.calc = Interpolation.create(config, arg);\n\n    this.interpolate = (config, arg) => new AnimatedInterpolation(this, config, arg);\n\n    this.payload = // AnimatedArrays should unfold, except AnimatedInterpolation which is taken as is\n    parents instanceof AnimatedArrayWithChildren && !parents.updateConfig ? parents.payload : Array.isArray(parents) ? parents : [parents];\n    this.calc = Interpolation.create(_config, _arg);\n  }\n\n}\nconst interpolate$1 = (parents, config, arg) => parents && new AnimatedInterpolation(parents, config, arg);\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n *               new Animated.Value(0)\n *     .interpolate()        .interpolate()    new Animated.Value(1)\n *         opacity               translateY      scale\n *          style                         transform\n *         View#234                         style\n *                                         View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\n\nfunction findAnimatedStyles(node, styles) {\n  if (typeof node.update === 'function') styles.add(node);else node.getChildren().forEach(child => findAnimatedStyles(child, styles));\n}\n/**\n * Standard value for driving animations.  One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time.  Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n */\n\n\nclass AnimatedValue extends AnimatedWithChildren {\n  constructor(_value) {\n    var _this;\n\n    super();\n    _this = this;\n\n    this.setValue = function (value, flush) {\n      if (flush === void 0) {\n        flush = true;\n      }\n\n      _this.value = value;\n      if (flush) _this.flush();\n    };\n\n    this.getValue = () => this.value;\n\n    this.updateStyles = () => findAnimatedStyles(this, this.animatedStyles);\n\n    this.updateValue = value => this.flush(this.value = value);\n\n    this.interpolate = (config, arg) => new AnimatedInterpolation(this, config, arg);\n\n    this.value = _value;\n    this.animatedStyles = new Set();\n    this.done = false;\n    this.startPosition = _value;\n    this.lastPosition = _value;\n    this.lastVelocity = undefined;\n    this.lastTime = undefined;\n    this.controller = undefined;\n  }\n\n  flush() {\n    if (this.animatedStyles.size === 0) this.updateStyles();\n    this.animatedStyles.forEach(animatedStyle => animatedStyle.update());\n  }\n\n  prepare(controller) {\n    // Values stay loyal to their original controller, this is also a way to\n    // detect trailing values originating from a foreign controller\n    if (this.controller === undefined) this.controller = controller;\n\n    if (this.controller === controller) {\n      this.startPosition = this.value;\n      this.lastPosition = this.value;\n      this.lastVelocity = controller.isActive ? this.lastVelocity : undefined;\n      this.lastTime = controller.isActive ? this.lastTime : undefined;\n      this.done = false;\n      this.animatedStyles.clear();\n    }\n  }\n\n}\n\nclass AnimatedArray extends AnimatedArrayWithChildren {\n  constructor(array) {\n    var _this;\n\n    super();\n    _this = this;\n\n    this.setValue = function (value, flush) {\n      if (flush === void 0) {\n        flush = true;\n      }\n\n      if (Array.isArray(value)) {\n        if (value.length === _this.payload.length) value.forEach((v, i) => _this.payload[i].setValue(v, flush));\n      } else _this.payload.forEach((v, i) => _this.payload[i].setValue(value, flush));\n    };\n\n    this.getValue = () => this.payload.map(v => v.getValue());\n\n    this.interpolate = (config, arg) => new AnimatedInterpolation(this, config, arg);\n\n    this.payload = array.map(n => new AnimatedValue(n));\n  }\n\n}\n\nfunction withDefault(value, defaultValue) {\n  return value === undefined || value === null ? defaultValue : value;\n}\nfunction toArray(a) {\n  return a !== void 0 ? Array.isArray(a) ? a : [a] : [];\n}\nfunction shallowEqual(a, b) {\n  if (typeof a !== typeof b) return false;\n  if (typeof a === 'string' || typeof a === 'number') return a === b;\n  let i;\n\n  for (i in a) if (!(i in b)) return false;\n\n  for (i in b) if (a[i] !== b[i]) return false;\n\n  return i === void 0 ? a === b : true;\n}\nfunction callProp(obj) {\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 typeof obj === 'function' ? obj(...args) : obj;\n}\nfunction getValues$1(object) {\n  return Object.keys(object).map(k => object[k]);\n}\nfunction getForwardProps(props) {\n  const to = props.to,\n        from = props.from,\n        config = props.config,\n        native = props.native,\n        onStart = props.onStart,\n        onRest = props.onRest,\n        onFrame = props.onFrame,\n        children = props.children,\n        reset = props.reset,\n        reverse = props.reverse,\n        force = props.force,\n        immediate = props.immediate,\n        impl = props.impl,\n        inject = props.inject,\n        delay = props.delay,\n        attach = props.attach,\n        destroyed = props.destroyed,\n        interpolateTo = props.interpolateTo,\n        autoStart = props.autoStart,\n        ref = props.ref,\n        forward = _objectWithoutPropertiesLoose(props, [\"to\", \"from\", \"config\", \"native\", \"onStart\", \"onRest\", \"onFrame\", \"children\", \"reset\", \"reverse\", \"force\", \"immediate\", \"impl\", \"inject\", \"delay\", \"attach\", \"destroyed\", \"interpolateTo\", \"autoStart\", \"ref\"]);\n\n  return forward;\n}\nfunction interpolateTo(props) {\n  const forward = getForwardProps(props);\n  const rest = Object.keys(props).reduce((a, k) => forward[k] !== void 0 ? a : _extends({}, a, {\n    [k]: props[k]\n  }), {});\n  return _extends({\n    to: forward\n  }, rest);\n}\nfunction convertToAnimatedValue(acc, _ref) {\n  let name = _ref[0],\n      value = _ref[1];\n  return _extends({}, acc, {\n    [name]: new (Array.isArray(value) ? AnimatedArray : AnimatedValue)(value)\n  });\n}\nfunction convertValues(props) {\n  const from = props.from,\n        to = props.to,\n        native = props.native;\n  const allProps = Object.entries(_extends({}, from, to));\n  return native ? allProps.reduce(convertToAnimatedValue, {}) : _extends({}, from, to);\n}\nfunction handleRef(ref, forward) {\n  if (forward) {\n    // If it's a function, assume it's a ref callback\n    if (typeof forward === 'function') forward(ref);else if (typeof forward === 'object') {\n      // If it's an object and has a 'current' property, assume it's a ref object\n      forward.current = ref;\n    }\n  }\n\n  return ref;\n}\n\nconst check = value => value === 'auto';\n\nconst overwrite = (width, height) => (acc, _ref) => {\n  let name = _ref[0],\n      value = _ref[1];\n  return _extends({}, acc, {\n    [name]: value === 'auto' ? ~name.indexOf('height') ? height : width : value\n  });\n};\n\nfunction fixAuto(props, callback) {\n  const from = props.from,\n        to = props.to,\n        children = props.children; // Dry-route props back if nothing's using 'auto' in there\n  // TODO: deal with \"null\"\n\n  if (!(getValues$1(to).some(check) || getValues$1(from).some(check))) return; // Fetch render v-dom\n\n  let element = children(convertValues(props)); // A spring can return undefined/null, check against that (#153)\n\n  if (!element) return; // Or it could be an array (#346) ...\n\n  if (Array.isArray(element)) element = {\n    type: 'div',\n    props: {\n      children: element\n    } // Extract styles\n\n  };\n  const elementStyles = element.props.style; // Return v.dom with injected ref\n\n  return React__default.createElement(element.type, _extends({\n    key: element.key ? element.key : undefined\n  }, element.props, {\n    style: _extends({}, elementStyles, {\n      position: 'absolute',\n      visibility: 'hidden'\n    }),\n    ref: _ref2 => {\n      if (_ref2) {\n        // Once it's rendered out, fetch bounds (minus padding/margin/borders)\n        let node = ReactDOM.findDOMNode(_ref2);\n        let width, height;\n        let cs = getComputedStyle(node);\n\n        if (cs.boxSizing === 'border-box') {\n          width = node.offsetWidth;\n          height = node.offsetHeight;\n        } else {\n          const paddingX = parseFloat(cs.paddingLeft || 0) + parseFloat(cs.paddingRight || 0);\n          const paddingY = parseFloat(cs.paddingTop || 0) + parseFloat(cs.paddingBottom || 0);\n          const borderX = parseFloat(cs.borderLeftWidth || 0) + parseFloat(cs.borderRightWidth || 0);\n          const borderY = parseFloat(cs.borderTopWidth || 0) + parseFloat(cs.borderBottomWidth || 0);\n          width = node.offsetWidth - paddingX - borderX;\n          height = node.offsetHeight - paddingY - borderY;\n        }\n\n        const convert = overwrite(width, height);\n        callback(_extends({}, props, {\n          from: Object.entries(from).reduce(convert, from),\n          to: Object.entries(to).reduce(convert, to)\n        }));\n      }\n    }\n  }));\n}\n\nlet isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n  prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n  return acc;\n}, isUnitlessNumber);\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  if (value == null || typeof value === 'boolean' || value === '') return '';\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n\n  return ('' + value).trim();\n}\n\nconst attributeCache = {};\ninjectCreateAnimatedStyle(style => new AnimatedStyle(style));\ninjectDefaultElement('div');\ninjectInterpolation(createInterpolation);\ninjectColorNames(colors);\ninjectBugfixes(fixAuto);\ninjectApplyAnimatedValues((instance, props) => {\n  if (instance.nodeType && instance.setAttribute !== undefined) {\n    const style = props.style,\n          children = props.children,\n          scrollTop = props.scrollTop,\n          scrollLeft = props.scrollLeft,\n          attributes = _objectWithoutPropertiesLoose(props, [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"]);\n\n    if (scrollTop !== void 0) instance.scrollTop = scrollTop;\n    if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value\n\n    if (children !== void 0) instance.textContent = children; // Set styles ...\n\n    for (let styleName in style) {\n      if (!style.hasOwnProperty(styleName)) continue;\n      var isCustomProperty = styleName.indexOf('--') === 0;\n      var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty);\n      if (styleName === 'float') styleName = 'cssFloat';\n      if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue;\n    } // Set attributes ...\n\n\n    for (let name in attributes) {\n      // Attributes are written in dash case\n      const dashCase = attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase()));\n      if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]);\n    }\n  } else return false;\n}, style => style);\n\nlet active = false;\nconst controllers = new Set();\n\nconst frameLoop = () => {\n  let time = now();\n\n  for (let controller of controllers) {\n    let isDone = true;\n    let noChange = true;\n\n    for (let configIdx = 0; configIdx < controller.configs.length; configIdx++) {\n      let config = controller.configs[configIdx];\n      let endOfAnimation, lastTime;\n\n      for (let valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {\n        let animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude\n\n        if (animation.done) continue;\n        let from = config.fromValues[valIdx];\n        let to = config.toValues[valIdx];\n        let position = animation.lastPosition;\n        let isAnimated = to instanceof Animated;\n        let velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;\n        if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state\n\n        if (config.immediate || !isAnimated && !config.decay && from === to) {\n          animation.updateValue(to);\n          animation.done = true;\n          continue;\n        } // Doing delay here instead of setTimeout is one async worry less\n\n\n        if (config.delay && time - controller.startTime < config.delay) {\n          isDone = false;\n          continue;\n        } // Flag change\n\n\n        noChange = false; // Break animation when string values are involved\n\n        if (typeof from === 'string' || typeof to === 'string') {\n          animation.updateValue(to);\n          animation.done = true;\n          continue;\n        }\n\n        if (config.duration !== void 0) {\n          /** Duration easing */\n          position = from + config.easing((time - controller.startTime - config.delay) / config.duration) * (to - from);\n          endOfAnimation = time >= controller.startTime + config.delay + config.duration;\n        } else if (config.decay) {\n          /** Decay easing */\n          position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - controller.startTime)));\n          endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;\n          if (endOfAnimation) to = position;\n        } else {\n          /** Spring easing */\n          lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;\n          velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.\n\n          if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/\n\n          let numSteps = Math.floor(time - lastTime);\n\n          for (let i = 0; i < numSteps; ++i) {\n            let force = -config.tension * (position - to);\n            let damping = -config.friction * velocity;\n            let acceleration = (force + damping) / config.mass;\n            velocity = velocity + acceleration * 1 / 1000;\n            position = position + velocity * 1 / 1000;\n          } // Conditions for stopping the spring animation\n\n\n          let isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;\n          let isVelocity = Math.abs(velocity) <= config.precision;\n          let isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;\n          endOfAnimation = isOvershooting || isVelocity && isDisplacement;\n          animation.lastVelocity = velocity;\n          animation.lastTime = time;\n        } // Trails aren't done until their parents conclude\n\n\n        if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;\n\n        if (endOfAnimation) {\n          // Ensure that we end up with a round value\n          if (animation.value !== to) position = to;\n          animation.done = true;\n        } else isDone = false;\n\n        animation.updateValue(position);\n        animation.lastPosition = position;\n      } // Keep track of updated values only when necessary\n\n\n      if (controller.props.onFrame || !controller.props.native) controller.animatedProps[config.name] = config.interpolation.getValue();\n    } // Update callbacks in the end of the frame\n\n\n    if (controller.props.onFrame || !controller.props.native) {\n      if (!controller.props.native && controller.onUpdate) controller.onUpdate();\n      if (controller.props.onFrame) controller.props.onFrame(controller.animatedProps);\n    } // Either call onEnd or next frame\n\n\n    if (isDone) {\n      controllers.delete(controller);\n      controller.debouncedOnEnd({\n        finished: true,\n        noChange\n      });\n    }\n  } // Loop over as long as there are controllers ...\n\n\n  if (controllers.size) requestFrame(frameLoop);else active = false;\n};\n\nconst addController = controller => {\n  if (!controllers.has(controller)) {\n    controllers.add(controller);\n    if (!active) requestFrame(frameLoop);\n    active = true;\n  }\n};\n\nconst removeController = controller => {\n  if (controllers.has(controller)) {\n    controllers.delete(controller);\n  }\n};\n\nclass Controller {\n  constructor(props, config) {\n    if (config === void 0) {\n      config = {\n        native: true,\n        interpolateTo: true,\n        autoStart: true\n      };\n    }\n\n    this.getValues = () => this.props.native ? this.interpolations : this.animatedProps;\n\n    this.dependents = new Set();\n    this.isActive = false;\n    this.hasChanged = false;\n    this.props = {};\n    this.merged = {};\n    this.animations = {};\n    this.interpolations = {};\n    this.animatedProps = {};\n    this.configs = [];\n    this.frame = undefined;\n    this.startTime = undefined;\n    this.lastTime = undefined;\n    this.update(_extends({}, props, config));\n  }\n\n  update(props) {\n    this.props = _extends({}, this.props, props);\n\n    let _ref = this.props.interpolateTo ? interpolateTo(this.props) : this.props,\n        _ref$from = _ref.from,\n        from = _ref$from === void 0 ? {} : _ref$from,\n        _ref$to = _ref.to,\n        to = _ref$to === void 0 ? {} : _ref$to,\n        _ref$config = _ref.config,\n        config = _ref$config === void 0 ? {} : _ref$config,\n        _ref$delay = _ref.delay,\n        delay = _ref$delay === void 0 ? 0 : _ref$delay,\n        reverse = _ref.reverse,\n        attach = _ref.attach,\n        reset = _ref.reset,\n        immediate = _ref.immediate,\n        autoStart = _ref.autoStart,\n        ref = _ref.ref; // Reverse values when requested\n\n\n    if (reverse) {\n      var _ref2 = [to, from];\n      from = _ref2[0];\n      to = _ref2[1];\n    }\n\n    this.hasChanged = false; // Attachment handling, trailed springs can \"attach\" themselves to a previous spring\n\n    let target = attach && attach(this); // Reset merged props when necessary\n\n    let extra = reset ? {} : this.merged; // This will collect all props that were ever set\n\n    this.merged = _extends({}, from, extra, to); // Reduces input { name: value } pairs into animated values\n\n    this.animations = Object.entries(this.merged).reduce((acc, _ref3, i) => {\n      let name = _ref3[0],\n          value = _ref3[1];\n      // Issue cached entries, except on reset\n      let entry = !reset && acc[name] || {}; // Figure out what the value is supposed to be\n\n      const isNumber = typeof value === 'number';\n      const isString = typeof value === 'string' && !value.startsWith('#') && !/\\d/.test(value) && !colorNames[value];\n      const isArray = !isNumber && !isString && Array.isArray(value);\n      let fromValue = from[name] !== undefined ? from[name] : value;\n      let toValue = isNumber || isArray ? value : isString ? value : 1;\n      let toConfig = callProp(config, name);\n      if (target) toValue = target.animations[name].parent; // Detect changes, animated values will be checked in the raf-loop\n\n      if (toConfig.decay !== void 0 || !shallowEqual(entry.changes, value)) {\n        this.hasChanged = true;\n        let parent, interpolation$$1;\n        if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedArray(fromValue);else {\n          const prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);\n\n          if (entry.parent) {\n            parent = entry.parent;\n            parent.setValue(0, false);\n          } else parent = new AnimatedValue(0);\n\n          const range = {\n            output: [prev !== void 0 ? prev : fromValue, value]\n          };\n\n          if (entry.interpolation) {\n            interpolation$$1 = entry.interpolation;\n            entry.interpolation.updateConfig(range);\n          } else interpolation$$1 = parent.interpolate(range);\n        } // Set immediate values\n\n        if (callProp(immediate, name)) parent.setValue(value, false); // Reset animated values\n\n        const animatedValues = toArray(parent.getPayload());\n        animatedValues.forEach(value => value.prepare(this));\n        return _extends({}, acc, {\n          [name]: _extends({}, entry, {\n            name,\n            parent,\n            interpolation: interpolation$$1,\n            animatedValues,\n            changes: value,\n            fromValues: toArray(parent.getValue()),\n            toValues: toArray(target ? toValue.getPayload() : toValue),\n            immediate: callProp(immediate, name),\n            delay: withDefault(toConfig.delay, delay || 0),\n            initialVelocity: withDefault(toConfig.velocity, 0),\n            clamp: withDefault(toConfig.clamp, false),\n            precision: withDefault(toConfig.precision, 0.01),\n            tension: withDefault(toConfig.tension, 170),\n            friction: withDefault(toConfig.friction, 26),\n            mass: withDefault(toConfig.mass, 1),\n            duration: toConfig.duration,\n            easing: withDefault(toConfig.easing, t => t),\n            decay: toConfig.decay\n          })\n        });\n      } else return acc;\n    }, this.animations);\n\n    if (this.hasChanged) {\n      this.configs = getValues$1(this.animations);\n      this.animatedProps = {};\n      this.interpolations = {};\n\n      for (let key in this.animations) {\n        this.interpolations[key] = this.animations[key].interpolation;\n        this.animatedProps[key] = this.animations[key].interpolation.getValue();\n      }\n    } // TODO: clean up ref in controller\n\n\n    for (var _len = arguments.length, start = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      start[_key - 1] = arguments[_key];\n    }\n\n    if (!ref && (autoStart || start.length)) this.start(...start);\n    const onEnd = start[0],\n          onUpdate = start[1];\n    this.onEnd = typeof onEnd === 'function' && onEnd;\n    this.onUpdate = onUpdate;\n    return this.getValues();\n  }\n\n  start(onEnd, onUpdate) {\n    this.startTime = now();\n    if (this.isActive) this.stop();\n    this.isActive = true;\n    this.onEnd = typeof onEnd === 'function' && onEnd;\n    this.onUpdate = onUpdate;\n    if (this.props.onStart) this.props.onStart();\n    addController(this);\n    return new Promise(res => this.resolve = res);\n  }\n\n  stop(finished) {\n    if (finished === void 0) {\n      finished = false;\n    }\n\n    // Reset collected changes since the animation has been stopped cold turkey\n    if (finished) getValues$1(this.animations).forEach(a => a.changes = undefined);\n    this.debouncedOnEnd({\n      finished\n    });\n  }\n\n  destroy() {\n    removeController(this);\n    this.props = {};\n    this.merged = {};\n    this.animations = {};\n    this.interpolations = {};\n    this.animatedProps = {};\n    this.configs = [];\n  }\n\n  debouncedOnEnd(result) {\n    removeController(this);\n    this.isActive = false;\n    const onEnd = this.onEnd;\n    this.onEnd = null;\n    if (onEnd) onEnd(result);\n    if (this.resolve) this.resolve();\n    this.resolve = null;\n  }\n\n}\n\nclass AnimatedProps extends AnimatedObjectWithChildren {\n  constructor(props, callback) {\n    super();\n    if (props.style) props = _extends({}, props, {\n      style: createAnimatedStyle(props.style)\n    });\n    this.payload = props;\n    this.update = callback;\n    this.attach();\n  }\n\n}\n\nfunction createAnimatedComponent(Component) {\n  class AnimatedComponent extends React__default.Component {\n    constructor(props) {\n      super();\n\n      this.callback = () => {\n        if (this.node) {\n          const didUpdate = applyAnimatedValues.fn(this.node, this.propsAnimated.getAnimatedValue(), this);\n          if (didUpdate === false) this.forceUpdate();\n        }\n      };\n\n      this.attachProps(props);\n    }\n\n    componentWillUnmount() {\n      this.propsAnimated && this.propsAnimated.detach();\n    }\n\n    setNativeProps(props) {\n      const didUpdate = applyAnimatedValues.fn(this.node, props, this);\n      if (didUpdate === false) this.forceUpdate();\n    } // The system is best designed when setNativeProps is implemented. It is\n    // able to avoid re-rendering and directly set the attributes that\n    // changed. However, setNativeProps can only be implemented on leaf\n    // native components. If you want to animate a composite component, you\n    // need to re-render it. In this case, we have a fallback that uses\n    // forceUpdate.\n\n\n    attachProps(_ref) {\n      let forwardRef = _ref.forwardRef,\n          nextProps = _objectWithoutPropertiesLoose(_ref, [\"forwardRef\"]);\n\n      const oldPropsAnimated = this.propsAnimated;\n      this.propsAnimated = new AnimatedProps(nextProps, this.callback); // When you call detach, it removes the element from the parent list\n      // of children. If it goes to 0, then the parent also detaches itself\n      // and so on.\n      // An optimization is to attach the new elements and THEN detach the old\n      // ones instead of detaching and THEN attaching.\n      // This way the intermediate state isn't to go to 0 and trigger\n      // this expensive recursive detaching to then re-attach everything on\n      // the very next operation.\n\n      oldPropsAnimated && oldPropsAnimated.detach();\n    }\n\n    shouldComponentUpdate(props) {\n      const style = props.style,\n            nextProps = _objectWithoutPropertiesLoose(props, [\"style\"]);\n\n      const _this$props = this.props,\n            currentStyle = _this$props.style,\n            currentProps = _objectWithoutPropertiesLoose(_this$props, [\"style\"]);\n\n      if (!shallowEqual(currentProps, nextProps) || !shallowEqual(currentStyle, style)) {\n        this.attachProps(props);\n        return true;\n      }\n\n      return false;\n    }\n\n    render() {\n      const _this$propsAnimated$g = this.propsAnimated.getValue(),\n            scrollTop = _this$propsAnimated$g.scrollTop,\n            scrollLeft = _this$propsAnimated$g.scrollLeft,\n            animatedProps = _objectWithoutPropertiesLoose(_this$propsAnimated$g, [\"scrollTop\", \"scrollLeft\"]);\n\n      return React__default.createElement(Component, _extends({}, animatedProps, {\n        ref: node => this.node = handleRef(node, this.props.forwardRef)\n      }));\n    }\n\n  }\n\n  return React__default.forwardRef((props, ref) => React__default.createElement(AnimatedComponent, _extends({}, props, {\n    forwardRef: ref\n  })));\n}\n\nconst config = {\n  default: {\n    tension: 170,\n    friction: 26\n  },\n  gentle: {\n    tension: 120,\n    friction: 14\n  },\n  wobbly: {\n    tension: 180,\n    friction: 12\n  },\n  stiff: {\n    tension: 210,\n    friction: 20\n  },\n  slow: {\n    tension: 280,\n    friction: 60\n  },\n  molasses: {\n    tension: 280,\n    friction: 120\n  }\n};\n\nclass Spring extends React__default.Component {\n  constructor() {\n    super(...arguments);\n    this.state = {\n      lastProps: {\n        from: {},\n        to: {}\n      },\n      propsChanged: false,\n      internal: false\n    };\n    this.controller = new Controller(null, null);\n    this.didUpdate = false;\n    this.didInject = false;\n    this.finished = true;\n\n    this.start = () => {\n      this.finished = false;\n      let wasMounted = this.mounted;\n      this.controller.start(props => this.finish(_extends({}, props, {\n        wasMounted\n      })), this.update);\n    };\n\n    this.stop = () => this.controller.stop(true);\n\n    this.update = () => this.mounted && this.setState({\n      internal: true\n    });\n\n    this.finish = (_ref) => {\n      let finished = _ref.finished,\n          noChange = _ref.noChange,\n          wasMounted = _ref.wasMounted;\n      this.finished = true;\n\n      if (this.mounted && finished) {\n        // Only call onRest if either we *were* mounted, or when there were changes\n        if (this.props.onRest && (wasMounted || !noChange)) this.props.onRest(this.controller.merged); // Restore end-state\n\n        if (this.mounted && this.didInject) {\n          this.afterInject = convertValues(this.props);\n          this.setState({\n            internal: true\n          });\n        } // If we have an inject or values to apply after the animation we ping here\n\n\n        if (this.mounted && (this.didInject || this.props.after)) this.setState({\n          internal: true\n        });\n        this.didInject = false;\n      }\n    };\n  }\n\n  componentDidMount() {\n    // componentDidUpdate isn't called on mount, we call it here to start animating\n    this.componentDidUpdate();\n    this.mounted = true;\n  }\n\n  componentWillUnmount() {\n    // Stop all ongoing animtions\n    this.mounted = false;\n    this.stop();\n  }\n\n  static getDerivedStateFromProps(props, _ref2) {\n    let internal = _ref2.internal,\n        lastProps = _ref2.lastProps;\n    // The following is a test against props that could alter the animation\n    const from = props.from,\n          to = props.to,\n          reset = props.reset,\n          force = props.force;\n    const propsChanged = !shallowEqual(to, lastProps.to) || !shallowEqual(from, lastProps.from) || reset && !internal || force && !internal;\n    return {\n      propsChanged,\n      lastProps: props,\n      internal: false\n    };\n  }\n\n  render() {\n    const children = this.props.children;\n    const propsChanged = this.state.propsChanged; // Inject phase -----------------------------------------------------------\n    // Handle injected frames, for instance targets/web/fix-auto\n    // An inject will return an intermediary React node which measures itself out\n    // .. and returns a callback when the values sought after are ready, usually \"auto\".\n\n    if (this.props.inject && propsChanged && !this.injectProps) {\n      const frame = this.props.inject(this.props, injectProps => {\n        // The inject frame has rendered, now let's update animations...\n        this.injectProps = injectProps;\n        this.setState({\n          internal: true\n        });\n      }); // Render out injected frame\n\n      if (frame) return frame;\n    } // Update phase -----------------------------------------------------------\n\n\n    if (this.injectProps || propsChanged) {\n      // We can potentially cause setState, but we're inside render, the flag prevents that\n      this.didInject = false; // Update animations, this turns from/to props into AnimatedValues\n      // An update can occur on injected props, or when own-props have changed.\n\n      if (this.injectProps) {\n        this.controller.update(this.injectProps); // didInject is needed, because there will be a 3rd stage, where the original values\n        // .. will be restored after the animation is finished. When someone animates towards\n        // .. \"auto\", the end-result should be \"auto\", not \"1999px\", which would block nested\n        // .. height/width changes.\n\n        this.didInject = true;\n      } else if (propsChanged) this.controller.update(this.props); // Flag an update that occured, componentDidUpdate will start the animation later on\n\n\n      this.didUpdate = true;\n      this.afterInject = undefined;\n      this.injectProps = undefined;\n    } // Render phase -----------------------------------------------------------\n    // Render out raw values or AnimatedValues depending on \"native\"\n\n\n    let values = _extends({}, this.controller.getValues(), this.afterInject);\n\n    if (this.finished) values = _extends({}, values, this.props.after);\n    return Object.keys(values).length ? children(values) : null;\n  }\n\n  componentDidUpdate() {\n    // The animation has to start *after* render, since at that point the scene\n    // .. graph should be established, so we do it here. Unfortunatelly, non-native\n    // .. animations as well as \"auto\"-injects call forceUpdate, so it's causing a loop.\n    // .. didUpdate prevents that as it gets set only on prop changes.\n    if (this.didUpdate) this.start();\n    this.didUpdate = false;\n  }\n\n}\nSpring.defaultProps = {\n  from: {},\n  to: {},\n  config: config.default,\n  native: false,\n  immediate: false,\n  reset: false,\n  force: false,\n  inject: bugfixes\n};\n\nclass Trail extends React__default.PureComponent {\n  constructor() {\n    super(...arguments);\n    this.first = true;\n    this.instances = new Set();\n\n    this.hook = (instance, index, length, reverse) => {\n      // Add instance to set\n      this.instances.add(instance); // Return undefined on the first index and from then on the previous instance\n\n      if (reverse ? index === length - 1 : index === 0) return undefined;else return Array.from(this.instances)[reverse ? index + 1 : index - 1];\n    };\n  }\n\n  render() {\n    const _this$props = this.props,\n          items = _this$props.items,\n          _children = _this$props.children,\n          _this$props$from = _this$props.from,\n          from = _this$props$from === void 0 ? {} : _this$props$from,\n          initial = _this$props.initial,\n          reverse = _this$props.reverse,\n          keys = _this$props.keys,\n          delay = _this$props.delay,\n          onRest = _this$props.onRest,\n          props = _objectWithoutPropertiesLoose(_this$props, [\"items\", \"children\", \"from\", \"initial\", \"reverse\", \"keys\", \"delay\", \"onRest\"]);\n\n    const array = toArray(items);\n    return toArray(array).map((item, i) => React__default.createElement(Spring, _extends({\n      onRest: i === 0 ? onRest : null,\n      key: typeof keys === 'function' ? keys(item) : toArray(keys)[i],\n      from: this.first && initial !== void 0 ? initial || {} : from\n    }, props, {\n      delay: i === 0 && delay || undefined,\n      attach: instance => this.hook(instance, i, array.length, reverse),\n      children: props => {\n        const child = _children(item, i);\n\n        return child ? child(props) : null;\n      }\n    })));\n  }\n\n  componentDidUpdate(prevProps) {\n    this.first = false;\n    if (prevProps.items !== this.props.items) this.instances.clear();\n  }\n\n}\nTrail.defaultProps = {\n  keys: item => item\n};\n\nconst DEFAULT = '__default';\n\nclass KeyframesImpl extends React__default.PureComponent {\n  constructor() {\n    var _this;\n\n    super(...arguments);\n    _this = this;\n    this.guid = 0;\n    this.state = {\n      props: {},\n      resolve: () => null,\n      last: true,\n      index: 0\n    };\n\n    this.next = function (props, last, index) {\n      if (last === void 0) {\n        last = true;\n      }\n\n      if (index === void 0) {\n        index = 0;\n      }\n\n      _this.running = true;\n      return new Promise(resolve => {\n        _this.mounted && _this.setState(state => ({\n          props,\n          resolve,\n          last,\n          index\n        }), () => _this.running = false);\n      });\n    };\n  }\n\n  componentDidMount() {\n    this.mounted = true;\n    this.componentDidUpdate({});\n  }\n\n  componentWillUnmount() {\n    this.mounted = false;\n  }\n\n  componentDidUpdate(previous) {\n    var _this2 = this;\n\n    const _this$props = this.props,\n          states = _this$props.states,\n          f = _this$props.filter,\n          state = _this$props.state;\n\n    if (previous.state !== this.props.state || this.props.reset && !this.running || !shallowEqual(states[state], previous.states[previous.state])) {\n      if (states && state && states[state]) {\n        const localId = ++this.guid;\n        const slots = states[state];\n\n        if (slots) {\n          if (Array.isArray(slots)) {\n            let q = Promise.resolve();\n\n            for (let i = 0; i < slots.length; i++) {\n              let index = i;\n              let slot = slots[index];\n              let last = index === slots.length - 1;\n              q = q.then(() => localId === this.guid && this.next(f(slot), last, index));\n            }\n          } else if (typeof slots === 'function') {\n            let index = 0;\n            slots( // next\n            function (props, last) {\n              if (last === void 0) {\n                last = false;\n              }\n\n              return localId === _this2.guid && _this2.next(f(props), last, index++);\n            }, // cancel\n            () => requestFrame(() => this.instance && this.instance.stop()), // ownprops\n            this.props);\n          } else {\n            this.next(f(states[state]));\n          }\n        }\n      }\n    }\n  }\n\n  render() {\n    const _this$state = this.state,\n          props = _this$state.props,\n          resolve = _this$state.resolve,\n          last = _this$state.last,\n          index = _this$state.index;\n    if (!props || Object.keys(props).length === 0) return null;\n\n    let _this$props2 = this.props,\n        state = _this$props2.state,\n        filter = _this$props2.filter,\n        states = _this$props2.states,\n        config = _this$props2.config,\n        Component = _this$props2.primitive,\n        _onRest = _this$props2.onRest,\n        forwardRef = _this$props2.forwardRef,\n        rest = _objectWithoutPropertiesLoose(_this$props2, [\"state\", \"filter\", \"states\", \"config\", \"primitive\", \"onRest\", \"forwardRef\"]); // Arrayed configs need an index to process\n\n\n    if (Array.isArray(config)) config = config[index];\n    return React__default.createElement(Component, _extends({\n      ref: _ref => this.instance = handleRef(_ref, forwardRef),\n      config: config\n    }, rest, props, {\n      onRest: args => {\n        resolve(args);\n        if (_onRest && last) _onRest(args);\n      }\n    }));\n  }\n\n}\n\nKeyframesImpl.defaultProps = {\n  state: DEFAULT\n};\nconst Keyframes = React__default.forwardRef((props, ref) => React__default.createElement(KeyframesImpl, _extends({}, props, {\n  forwardRef: ref\n})));\n\nKeyframes.create = primitive => function (states, filter) {\n  if (filter === void 0) {\n    filter = states => states;\n  }\n\n  if (typeof states === 'function' || Array.isArray(states)) states = {\n    [DEFAULT]: states\n  };\n  return props => React__default.createElement(KeyframesImpl, _extends({\n    primitive: primitive,\n    states: states,\n    filter: filter\n  }, props));\n};\n\nKeyframes.Spring = states => Keyframes.create(Spring)(states, interpolateTo);\n\nKeyframes.Trail = states => Keyframes.create(Trail)(states, interpolateTo);\n\nlet guid = 0;\n\nlet get = props => {\n  let items = props.items,\n      keys = props.keys,\n      rest = _objectWithoutPropertiesLoose(props, [\"items\", \"keys\"]);\n\n  items = toArray(items !== void 0 ? items : null);\n  keys = typeof keys === 'function' ? items.map(keys) : toArray(keys); // Make sure numeric keys are interpreted as Strings (5 !== \"5\")\n\n  return _extends({\n    items,\n    keys: keys.map(key => String(key))\n  }, rest);\n};\n\nclass Transition extends React__default.PureComponent {\n  componentDidMount() {\n    this.mounted = true;\n  }\n\n  componentWillUnmount() {\n    this.mounted = false;\n  }\n\n  constructor(prevProps) {\n    super(prevProps);\n\n    this.destroyItem = (item, key, state) => values => {\n      const _this$props = this.props,\n            onRest = _this$props.onRest,\n            onDestroyed = _this$props.onDestroyed;\n\n      if (this.mounted) {\n        onDestroyed && onDestroyed(item);\n        this.setState((_ref) => {\n          let deleted = _ref.deleted;\n          return {\n            deleted: deleted.filter(t => t.key !== key)\n          };\n        });\n        onRest && onRest(item, state, values);\n      }\n    };\n\n    this.state = {\n      first: true,\n      transitions: [],\n      current: {},\n      deleted: [],\n      prevProps\n    };\n  }\n\n  static getDerivedStateFromProps(props, _ref2) {\n    let first = _ref2.first,\n        prevProps = _ref2.prevProps,\n        state = _objectWithoutPropertiesLoose(_ref2, [\"first\", \"prevProps\"]);\n\n    let _get = get(props),\n        items = _get.items,\n        keys = _get.keys,\n        initial = _get.initial,\n        from = _get.from,\n        enter = _get.enter,\n        leave = _get.leave,\n        update = _get.update,\n        _get$trail = _get.trail,\n        trail = _get$trail === void 0 ? 0 : _get$trail,\n        unique = _get.unique,\n        config = _get.config;\n\n    let _get2 = get(prevProps),\n        _keys = _get2.keys,\n        _items = _get2.items;\n\n    let current = _extends({}, state.current);\n\n    let deleted = [...state.deleted]; // Compare next keys with current keys\n\n    let currentKeys = Object.keys(current);\n    let currentSet = new Set(currentKeys);\n    let nextSet = new Set(keys);\n    let added = keys.filter(item => !currentSet.has(item));\n    let removed = state.transitions.filter(item => !item.destroyed && !nextSet.has(item.originalKey)).map(i => i.originalKey);\n    let updated = keys.filter(item => currentSet.has(item));\n    let delay = 0;\n    added.forEach(key => {\n      // In unique mode, remove fading out transitions if their key comes in again\n      if (unique && deleted.find(d => d.originalKey === key)) deleted = deleted.filter(t => t.originalKey !== key);\n      const keyIndex = keys.indexOf(key);\n      const item = items[keyIndex];\n      const state = 'enter';\n      current[key] = {\n        state,\n        originalKey: key,\n        key: unique ? String(key) : guid++,\n        item,\n        trail: delay = delay + trail,\n        config: callProp(config, item, state),\n        from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),\n        to: callProp(enter, item)\n      };\n    });\n    removed.forEach(key => {\n      const keyIndex = _keys.indexOf(key);\n\n      const item = _items[keyIndex];\n      const state = 'leave';\n      deleted.push(_extends({}, current[key], {\n        state,\n        destroyed: true,\n        left: _keys[Math.max(0, keyIndex - 1)],\n        right: _keys[Math.min(_keys.length, keyIndex + 1)],\n        trail: delay = delay + trail,\n        config: callProp(config, item, state),\n        to: callProp(leave, item)\n      }));\n      delete current[key];\n    });\n    updated.forEach(key => {\n      const keyIndex = keys.indexOf(key);\n      const item = items[keyIndex];\n      const state = 'update';\n      current[key] = _extends({}, current[key], {\n        item,\n        state,\n        trail: delay = delay + trail,\n        config: callProp(config, item, state),\n        to: callProp(update, item)\n      });\n    }); // This tries to restore order for deleted items by finding their last known siblings\n\n    let out = keys.map(key => current[key]);\n    deleted.forEach((_ref3) => {\n      let left = _ref3.left,\n          right = _ref3.right,\n          transition = _objectWithoutPropertiesLoose(_ref3, [\"left\", \"right\"]);\n\n      let pos; // Was it the element on the left, if yes, move there ...\n\n      if ((pos = out.findIndex(t => t.originalKey === left)) !== -1) pos += 1; // Or how about the element on the right ...\n\n      if (pos === -1) pos = out.findIndex(t => t.originalKey === right); // Maybe we'll find it in the list of deleted items\n\n      if (pos === -1) pos = deleted.findIndex(t => t.originalKey === left); // Checking right side as well\n\n      if (pos === -1) pos = deleted.findIndex(t => t.originalKey === right); // And if nothing else helps, move it to the start ¯\\_(ツ)_/¯\n\n      pos = Math.max(0, pos);\n      out = [...out.slice(0, pos), transition, ...out.slice(pos)];\n    });\n    return {\n      first: first && added.length === 0,\n      transitions: out,\n      current,\n      deleted,\n      prevProps: props\n    };\n  }\n\n  render() {\n    const _this$props2 = this.props,\n          initial = _this$props2.initial,\n          _this$props2$from = _this$props2.from,\n          _this$props2$enter = _this$props2.enter,\n          _this$props2$leave = _this$props2.leave,\n          _this$props2$update = _this$props2.update,\n          onDestroyed = _this$props2.onDestroyed,\n          keys = _this$props2.keys,\n          items = _this$props2.items,\n          onFrame = _this$props2.onFrame,\n          onRest = _this$props2.onRest,\n          onStart = _this$props2.onStart,\n          trail = _this$props2.trail,\n          config = _this$props2.config,\n          _children = _this$props2.children,\n          unique = _this$props2.unique,\n          reset = _this$props2.reset,\n          extra = _objectWithoutPropertiesLoose(_this$props2, [\"initial\", \"from\", \"enter\", \"leave\", \"update\", \"onDestroyed\", \"keys\", \"items\", \"onFrame\", \"onRest\", \"onStart\", \"trail\", \"config\", \"children\", \"unique\", \"reset\"]);\n\n    return this.state.transitions.map((_ref4, i) => {\n      let state = _ref4.state,\n          key = _ref4.key,\n          item = _ref4.item,\n          from = _ref4.from,\n          to = _ref4.to,\n          trail = _ref4.trail,\n          config = _ref4.config,\n          destroyed = _ref4.destroyed;\n      return React__default.createElement(Keyframes, _extends({\n        reset: reset && state === 'enter',\n        primitive: Spring,\n        state: state,\n        filter: interpolateTo,\n        states: {\n          [state]: to\n        },\n        key: key,\n        onRest: destroyed ? this.destroyItem(item, key, state) : onRest && (values => onRest(item, state, values)),\n        onStart: onStart && (() => onStart(item, state)),\n        onFrame: onFrame && (values => onFrame(item, state, values)),\n        delay: trail,\n        config: config\n      }, extra, {\n        from: from,\n        children: props => {\n          const child = _children(item, state, i);\n\n          return child ? child(props) : null;\n        }\n      }));\n    });\n  }\n\n}\nTransition.defaultProps = {\n  keys: item => item,\n  unique: false,\n  reset: false\n};\n\nconst domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nconst extendedAnimated = domElements.reduce((acc, element) => {\n  acc[element] = createAnimatedComponent(element);\n  return acc;\n}, createAnimatedComponent);\n\nexports.Spring = Spring;\nexports.Keyframes = Keyframes;\nexports.Transition = Transition;\nexports.Trail = Trail;\nexports.Controller = Controller;\nexports.config = config;\nexports.animated = extendedAnimated;\nexports.interpolate = interpolate$1;\nexports.Globals = Globals;\n","'use strict';\n\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\nif (functionsHaveConfigurableNames && Object.defineProperty) {\n\tObject.defineProperty(module.exports, 'name', { value: 'get flags' });\n}\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","/**\n * Bare-bones equivalent for the functionality of d3.scale.linear\n * @param {Array<number>} domain\n * @param {Array<number>} range\n * @returns {Function} scale function\n * @example\n * var linearScale = require('simple-linear-scale');\n *\n * var scaleFunction = linearScale([0, 1], [0, 100]);\n * scaleFunction(0.5); // 50\n *\n * // clamp option ensures that output is within range\n * var scaleFunction = linearScale([0, 1], [0, 10], true);\n * scaleFunction(100); // 10\n */\nfunction linearScale(domain, range, clamp) {\n  return function(value) {\n    if (domain[0] === domain[1] || range[0] === range[1]) {\n      return range[0];\n    }\n    var ratio = (range[1] - range[0]) / (domain[1] - domain[0]),\n      result = range[0] + ratio * (value - domain[0]);\n    return clamp ? Math.min(range[1], Math.max(range[0], result)) : result;\n  };\n}\n\nmodule.exports = linearScale;\n","var candidateSelectors = [\n  'input',\n  'select',\n  'textarea',\n  'a[href]',\n  'button',\n  '[tabindex]',\n  'audio[controls]',\n  'video[controls]',\n  '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n  ? function () {}\n  : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n  options = options || {};\n\n  var elementDocument = el.ownerDocument || el;\n  var regularTabbables = [];\n  var orderedTabbables = [];\n\n  var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n  var candidates = el.querySelectorAll(candidateSelector);\n\n  if (options.includeContainer) {\n    if (matches.call(el, candidateSelector)) {\n      candidates = Array.prototype.slice.apply(candidates);\n      candidates.unshift(el);\n    }\n  }\n\n  var i, candidate, candidateTabindex;\n  for (i = 0; i < candidates.length; i++) {\n    candidate = candidates[i];\n\n    if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n    candidateTabindex = getTabindex(candidate);\n    if (candidateTabindex === 0) {\n      regularTabbables.push(candidate);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        node: candidate,\n      });\n    }\n  }\n\n  var tabbableNodes = orderedTabbables\n    .sort(sortOrderedTabbables)\n    .map(function(a) { return a.node })\n    .concat(regularTabbables);\n\n  return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n  if (\n    !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n    || isNonTabbableRadio(node)\n    || getTabindex(node) < 0\n  ) {\n    return false;\n  }\n  return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n  if (!node) throw new Error('No node provided');\n  if (matches.call(node, candidateSelector) === false) return false;\n  return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n  untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n  if (\n    node.disabled\n    || isHiddenInput(node)\n    || untouchabilityChecker.isUntouchable(node)\n  ) {\n    return false;\n  }\n  return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n  if (!node) throw new Error('No node provided');\n  if (matches.call(node, focusableCandidateSelector) === false) return false;\n  return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n  var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n  if (!isNaN(tabindexAttr)) return tabindexAttr;\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  if (isContentEditable(node)) return 0;\n  return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n  for (var i = 0, length = list.length; i < length; i++) {\n    if (predicate(list[i])) return list[i];\n  }\n}\n\nfunction isContentEditable(node) {\n  return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n  return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n  return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n  return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n  return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n  for (var i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked) {\n      return nodes[i];\n    }\n  }\n}\n\nfunction isTabbableRadio(node) {\n  if (!node.name) return true;\n  // This won't account for the edge case where you have radio groups with the same\n  // in separate forms on the same page.\n  var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n  var checked = getCheckedRadio(radioSet);\n  return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n  this.doc = elementDocument;\n  // Node cache must be refreshed on every check, in case\n  // the content of the element has changed. The cache contains tuples\n  // mapping nodes to their boolean result.\n  this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n    // Search for a cached result.\n    var cached = find(this.cache, function(item) {\n      return item === node;\n    });\n    if (cached) return cached[1];\n\n    nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n    var result = false;\n\n    if (nodeComputedStyle.display === 'none') {\n      result = true;\n    } else if (node.parentNode) {\n      result = this.hasDisplayNone(node.parentNode);\n    }\n\n    this.cache.push([node, result]);\n\n    return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n  if (node === this.doc.documentElement) return false;\n  var computedStyle = this.doc.defaultView.getComputedStyle(node);\n  if (this.hasDisplayNone(node, computedStyle)) return true;\n  return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function(){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function p(a,b,c){p=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?aa:ba;return p.apply(null,arguments)}var q=Date.now||function(){return+new Date};function ca(a,b){this.a=a;this.o=b||a;this.c=this.o.document}var da=!!window.FontFace;function t(a,b,c,d){b=a.c.createElement(b);if(c)for(var e in c)c.hasOwnProperty(e)&&(\"style\"==e?b.style.cssText=c[e]:b.setAttribute(e,c[e]));d&&b.appendChild(a.c.createTextNode(d));return b}function u(a,b,c){a=a.c.getElementsByTagName(b)[0];a||(a=document.documentElement);a.insertBefore(c,a.lastChild)}function v(a){a.parentNode&&a.parentNode.removeChild(a)}\nfunction w(a,b,c){b=b||[];c=c||[];for(var d=a.className.split(/\\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<d.length;g+=1)if(b[e]===d[g]){f=!0;break}f||d.push(b[e])}b=[];for(e=0;e<d.length;e+=1){f=!1;for(g=0;g<c.length;g+=1)if(d[e]===c[g]){f=!0;break}f||b.push(d[e])}a.className=b.join(\" \").replace(/\\s+/g,\" \").replace(/^\\s+|\\s+$/,\"\")}function y(a,b){for(var c=a.className.split(/\\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return!0;return!1}\nfunction ea(a){return a.o.location.hostname||a.a.location.hostname}function z(a,b,c){function d(){m&&e&&f&&(m(g),m=null)}b=t(a,\"link\",{rel:\"stylesheet\",href:b,media:\"all\"});var e=!1,f=!0,g=null,m=c||null;da?(b.onload=function(){e=!0;d()},b.onerror=function(){e=!0;g=Error(\"Stylesheet failed to load\");d()}):setTimeout(function(){e=!0;d()},0);u(a,\"head\",b)}\nfunction A(a,b,c,d){var e=a.c.getElementsByTagName(\"head\")[0];if(e){var f=t(a,\"script\",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&\"loaded\"!=this.readyState&&\"complete\"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,\"HEAD\"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);setTimeout(function(){g||(g=!0,c&&c(Error(\"Script load timeout\")))},d||5E3);return f}return null};function B(){this.a=0;this.c=null}function C(a){a.a++;return function(){a.a--;D(a)}}function E(a,b){a.c=b;D(a)}function D(a){0==a.a&&a.c&&(a.c(),a.c=null)};function F(a){this.a=a||\"-\"}F.prototype.c=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\\W_]+/g,\"\").toLowerCase());return b.join(this.a)};function G(a,b){this.c=a;this.f=4;this.a=\"n\";var c=(b||\"n4\").match(/^([nio])([1-9])$/i);c&&(this.a=c[1],this.f=parseInt(c[2],10))}function fa(a){return H(a)+\" \"+(a.f+\"00\")+\" 300px \"+I(a.c)}function I(a){var b=[];a=a.split(/,\\s*/);for(var c=0;c<a.length;c++){var d=a[c].replace(/['\"]/g,\"\");-1!=d.indexOf(\" \")||/^\\d/.test(d)?b.push(\"'\"+d+\"'\"):b.push(d)}return b.join(\",\")}function J(a){return a.a+a.f}function H(a){var b=\"normal\";\"o\"===a.a?b=\"oblique\":\"i\"===a.a&&(b=\"italic\");return b}\nfunction ga(a){var b=4,c=\"n\",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.c=a;this.f=a.o.document.documentElement;this.h=b;this.a=new F(\"-\");this.j=!1!==b.events;this.g=!1!==b.classes}function ia(a){a.g&&w(a.f,[a.a.c(\"wf\",\"loading\")]);K(a,\"loading\")}function L(a){if(a.g){var b=y(a.f,a.a.c(\"wf\",\"active\")),c=[],d=[a.a.c(\"wf\",\"loading\")];b||c.push(a.a.c(\"wf\",\"inactive\"));w(a.f,c,d)}K(a,\"inactive\")}function K(a,b,c){if(a.j&&a.h[b])if(c)a.h[b](c.c,J(c));else a.h[b]()};function ja(){this.c={}}function ka(a,b,c){var d=[],e;for(e in b)if(b.hasOwnProperty(e)){var f=a.c[e];f&&d.push(f(b[e],c))}return d};function M(a,b){this.c=a;this.f=b;this.a=t(this.c,\"span\",{\"aria-hidden\":\"true\"},this.f)}function N(a){u(a.c,\"body\",a.a)}function O(a){return\"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:\"+I(a.c)+\";\"+(\"font-style:\"+H(a)+\";font-weight:\"+(a.f+\"00\")+\";\")};function P(a,b,c,d,e,f){this.g=a;this.j=b;this.a=d;this.c=c;this.f=e||3E3;this.h=f||void 0}P.prototype.start=function(){var a=this.c.o.document,b=this,c=q(),d=new Promise(function(d,e){function f(){q()-c>=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h<c.length;h++){var k=c[h],n=m[k.c],r=b.a,x=k;r.g&&w(r.f,[r.a.c(\"wf\",x.c,J(x).toString(),\"loading\")]);K(r,\"fontloading\",x);r=null;if(null===X)if(window.FontFace){var x=/Gecko.*Firefox\\/(\\d+)/.exec(window.navigator.userAgent),xa=/OS X.*Version\\/10\\..*Safari/.exec(window.navigator.userAgent)&&/Apple/.exec(window.navigator.vendor);\nX=x?42<parseInt(x[1],10):xa?!1:!0}else X=!1;X?r=new P(p(b.g,b),p(b.h,b),b.c,k,b.s,n):r=new Q(p(b.g,b),p(b.h,b),b.c,k,b.s,a,n);l.push(r)}for(h=0;h<l.length;h++)l[h].start()}},0)}function pa(a,b,c){var d=[],e=c.timeout;ia(b);var d=ka(a.a,c,a.c),f=new W(a.c,b,e);a.h=d.length;b=0;for(c=d.length;b<c;b++)d[b].load(function(b,d,c){qa(a,f,b,d,c)})};function ra(a,b){this.c=a;this.a=b}\nra.prototype.load=function(a){function b(){if(f[\"__mti_fntLst\"+d]){var c=f[\"__mti_fntLst\"+d](),e=[],h;if(c)for(var l=0;l<c.length;l++){var k=c[l].fontfamily;void 0!=c[l].fontStyle&&void 0!=c[l].fontWeight?(h=c[l].fontStyle+c[l].fontWeight,e.push(new G(k,h))):e.push(new G(k))}a(e)}else setTimeout(function(){b()},50)}var c=this,d=c.a.projectId,e=c.a.version;if(d){var f=c.c.o;A(this.c,(c.a.api||\"https://fast.fonts.net/jsapi\")+\"/\"+d+\".js\"+(e?\"?v=\"+e:\"\"),function(e){e?a([]):(f[\"__MonotypeConfiguration__\"+\nd]=function(){return c.a},b())}).id=\"__MonotypeAPIScript__\"+d}else a([])};function sa(a,b){this.c=a;this.a=b}sa.prototype.load=function(a){var b,c,d=this.a.urls||[],e=this.a.families||[],f=this.a.testStrings||{},g=new B;b=0;for(c=d.length;b<c;b++)z(this.c,d[b],C(g));var m=[];b=0;for(c=e.length;b<c;b++)if(d=e[b].split(\":\"),d[1])for(var h=d[1].split(\",\"),l=0;l<h.length;l+=1)m.push(new G(d[0],h[l]));else m.push(new G(d[0]));E(g,function(){a(m,f)})};function ta(a,b){a?this.c=a:this.c=ua;this.a=[];this.f=[];this.g=b||\"\"}var ua=\"https://fonts.googleapis.com/css\";function va(a,b){for(var c=b.length,d=0;d<c;d++){var e=b[d].split(\":\");3==e.length&&a.f.push(e.pop());var f=\"\";2==e.length&&\"\"!=e[1]&&(f=\":\");a.a.push(e.join(f))}}\nfunction wa(a){if(0==a.a.length)throw Error(\"No fonts to load!\");if(-1!=a.c.indexOf(\"kit=\"))return a.c;for(var b=a.a.length,c=[],d=0;d<b;d++)c.push(a.a[d].replace(/ /g,\"+\"));b=a.c+\"?family=\"+c.join(\"%7C\");0<a.f.length&&(b+=\"&subset=\"+a.f.join(\",\"));0<a.g.length&&(b+=\"&text=\"+encodeURIComponent(a.g));return b};function ya(a){this.f=a;this.a=[];this.c={}}\nvar za={latin:\"BESbswy\",\"latin-ext\":\"\\u00e7\\u00f6\\u00fc\\u011f\\u015f\",cyrillic:\"\\u0439\\u044f\\u0416\",greek:\"\\u03b1\\u03b2\\u03a3\",khmer:\"\\u1780\\u1781\\u1782\",Hanuman:\"\\u1780\\u1781\\u1782\"},Aa={thin:\"1\",extralight:\"2\",\"extra-light\":\"2\",ultralight:\"2\",\"ultra-light\":\"2\",light:\"3\",regular:\"4\",book:\"4\",medium:\"5\",\"semi-bold\":\"6\",semibold:\"6\",\"demi-bold\":\"6\",demibold:\"6\",bold:\"7\",\"extra-bold\":\"8\",extrabold:\"8\",\"ultra-bold\":\"8\",ultrabold:\"8\",black:\"9\",heavy:\"9\",l:\"3\",r:\"4\",b:\"7\"},Ba={i:\"i\",italic:\"i\",n:\"n\",normal:\"n\"},\nCa=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;\nfunction Da(a){for(var b=a.f.length,c=0;c<b;c++){var d=a.f[c].split(\":\"),e=d[0].replace(/\\+/g,\" \"),f=[\"n4\"];if(2<=d.length){var g;var m=d[1];g=[];if(m)for(var m=m.split(\",\"),h=m.length,l=0;l<h;l++){var k;k=m[l];if(k.match(/^[\\w-]+$/)){var n=Ca.exec(k.toLowerCase());if(null==n)k=\"\";else{k=n[2];k=null==k||\"\"==k?\"n\":Ba[k];n=n[1];if(null==n||\"\"==n)n=\"4\";else var r=Aa[n],n=r?r:isNaN(n)?\"4\":n.substr(0,1);k=[k,n].join(\"\")}}else k=\"\";k&&g.push(k)}0<g.length&&(f=g);3==d.length&&(d=d[2],g=[],d=d?d.split(\",\"):\ng,0<d.length&&(d=za[d[0]])&&(a.c[e]=d))}a.c[e]||(d=za[e])&&(a.c[e]=d);for(d=0;d<f.length;d+=1)a.a.push(new G(e,f[d]))}};function Ea(a,b){this.c=a;this.a=b}var Fa={Arimo:!0,Cousine:!0,Tinos:!0};Ea.prototype.load=function(a){var b=new B,c=this.c,d=new ta(this.a.api,this.a.text),e=this.a.families;va(d,e);var f=new ya(e);Da(f);z(c,wa(d),C(b));E(b,function(){a(f.a,f.c,Fa)})};function Ga(a,b){this.c=a;this.a=b}Ga.prototype.load=function(a){var b=this.a.id,c=this.c.o;b?A(this.c,(this.a.api||\"https://use.typekit.net\")+\"/\"+b+\".js\",function(b){if(b)a([]);else if(c.Typekit&&c.Typekit.config&&c.Typekit.config.fn){b=c.Typekit.config.fn;for(var e=[],f=0;f<b.length;f+=2)for(var g=b[f],m=b[f+1],h=0;h<m.length;h++)e.push(new G(g,m[h]));try{c.Typekit.load({events:!1,classes:!1,async:!0})}catch(l){}a(e)}},2E3):a([])};function Ha(a,b){this.c=a;this.f=b;this.a=[]}Ha.prototype.load=function(a){var b=this.f.id,c=this.c.o,d=this;b?(c.__webfontfontdeckmodule__||(c.__webfontfontdeckmodule__={}),c.__webfontfontdeckmodule__[b]=function(b,c){for(var g=0,m=c.fonts.length;g<m;++g){var h=c.fonts[g];d.a.push(new G(h.name,ga(\"font-weight:\"+h.weight+\";font-style:\"+h.style)))}a(d.a)},A(this.c,(this.f.api||\"https://f.fontdeck.com/s/css/js/\")+ea(this.c)+\"/\"+b+\".js\",function(b){b&&a([])})):a([])};var Y=new oa(window);Y.a.c.custom=function(a,b){return new sa(b,a)};Y.a.c.fontdeck=function(a,b){return new Ha(b,a)};Y.a.c.monotype=function(a,b){return new ra(b,a)};Y.a.c.typekit=function(a,b){return new Ga(b,a)};Y.a.c.google=function(a,b){return new Ea(b,a)};var Z={load:p(Y.load,Y)};\"function\"===typeof define&&define.amd?define(function(){return Z}):\"undefined\"!==typeof module&&module.exports?module.exports=Z:(window.WebFont=Z,window.WebFontConfig&&Y.load(window.WebFontConfig));}());\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","var map = {\n\t\"./ct-addable-box.js\": 7705,\n\t\"./ct-background.js\": 8219,\n\t\"./ct-border.js\": 9847,\n\t\"./ct-box-shadow.js\": 2076,\n\t\"./ct-button.js\": 4056,\n\t\"./ct-checkboxes.js\": 3817,\n\t\"./ct-color-palettes-picker.js\": 9524,\n\t\"./ct-color-picker.js\": 4910,\n\t\"./ct-customizer-reset-options.js\": 7941,\n\t\"./ct-divider.js\": 5457,\n\t\"./ct-footer-builder.js\": 5186,\n\t\"./ct-header-builder.js\": 1829,\n\t\"./ct-image-picker.js\": 1650,\n\t\"./ct-image-uploader.js\": 7402,\n\t\"./ct-layers-mirror.js\": 7525,\n\t\"./ct-layers.js\": 3231,\n\t\"./ct-multi-image-uploader.js\": 7454,\n\t\"./ct-notification.js\": 3570,\n\t\"./ct-number.js\": 7873,\n\t\"./ct-panel.js\": 9999,\n\t\"./ct-radio.js\": 7129,\n\t\"./ct-ratio.js\": 7812,\n\t\"./ct-select.js\": 1744,\n\t\"./ct-slider.js\": 254,\n\t\"./ct-spacer.js\": 3480,\n\t\"./ct-spacing.js\": 4441,\n\t\"./ct-switch.js\": 5011,\n\t\"./ct-title.js\": 9697,\n\t\"./ct-typography.js\": 5839,\n\t\"./ct-visibility.js\": 9109,\n\t\"./ct-woocommerce-columns-and-rows.js\": 7475,\n\t\"./ct-woocommerce-ratio.js\": 4592,\n\t\"./date-time-picker.js\": 5502,\n\t\"./hidden.js\": 2242,\n\t\"./html.js\": 2616,\n\t\"./jsx.js\": 5200,\n\t\"./react-outside-click-handler.js\": 1511,\n\t\"./text.js\": 1252,\n\t\"./textarea.js\": 8670,\n\t\"./wp-editor.js\": 227\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1764;","module.exports = React;","module.exports = ReactDOM;","module.exports = ctEvents;","module.exports = jQuery;","module.exports = window._;","module.exports = window.wp.components;","module.exports = window.wp.element;","module.exports = window.wp.i18n;","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : 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  return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + \"b2841b7778b85d53b946\" + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = globalThis[\"blocksyJsonP\"] = globalThis[\"blocksyJsonP\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import {\n\tcreateElement,\n\tComponent,\n\tcreateRef,\n\tuseRef,\n\tuseCallback,\n\tuseEffect,\n\tuseState\n} from '@wordpress/element'\nimport OptionsPanel from './OptionsPanel.js'\nimport $ from 'jquery'\n\nimport ctEvents from 'ct-events'\n\nconst INITIAL_VALUE = '__INITIAL__'\n\nconst OptionsRoot = ({\n\tvalue,\n\toptions,\n\tinput_name,\n\tinput_id,\n\thasRevertButton\n}) => {\n\tconst [internalValue, setInternalValue] = useState(value)\n\n\tconst input = useRef()\n\n\tconst handleChange = useCallback(({ id, value, input: inputRef }) => {\n\t\tif (inputRef === input.current) {\n\t\t\tsetInternalValue(internalValue => ({\n\t\t\t\t...internalValue,\n\t\t\t\t[id]: value\n\t\t\t}))\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tctEvents.on('ct:options:trigger-change', handleChange)\n\n\t\treturn () => {\n\t\t\tctEvents.off('ct:options:trigger-change', handleChange)\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div className=\"ct-options-root\">\n\t\t\t<input\n\t\t\t\tvalue={JSON.stringify(\n\t\t\t\t\tArray.isArray(internalValue) ? {} : internalValue\n\t\t\t\t)}\n\t\t\t\tonChange={() => {}}\n\t\t\t\tname={input_name}\n\t\t\t\tid={input_id}\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tref={input}\n\t\t\t/>\n\n\t\t\t<OptionsPanel\n\t\t\t\thasRevertButton={hasRevertButton}\n\t\t\t\tonChange={(key, newValue) => {\n\t\t\t\t\tsetInternalValue(internalValue => ({\n\t\t\t\t\t\t...internalValue,\n\t\t\t\t\t\t[key]: newValue\n\t\t\t\t\t}))\n\t\t\t\t\t$(input.current).change()\n\t\t\t\t}}\n\t\t\t\tvalue={internalValue}\n\t\t\t\toptions={options}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport default OptionsRoot\n","import { createElement, render } from '@wordpress/element'\nimport OptionsRoot from './OptionsRoot.js'\nimport { getValueFromInput } from './helpers/get-value-from-input'\nimport $ from 'jquery'\n\nexport const initAllPanels = () =>\n\t[...document.querySelectorAll('.ct-options-panel')].map((singleTarget) => {\n\t\tif (singleTarget.closest('[id=\"available-widgets\"]')) {\n\t\t\treturn\n\t\t}\n\n\t\tif (singleTarget.ctHasOptions) return\n\t\tsingleTarget.ctHasOptions = true\n\n\t\t$(singleTarget).on('remove', () => setTimeout(() => initAllPanels()))\n\t\t$(singleTarget).on('remove', () => () => initAllPanels())\n\n\t\trender(\n\t\t\t<OptionsRoot\n\t\t\t\toptions={JSON.parse(\n\t\t\t\t\tsingleTarget.firstElementChild.dataset.ctOptions\n\t\t\t\t)}\n\t\t\t\tvalue={getValueFromInput(\n\t\t\t\t\tJSON.parse(\n\t\t\t\t\t\tsingleTarget.firstElementChild.dataset.ctOptions\n\t\t\t\t\t),\n\t\t\t\t\tJSON.parse(singleTarget.firstElementChild.value),\n\t\t\t\t\tnull,\n\t\t\t\t\tfalse\n\t\t\t\t)}\n\t\t\t\tinput_id={singleTarget.firstElementChild.id}\n\t\t\t\tinput_name={singleTarget.firstElementChild.name}\n\t\t\t\thasRevertButton={\n\t\t\t\t\tObject.keys(singleTarget.dataset).indexOf(\n\t\t\t\t\t\t'disableReverseButton'\n\t\t\t\t\t) === -1\n\t\t\t\t}\n\t\t\t/>,\n\t\t\tsingleTarget\n\t\t)\n\t})\n","import { createElement, render } from '@wordpress/element'\nimport OptionsRoot from '../options/OptionsRoot'\nimport { getValueFromInput } from '../options/helpers/get-value-from-input'\nimport $ from 'jquery'\nimport { __ } from 'ct-i18n'\n\nexport const initWooVariation = (variationWrapper) => {\n\tconst uploadImage = variationWrapper.querySelector('.upload_image')\n\n\tif (!uploadImage) {\n\t\treturn\n\t}\n\n\tconst div = document.createElement('p')\n\n\tdiv.classList.add('form-row')\n\tdiv.classList.add('form-row-full')\n\tdiv.classList.add('ct-variation-image-gallery')\n\n\tuploadImage.nextElementSibling.insertAdjacentElement('afterend', div)\n\n\tconst input = variationWrapper.querySelector(\n\t\t'[name*=\"blocksy_post_meta_options\"]'\n\t)\n\n\tif (!input) {\n\t\treturn\n\t}\n\n\tconst options = {\n\t\tgallery_source: {\n\t\t\tlabel: __('Variation Gallery Source', 'blocksy'),\n\t\t\ttype: 'ct-radio',\n\t\t\tvalue: 'default',\n\t\t\tdesign: 'inline',\n\t\t\tdivider: 'bottom',\n\t\t\tchoices: {\n\t\t\t\tdefault: __('Default', 'blocksy'),\n\t\t\t\tcustom: __('Custom', 'blocksy'),\n\t\t\t},\n\t\t},\n\n\t\tcondition: {\n\t\t\ttype: 'ct-condition',\n\t\t\tcondition: {\n\t\t\t\tgallery_source: 'custom',\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\timages: {\n\t\t\t\t\tlabel: __('Variation Image Gallery', 'blocksy'),\n\t\t\t\t\ttype: 'ct-multi-image-uploader',\n\t\t\t\t\tdesign: ({ value }) =>\n\t\t\t\t\t\tvalue.length === 0 ? 'inline' : 'block',\n\t\t\t\t\tvalue: [],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\trender(\n\t\t<OptionsRoot\n\t\t\toptions={options}\n\t\t\tvalue={getValueFromInput(\n\t\t\t\toptions,\n\t\t\t\tJSON.parse(input.value),\n\t\t\t\tnull,\n\t\t\t\tfalse\n\t\t\t)}\n\t\t\tinput_id={input.id}\n\t\t\tinput_name={input.name}\n\t\t\thasRevertButton={false}\n\t\t/>,\n\t\tdiv\n\t)\n}\n\nexport const initAllWooVariations = () => {\n\t;[\n\t\t...document.querySelectorAll(\n\t\t\t'.woocommerce_variations .woocommerce_variation'\n\t\t),\n\t].map((variationWrapper) => {\n\t\tif (variationWrapper.hasBlocksyOptions) {\n\t\t\treturn\n\t\t}\n\n\t\tvariationWrapper.hasBlocksyOptions = true\n\n\t\tinitWooVariation(variationWrapper)\n\t})\n}\n","import { __ } from 'ct-i18n'\nimport {\n\tuseRef,\n\tuseState,\n\tFragment,\n\tcreateElement,\n\tcreatePortal,\n\trender,\n} from '@wordpress/element'\n\nimport $ from 'jquery'\n\nimport OptionsPanel from '../options/OptionsPanel'\n\nimport { getValueFromInput } from '../options/helpers/get-value-from-input'\n\nimport deepEqual from 'deep-equal'\n\nconst TaxonomyRoot = ({ options, input_name, value }) => {\n\tconst [internalValue, setInternalValue] = useState(value)\n\tconst input = useRef()\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<input\n\t\t\t\tvalue={JSON.stringify(\n\t\t\t\t\tArray.isArray(internalValue) ? {} : internalValue\n\t\t\t\t)}\n\t\t\t\tonChange={() => {}}\n\t\t\t\tname={input_name}\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tref={input}\n\t\t\t/>\n\n\t\t\t{createPortal(\n\t\t\t\t<OptionsPanel\n\t\t\t\t\tvalue={internalValue}\n\t\t\t\t\toptions={{\n\t\t\t\t\t\taccent_color: options.accent_color,\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(key, newValue) => {\n\t\t\t\t\t\tsetInternalValue((internalValue) => ({\n\t\t\t\t\t\t\t...internalValue,\n\t\t\t\t\t\t\t[key]: newValue,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t$(input.current).change()\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\n\t\t\t\tdocument.querySelector('.term-blocksy-accent-color-wrap td')\n\t\t\t)}\n\n\t\t\t{createPortal(\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdisabled={deepEqual(\n\t\t\t\t\t\toptions.accent_color.value,\n\t\t\t\t\t\tinternalValue.accent_color\n\t\t\t\t\t)}\n\t\t\t\t\tclassName=\"ct-revert\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tsetInternalValue((internalValue) => ({\n\t\t\t\t\t\t\t...internalValue,\n\t\t\t\t\t\t\taccent_color: options.accent_color.value,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t$(input.current).change()\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\n\t\t\t\tdocument.querySelector(\n\t\t\t\t\t'.term-blocksy-accent-color-wrap th label'\n\t\t\t\t)\n\t\t\t)}\n\n\t\t\t{createPortal(\n\t\t\t\t<OptionsPanel\n\t\t\t\t\tvalue={internalValue}\n\t\t\t\t\toptions={{\n\t\t\t\t\t\timage: options.image,\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(key, newValue) => {\n\t\t\t\t\t\tsetInternalValue((internalValue) => ({\n\t\t\t\t\t\t\t...internalValue,\n\t\t\t\t\t\t\t[key]: newValue,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t$(input.current).change()\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\n\t\t\t\tdocument.querySelector('.term-blocksy-image-wrap td')\n\t\t\t)}\n\t\t</Fragment>\n\t)\n}\n\nexport const initTaxonomies = () => {\n\tconst maybeTaxonomyField = document.querySelector(\n\t\t'[name*=\"blocksy_taxonomy_meta_options\"]'\n\t)\n\n\tif (!maybeTaxonomyField) {\n\t\treturn\n\t}\n\n\tlet options = {\n\t\timage: {\n\t\t\tlabel: __('Transparent State Logo', 'blocksy'),\n\t\t\ttype: 'ct-image-uploader',\n\t\t\tvalue: '',\n\t\t\tattr: { 'data-type': 'large' },\n\t\t\tdesign: 'none',\n\t\t\temptyLabel: __('Select Image', 'blocksy'),\n\t\t},\n\n\t\taccent_color: {\n\t\t\tlabel: __('Site Title Color', 'blocksy'),\n\t\t\ttype: 'ct-color-picker',\n\n\t\t\tdesign: 'none',\n\n\t\t\tvalue: {\n\t\t\t\tdefault: {\n\t\t\t\t\tcolor: 'CT_CSS_SKIP_RULE',\n\t\t\t\t},\n\n\t\t\t\thover: {\n\t\t\t\t\tcolor: 'CT_CSS_SKIP_RULE',\n\t\t\t\t},\n\n\t\t\t\tbackground_initial: {\n\t\t\t\t\tcolor: 'CT_CSS_SKIP_RULE',\n\t\t\t\t},\n\n\t\t\t\tbackground_hover: {\n\t\t\t\t\tcolor: 'CT_CSS_SKIP_RULE',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tpickers: [\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Text Initial', 'blocksy'),\n\t\t\t\t\tid: 'default',\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Text Hover', 'blocksy'),\n\t\t\t\t\tid: 'hover',\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Background Initial', 'blocksy'),\n\t\t\t\t\tid: 'background_initial',\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Background Hover', 'blocksy'),\n\t\t\t\t\tid: 'background_hover',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t}\n\n\trender(\n\t\t<TaxonomyRoot\n\t\t\tinput_name={maybeTaxonomyField.name}\n\t\t\toptions={options}\n\t\t\tvalue={getValueFromInput(\n\t\t\t\toptions,\n\t\t\t\tJSON.parse(maybeTaxonomyField.value),\n\t\t\t\tnull,\n\t\t\t\tfalse\n\t\t\t)}\n\t\t/>,\n\t\tmaybeTaxonomyField.parentNode\n\t)\n}\n","import './public-path'\nimport $ from 'jquery'\nimport { initAllPanels } from './options/initPanels'\nimport { initWidget } from './backend/widgets'\n\nimport { initAllWooVariations } from './backend/woo-variation'\nimport { initTaxonomies } from './backend/taxonomies'\n\nif ($ && $.fn) {\n\t$(document).on('widget-added', (event, widget) => {\n\t\tinitWidget(widget[0])\n\t})\n\n\tinitAllWooVariations()\n\n\tsetTimeout(() => {\n\t\t$(document.body).on(\n\t\t\t'woocommerce_variations_added woocommerce_variations_loaded',\n\t\t\tfunction () {\n\t\t\t\tinitAllWooVariations()\n\t\t\t}\n\t\t)\n\t}, 1000)\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\tinitAllPanels()\n\tinitTaxonomies()\n\t;[\n\t\t...document.querySelectorAll('.notice-blocksy-plugin'),\n\t\t...document.querySelectorAll('[data-dismiss]'),\n\t].map((el) => import('./notification/main').then(({ mount }) => mount(el)))\n\n\tif ($) {\n\t\t$(document).on(\n\t\t\t'click',\n\t\t\t'[href*=\"technical_support\"][href*=\"ct-dashboard\"]',\n\t\t\t(e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\tlocation.href = 'https://creativethemes.com/blocksy/support'\n\t\t\t}\n\t\t)\n\t}\n})\n\nexport { default as Overlay } from './customizer/components/Overlay'\nexport { getValueFromInput } from './options/helpers/get-value-from-input'\nexport { default as OptionsPanel } from './options/OptionsPanel'\nexport { default as Panel, PanelMetaWrapper } from './options/options/ct-panel'\nexport { DeviceManagerProvider } from './customizer/components/useDeviceManager'\nexport { default as PanelLevel } from './options/components/PanelLevel'\nexport { default as Switch } from './options/options/ct-switch'\nexport { default as ImageUploader } from './options/options/ct-image-uploader'\nexport { default as Select } from './options/options/ct-select'\nexport { default as OutsideClickHandler } from './options/options/react-outside-click-handler'\n\nexport { Transition, animated } from 'react-spring/renderprops'\nexport { default as bezierEasing } from 'bezier-easing'\nexport { default as usePopoverMaker } from './options/helpers/usePopoverMaker'\n\nexport const onDocumentLoaded = (cb) => {\n\tif (/comp|inter|loaded/.test(document.readyState)) {\n\t\tcb()\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', cb, false)\n\t}\n}\n","import { initAllPanels } from '../options/initPanels'\n\nexport const initWidget = (widget) => {\n\tif (\n\t\twidget.querySelector('.ct-options-panel') &&\n\t\twidget.querySelector('.ct-options-panel').innerHTML.indexOf('__i__') >\n\t\t\t-1\n\t) {\n\t\tconst panel = widget.querySelector('.ct-options-panel')\n\n\t\tconst widgetNumber = widget.querySelector('input.multi_number').value\n\t\tpanel.innerHTML = panel.innerHTML.replace(/__i__|%i%/g, widgetNumber)\n\t}\n\n\tinitAllPanels()\n}\n"],"names":["inProgress","dataWebpackPrefix","$node","Symbol","for","getAnimated","owner","setAnimated","node","getPayload","Animated","constructor","this","payload","AnimatedValue","_value","super","done","elapsedTime","lastPosition","lastVelocity","v0","durationProgress","is","static","value","getValue","setValue","step","Math","round","reset","AnimatedString","_string","_toString","output","goal","TreeContext","dependencies","AnimatedObject","source","animated","values","key","isAnimated","_makePayload","Set","_addToPayload","Array","from","add","AnimatedArray","map","length","i","some","Boolean","makeAnimated","create","getAnimatedType","parentNode","_extends","Object","assign","target","arguments","prototype","hasOwnProperty","call","apply","withAnimated","Component","host","hasInstance","isReactComponent","forwardRef","givenProps","givenRef","instanceRef","useRef","ref","useCallback","current","updateRef","props","deps","style","createAnimatedStyle","getAnimatedState","forceUpdate","callback","instance","applyAnimatedValues","observer","PropsObserver","observerRef","dep","update","useEffect","usedProps","getComponentProps","eventObserved","event","type","cacheKey","createHost","components","_applyAnimatedValues","_createAnimatedStyle","_getComponentProps","hostConfig","displayName","getDisplayName","arg","name","callProp","args","matchProp","includes","resolveProp","prop","getDefaultProp","default","undefined","noopTransform","getDefaultProps","transform","keys","DEFAULT_PROPS","defaults","RESERVED_PROPS","config","to","loop","pause","cancel","reverse","immediate","delay","onProps","onStart","onChange","onPause","onResume","onRest","onResolve","items","trail","sort","expires","initial","enter","leave","children","onDestroyed","callId","parentId","inferTo","forward","count","getForwardProps","out","val","computeGoal","range","hasProps","_","isAsyncTo","detachRefs","ctrl","_ctrl$ref","delete","replaceRef","_ctrl$ref2","PI","tension","friction","mass","damping","easing","x","clamp","AnimationConfig","frequency","velocity","restVelocity","precision","progress","duration","bounce","decay","sanitizeConfig","isTensionConfig","emptyArray","Animation","changed","toValues","fromValues","scheduleProps","defaultProps","state","actions","Promise","resolve","reject","_props$cancel","timeout","paused","resumeQueue","resume","timeouts","time","delayed","pauseQueue","cancelId","start","err","getCombinedResult","results","result","cancelled","getCancelledResult","get","every","noop","getNoopResult","getFinishedResult","finished","runAsync","asyncTo","prevTo","promise","prevPromise","asyncId","preventBail","bail","bailPromise","bailIfEnded","bailSignal","bailResult","animate","arg1","arg2","BailSignal","skipAnimationSignal","SkipAniamtionSignal","stopAsync","animating","async","queue","stop","bind","all","then","item","t","clear","Error","isFrameValue","FrameValue","nextId$1","id","_priority","priority","_onPriorityChange","interpolate","toJSON","observerAdded","_attach","observerRemoved","_detach","_onChange","idle","parent","$P","hasAnimated","isAnimating","isPaused","setActiveBit","active","IS_ANIMATING","setPausedBit","SpringValue","animation","_state","_pendingCalls","_lastCallId","_lastToId","_memoizedDuration","isDelayed","advance","dt","anim","forEach","position","elapsed","e","exp","abs","min","bounceFactor","canBounce","isGrowing","isMoving","isBouncing","numSteps","ceil","n","p","Number","isNaN","console","warn","currVal","finalVal","_stop","set","_focus","_set","_update","finish","_onStart","push","_start","_prepareNode","_ref","isLoop","test","mergeActiveFn","sendEvent","isFrozen","checkFinished","_resume","_merge","nextProps","createLoopUpdate","hasToProp","hasFromProp","prevFrom","hasFromChanged","hasToChanged","hasAsyncTo","newConfig","defaultConfig","pow","mergeConfig","isAnimatable","nodeType","goalType","started","hasValueChanged","ACTIVE_EVENTS","oldNode","loopRet","overrides","createUpdate","findDefined","size","_target$animation$typ","_target$animation","_target$defaultProps$","_target$defaultProps","BATCHED_EVENTS","nextId","Controller","flush","springs","_flush","_initialProps","_lastAsyncId","_active","_changed","_started","_item","_events","Map","_onFrame","spring","each","prepareKeys","flushUpdate","flushUpdateQueue","iterator","handler","promises","getSprings","prepareSprings","createSpring","setSprings","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_excluded$3","SpringContext","inherited","useContext","ctx","Provider","init","_context","Consumer","SpringRef","_getProps","splice","index","TransitionPhase","nextKey","getKeys","prevTransitions","reused","find","phase","LEAVE","has","_excluded","Transition","data","propsFn","exitBeforeEnter","propsRef","propsConfig","useMemo","transitions","usedTransitions","_t$ctrl$ref","change","changes","expired","clearTimeout","expirationId","MOUNT","keyIndex","prevIndex","a","b","exitingTransitions","forceChange","prevPhase","propsDelay","ENTER","isLeave","UPDATE","_p","expiry","expiryMs","setTimeout","context","prevContext","hasContext","ind","findIndex","renderTransitions","render","elem","useTransition","Interpolation","calc","_get","_dt","oldValue","checkIdle","becomeIdle","inputs","max","reduce","highest","isIdle","self","createStringInterpolator","updateQueue","makeQueue","raf","fn","schedule","writeQueue","write","onStartQueue","onFrameQueue","onFrame","onFinishQueue","onFinish","ms","now","pendingCount","findTimeout","sync","batchedUpdates","throttle","lastArgs","queuedFn","throttled","nativeRaf","window","requestAnimationFrame","use","impl","performance","Date","catch","error","frameLoop","ts","prevTs","eachSafely","next","defineHidden","obj","defineProperty","writable","configurable","arr","isArray","fun","str","num","und","isEqual","eachProp","toArray","flushCalls","isSSR","navigator","userAgent","createStringInterpolator$1","colors$1","skipAnimation","willAdvance","globals","freeze","__proto__","colors","startQueue","currentFrame","prevFrame","flushStartQueue","startSafely","startUnsafely","other","nextFrame","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","NUMBER","PERCENTAGE","parts","join","rgb","RegExp","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","q","hslToRgb","h","s","l","r","g","parse255","int","parseInt","parse360","parseFloat","parse1","parsePercentage","colorToRgba","input","int32Color","color","match","exec","normalizeColor","createInterpolator","extrapolate","outputRange","inputRange","extrapolateLeft","extrapolateRight","findRange","inputMin","inputMax","outputMin","outputMax","Infinity","$get","$observers","hasFluidValue","getFluidValue","getFluidObservers","callFluidObservers","observers","callFluidObserver","FluidValue","setFluidGetter","setHidden","addFluidObserver","removeFluidObserver","numberRegex","colorRegex","unitRegex","rgbaRegex","cssVariableRegex","variableToRgba","token","fallback","parseCSSVariable","getComputedStyle","document","documentElement","getPropertyValue","trim","startsWith","namedColorRegex","rgbaRound","p1","p2","p3","p4","replace","keyframes","interpolators","_output$find","missingUnit","prefix","once","func","called","TypeError","warnInterpolate","deprecateInterpolate","warnDirectCall","deprecateDirectCall","isAnimatedString","useLayoutEffect","createElement","useForceUpdate","useState","isMounted","useIsMounted","random","useMemoOne","getResult","committed","prevCache","cache","prev","areInputsEqual","useOnce","effect","emptyDeps","usePrev","prevRef","_excluded$2","isCustomPropRE","dangerousStyleValue","isUnitlessNumber","attributeCache","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","acc","charAt","toUpperCase","substring","prefixKey","_excluded$1","domTransforms","pxTransforms","degTransforms","addUnit","unit","isValueIdentity","v","AnimatedStyle","y","z","transforms","xyz","deg","FluidTransform","identity","Globals","unstable_batchedUpdates","setAttribute","isFilterElement","nodeName","scrollTop","scrollLeft","attributes","names","hasAttribute","toLowerCase","textContent","setProperty","arrayMoveMutate","array","startIndex","arrayMove","slice","module","exports","mutate","opg","properties","defaultValue","property","split","shift","propertiesWithoutLast","pop","normalizeCondition","conditionDescriptor","any","matchValuesWithCondition","inferedValuesForContext","conditionsObject","maybeGetMatcher","matcher","valuesToCheck","singleOptionPath","maybeThat","properValue","cb","getAsInfered","path","wp_customizer_current_view","arrayIdsDescriptor","log","maybeValue","filter","toString","desktop","extractScalarValueFor","toMatch","tablet","mobile","el","tryToMatchValueWithOptionPath","_classCallCheck","Constructor","_possibleConstructorReturn","ReferenceError","cleanProps","initialState","getInitialState","refs","getRefs","didMount","didUpdate","willUnmount","getSnapshotBeforeUpdate","shouldUpdate","_objectWithoutProperties","_React$Component","_temp","_this","_len","_key","concat","_initialiseProps","subClass","superClass","enumerable","setPrototypeOf","_inherits","getArgs","setState","_setState","_forceUpdate","_refs","componentDidMount","shouldComponentUpdate","nextState","componentWillUnmount","componentDidUpdate","prevProps","prevState","snapshot","_props","_this2","container","body","containerNode","appendChild","removeChild","createPortal","wrapEvent","theirHandler","ourHandler","defaultPrevented","k","checkDialogStyles","contentWillUnmount","trap","deactivate","disposeAriaHider","FocusContext","React","createContext","DialogOverlay","isOpen","onDismiss","initialFocusRef","onClick","onKeyDown","overlayNode","contentNode","dialogNode","originalValues","rootNodes","querySelectorAll","attr","getAttribute","originalValue","removeAttribute","createAriaHider","createFocusTrap","initialFocus","fallbackFocus","escapeDeactivates","clickOutsideDeactivates","portalDidMount","stopPropagation","propTypes","DialogContent","contentRef","tabIndex","defaultIsVisible","isVisible","className","onCloseButtonClick","classList","isOptionEnabledFor","currentDevice","responsiveDescriptor","isOptionResponsiveFor","option","ignoreHidden","OptionComponent","getOptionFor","hiddenResponsive","responsive","getValueForDevice","device","setDevice","d","classnames","DeviceManagerStateContext","DeviceManagerActionsContext","useDeviceManagerState","currentView","useDeviceManagerActions","useDeviceManager","withTablet","setCurrentView","wp","customize","previewedDevice","listener","unbind","DeviceManagerProvider","store","nextSibling","activeComponent","Sortable","options","eventHandler","params","evt","nextElementSibling","sortable","remote","remoteItems","referenceNode","insertBefore","remoteOptions","group","pull","dataset","remove","originalEvent","SortableJS","destroy","tag","customItemsSeparator","getOriginalId","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","addEventListener","off","removeEventListener","matches","selector","msMatchesSelector","webkitMatchesSelector","getParentOrHost","closest","includeCTX","R_SPACE","toggleClass","css","defaultView","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","list","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","visible","parentSideVal","getChild","childNum","currentChild","display","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","includeSelf","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","_throttleTimeout","scrollBy","Polymer","$","jQuery","Zepto","dom","cloneNode","setRect","rect","unsetRect","expando","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","indexOfObject","animateAll","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","calculateRealTime","animationResetTimer","currentRect","translateX","translateY","animatingX","animatingY","forRepaintDummy","offsetWidth","repaint","plugins","initializeByDefault","PluginManager","mount","plugin","pluginEvent","eventName","eventCanceled","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","pullMode","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","float","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopImmediatePropagation","nearestEmptyInsertDetectEvent","nearest","ret","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_detectNearestEmptySortable","touches","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","disabled","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_getSwapDirection","vertical","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","idx","checked","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","offset","targetBoundingRect","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","inserted","ghostMatrix","relativeScrollOffset","dx","dy","c","cssMatrix","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","dragIndex","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","dropEffect","_globalDragOver","utils","extend","dst","nextTick","cancelNextTick","detectDirection","element","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","sens","scrollSensitivity","speed","scrollSpeed","scrollCustomFn","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","lastSwapEl","dragStart","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","insertMultiDragClones","elementsInserted","sortableIndex","removeMultiDragElements","multiDragElement","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","Swap","swapClass","dragOverValid","swap","prevSwapEl","n1","n2","i1","i2","isEqualNode","swapNodes","swapItem","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","showClone","hideClone","dragStartGlobal","multiDrag","dragOver","clonesInserted","insertMultiDragElements","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","dragMatrix","dragOverAnimationComplete","originalEvt","shiftKey","lastIndex","currentIndex","multiDragIndex","nullingGlobal","destroyGlobal","select","deselect","oldIndicies","newIndicies","clones","factory","CORE_OPTIONS_CONTEXT","require","hasCoreOptionModifier","DefaultOptionComponent","dynamicOptionTypes","ctEvents","optionWithDefault","onChangeFor","hasRevertButton","purpose","maybeGutenbergDevice","childComponentRef","useSelect","__experimentalGetPreviewDeviceType","getInitialDevice","setInnerDevice","ctEventsListener","dispatch","__experimentalSetPreviewDeviceType","markAsAutoFor","BeforeOptionContent","content","globalResponsiveValue","maybePromoteScalarValueIntoResponsive","valueWithResponsive","onChangeWithMobileBridge","triggerRefreshOnChange","previewer","refresh","switchDeviceOnChange","send","onChangeWithResponsiveBridge","scalarValue","responsiveValue","currentValue","__changed","renderingConfig","design","label","wrapperAttr","LabelToolbar","OptionMetaWrapper","ControlEnd","sectionClassName","MetaWrapper","OptionComponentWithoutDesign","Fragment","maybeLabel","getOptionLabelFor","maybeDesc","desc","maybeLink","link","actualDesignType","sectionAttr","dangerouslySetInnerHTML","__html","linkAttr","getActualOption","additionalWrapperAttr","optionClassName","optionAdditionalWrapperAttr","computeOptionValue","o","divider","disableRevertButton","deepEqual","getValueForRevert","handleOptionRevert","performRevert","skipResponsiveControls","disabledDeviceMessage","__","class","reducer","renderingChunk","parentValue","useReducer","conditionOption","global","condition","valueForCondition","values_source","perform_replace","conditionToWatch","res","singleReplace","Tabs","currentTab","filteredTabs","singleTab","title","groupOption","groupContents","SingleChoice","singleChoice","totalAmountofMatched","choices","previousPromise","nextChoice","optionId","enabled","meta_elements","Container","HasMetaCategoryButton","Condition","Group","LabeledGroup","renderOptions","SlotFillProvider","finalResult","localOptions","flattenOptions","__CT_KEYS_ORDER__","orderKey","chunksHolder","currentOptionDescriptor","lastChunk","GenericOptionType","newValue","onBlur","placeholder","keyCode","ctrlKey","valueForComputation","actualStep","cls","inactive","deepLinkLocation","getDeepLinkPanel","location","section","panel","expanded","expand","PanelContext","titlePrefix","isTransitioning","previousPanel","currentLevel","secondLevelTitlePrefix","secondLevelTitleLabel","panelsReducer","action","panelId","containerRef","parentContainerRef","useRefsAsWrappers","panelsState","panelsDispatch","panelsHelpers","isOpenFor","isTransitioningFor","open","close","stopTransitioning","getWrapperParent","openSecondLevel","getParentOptionsWrapper","capitalizeFirstLetter","String","approvedLabel","currentLabel","getFirstLevelOptions","hasInnerOptions","rest","currentOptions","currentOptionId","currentId","getValueFromInput","valueGetter","firstLevelOptions","currentValues","actualValue","maybeTransformUnorderedChoices","choice","nullifyTransforms","transformArr","parseTransform","det","contentRefProp","shouldCalculate","defaultHeight","refreshOnScroll","modalRef","ResizeObserver","observe","disconnect","yOffset","otherStyles","maybeWidthFlag","nextRect","popoverRect","refreshPopover","styles","popoverProps","grad","turn","rad","u","isFinite","m","string","object","N","M","H","j","parsed","isValid","brightness","isDark","isLight","toHex","toRgb","toRgbString","toHsl","toHslString","toHsv","w","saturate","desaturate","grayscale","lighten","darken","rotate","hue","alpha","parsedColor","colord","isNew","GradientPicker","ColorPicker","enableAlpha","onChangeComplete","hex","getNoColorPropFor","noColorTransparent","picker","wrapperProps","inline_modal","appendToBody","inheritValue","getValueForPicker","inherit","valueToCheck","arrowLeft","modal","wrapperLeft","firstElementChild","getLeftForEl","modalClassName","predefined","background","paletteColor1","paletteColor2","paletteColor3","paletteColor4","paletteColor5","paletteColor6","paletteColor7","paletteColor8","skipNoColorPill","resolveInherit","pickerToInheritFrom","maybeNextValue","pickers","maybeResult","currentVar","inherit_source","onPickingChange","innerRef","isPicking","usePopoverMaker","bezierEasing","skipModal","futureIsPicking","viewBox","LayerControls","SortableHandle","removeForId","addForId","toggleOptionsPanel","LayersContext","__id","template","onMouseDown","valueWithUniqueIds","singleItem","nanoid","currentlyPickedItem","isDragging","SingleItem","itemClass","SortableItem","SortableElement","SortableList","SortableContainer","disableDrag","localOnChange","computedValue","idToRemove","idToAdd","useDragHandle","distance","lockAxis","helperContainer","querySelector","onSortEnd","updateBeforeSortStart","shouldSkip","patternsList","singlePattern","background_pattern","ct_localizations","ct_customizer_localizations","static_public_url","skipArrow","patternColor","setOutsideClickFreezed","has_position_picker","emptyLabel","filledLabel","onFrameOpen","onFrameClose","background_image","view","repeat","background_repeat","auto","cover","contain","background_size","fixed","background_attachment","url","overlayColor","no","yes","hasOverlay","allGradients","gradient","slug","activeTabs","onMouseUp","background_type","image","backgroundColor","setIsOpen","outsideClickFreezed","backgroundWrapper","attachment_id","maybeConvertFromColorPickerTo","isInherit","has_no_color","isNoColor","default_inherit_color","no_color","useCapture","onOutsideClick","colorValue","secondColor","hOffsetRef","vOffsetRef","blurRef","spreadRef","hide_shadow_placement","onMouseDownCapture","nativeEvent","onMouseUpCapture","enable","h_offset","steps","v_offset","blur","spread","inset","setAnimationState","focusedComponent","setFocusedComponent","colorPicker","additionalRefs","text","orderedChoices","inline","choiceValue","allow_empty","renderBefore","currentPalette","palettes","current_palette","OptionsPanel","optionValue","finalValue","sprintf","palette","colorPalettesWrapper","setModalState","currentKey","maybeCurrentlyInValue","maybeCurrentValue","maybeColor","condition_source","newPicker","isShowing","setIsShowing","post","ajaxurl","wp_customize","nonce","customizer_reset_none","reload","Divider","DraggableItem","panelType","onRemove","renderItem","itemData","header_builder_data","builderValue","DragDropContext","allDynamicItems","allClonesAndOriginal","draggableId","hasPointers","propsForItem","displayWrapper","setIsDragging","setList","itemsOutput","onEnd","Bar","bar","maybeValues","footer","column","shallowCompare","ColumnsBuilder","prevResult","areEqual","memo","rows","builderValueDispatch","inlinedItemsFromBuilder","displayList","panelsActions","inlinedItemsFromAllViewsBuilder","currentItems","secondaryItems","secondary_items","allItems","aItemData","bItemData","localeCompare","itemOptions","itemName","itemInBuilder","PanelMetaWrapper","getValues","itemValue","Slot","fillProps","primaryItems","primaryItem","maybeRow","hasWidgetAreas","items_per_row","has_widget_areas","builderValueCollection","allSections","sections","panelLabel","footerOptions","footer_data","footer_options","settings","setCurrentTab","tab","panels","fills","builderReducer","updatedGlobalState","newSections","futureBuilderValue","__forced_static_footer__","fetchCurrentFooter","updateItemId","removeSectionIds","row","futureLength","removedItem","localItems","futureId","completeFutureId","current_section","lists","barId","copy","mode","__should_refresh__","__should_refresh_item__","builder","contentDocument","contentWindow","FooterBuilder","allBuilderSections","onBuilderValueChange","currentFooter","old","builderValueDispatchInternal","builderCollapsed","setBuilderCollapsed","newState","itemId","currentItem","_id","isItemAllowedIn","header","allowed_in","allowedRespected","exclusionRespected","excluded_from","beautyItem","placementName","placement","placements","placementsToRender","middle","offcanvas","builderValueWithView","hasOffcanvas","maybeBar","itemsOnlyWithTrigger","isSidebarRepresentationPresent","devices","builderSettings","itemsCount","headerOptions","header_data","header_options","__forced_static_header__","fetchCurrentHeader","futureBar","updater","currentHeader","__forced_dynamic_header__","futureItems","HeaderBuilder","tabletChoices","mobileChoices","deviceChoices","matchingChoices","conditions","normalizedValue","ImageUploader","flex_width","flex_height","attachment_info","attachmentInfo","sizes","full","inline_value","getUrlFor","attachment","frame","first","logo","skipCrop","setImageFromAttachment","croppedImage","force","getAttachmentId","media","fetch","JSON","parse","stringify","detachListener","updateAttachmentInfo","initFrame","states","controller","Library","library","query","mediaType","multiple","date","suggestedWidth","suggestedHeight","onSelect","onCropped","onSkippedCrop","openFrame","calculateImageSelectOptions","x1","y1","imgSelectOptions","control","flexWidth","flexHeight","realWidth","realHeight","xInit","yInit","ratio","xImg","yImg","handles","persistent","imageWidth","imageHeight","minWidth","minHeight","x2","y2","aspectRatio","maxWidth","maxHeight","mustBeCropped","flexW","flexH","dstW","dstH","imgW","imgH","alt","FocalPointPicker","dimensions","drag_position","LayersMirror","wholeLayers","layers","ourLayers","field","computedOptions","notAddedItems","itemsThatAreNotAdded","setCurrentItem","addCurrentlySelectedItem","search","selectOption","itemIndex","hasOptions","options_condition","itemsOfType","relativeIndex","disableHiding","manageable","totalItems","idForSync","ALLOWED_MEDIA_TYPES","MultiImageUploader","mediaUtils","MediaUpload","gallery","allowedTypes","Notification","parsedValue","can_safely_parse","selfPanelId","wrapper","h3","innerText","isEnabled","switch","PanelContainer","Panel","behavior","switchBehavior","RadioInput","DefaultRadio","singleChoiceProps","renderContent","Ratio","isForcedReversed","setIsReversed","hasOriginalRatio","preview_width_key","currentModalTab","normal_ratios","reversed_ratios","isReversed","inlineRatioView","reversed","second","first_component","second_component","frameElement","__assign","idCounter","cbToCb","scrollIntoView","menuNode","scrollMode","block","boundary","skipOverflowHiddenElements","parentElement","visualViewport","scrollX","pageXOffset","scrollY","pageYOffset","W","E","V","I","C","T","B","D","O","R","X","Y","L","S","borderTopWidth","A","borderBottomWidth","F","G","J","K","offsetHeight","P","isOrContainsNode","environment","Node","debounce","timeoutId","callAllEventHandlers","_len2","fns","_key2","_len3","_key3","preventDownshiftDefault","handleRefs","_len4","_key4","getA11yStatusMessage$1","_ref2","resultCount","previousResultCount","unwrapArray","stateKeys","pickState","isControlledProp","normalizeArrowKey","getNextWrappingIndex","moveAmount","baseIndex","itemCount","getItemNodeFromIndex","circular","itemsLastIndex","nonDisabledNewIndex","getNextNonDisabledIndex","currentElementNode","_index","targetWithinDownshift","downshiftElements","checkActiveElement","contextNode","activeElement","cleanupStatus","documentProp","getStatusDiv","setStatus","status","div","statusDiv","getElementById","border","clip","margin","overflow","padding","stateChangeTypes$3","unknown","mouseUp","itemMouseEnter","keyDownArrowUp","keyDownArrowDown","keyDownEscape","keyDownEnter","keyDownHome","keyDownEnd","clickItem","blurInput","changeInput","keyDownSpaceButton","clickButton","blurButton","controlledPropUpdatedSelectedItem","touchEnd","_excluded$4","_excluded2$3","_excluded3$2","_excluded4$1","_excluded5$1","Downshift$1","Downshift","_Component","menuId","labelId","inputId","getItemId","timeoutIds","internalSetTimeout","setItemCount","unsetItemCount","setHighlightedIndex","highlightedIndex","otherStateToSet","defaultHighlightedIndex","internalSetState","clearSelection","selectedItem","inputValue","defaultIsOpen","selectItem","itemToString","selectItemAtIndex","selectHighlightedItem","getState","stateToSet","isItemSelected","onChangeArg","onStateChangeArg","isStateToSetFunction","onInputValueChange","getStateAndHelpers","newStateToSet","stateReducer","nextFullState","onStateChange","onUserAction","rootRef","_rootNode","getRootProps","_temp2","_extends2","_ref$refKey","refKey","_ref2$suppressRefErro","suppressRefError","role","keyDownHandlers","ArrowDown","amount","moveHighlightedIndex","getItemCount","nextHighlightedIndex","ArrowUp","_this3","Enter","which","_this$getState2","itemNode","Escape","buttonKeyDownHandlers","toggleMenu","inputKeyDownHandlers","Home","_this4","newHighlightedIndex","End","_this5","getToggleButtonProps","_temp3","_ref3","onPress","onKeyUp","enabledEventHandlers","buttonHandleClick","buttonHandleKeyDown","buttonHandleKeyUp","buttonHandleBlur","eventHandlers","focus","blurTarget","isMouseDown","getLabelProps","htmlFor","getInputProps","_temp4","_ref4","onInput","onChangeText","_eventHandlers","_this$getState6","inputHandleChange","inputHandleKeyDown","inputHandleBlur","autoComplete","downshiftButtonIsActive","toggle","menuRef","_menuNode","getMenuProps","_temp5","_temp6","_extends3","_ref5","_ref5$refKey","_ref6$suppressRefErro","getItemProps","_temp7","_enabledEventHandlers","_ref7","onMouseMove","_ref7$item","customClickHandler","avoidScrolling","clearItems","_ref8","_ref9","_this$getState7","openMenu","closeMenu","updateStatus","getA11yStatusMessage","highlightedItem","_this$props","_this$props$initialHi","initialHighlightedIndex","_highlightedIndex","_this$props$initialIs","initialIsOpen","_isOpen","_this$props$initialIn","initialInputValue","_inputValue","_this$props$initialSe","initialSelectedItem","_selectedItem","_proto","internalClearTimeouts","stateToMerge","scrollHighlightedItemIntoView","_this6","_this$getState9","_this7","onOuterClick","onTouchStart","isTouchMove","onTouchMove","onTouchEnd","contextWithinDownshift","cleanup","shouldScroll","currentHighlightedIndex","prevHighlightedIndex","selectedItemChanged","isDOMElement","cloneElement","getElementProps","prevItem","stateChangeTypes","getA11yMessage","defaultProps$3","getA11ySelectionMessage","selectionParameters","itemToStringLocal","circularNavigation","_a","searchPlaceholder","defaultToFirstItem","inputClassName","selectInputStart","renderItemFor","inputRef","tempState","setTempState","potentialValue","maybeSelectedItem","dropdown","selected","popover","popoverTop","itemTop","readOnly","decimalPlaces","multiplier","rounded","EPSILON","UnitsList","is_open","toggleOpen","currentUnit","getNumericValue","getAllowedDecimalPlaces","forced_current_unit","setForcedCurrentUnit","futureUnitDescriptor","units","numericValue","pickUnit","Slider","is_dragging","is_empty_input","createRef","properUnit","decimals","getCurrentUnit","defaultUnit","computedUnit","forPosition","defaultPosition","getMin","getMax","computeAndSendNewValue","detachEvents","isCustomValueInput","clampMax","pageX","elLeftOffset","linearScale","attachEvents","handleMove","handleUp","getLeftValue","hasUnitsList","maybeUnit","beforeOption","onFocus","handleFocus","handleChange","pageY","skipInput","handleBlur","withDefault","Spacer","getLinkedLeader","linked","side","futureValue","inputAttr","isActive","Switch","alternateValueFor","Title","variation","fontFamilyToCSSFamily","family","humanizeVariations","n3","i3","n4","i4","n5","i5","n6","i6","n7","i7","n8","i8","n9","i9","Default","familyForDisplay","$1","humanizeFontSource","system","typekit","file","google","safeIsNaN","newInputs","lastInputs","resultFn","lastThis","lastResult","calledOnce","newArgs","_i","cancelTimeout","timeoutID","cancelAnimationFrame","cachedRTLResult","getRTLOffsetType","recalculate","outerDiv","outerStyle","innerDiv","innerStyle","defaultItemKey$1","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","List","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","onScroll","_getItemStyle","itemSize","layout","itemStyleCache","_getItemStyleCache","_offset","isHorizontal","isRtl","offsetHorizontal","___","_onScrollHorizontal","_event$currentTarget","currentTarget","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","_outerRefSetter","outerRef","_resetIsScrolling","tick","getDerivedStateFromProps","validateSharedProps$1","scrollTo","scrollToItem","align","_this$props2","_callPropsCallbacks","_this$props3","_this$state","_this$props4","innerElementType","innerTagName","_this$props4$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","stopIndex","estimatedTotalSize","WebkitOverflowScrolling","willChange","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props5","overscanCount","_this$state3","overscanBackward","overscanForward","PureComponent","FixedSizeList","lastItemOffset","maxOffset","minOffset","middleOffset","_ref6","numVisibleItems","classCallCheck","createClass","defineProperties","descriptor","protoProps","staticProps","possibleConstructorReturn","windowObject","cancelFrame","requestFrame","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","mozRequestAnimationFrame","webkitRequestAnimationFrame","_arr","_n","_d","_e","_s","sliceIterator","slicedToArray","animationFrameID","AutoSizer","_React$PureComponent","getPrototypeOf","defaultWidth","_onResize","disableHeight","disableWidth","onResize","_parentNode","_height","_width","_style","paddingTop","paddingBottom","newHeight","newWidth","_setRef","autoSizer","_autoSizer","inherits","HTMLElement","_detectElementResize","animationKeyframes","animationName","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","attachEvent","triggers","__resizeTriggers__","contract","expandChild","__resizeLast__","__resizeRAF__","__resizeListeners__","keyframeprefix","domPrefixes","startEvents","elm","addResizeListener","doc","elementStyle","head","styleSheet","createTextNode","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","detachEvent","createDetectElementResize","childParams","bailoutOnChildren","loadedFonts","SingleFont","linearFontsList","onPickFamily","variable","fontFamily","typographyList","searchTerm","listRef","scrollTimer","setScrollTimer","startingPage","font_families","googleFonts","typekitFonts","WebFontLoader","families","kit","classes","loadGoogleFonts","selectedFontFamily","font_family","fonts_list","single_font_source","findSourceTypeSettingsFor","findSelectedFontFamily","all_variations","sizeRef","typography_responsive","variant","capitalize","uppercase","underline","initialView","previousView","setInititialView","confirmationRef","isConfirmingGdpr","setIsConfirmingGdpr","shouldDismiss","setShouldDismiss","setTypographyList","isDefault","variations","getDefaultFonts","isSearch","setIsSearch","setSearchTerm","inputEl","sizeEl","currentList","currentSource","needle","haystack","hlen","nlen","outer","nch","fuzzysearch","FormData","append","response","method","success","json","fonts","fetchFontsList","pickFontFamily","autoFocus","transition","dismissed_google_fonts_notice","Overlay","points","currentViewCache","setCurrentViewCache","typographyWrapper","newView","fontFamilyRef","fontSizeRef","fontWeightRef","dotsRef","futureRef","visualFontSize","currentFontSizeUnit","InlineVisibility","VisibilityModal","Visibility","WooColumnsAndRows","columns_id","rows_id","woocommerce_catalog_columns","woocommerce_catalog_rows","rowsValue","WooCommerceRatio","woocommerce_thumbnail_cropping_custom_width","woocommerce_thumbnail_cropping_custom_height","isCustom","__experimentalGetSettings","is12HourTime","formats","DateTimePicker","currentDate","is12Hour","Hidden","html","OutsideClickHandler","childNode","isInside","currentRef","checkIsInside","removeMouseUp","addMouseDownEventListener","UNSAFE_componentWillReceiveProps","prevDisabled","removeEventListeners","removeMouseDown","setChildNodeRef","field_attr","select_on_focus","editorId","md5","correctEditor","oldEditor","editor","getContent","initialize","quicktags","mediaButtons","tinymce","toolbar1","toolbar2","style_formats_merge","style_formats","editors","__webpack_public_path__","public_url","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","calcBezier","aT","getSlope","LinearEasing","mX1","mY1","mX2","mY2","sampleValues","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","getTForX","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","bytes","decodeURIComponent","escape","fromCharCode","hasOwn","classNames","argType","inner","base64map","crypt","rotl","rotr","endian","randomBytes","bytesToWords","words","wordsToBytes","bytesToHex","hexToBytes","bytesToBase64","base64","triplet","base64ToBytes","imod4","isResponsive","objectKeys","isArguments","isRegex","flags","isDate","isUndefinedOrNull","isBuffer","actual","expected","opts","strict","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","objEquiv","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicate","predicates","getOwnPropertySymbols","tabbable","xtend","listeningFocusTrap","userOptions","returnFocusOnDeactivate","firstTabbableNode","lastTabbableNode","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","activate","activateOptions","updateTabbableNodes","onActivate","addListeners","removeListeners","unpause","deactivateOptions","onDeactivate","returnFocus","tryFocus","getInitialFocusNode","checkFocusIn","checkPointerDown","checkClick","checkKey","getNodeForOption","optionName","isFocusable","Document","isEscapeEvent","isTabEvent","checkTab","tabbableNodes","isSelectableInput","ERROR_MESSAGE","funcType","that","bound","binder","boundLength","boundArgs","Function","Empty","implementation","functionsHaveNames","gOPD","getOwnPropertyDescriptor","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURI","encodeURI","eval","EvalError","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Proxy","RangeError","Reflect","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakRef","WeakSet","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","number","quote","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","toStringTag","format","argIndex","framesToPop","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","readFloatLE","isSlowBuffer","_isBuffer","getDay","tryDateObject","$exec","isRegexMarker","badStringifier","throwRegexMarker","valueOf","toPrimitive","message","encoding","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","crypto","msCrypto","getRandomValues","numberIsNaN","define","getPolyfill","shim","polyfill","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isObject","isFunction","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","_slicedToArray","_defineProperty","_objectSpread","ownKeys","_defineProperties","_createClass","_typeof","assertThisInitialized","_getPrototypeOf","Manager","collection","getIndex","sortableInfo","sortByIndex","omit","keysToOmit","events","end","move","vendorPrefix","pre","OLink","setInlineStyles","setTranslate3d","translate","setTransitionDuration","limit","getPixelValue","stringValue","getElementMargin","marginBottom","marginTop","provideDisplayName","Component$$1","getScrollAdjustedBoundingClientRect","scrollDelta","boundingClientRect","getPosition","isTouchEvent","getEdgeOffset","nodeOffset","getTargetIndex","getLockPixelOffset","lockOffset","offsetX","offsetY","getLockPixelOffsets","offsets","_offsets","minLockOffset","maxLockOffset","getScrollingParent","computedStyle","overflowRegex","isScrollable","getContainerGridGap","gridColumnGap","gridRowGap","NodeType","fields","clonedNode","iter","getContext","drawImage","sortableHandle","WrappedComponent","withRef","WithSortableHandle","findDOMNode","wrappedInstance","isSortableHandle","AutoScroller","onScrollCallback","interval","minTranslate","maxTranslate","_this$container","isTop","isBottom","isLeft","isRight","isAutoScrolling","disableAutoscroll","getContainer","getHelperDimensions","helperClass","hideSortableGhost","keyboardSortingTransitionDuration","lockToContainerEdges","onSortMove","onSortOver","onSortStart","pressDelay","pressThreshold","keyCodes","lift","up","down","shouldCancelStart","transitionDuration","useWindowAsScrollContainer","defaultKeyCodes","contentEditable","omittedProps","_finallyRethrows","finalizer","sortableContainer","WithSortableContainer","touched","nodeIsChild","sorting","_node$sortableInfo","manager","handlePress","pressTimer","_awaitingUpdateBeforeSortStart","delta","combinedDelta","cancelTimer","getActive","_node","gridGap","containerBoundingRect","scrollContainer","_getHelperDimensions","_collection","marginOffset","_axis","offsetEdge","initialOffset","_isKeySorting","initialScroll","initialWindowScroll","helper","boxSizing","_hideSortableGhost","sortableGhost","visibility","_useWindowAsScrollContainer","containerTop","containerLeft","containerWidth","containerBottom","containerRight","_helperClass","listenerNode","handleKeyEnd","handleKeyDown","handleSortMove","handleSortEnd","sortingIndex","_onSortStart","isKeySorting","nodes","getOrderedRefs","keyMove","_temp8","_temp9","_wasThrown","_result","updateHelperPosition","animateNodes","autoscroll","_this$manager","_node2","edgeOffset","autoScroller","_this$props5$keyCodes","isValidSortingTarget","keyLift","keyDrop","_node$sortableInfo2","initialFocusedNode","targetIndex","targetNode","containerScrollDelta","targetBoundingClientRect","targetTranslate","targetPosition","shouldAdjustForSize","sizeAdjustment","ignoreTransition","handleEnd","handleStart","onAutoScroll","_this$props6","_this$props6$keyboard","_getLockPixelOffsets2","_this$props7","windowScrollDelta","sortingOffset","_node3","mustShiftBackward","mustShiftForward","nextNode","prevNode","getWrappedInstance","propTypes$1","omittedProps$1","sortableElement","WithSortableElement","register","unregister","_interopDefault","ex","React__default","ReactDOM","bugfixes","interpolation","defaultElement","colorNames","injectApplyAnimatedValues","injectColorNames","injectBugfixes","injectInterpolation","injectDefaultElement","injectCreateAnimatedStyle","attach","detach","getAnimatedValue","addChild","getChildren","AnimatedWithChildren","AnimatedArrayWithChildren","AnimatedObjectWithChildren","stringShapeRegex","colorNamesRegex","AnimatedInterpolation","parents","_config","_arg","updateConfig","findAnimatedStyles","updateStyles","animatedStyles","updateValue","startPosition","lastTime","animatedStyle","prepare","shallowEqual","getValues$1","interpolateTo","native","inject","destroyed","autoStart","convertToAnimatedValue","convertValues","allProps","entries","handleRef","check","isCustomProperty","rangeValue","outputRanges","interpolations","elementStyles","cs","paddingX","paddingY","borderX","borderY","convert","overwrite","styleName","styleValue","dashCase","controllers","isDone","noChange","configIdx","configs","endOfAnimation","valIdx","animatedValues","initialVelocity","startTime","isOvershooting","isVelocity","isDisplacement","animatedProps","onUpdate","debouncedOnEnd","removeController","dependents","hasChanged","merged","animations","_ref$from","_ref$to","_ref$config","_ref$delay","entry","isNumber","fromValue","toValue","toConfig","interpolation$$1","AnimatedProps","createAnimatedComponent","AnimatedComponent","propsAnimated","attachProps","setNativeProps","oldPropsAnimated","_this$propsAnimated$g","Spring","lastProps","propsChanged","internal","didInject","wasMounted","mounted","afterInject","injectProps","Trail","instances","hook","_children","_this$props$from","DEFAULT","KeyframesImpl","guid","running","previous","localId","slots","slot","primitive","_onRest","Keyframes","destroyItem","deleted","_get$trail","unique","_get2","_keys","_items","currentKeys","currentSet","nextSet","added","removed","originalKey","updated","pos","extendedAnimated","$Object","hasIndices","ignoreCase","multiline","dotAll","unicode","sticky","flagsBound","calls","TypeErr","regex","proto","domain","candidateSelectors","candidateSelector","Element","candidate","candidateTabindex","regularTabbables","orderedTabbables","untouchabilityChecker","UntouchabilityChecker","candidates","includeContainer","unshift","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","sortOrderedTabbables","isNodeMatchingSelectorFocusable","isInput","isRadio","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isHiddenInput","isUntouchable","isTabbable","focusableCandidateSelector","tabindexAttr","elementDocument","hasDisplayNone","nodeComputedStyle","ELEMENT_NODE","cached","ba","ca","da","FontFace","rel","onload","onerror","onreadystatechange","readyState","ga","ha","ja","Q","load","fa","race","la","U","serif","ma","na","oa","qa","xa","vendor","ra","sa","ta","ua","ia","pa","fontfamily","fontStyle","projectId","api","urls","testStrings","ya","za","latin","cyrillic","greek","khmer","Hanuman","Aa","thin","extralight","ultralight","light","regular","book","medium","semibold","demibold","bold","extrabold","ultrabold","heavy","Ba","italic","normal","Ca","Ea","Fa","Arimo","Cousine","Tinos","Ga","Ha","va","Da","wa","Typekit","__webfontfontdeckmodule__","weight","hostname","ea","custom","fontdeck","monotype","Z","webpackContext","req","webpackContextResolve","__webpack_require__","code","i18n","_assertThisInitialized","_inheritsLoose","_setPrototypeOf","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","chunkId","globalThis","script","needAttach","scripts","charset","nc","onScriptComplete","doneFns","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","input_name","input_id","internalValue","setInternalValue","initAllPanels","singleTarget","ctHasOptions","ctOptions","initAllWooVariations","variationWrapper","hasBlocksyOptions","uploadImage","insertAdjacentElement","gallery_source","images","initWooVariation","TaxonomyRoot","accent_color","widget","innerHTML","widgetNumber","initWidget","maybeTaxonomyField","hover","background_initial","background_hover","initTaxonomies","onDocumentLoaded"],"sourceRoot":""}