import { Optional } from '@ephox/katamari'; import { Css, type SugarElement } from '@ephox/sugar'; export interface PositionCss { readonly position: string; readonly left: Optional; readonly top: Optional; readonly right: Optional; readonly bottom: Optional; } const NuPositionCss = ( position: string, left: Optional, top: Optional, right: Optional, bottom: Optional ): PositionCss => { const toPx = (num: number) => num + 'px'; return { position, left: left.map(toPx), top: top.map(toPx), right: right.map(toPx), bottom: bottom.map(toPx) }; }; const toOptions = (position: PositionCss): Record> => ({ ...position, position: Optional.some(position.position) }); const applyPositionCss = (element: SugarElement, position: PositionCss): void => { Css.setOptions(element, toOptions(position)); }; export { NuPositionCss, applyPositionCss };