UNPKG

cognitive-complexity-ts

Version:

This program analyses TypeScript and JavaScript code according to the [Cognitive Complexity metric](https://www.sonarsource.com/docs/CognitiveComplexity.pdf). It produces a JSON summary and a GUI for exploring the complexity of your codebase.

52 lines 1.83 kB
import { flexGrow, flexNone } from "../../flex.js"; import { addStyleSheet, element } from "../../framework.js"; import { computeOnce } from "../../util.js"; import { FlexBox } from "./FlexBox.js"; import { ToggleButton } from "./ToggleButton.js"; addStyleSheet(import.meta.url); export class ToggleableBox { constructor(visibleContent, isTopLevel, onManualStateChange) { this.showHideable = isTopLevel; this.box = new FlexBox(); this.toggleableContent = () => []; this.toggleableContentWrapper = flexGrow(new ContentWrapper()); this.toggleButton = flexNone(new ToggleButton(this.showHideable, (newIsOpen) => { this.showHideable = newIsOpen; this.rerender(); }, onManualStateChange)); this.visibleContent = visibleContent; this.rerender(); } get dom() { return this.box.dom; } changeHideableContent(toggleableContent) { this.toggleableContent = computeOnce(toggleableContent); this.rerender(); } rerender() { this.toggleableContentWrapper.rerender(this.visibleContent, this.showHideable ? this.toggleableContent() : []); this.box.rerender([ (this.toggleableContent().length > 0 ? this.toggleButton.dom : ""), this.toggleableContentWrapper.dom, ]); } setOpenness(open) { this.toggleButton.setState(open); } } class ContentWrapper { constructor() { this.dom = element("div", { className: "toggleablebox-contentwrapper" }); } rerender(visibleContent, toggleableContent) { this.dom.innerHTML = ""; this.dom.append(...visibleContent); this.dom.append(...toggleableContent); } } //# sourceMappingURL=ToggleableBox.js.map