UNPKG

reblend-ui

Version:

Utilities for creating robust overlay components

74 lines (73 loc) 1.67 kB
"use strict"; exports.__esModule = true; exports.default = mergeOptionsWithPopperConfig; exports.toModifierArray = toModifierArray; exports.toModifierMap = toModifierMap; function toModifierMap(modifiers) { const result = {}; if (!Array.isArray(modifiers)) { return modifiers || result; } modifiers?.forEach(m => { result[m.name] = m; }); return result; } function toModifierArray(map = {}) { if (Array.isArray(map)) return map; return Object.keys(map).map(k => { map[k].name = k; return map[k]; }); } function mergeOptionsWithPopperConfig({ enabled, enableEvents, placement, flip, offset, fixed, containerPadding, arrowElement, popperConfig = {} }) { const modifiers = toModifierMap(popperConfig.modifiers); return { ...popperConfig, placement, enabled, strategy: fixed ? 'fixed' : popperConfig.strategy, modifiers: toModifierArray({ ...modifiers, eventListeners: { enabled: enableEvents, options: modifiers.eventListeners?.options }, preventOverflow: { ...modifiers.preventOverflow, options: containerPadding ? { padding: containerPadding, ...modifiers.preventOverflow?.options } : modifiers.preventOverflow?.options }, offset: { options: { offset, ...modifiers.offset?.options } }, arrow: { ...modifiers.arrow, enabled: !!arrowElement, options: { ...modifiers.arrow?.options, element: arrowElement } }, flip: { enabled: !!flip, ...modifiers.flip } }) }; }