From 6ea74c268a12325296a1d2e7fc31b02030ddb8bc Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 12 May 2023 17:42:09 -0300 Subject: use ESM module syntax & minor cleanups The biggest change here is moving various element classes under more scope-specific directories, which helps to avoid circular dependencies and is just cleaner to navigate and expand in the future. Otherwise this is a largely uncritical port to ESM module syntax! There are probably a number of changes and other cleanups that remain much needed. Whenever I make changes to tui-lib it's hard to believe it's already been years since the previous time. First commits are from January 2017, and the code originates a month earlier in KAaRMNoD! --- ui/Element.js | 80 ----------------------------------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 ui/Element.js (limited to 'ui/Element.js') diff --git a/ui/Element.js b/ui/Element.js deleted file mode 100644 index c5beb59..0000000 --- a/ui/Element.js +++ /dev/null @@ -1,80 +0,0 @@ -const EventEmitter = require('events') - -module.exports = class Element extends EventEmitter { - // The basic class containing methods for working with an element hierarchy. - // Generally speaking, you usually want to extend DisplayElement instead of - // this class. - - constructor() { - super() - - this.children = [] - this.parent = null - } - - eachDescendant(fn) { - // Run a function on this element, all of its children, all of their - // children, etc. - fn(this) - for (const child of this.children) { - child.eachDescendant(fn) - } - } - - addChild(child, afterIndex = this.children.length, {fixLayout = true} = {}) { - // TODO Don't let a direct ancestor of this be added as a child. Don't - // let itself be one of its childs either! - - if (child === this) { - throw exception( - 'EINVALIDHIERARCHY', 'An element cannot be a child of itself') - } - - child.parent = this - - if (afterIndex === this.children.length) { - this.children.push(child) - } else { - this.children.splice(afterIndex, 0, child) - } - - if (fixLayout) { - child.fixLayout() - } - } - - removeChild(child, {fixLayout = true} = {}) { - // Removes the given child element from the children list of this - // element. It won't be rendered in the future. If the given element - // isn't a direct child of this element, nothing will happen. - - if (child.parent !== this) { - return - } - - child.parent = null - this.children.splice(this.children.indexOf(child), 1) - - if (fixLayout) { - this.fixLayout() - } - } - - get root() { - let el = this - while (el.parent) { - el = el.parent - } - return el - } - - get directAncestors() { - const ancestors = [] - let el = this - while (el.parent) { - el = el.parent - ancestors.push(el) - } - return ancestors - } -} -- cgit 1.3.0-6-gf8a5