"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.toModifierMap = toModifierMap; exports.toModifierArray = toModifierArray; exports["default"] = mergeOptionsWithPopperConfig; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); function toModifierMap(modifiers) { var result = {}; if (!Array.isArray(modifiers)) { return modifiers || result; } // eslint-disable-next-line no-unused-expressions modifiers == null ? void 0 : modifiers.forEach(function (m) { result[m.name] = m; }); return result; } function toModifierArray(map) { if (map === void 0) { map = {}; } if (Array.isArray(map)) return map; return Object.keys(map).map(function (k) { map[k].name = k; return map[k]; }); } function mergeOptionsWithPopperConfig(_ref) { var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow; var enabled = _ref.enabled, enableEvents = _ref.enableEvents, placement = _ref.placement, flip = _ref.flip, offset = _ref.offset, fixed = _ref.fixed, containerPadding = _ref.containerPadding, arrowElement = _ref.arrowElement, _ref$popperConfig = _ref.popperConfig, popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig; var modifiers = toModifierMap(popperConfig.modifiers); return (0, _extends2["default"])({}, popperConfig, { placement: placement, enabled: enabled, strategy: fixed ? 'fixed' : popperConfig.strategy, modifiers: toModifierArray((0, _extends2["default"])({}, modifiers, { eventListeners: { enabled: enableEvents }, preventOverflow: (0, _extends2["default"])({}, modifiers.preventOverflow, { options: containerPadding ? (0, _extends2["default"])({ padding: containerPadding }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options }), offset: { options: (0, _extends2["default"])({ offset: offset }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options) }, arrow: (0, _extends2["default"])({}, modifiers.arrow, { enabled: !!arrowElement, options: (0, _extends2["default"])({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { element: arrowElement }) }), flip: (0, _extends2["default"])({ enabled: !!flip }, modifiers.flip) })) }); }