UNPKG

typedoc-theme-yaf

Version:

A fresh, opinionated and standalone front-end documentation application consuming Typedoc generated data.

43 lines 1.62 kB
import { events } from '../../handlers/index.js'; import { YafHTMLElement } from '../../index.js'; import { getHtmlTemplate, scrollToAnchor } from '../../yafElement.js'; const { action, trigger } = events; /** * **The app chrome wrapping around the main content portal.** * * This component deals primarily with opening drawers and scrolling to content.\ * It reacts to location input events. */ export class YafChromeContent extends YafHTMLElement { constructor() { super(...arguments); this.focusContent = ({ detail, }) => { const { target } = detail; isNaN(Number(target)) ? scrollToAnchor(this, detail.target) : (this.scrollTop = Number(target)); events.dispatch(action.menu.toggle('close')); }; this.emitScroll = () => { if (this.scrollTimer) clearTimeout(this.scrollTimer); this.scrollTimer = setTimeout(() => { events.dispatch(action.content.scrollTop(this.scrollTop)); }, 100); }; this.events = [ [trigger.content.scrollTo, this.focusContent], ['scroll', this.emitScroll, this], ]; } onConnect() { this.events.forEach((event) => events.on(...event)); this.appendChild(getHtmlTemplate(yafChromeContent)); } disconnectedCallback() { this.events.forEach((event) => events.off(...event)); } } const yafChromeContent = 'yaf-chrome-content'; customElements.define(yafChromeContent, YafChromeContent); //# sourceMappingURL=YafChromeContent.js.map