import _extends from "@babel/runtime/helpers/esm/extends"; export 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; } export 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]; }); } export default 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 _extends({}, popperConfig, { placement: placement, enabled: enabled, strategy: fixed ? 'fixed' : popperConfig.strategy, modifiers: toModifierArray(_extends({}, modifiers, { eventListeners: { enabled: enableEvents }, preventOverflow: _extends({}, modifiers.preventOverflow, { options: containerPadding ? _extends({ padding: containerPadding }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options }), offset: { options: _extends({ offset: offset }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options) }, arrow: _extends({}, modifiers.arrow, { enabled: !!arrowElement, options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { element: arrowElement }) }), flip: _extends({ enabled: !!flip }, modifiers.flip) })) }); }