UNPKG

@diplodoc/transform

Version:

A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML

54 lines (43 loc) 1.57 kB
import {getEventTarget, isCustom} from '../utils'; import { closeDefinition, getTermByDefinition, openClass, openDefinition, openDefinitionClass, setDefinitionPosition, } from './utils'; if (typeof document !== 'undefined') { document.addEventListener('click', (event) => { if (getEventTarget(event) || !isCustom(event)) { openDefinition(getEventTarget(event) as HTMLElement); } }); document.addEventListener('keydown', (event) => { const openedDefinition = document.getElementsByClassName( openDefinitionClass, )[0] as HTMLElement; if (event.key === 'Enter' && document.activeElement) { openDefinition(document.activeElement as HTMLElement); } if (event.key === 'Escape' && openedDefinition) { closeDefinition(openedDefinition); getTermByDefinition(openedDefinition)?.focus(); // Set focus back to open button after closing popup } }); window.addEventListener('resize', () => { const openedDefinition = document.getElementsByClassName( openDefinitionClass, )[0] as HTMLElement; if (!openedDefinition) { return; } const termId = openedDefinition.getAttribute('term-id') || ''; const termElement = document.getElementById(termId); if (!termElement) { openedDefinition.classList.toggle(openClass); return; } setDefinitionPosition(openedDefinition, termElement); }); }