File: /sites/nuofama.com/wp-content/themes/blocksy/static/bundle/customizer-controls.js.map
{"version":3,"file":"customizer-controls.js","mappings":"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","sources":["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/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/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/customizer/preview-events.js","webpack://blocksyOptions/./static/js/customizer/public-path.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/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/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/./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/customizer-sync-helpers/dist/simplified.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/lodash/_DataView.js","webpack://blocksyOptions/./node_modules/lodash/_Hash.js","webpack://blocksyOptions/./node_modules/lodash/_LazyWrapper.js","webpack://blocksyOptions/./node_modules/lodash/_ListCache.js","webpack://blocksyOptions/./node_modules/lodash/_LodashWrapper.js","webpack://blocksyOptions/./node_modules/lodash/_Map.js","webpack://blocksyOptions/./node_modules/lodash/_MapCache.js","webpack://blocksyOptions/./node_modules/lodash/_Promise.js","webpack://blocksyOptions/./node_modules/lodash/_Set.js","webpack://blocksyOptions/./node_modules/lodash/_SetCache.js","webpack://blocksyOptions/./node_modules/lodash/_Stack.js","webpack://blocksyOptions/./node_modules/lodash/_Symbol.js","webpack://blocksyOptions/./node_modules/lodash/_Uint8Array.js","webpack://blocksyOptions/./node_modules/lodash/_WeakMap.js","webpack://blocksyOptions/./node_modules/lodash/_apply.js","webpack://blocksyOptions/./node_modules/lodash/_arrayEach.js","webpack://blocksyOptions/./node_modules/lodash/_arrayFilter.js","webpack://blocksyOptions/./node_modules/lodash/_arrayIncludes.js","webpack://blocksyOptions/./node_modules/lodash/_arrayIncludesWith.js","webpack://blocksyOptions/./node_modules/lodash/_arrayLikeKeys.js","webpack://blocksyOptions/./node_modules/lodash/_arrayMap.js","webpack://blocksyOptions/./node_modules/lodash/_arrayPush.js","webpack://blocksyOptions/./node_modules/lodash/_arraySome.js","webpack://blocksyOptions/./node_modules/lodash/_assignValue.js","webpack://blocksyOptions/./node_modules/lodash/_assocIndexOf.js","webpack://blocksyOptions/./node_modules/lodash/_baseAssign.js","webpack://blocksyOptions/./node_modules/lodash/_baseAssignIn.js","webpack://blocksyOptions/./node_modules/lodash/_baseAssignValue.js","webpack://blocksyOptions/./node_modules/lodash/_baseClone.js","webpack://blocksyOptions/./node_modules/lodash/_baseCreate.js","webpack://blocksyOptions/./node_modules/lodash/_baseDifference.js","webpack://blocksyOptions/./node_modules/lodash/_baseFindIndex.js","webpack://blocksyOptions/./node_modules/lodash/_baseFlatten.js","webpack://blocksyOptions/./node_modules/lodash/_baseGet.js","webpack://blocksyOptions/./node_modules/lodash/_baseGetAllKeys.js","webpack://blocksyOptions/./node_modules/lodash/_baseGetTag.js","webpack://blocksyOptions/./node_modules/lodash/_baseIndexOf.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsArguments.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsEqual.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsEqualDeep.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsMap.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsNaN.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsNative.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsSet.js","webpack://blocksyOptions/./node_modules/lodash/_baseIsTypedArray.js","webpack://blocksyOptions/./node_modules/lodash/_baseKeys.js","webpack://blocksyOptions/./node_modules/lodash/_baseKeysIn.js","webpack://blocksyOptions/./node_modules/lodash/_baseLodash.js","webpack://blocksyOptions/./node_modules/lodash/_baseRest.js","webpack://blocksyOptions/./node_modules/lodash/_baseSetToString.js","webpack://blocksyOptions/./node_modules/lodash/_baseSlice.js","webpack://blocksyOptions/./node_modules/lodash/_baseTimes.js","webpack://blocksyOptions/./node_modules/lodash/_baseToString.js","webpack://blocksyOptions/./node_modules/lodash/_baseUnary.js","webpack://blocksyOptions/./node_modules/lodash/_baseUnset.js","webpack://blocksyOptions/./node_modules/lodash/_cacheHas.js","webpack://blocksyOptions/./node_modules/lodash/_castPath.js","webpack://blocksyOptions/./node_modules/lodash/_cloneArrayBuffer.js","webpack://blocksyOptions/./node_modules/lodash/_cloneBuffer.js","webpack://blocksyOptions/./node_modules/lodash/_cloneDataView.js","webpack://blocksyOptions/./node_modules/lodash/_cloneRegExp.js","webpack://blocksyOptions/./node_modules/lodash/_cloneSymbol.js","webpack://blocksyOptions/./node_modules/lodash/_cloneTypedArray.js","webpack://blocksyOptions/./node_modules/lodash/_copyArray.js","webpack://blocksyOptions/./node_modules/lodash/_copyObject.js","webpack://blocksyOptions/./node_modules/lodash/_copySymbols.js","webpack://blocksyOptions/./node_modules/lodash/_copySymbolsIn.js","webpack://blocksyOptions/./node_modules/lodash/_coreJsData.js","webpack://blocksyOptions/./node_modules/lodash/_createFlow.js","webpack://blocksyOptions/./node_modules/lodash/_customOmitClone.js","webpack://blocksyOptions/./node_modules/lodash/_defineProperty.js","webpack://blocksyOptions/./node_modules/lodash/_equalArrays.js","webpack://blocksyOptions/./node_modules/lodash/_equalByTag.js","webpack://blocksyOptions/./node_modules/lodash/_equalObjects.js","webpack://blocksyOptions/./node_modules/lodash/_flatRest.js","webpack://blocksyOptions/./node_modules/lodash/_freeGlobal.js","webpack://blocksyOptions/./node_modules/lodash/_getAllKeys.js","webpack://blocksyOptions/./node_modules/lodash/_getAllKeysIn.js","webpack://blocksyOptions/./node_modules/lodash/_getData.js","webpack://blocksyOptions/./node_modules/lodash/_getFuncName.js","webpack://blocksyOptions/./node_modules/lodash/_getMapData.js","webpack://blocksyOptions/./node_modules/lodash/_getNative.js","webpack://blocksyOptions/./node_modules/lodash/_getPrototype.js","webpack://blocksyOptions/./node_modules/lodash/_getRawTag.js","webpack://blocksyOptions/./node_modules/lodash/_getSymbols.js","webpack://blocksyOptions/./node_modules/lodash/_getSymbolsIn.js","webpack://blocksyOptions/./node_modules/lodash/_getTag.js","webpack://blocksyOptions/./node_modules/lodash/_getValue.js","webpack://blocksyOptions/./node_modules/lodash/_hashClear.js","webpack://blocksyOptions/./node_modules/lodash/_hashDelete.js","webpack://blocksyOptions/./node_modules/lodash/_hashGet.js","webpack://blocksyOptions/./node_modules/lodash/_hashHas.js","webpack://blocksyOptions/./node_modules/lodash/_hashSet.js","webpack://blocksyOptions/./node_modules/lodash/_initCloneArray.js","webpack://blocksyOptions/./node_modules/lodash/_initCloneByTag.js","webpack://blocksyOptions/./node_modules/lodash/_initCloneObject.js","webpack://blocksyOptions/./node_modules/lodash/_isFlattenable.js","webpack://blocksyOptions/./node_modules/lodash/_isIndex.js","webpack://blocksyOptions/./node_modules/lodash/_isKey.js","webpack://blocksyOptions/./node_modules/lodash/_isKeyable.js","webpack://blocksyOptions/./node_modules/lodash/_isLaziable.js","webpack://blocksyOptions/./node_modules/lodash/_isMasked.js","webpack://blocksyOptions/./node_modules/lodash/_isPrototype.js","webpack://blocksyOptions/./node_modules/lodash/_listCacheClear.js","webpack://blocksyOptions/./node_modules/lodash/_listCacheDelete.js","webpack://blocksyOptions/./node_modules/lodash/_listCacheGet.js","webpack://blocksyOptions/./node_modules/lodash/_listCacheHas.js","webpack://blocksyOptions/./node_modules/lodash/_listCacheSet.js","webpack://blocksyOptions/./node_modules/lodash/_mapCacheClear.js","webpack://blocksyOptions/./node_modules/lodash/_mapCacheDelete.js","webpack://blocksyOptions/./node_modules/lodash/_mapCacheGet.js","webpack://blocksyOptions/./node_modules/lodash/_mapCacheHas.js","webpack://blocksyOptions/./node_modules/lodash/_mapCacheSet.js","webpack://blocksyOptions/./node_modules/lodash/_mapToArray.js","webpack://blocksyOptions/./node_modules/lodash/_memoizeCapped.js","webpack://blocksyOptions/./node_modules/lodash/_metaMap.js","webpack://blocksyOptions/./node_modules/lodash/_nativeCreate.js","webpack://blocksyOptions/./node_modules/lodash/_nativeKeys.js","webpack://blocksyOptions/./node_modules/lodash/_nativeKeysIn.js","webpack://blocksyOptions/./node_modules/lodash/_nodeUtil.js","webpack://blocksyOptions/./node_modules/lodash/_objectToString.js","webpack://blocksyOptions/./node_modules/lodash/_overArg.js","webpack://blocksyOptions/./node_modules/lodash/_overRest.js","webpack://blocksyOptions/./node_modules/lodash/_parent.js","webpack://blocksyOptions/./node_modules/lodash/_realNames.js","webpack://blocksyOptions/./node_modules/lodash/_root.js","webpack://blocksyOptions/./node_modules/lodash/_setCacheAdd.js","webpack://blocksyOptions/./node_modules/lodash/_setCacheHas.js","webpack://blocksyOptions/./node_modules/lodash/_setToArray.js","webpack://blocksyOptions/./node_modules/lodash/_setToString.js","webpack://blocksyOptions/./node_modules/lodash/_shortOut.js","webpack://blocksyOptions/./node_modules/lodash/_stackClear.js","webpack://blocksyOptions/./node_modules/lodash/_stackDelete.js","webpack://blocksyOptions/./node_modules/lodash/_stackGet.js","webpack://blocksyOptions/./node_modules/lodash/_stackHas.js","webpack://blocksyOptions/./node_modules/lodash/_stackSet.js","webpack://blocksyOptions/./node_modules/lodash/_strictIndexOf.js","webpack://blocksyOptions/./node_modules/lodash/_stringToPath.js","webpack://blocksyOptions/./node_modules/lodash/_toKey.js","webpack://blocksyOptions/./node_modules/lodash/_toSource.js","webpack://blocksyOptions/./node_modules/lodash/_wrapperClone.js","webpack://blocksyOptions/./node_modules/lodash/castArray.js","webpack://blocksyOptions/./node_modules/lodash/constant.js","webpack://blocksyOptions/./node_modules/lodash/defaultTo.js","webpack://blocksyOptions/./node_modules/lodash/eq.js","webpack://blocksyOptions/./node_modules/lodash/flatten.js","webpack://blocksyOptions/./node_modules/lodash/flow.js","webpack://blocksyOptions/./node_modules/lodash/get.js","webpack://blocksyOptions/./node_modules/lodash/identity.js","webpack://blocksyOptions/./node_modules/lodash/isArguments.js","webpack://blocksyOptions/./node_modules/lodash/isArray.js","webpack://blocksyOptions/./node_modules/lodash/isArrayLike.js","webpack://blocksyOptions/./node_modules/lodash/isArrayLikeObject.js","webpack://blocksyOptions/./node_modules/lodash/isBuffer.js","webpack://blocksyOptions/./node_modules/lodash/isEqual.js","webpack://blocksyOptions/./node_modules/lodash/isFunction.js","webpack://blocksyOptions/./node_modules/lodash/isLength.js","webpack://blocksyOptions/./node_modules/lodash/isMap.js","webpack://blocksyOptions/./node_modules/lodash/isObject.js","webpack://blocksyOptions/./node_modules/lodash/isObjectLike.js","webpack://blocksyOptions/./node_modules/lodash/isPlainObject.js","webpack://blocksyOptions/./node_modules/lodash/isSet.js","webpack://blocksyOptions/./node_modules/lodash/isString.js","webpack://blocksyOptions/./node_modules/lodash/isSymbol.js","webpack://blocksyOptions/./node_modules/lodash/isTypedArray.js","webpack://blocksyOptions/./node_modules/lodash/keys.js","webpack://blocksyOptions/./node_modules/lodash/keysIn.js","webpack://blocksyOptions/./node_modules/lodash/last.js","webpack://blocksyOptions/./node_modules/lodash/memoize.js","webpack://blocksyOptions/./node_modules/lodash/noop.js","webpack://blocksyOptions/./node_modules/lodash/omit.js","webpack://blocksyOptions/./node_modules/lodash/stubArray.js","webpack://blocksyOptions/./node_modules/lodash/stubFalse.js","webpack://blocksyOptions/./node_modules/lodash/toString.js","webpack://blocksyOptions/./node_modules/lodash/without.js","webpack://blocksyOptions/./node_modules/lodash/wrapperLodash.js","webpack://blocksyOptions/./node_modules/md5/md5.js","webpack://blocksyOptions/./node_modules/memize/index.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/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/sprintf-js/src/sprintf.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/defineProperty.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/global","webpack://blocksyOptions/webpack/runtime/hasOwnProperty shorthand","webpack://blocksyOptions/webpack/runtime/make namespace object","webpack://blocksyOptions/webpack/runtime/node module decorator","webpack://blocksyOptions/webpack/runtime/publicPath","webpack://blocksyOptions/./static/js/helpers.js","webpack://blocksyOptions/./static/js/customizer/reset.js","webpack://blocksyOptions/./static/js/options/OptionsRoot.js","webpack://blocksyOptions/./static/js/options/initPanels.js","webpack://blocksyOptions/./static/js/customizer/panels-builder.js","webpack://blocksyOptions/./static/js/customizer/controls/options.js","webpack://blocksyOptions/./static/js/backend/widgets.js","webpack://blocksyOptions/./static/js/customizer/components/ProOverlay.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/LegacyWidgetArea.js","webpack://blocksyOptions/external var \"window.wp.hooks\"","webpack://blocksyOptions/external var \"window.wp.widgets\"","webpack://blocksyOptions/external var \"window.wp.blockLibrary\"","webpack://blocksyOptions/external var \"window.wp.blocks\"","webpack://blocksyOptions/external var \"window.wp.data\"","webpack://blocksyOptions/external var \"window.wp.keyboardShortcuts\"","webpack://blocksyOptions/./node_modules/@wordpress/i18n/build-module/sprintf.js","webpack://blocksyOptions/./node_modules/@tannin/postfix/index.js","webpack://blocksyOptions/./node_modules/@tannin/evaluate/index.js","webpack://blocksyOptions/./node_modules/tannin/index.js","webpack://blocksyOptions/./node_modules/@wordpress/i18n/build-module/create-i18n.js","webpack://blocksyOptions/./node_modules/@tannin/plural-forms/index.js","webpack://blocksyOptions/./node_modules/@tannin/compile/index.js","webpack://blocksyOptions/./node_modules/@wordpress/i18n/build-module/default-i18n.js","webpack://blocksyOptions/external var \"window.wp.blockEditor\"","webpack://blocksyOptions/external var \"window.wp.compose\"","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/error-boundary/index.js","webpack://blocksyOptions/external var \"window.wp.coreData\"","webpack://blocksyOptions/external var \"window.wp.mediaUtils\"","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/interface/store/reducer.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/interface/store/constants.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/interface/store/actions.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/interface/store/selectors.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/interface/store/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/block-inspector-button/index.js","webpack://blocksyOptions/external var \"window.wp.keycodes\"","webpack://blocksyOptions/external var \"window.wp.primitives\"","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/undo.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/redo.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/plus.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/close-small.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/store/reducer.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/store/selectors.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/store/actions.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/store/constants.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/store/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/inserter/index.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/external.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/more-vertical.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/more-menu-dropdown.js","webpack://blocksyOptions/./node_modules/@wordpress/icons/build-module/library/check.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/node_modules/@wordpress/i18n/build-module/sprintf.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/node_modules/@wordpress/i18n/build-module/create-i18n.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/node_modules/@wordpress/i18n/build-module/default-i18n.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/build-module/add-container.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/build-module/filter-message.js","webpack://blocksyOptions/./node_modules/@wordpress/dom-ready/build-module/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/more-menu-feature-toggle.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/build-module/index.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/build-module/clear.js","webpack://blocksyOptions/./node_modules/@wordpress/a11y/build-module/add-intro-text.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/keyboard-shortcut-help-modal/config.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/keyboard-shortcut-help-modal/shortcut.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/keyboard-shortcut-help-modal/dynamic-shortcut.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/keyboard-shortcut-help-modal/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/more-menu/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/header/index.js","webpack://blocksyOptions/./node_modules/@wordpress/is-shallow-equal/build-module/index.js","webpack://blocksyOptions/./node_modules/@wordpress/is-shallow-equal/build-module/objects.js","webpack://blocksyOptions/./node_modules/@wordpress/is-shallow-equal/build-module/arrays.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/utils.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/sidebar-block-editor/sidebar-editor-provider.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/sidebar-block-editor/use-sidebar-block-editor.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/welcome-guide/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/keyboard-shortcuts/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/sidebar-block-editor/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/inserter/use-inserter.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/focus-control/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/sidebar-controls/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/sidebar-block-editor/sidebar-adapter.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/customize-widgets/index.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/filters/move-to-sidebar.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/NewBlockWidgetArea.js","webpack://blocksyOptions/./static/js/customizer/options/widget-area/customize-widgets/components/customize-widgets/use-clear-selected-block.js","webpack://blocksyOptions/./static/js/customizer/options/ct-widget-area.js","webpack://blocksyOptions/./static/js/customizer/controls.js","webpack://blocksyOptions/./static/js/customizer/customizer-color-scheme.js","webpack://blocksyOptions/./static/js/customizer/customizer-variables.js","webpack://blocksyOptions/./static/js/customizer/controls/utils.js"],"sourcesContent":["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, 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, 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 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","__webpack_public_path__ =\n\tct_customizer_localizations.static_public_url + 'bundle/'\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 {\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 } 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","/**\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","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _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}\n\n// Maybe this is not needed at all\nvar handleSingleVariableFor = function handleSingleVariableFor(variableDescriptor, value) {\n return _toConsumableArray(variableDescriptor.selector ? document.querySelectorAll(variableDescriptor.selector) : [document.documentElement]).map(function (el) {\n var actualValue = (variableDescriptor.type || '').indexOf('color') > -1 ? value[variableDescriptor.type === 'color' ? 'default' : variableDescriptor.type.split(':')[1]].color : variableDescriptor.extractValue ? variableDescriptor.extractValue(value) : value;\n\n if (actualValue && actualValue.indexOf('CT_CSS_SKIP_RULE') > -1) {\n el.style.removeProperty(\"--\".concat(variableDescriptor.variable));\n } else {\n el.style.setProperty(\"--\".concat(variableDescriptor.variable), \"\".concat(actualValue || '').concat(variableDescriptor.unit || ''));\n }\n });\n};\n\nvar handleVariablesFor = function handleVariablesFor(variables) {\n return wp.customize.bind('change', function (e) {\n return variables[e.id] && (Array.isArray(variables[e.id]) ? variables[e.id] : [variables[e.id]]).map(function (d) {\n return handleSingleVariableFor(d, e());\n });\n });\n};\n\nexports.handleVariablesFor = handleVariablesFor;\n//# sourceMappingURL=simplified.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","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var isArray = require('./isArray');\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n}\n\nmodule.exports = defaultTo;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var createFlow = require('./_createFlow');\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nmodule.exports = flow;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseDifference = require('./_baseDifference'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nmodule.exports = without;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\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","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {Function} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {F & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize( fn, options ) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized( /* ...args */ ) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs, i;\n\n\t\tsearchCache: while ( node ) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif ( node.args.length !== arguments.length ) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( node.args[ i ] !== arguments[ i ] ) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif ( node !== head ) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif ( node === tail ) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ ( node.prev ).next = node.next;\n\t\t\t\tif ( node.next ) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ ( head ).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply( null, args ),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif ( head ) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ ( tail ).prev;\n\t\t\t/** @type {MemizeCacheNode} */ ( tail ).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function() {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t// Cache is not exposed in the public API, but used in tests to ensure\n\t\t// expected list progression\n\t\tmemoized.getCache = function() {\n\t\t\treturn [ head, tail, size ];\n\t\t};\n\t}\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nmodule.exports = memize;\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}","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","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\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\": 3962,\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 _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}","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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\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__.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};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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;","import ctEvents from 'ct-events'\nimport { isTouchDevice } from './frontend/helpers/is-touch-device'\n\nconst loadSingleEntryPoint = ({\n\tels,\n\tevents,\n\tforcedEvents,\n\tload,\n\tmount,\n\tcondition,\n\ttrigger,\n}) => {\n\tif (!els) {\n\t\tels = []\n\t}\n\n\tif (!events) {\n\t\tevents = []\n\t}\n\n\tif (!forcedEvents) {\n\t\tforcedEvents = []\n\t}\n\n\tif (!trigger) {\n\t\ttrigger = []\n\t}\n\n\tif (!mount) {\n\t\tmount = ({ mount, el, ...everything }) =>\n\t\t\tel ? mount(el, everything) : mount()\n\t}\n\n\tif (els && {}.toString.call(els) === '[object Function]') {\n\t\tels = els()\n\t}\n\n\tconst allEls = (Array.isArray(els) ? els : [els]).reduce(\n\t\t(a, selector) => [\n\t\t\t...a,\n\t\t\t...(Array.isArray(selector)\n\t\t\t\t? selector\n\t\t\t\t: typeof selector === 'string'\n\t\t\t\t? document.querySelectorAll(selector)\n\t\t\t\t: [selector]),\n\t\t],\n\t\t[]\n\t)\n\n\tif (allEls.length === 0) {\n\t\treturn\n\t}\n\n\tif (\n\t\tcondition &&\n\t\t!condition({\n\t\t\tels,\n\t\t\tallEls,\n\t\t})\n\t) {\n\t\treturn\n\t}\n\n\tif (trigger.length > 0) {\n\t\tif (trigger.includes('click')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadClickListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadClickListener = true\n\n\t\t\t\tel.addEventListener('click', (event) => {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tload().then((arg) => mount({ ...arg, event, el }))\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tif (trigger.includes('scroll')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadScrollListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadScrollListener = true\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tlet prevScroll = scrollY\n\n\t\t\t\t\tlet cb = (event) => {\n\t\t\t\t\t\tif (Math.abs(scrollY - prevScroll) > 30) {\n\t\t\t\t\t\t\tdocument.removeEventListener('scroll', cb)\n\n\t\t\t\t\t\t\tload().then((arg) => {\n\t\t\t\t\t\t\t\treturn mount({ ...arg, event, el })\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\t\t\t\t\t}\n\n\t\t\t\t\tdocument.addEventListener('scroll', cb)\n\t\t\t\t}, 500)\n\t\t\t})\n\t\t}\n\n\t\tif (trigger.includes('input')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadInputListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadInputListener = true\n\n\t\t\t\tel.addEventListener(\n\t\t\t\t\t'input',\n\t\t\t\t\t(event) => load().then((arg) => mount({ ...arg, el })),\n\t\t\t\t\t{ once: true }\n\t\t\t\t)\n\t\t\t})\n\t\t}\n\n\t\tif (trigger.includes('hover-with-touch')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadMouseOverListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (el.dataset.autoplay && parseFloat(el.dataset.autoplay)) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tload().then((arg) =>\n\t\t\t\t\t\t\tmount({\n\t\t\t\t\t\t\t\t...arg,\n\t\t\t\t\t\t\t\tel,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}, parseFloat(el.dataset.autoplay) * 1000)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadMouseOverListener = true\n\n\t\t\t\tel.forcedMount = (data = {}) =>\n\t\t\t\t\tload().then((arg) => mount({ ...arg, el, ...data }))\n\t\t\t\t;['mouseover', ...(isTouchDevice() ? ['touchstart'] : [])].map(\n\t\t\t\t\t(eventToRegister) => {\n\t\t\t\t\t\tel.addEventListener(\n\t\t\t\t\t\t\teventToRegister,\n\t\t\t\t\t\t\t(event) => {\n\t\t\t\t\t\t\t\tload().then((arg) =>\n\t\t\t\t\t\t\t\t\tmount({\n\t\t\t\t\t\t\t\t\t\t...arg,\n\t\t\t\t\t\t\t\t\t\t...(event.type === 'touchstart'\n\t\t\t\t\t\t\t\t\t\t\t? { event }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t\tel,\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{ once: true, passive: true }\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\tif (trigger.includes('hover-with-click')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadClickHoverListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadClickHoverListener = true\n\n\t\t\t\tel.addEventListener(\n\t\t\t\t\tisTouchDevice() ? 'click' : 'mouseover',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tevent.preventDefault()\n\n\t\t\t\t\t\tload().then((arg) =>\n\t\t\t\t\t\t\tmount({\n\t\t\t\t\t\t\t\t...arg,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tel,\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{ once: true }\n\t\t\t\t)\n\t\t\t})\n\t\t}\n\n\t\tif (trigger.includes('hover')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadMouseOverListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadHoverListener = true\n\n\t\t\t\tel.addEventListener(\n\t\t\t\t\t'mouseover',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tload().then((arg) =>\n\t\t\t\t\t\t\tmount({\n\t\t\t\t\t\t\t\t...arg,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tel,\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{ once: true }\n\t\t\t\t)\n\t\t\t})\n\t\t}\n\n\t\tif (trigger.includes('submit')) {\n\t\t\tallEls.map((el) => {\n\t\t\t\tif (el.hasLazyLoadSubmitListener) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tel.hasLazyLoadSubmitListener = true\n\n\t\t\t\tel.addEventListener('submit', (event) => {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tload().then((arg) => mount({ ...arg, event, el }))\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t} else {\n\t\tload().then((arg) => {\n\t\t\tallEls.map((el) => {\n\t\t\t\tmount({ ...arg, el })\n\t\t\t})\n\t\t})\n\t}\n}\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\nexport const handleEntryPoints = (mountEntryPoints, args) => {\n\tconst { immediate = false, skipEvents = false } = args || {}\n\n\tif (!skipEvents) {\n\t\t;[\n\t\t\t...new Set(\n\t\t\t\tmountEntryPoints.reduce(\n\t\t\t\t\t(currentEvents, entry) => [\n\t\t\t\t\t\t...currentEvents,\n\t\t\t\t\t\t...(entry.events || []),\n\t\t\t\t\t\t...(entry.forcedEvents || []),\n\t\t\t\t\t],\n\t\t\t\t\t[]\n\t\t\t\t)\n\t\t\t),\n\t\t].map((distinctEvent) => {\n\t\t\tctEvents.on(distinctEvent, () => {\n\t\t\t\tmountEntryPoints\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ events = [] }) => events.indexOf(distinctEvent) > -1\n\t\t\t\t\t)\n\t\t\t\t\t.map((c) => loadSingleEntryPoint({ ...c, trigger: [] }))\n\n\t\t\t\tmountEntryPoints\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ forcedEvents = [] }) =>\n\t\t\t\t\t\t\tforcedEvents.indexOf(distinctEvent) > -1\n\t\t\t\t\t)\n\t\t\t\t\t.map((entry) =>\n\t\t\t\t\t\tloadSingleEntryPoint({\n\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t\t...(entry.forcedEventsElsSkip\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\tels: ['body'],\n\t\t\t\t\t\t\t\t }),\n\t\t\t\t\t\t\tcondition: () => true,\n\t\t\t\t\t\t\ttrigger: [],\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t})\n\t\t})\n\t}\n\n\tconst loadInitialEntryPoints = () => {\n\t\tmountEntryPoints\n\t\t\t.filter(({ onLoad = true }) => {\n\t\t\t\tif ({}.toString.call(onLoad) === '[object Function]') {\n\t\t\t\t\treturn onLoad()\n\t\t\t\t}\n\n\t\t\t\treturn !!onLoad\n\t\t\t})\n\t\t\t.map(loadSingleEntryPoint)\n\t}\n\n\tif (immediate) {\n\t\tloadInitialEntryPoints()\n\t} else {\n\t\tonDocumentLoaded(loadInitialEntryPoints)\n\t}\n}\n\nvar loadCSS = function (href, before, media, attributes) {\n\tvar doc = document\n\tvar ss = doc.createElement('link')\n\tvar ref\n\n\tif (before) {\n\t\tref = before\n\t} else {\n\t\tvar refs = (doc.body || doc.getElementsByTagName('head')[0]).childNodes\n\t\tref = refs[refs.length - 1]\n\t}\n\n\tvar sheets = doc.styleSheets\n\tss.rel = 'stylesheet'\n\tss.href = href\n\t// ss.media = 'only x'\n\n\t// ref.parentNode.insertBefore(ss, before ? ref : ref.nextSibling)\n\tdocument.body.appendChild(ss)\n\n\tvar onloadcssdefined = function (cb) {\n\t\tvar resolvedHref = ss.href\n\t\tvar i = sheets.length\n\t\twhile (i--) {\n\t\t\tif (sheets[i].href === resolvedHref) {\n\t\t\t\treturn cb()\n\t\t\t}\n\t\t}\n\t\tsetTimeout(function () {\n\t\t\tonloadcssdefined(cb)\n\t\t})\n\t}\n\n\tfunction loadCB() {\n\t\tif (ss.addEventListener) {\n\t\t\tss.removeEventListener('load', loadCB)\n\t\t}\n\t\t// ss.media = media || 'all'\n\t}\n\n\tif (ss.addEventListener) {\n\t\tss.addEventListener('load', loadCB)\n\t}\n\tss.onloadcssdefined = onloadcssdefined\n\tonloadcssdefined(loadCB)\n\treturn ss\n}\n\nfunction onloadCSS(ss, callback) {\n\tvar called\n\n\tfunction newcb() {\n\t\tif (!called && callback) {\n\t\t\tcalled = true\n\t\t\tcallback.call(ss)\n\t\t}\n\t}\n\n\tif (ss.addEventListener) {\n\t\tss.addEventListener('load', newcb)\n\t}\n\n\tif (ss.attachEvent) {\n\t\tss.attachEvent('onload', newcb)\n\t}\n\n\tif ('isApplicationInstalled' in navigator && 'onloadcssdefined' in ss) {\n\t\tss.onloadcssdefined(newcb)\n\t}\n}\n\nexport const loadStyle = (src, hasDisable = false) =>\n\tnew Promise((resolve, reject) => {\n\t\tif (document.querySelector(`[href=\"${src}\"]`)) {\n\t\t\tresolve()\n\t\t\treturn\n\t\t}\n\n\t\trequestAnimationFrame(() => {\n\t\t\tconst ss = loadCSS(src)\n\n\t\t\tonloadCSS(ss, () => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tresolve()\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t})\n","import { render, createElement, Component, Fragment } from '@wordpress/element'\nimport { onDocumentLoaded } from '../helpers'\nimport { __ } from 'ct-i18n'\n\nonDocumentLoaded(() => {\n\tconst darkModeSwitch = document.createElement('a')\n\n\tdarkModeSwitch.classList.add('ct-dark-mode-switch')\n\n\tdarkModeSwitch.innerHTML =\n\t\t'<span class=\"ct-night\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 30 30\"><path d=\"M29.6,18.6C27.9,25.2,22,30,15,30C6.7,30,0,23.3,0,15C0,8,4.8,2.1,11.4,0.4c1-0.2,2-0.4,3-0.4c-0.4,1.3-0.7,2.6-0.7,4.1c0,6.8,5.5,12.3,12.3,12.3c1.4,0,2.8-0.2,4.1-0.7C30,16.7,29.8,17.7,29.6,18.6z\"/></svg></span><span class=\"ct-day\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 30 30\"><path d=\"M15,6.9c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C23.1,10.5,19.5,6.9,15,6.9z M15,4.6c0.6,0,1.2-0.5,1.2-1.2V1.2C16.2,0.5,15.6,0,15,0c-0.6,0-1.2,0.5-1.2,1.2v2.3C13.8,4.1,14.4,4.6,15,4.6z M15,25.4c-0.6,0-1.2,0.5-1.2,1.2v2.3c0,0.6,0.5,1.2,1.2,1.2c0.6,0,1.2-0.5,1.2-1.2v-2.3C16.2,25.9,15.6,25.4,15,25.4z M24,7.7L25.6,6c0.5-0.5,0.5-1.2,0-1.6c-0.5-0.5-1.2-0.5-1.6,0L22.3,6c-0.5,0.5-0.5,1.2,0,1.6C22.8,8.1,23.5,8.1,24,7.7z M6,22.3L4.4,24c-0.5,0.5-0.5,1.2,0,1.6c0.5,0.5,1.2,0.5,1.6,0L7.7,24c0.5-0.5,0.5-1.2,0-1.6C7.2,21.9,6.5,21.9,6,22.3z M4.6,15c0-0.6-0.5-1.2-1.2-1.2H1.2C0.5,13.8,0,14.4,0,15c0,0.6,0.5,1.2,1.2,1.2h2.3C4.1,16.2,4.6,15.6,4.6,15z M28.8,13.8h-2.3c-0.6,0-1.2,0.5-1.2,1.2c0,0.6,0.5,1.2,1.2,1.2h2.3c0.6,0,1.2-0.5,1.2-1.2C30,14.4,29.5,13.8,28.8,13.8z M6,7.7c0.5,0.5,1.2,0.5,1.6,0c0.5-0.5,0.5-1.2,0-1.6L6,4.4c-0.5-0.5-1.2-0.5-1.6,0C3.9,4.8,3.9,5.6,4.4,6L6,7.7z M24,22.3c-0.5-0.5-1.2-0.5-1.6,0c-0.5,0.5-0.5,1.2,0,1.6l1.6,1.6c0.5,0.5,1.2,0.5,1.6,0c0.5-0.5,0.5-1.2,0-1.6L24,22.3z\"/></svg></span>'\n\n\tdarkModeSwitch.addEventListener('click', (e) => {\n\t\te.preventDefault()\n\n\t\twp.customize('customizer_color_scheme').set(\n\t\t\twp.customize('customizer_color_scheme')() === 'yes' ? 'no' : 'yes'\n\t\t)\n\t})\n\n\tdocument\n\t\t.querySelector('#customize-footer-actions')\n\t\t.appendChild(darkModeSwitch)\n})\n","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 { render, createElement } from '@wordpress/element'\n\nconst getDocument = x =>\n\tx.document || x.contentDocument || x.contentWindow.document\n\nconst buildersMaps = {\n\theader: {\n\t\tpanelType: 'header',\n\t\tcustomizerFieldKey: 'header_placements'\n\t},\n\n\tfooter: {\n\t\tpanelType: 'footer',\n\t\tcustomizerFieldKey: 'footer_placements'\n\t}\n}\n\nconst openBuilderFor = key => {\n\tdocument.querySelector('.ct-panel-builder').dataset.builder =\n\t\tbuildersMaps[key].panelType\n\n\tdocument.querySelector('.wp-full-overlay').classList.add('ct-show-builder')\n\n\tif (buildersMaps[key].panelType === 'footer') {\n\t\tdocument.body.classList.add('ct-footer-builder')\n\t}\n}\n\nconst closeBuilderFor = key => {\n\tdocument\n\t\t.querySelector('.wp-full-overlay')\n\t\t.classList.remove('ct-show-builder')\n\tdocument.body.classList.remove('ct-footer-builder')\n}\n\nexport const initBuilder = () => {\n\tconst root = document.createElement('div')\n\troot.classList.add('ct-panel-builder')\n\n\tdocument.querySelector('.wp-full-overlay').appendChild(root)\n\n\tObject.keys(buildersMaps).map(singleKey =>\n\t\t(wp.customize.panel(singleKey)\n\t\t\t? wp.customize.panel\n\t\t\t: wp.customize.section)(singleKey, section =>\n\t\t\tsection.expanded.bind(value =>\n\t\t\t\tvalue ? openBuilderFor(singleKey) : closeBuilderFor(singleKey)\n\t\t\t)\n\t\t)\n\t)\n}\n","import { createElement, useRef, useState } from '@wordpress/element'\nimport classnames from 'classnames'\n\nimport OptionsPanel from '../../options/OptionsPanel'\nimport { getValueFromInput } from '../../options/helpers/get-value-from-input'\nimport PanelLevel from '../../options/components/PanelLevel'\nimport { DeviceManagerProvider } from '../components/useDeviceManager'\n\nconst Options = ({ option, renderOptions = null }) => {\n\tconst [values, setValues] = useState(null)\n\n\tconst containerRef = useRef()\n\n\treturn (\n\t\t<DeviceManagerProvider>\n\t\t\t<div className=\"ct-options-container\" ref={containerRef}>\n\t\t\t\t<PanelLevel containerRef={containerRef}>\n\t\t\t\t\t<OptionsPanel\n\t\t\t\t\t\trenderOptions={renderOptions}\n\t\t\t\t\t\tpurpose=\"customizer\"\n\t\t\t\t\t\tonChange={(key, val) => {\n\t\t\t\t\t\t\tsetValues((values) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...(values ||\n\t\t\t\t\t\t\t\t\t\tgetValueFromInput(\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(id) => ({\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\twp.customize(id) &&\n\t\t\t\t\t\t\t\t\t\t\t\t\twp.customize(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\t\t\t\t\t\t\t\t\t[key]: val,\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\twp.customize(key) && wp.customize(key).set(val)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\toptions={option['inner-options']}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tvalues ||\n\t\t\t\t\t\t\tgetValueFromInput(\n\t\t\t\t\t\t\t\toption['inner-options'],\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t(id) => ({\n\t\t\t\t\t\t\t\t\t[id]:\n\t\t\t\t\t\t\t\t\t\twp.customize(id) && wp.customize(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/>\n\t\t\t\t</PanelLevel>\n\t\t\t</div>\n\t\t</DeviceManagerProvider>\n\t)\n}\n\nexport default Options\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","import {\n\tuseState,\n\trender,\n\tcreateElement,\n\tComponent,\n\tFragment,\n} from '@wordpress/element'\nimport { sprintf, __ } from 'ct-i18n'\nimport Overlay from './Overlay'\n\nconst ProOverlay = ({ username }) => {\n\tconst [isShowing, setIsShowing] = useState(false)\n\treturn (\n\t\t<Fragment>\n\t\t\t<button\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tsetIsShowing(true)\n\t\t\t\t}}\n\t\t\t\tclassName=\"button\">\n\t\t\t\t{__('View Pro Features', '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-onboarding-modal\"\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<svg width=\"55\" height=\"55\" viewBox=\"0 0 40.5 48.3\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfill=\"#2d82c8\"\n\t\t\t\t\t\t\t\td=\"M33.4 29.4l7.1 12.3-7.4.6-4 6-7.3-12.9\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M33.5 29.6L26 42.7l-4.2-7.3 11.6-6 .1.2zM0 41.7l7.5.6 3.9 6 7.2-12.4-11-7.3L0 41.7z\"\n\t\t\t\t\t\t\t\tfill=\"#2271b1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M39.5 18.7c0 1.6-2.4 2.8-2.7 4.3-.4 1.5 1 3.8.2 5.1-.8 1.3-3.4 1.2-4.5 2.3-1.1 1.1-1 3.7-2.3 4.5-1.3.8-3.6-.6-5.1-.2-1.5.4-2.7 2.7-4.3 2.7S18 35 16.5 34.7c-1.5-.4-3.8 1-5.1.2s-1.2-3.4-2.3-4.5-3.7-1-4.5-2.3.6-3.6.2-5.1-2.7-2.7-2.7-4.3 2.4-2.8 2.7-4.3c.4-1.5-1-3.8-.2-5.1C5.4 8 8.1 8.1 9.1 7c1.1-1.1 1-3.7 2.3-4.5s3.6.6 5.1.2C18 2.4 19.2 0 20.8 0c1.6 0 2.8 2.4 4.3 2.7 1.5.4 3.8-1 5.1-.2 1.3.8 1.2 3.4 2.3 4.5 1.1 1.1 3.7 1 4.5 2.3s-.6 3.6-.2 5.1c.3 1.5 2.7 2.7 2.7 4.3z\"\n\t\t\t\t\t\t\t\tfill=\"#599fd9\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M23.6 7c-6.4-1.5-12.9 2.5-14.4 8.9-.7 3.1-.2 6.3 1.5 9.1 1.7 2.7 4.3 4.6 7.4 5.4.9.2 1.9.3 2.8.3 2.2 0 4.4-.6 6.3-1.8 2.7-1.7 4.6-4.3 5.4-7.5C34 15 30 8.5 23.6 7zm7 14c-.6 2.6-2.2 4.8-4.5 6.2-2.3 1.4-5 1.8-7.6 1.2-2.6-.6-4.8-2.2-6.2-4.5-1.4-2.3-1.8-5-1.2-7.6.6-2.6 2.2-4.8 4.5-6.2 1.6-1 3.4-1.5 5.2-1.5.8 0 1.5.1 2.3.3 5.4 1.3 8.7 6.7 7.5 12.1zm-8.2-4.5l3.7.5-2.7 2.7.7 3.7-3.4-1.8-3.3 1.8.6-3.7-2.7-2.7 3.8-.5 1.6-3.4 1.7 3.4z\"\n\t\t\t\t\t\t\t\tfill=\"#fff\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\n\t\t\t\t\t\t<h2 className=\"ct-modal-title\">\n\t\t\t\t\t\t\t{sprintf(__('Hello %s', 'blocksy'), username)}\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'Upgrade to the Pro version and get instant access to all premium extensions, features and future updates.',\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<a\n\t\t\t\t\t\t\t\thref=\"https://creativethemes.com/blocksy/premium/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tclassName=\"button\">\n\t\t\t\t\t\t\t\t{__('View Pro Features', 'blocksy')}\n\t\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://creativethemes.com/blocksy/pricing/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tclassName=\"button button-primary\">\n\t\t\t\t\t\t\t\t{__('Upgrade Now', 'blocksy')}\n\t\t\t\t\t\t\t</a>\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 ProOverlay\n","import { createElement, useEffect, useRef } from '@wordpress/element'\n\nconst LegacyWidgetArea = ({\n\tvalue,\n\toption,\n\toption: { sidebarId = 'ct-footer-sidebar-1' },\n\tonChange,\n}) => {\n\tconst parentEl = useRef()\n\n\tuseEffect(() => {\n\t\tconst sectionId = `widgetAreaSection-${sidebarId}`\n\n\t\tconst widgetsToMove = Object.keys(wp.customize.control._value).filter(\n\t\t\t(id) => {\n\t\t\t\tif (id.indexOf('widget_') !== 0) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\twp.customize.control(id).section() ===\n\t\t\t\t\t`sidebar-widgets-${sidebarId}`\n\t\t\t\t)\n\t\t\t}\n\t\t)\n\n\t\tconst Section = wp.customize.Section.extend({\n\t\t\tcontainerParent: jQuery(parentEl.current),\n\t\t\t// containerPaneParent: parentEl.current\n\n\t\t\tcollapse: function () {},\n\n\t\t\tembed: function () {\n\t\t\t\tvar section = this\n\n\t\t\t\tsection.containerParent = wp.customize.ensure(\n\t\t\t\t\tsection.containerParent\n\t\t\t\t)\n\n\t\t\t\tvar parentContainer = wp.customize.ensure(\n\t\t\t\t\tsection.containerPaneParent\n\t\t\t\t)\n\n\t\t\t\tif (\n\t\t\t\t\t!section.contentContainer.parent().is(section.headContainer)\n\t\t\t\t) {\n\t\t\t\t\tsection.containerParent.append(section.contentContainer)\n\t\t\t\t\tsection.contentContainer[0].classList.add('open')\n\t\t\t\t\tsection.contentContainer[0]\n\t\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t\t'.customize-section-description-container'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.remove()\n\t\t\t\t}\n\n\t\t\t\tsection.deferred.embedded.resolve()\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\twidgetsToMove.map((control) => {\n\t\t\t\t\t\twp.customize.control(control).embedWidgetControl()\n\n\t\t\t\t\t\treturn\n\t\t\t\t\t\tconsole.log('here', control)\n\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\twp.customize\n\t\t\t\t\t\t\t\t.control(control)\n\t\t\t\t\t\t\t\t.container.one(\n\t\t\t\t\t\t\t\t\t'click.toggle-widget-expanded',\n\t\t\t\t\t\t\t\t\tfunction toggleWidgetExpanded() {\n\t\t\t\t\t\t\t\t\t\tconst widgetControl =\n\t\t\t\t\t\t\t\t\t\t\twp.customHtmlWidgets.widgetControls[\n\t\t\t\t\t\t\t\t\t\t\t\tcontrol\n\t\t\t\t\t\t\t\t\t\t\t\t\t.replace('widget_', '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t.replace(']', '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t.replace('[', '-')\n\t\t\t\t\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\t\t\t\tif (widgetControl) {\n\t\t\t\t\t\t\t\t\t\t\twidgetControl.updateFields()\n\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.control(control)\n\t\t\t\t\t\t\t\t\t\t\t\t.container.find('textarea')\n\t\t\t\t\t\t\t\t\t\t\t\t.change()\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\tconst widgetControl =\n\t\t\t\t\t\t\t\twp.customHtmlWidgets.widgetControls[\n\t\t\t\t\t\t\t\t\tcontrol\n\t\t\t\t\t\t\t\t\t\t.replace('widget_', '')\n\t\t\t\t\t\t\t\t\t\t.replace(']', '')\n\t\t\t\t\t\t\t\t\t\t.replace('[', '-')\n\t\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tif (widgetControl) {\n\t\t\t\t\t\t\t\twidgetControl.updateFields()\n\n\t\t\t\t\t\t\t\twp.customize\n\t\t\t\t\t\t\t\t\t.control(control)\n\t\t\t\t\t\t\t\t\t.container.find('textarea')\n\t\t\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tjQuery(document).trigger('widget-added', [\n\t\t\t\t\t\t\t\twp.customize\n\t\t\t\t\t\t\t\t\t.control(control)\n\t\t\t\t\t\t\t\t\t.container.find('.widget:first'),\n\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\tif (wp.mediaWidgets.widgetControls[control]) {\n\t\t\t\t\t\t\t\tjQuery(\n\t\t\t\t\t\t\t\t\twp.mediaWidgets.widgetControls[\n\t\t\t\t\t\t\t\t\t\tcontrol\n\t\t\t\t\t\t\t\t\t].el.closest('.widget')\n\t\t\t\t\t\t\t\t).one(\n\t\t\t\t\t\t\t\t\t'click.toggle-widget-expanded',\n\t\t\t\t\t\t\t\t\tfunction toggleWidgetExpanded() {\n\t\t\t\t\t\t\t\t\t\tvar widgetContainer = $(this)\n\n\t\t\t\t\t\t\t\t\t\twp.mediaWidgets.handleWidgetAdded(\n\t\t\t\t\t\t\t\t\t\t\tnew jQuery.Event('widget-added'),\n\t\t\t\t\t\t\t\t\t\t\twidgetContainer\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\t\t\t\t\t\t}, 50)\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\t\tconst section = new Section(sectionId, {})\n\n\t\twp.customize.section.add(section)\n\n\t\tconst control = new wp.customize.controlConstructor.sidebar_widgets(\n\t\t\t'checkcheck',\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tsidebar_id: sidebarId,\n\t\t\t\t\tpriority: 999,\n\t\t\t\t\tsection: section.id,\n\t\t\t\t\tsetting: `sidebars_widgets[${sidebarId}]`,\n\t\t\t\t\tcontent: `<li id=\"customize-control-sidebars_widgets-ct-footer-sidebar-2\" class=\"customize-control customize-control-sidebar_widgets\">\t\t<button type=\"button\" class=\"button add-new-widget\" aria-expanded=\"false\" aria-controls=\"available-widgets\">\n\t\t\tAdd a Widget\t\t</button>\n\t\t<button type=\"button\" class=\"button-link reorder-toggle\" aria-label=\"Reorder widgets\" aria-describedby=\"reorder-widgets-desc-sidebars_widgets-ct-footer-sidebar-2\">\n\t\t\t<span class=\"reorder\">Reorder</span>\n\t\t\t<span class=\"reorder-done\">Done</span>\n\t\t</button>\n\t\t<p class=\"screen-reader-text\" id=\"reorder-widgets-desc-sidebars_widgets-ct-footer-sidebar-2\">When in reorder mode, additional controls to reorder widgets will be available in the widgets list above.</p>\n\t\t</li>`,\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\n\t\twidgetsToMove.map((control) => {\n\t\t\twp.customize.control(\n\t\t\t\tcontrol\n\t\t\t).prevSection = `sidebar-widgets-${sidebarId}`\n\n\t\t\twp.customize.control(control).section(sectionId)\n\t\t})\n\n\t\tsetTimeout(() => {\n\t\t\tif (!parentEl.currentEl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tjQuery(parentEl.current.firstElementChild).sortable(\n\t\t\t\t'option',\n\t\t\t\t'containment',\n\t\t\t\t'parent'\n\t\t\t)\n\t\t}, 1000)\n\n\t\treturn () => {\n\t\t\tconst widgetsToMove = Object.keys(\n\t\t\t\twp.customize.control._value\n\t\t\t).filter((id) => {\n\t\t\t\tif (id.indexOf('widget_') !== 0) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\twp.customize.control(id).section() ===\n\t\t\t\t\t\t`sidebar-widgets-${sidebarId}` ||\n\t\t\t\t\twp.customize.control(id).section() === sectionId\n\t\t\t\t)\n\t\t\t})\n\n\t\t\twidgetsToMove.map((control) => {\n\t\t\t\tif (\n\t\t\t\t\twp.customize.control(control) &&\n\t\t\t\t\twp.customize\n\t\t\t\t\t\t.control(control)\n\t\t\t\t\t\t.container[0].matches('[id*=\"widget_text\"]')\n\t\t\t\t) {\n\t\t\t\t\tlet container = wp.customize.control(control).container[0]\n\t\t\t\t\tlet textarea = container.querySelector('textarea')\n\n\t\t\t\t\tlet widgetId = container.querySelector('.widget-id').value\n\n\t\t\t\t\tif (wp.textWidgets.widgetControls[widgetId]) {\n\t\t\t\t\t\twp.textWidgets.widgetControls[widgetId].remove()\n\t\t\t\t\t}\n\t\t\t\t\twp.textWidgets.widgetControls[widgetId] = null\n\n\t\t\t\t\twp.customize.control(control).collapse()\n\t\t\t\t}\n\n\t\t\t\tif (wp.customize.control(control)) {\n\t\t\t\t\twp.customize\n\t\t\t\t\t\t.control(control)\n\t\t\t\t\t\t.section(\n\t\t\t\t\t\t\twp.customize.control(control).prevSection ||\n\t\t\t\t\t\t\t\t`sidebar-widgets-${sidebarId}`\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t})\n\t\t\t;[\n\t\t\t\t...document.querySelectorAll(\n\t\t\t\t\t`.customize-pane-parent [id=\"accordion-section-${sectionId}\"]`\n\t\t\t\t),\n\t\t\t].map((container) => container.remove())\n\n\t\t\twp.customize.section.remove(section.id)\n\t\t}\n\t}, [])\n\n\treturn <div className=\"ct-option-widget-area\" ref={parentEl}></div>\n}\n\nexport default LegacyWidgetArea\n","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.hooks;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.widgets;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.blockLibrary;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.blocks;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.data;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.keyboardShortcuts;","/**\n * External dependencies\n */\nimport memoize from 'memize';\nimport sprintfjs from 'sprintf-js';\n/**\n * Log to console, once per message; or more precisely, per referentially equal\n * argument set. Because Jed throws errors, we log these to the console instead\n * to avoid crashing the application.\n *\n * @param {...*} args Arguments to pass to `console.error`\n */\n\nvar logErrorOnce = memoize(console.error); // eslint-disable-line no-console\n\n/**\n * Returns a formatted string. If an error occurs in applying the format, the\n * original format string is returned.\n *\n * @param {string} format The format of the string to generate.\n * @param {...*} args Arguments to apply to the format.\n *\n * @see https://www.npmjs.com/package/sprintf-js\n *\n * @return {string} The formatted string.\n */\n\nexport function sprintf(format) {\n try {\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 sprintfjs.sprintf.apply(sprintfjs, [format].concat(args));\n } catch (error) {\n logErrorOnce('sprintf error: \\n\\n' + error.toString());\n return format;\n }\n}\n//# sourceMappingURL=sprintf.js.map","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\nimport Tannin from 'tannin';\n/**\n * @typedef {Record<string,any>} LocaleData\n */\n\n/**\n * Default locale data to use for Tannin domain when not otherwise provided.\n * Assumes an English plural forms expression.\n *\n * @type {LocaleData}\n */\n\nvar DEFAULT_LOCALE_DATA = {\n '': {\n /** @param {number} n */\n plural_forms: function plural_forms(n) {\n return n === 1 ? 0 : 1;\n }\n }\n};\n/*\n * Regular expression that matches i18n hooks like `i18n.gettext`, `i18n.ngettext`,\n * `i18n.gettext_domain` or `i18n.ngettext_with_context` or `i18n.has_translation`.\n */\n\nvar I18N_HOOK_REGEXP = /^i18n\\.(n?gettext|has_translation)(_|$)/;\n/**\n * @typedef {(domain?: string) => LocaleData} GetLocaleData\n *\n * Returns locale data by domain in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} SetLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} ResetLocaleData\n *\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/** @typedef {() => void} SubscribeCallback */\n\n/** @typedef {() => void} UnsubscribeCallback */\n\n/**\n * @typedef {(callback: SubscribeCallback) => UnsubscribeCallback} Subscribe\n *\n * Subscribes to changes of locale data\n */\n\n/**\n * @typedef {(domain?: string) => string} GetFilterDomain\n * Retrieve the domain to use when calling domain-specific filters.\n */\n\n/**\n * @typedef {(text: string, domain?: string) => string} __\n *\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n */\n\n/**\n * @typedef {(text: string, context: string, domain?: string) => string} _x\n *\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, domain?: string) => string} _n\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, context: string, domain?: string) => string} _nx\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n */\n\n/**\n * @typedef {() => boolean} IsRtl\n *\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n */\n\n/**\n * @typedef {(single: string, context?: string, domain?: string) => boolean} HasTranslation\n *\n * Check if there is a translation for a given string in singular form.\n */\n\n/** @typedef {import('@wordpress/hooks').Hooks} Hooks */\n\n/**\n * An i18n instance\n *\n * @typedef I18n\n * @property {GetLocaleData} getLocaleData Returns locale data by domain in a Jed-formatted JSON object shape.\n * @property {SetLocaleData} setLocaleData Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {ResetLocaleData} resetLocaleData Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n * @property {Subscribe} subscribe Subscribes to changes of Tannin locale data.\n * @property {__} __ Retrieve the translation of text.\n * @property {_x} _x Retrieve translated string with gettext context.\n * @property {_n} _n Translates and retrieves the singular or plural form based on the supplied\n * number.\n * @property {_nx} _nx Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n * @property {IsRtl} isRTL Check if current locale is RTL.\n * @property {HasTranslation} hasTranslation Check if there is a translation for a given string.\n */\n\n/**\n * Create an i18n instance\n *\n * @param {LocaleData} [initialData] Locale data configuration.\n * @param {string} [initialDomain] Domain for which configuration applies.\n * @param {Hooks} [hooks] Hooks implementation.\n * @return {I18n} I18n instance\n */\n\nexport var createI18n = function createI18n(initialData, initialDomain, hooks) {\n /**\n * The underlying instance of Tannin to which exported functions interface.\n *\n * @type {Tannin}\n */\n var tannin = new Tannin({});\n var listeners = new Set();\n\n var notifyListeners = function notifyListeners() {\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n /**\n * Subscribe to changes of locale data.\n *\n * @param {SubscribeCallback} callback Subscription callback.\n * @return {UnsubscribeCallback} Unsubscribe callback.\n */\n\n\n var subscribe = function subscribe(callback) {\n listeners.add(callback);\n return function () {\n return listeners.delete(callback);\n };\n };\n /** @type {GetLocaleData} */\n\n\n var getLocaleData = function getLocaleData() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return tannin.data[domain];\n };\n /**\n * @param {LocaleData} [data]\n * @param {string} [domain]\n */\n\n\n var doSetLocaleData = function doSetLocaleData(data) {\n var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n tannin.data[domain] = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_LOCALE_DATA), tannin.data[domain]), data); // Populate default domain configuration (supported locale date which omits\n // a plural forms expression).\n\n tannin.data[domain][''] = _objectSpread(_objectSpread({}, DEFAULT_LOCALE_DATA['']), tannin.data[domain]['']);\n };\n /** @type {SetLocaleData} */\n\n\n var setLocaleData = function setLocaleData(data, domain) {\n doSetLocaleData(data, domain);\n notifyListeners();\n };\n /** @type {ResetLocaleData} */\n\n\n var resetLocaleData = function resetLocaleData(data, domain) {\n // Reset all current Tannin locale data.\n tannin.data = {}; // Reset cached plural forms functions cache.\n\n tannin.pluralForms = {};\n setLocaleData(data, domain);\n };\n /**\n * Wrapper for Tannin's `dcnpgettext`. Populates default locale data if not\n * otherwise previously assigned.\n *\n * @param {string|undefined} domain Domain to retrieve the translated text.\n * @param {string|undefined} context Context information for the translators.\n * @param {string} single Text to translate if non-plural. Used as\n * fallback return value on a caught error.\n * @param {string} [plural] The text to be used if the number is\n * plural.\n * @param {number} [number] The number to compare against to use\n * either the singular or plural form.\n *\n * @return {string} The translated string.\n */\n\n\n var dcnpgettext = function dcnpgettext() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n var context = arguments.length > 1 ? arguments[1] : undefined;\n var single = arguments.length > 2 ? arguments[2] : undefined;\n var plural = arguments.length > 3 ? arguments[3] : undefined;\n var number = arguments.length > 4 ? arguments[4] : undefined;\n\n if (!tannin.data[domain]) {\n // use `doSetLocaleData` to set silently, without notifying listeners\n doSetLocaleData(undefined, domain);\n }\n\n return tannin.dcnpgettext(domain, context, single, plural, number);\n };\n /** @type {GetFilterDomain} */\n\n\n var getFilterDomain = function getFilterDomain() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return domain;\n };\n /** @type {__} */\n\n\n var __ = function __(text, domain) {\n var translation = dcnpgettext(domain, undefined, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext', translation, text, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_' + getFilterDomain(domain), translation, text, domain)\n );\n };\n /** @type {_x} */\n\n\n var _x = function _x(text, context, domain) {\n var translation = dcnpgettext(domain, context, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation based on context information.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context', translation, text, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context_' + getFilterDomain(domain), translation, text, context, domain)\n );\n };\n /** @type {_n} */\n\n\n var _n = function _n(single, plural, number, domain) {\n var translation = dcnpgettext(domain, undefined, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext', translation, single, plural, number, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_' + getFilterDomain(domain), translation, single, plural, number, domain)\n );\n };\n /** @type {_nx} */\n\n\n var _nx = function _nx(single, plural, number, context, domain) {\n var translation = dcnpgettext(domain, context, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string with gettext context.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context', translation, single, plural, number, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context_' + getFilterDomain(domain), translation, single, plural, number, context, domain)\n );\n };\n /** @type {IsRtl} */\n\n\n var isRTL = function isRTL() {\n return 'rtl' === _x('ltr', 'text direction');\n };\n /** @type {HasTranslation} */\n\n\n var hasTranslation = function hasTranslation(single, context, domain) {\n var _tannin$data, _tannin$data2;\n\n var key = context ? context + \"\\x04\" + single : single;\n var result = !!((_tannin$data = tannin.data) !== null && _tannin$data !== void 0 && (_tannin$data2 = _tannin$data[domain !== null && domain !== void 0 ? domain : 'default']) !== null && _tannin$data2 !== void 0 && _tannin$data2[key]);\n\n if (hooks) {\n /**\n * Filters the presence of a translation in the locale data.\n *\n * @param {boolean} hasTranslation Whether the translation is present or not..\n * @param {string} single The singular form of the translated text (used as key in locale data)\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation', result, single, context, domain);\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation_' + getFilterDomain(domain), result, single, context, domain);\n }\n\n return result;\n };\n\n if (initialData) {\n setLocaleData(initialData, initialDomain);\n }\n\n if (hooks) {\n /**\n * @param {string} hookName\n */\n var onHookAddedOrRemoved = function onHookAddedOrRemoved(hookName) {\n if (I18N_HOOK_REGEXP.test(hookName)) {\n notifyListeners();\n }\n };\n\n hooks.addAction('hookAdded', 'core/i18n', onHookAddedOrRemoved);\n hooks.addAction('hookRemoved', 'core/i18n', onHookAddedOrRemoved);\n }\n\n return {\n getLocaleData: getLocaleData,\n setLocaleData: setLocaleData,\n resetLocaleData: resetLocaleData,\n subscribe: subscribe,\n __: __,\n _x: _x,\n _n: _n,\n _nx: _nx,\n isRTL: isRTL,\n hasTranslation: hasTranslation\n };\n};\n//# sourceMappingURL=create-i18n.js.map","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","/**\n * Internal dependencies\n */\nimport { createI18n } from './create-i18n';\n/**\n * WordPress dependencies\n */\n\nimport { defaultHooks } from '@wordpress/hooks';\nvar i18n = createI18n(undefined, undefined, defaultHooks);\n/**\n * Default, singleton instance of `I18n`.\n */\n\nexport default i18n;\n/*\n * Comments in this file are duplicated from ./i18n due to\n * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722\n */\n\n/**\n * @typedef {import('./create-i18n').LocaleData} LocaleData\n * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback\n * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback\n */\n\n/**\n * Returns locale data by domain in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {string} [domain] Domain for which to get the data.\n * @return {LocaleData} Locale data.\n */\n\nexport var getLocaleData = i18n.getLocaleData.bind(i18n);\n/**\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport var setLocaleData = i18n.setLocaleData.bind(i18n);\n/**\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport var resetLocaleData = i18n.resetLocaleData.bind(i18n);\n/**\n * Subscribes to changes of locale data\n *\n * @param {SubscribeCallback} callback Subscription callback\n * @return {UnsubscribeCallback} Unsubscribe callback\n */\n\nexport var subscribe = i18n.subscribe.bind(i18n);\n/**\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n *\n * @param {string} text Text to translate.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated text.\n */\n\nexport var __ = i18n.__.bind(i18n);\n/**\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n *\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated context string without pipe.\n */\n\nexport var _x = i18n._x.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport var _n = i18n._n.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport var _nx = i18n._nx.bind(i18n);\n/**\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n *\n * @return {boolean} Whether locale is RTL.\n */\n\nexport var isRTL = i18n.isRTL.bind(i18n);\n/**\n * Check if there is a translation for a given string (in singular form).\n *\n * @param {string} single Singular form of the string to look up.\n * @param {string} [context] Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n * @return {boolean} Whether the translation exists or not.\n */\n\nexport var hasTranslation = i18n.hasTranslation.bind(i18n);\n//# sourceMappingURL=default-i18n.js.map","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.blockEditor;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.compose;","import { createElement } from '@wordpress/element'\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element'\nimport { __ } from '@wordpress/i18n'\nimport { Button } from '@wordpress/components'\nimport { Warning } from '@wordpress/block-editor'\nimport { useCopyToClipboard } from '@wordpress/compose'\n\nfunction CopyButton({ text, children }) {\n\tconst ref = useCopyToClipboard(text)\n\n\treturn (\n\t\t<Button variant=\"secondary\" ref={ref}>\n\t\t\t{children}\n\t\t</Button>\n\t)\n}\n\nexport default class ErrorBoundary extends Component {\n\tconstructor() {\n\t\tsuper(...arguments)\n\t\tthis.state = {\n\t\t\terror: null,\n\t\t}\n\t}\n\n\tcomponentDidCatch(error) {\n\t\tthis.setState({ error })\n\t}\n\n\trender() {\n\t\tconst { error } = this.state\n\t\tif (!error) {\n\t\t\treturn this.props.children\n\t\t}\n\n\t\treturn (\n\t\t\t<Warning\n\t\t\t\tclassName=\"customize-widgets-error-boundary\"\n\t\t\t\tactions={[\n\t\t\t\t\t<CopyButton key=\"copy-error\" text={error.stack}>\n\t\t\t\t\t\t{__('Copy Error')}\n\t\t\t\t\t</CopyButton>,\n\t\t\t\t]}>\n\t\t\t\t{__('The editor has encountered an unexpected error.')}\n\t\t\t</Warning>\n\t\t)\n\t}\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.coreData;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.mediaUtils;","/**\n * External dependencies\n */\nimport { flow, get } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data'\n\n/**\n * Reducer to keep tract of the active area per scope.\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action object.\n * @param {string} action.type Action type.\n * @param {string} action.itemType Type of item.\n * @param {string} action.scope Item scope.\n * @param {string} action.item Item name.\n *\n * @return {Object} Updated state.\n */\nexport function singleEnableItems(state = {}, { type, itemType, scope, item }) {\n\tif (type !== 'SET_SINGLE_ENABLE_ITEM' || !itemType || !scope) {\n\t\treturn state\n\t}\n\n\treturn {\n\t\t...state,\n\t\t[itemType]: {\n\t\t\t...state[itemType],\n\t\t\t[scope]: item || null,\n\t\t},\n\t}\n}\n\n/**\n * Reducer keeping track of the \"pinned\" items per scope.\n *\n * @param {boolean} state Previous state.\n * @param {Object} action Action object.\n * @param {string} action.type Action type.\n * @param {string} action.itemType Type of item.\n * @param {string} action.scope Item scope.\n * @param {string} action.item Item name.\n * @param {boolean} action.isEnable Whether the item is pinned.\n *\n * @return {Object} Updated state.\n */\nexport function multipleEnableItems(\n\tstate = {},\n\t{ type, itemType, scope, item, isEnable }\n) {\n\tif (\n\t\ttype !== 'SET_MULTIPLE_ENABLE_ITEM' ||\n\t\t!itemType ||\n\t\t!scope ||\n\t\t!item ||\n\t\tget(state, [itemType, scope, item]) === isEnable\n\t) {\n\t\treturn state\n\t}\n\tconst currentTypeState = state[itemType] || {}\n\tconst currentScopeState = currentTypeState[scope] || {}\n\n\treturn {\n\t\t...state,\n\t\t[itemType]: {\n\t\t\t...currentTypeState,\n\t\t\t[scope]: {\n\t\t\t\t...currentScopeState,\n\t\t\t\t[item]: isEnable || false,\n\t\t\t},\n\t\t},\n\t}\n}\n\n/**\n * Reducer returning the defaults for user preferences.\n *\n * This is kept intentionally separate from the preferences\n * themselves so that defaults are not persisted.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const preferenceDefaults = flow([combineReducers])({\n\tfeatures(state = {}, action) {\n\t\tif (action.type === 'SET_FEATURE_DEFAULTS') {\n\t\t\tconst { scope, defaults } = action\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[scope]: {\n\t\t\t\t\t...state[scope],\n\t\t\t\t\t...defaults,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn state\n\t},\n})\n\n/**\n * Reducer returning the user preferences.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const preferences = flow([combineReducers])({\n\tfeatures(state = {}, action) {\n\t\tif (action.type === 'SET_FEATURE_VALUE') {\n\t\t\tconst { scope, featureName, value } = action\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[scope]: {\n\t\t\t\t\t...state[scope],\n\t\t\t\t\t[featureName]: value,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn state\n\t},\n})\n\nconst enableItems = combineReducers({\n\tsingleEnableItems,\n\tmultipleEnableItems,\n})\n\nexport default combineReducers({\n\tenableItems,\n\tpreferenceDefaults,\n\tpreferences,\n})\n","/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/interface'\n","/**\n * WordPress dependencies\n */\nimport { controls } from '@wordpress/data'\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME as interfaceStoreName } from './constants'\n\n/**\n * Returns an action object used in signalling that an active area should be changed.\n *\n * @param {string} itemType Type of item.\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n *\n * @return {Object} Action object.\n */\nfunction setSingleEnableItem(itemType, scope, item) {\n\treturn {\n\t\ttype: 'SET_SINGLE_ENABLE_ITEM',\n\t\titemType,\n\t\tscope,\n\t\titem,\n\t}\n}\n\n/**\n * Returns an action object used in signalling that a complementary item should be enabled.\n *\n * @param {string} scope Complementary area scope.\n * @param {string} area Area identifier.\n *\n * @return {Object} Action object.\n */\nexport function enableComplementaryArea(scope, area) {\n\treturn setSingleEnableItem('complementaryArea', scope, area)\n}\n\n/**\n * Returns an action object used in signalling that the complementary area of a given scope should be disabled.\n *\n * @param {string} scope Complementary area scope.\n *\n * @return {Object} Action object.\n */\nexport function disableComplementaryArea(scope) {\n\treturn setSingleEnableItem('complementaryArea', scope, undefined)\n}\n\n/**\n * Returns an action object to make an area enabled/disabled.\n *\n * @param {string} itemType Type of item.\n * @param {string} scope Item scope.\n * @param {string} item Item identifier.\n * @param {boolean} isEnable Boolean indicating if an area should be pinned or not.\n *\n * @return {Object} Action object.\n */\nfunction setMultipleEnableItem(itemType, scope, item, isEnable) {\n\treturn {\n\t\ttype: 'SET_MULTIPLE_ENABLE_ITEM',\n\t\titemType,\n\t\tscope,\n\t\titem,\n\t\tisEnable,\n\t}\n}\n\n/**\n * Returns an action object used in signalling that an item should be pinned.\n *\n * @param {string} scope Item scope.\n * @param {string} itemId Item identifier.\n *\n * @return {Object} Action object.\n */\nexport function pinItem(scope, itemId) {\n\treturn setMultipleEnableItem('pinnedItems', scope, itemId, true)\n}\n\n/**\n * Returns an action object used in signalling that an item should be unpinned.\n *\n * @param {string} scope Item scope.\n * @param {string} itemId Item identifier.\n *\n * @return {Object} Action object.\n */\nexport function unpinItem(scope, itemId) {\n\treturn setMultipleEnableItem('pinnedItems', scope, itemId, false)\n}\n\n/**\n * Returns an action object used in signalling that a feature should be toggled.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n */\nexport function* toggleFeature(scope, featureName) {\n\tconst currentValue = yield controls.select(\n\t\tinterfaceStoreName,\n\t\t'isFeatureActive',\n\t\tscope,\n\t\tfeatureName\n\t)\n\n\tyield controls.dispatch(\n\t\tinterfaceStoreName,\n\t\t'setFeatureValue',\n\t\tscope,\n\t\tfeatureName,\n\t\t!currentValue\n\t)\n}\n\n/**\n * Returns an action object used in signalling that a feature should be set to\n * a true or false value\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {string} featureName The feature name.\n * @param {boolean} value The value to set.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureValue(scope, featureName, value) {\n\treturn {\n\t\ttype: 'SET_FEATURE_VALUE',\n\t\tscope,\n\t\tfeatureName,\n\t\tvalue: !!value,\n\t}\n}\n\n/**\n * Returns an action object used in signalling that defaults should be set for features.\n *\n * @param {string} scope The feature scope (e.g. core/edit-post).\n * @param {Object<string, boolean>} defaults A key/value map of feature names to values.\n *\n * @return {Object} Action object.\n */\nexport function setFeatureDefaults(scope, defaults) {\n\treturn {\n\t\ttype: 'SET_FEATURE_DEFAULTS',\n\t\tscope,\n\t\tdefaults,\n\t}\n}\n","/**\n * External dependencies\n */\nimport { get } from 'lodash'\n\n/**\n * Returns the item that is enabled in a given scope.\n *\n * @param {Object} state Global application state.\n * @param {string} itemType Type of item.\n * @param {string} scope Item scope.\n *\n * @return {?string|null} The item that is enabled in the passed scope and type.\n */\nfunction getSingleEnableItem(state, itemType, scope) {\n\treturn get(state.enableItems.singleEnableItems, [itemType, scope])\n}\n\n/**\n * Returns the complementary area that is active in a given scope.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Item scope.\n *\n * @return {string} The complementary area that is active in the given scope.\n */\nexport function getActiveComplementaryArea(state, scope) {\n\treturn getSingleEnableItem(state, 'complementaryArea', scope)\n}\n\n/**\n * Returns a boolean indicating if an item is enabled or not in a given scope.\n *\n * @param {Object} state Global application state.\n * @param {string} itemType Type of item.\n * @param {string} scope Scope.\n * @param {string} item Item to check.\n *\n * @return {boolean|undefined} True if the item is enabled, false otherwise if the item is explicitly disabled, and undefined if there is no information for that item.\n */\nfunction isMultipleEnabledItemEnabled(state, itemType, scope, item) {\n\treturn get(state.enableItems.multipleEnableItems, [itemType, scope, item])\n}\n\n/**\n * Returns a boolean indicating if an item is pinned or not.\n *\n * @param {Object} state Global application state.\n * @param {string} scope Scope.\n * @param {string} item Item to check.\n *\n * @return {boolean} True if the item is pinned and false otherwise.\n */\nexport function isItemPinned(state, scope, item) {\n\treturn (\n\t\tisMultipleEnabledItemEnabled(state, 'pinnedItems', scope, item) !==\n\t\tfalse\n\t)\n}\n\n/**\n * Returns a boolean indicating whether a feature is active for a particular\n * scope.\n *\n * @param {Object} state The store state.\n * @param {string} scope The scope of the feature (e.g. core/edit-post).\n * @param {string} featureName The name of the feature.\n *\n * @return {boolean} Is the feature enabled?\n */\nexport function isFeatureActive(state, scope, featureName) {\n\tconst featureValue = state.preferences.features[scope]?.[featureName]\n\tconst defaultedFeatureValue =\n\t\tfeatureValue !== undefined\n\t\t\t? featureValue\n\t\t\t: state.preferenceDefaults.features[scope]?.[featureName]\n\n\treturn !!defaultedFeatureValue\n}\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, registerStore } from '@wordpress/data'\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer'\nimport * as actions from './actions'\nimport * as selectors from './selectors'\nimport { STORE_NAME } from './constants'\n\n/**\n * Store definition for the interface namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore(STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n\tpersist: ['enableItems', 'preferences'],\n})\n\n// Once we build a more generic persistence plugin that works across types of stores\n// we'd be able to replace this with a register call.\nregisterStore(STORE_NAME, {\n\treducer,\n\tactions,\n\tselectors,\n\tpersist: ['enableItems', 'preferences'],\n})\n","/**\n * WordPress dependencies\n */\nimport { useContext, createElement } from '@wordpress/element'\nimport { __ } from 'ct-i18n'\nimport { MenuItem } from '@wordpress/components'\n\nimport { PanelContext } from '../../../../../../options/components/PanelLevel'\n\nfunction BlockInspectorButton({ closeMenu, ...props }) {\n\tconst { panelsHelpers } = useContext(PanelContext)\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={() => {\n\t\t\t\tpanelsHelpers.openSecondLevel()\n\t\t\t\t// Then close the dropdown menu.\n\t\t\t\tcloseMenu()\n\t\t\t}}\n\t\t\t{...props}>\n\t\t\t{__('Show more settings', 'blocksy')}\n\t\t</MenuItem>\n\t)\n}\n\nexport default BlockInspectorButton\n","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.keycodes;","var __WEBPACK_NAMESPACE_OBJECT__ = window.wp.primitives;","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst undo = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z\"\n}));\nexport default undo;\n//# sourceMappingURL=undo.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst redo = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z\"\n}));\nexport default redo;\n//# sourceMappingURL=redo.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst plus = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M18 11.2h-5.2V6h-1.6v5.2H6v1.6h5.2V18h1.6v-5.2H18z\"\n}));\nexport default plus;\n//# sourceMappingURL=plus.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst closeSmall = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z\"\n}));\nexport default closeSmall;\n//# sourceMappingURL=close-small.js.map","/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data'\n\n/**\n * Reducer tracking whether the inserter is open.\n *\n * @param {boolean|Object} state\n * @param {Object} action\n */\nfunction blockInserterPanel(state = false, action) {\n\tswitch (action.type) {\n\t\tcase 'SET_IS_INSERTER_OPENED':\n\t\t\treturn action.value\n\t}\n\n\treturn state\n}\n\nexport default combineReducers({\n\tblockInserterPanel,\n})\n","/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened(state) {\n\treturn !!state.blockInserterPanel\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint(state) {\n\tconst { rootClientId, insertionIndex } = state.blockInserterPanel\n\treturn { rootClientId, insertionIndex }\n}\n","/**\n * Returns an action object used to open/close the inserter.\n *\n * @param {boolean|Object} value Whether the inserter should be\n * opened (true) or closed (false).\n * To specify an insertion point,\n * use an object.\n * @param {string} value.rootClientId The root client ID to insert at.\n * @param {number} value.insertionIndex The index to insert at.\n *\n * @return {Object} Action object.\n */\nexport function setIsInserterOpened(value) {\n\treturn {\n\t\ttype: 'SET_IS_INSERTER_OPENED',\n\t\tvalue,\n\t}\n}\n","/**\n * Module Constants\n */\nexport const STORE_NAME = 'core/customize-widgets'\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data'\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer'\nimport * as selectors from './selectors'\nimport * as actions from './actions'\nimport { STORE_NAME } from './constants'\n\n/**\n * Block editor data store configuration.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registering-a-store\n *\n * @type {Object}\n */\nconst storeConfig = {\n\treducer,\n\tselectors,\n\tactions,\n}\n\n/**\n * Store definition for the edit widgets namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore(STORE_NAME, storeConfig)\nregister(store)\n","import { createElement } from '@wordpress/element'\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport { __experimentalLibrary as Library } from '@wordpress/block-editor'\nimport { Button } from '@wordpress/components'\nimport { useInstanceId } from '@wordpress/compose'\nimport { useSelect } from '@wordpress/data'\nimport { closeSmall } from '@wordpress/icons'\n\n/**\n * Internal dependencies\n */\nimport { store as customizeWidgetsStore } from '../../store'\n\nfunction Inserter({ setIsOpened }) {\n\tconst inserterTitleId = useInstanceId(\n\t\tInserter,\n\t\t'customize-widget-layout__inserter-panel-title'\n\t)\n\tconst insertionPoint = useSelect(\n\t\t(select) =>\n\t\t\tselect(customizeWidgetsStore).__experimentalGetInsertionPoint(),\n\t\t[]\n\t)\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"customize-widgets-layout__inserter-panel\"\n\t\t\taria-labelledby={inserterTitleId}>\n\t\t\t<div className=\"customize-widgets-layout__inserter-panel-header\">\n\t\t\t\t<h2\n\t\t\t\t\tid={inserterTitleId}\n\t\t\t\t\tclassName=\"customize-widgets-layout__inserter-panel-header-title\">\n\t\t\t\t\t{__('Add a block')}\n\t\t\t\t</h2>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"customize-widgets-layout__inserter-panel-header-close-button\"\n\t\t\t\t\ticon={closeSmall}\n\t\t\t\t\tonClick={() => setIsOpened(false)}\n\t\t\t\t\taria-label={__('Close inserter')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"customize-widgets-layout__inserter-panel-content\">\n\t\t\t\t<Library\n\t\t\t\t\trootClientId={insertionPoint.rootClientId}\n\t\t\t\t\t__experimentalInsertionIndex={insertionPoint.insertionIndex}\n\t\t\t\t\tshowInserterHelpPanel\n\t\t\t\t\tonSelect={() => setIsOpened(false)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default Inserter\n","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\nconst external = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z\"\n}));\nexport default external;\n//# sourceMappingURL=external.js.map","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst moreVertical = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z\"\n}));\nexport default moreVertical;\n//# sourceMappingURL=more-vertical.js.map","import { createElement } from '@wordpress/element'\n/**\n * External dependencies\n */\nimport classnames from 'classnames'\n\n/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components'\nimport { __ } from 'ct-i18n'\nimport { moreVertical } from '@wordpress/icons'\n\nexport default function MoreMenuDropdown({\n\tas: DropdownComponent = DropdownMenu,\n\tclassName,\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tlabel = __('Options', 'blocksy'),\n\tpopoverProps,\n\ttoggleProps,\n\tchildren,\n}) {\n\treturn (\n\t\t<DropdownComponent\n\t\t\tclassName={classnames('interface-more-menu-dropdown', className)}\n\t\t\ticon={moreVertical}\n\t\t\tlabel={label}\n\t\t\tpopoverProps={{\n\t\t\t\tposition: 'bottom left',\n\t\t\t\t...popoverProps,\n\t\t\t\tclassName: classnames(\n\t\t\t\t\t'interface-more-menu-dropdown__content',\n\t\t\t\t\tpopoverProps?.className\n\t\t\t\t),\n\t\t\t}}\n\t\t\ttoggleProps={{\n\t\t\t\ttooltipPosition: 'bottom',\n\t\t\t\t...toggleProps,\n\t\t\t}}>\n\t\t\t{(onClose) => children(onClose)}\n\t\t</DropdownComponent>\n\t)\n}\n","import { createElement } from \"@wordpress/element\";\n\n/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nconst check = createElement(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, createElement(Path, {\n d: \"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z\"\n}));\nexport default check;\n//# sourceMappingURL=check.js.map","/**\n * External dependencies\n */\nimport memoize from 'memize';\nimport sprintfjs from 'sprintf-js';\n/**\n * Log to console, once per message; or more precisely, per referentially equal\n * argument set. Because Jed throws errors, we log these to the console instead\n * to avoid crashing the application.\n *\n * @param {...*} args Arguments to pass to `console.error`\n */\n\nconst logErrorOnce = memoize(console.error); // eslint-disable-line no-console\n\n/**\n * Returns a formatted string. If an error occurs in applying the format, the\n * original format string is returned.\n *\n * @param {string} format The format of the string to generate.\n * @param {...*} args Arguments to apply to the format.\n *\n * @see https://www.npmjs.com/package/sprintf-js\n *\n * @return {string} The formatted string.\n */\n\nexport function sprintf(format) {\n try {\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 sprintfjs.sprintf(format, ...args);\n } catch (error) {\n if (error instanceof Error) {\n logErrorOnce('sprintf error: \\n\\n' + error.toString());\n }\n\n return format;\n }\n}\n//# sourceMappingURL=sprintf.js.map","/**\n * External dependencies\n */\nimport Tannin from 'tannin';\n/**\n * @typedef {Record<string,any>} LocaleData\n */\n\n/**\n * Default locale data to use for Tannin domain when not otherwise provided.\n * Assumes an English plural forms expression.\n *\n * @type {LocaleData}\n */\n\nconst DEFAULT_LOCALE_DATA = {\n '': {\n /** @param {number} n */\n plural_forms(n) {\n return n === 1 ? 0 : 1;\n }\n\n }\n};\n/*\n * Regular expression that matches i18n hooks like `i18n.gettext`, `i18n.ngettext`,\n * `i18n.gettext_domain` or `i18n.ngettext_with_context` or `i18n.has_translation`.\n */\n\nconst I18N_HOOK_REGEXP = /^i18n\\.(n?gettext|has_translation)(_|$)/;\n/**\n * @typedef {(domain?: string) => LocaleData} GetLocaleData\n *\n * Returns locale data by domain in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} SetLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} AddLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} ResetLocaleData\n *\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/** @typedef {() => void} SubscribeCallback */\n\n/** @typedef {() => void} UnsubscribeCallback */\n\n/**\n * @typedef {(callback: SubscribeCallback) => UnsubscribeCallback} Subscribe\n *\n * Subscribes to changes of locale data\n */\n\n/**\n * @typedef {(domain?: string) => string} GetFilterDomain\n * Retrieve the domain to use when calling domain-specific filters.\n */\n\n/**\n * @typedef {(text: string, domain?: string) => string} __\n *\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n */\n\n/**\n * @typedef {(text: string, context: string, domain?: string) => string} _x\n *\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, domain?: string) => string} _n\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, context: string, domain?: string) => string} _nx\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n */\n\n/**\n * @typedef {() => boolean} IsRtl\n *\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n */\n\n/**\n * @typedef {(single: string, context?: string, domain?: string) => boolean} HasTranslation\n *\n * Check if there is a translation for a given string in singular form.\n */\n\n/** @typedef {import('@wordpress/hooks').Hooks} Hooks */\n\n/**\n * An i18n instance\n *\n * @typedef I18n\n * @property {GetLocaleData} getLocaleData Returns locale data by domain in a Jed-formatted JSON object shape.\n * @property {SetLocaleData} setLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {AddLocaleData} addLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {ResetLocaleData} resetLocaleData Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n * @property {Subscribe} subscribe Subscribes to changes of Tannin locale data.\n * @property {__} __ Retrieve the translation of text.\n * @property {_x} _x Retrieve translated string with gettext context.\n * @property {_n} _n Translates and retrieves the singular or plural form based on the supplied\n * number.\n * @property {_nx} _nx Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n * @property {IsRtl} isRTL Check if current locale is RTL.\n * @property {HasTranslation} hasTranslation Check if there is a translation for a given string.\n */\n\n/**\n * Create an i18n instance\n *\n * @param {LocaleData} [initialData] Locale data configuration.\n * @param {string} [initialDomain] Domain for which configuration applies.\n * @param {Hooks} [hooks] Hooks implementation.\n *\n * @return {I18n} I18n instance.\n */\n\nexport const createI18n = (initialData, initialDomain, hooks) => {\n /**\n * The underlying instance of Tannin to which exported functions interface.\n *\n * @type {Tannin}\n */\n const tannin = new Tannin({});\n const listeners = new Set();\n\n const notifyListeners = () => {\n listeners.forEach(listener => listener());\n };\n /**\n * Subscribe to changes of locale data.\n *\n * @param {SubscribeCallback} callback Subscription callback.\n * @return {UnsubscribeCallback} Unsubscribe callback.\n */\n\n\n const subscribe = callback => {\n listeners.add(callback);\n return () => listeners.delete(callback);\n };\n /** @type {GetLocaleData} */\n\n\n const getLocaleData = function () {\n let domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return tannin.data[domain];\n };\n /**\n * @param {LocaleData} [data]\n * @param {string} [domain]\n */\n\n\n const doSetLocaleData = function (data) {\n var _tannin$data$domain;\n\n let domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n tannin.data[domain] = { ...tannin.data[domain],\n ...data\n }; // Populate default domain configuration (supported locale date which omits\n // a plural forms expression).\n\n tannin.data[domain][''] = { ...DEFAULT_LOCALE_DATA[''],\n ...((_tannin$data$domain = tannin.data[domain]) === null || _tannin$data$domain === void 0 ? void 0 : _tannin$data$domain[''])\n }; // Clean up cached plural forms functions cache as it might be updated.\n\n delete tannin.pluralForms[domain];\n };\n /** @type {SetLocaleData} */\n\n\n const setLocaleData = (data, domain) => {\n doSetLocaleData(data, domain);\n notifyListeners();\n };\n /** @type {AddLocaleData} */\n\n\n const addLocaleData = function (data) {\n var _tannin$data$domain2;\n\n let domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n tannin.data[domain] = { ...tannin.data[domain],\n ...data,\n // Populate default domain configuration (supported locale date which omits\n // a plural forms expression).\n '': { ...DEFAULT_LOCALE_DATA[''],\n ...((_tannin$data$domain2 = tannin.data[domain]) === null || _tannin$data$domain2 === void 0 ? void 0 : _tannin$data$domain2['']),\n ...(data === null || data === void 0 ? void 0 : data[''])\n }\n }; // Clean up cached plural forms functions cache as it might be updated.\n\n delete tannin.pluralForms[domain];\n notifyListeners();\n };\n /** @type {ResetLocaleData} */\n\n\n const resetLocaleData = (data, domain) => {\n // Reset all current Tannin locale data.\n tannin.data = {}; // Reset cached plural forms functions cache.\n\n tannin.pluralForms = {};\n setLocaleData(data, domain);\n };\n /**\n * Wrapper for Tannin's `dcnpgettext`. Populates default locale data if not\n * otherwise previously assigned.\n *\n * @param {string|undefined} domain Domain to retrieve the translated text.\n * @param {string|undefined} context Context information for the translators.\n * @param {string} single Text to translate if non-plural. Used as\n * fallback return value on a caught error.\n * @param {string} [plural] The text to be used if the number is\n * plural.\n * @param {number} [number] The number to compare against to use\n * either the singular or plural form.\n *\n * @return {string} The translated string.\n */\n\n\n const dcnpgettext = function () {\n let domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n let context = arguments.length > 1 ? arguments[1] : undefined;\n let single = arguments.length > 2 ? arguments[2] : undefined;\n let plural = arguments.length > 3 ? arguments[3] : undefined;\n let number = arguments.length > 4 ? arguments[4] : undefined;\n\n if (!tannin.data[domain]) {\n // Use `doSetLocaleData` to set silently, without notifying listeners.\n doSetLocaleData(undefined, domain);\n }\n\n return tannin.dcnpgettext(domain, context, single, plural, number);\n };\n /** @type {GetFilterDomain} */\n\n\n const getFilterDomain = function () {\n let domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return domain;\n };\n /** @type {__} */\n\n\n const __ = (text, domain) => {\n let translation = dcnpgettext(domain, undefined, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext', translation, text, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_' + getFilterDomain(domain), translation, text, domain)\n );\n };\n /** @type {_x} */\n\n\n const _x = (text, context, domain) => {\n let translation = dcnpgettext(domain, context, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation based on context information.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context', translation, text, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context_' + getFilterDomain(domain), translation, text, context, domain)\n );\n };\n /** @type {_n} */\n\n\n const _n = (single, plural, number, domain) => {\n let translation = dcnpgettext(domain, undefined, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext', translation, single, plural, number, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_' + getFilterDomain(domain), translation, single, plural, number, domain)\n );\n };\n /** @type {_nx} */\n\n\n const _nx = (single, plural, number, context, domain) => {\n let translation = dcnpgettext(domain, context, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string with gettext context.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context', translation, single, plural, number, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context_' + getFilterDomain(domain), translation, single, plural, number, context, domain)\n );\n };\n /** @type {IsRtl} */\n\n\n const isRTL = () => {\n return 'rtl' === _x('ltr', 'text direction');\n };\n /** @type {HasTranslation} */\n\n\n const hasTranslation = (single, context, domain) => {\n var _tannin$data, _tannin$data2;\n\n const key = context ? context + '\\u0004' + single : single;\n let result = !!((_tannin$data = tannin.data) !== null && _tannin$data !== void 0 && (_tannin$data2 = _tannin$data[domain !== null && domain !== void 0 ? domain : 'default']) !== null && _tannin$data2 !== void 0 && _tannin$data2[key]);\n\n if (hooks) {\n /**\n * Filters the presence of a translation in the locale data.\n *\n * @param {boolean} hasTranslation Whether the translation is present or not..\n * @param {string} single The singular form of the translated text (used as key in locale data)\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation', result, single, context, domain);\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation_' + getFilterDomain(domain), result, single, context, domain);\n }\n\n return result;\n };\n\n if (initialData) {\n setLocaleData(initialData, initialDomain);\n }\n\n if (hooks) {\n /**\n * @param {string} hookName\n */\n const onHookAddedOrRemoved = hookName => {\n if (I18N_HOOK_REGEXP.test(hookName)) {\n notifyListeners();\n }\n };\n\n hooks.addAction('hookAdded', 'core/i18n', onHookAddedOrRemoved);\n hooks.addAction('hookRemoved', 'core/i18n', onHookAddedOrRemoved);\n }\n\n return {\n getLocaleData,\n setLocaleData,\n addLocaleData,\n resetLocaleData,\n subscribe,\n __,\n _x,\n _n,\n _nx,\n isRTL,\n hasTranslation\n };\n};\n//# sourceMappingURL=create-i18n.js.map","/**\n * Internal dependencies\n */\nimport { createI18n } from './create-i18n';\n/**\n * WordPress dependencies\n */\n\nimport { defaultHooks } from '@wordpress/hooks';\nconst i18n = createI18n(undefined, undefined, defaultHooks);\n/**\n * Default, singleton instance of `I18n`.\n */\n\nexport default i18n;\n/*\n * Comments in this file are duplicated from ./i18n due to\n * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722\n */\n\n/**\n * @typedef {import('./create-i18n').LocaleData} LocaleData\n * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback\n * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback\n */\n\n/**\n * Returns locale data by domain in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {string} [domain] Domain for which to get the data.\n * @return {LocaleData} Locale data.\n */\n\nexport const getLocaleData = i18n.getLocaleData.bind(i18n);\n/**\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport const setLocaleData = i18n.setLocaleData.bind(i18n);\n/**\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport const resetLocaleData = i18n.resetLocaleData.bind(i18n);\n/**\n * Subscribes to changes of locale data\n *\n * @param {SubscribeCallback} callback Subscription callback\n * @return {UnsubscribeCallback} Unsubscribe callback\n */\n\nexport const subscribe = i18n.subscribe.bind(i18n);\n/**\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n *\n * @param {string} text Text to translate.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated text.\n */\n\nexport const __ = i18n.__.bind(i18n);\n/**\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n *\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated context string without pipe.\n */\n\nexport const _x = i18n._x.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport const _n = i18n._n.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport const _nx = i18n._nx.bind(i18n);\n/**\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n *\n * @return {boolean} Whether locale is RTL.\n */\n\nexport const isRTL = i18n.isRTL.bind(i18n);\n/**\n * Check if there is a translation for a given string (in singular form).\n *\n * @param {string} single Singular form of the string to look up.\n * @param {string} [context] Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n * @return {boolean} Whether the translation exists or not.\n */\n\nexport const hasTranslation = i18n.hasTranslation.bind(i18n);\n//# sourceMappingURL=default-i18n.js.map","/**\n * Build the live regions markup.\n *\n * @param {string} [ariaLive] Value for the 'aria-live' attribute; default: 'polite'.\n *\n * @return {HTMLDivElement} The ARIA live region HTML element.\n */\nexport default function addContainer() {\n let ariaLive = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'polite';\n const container = document.createElement('div');\n container.id = `a11y-speak-${ariaLive}`;\n container.className = 'a11y-speak-region';\n container.setAttribute('style', 'position: absolute;' + 'margin: -1px;' + 'padding: 0;' + 'height: 1px;' + 'width: 1px;' + 'overflow: hidden;' + 'clip: rect(1px, 1px, 1px, 1px);' + '-webkit-clip-path: inset(50%);' + 'clip-path: inset(50%);' + 'border: 0;' + 'word-wrap: normal !important;');\n container.setAttribute('aria-live', ariaLive);\n container.setAttribute('aria-relevant', 'additions text');\n container.setAttribute('aria-atomic', 'true');\n const {\n body\n } = document;\n\n if (body) {\n body.appendChild(container);\n }\n\n return container;\n}\n//# sourceMappingURL=add-container.js.map","let previousMessage = '';\n/**\n * Filter the message to be announced to the screenreader.\n *\n * @param {string} message The message to be announced.\n *\n * @return {string} The filtered message.\n */\n\nexport default function filterMessage(message) {\n /*\n * Strip HTML tags (if any) from the message string. Ideally, messages should\n * be simple strings, carefully crafted for specific use with A11ySpeak.\n * When re-using already existing strings this will ensure simple HTML to be\n * stripped out and replaced with a space. Browsers will collapse multiple\n * spaces natively.\n */\n message = message.replace(/<[^<>]+>/g, ' ');\n /*\n * Safari + VoiceOver don't announce repeated, identical strings. We use\n * a `no-break space` to force them to think identical strings are different.\n */\n\n if (previousMessage === message) {\n message += '\\u00A0';\n }\n\n previousMessage = message;\n return message;\n}\n//# sourceMappingURL=filter-message.js.map","/**\n * @typedef {() => void} Callback\n *\n * TODO: Remove this typedef and inline `() => void` type.\n *\n * This typedef is used so that a descriptive type is provided in our\n * automatically generated documentation.\n *\n * An in-line type `() => void` would be preferable, but the generated\n * documentation is `null` in that case.\n *\n * @see https://github.com/WordPress/gutenberg/issues/18045\n */\n\n/**\n * Specify a function to execute when the DOM is fully loaded.\n *\n * @param {Callback} callback A function to execute after the DOM is ready.\n *\n * @example\n * ```js\n * import domReady from '@wordpress/dom-ready';\n *\n * domReady( function() {\n * \t//do something after DOM loads.\n * } );\n * ```\n *\n * @return {void}\n */\nexport default function domReady(callback) {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (document.readyState === 'complete' || // DOMContentLoaded + Images/Styles/etc loaded, so we call directly.\n document.readyState === 'interactive' // DOMContentLoaded fires at this point, so we call directly.\n ) {\n return void callback();\n } // DOMContentLoaded has not fired yet, delay callback until then.\n\n\n document.addEventListener('DOMContentLoaded', callback);\n}\n//# sourceMappingURL=index.js.map","/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element'\nimport { useSelect, useDispatch } from '@wordpress/data'\nimport { MenuItem } from '@wordpress/components'\nimport { __ } from 'ct-i18n'\nimport { check } from '@wordpress/icons'\nimport { speak } from '@wordpress/a11y'\n\n/**\n * Internal dependencies\n */\nimport { store as interfaceStore } from './interface/store/'\n\nexport default function MoreMenuFeatureToggle({\n\tscope,\n\tlabel,\n\tinfo,\n\tmessageActivated,\n\tmessageDeactivated,\n\tshortcut,\n\tfeature,\n}) {\n\tconst isActive = useSelect(\n\t\t(select) => select(interfaceStore).isFeatureActive(scope, feature),\n\t\t[feature]\n\t)\n\tconst { toggleFeature } = useDispatch(interfaceStore)\n\tconst speakMessage = () => {\n\t\tif (isActive) {\n\t\t\tspeak(messageDeactivated || __('Feature deactivated', 'blocksy'))\n\t\t} else {\n\t\t\tspeak(messageActivated || __('Feature activated', 'blocksy'))\n\t\t}\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={isActive && check}\n\t\t\tisSelected={isActive}\n\t\t\tonClick={() => {\n\t\t\t\ttoggleFeature(scope, feature)\n\t\t\t\tspeakMessage()\n\t\t\t}}\n\t\t\trole=\"menuitemcheckbox\"\n\t\t\tinfo={info}\n\t\t\tshortcut={shortcut}>\n\t\t\t{label}\n\t\t</MenuItem>\n\t)\n}\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n/**\n * Internal dependencies\n */\n\nimport addIntroText from './add-intro-text';\nimport addContainer from './add-container';\nimport clear from './clear';\nimport filterMessage from './filter-message';\n/**\n * Create the live regions.\n */\n\nexport function setup() {\n const introText = document.getElementById('a11y-speak-intro-text');\n const containerAssertive = document.getElementById('a11y-speak-assertive');\n const containerPolite = document.getElementById('a11y-speak-polite');\n\n if (introText === null) {\n addIntroText();\n }\n\n if (containerAssertive === null) {\n addContainer('assertive');\n }\n\n if (containerPolite === null) {\n addContainer('polite');\n }\n}\n/**\n * Run setup on domReady.\n */\n\ndomReady(setup);\n/**\n * Allows you to easily announce dynamic interface updates to screen readers using ARIA live regions.\n * This module is inspired by the `speak` function in `wp-a11y.js`.\n *\n * @param {string} message The message to be announced by assistive technologies.\n * @param {string} [ariaLive] The politeness level for aria-live; default: 'polite'.\n *\n * @example\n * ```js\n * import { speak } from '@wordpress/a11y';\n *\n * // For polite messages that shouldn't interrupt what screen readers are currently announcing.\n * speak( 'The message you want to send to the ARIA live region' );\n *\n * // For assertive messages that should interrupt what screen readers are currently announcing.\n * speak( 'The message you want to send to the ARIA live region', 'assertive' );\n * ```\n */\n\nexport function speak(message, ariaLive) {\n /*\n * Clear previous messages to allow repeated strings being read out and hide\n * the explanatory text from assistive technologies.\n */\n clear();\n message = filterMessage(message);\n const introText = document.getElementById('a11y-speak-intro-text');\n const containerAssertive = document.getElementById('a11y-speak-assertive');\n const containerPolite = document.getElementById('a11y-speak-polite');\n\n if (containerAssertive && ariaLive === 'assertive') {\n containerAssertive.textContent = message;\n } else if (containerPolite) {\n containerPolite.textContent = message;\n }\n /*\n * Make the explanatory text available to assistive technologies by removing\n * the 'hidden' HTML attribute.\n */\n\n\n if (introText) {\n introText.removeAttribute('hidden');\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Clears the a11y-speak-region elements and hides the explanatory text.\n */\nexport default function clear() {\n const regions = document.getElementsByClassName('a11y-speak-region');\n const introText = document.getElementById('a11y-speak-intro-text');\n\n for (let i = 0; i < regions.length; i++) {\n regions[i].textContent = '';\n } // Make sure the explanatory text is hidden from assistive technologies.\n\n\n if (introText) {\n introText.setAttribute('hidden', 'hidden');\n }\n}\n//# sourceMappingURL=clear.js.map","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n/**\n * Build the explanatory text to be placed before the aria live regions.\n *\n * This text is initially hidden from assistive technologies by using a `hidden`\n * HTML attribute which is then removed once a message fills the aria-live regions.\n *\n * @return {HTMLParagraphElement} The explanatory text HTML element.\n */\n\nexport default function addIntroText() {\n const introText = document.createElement('p');\n introText.id = 'a11y-speak-intro-text';\n introText.className = 'a11y-speak-intro-text';\n introText.textContent = __('Notifications');\n introText.setAttribute('style', 'position: absolute;' + 'margin: -1px;' + 'padding: 0;' + 'height: 1px;' + 'width: 1px;' + 'overflow: hidden;' + 'clip: rect(1px, 1px, 1px, 1px);' + '-webkit-clip-path: inset(50%);' + 'clip-path: inset(50%);' + 'border: 0;' + 'word-wrap: normal !important;');\n introText.setAttribute('hidden', 'hidden');\n const {\n body\n } = document;\n\n if (body) {\n body.appendChild(introText);\n }\n\n return introText;\n}\n//# sourceMappingURL=add-intro-text.js.map","/**\n * WordPress dependencies\n */\nimport { __ } from 'ct-i18n'\n\nexport const textFormattingShortcuts = [\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'b' },\n\t\tdescription: __('Make the selected text bold.', 'blocksy'),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'i' },\n\t\tdescription: __('Make the selected text italic.', 'blocksy'),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'k' },\n\t\tdescription: __('Convert the selected text into a link.', 'blocksy'),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primaryShift', character: 'k' },\n\t\tdescription: __('Remove a link.', 'blocksy'),\n\t},\n\t{\n\t\tkeyCombination: { modifier: 'primary', character: 'u' },\n\t\tdescription: __('Underline the selected text.', 'blocksy'),\n\t},\n]\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { createElement, Fragment } from '@wordpress/element'\nimport { displayShortcutList, shortcutAriaLabel } from '@wordpress/keycodes'\n\nfunction KeyCombination({ keyCombination, forceAriaLabel }) {\n\tconst shortcut = keyCombination.modifier\n\t\t? displayShortcutList[keyCombination.modifier](keyCombination.character)\n\t\t: keyCombination.character\n\tconst ariaLabel = keyCombination.modifier\n\t\t? shortcutAriaLabel[keyCombination.modifier](keyCombination.character)\n\t\t: keyCombination.character\n\n\treturn (\n\t\t<kbd\n\t\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal__shortcut-key-combination\"\n\t\t\taria-label={forceAriaLabel || ariaLabel}>\n\t\t\t{castArray(shortcut).map((character, index) => {\n\t\t\t\tif (character === '+') {\n\t\t\t\t\treturn <Fragment key={index}>{character}</Fragment>\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<kbd\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal__shortcut-key\">\n\t\t\t\t\t\t{character}\n\t\t\t\t\t</kbd>\n\t\t\t\t)\n\t\t\t})}\n\t\t</kbd>\n\t)\n}\n\nfunction Shortcut({ description, keyCombination, aliases = [], ariaLabel }) {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"customize-widgets-keyboard-shortcut-help-modal__shortcut-description\">\n\t\t\t\t{description}\n\t\t\t</div>\n\t\t\t<div className=\"customize-widgets-keyboard-shortcut-help-modal__shortcut-term\">\n\t\t\t\t<KeyCombination\n\t\t\t\t\tkeyCombination={keyCombination}\n\t\t\t\t\tforceAriaLabel={ariaLabel}\n\t\t\t\t/>\n\t\t\t\t{aliases.map((alias, index) => (\n\t\t\t\t\t<KeyCombination\n\t\t\t\t\t\tkeyCombination={alias}\n\t\t\t\t\t\tforceAriaLabel={ariaLabel}\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</>\n\t)\n}\n\nexport default Shortcut\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data'\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts'\nimport { createElement } from '@wordpress/element'\n\n/**\n * Internal dependencies\n */\nimport Shortcut from './shortcut'\n\nfunction DynamicShortcut({ name }) {\n\tconst { keyCombination, description, aliases } = useSelect(\n\t\t(select) => {\n\t\t\tconst {\n\t\t\t\tgetShortcutKeyCombination,\n\t\t\t\tgetShortcutDescription,\n\t\t\t\tgetShortcutAliases,\n\t\t\t} = select(keyboardShortcutsStore)\n\n\t\t\treturn {\n\t\t\t\tkeyCombination: getShortcutKeyCombination(name),\n\t\t\t\taliases: getShortcutAliases(name),\n\t\t\t\tdescription: getShortcutDescription(name),\n\t\t\t}\n\t\t},\n\t\t[name]\n\t)\n\n\tif (!keyCombination) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<Shortcut\n\t\t\tkeyCombination={keyCombination}\n\t\t\tdescription={description}\n\t\t\taliases={aliases}\n\t\t/>\n\t)\n}\n\nexport default DynamicShortcut\n","/**\n * External dependencies\n */\nimport classnames from 'classnames'\nimport { isString } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components'\nimport { __ } from 'ct-i18n'\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts'\nimport { useDispatch, useSelect } from '@wordpress/data'\nimport { createElement } from '@wordpress/element'\n\n/**\n * Internal dependencies\n */\nimport { textFormattingShortcuts } from './config'\nimport Shortcut from './shortcut'\nimport DynamicShortcut from './dynamic-shortcut'\n\nconst ShortcutList = ({ shortcuts }) => (\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\t<ul\n\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal__shortcut-list\"\n\t\trole=\"list\">\n\t\t{shortcuts.map((shortcut, index) => (\n\t\t\t<li\n\t\t\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal__shortcut\"\n\t\t\t\tkey={index}>\n\t\t\t\t{isString(shortcut) ? (\n\t\t\t\t\t<DynamicShortcut name={shortcut} />\n\t\t\t\t) : (\n\t\t\t\t\t<Shortcut {...shortcut} />\n\t\t\t\t)}\n\t\t\t</li>\n\t\t))}\n\t</ul>\n\t/* eslint-enable jsx-a11y/no-redundant-roles */\n)\n\nconst ShortcutSection = ({ title, shortcuts, className }) => (\n\t<section\n\t\tclassName={classnames(\n\t\t\t'customize-widgets-keyboard-shortcut-help-modal__section',\n\t\t\tclassName\n\t\t)}>\n\t\t{!!title && (\n\t\t\t<h2 className=\"customize-widgets-keyboard-shortcut-help-modal__section-title\">\n\t\t\t\t{title}\n\t\t\t</h2>\n\t\t)}\n\t\t<ShortcutList shortcuts={shortcuts} />\n\t</section>\n)\n\nconst ShortcutCategorySection = ({\n\ttitle,\n\tcategoryName,\n\tadditionalShortcuts = [],\n}) => {\n\tconst categoryShortcuts = useSelect(\n\t\t(select) => {\n\t\t\treturn select(keyboardShortcutsStore).getCategoryShortcuts(\n\t\t\t\tcategoryName\n\t\t\t)\n\t\t},\n\t\t[categoryName]\n\t)\n\n\treturn (\n\t\t<ShortcutSection\n\t\t\ttitle={title}\n\t\t\tshortcuts={categoryShortcuts.concat(additionalShortcuts)}\n\t\t/>\n\t)\n}\n\nexport default function KeyboardShortcutHelpModal({\n\tisModalActive,\n\ttoggleModal,\n}) {\n\tconst { registerShortcut } = useDispatch(keyboardShortcutsStore)\n\tregisterShortcut({\n\t\tname: 'core/customize-widgets/keyboard-shortcuts',\n\t\tcategory: 'main',\n\t\tdescription: __('Display these keyboard shortcuts.'),\n\t\tkeyCombination: {\n\t\t\tmodifier: 'access',\n\t\t\tcharacter: 'h',\n\t\t},\n\t})\n\n\tuseShortcut('core/customize-widgets/keyboard-shortcuts', toggleModal)\n\n\tif (!isModalActive) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal\"\n\t\t\ttitle={__('Keyboard shortcuts')}\n\t\t\tcloseLabel={__('Close')}\n\t\t\tonRequestClose={toggleModal}>\n\t\t\t<ShortcutSection\n\t\t\t\tclassName=\"customize-widgets-keyboard-shortcut-help-modal__main-shortcuts\"\n\t\t\t\tshortcuts={['core/customize-widgets/keyboard-shortcuts']}\n\t\t\t/>\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={__('Global shortcuts')}\n\t\t\t\tcategoryName=\"global\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={__('Selection shortcuts')}\n\t\t\t\tcategoryName=\"selection\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={__('Block shortcuts')}\n\t\t\t\tcategoryName=\"block\"\n\t\t\t\tadditionalShortcuts={[\n\t\t\t\t\t{\n\t\t\t\t\t\tkeyCombination: { character: '/' },\n\t\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t\t'Change the block type after adding a new paragraph.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t/* translators: The forward-slash character. e.g. '/'. */\n\t\t\t\t\t\tariaLabel: __('Forward-slash'),\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t/>\n\t\t\t<ShortcutSection\n\t\t\t\ttitle={__('Text formatting')}\n\t\t\t\tshortcuts={textFormattingShortcuts}\n\t\t\t/>\n\t\t</Modal>\n\t)\n}\n","/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element'\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tToolbarDropdownMenu,\n\tVisuallyHidden,\n} from '@wordpress/components'\nimport { useState } from '@wordpress/element'\nimport { __, _x } from '@wordpress/i18n'\nimport { external } from '@wordpress/icons'\nimport { displayShortcut } from '@wordpress/keycodes'\nimport { useShortcut } from '@wordpress/keyboard-shortcuts'\nimport MoreMenuDropdown from './more-menu-dropdown'\nimport MoreMenuFeatureToggle from './more-menu-feature-toggle'\n\n/**\n * Internal dependencies\n */\nimport KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal'\n\nconst POPOVER_PROPS = {\n\tclassName: 'customize-widgets-more-menu__content',\n}\n\nexport default function MoreMenu() {\n\tconst [\n\t\tisKeyboardShortcutsModalActive,\n\t\tsetIsKeyboardShortcutsModalVisible,\n\t] = useState(false)\n\tconst toggleKeyboardShortcutsModal = () =>\n\t\tsetIsKeyboardShortcutsModalVisible(!isKeyboardShortcutsModalActive)\n\n\tuseShortcut(\n\t\t'core/customize-widgets/keyboard-shortcuts',\n\t\ttoggleKeyboardShortcutsModal\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t<MoreMenuDropdown\n\t\t\t\tas={ToolbarDropdownMenu}\n\t\t\t\tclassName=\"customize-widgets-more-menu\"\n\t\t\t\tpopoverProps={POPOVER_PROPS}>\n\t\t\t\t{() => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup label={_x('View', 'noun')}>\n\t\t\t\t\t\t\t<MoreMenuFeatureToggle\n\t\t\t\t\t\t\t\tscope=\"core/customize-widgets\"\n\t\t\t\t\t\t\t\tfeature=\"fixedToolbar\"\n\t\t\t\t\t\t\t\tlabel={__('Top toolbar')}\n\t\t\t\t\t\t\t\tinfo={__(\n\t\t\t\t\t\t\t\t\t'Access all block and document tools in a single place'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tmessageActivated={__('Top toolbar activated')}\n\t\t\t\t\t\t\t\tmessageDeactivated={__(\n\t\t\t\t\t\t\t\t\t'Top toolbar deactivated'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={__('Tools')}>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetIsKeyboardShortcutsModalVisible(true)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tshortcut={displayShortcut.access('h')}>\n\t\t\t\t\t\t\t\t{__('Keyboard shortcuts')}\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<MoreMenuFeatureToggle\n\t\t\t\t\t\t\t\tscope=\"core/customize-widgets\"\n\t\t\t\t\t\t\t\tfeature=\"welcomeGuide\"\n\t\t\t\t\t\t\t\tlabel={__('Welcome Guide')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\ticon={external}\n\t\t\t\t\t\t\t\thref={__(\n\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/block-based-widgets-editor/'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\">\n\t\t\t\t\t\t\t\t{__('Help')}\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__('(opens in a new tab)')\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={__('Preferences')}>\n\t\t\t\t\t\t\t<MoreMenuFeatureToggle\n\t\t\t\t\t\t\t\tscope=\"core/customize-widgets\"\n\t\t\t\t\t\t\t\tfeature=\"keepCaretInsideBlock\"\n\t\t\t\t\t\t\t\tlabel={__('Contain text cursor inside block')}\n\t\t\t\t\t\t\t\tinfo={__(\n\t\t\t\t\t\t\t\t\t'Aids screen readers by stopping text caret from leaving blocks.'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tmessageActivated={__(\n\t\t\t\t\t\t\t\t\t'Contain text cursor inside block activated'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tmessageDeactivated={__(\n\t\t\t\t\t\t\t\t\t'Contain text cursor inside block deactivated'\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</MoreMenuDropdown>\n\t\t\t<KeyboardShortcutHelpModal\n\t\t\t\tisModalActive={isKeyboardShortcutsModalActive}\n\t\t\t\ttoggleModal={toggleKeyboardShortcutsModal}\n\t\t\t/>\n\t\t</>\n\t)\n}\n","import { createElement } from '@wordpress/element'\n/**\n * External dependencies\n */\nimport classnames from 'classnames'\n\n/**\n * WordPress dependencies\n */\nimport { createPortal, useState, useEffect } from '@wordpress/element'\nimport { __, _x, isRTL } from '@wordpress/i18n'\nimport { ToolbarButton } from '@wordpress/components'\nimport { NavigableToolbar } from '@wordpress/block-editor'\nimport { displayShortcut } from '@wordpress/keycodes'\nimport { plus, undo as undoIcon, redo as redoIcon } from '@wordpress/icons'\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter'\nimport MoreMenu from '../more-menu'\n\nfunction Header({\n\tsidebar,\n\tinserter,\n\tisInserterOpened,\n\tsetIsInserterOpened,\n\tisFixedToolbarActive,\n}) {\n\tconst [[hasUndo, hasRedo], setUndoRedo] = useState([\n\t\tsidebar.hasUndo(),\n\t\tsidebar.hasRedo(),\n\t])\n\n\tuseEffect(() => {\n\t\treturn sidebar.subscribeHistory(() => {\n\t\t\tsetUndoRedo([sidebar.hasUndo(), sidebar.hasRedo()])\n\t\t})\n\t}, [sidebar])\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={classnames('customize-widgets-header', {\n\t\t\t\t\t'is-fixed-toolbar-active': isFixedToolbarActive,\n\t\t\t\t})}>\n\t\t\t\t<NavigableToolbar\n\t\t\t\t\tclassName=\"customize-widgets-header-toolbar\"\n\t\t\t\t\taria-label={__('Document tools')}>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={!isRTL() ? undoIcon : redoIcon}\n\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\tlabel={__('Undo')}\n\t\t\t\t\t\tshortcut={displayShortcut.primary('z')}\n\t\t\t\t\t\t// If there are no undo levels we don't want to actually disable this\n\t\t\t\t\t\t// button, because it will remove focus for keyboard users.\n\t\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/3486\n\t\t\t\t\t\taria-disabled={!hasUndo}\n\t\t\t\t\t\tonClick={sidebar.undo}\n\t\t\t\t\t\tclassName=\"customize-widgets-editor-history-button undo-button\"\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={!isRTL() ? redoIcon : undoIcon}\n\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\tlabel={__('Redo')}\n\t\t\t\t\t\tshortcut={displayShortcut.primaryShift('z')}\n\t\t\t\t\t\t// If there are no undo levels we don't want to actually disable this\n\t\t\t\t\t\t// button, because it will remove focus for keyboard users.\n\t\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/3486\n\t\t\t\t\t\taria-disabled={!hasRedo}\n\t\t\t\t\t\tonClick={sidebar.redo}\n\t\t\t\t\t\tclassName=\"customize-widgets-editor-history-button redo-button\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tclassName=\"customize-widgets-header-toolbar__inserter-toggle\"\n\t\t\t\t\t\tisPressed={isInserterOpened}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ticon={plus}\n\t\t\t\t\t\tlabel={_x(\n\t\t\t\t\t\t\t'Add block',\n\t\t\t\t\t\t\t'Generic label for block inserter button'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsetIsInserterOpened((isOpen) => !isOpen)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<MoreMenu />\n\t\t\t\t</NavigableToolbar>\n\t\t\t</div>\n\n\t\t\t{createPortal(\n\t\t\t\t<Inserter setIsOpened={setIsInserterOpened} />,\n\t\t\t\tinserter.contentContainer[0]\n\t\t\t)}\n\t\t</>\n\t)\n}\n\nexport default Header\n","/**\n * Internal dependencies\n */\nimport isShallowEqualObjects from './objects';\nimport isShallowEqualArrays from './arrays';\nexport { default as isShallowEqualObjects } from './objects';\nexport { default as isShallowEqualArrays } from './arrays';\n/**\n * @typedef {Record<string, any>} ComparableObject\n */\n\n/**\n * Returns true if the two arrays or objects are shallow equal, or false\n * otherwise.\n *\n * @param {any[]|ComparableObject} a First object or array to compare.\n * @param {any[]|ComparableObject} b Second object or array to compare.\n *\n * @return {boolean} Whether the two values are shallow equal.\n */\n\nexport default function isShallowEqual(a, b) {\n if (a && b) {\n if (a.constructor === Object && b.constructor === Object) {\n return isShallowEqualObjects(a, b);\n } else if (Array.isArray(a) && Array.isArray(b)) {\n return isShallowEqualArrays(a, b);\n }\n }\n\n return a === b;\n}\n//# sourceMappingURL=index.js.map","/**\n * Returns true if the two objects are shallow equal, or false otherwise.\n *\n * @param {import('.').ComparableObject} a First object to compare.\n * @param {import('.').ComparableObject} b Second object to compare.\n *\n * @return {boolean} Whether the two objects are shallow equal.\n */\nexport default function isShallowEqualObjects(a, b) {\n if (a === b) {\n return true;\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n let i = 0;\n\n while (i < aKeys.length) {\n const key = aKeys[i];\n const aValue = a[key];\n\n if ( // In iterating only the keys of the first object after verifying\n // equal lengths, account for the case that an explicit `undefined`\n // value in the first is implicitly undefined in the second.\n //\n // Example: isShallowEqualObjects( { a: undefined }, { b: 5 } )\n aValue === undefined && !b.hasOwnProperty(key) || aValue !== b[key]) {\n return false;\n }\n\n i++;\n }\n\n return true;\n}\n//# sourceMappingURL=objects.js.map","/**\n * Returns true if the two arrays are shallow equal, or false otherwise.\n *\n * @param {any[]} a First array to compare.\n * @param {any[]} b Second array to compare.\n *\n * @return {boolean} Whether the two arrays are shallow equal.\n */\nexport default function isShallowEqualArrays(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0, len = a.length; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=arrays.js.map","// @ts-check\n/**\n * WordPress dependencies\n */\nimport { serialize, parse, createBlock } from '@wordpress/blocks'\nimport { addWidgetIdToBlock } from '@wordpress/widgets'\n\n/**\n * External dependencies\n */\nimport { omit } from 'lodash'\n\n/**\n * Convert settingId to widgetId.\n *\n * @param {string} settingId The setting id.\n * @return {string} The widget id.\n */\nexport function settingIdToWidgetId(settingId) {\n\tconst matches = settingId.match(/^widget_(.+)(?:\\[(\\d+)\\])$/)\n\n\tif (matches) {\n\t\tconst idBase = matches[1]\n\t\tconst number = parseInt(matches[2], 10)\n\n\t\treturn `${idBase}-${number}`\n\t}\n\n\treturn settingId\n}\n\n/**\n * Transform a block to a customizable widget.\n *\n * @param {WPBlock} block The block to be transformed from.\n * @param {Object} existingWidget The widget to be extended from.\n * @return {Object} The transformed widget.\n */\nexport function blockToWidget(block, existingWidget = null) {\n\tlet widget\n\n\tconst isValidLegacyWidgetBlock =\n\t\tblock.name === 'core/legacy-widget' &&\n\t\t(block.attributes.id || block.attributes.instance)\n\n\tif (isValidLegacyWidgetBlock) {\n\t\tif (block.attributes.id) {\n\t\t\t// Widget that does not extend WP_Widget.\n\t\t\twidget = {\n\t\t\t\tid: block.attributes.id,\n\t\t\t}\n\t\t} else {\n\t\t\tconst { encoded, hash, raw, ...rest } = block.attributes.instance\n\n\t\t\t// Widget that extends WP_Widget.\n\t\t\twidget = {\n\t\t\t\tidBase: block.attributes.idBase,\n\t\t\t\tinstance: {\n\t\t\t\t\t...existingWidget?.instance,\n\t\t\t\t\t// Required only for the customizer.\n\t\t\t\t\tis_widget_customizer_js_value: true,\n\t\t\t\t\tencoded_serialized_instance: encoded,\n\t\t\t\t\tinstance_hash_key: hash,\n\t\t\t\t\traw_instance: raw,\n\t\t\t\t\t...rest,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst instance = {\n\t\t\tcontent: serialize(block),\n\t\t}\n\t\twidget = {\n\t\t\tidBase: 'block',\n\t\t\twidgetClass: 'WP_Widget_Block',\n\t\t\tinstance: {\n\t\t\t\traw_instance: instance,\n\t\t\t},\n\t\t}\n\t}\n\n\treturn {\n\t\t...omit(existingWidget, ['form', 'rendered']),\n\t\t...widget,\n\t}\n}\n\n/**\n * Transform a widget to a block.\n *\n * @param {Object} widget The widget to be transformed from.\n * @param {string} widget.id The widget id.\n * @param {string} widget.idBase The id base of the widget.\n * @param {number} widget.number The number/index of the widget.\n * @param {Object} widget.instance The instance of the widget.\n * @return {WPBlock} The transformed block.\n */\nexport function widgetToBlock({ id, idBase, number, instance }) {\n\tlet block\n\n\tconst {\n\t\tencoded_serialized_instance: encoded,\n\t\tinstance_hash_key: hash,\n\t\traw_instance: raw,\n\t\t...rest\n\t} = instance\n\n\tif (idBase === 'block') {\n\t\tconst parsedBlocks = parse(raw.content)\n\t\tblock = parsedBlocks.length\n\t\t\t? parsedBlocks[0]\n\t\t\t: createBlock('core/paragraph', {})\n\t} else if (number) {\n\t\t// Widget that extends WP_Widget.\n\t\tblock = createBlock('core/legacy-widget', {\n\t\t\tidBase,\n\t\t\tinstance: {\n\t\t\t\tencoded,\n\t\t\t\thash,\n\t\t\t\traw,\n\t\t\t\t...rest,\n\t\t\t},\n\t\t})\n\t} else {\n\t\t// Widget that does not extend WP_Widget.\n\t\tblock = createBlock('core/legacy-widget', {\n\t\t\tid,\n\t\t})\n\t}\n\n\treturn addWidgetIdToBlock(block, id)\n}\n","import { createElement } from '@wordpress/element'\n/**\n * WordPress dependencies\n */\nimport { BlockEditorProvider } from '@wordpress/block-editor'\n\n/**\n * Internal dependencies\n */\nimport useSidebarBlockEditor from './use-sidebar-block-editor'\n\nexport default function SidebarEditorProvider({ sidebar, settings, children }) {\n\tconst [blocks, onInput, onChange] = useSidebarBlockEditor(sidebar)\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tvalue={blocks}\n\t\t\tonInput={onInput}\n\t\t\tonChange={onChange}\n\t\t\tsettings={settings}\n\t\t\tuseSubRegistry={false}>\n\t\t\t{children}\n\t\t</BlockEditorProvider>\n\t)\n}\n","/**\n * External dependencies\n */\nimport { isEqual } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element'\nimport isShallowEqual from '@wordpress/is-shallow-equal'\nimport { getWidgetIdFromBlock, addWidgetIdToBlock } from '@wordpress/widgets'\n\n/**\n * Internal dependencies\n */\nimport { blockToWidget, widgetToBlock } from '../../utils'\n\nfunction widgetsToBlocks(widgets) {\n\treturn widgets.map((widget) => widgetToBlock(widget))\n}\n\nexport default function useSidebarBlockEditor(sidebar) {\n\tconst [blocks, setBlocks] = useState(() =>\n\t\twidgetsToBlocks(sidebar.getWidgets())\n\t)\n\n\tuseEffect(() => {\n\t\treturn sidebar.subscribe((prevWidgets, nextWidgets) => {\n\t\t\tsetBlocks((prevBlocks) => {\n\t\t\t\tconst prevWidgetsMap = new Map(\n\t\t\t\t\tprevWidgets.map((widget) => [widget.id, widget])\n\t\t\t\t)\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map((block) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock(block),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t])\n\t\t\t\t)\n\n\t\t\t\tconst nextBlocks = nextWidgets.map((nextWidget) => {\n\t\t\t\t\tconst prevWidget = prevWidgetsMap.get(nextWidget.id)\n\n\t\t\t\t\t// Bail out updates.\n\t\t\t\t\tif (prevWidget && prevWidget === nextWidget) {\n\t\t\t\t\t\treturn prevBlocksMap.get(nextWidget.id)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn widgetToBlock(nextWidget)\n\t\t\t\t})\n\n\t\t\t\t// Bail out updates.\n\t\t\t\tif (isShallowEqual(prevBlocks, nextBlocks)) {\n\t\t\t\t\treturn prevBlocks\n\t\t\t\t}\n\n\t\t\t\treturn nextBlocks\n\t\t\t})\n\t\t})\n\t}, [sidebar])\n\n\tconst onChangeBlocks = useCallback(\n\t\t(nextBlocks) => {\n\t\t\tsetBlocks((prevBlocks) => {\n\t\t\t\tif (isShallowEqual(prevBlocks, nextBlocks)) {\n\t\t\t\t\treturn prevBlocks\n\t\t\t\t}\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map((block) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock(block),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t])\n\t\t\t\t)\n\n\t\t\t\tconst nextWidgets = nextBlocks.map((nextBlock) => {\n\t\t\t\t\tconst widgetId = getWidgetIdFromBlock(nextBlock)\n\n\t\t\t\t\t// Update existing widgets.\n\t\t\t\t\tif (widgetId && prevBlocksMap.has(widgetId)) {\n\t\t\t\t\t\tconst prevBlock = prevBlocksMap.get(widgetId)\n\t\t\t\t\t\tconst prevWidget = sidebar.getWidget(widgetId)\n\n\t\t\t\t\t\t// Bail out updates by returning the previous widgets.\n\t\t\t\t\t\t// Deep equality is necessary until the block editor's internals changes.\n\t\t\t\t\t\tif (isEqual(nextBlock, prevBlock) && prevWidget) {\n\t\t\t\t\t\t\treturn prevWidget\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blockToWidget(nextBlock, prevWidget)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a new widget.\n\t\t\t\t\treturn blockToWidget(nextBlock)\n\t\t\t\t})\n\n\t\t\t\t// Bail out updates if the updated widgets are the same.\n\t\t\t\tif (isShallowEqual(sidebar.getWidgets(), nextWidgets)) {\n\t\t\t\t\treturn prevBlocks\n\t\t\t\t}\n\n\t\t\t\tconst addedWidgetIds = sidebar.setWidgets(nextWidgets)\n\n\t\t\t\treturn nextBlocks.reduce(\n\t\t\t\t\t(updatedNextBlocks, nextBlock, index) => {\n\t\t\t\t\t\tconst addedWidgetId = addedWidgetIds[index]\n\n\t\t\t\t\t\tif (addedWidgetId !== null) {\n\t\t\t\t\t\t\t// Only create a new instance if necessary to prevent\n\t\t\t\t\t\t\t// the whole editor from re-rendering on every edit.\n\t\t\t\t\t\t\tif (updatedNextBlocks === nextBlocks) {\n\t\t\t\t\t\t\t\tupdatedNextBlocks = nextBlocks.slice()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdatedNextBlocks[index] = addWidgetIdToBlock(\n\t\t\t\t\t\t\t\tnextBlock,\n\t\t\t\t\t\t\t\taddedWidgetId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn updatedNextBlocks\n\t\t\t\t\t},\n\t\t\t\t\tnextBlocks\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[sidebar]\n\t)\n\n\treturn [blocks, onChangeBlocks, onChangeBlocks]\n}\n","import { createElement } from '@wordpress/element'\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport { Button, ExternalLink } from '@wordpress/components'\nimport { useDispatch } from '@wordpress/data'\n\nimport { store as interfaceStore } from '../more-menu/interface/store'\n\nexport default function WelcomeGuide({ sidebar }) {\n\tconst { toggleFeature } = useDispatch(interfaceStore)\n\n\tconst isEntirelyBlockWidgets = sidebar\n\t\t.getWidgets()\n\t\t.every((widget) => widget.id.startsWith('block-'))\n\n\treturn (\n\t\t<div className=\"customize-widgets-welcome-guide\">\n\t\t\t<div className=\"customize-widgets-welcome-guide__image__wrapper\">\n\t\t\t\t<picture>\n\t\t\t\t\t<source\n\t\t\t\t\t\tsrcSet=\"https://s.w.org/images/block-editor/welcome-editor.svg\"\n\t\t\t\t\t\tmedia=\"(prefers-reduced-motion: reduce)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName=\"customize-widgets-welcome-guide__image\"\n\t\t\t\t\t\tsrc=\"https://s.w.org/images/block-editor/welcome-editor.gif\"\n\t\t\t\t\t\twidth=\"312\"\n\t\t\t\t\t\theight=\"240\"\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t/>\n\t\t\t\t</picture>\n\t\t\t</div>\n\t\t\t<h1 className=\"customize-widgets-welcome-guide__heading\">\n\t\t\t\t{__('Welcome to block Widgets')}\n\t\t\t</h1>\n\t\t\t<p className=\"customize-widgets-welcome-guide__text\">\n\t\t\t\t{isEntirelyBlockWidgets\n\t\t\t\t\t? __(\n\t\t\t\t\t\t\t'Your theme provides different “block” areas for you to add and edit content. Try adding a search bar, social icons, or other types of blocks here and see how they’ll look on your site.'\n\t\t\t\t\t )\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'You can now add any block to your site’s widget areas. Don’t worry, all of your favorite widgets still work flawlessly.'\n\t\t\t\t\t )}\n\t\t\t</p>\n\t\t\t<Button\n\t\t\t\tclassName=\"customize-widgets-welcome-guide__button\"\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={() =>\n\t\t\t\t\ttoggleFeature('core/customize-widgets', 'welcomeGuide')\n\t\t\t\t}>\n\t\t\t\t{__('Got it')}\n\t\t\t</Button>\n\t\t\t<hr className=\"customize-widgets-welcome-guide__separator\" />\n\t\t\t{!isEntirelyBlockWidgets && (\n\t\t\t\t<p className=\"customize-widgets-welcome-guide__more-info\">\n\t\t\t\t\t{__('Want to stick with the old widgets?')}\n\t\t\t\t\t<br />\n\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\thref={__(\n\t\t\t\t\t\t\t'https://wordpress.org/plugins/classic-widgets/'\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t{__('Get the Classic Widgets plugin.')}\n\t\t\t\t\t</ExternalLink>\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<p className=\"customize-widgets-welcome-guide__more-info\">\n\t\t\t\t{__('New to the block editor?')}\n\t\t\t\t<br />\n\t\t\t\t<ExternalLink\n\t\t\t\t\thref={__(\n\t\t\t\t\t\t'https://wordpress.org/support/article/wordpress-editor/'\n\t\t\t\t\t)}>\n\t\t\t\t\t{__(\"Here's a detailed guide.\")}\n\t\t\t\t</ExternalLink>\n\t\t\t</p>\n\t\t</div>\n\t)\n}\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element'\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts'\nimport { useDispatch } from '@wordpress/data'\nimport { __ } from 'ct-i18n'\n\nfunction KeyboardShortcuts({ undo, redo, save }) {\n\tuseShortcut('core/customize-widgets/undo', (event) => {\n\t\tundo()\n\t\tevent.preventDefault()\n\t})\n\n\tuseShortcut('core/customize-widgets/redo', (event) => {\n\t\tredo()\n\t\tevent.preventDefault()\n\t})\n\n\tuseShortcut('core/customize-widgets/save', (event) => {\n\t\tevent.preventDefault()\n\t\tsave()\n\t})\n\n\treturn null\n}\n\nfunction KeyboardShortcutsRegister() {\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t)\n\n\tuseEffect(() => {\n\t\tregisterShortcut({\n\t\t\tname: 'core/customize-widgets/undo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __('Undo your last changes.', 'blocksy'),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t})\n\n\t\tregisterShortcut({\n\t\t\tname: 'core/customize-widgets/redo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __('Redo your last undo.', 'blocksy'),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t})\n\n\t\tregisterShortcut({\n\t\t\tname: 'core/customize-widgets/save',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __('Save your changes.', 'blocksy'),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t})\n\n\t\treturn () => {\n\t\t\tunregisterShortcut('core/customize-widgets/undo')\n\t\t\tunregisterShortcut('core/customize-widgets/redo')\n\t\t\tunregisterShortcut('core/customize-widgets/save')\n\t\t}\n\t}, [registerShortcut])\n\n\treturn null\n}\n\nKeyboardShortcuts.Register = KeyboardShortcutsRegister\nexport default KeyboardShortcuts\n","import { createElement } from '@wordpress/element'\n/**\n * External dependencies\n */\nimport { defaultTo } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data'\nimport { useSelect } from '@wordpress/data'\nimport { useMemo, createPortal } from '@wordpress/element'\nimport {\n\tBlockList,\n\tBlockTools,\n\tBlockSelectionClearer,\n\tBlockInspector,\n\tCopyHandler,\n\tObserveTyping,\n\tWritingFlow,\n\tBlockEditorKeyboardShortcuts,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__unstableEditorStyles as EditorStyles,\n} from '@wordpress/block-editor'\nimport { uploadMedia } from '@wordpress/media-utils'\n\nimport { store as interfaceStore } from '../more-menu/interface/store'\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from '../block-inspector-button'\nimport Header from '../header'\nimport useInserter from '../inserter/use-inserter'\nimport SidebarEditorProvider from './sidebar-editor-provider'\nimport WelcomeGuide from '../welcome-guide'\nimport KeyboardShortcuts from '../keyboard-shortcuts'\n\nimport { ButtonBlockAppender } from '@wordpress/block-editor'\n\nexport default function SidebarBlockEditor({\n\tblockEditorSettings,\n\tsidebar,\n\tinserter,\n\tinspector,\n}) {\n\tconst [isInserterOpened, setIsInserterOpened] = useInserter(inserter)\n\n\tconst {\n\t\thasUploadPermissions,\n\t\tisFixedToolbarActive,\n\t\tkeepCaretInsideBlock,\n\t\tisWelcomeGuideActive,\n\t} = useSelect((select) => {\n\t\tconst { isFeatureActive } = select(interfaceStore)\n\t\treturn {\n\t\t\thasUploadPermissions: defaultTo(\n\t\t\t\tselect(coreStore).canUser('create', 'media'),\n\t\t\t\ttrue\n\t\t\t),\n\t\t\tisFixedToolbarActive: isFeatureActive(\n\t\t\t\t'core/customize-widgets',\n\t\t\t\t'fixedToolbar'\n\t\t\t),\n\t\t\tkeepCaretInsideBlock: isFeatureActive(\n\t\t\t\t'core/customize-widgets',\n\t\t\t\t'keepCaretInsideBlock'\n\t\t\t),\n\t\t\tisWelcomeGuideActive: isFeatureActive(\n\t\t\t\t'core/customize-widgets',\n\t\t\t\t'welcomeGuide'\n\t\t\t),\n\t\t}\n\t}, [])\n\n\tconst settings = useMemo(() => {\n\t\tlet mediaUploadBlockEditor\n\n\t\tif (hasUploadPermissions) {\n\t\t\tmediaUploadBlockEditor = ({ onError, ...argumentsObject }) => {\n\t\t\t\tuploadMedia({\n\t\t\t\t\twpAllowedMimeTypes: blockEditorSettings.allowedMimeTypes,\n\t\t\t\t\tonError: ({ message }) => onError(message),\n\t\t\t\t\t...argumentsObject,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t...blockEditorSettings,\n\t\t\t__experimentalSetIsInserterOpened: (a) => {\n\t\t\t\treturn setIsInserterOpened(a)\n\t\t\t},\n\t\t\tmediaUpload: mediaUploadBlockEditor,\n\t\t\thasFixedToolbar: isFixedToolbarActive,\n\t\t\tkeepCaretInsideBlock,\n\t\t\t__unstableHasCustomAppender: true,\n\t\t}\n\t}, [\n\t\thasUploadPermissions,\n\t\tblockEditorSettings,\n\t\tisFixedToolbarActive,\n\t\tkeepCaretInsideBlock,\n\t\tsetIsInserterOpened,\n\t])\n\n\tif (isWelcomeGuideActive) {\n\t\treturn <WelcomeGuide sidebar={sidebar} />\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockEditorKeyboardShortcuts.Register />\n\t\t\t<KeyboardShortcuts.Register />\n\n\t\t\t<SidebarEditorProvider sidebar={sidebar} settings={settings}>\n\t\t\t\t<KeyboardShortcuts\n\t\t\t\t\tundo={sidebar.undo}\n\t\t\t\t\tredo={sidebar.redo}\n\t\t\t\t\tsave={sidebar.save}\n\t\t\t\t/>\n\n\t\t\t\t<Header\n\t\t\t\t\tsidebar={sidebar}\n\t\t\t\t\tinserter={inserter}\n\t\t\t\t\tisInserterOpened={isInserterOpened}\n\t\t\t\t\tsetIsInserterOpened={setIsInserterOpened}\n\t\t\t\t\tisFixedToolbarActive={isFixedToolbarActive}\n\t\t\t\t/>\n\n\t\t\t\t<CopyHandler>\n\t\t\t\t\t<BlockTools>\n\t\t\t\t\t\t<EditorStyles styles={settings.defaultEditorStyles} />\n\t\t\t\t\t\t<BlockSelectionClearer>\n\t\t\t\t\t\t\t<WritingFlow className=\"editor-styles-wrapper\">\n\t\t\t\t\t\t\t\t<ObserveTyping>\n\t\t\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\t\t\trenderAppender={ButtonBlockAppender}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</ObserveTyping>\n\t\t\t\t\t\t\t</WritingFlow>\n\t\t\t\t\t\t</BlockSelectionClearer>\n\t\t\t\t\t</BlockTools>\n\t\t\t\t</CopyHandler>\n\n\t\t\t\t{createPortal(\n\t\t\t\t\t// This is a temporary hack to prevent button component inside <BlockInspector>\n\t\t\t\t\t// from submitting form when type=\"button\" is not specified.\n\t\t\t\t\t<form onSubmit={(event) => event.preventDefault()}>\n\t\t\t\t\t\t<BlockInspector />\n\t\t\t\t\t</form>,\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t\t'.ct-tmp-panel-wrapper .ct-customizer-panel'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.lastElementChild.querySelector(\n\t\t\t\t\t\t\t'.customizer-panel-content'\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</SidebarEditorProvider>\n\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{({ onClose }) => (\n\t\t\t\t\t<BlockInspectorButton\n\t\t\t\t\t\tinspector={inspector}\n\t\t\t\t\t\tcloseMenu={onClose}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</>\n\t)\n}\n","/**\n * WordPress dependencies\n */\nimport { useEffect, useCallback } from '@wordpress/element'\nimport { useSelect, useDispatch, select as selectStore } from '@wordpress/data'\n\n/**\n * Internal dependencies\n */\nimport { store as customizeWidgetsStore } from '../../store'\n\nexport default function useInserter(inserter) {\n\tconst isInserterOpened = useSelect(\n\t\t(select) => select(customizeWidgetsStore).isInserterOpened(),\n\t\t[]\n\t)\n\tconst { setIsInserterOpened } = useDispatch(customizeWidgetsStore)\n\n\tuseEffect(() => {\n\t\tif (isInserterOpened) {\n\t\t\tinserter.open()\n\t\t} else {\n\t\t\tinserter.close()\n\t\t}\n\t}, [inserter, isInserterOpened])\n\n\treturn [\n\t\tisInserterOpened,\n\t\tuseCallback(\n\t\t\t(updater) => {\n\t\t\t\tlet isOpen = updater\n\n\t\t\t\tif (typeof updater === 'function') {\n\t\t\t\t\tisOpen = updater(\n\t\t\t\t\t\tselectStore(customizeWidgetsStore).isInserterOpened()\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tsetIsInserterOpened(isOpen)\n\t\t\t},\n\t\t\t[setIsInserterOpened]\n\t\t),\n\t]\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseState,\n\tuseEffect,\n\tuseContext,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element'\n\n/**\n * Internal dependencies\n */\nimport { settingIdToWidgetId } from '../../utils'\n\nconst FocusControlContext = createContext()\n\nexport default function FocusControl({ api, sidebarControls, children }) {\n\tconst [focusedWidgetIdRef, setFocusedWidgetIdRef] = useState({\n\t\tcurrent: null,\n\t})\n\n\tconst focusWidget = useCallback(\n\t\t(widgetId) => {\n\t\t\tfor (const sidebarControl of sidebarControls) {\n\t\t\t\tconst widgets = sidebarControl.setting.get()\n\n\t\t\t\tif (widgets.includes(widgetId)) {\n\t\t\t\t\tsidebarControl.sectionInstance.expand({\n\t\t\t\t\t\t// Schedule it after the complete callback so that\n\t\t\t\t\t\t// it won't be overridden by the \"Back\" button focus.\n\t\t\t\t\t\tcompleteCallback() {\n\t\t\t\t\t\t\t// Create a \"ref-like\" object every time to ensure\n\t\t\t\t\t\t\t// the same widget id can also triggers the focus control.\n\t\t\t\t\t\t\tsetFocusedWidgetIdRef({ current: widgetId })\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[sidebarControls]\n\t)\n\n\tuseEffect(() => {\n\t\tfunction handleFocus(settingId) {\n\t\t\tconst widgetId = settingIdToWidgetId(settingId)\n\t\t\tfocusWidget(widgetId)\n\t\t}\n\n\t\tfunction handleReady() {\n\t\t\tapi.previewer.preview.bind('focus-control-for-setting', handleFocus)\n\t\t}\n\n\t\tapi.previewer.bind('ready', handleReady)\n\n\t\treturn () => {\n\t\t\tapi.previewer.unbind('ready', handleReady)\n\t\t\tapi.previewer.preview.unbind(\n\t\t\t\t'focus-control-for-setting',\n\t\t\t\thandleFocus\n\t\t\t)\n\t\t}\n\t}, [api, focusWidget])\n\n\tconst context = useMemo(() => [focusedWidgetIdRef, focusWidget], [\n\t\tfocusedWidgetIdRef,\n\t\tfocusWidget,\n\t])\n\n\treturn (\n\t\t<FocusControlContext.Provider value={context}>\n\t\t\t{children}\n\t\t</FocusControlContext.Provider>\n\t)\n}\n\nexport const useFocusControl = () => useContext(FocusControlContext)\n","/**\n * WordPress dependencies\n */\nimport {\n\tcreateElement,\n\tcreateContext,\n\tuseMemo,\n\tuseContext,\n} from '@wordpress/element'\n\nexport const SidebarControlsContext = createContext()\n\nexport default function SidebarControls({\n\tsidebarControls,\n\tactiveSidebarControl,\n\tchildren,\n}) {\n\tconst context = useMemo(\n\t\t() => ({\n\t\t\tsidebarControls,\n\t\t\tactiveSidebarControl,\n\t\t}),\n\t\t[sidebarControls, activeSidebarControl]\n\t)\n\n\treturn (\n\t\t<SidebarControlsContext.Provider value={context}>\n\t\t\t{children}\n\t\t</SidebarControlsContext.Provider>\n\t)\n}\n\nexport function useSidebarControls() {\n\tconst { sidebarControls } = useContext(SidebarControlsContext)\n\treturn sidebarControls\n}\n\nexport function useActiveSidebarControl() {\n\tconst { activeSidebarControl } = useContext(SidebarControlsContext)\n\treturn activeSidebarControl\n}\n","/**\n * Internal dependencies\n */\nimport { settingIdToWidgetId } from '../../utils'\n\nconst { wp } = window\n\nfunction parseWidgetId(widgetId) {\n\tconst matches = widgetId.match(/^(.+)-(\\d+)$/)\n\tif (matches) {\n\t\treturn {\n\t\t\tidBase: matches[1],\n\t\t\tnumber: parseInt(matches[2], 10),\n\t\t}\n\t}\n\n\t// Likely an old single widget.\n\treturn { idBase: widgetId }\n}\n\nfunction widgetIdToSettingId(widgetId) {\n\tconst { idBase, number } = parseWidgetId(widgetId)\n\tif (number) {\n\t\treturn `widget_${idBase}[${number}]`\n\t}\n\n\treturn `widget_${idBase}`\n}\n\n/**\n * This is a custom debounce function to call different callbacks depending on\n * whether it's the _leading_ call or not.\n *\n * @param {Function} leading The callback that gets called first.\n * @param {Function} callback The callback that gets called after the first time.\n * @param {number} timeout The debounced time in milliseconds.\n * @return {Function} The debounced function.\n */\nfunction debounce(leading, callback, timeout) {\n\tlet isLeading = false\n\tlet timerID\n\n\tfunction debounced(...args) {\n\t\tconst result = (isLeading ? callback : leading).apply(this, args)\n\n\t\tisLeading = true\n\n\t\tclearTimeout(timerID)\n\n\t\ttimerID = setTimeout(() => {\n\t\t\tisLeading = false\n\t\t}, timeout)\n\n\t\treturn result\n\t}\n\n\tdebounced.cancel = () => {\n\t\tisLeading = false\n\t\tclearTimeout(timerID)\n\t}\n\n\treturn debounced\n}\n\nexport default class SidebarAdapter {\n\tconstructor(setting, api) {\n\t\tthis.setting = setting\n\t\tthis.api = wp.customize\n\n\t\tthis.locked = false\n\t\tthis.widgetsCache = new WeakMap()\n\t\tthis.subscribers = new Set()\n\n\t\tthis.history = [\n\t\t\tthis._getWidgetIds().map((widgetId) => this.getWidget(widgetId)),\n\t\t]\n\t\tthis.historyIndex = 0\n\t\tthis.historySubscribers = new Set()\n\t\t// Debounce the input for 1 second.\n\t\tthis._debounceSetHistory = debounce(\n\t\t\tthis._pushHistory,\n\t\t\tthis._replaceHistory,\n\t\t\t1000\n\t\t)\n\n\t\tthis.setting.bind(this._handleSettingChange.bind(this))\n\t\tthis.api.bind('change', this._handleAllSettingsChange.bind(this))\n\n\t\tthis.undo = this.undo.bind(this)\n\t\tthis.redo = this.redo.bind(this)\n\t\tthis.save = this.save.bind(this)\n\t}\n\n\tsubscribe(callback) {\n\t\tthis.subscribers.add(callback)\n\n\t\treturn () => {\n\t\t\tthis.subscribers.delete(callback)\n\t\t}\n\t}\n\n\tgetWidgets() {\n\t\treturn this.history[this.historyIndex]\n\t}\n\n\t_emit(...args) {\n\t\tfor (const callback of this.subscribers) {\n\t\t\tcallback(...args)\n\t\t}\n\t}\n\n\t_getWidgetIds() {\n\t\treturn this.setting.get()\n\t}\n\n\t_pushHistory() {\n\t\tthis.history = [\n\t\t\t...this.history.slice(0, this.historyIndex + 1),\n\t\t\tthis._getWidgetIds().map((widgetId) => this.getWidget(widgetId)),\n\t\t]\n\t\tthis.historyIndex += 1\n\n\t\tthis.historySubscribers.forEach((listener) => listener())\n\t}\n\n\t_replaceHistory() {\n\t\tthis.history[this.historyIndex] = this._getWidgetIds().map((widgetId) =>\n\t\t\tthis.getWidget(widgetId)\n\t\t)\n\t}\n\n\t_handleSettingChange() {\n\t\tif (this.locked) {\n\t\t\treturn\n\t\t}\n\n\t\tconst prevWidgets = this.getWidgets()\n\n\t\tthis._pushHistory()\n\n\t\tthis._emit(prevWidgets, this.getWidgets())\n\t}\n\n\t_handleAllSettingsChange(setting) {\n\t\tif (this.locked) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!setting.id.startsWith('widget_')) {\n\t\t\treturn\n\t\t}\n\n\t\tconst widgetId = settingIdToWidgetId(setting.id)\n\t\tif (!this.setting.get().includes(widgetId)) {\n\t\t\treturn\n\t\t}\n\n\t\tconst prevWidgets = this.getWidgets()\n\n\t\tthis._pushHistory()\n\n\t\tthis._emit(prevWidgets, this.getWidgets())\n\t}\n\n\t_createWidget(widget) {\n\t\tconst widgetModel = wp.customize.Widgets.availableWidgets.findWhere({\n\t\t\tid_base: widget.idBase,\n\t\t})\n\n\t\tlet number = widget.number\n\t\tif (widgetModel.get('is_multi') && !number) {\n\t\t\twidgetModel.set('multi_number', widgetModel.get('multi_number') + 1)\n\t\t\tnumber = widgetModel.get('multi_number')\n\t\t}\n\n\t\tconst settingId = number\n\t\t\t? `widget_${widget.idBase}[${number}]`\n\t\t\t: `widget_${widget.idBase}`\n\n\t\tconst settingArgs = {\n\t\t\ttransport: wp.customize.Widgets.data.selectiveRefreshableWidgets[\n\t\t\t\twidgetModel.get('id_base')\n\t\t\t]\n\t\t\t\t? 'postMessage'\n\t\t\t\t: 'refresh',\n\t\t\tpreviewer: this.setting.previewer,\n\t\t}\n\t\tconst setting = this.api.create(settingId, settingId, '', settingArgs)\n\t\tsetting.set(widget.instance)\n\n\t\tconst widgetId = settingIdToWidgetId(settingId)\n\n\t\treturn widgetId\n\t}\n\n\t_removeWidget(widget) {\n\t\tconst settingId = widgetIdToSettingId(widget.id)\n\t\tconst setting = this.api(settingId)\n\n\t\tif (setting) {\n\t\t\tconst instance = setting.get()\n\t\t\tthis.widgetsCache.delete(instance)\n\t\t}\n\n\t\tthis.api.remove(settingId)\n\t}\n\n\t_updateWidget(widget) {\n\t\tconst prevWidget = this.getWidget(widget.id)\n\n\t\t// Bail out update if nothing changed.\n\t\tif (prevWidget === widget) {\n\t\t\treturn widget.id\n\t\t}\n\n\t\t// Update existing setting if only the widget's instance changed.\n\t\tif (\n\t\t\tprevWidget.idBase &&\n\t\t\twidget.idBase &&\n\t\t\tprevWidget.idBase === widget.idBase\n\t\t) {\n\t\t\tconst settingId = widgetIdToSettingId(widget.id)\n\t\t\tthis.api(settingId).set(widget.instance)\n\t\t\treturn widget.id\n\t\t}\n\n\t\t// Otherwise delete and re-create.\n\t\tthis._removeWidget(widget)\n\t\treturn this._createWidget(widget)\n\t}\n\n\tgetWidget(widgetId) {\n\t\tif (!widgetId) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst { idBase, number } = parseWidgetId(widgetId)\n\t\tconst settingId = widgetIdToSettingId(widgetId)\n\t\tconst setting = this.api(settingId)\n\n\t\tif (!setting) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst instance = setting.get()\n\n\t\tif (this.widgetsCache.has(instance)) {\n\t\t\treturn this.widgetsCache.get(instance)\n\t\t}\n\n\t\tconst widget = {\n\t\t\tid: widgetId,\n\t\t\tidBase,\n\t\t\tnumber,\n\t\t\tinstance,\n\t\t}\n\n\t\tthis.widgetsCache.set(instance, widget)\n\n\t\treturn widget\n\t}\n\n\t_updateWidgets(nextWidgets) {\n\t\tthis.locked = true\n\n\t\tconst addedWidgetIds = []\n\n\t\tconst nextWidgetIds = nextWidgets.map((nextWidget) => {\n\t\t\tif (nextWidget.id && this.getWidget(nextWidget.id)) {\n\t\t\t\taddedWidgetIds.push(null)\n\n\t\t\t\treturn this._updateWidget(nextWidget)\n\t\t\t}\n\n\t\t\tconst widgetId = this._createWidget(nextWidget)\n\n\t\t\taddedWidgetIds.push(widgetId)\n\n\t\t\treturn widgetId\n\t\t})\n\n\t\tconst deletedWidgets = this.getWidgets().filter(\n\t\t\t(widget) => !nextWidgetIds.includes(widget.id)\n\t\t)\n\t\tdeletedWidgets.forEach((widget) => this._removeWidget(widget))\n\n\t\tthis.setting.set(nextWidgetIds)\n\n\t\tthis.locked = false\n\n\t\treturn addedWidgetIds\n\t}\n\n\tsetWidgets(nextWidgets) {\n\t\tconst addedWidgetIds = this._updateWidgets(nextWidgets)\n\n\t\tthis._debounceSetHistory()\n\n\t\treturn addedWidgetIds\n\t}\n\n\t/**\n\t * Undo/Redo related features\n\t */\n\thasUndo() {\n\t\treturn this.historyIndex > 0\n\t}\n\n\thasRedo() {\n\t\treturn this.historyIndex < this.history.length - 1\n\t}\n\n\t_seek(historyIndex) {\n\t\tconst currentWidgets = this.getWidgets()\n\n\t\tthis.historyIndex = historyIndex\n\n\t\tconst widgets = this.history[this.historyIndex]\n\n\t\tthis._updateWidgets(widgets)\n\n\t\tthis._emit(currentWidgets, this.getWidgets())\n\n\t\tthis.historySubscribers.forEach((listener) => listener())\n\t\tthis._debounceSetHistory.cancel()\n\t}\n\n\tundo() {\n\t\tif (!this.hasUndo()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis._seek(this.historyIndex - 1)\n\t}\n\n\tredo() {\n\t\tif (!this.hasRedo()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis._seek(this.historyIndex + 1)\n\t}\n\n\tsubscribeHistory(listener) {\n\t\tthis.historySubscribers.add(listener)\n\n\t\treturn () => {\n\t\t\tthis.historySubscribers.delete(listener)\n\t\t}\n\t}\n\n\tsave() {\n\t\tthis.api.previewer.save()\n\t}\n}\n","import { createElement } from '@wordpress/element'\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, createPortal } from '@wordpress/element'\nimport { ShortcutProvider } from '@wordpress/keyboard-shortcuts'\n\n/**\n * Internal dependencies\n */\nimport ErrorBoundary from '../error-boundary'\nimport SidebarBlockEditor from '../sidebar-block-editor'\nimport FocusControl from '../focus-control'\nimport SidebarControls from '../sidebar-controls'\n\nimport SidebarAdapter from '../sidebar-block-editor/sidebar-adapter'\n\nlet cacheForAdapters = {}\n\nconst CustomizeWidgets = ({ sidebarId }) => {\n\tconst blockEditorSettings = window.blocksyWidgetsBlockEditorSettings\n\tconst popoverRef = useRef()\n\n\tconst sidebarControls = Object.values(wp.customize.control._value).filter(\n\t\t(v) => v.constructor.name === 'SidebarControl'\n\t)\n\n\tconst activeSidebarControl = wp.customize.control(\n\t\t`sidebars_widgets[${sidebarId}]`\n\t)\n\n\tlet sidebarAdapter = null\n\n\tif (!cacheForAdapters[sidebarId]) {\n\t\tcacheForAdapters[sidebarId] = new SidebarAdapter(\n\t\t\tactiveSidebarControl.setting\n\t\t)\n\t}\n\n\tconst activeSidebar = (\n\t\t<ErrorBoundary>\n\t\t\t<SidebarBlockEditor\n\t\t\t\tkey={sidebarId}\n\t\t\t\tsidebarId={sidebarId}\n\t\t\t\tblockEditorSettings={blockEditorSettings}\n\t\t\t\tsidebar={cacheForAdapters[sidebarId]}\n\t\t\t\tinserter={activeSidebarControl.inserter}\n\t\t\t\tinspector={activeSidebarControl.inspector}\n\t\t\t/>\n\t\t</ErrorBoundary>\n\t)\n\n\treturn (\n\t\t<ShortcutProvider>\n\t\t\t<SidebarControls\n\t\t\t\tsidebarControls={[]}\n\t\t\t\tactiveSidebarControl={activeSidebarControl}>\n\t\t\t\t{activeSidebar}\n\t\t\t</SidebarControls>\n\t\t</ShortcutProvider>\n\t)\n}\n\nexport default CustomizeWidgets\n","/**\n * External dependencies\n */\nimport { without } from 'lodash'\n\n/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element'\nimport {\n\tBlockControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor'\nimport { createHigherOrderComponent } from '@wordpress/compose'\nimport { useSelect, useDispatch } from '@wordpress/data'\nimport { addFilter, removeFilter } from '@wordpress/hooks'\nimport { MoveToWidgetArea, getWidgetIdFromBlock } from '@wordpress/widgets'\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseSidebarControls,\n\tuseActiveSidebarControl,\n} from '../components/sidebar-controls'\nimport { useFocusControl } from '../components/focus-control'\nimport { blockToWidget } from '../utils'\n\nconst withMoveToSidebarToolbarItem = createHigherOrderComponent(\n\t(BlockEdit) => (props) => {\n\t\tlet widgetId = getWidgetIdFromBlock(props)\n\n\t\tconst sidebarControls = useSidebarControls()\n\t\tconst activeSidebarControl = useActiveSidebarControl()\n\t\tconst hasMultipleSidebars = sidebarControls?.length > 1\n\t\tconst blockName = props.name\n\t\tconst clientId = props.clientId\n\t\tconst canInsertBlockInSidebar = useSelect(\n\t\t\t(select) => {\n\t\t\t\t// Use an empty string to represent the root block list, which\n\t\t\t\t// in the customizer editor represents a sidebar/widget area.\n\t\t\t\treturn select(blockEditorStore).canInsertBlockType(\n\t\t\t\t\tblockName,\n\t\t\t\t\t''\n\t\t\t\t)\n\t\t\t},\n\t\t\t[blockName]\n\t\t)\n\t\tconst block = useSelect(\n\t\t\t(select) => select(blockEditorStore).getBlock(clientId),\n\t\t\t[clientId]\n\t\t)\n\t\tconst { removeBlock } = useDispatch(blockEditorStore)\n\t\t// const [, focusWidget] = useFocusControl()\n\n\t\tfunction moveToSidebar(sidebarControlId) {\n\t\t\tconst newSidebarControl = sidebarControls.find(\n\t\t\t\t(sidebarControl) => sidebarControl.id === sidebarControlId\n\t\t\t)\n\n\t\t\tif (widgetId) {\n\t\t\t\t/**\n\t\t\t\t * If there's a widgetId, move it to the other sidebar.\n\t\t\t\t */\n\t\t\t\tconst oldSetting = activeSidebarControl.setting\n\t\t\t\tconst newSetting = newSidebarControl.setting\n\n\t\t\t\toldSetting(without(oldSetting(), widgetId))\n\t\t\t\tnewSetting([...newSetting(), widgetId])\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * If there isn't a widgetId, it's most likely a inner block.\n\t\t\t\t * First, remove the block in the original sidebar,\n\t\t\t\t * then, create a new widget in the new sidebar and get back its widgetId.\n\t\t\t\t */\n\t\t\t\tconst sidebarAdapter = newSidebarControl.sidebarAdapter\n\n\t\t\t\tremoveBlock(clientId)\n\t\t\t\tconst addedWidgetIds = sidebarAdapter.setWidgets([\n\t\t\t\t\t...sidebarAdapter.getWidgets(),\n\t\t\t\t\tblockToWidget(block),\n\t\t\t\t])\n\t\t\t\t// The last non-null id is the added widget's id.\n\t\t\t\twidgetId = addedWidgetIds.reverse().find((id) => !!id)\n\t\t\t}\n\n\t\t\t// Move focus to the moved widget and expand the sidebar.\n\t\t\t// focusWidget(widgetId)\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockEdit {...props} />\n\t\t\t\t{hasMultipleSidebars && canInsertBlockInSidebar && (\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<MoveToWidgetArea\n\t\t\t\t\t\t\twidgetAreas={sidebarControls.map(\n\t\t\t\t\t\t\t\t(sidebarControl) => ({\n\t\t\t\t\t\t\t\t\tid: sidebarControl.id,\n\t\t\t\t\t\t\t\t\tname: sidebarControl.params.label,\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\tsidebarControl.params.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\tcurrentWidgetAreaId={activeSidebarControl?.id}\n\t\t\t\t\t\t\tonSelect={moveToSidebar}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t)}\n\t\t\t</>\n\t\t)\n\t},\n\t'withMoveToSidebarToolbarItem'\n)\n\n/*\naddFilter(\n\t'editor.BlockEdit',\n\t'blocksy/customize-widgets/block-edit',\n\twithMoveToSidebarToolbarItem\n)\n*/\n","import {\n\tcreatePortal,\n\tuseContext,\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tcreateElement,\n} from '@wordpress/element'\nimport { SlotFillProvider, Popover } from '@wordpress/components'\nimport { removeFilter } from '@wordpress/hooks'\n\nimport {\n\tregisterCoreBlocks,\n\t__experimentalGetCoreBlocks,\n} from '@wordpress/block-library'\n\nimport { __ } from 'ct-i18n'\n\nimport {\n\tregisterLegacyWidgetBlock,\n\tregisterLegacyWidgetVariations,\n\tregisterWidgetGroupBlock,\n} from '@wordpress/widgets'\n\nimport {\n\tsetFreeformContentHandlerName,\n\tstore as blocksStore,\n} from '@wordpress/blocks'\n\nimport { dispatch } from '@wordpress/data'\n\nimport CustomizeWidgets from './customize-widgets/components/customize-widgets'\nimport './customize-widgets/filters'\n\nimport useClearSelectedBlock from './customize-widgets/components/customize-widgets/use-clear-selected-block'\n\nimport { PanelContext } from '../../../options/components/PanelLevel'\n\nconst NewBlockWidgetArea = ({\n\toption: { sidebarId = 'ct-footer-sidebar-1' },\n}) => {\n\tconst blockEditorSettings = window.blocksyWidgetsBlockEditorSettings\n\n\tconst { panelsState, panelsDispatch } = useContext(PanelContext)\n\n\tconst [isMounted, setIsMounted] = useState(null)\n\n\tconst popoverRef = useRef()\n\tconst containerRef = useRef()\n\n\tuseEffect(() => {\n\t\tremoveFilter('editor.BlockEdit', 'core/customize-widgets/block-edit')\n\n\t\treturn () => {\n\t\t\tdocument.body.classList.remove('outer-section-open')\n\t\t}\n\t}, [])\n\n\tconst activeSidebarControl = wp.customize.control(\n\t\t`sidebars_widgets[${sidebarId}]`\n\t)\n\n\tuseClearSelectedBlock(activeSidebarControl, popoverRef, containerRef)\n\n\tuseEffect(() => {\n\t\tpanelsDispatch({\n\t\t\ttype: 'PANEL_RECEIVE_META',\n\t\t\tpayload: {\n\t\t\t\tsecondLevelTitleLabel: __('Block Settings', 'blocksy'),\n\t\t\t},\n\t\t})\n\n\t\tsetTimeout(() => {\n\t\t\tsetIsMounted(true)\n\t\t}, 1000)\n\t}, [])\n\n\tif (!document.querySelector('.ct-tmp-panel-actions')) {\n\t\tdocument.body.insertAdjacentHTML(\n\t\t\t'beforeend',\n\t\t\t'<div class=\"ct-tmp-panel-actions\"></div>'\n\t\t)\n\t}\n\n\tconst popover = createPortal(\n\t\t<div className=\"customize-widgets-popover\" ref={popoverRef}>\n\t\t\t<Popover.Slot />\n\t\t</div>,\n\t\tdocument.querySelector('.ct-tmp-panel-actions')\n\t)\n\n\tif (!isMounted) {\n\t\treturn (\n\t\t\t<div className=\"ct-option-widget-area ct-loading\">\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"15\"\n\t\t\t\t\theight=\"15\"\n\t\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\t\tclassName=\"ct-loader\">\n\t\t\t\t\t<g transform=\"translate(50,50)\">\n\t\t\t\t\t\t<g transform=\"scale(1)\">\n\t\t\t\t\t\t\t<circle cx=\"0\" cy=\"0\" r=\"50\" fill=\"#687c93\" />\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tcx=\"0\"\n\t\t\t\t\t\t\t\tcy=\"-26\"\n\t\t\t\t\t\t\t\tr=\"12\"\n\t\t\t\t\t\t\t\tfill=\"#ffffff\"\n\t\t\t\t\t\t\t\ttransform=\"rotate(161.634)\">\n\t\t\t\t\t\t\t\t<animateTransform\n\t\t\t\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\t\t\t\ttype=\"rotate\"\n\t\t\t\t\t\t\t\t\tcalcMode=\"linear\"\n\t\t\t\t\t\t\t\t\tvalues=\"0 0 0;360 0 0\"\n\t\t\t\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\t\t\t\tdur=\"1s\"\n\t\t\t\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</circle>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<SlotFillProvider>\n\t\t\t<div className=\"customize-control-sidebar_block_editor ct-option-widget-area\">\n\t\t\t\t<CustomizeWidgets sidebarId={sidebarId} key={sidebarId} />\n\t\t\t\t{popover}\n\t\t\t</div>\n\t\t</SlotFillProvider>\n\t)\n}\n\nexport default NewBlockWidgetArea\n","/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element'\nimport { useDispatch, useSelect } from '@wordpress/data'\nimport { store as blockEditorStore } from '@wordpress/block-editor'\n\n/**\n * We can't just use <BlockSelectionClearer> because the customizer has\n * many root nodes rather than just one in the post editor.\n * We need to listen to the focus events in all those roots, and also in\n * the preview iframe.\n * This hook will clear the selected block when focusing outside the editor,\n * with a few exceptions:\n * 1. Focusing on popovers.\n * 3. Focusing on any modals/dialogs.\n * These cases are normally triggered by user interactions from the editor,\n * not by explicitly focusing outside the editor, hence no need for clearing.\n *\n * @param {Object} sidebarControl The sidebar control instance.\n * @param {Object} popoverRef The ref object of the popover node container.\n */\nexport default function useClearSelectedBlock(sidebarControl, popoverRef) {\n\tconst { hasSelectedBlock, hasMultiSelection } = useSelect(blockEditorStore)\n\tconst { clearSelectedBlock } = useDispatch(blockEditorStore)\n\n\tuseEffect(() => {\n\t\tfunction handleClearSelectedBlock(element) {\n\t\t\tif (!popoverRef.current || !sidebarControl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// 1. Make sure there are blocks being selected.\n\t\t\t\t(hasSelectedBlock() || hasMultiSelection()) &&\n\t\t\t\t// 2. The element should exist in the DOM (not deleted).\n\t\t\t\telement &&\n\t\t\t\tdocument.contains(element) &&\n\t\t\t\t!popoverRef.current.contains(element) &&\n\t\t\t\t!element.closest('[role=\"dialog\"]') &&\n\t\t\t\t!element.closest('[role=\"toolbar\"]') &&\n\t\t\t\t!element.closest('.components-popover__content') &&\n\t\t\t\t!element.closest('.ct-panel-second-level') &&\n\t\t\t\t!element.closest('.wp-block-legacy-widget__edit-form')\n\t\t\t) {\n\t\t\t\tclearSelectedBlock()\n\t\t\t}\n\t\t}\n\n\t\tfunction handleMouseDown(event) {\n\t\t\thandleClearSelectedBlock(event.target)\n\t\t}\n\n\t\tfunction handleBlur() {\n\t\t\thandleClearSelectedBlock(document.activeElement)\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleMouseDown)\n\t\twindow.addEventListener('blur', handleBlur)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleMouseDown)\n\t\t\twindow.removeEventListener('blur', handleBlur)\n\t\t}\n\t}, [\n\t\tpopoverRef,\n\t\tsidebarControl,\n\t\thasSelectedBlock,\n\t\thasMultiSelection,\n\t\tclearSelectedBlock,\n\t])\n}\n","import { createElement } from '@wordpress/element'\nimport LegacyWidgetArea from './widget-area/LegacyWidgetArea'\nimport NewBlockWidgetArea from './widget-area/NewBlockWidgetArea'\n\nconst WidgetArea = ({ ...props }) => {\n\tlet hasBlockWidgets = ct_customizer_localizations.has_new_widgets\n\n\tif (hasBlockWidgets) {\n\t\treturn <NewBlockWidgetArea key={props.option.sidebarId} {...props} />\n\t}\n\n\treturn <LegacyWidgetArea {...props} />\n}\n\nWidgetArea.renderingConfig = { design: 'none' }\n\nexport default WidgetArea\n","import './public-path'\nimport {\n\tcreateElement,\n\trender,\n\tunmountComponentAtNode,\n} from '@wordpress/element'\nimport { defineCustomizerControl } from './controls/utils.js'\nimport { listenToChanges } from './customizer-color-scheme.js'\nimport './preview-events'\nimport { listenToVariables } from './customizer-variables'\nimport './reset'\nimport { initAllPanels } from '../options/initPanels'\n\nimport { initBuilder } from './panels-builder'\n\nimport Options from './controls/options.js'\nimport { initWidget } from '../backend/widgets'\n\nimport $ from 'jquery'\nimport ctEvents from 'ct-events'\nimport ProOverlay from './components/ProOverlay'\n\nimport WidgetArea from './options/ct-widget-area'\n\nctEvents.on('blocksy:options:register', (opts) => {\n\topts['ct-widget-area'] = WidgetArea\n})\n\nlistenToChanges()\nlistenToVariables()\n\ndefineCustomizerControl('ct-options', Options)\n\nif ($ && $.fn) {\n\t$(document).on('widget-added', (event, widget) => {\n\t\tinitWidget(widget[0])\n\t})\n\n\tif (wp && wp.customize && wp.customize.control) {\n\t\twp.customize.control.bind('add', (control) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tinitWidget(control.container[0])\n\t\t\t}, 100)\n\t\t})\n\t}\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\tinitAllPanels()\n\tinitBuilder()\n\n\tsetTimeout(() => {\n\t\tif (document.querySelector('.ct-onboarding-button')) {\n\t\t\trender(\n\t\t\t\t<ProOverlay\n\t\t\t\t\tusername={\n\t\t\t\t\t\tdocument.querySelector('.ct-onboarding-button button')\n\t\t\t\t\t\t\t.dataset.username\n\t\t\t\t\t}\n\t\t\t\t/>,\n\t\t\t\tdocument.querySelector('.ct-onboarding-button')\n\t\t\t)\n\t\t}\n\t}, 50)\n\n\tsetTimeout(() => {\n\t\tObject.values(wp.customize.control._value)\n\t\t\t.filter(({ params: { type } }) => type === 'ct-options')\n\t\t\t.map((control) => {\n\t\t\t\tif (wp.customize.section(control.section)) {\n\t\t\t\t\twp.customize\n\t\t\t\t\t\t.section(control.section)\n\t\t\t\t\t\t.container.on('keydown', function (event) {\n\t\t\t\t\t\t\treturn\n\n\t\t\t\t\t\t\t// Pressing the escape key fires a theme:collapse event\n\t\t\t\t\t\t\tif (27 === event.keyCode) {\n\t\t\t\t\t\t\t\tif (section.$body.hasClass('modal-open')) {\n\t\t\t\t\t\t\t\t\t// Escape from the details modal.\n\t\t\t\t\t\t\t\t\tsection.closeDetails()\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Escape from the inifinite scroll list.\n\t\t\t\t\t\t\t\t\tsection.headerContainer\n\t\t\t\t\t\t\t\t\t\t.find('.customize-themes-section-title')\n\t\t\t\t\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tevent.stopPropagation() // Prevent section from being collapsed.\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t;(wp.customize.panel(control.section())\n\t\t\t\t\t? wp.customize.panel\n\t\t\t\t\t: wp.customize.section)(control.section(), (section) => {\n\t\t\t\t\tsection.expanded.bind((value) => {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\tconst ChildComponent = Options\n\n\t\t\t\t\t\t\tlet MyChildComponent = Options\n\n\t\t\t\t\t\t\t// block | inline\n\t\t\t\t\t\t\tlet design = 'none'\n\n\t\t\t\t\t\t\trender(\n\t\t\t\t\t\t\t\t<MyChildComponent\n\t\t\t\t\t\t\t\t\tid={control.id}\n\t\t\t\t\t\t\t\t\tonChange={(v) => control.setting.set(v)}\n\t\t\t\t\t\t\t\t\tvalue={control.setting.get()}\n\t\t\t\t\t\t\t\t\toption={control.params.option}>\n\t\t\t\t\t\t\t\t\t{(props) => <ChildComponent {...props} />}\n\t\t\t\t\t\t\t\t</MyChildComponent>,\n\n\t\t\t\t\t\t\t\tcontrol.container[0]\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\tsetTimeout(() => {\n\t\t\t\t\t\t\tunmountComponentAtNode(control.container[0])\n\t\t\t\t\t\t}, 500)\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t})\n\n\tif ($ && $.fn) {\n\t\t$(document).on('click', '[data-trigger-section]', (e) => {\n\t\t\te.preventDefault()\n\n\t\t\twp.customize.previewer.trigger(\n\t\t\t\t'ct-initiate-deep-link',\n\t\t\t\te.target.dataset.triggerSection\n\t\t\t)\n\t\t})\n\n\t\tvar urlParams = new URLSearchParams(window.location.search)\n\t\tif (urlParams.get('ct_autofocus')) {\n\t\t\twp.customize.previewer.trigger(\n\t\t\t\t'ct-initiate-deep-link',\n\t\t\t\turlParams.get('ct_autofocus')\n\t\t\t)\n\t\t}\n\t}\n})\n\nexport { default as Overlay } from './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 './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'\n\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\n/**\n * Expose builder values\n */\nexport { DragDropContext as PlacementsDragDropContext } from './panels-builder/placements/BuilderRoot'\nexport { DragDropContext as ColumnsDragDropContext } from '../options/options/ct-footer-builder'\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","export const listenToChanges = () => {\n\tconst renderValue = () => {\n\t\tif (!wp.customize._value['customizer_color_scheme']) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!document.body) {\n\t\t\treturn\n\t\t}\n\n\t\tconst overlay = document.querySelector('.wp-full-overlay')\n\t\tdocument.body.classList.remove('ct-dark-mode')\n\n\t\toverlay.classList.add('ct-disable-transitions')\n\n\t\tsetTimeout(\n\t\t\t() => overlay.classList.remove('ct-disable-transitions'),\n\t\t\t500\n\t\t)\n\n\t\tif (wp.customize._value['customizer_color_scheme']() === 'yes') {\n\t\t\tdocument.body.classList.add('ct-dark-mode')\n\t\t}\n\t}\n\n\twp.customize.bind('change', (e) => {\n\t\tif (e.id !== 'customizer_color_scheme') return\n\t\trenderValue()\n\t})\n\n\twp.customize.bind('ready', () => renderValue())\n}\n","import { handleVariablesFor } from 'customizer-sync-helpers/dist/simplified'\n\nexport const listenToVariables = () => {\n\thandleVariablesFor({\n\t\tcolorPalette: [\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor1',\n\t\t\t\ttype: 'color:color1',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor2',\n\t\t\t\ttype: 'color:color2',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor3',\n\t\t\t\ttype: 'color:color3',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor4',\n\t\t\t\ttype: 'color:color4',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor5',\n\t\t\t\ttype: 'color:color5',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor6',\n\t\t\t\ttype: 'color:color6',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor7',\n\t\t\t\ttype: 'color:color7',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'paletteColor8',\n\t\t\t\ttype: 'color:color8',\n\t\t\t},\n\t\t],\n\n\t\tdarkColorPalette: [\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor1',\n\t\t\t\ttype: 'color:color1',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor2',\n\t\t\t\ttype: 'color:color2',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor3',\n\t\t\t\ttype: 'color:color3',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor4',\n\t\t\t\ttype: 'color:color4',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor5',\n\t\t\t\ttype: 'color:color5',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor6',\n\t\t\t\ttype: 'color:color6',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tvariable: 'darkPaletteColor7',\n\t\t\t\ttype: 'color:color7',\n\t\t\t},\n\t\t],\n\n\t\tfontColor: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\tlinkColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'linkInitialColor',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'linkHoverColor',\n\t\t\t\ttype: 'color:hover',\n\t\t\t},\n\t\t],\n\n\t\tformTextColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-text-initial-color',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-text-focus-color',\n\t\t\t\ttype: 'color:focus',\n\t\t\t},\n\t\t],\n\n\t\tformBorderColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-field-border-initial-color',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-field-border-focus-color',\n\t\t\t\ttype: 'color:focus',\n\t\t\t},\n\t\t],\n\n\t\tformBackgroundColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-field-initial-background',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'form-field-focus-background',\n\t\t\t\ttype: 'color:focus',\n\t\t\t},\n\t\t],\n\n\t\tborder_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'border-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theadingColor: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'headings-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_1_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-1-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_2_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-2-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_3_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-3-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_4_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-4-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_5_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-5-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\theading_6_color: {\n\t\t\tselector: ':root',\n\t\t\tvariable: 'heading-6-color',\n\t\t\ttype: 'color',\n\t\t},\n\n\t\tbuttonTextColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'buttonTextInitialColor',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'buttonTextHoverColor',\n\t\t\t\ttype: 'color:hover',\n\t\t\t},\n\t\t],\n\n\t\tbuttonColor: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'buttonInitialColor',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'buttonHoverColor',\n\t\t\t\ttype: 'color:hover',\n\t\t\t},\n\t\t],\n\n\t\tglobal_quantity_color: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'quantity-initial-color',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'quantity-hover-color',\n\t\t\t\ttype: 'color:hover',\n\t\t\t},\n\t\t],\n\n\t\tglobal_quantity_arrows: [\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'quantity-arrows-initial-color',\n\t\t\t\ttype: 'color:default',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\tselector: ':root',\n\t\t\t\tvariable: 'quantity-arrows-hover-color',\n\t\t\t\ttype: 'color:hover',\n\t\t\t},\n\t\t],\n\t})\n}\n","import {\n\tcreateElement,\n\trender,\n\tunmountComponentAtNode,\n} from '@wordpress/element'\nimport classnames from 'classnames'\nimport ResponsiveControls from '../components/responsive-controls.js'\n\nconst OptionWrapper = ({\n\toption,\n\tchildren,\n\tvalue,\n\tid,\n\tdesign,\n\tlabelToolbar,\n\tcontrolEnd,\n\twrapperAttr: { className, ...wrapperAttr },\n}) => {\n\tif (design === 'none') {\n\t\treturn children\n\t}\n\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\tif (maybeLabel === '') {\n\t\tmaybeLabel = true\n\t}\n\n\tlet maybeDesc =\n\t\tObject.keys(option).indexOf('desc') === -1 ? false : option.desc\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classnames('ct-control', className)}\n\t\t\tdata-design={design}\n\t\t\t{...wrapperAttr}>\n\t\t\t<header>\n\t\t\t\t{maybeLabel && <label>{maybeLabel}</label>}\n\t\t\t\t{labelToolbar()}\n\t\t\t</header>\n\t\t\t<section>{children}</section>\n\t\t\t{controlEnd()}\n\t\t</div>\n\t)\n}\n\nexport const defineCustomizerControl = (type, Component) =>\n\t(wp.customize.controlConstructor[type] = wp.customize.Control.extend({\n\t\tinitialize(id, params) {\n\t\t\tconst control = this\n\n\t\t\twp.customize.Control.prototype.initialize.call(control, id, params)\n\n\t\t\tcontrol.container[0].classList.remove('customize-control')\n\n\t\t\t// The following should be eliminated with <https://core.trac.wordpress.org/ticket/31334>.\n\t\t\tfunction onRemoved(removedControl) {\n\t\t\t\tif (control === removedControl) {\n\t\t\t\t\tcontrol.destroy()\n\t\t\t\t\tcontrol.container.remove()\n\t\t\t\t\twp.customize.control.unbind('removed', onRemoved)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twp.customize.control.bind('removed', onRemoved)\n\t\t},\n\n\t\trenderContent() {\n\t\t\treturn\n\n\t\t\tconst ChildComponent = Component\n\n\t\t\tlet MyChildComponent = Component\n\n\t\t\t// block | inline\n\t\t\tlet design = 'block'\n\n\t\t\tlet LabelToolbar = () => null\n\t\t\tlet OptionMetaWrapper = null\n\t\t\tlet ControlEnd = () => null\n\n\t\t\t/*\n\t\t\tOptionMetaWrapper = ({\n\t\t\t\tgetActualOption,\n\t\t\t\toption,\n\t\t\t\tvalue,\n\t\t\t\t...props\n\t\t\t}) => getActualOption(props)\n */\n\n\t\t\tlet wrapperAttr = {}\n\n\t\t\tif (Component.wrapperAttr) {\n\t\t\t\twrapperAttr = Component.wrapperAttr\n\t\t\t}\n\n\t\t\tif (Component.renderingConfig) {\n\t\t\t\tdesign = Component.renderingConfig.design || design\n\t\t\t}\n\n\t\t\tif (Component.LabelToolbar) {\n\t\t\t\tLabelToolbar = Component.LabelToolbar\n\t\t\t}\n\n\t\t\tif (Component.ControlEnd) {\n\t\t\t\tLabelToolbar = Component.ControlEnd\n\t\t\t}\n\n\t\t\tif (Component.MetaWrapper) {\n\t\t\t\tOptionMetaWrapper = Component.MetaWrapper\n\t\t\t}\n\n\t\t\t/*\n\t\t\tif (this.params.option.responsive) {\n\t\t\t\tMyChildComponent = ResponsiveControls\n\t\t\t}\n */\n\n\t\t\tconst getActualOption = ({\n\t\t\t\twrapperAttr: additionalWrapperAttr = {},\n\t\t\t\t...props\n\t\t\t} = {}) => {\n\t\t\t\treturn (\n\t\t\t\t\t<OptionWrapper\n\t\t\t\t\t\tdesign={design}\n\t\t\t\t\t\tid={this.id}\n\t\t\t\t\t\twrapperAttr={{\n\t\t\t\t\t\t\t...wrapperAttr,\n\t\t\t\t\t\t\t...this.params.option.wrapperAttr,\n\t\t\t\t\t\t\t...additionalWrapperAttr,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\toption={this.params.option}\n\t\t\t\t\t\tlabelToolbar={() => (\n\t\t\t\t\t\t\t<LabelToolbar\n\t\t\t\t\t\t\t\tonChange={(v) => this.setting.set(v)}\n\t\t\t\t\t\t\t\tvalue={this.setting.get()}\n\t\t\t\t\t\t\t\toption={this.params.option}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tcontrolEnd={() => (\n\t\t\t\t\t\t\t<ControlEnd\n\t\t\t\t\t\t\t\tonChange={(v) => this.setting.set(v)}\n\t\t\t\t\t\t\t\tvalue={this.setting.get()}\n\t\t\t\t\t\t\t\toption={this.params.option}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue={this.setting.get()}>\n\t\t\t\t\t\t<MyChildComponent\n\t\t\t\t\t\t\tid={this.id}\n\t\t\t\t\t\t\tonChange={(v) => this.setting.set(v)}\n\t\t\t\t\t\t\tvalue={this.setting.get()}\n\t\t\t\t\t\t\toption={this.params.option}>\n\t\t\t\t\t\t\t{(props) => <ChildComponent {...props} />}\n\t\t\t\t\t\t</MyChildComponent>\n\t\t\t\t\t</OptionWrapper>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.params.option.customizer_section !== 'layout') {\n\t\t\t\t// return\n\t\t\t}\n\n\t\t\trender(\n\t\t\t\tOptionMetaWrapper ? (\n\t\t\t\t\t<OptionMetaWrapper\n\t\t\t\t\t\toption={this.params.option}\n\t\t\t\t\t\tvalue={this.setting.get()}\n\t\t\t\t\t\tgetActualOption={(props) => getActualOption(props)}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\tgetActualOption()\n\t\t\t\t),\n\t\t\t\tthis.container[0]\n\t\t\t)\n\t\t},\n\n\t\tready() {\n\t\t\t// this.setting.bind(() => this.renderContent())\n\t\t},\n\n\t\tdestroy() {\n\t\t\tunmountComponentAtNode(this.container[0])\n\n\t\t\tif (wp.customize.Control.prototype.destroy) {\n\t\t\t\twp.customize.Control.prototype.destroy.call(this)\n\t\t\t}\n\t\t},\n\t}))\n"],"names":["$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","isItemAllowedIn","itemId","barId","ct_customizer_localizations","header_builder_data","header","getOriginalId","allowed_in","allowedRespected","exclusionRespected","excluded_from","DraggableItem","panelType","onRemove","renderItem","itemData","builderValue","DragDropContext","allDynamicItems","customItemsSeparator","allClonesAndOriginal","beautyItem","capitalizeFirstLetter","cls","preventDefault","draggableId","hasPointers","tagName","direction","group","options","propsForItem","displayWrapper","isDragging","setIsDragging","setList","panelsHelpers","PanelContext","itemsOutput","isOpenFor","open","close","Sortable","fallbackOnBody","forceFallback","fallbackTolerance","touchStartThreshold","dataset","pull","onEnd","remove","onMove","originalEvent","closest","dragged","sortable","evt","tag","Fragment","placementName","bar","placement","placements","placementsToRender","middle","__","offcanvas","inlinedItemsFromBuilder","view","builderValueWithView","hasOffcanvas","maybeBar","builderCollapsed","setBuilderCollapsed","querySelector","builderValueDispatch","displayList","panelsState","panelsActions","inlinedItemsFromAllViewsBuilder","currentItems","c","secondaryItems","secondary_items","allItems","put","aItemData","bItemData","localeCompare","itemOptions","itemName","label","itemInBuilder","row","itemsOnlyWithTrigger","isSidebarRepresentationPresent","devices","PanelMetaWrapper","getActualOption","getValues","itemValue","builderSettings","settings","getValueFromInput","onChangeFor","optionId","optionValue","currentValue","Slot","fillProps","primaryItems","primaryItem","itemsCount","builderValueCollection","allSections","sections","panelLabel","panelId","headerOptions","header_data","header_options","allBuilderSections","currentTab","setCurrentTab","dangerouslySetInnerHTML","__html","sprintf","tab","panels","fills","builderReducer","action","updatedGlobalState","newSections","futureBuilderValue","__forced_static_header__","fetchCurrentHeader","updateItemId","removeSectionIds","_id","current_section","futureId","nanoid","lists","futureBar","updater","copy","mode","__should_refresh__","__should_refresh_item__","builder","previewer","contentDocument","contentWindow","onBuilderValueChange","currentHeader","__forced_dynamic_header__","old","builderValueDispatchInternal","useReducer","newState","send","futureItems","store","nextSibling","activeComponent","eventHandler","params","nextElementSibling","remote","remoteItems","referenceNode","insertBefore","remoteOptions","SortableJS","destroy","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","addEventListener","off","removeEventListener","matches","selector","msMatchesSelector","webkitMatchesSelector","getParentOrHost","includeCTX","R_SPACE","toggleClass","css","defaultView","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","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","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","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","nearest","ret","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_detectNearestEmptySortable","touches","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","disabled","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","devicePixelRatio","fallbackClass","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","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","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","deepLinkLocation","getDeepLinkPanel","removeDeepLink","location","section","panel","expanded","expand","ctEvents","__webpack_public_path__","static_public_url","CORE_OPTIONS_CONTEXT","require","hasCoreOptionModifier","DefaultOptionComponent","dynamicOptionTypes","optionWithDefault","hasRevertButton","purpose","maybeGutenbergDevice","childComponentRef","useSelect","__experimentalGetPreviewDeviceType","getInitialDevice","setInnerDevice","ctEventsListener","dispatch","__experimentalSetPreviewDeviceType","markAsAutoFor","BeforeOptionContent","content","globalResponsiveValue","maybePromoteScalarValueIntoResponsive","valueWithResponsive","onChangeWithMobileBridge","triggerRefreshOnChange","refresh","switchDeviceOnChange","onChangeWithResponsiveBridge","scalarValue","responsiveValue","__changed","renderingConfig","design","wrapperAttr","LabelToolbar","OptionMetaWrapper","ControlEnd","sectionClassName","MetaWrapper","OptionComponentWithoutDesign","maybeLabel","getOptionLabelFor","maybeDesc","desc","maybeLink","link","actualDesignType","sectionAttr","linkAttr","additionalWrapperAttr","optionClassName","optionAdditionalWrapperAttr","computeOptionValue","o","divider","disableRevertButton","deepEqual","getValueForRevert","handleOptionRevert","performRevert","skipResponsiveControls","disabledDeviceMessage","class","reducer","renderingChunk","parentValue","conditionOption","global","condition","valueForCondition","values_source","perform_replace","conditionToWatch","res","singleReplace","Tabs","filteredTabs","singleTab","title","groupOption","groupContents","SingleChoice","singleChoice","totalAmountofMatched","choices","previousPromise","nextChoice","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","inactive","titlePrefix","isTransitioning","previousPanel","currentLevel","secondLevelTitlePrefix","secondLevelTitleLabel","panelsReducer","containerRef","parentContainerRef","useRefsAsWrappers","panelsDispatch","isTransitioningFor","stopTransitioning","getWrapperParent","openSecondLevel","getParentOptionsWrapper","String","approvedLabel","currentLabel","getFirstLevelOptions","hasInnerOptions","rest","currentOptions","currentOptionId","currentId","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","currentlyPickedItem","SingleItem","itemClass","SortableItem","SortableElement","SortableList","SortableContainer","disableDrag","localOnChange","computedValue","idToRemove","idToAdd","useDragHandle","distance","lockAxis","helperContainer","onSortEnd","updateBeforeSortStart","shouldSkip","patternsList","singlePattern","background_pattern","ct_localizations","skipArrow","patternColor","setOutsideClickFreezed","has_position_picker","emptyLabel","filledLabel","onFrameOpen","onFrameClose","background_image","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","finalValue","palette","colorPalettesWrapper","setModalState","currentKey","maybeCurrentlyInValue","maybeCurrentValue","maybeColor","condition_source","newPicker","isShowing","setIsShowing","post","ajaxurl","wp_customize","nonce","customizer_reset_none","reload","Divider","Bar","maybeValues","footer","column","shallowCompare","ColumnsBuilder","prevResult","areEqual","memo","rows","maybeRow","hasWidgetAreas","items_per_row","has_widget_areas","footerOptions","footer_data","footer_options","__forced_static_footer__","fetchCurrentFooter","futureLength","removedItem","localItems","completeFutureId","FooterBuilder","currentFooter","currentItem","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","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","_arrayLikeToArray","len","arr2","variables","variableDescriptor","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","extractValue","removeProperty","handleSingleVariableFor","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","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","baseCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","LodashWrapper","chainAll","__chain__","__index__","__values__","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","thisArg","iteratee","resIndex","baseIndexOf","comparator","baseTimes","isIndex","isTypedArray","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","eq","objValue","copyObject","keysIn","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","isFunc","stacked","subValue","objectCreate","proto","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","isCommon","valuesLength","computed","valuesIndex","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","castPath","toKey","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isFunction","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","isPrototype","nativeKeys","nativeKeysIn","isProto","overRest","setToString","constant","baseSetToString","end","isSymbol","symbolProto","symbolToString","baseToString","isKey","arrayBuffer","byteLength","freeExports","freeModule","Buffer","allocUnsafe","buffer","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","symbolValueOf","symbol","typedArray","getSymbols","getSymbolsIn","coreJsData","flatRest","getData","getFuncName","isLaziable","funcs","prereq","thru","funcName","plant","isPlainObject","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","message","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","freeGlobal","baseGetAllKeys","metaMap","realNames","otherFunc","isKeyable","baseIsNative","getPrototype","overArg","nativeObjectToString","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","nativeCreate","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","lodash","uid","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","memoize","freeProcess","process","nodeUtil","types","binding","nativeMax","otherArgs","baseGet","baseSlice","freeSelf","shortOut","nativeNow","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","memoizeCapped","flow","createFlow","baseIsArguments","isArrayLike","stubFalse","baseIsMap","nodeIsMap","objectCtorString","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseKeysIn","resolver","memoized","Cache","baseUnset","customOmitClone","omit","paths","CLONE_DEEP_FLAG","baseDifference","baseRest","isArrayLikeObject","without","wrapperClone","encoding","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","tail","searchCache","maxSize","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","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_slicedToArray","_objectSpread","ownKeys","_defineProperties","_createClass","_typeof","assertThisInitialized","_getPrototypeOf","Manager","collection","getIndex","sortableInfo","sortByIndex","keysToOmit","events","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","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","handleRef","check","isCustomProperty","rangeValue","outputRanges","interpolations","elementStyles","cs","paddingX","paddingY","borderX","borderY","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","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","domain","re","not_string","not_bool","not_type","not_primitive","numeric_arg","not_json","modulo","key_access","index_access","sign","sprintf_format","sprintf_parse","vsprintf","fmt","argv","parse_tree","ph","pad","pad_character","pad_length","is_positive","cursor","tree_length","param_no","toExponential","toFixed","toPrecision","pad_char","sprintf_cache","_fmt","arg_names","field_list","replacement_field","field_match","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","_defineProperty","_inheritsLoose","_setPrototypeOf","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","definition","globalThis","nmd","scriptUrl","importScripts","currentScript","scripts","darkModeSwitch","innerHTML","input_name","input_id","internalValue","setInternalValue","initAllPanels","singleTarget","ctHasOptions","ctOptions","buildersMaps","customizerFieldKey","setValues","PanelLevel","initWidget","widget","widgetNumber","username","fill","sidebarId","sectionId","widgetsToMove","Section","containerParent","collapse","embed","ensure","containerPaneParent","contentContainer","headContainer","deferred","embedded","embedWidgetControl","controlConstructor","sidebar_widgets","sidebar_id","setting","prevSection","currentEl","widgetId","textWidgets","widgetControls","hooks","blockLibrary","widgets","blocks","keyboardShortcuts","PRECEDENCE","OPENERS","TERMINATORS","PATTERN","OPERATORS","DEFAULT_OPTIONS","contextDelimiter","onMissingKey","Tannin","pluralForms","enumerableOnly","symbols","getOwnPropertyDescriptors","getPluralForm","plural","pf","evaluate","plural_forms","getPluralExpression","expression","terms","operator","term","postfix","getOperatorResult","earlyReturn","compile","dcnpgettext","singular","DEFAULT_LOCALE_DATA","I18N_HOOK_REGEXP","initialData","initialDomain","tannin","listeners","notifyListeners","doSetLocaleData","setLocaleData","single","getFilterDomain","_x","translation","applyFilters","onHookAddedOrRemoved","hookName","addAction","getLocaleData","resetLocaleData","subscribe","_nx","isRTL","hasTranslation","_tannin$data","_tannin$data2","createI18n","defaultHooks","blockEditor","compose","CopyButton","useCopyToClipboard","Button","ErrorBoundary","componentDidCatch","Warning","coreData","preferenceDefaults","combineReducers","features","scope","preferences","featureName","enableItems","singleEnableItems","itemType","multipleEnableItems","isEnable","currentTypeState","currentScopeState","STORE_NAME","setSingleEnableItem","enableComplementaryArea","area","disableComplementaryArea","setMultipleEnableItem","pinItem","unpinItem","toggleFeature","controls","interfaceStoreName","setFeatureValue","setFeatureDefaults","getActiveComplementaryArea","getSingleEnableItem","isItemPinned","isMultipleEnabledItemEnabled","isFeatureActive","featureValue","createReduxStore","selectors","persist","registerStore","MenuItem","keycodes","primitives","SVG","xmlns","Path","blockInserterPanel","isInserterOpened","__experimentalGetInsertionPoint","rootClientId","insertionIndex","setIsInserterOpened","storeConfig","Inserter","setIsOpened","inserterTitleId","useInstanceId","insertionPoint","customizeWidgetsStore","icon","closeSmall","__experimentalInsertionIndex","showInserterHelpPanel","MoreMenuDropdown","as","DropdownComponent","DropdownMenu","toggleProps","moreVertical","tooltipPosition","onClose","_tannin$data$domain","addLocaleData","_tannin$data$domain2","addContainer","ariaLive","previousMessage","MoreMenuFeatureToggle","messageActivated","messageDeactivated","shortcut","feature","interfaceStore","useDispatch","isSelected","regions","getElementsByClassName","introText","filterMessage","containerAssertive","containerPolite","speak","addIntroText","textFormattingShortcuts","keyCombination","modifier","character","description","KeyCombination","forceAriaLabel","displayShortcutList","ariaLabel","shortcutAriaLabel","aliases","getShortcutKeyCombination","getShortcutDescription","getShortcutAliases","keyboardShortcutsStore","ShortcutList","shortcuts","ShortcutSection","ShortcutCategorySection","categoryName","additionalShortcuts","categoryShortcuts","getCategoryShortcuts","KeyboardShortcutHelpModal","isModalActive","toggleModal","registerShortcut","category","useShortcut","Modal","closeLabel","onRequestClose","POPOVER_PROPS","MoreMenu","isKeyboardShortcutsModalActive","setIsKeyboardShortcutsModalVisible","toggleKeyboardShortcutsModal","ToolbarDropdownMenu","MenuGroup","displayShortcut","external","VisuallyHidden","sidebar","inserter","isFixedToolbarActive","hasUndo","hasRedo","setUndoRedo","subscribeHistory","NavigableToolbar","ToolbarButton","redoIcon","undoIcon","undo","redo","isPressed","plus","isShallowEqual","aKeys","bKeys","aValue","isShallowEqualObjects","isShallowEqualArrays","settingIdToWidgetId","settingId","blockToWidget","existingWidget","isValidLegacyWidgetBlock","encoded","hash","raw","idBase","is_widget_customizer_js_value","encoded_serialized_instance","instance_hash_key","raw_instance","widgetClass","serialize","widgetToBlock","parsedBlocks","createBlock","addWidgetIdToBlock","SidebarEditorProvider","setBlocks","getWidgets","prevWidgets","nextWidgets","prevBlocks","prevWidgetsMap","prevBlocksMap","getWidgetIdFromBlock","nextBlocks","nextWidget","prevWidget","onChangeBlocks","nextBlock","prevBlock","getWidget","addedWidgetIds","setWidgets","updatedNextBlocks","addedWidgetId","useSidebarBlockEditor","BlockEditorProvider","useSubRegistry","WelcomeGuide","isEntirelyBlockWidgets","srcSet","ExternalLink","KeyboardShortcuts","Register","unregisterShortcut","SidebarBlockEditor","blockEditorSettings","inspector","selectStore","useInserter","hasUploadPermissions","keepCaretInsideBlock","isWelcomeGuideActive","coreStore","canUser","mediaUploadBlockEditor","onError","argumentsObject","uploadMedia","wpAllowedMimeTypes","allowedMimeTypes","__experimentalSetIsInserterOpened","mediaUpload","hasFixedToolbar","__unstableHasCustomAppender","BlockEditorKeyboardShortcuts","CopyHandler","BlockTools","defaultEditorStyles","BlockSelectionClearer","WritingFlow","ObserveTyping","BlockList","renderAppender","ButtonBlockAppender","onSubmit","BlockInspector","__unstableBlockSettingsMenuFirstItem","SidebarControlsContext","SidebarControls","sidebarControls","activeSidebarControl","parseWidgetId","widgetIdToSettingId","SidebarAdapter","locked","widgetsCache","subscribers","history","_getWidgetIds","historyIndex","historySubscribers","_debounceSetHistory","leading","timerID","isLeading","debounced","_pushHistory","_replaceHistory","_handleSettingChange","_handleAllSettingsChange","_emit","_createWidget","widgetModel","Widgets","availableWidgets","findWhere","id_base","settingArgs","transport","selectiveRefreshableWidgets","_removeWidget","_updateWidget","_updateWidgets","nextWidgetIds","_seek","currentWidgets","cacheForAdapters","blocksyWidgetsBlockEditorSettings","activeSidebar","ShortcutProvider","createHigherOrderComponent","BlockEdit","useSidebarControls","useActiveSidebarControl","hasMultipleSidebars","blockName","clientId","canInsertBlockInSidebar","blockEditorStore","canInsertBlockType","getBlock","removeBlock","BlockControls","MoveToWidgetArea","widgetAreas","sidebarControl","currentWidgetAreaId","sidebarControlId","newSidebarControl","oldSetting","newSetting","sidebarAdapter","setIsMounted","popoverRef","removeFilter","hasSelectedBlock","hasMultiSelection","clearSelectedBlock","handleClearSelectedBlock","handleMouseDown","useClearSelectedBlock","insertAdjacentHTML","Popover","cx","cy","attributeName","calcMode","keyTimes","dur","begin","repeatCount","WidgetArea","has_new_widgets","renderValue","overlay","listenToChanges","handleVariablesFor","colorPalette","darkColorPalette","fontColor","linkColor","formTextColor","formBorderColor","formBackgroundColor","border_color","headingColor","heading_1_color","heading_2_color","heading_3_color","heading_4_color","heading_5_color","heading_6_color","buttonTextColor","buttonColor","global_quantity_color","global_quantity_arrows","Control","onRemoved","removedControl","ready","unmountComponentAtNode","singleKey","initBuilder","ChildComponent","Options","MyChildComponent","trigger","triggerSection","urlParams","URLSearchParams","onDocumentLoaded"],"sourceRoot":""}