import { Replacing } from '../../api/behaviour/Replacing'; import type { AlloyComponent } from '../../api/component/ComponentApi'; import type { AlloySpec } from '../../api/component/SpecTypes'; import * as AlloyTriggers from '../../api/events/AlloyTriggers'; import { ExclusivityChannel, ImmediateHideTooltipEvent, ImmediateShowTooltipEvent } from './TooltippingCommunication'; import type { TooltippingConfig, TooltippingState } from './TooltippingTypes'; const hideAllExclusive = (component: AlloyComponent, _tConfig: TooltippingConfig, _tState: TooltippingState): void => { component.getSystem().broadcastOn([ ExclusivityChannel ], { }); }; const setComponents = (_component: AlloyComponent, _tConfig: TooltippingConfig, tState: TooltippingState, specs: AlloySpec[]): void => { tState.getTooltip().each((tooltip) => { if (tooltip.getSystem().isConnected()) { Replacing.set(tooltip, specs); } }); }; const isEnabled = (_component: AlloyComponent, _tConfig: TooltippingConfig, tState: TooltippingState): boolean => tState.isEnabled(); const setEnabled = (_component: AlloyComponent, _tConfig: TooltippingConfig, tState: TooltippingState, enabled: boolean): void => tState.setEnabled(enabled); const immediateOpenClose = (component: AlloyComponent, _tConfig: TooltippingConfig, _tState: TooltippingState, open: boolean): void => AlloyTriggers.emit(component, open ? ImmediateShowTooltipEvent : ImmediateHideTooltipEvent); export { hideAllExclusive, immediateOpenClose, isEnabled, setComponents, setEnabled };