elements_list.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { element } from "./element.js";
  2. import { type_manager } from "./functions.js";
  3. class elements_list {
  4. #content;
  5. constructor() {
  6. this.#content = {};
  7. }
  8. append(target) {
  9. if (!(target instanceof element)) {
  10. throw "New target on list must be instance of an element.";
  11. }
  12. if (this.exists(target)) {
  13. throw "This element already exists on list.";
  14. }
  15. this.#content[target.name] = target;
  16. }
  17. exists(target) {
  18. if (target instanceof element) {
  19. target = target.name;
  20. }
  21. if (!(type_manager.is_string(target))) {
  22. throw "Target must be instance of string or element.";
  23. }
  24. return this.#content.hasOwnProperty(target);
  25. }
  26. get(target) {
  27. if (!this.exists(target)) {
  28. throw "Element with that name not exists on list.";
  29. }
  30. return this.#content[target];
  31. }
  32. get content() {
  33. return Object.assign({}, this.#content);
  34. }
  35. }
  36. export { elements_list };