@angelscmf/front 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +41 -18
  2. package/dist/AngelsFrontAnimationLibrary.js +15 -14
  3. package/dist/AngelsFrontAnimationLibrary.js.map +1 -1
  4. package/dist/AngelsFrontAnimationLibrary.mjs +15 -14
  5. package/dist/AngelsFrontAnimationLibrary.mjs.map +1 -1
  6. package/dist/AngelsFrontApplication.js +59 -47
  7. package/dist/AngelsFrontApplication.js.map +1 -1
  8. package/dist/AngelsFrontApplication.mjs +59 -47
  9. package/dist/AngelsFrontApplication.mjs.map +1 -1
  10. package/dist/AngelsFrontDOMLibrary.d.mts +3 -2
  11. package/dist/AngelsFrontDOMLibrary.d.ts +3 -2
  12. package/dist/AngelsFrontDOMLibrary.js +30 -16
  13. package/dist/AngelsFrontDOMLibrary.js.map +1 -1
  14. package/dist/AngelsFrontDOMLibrary.mjs +29 -16
  15. package/dist/AngelsFrontDOMLibrary.mjs.map +1 -1
  16. package/dist/AngelsFrontElement.d.mts +2 -1
  17. package/dist/AngelsFrontElement.d.ts +2 -1
  18. package/dist/AngelsFrontElement.js +15 -14
  19. package/dist/AngelsFrontElement.js.map +1 -1
  20. package/dist/AngelsFrontElement.mjs +15 -14
  21. package/dist/AngelsFrontElement.mjs.map +1 -1
  22. package/dist/AngelsFrontLoader.js +4452 -25
  23. package/dist/AngelsFrontLoader.js.map +1 -1
  24. package/dist/AngelsFrontLoader.mjs +4452 -25
  25. package/dist/AngelsFrontLoader.mjs.map +1 -1
  26. package/dist/AngelsFrontPage.js +59 -47
  27. package/dist/AngelsFrontPage.js.map +1 -1
  28. package/dist/AngelsFrontPage.mjs +59 -47
  29. package/dist/AngelsFrontPage.mjs.map +1 -1
  30. package/dist/AngelsFrontWidgetClass.js +59 -47
  31. package/dist/AngelsFrontWidgetClass.js.map +1 -1
  32. package/dist/AngelsFrontWidgetClass.mjs +59 -47
  33. package/dist/AngelsFrontWidgetClass.mjs.map +1 -1
  34. package/package.json +4 -1
  35. package/sass/AngelsDesign.scss +5 -0
  36. package/sass/angelsTags/_a-alpha.scss +29 -0
  37. package/sass/angelsTags/_a-center.scss +15 -0
  38. package/sass/angelsTags/_a-float.scss +42 -0
  39. package/sass/angelsTags/_a-icenter.scss +15 -0
  40. package/sass/angelsTags/_a-page.scss +2 -2
  41. package/sass/angelsTags/_a-text-transform.scss +29 -0
@@ -100,23 +100,24 @@ function aLibRevealElement(originalElement) {
100
100
  }
101
101
 
102
102
  // src/AngelsFrontElement.ts
103
- var AngelsFrontElementClass = class {
103
+ var AngelsFrontElementClass = class _AngelsFrontElementClass {
104
104
  constructor(element) {
105
- this.originalElement = element;
105
+ this.aProxyBaseClass = _AngelsFrontElementClass;
106
+ this.elementBase = element;
106
107
  return new Proxy(this, {
107
108
  get(target, prop, receiver) {
108
109
  if (prop in target) {
109
110
  return Reflect.get(target, prop);
110
111
  }
111
- const valueOfProperty = Reflect.get(target.originalElement, prop);
112
+ const valueOfProperty = Reflect.get(target.elementBase, prop);
112
113
  if (typeof valueOfProperty === "function") {
113
- return valueOfProperty.bind(target.originalElement);
114
+ return valueOfProperty.bind(target.elementBase);
114
115
  }
115
116
  return valueOfProperty;
116
117
  },
117
118
  set(target, prop, newValue, receiver) {
118
- if (prop in target.originalElement) {
119
- target.originalElement[prop] = newValue;
119
+ if (prop in target.elementBase) {
120
+ target.elementBase[prop] = newValue;
120
121
  } else {
121
122
  target[prop] = newValue;
122
123
  }
@@ -125,35 +126,35 @@ var AngelsFrontElementClass = class {
125
126
  });
126
127
  }
127
128
  aConcealElement() {
128
- aLibConcealElement(this.originalElement);
129
+ aLibConcealElement(this.elementBase);
129
130
  return this;
130
131
  }
131
132
  aEngageElement(switcher = void 0) {
132
- aLibEngageElement(this.originalElement, switcher);
133
+ aLibEngageElement(this.elementBase, switcher);
133
134
  return this;
134
135
  }
135
136
  aHideElement() {
136
- this.originalElement.hidden = true;
137
+ this.elementBase.hidden = true;
137
138
  return this;
138
139
  }
139
140
  aRevealElement() {
140
- aLibRevealElement(this.originalElement);
141
+ aLibRevealElement(this.elementBase);
141
142
  return this;
142
143
  }
143
144
  aShowElement() {
144
- this.originalElement.hidden = false;
145
+ this.elementBase.hidden = false;
145
146
  return this;
146
147
  }
147
148
  aSetTextContent(content) {
148
149
  const contentToSet = content.toString();
149
- this.originalElement.textContent = contentToSet;
150
+ this.elementBase.textContent = contentToSet;
150
151
  return this;
151
152
  }
152
153
  aTextContent() {
153
- if (this.originalElement.textContent === null) {
154
+ if (this.elementBase.textContent === null) {
154
155
  return ``;
155
156
  }
156
- return this.originalElement.textContent;
157
+ return this.elementBase.textContent;
157
158
  }
158
159
  };
159
160
 
@@ -267,7 +268,7 @@ var AngelsFrontMod = class {
267
268
  var AngelsFrontWidgetClass = class extends AngelsFrontMod {
268
269
  constructor(element) {
269
270
  super();
270
- this.widElement = new AngelsFrontElementClass(element);
271
+ this.widElement = aLibPrepareElement(element);
271
272
  return new Proxy(this, {
272
273
  get(target, prop, receiver) {
273
274
  if (prop in target) {
@@ -351,6 +352,17 @@ function aLibHideElement(selector) {
351
352
  element.hidden = true;
352
353
  return element;
353
354
  }
355
+ function aLibPrepareElement(element) {
356
+ let angelsFrontElement;
357
+ if ("aProxyBaseClass" in element && element.aProxyBaseClass === AngelsFrontElementClass) {
358
+ angelsFrontElement = element;
359
+ } else if (element instanceof HTMLElement) {
360
+ angelsFrontElement = new AngelsFrontElementClass(element);
361
+ } else {
362
+ throw Error("Cannot prepare element: invalid element type.");
363
+ }
364
+ return angelsFrontElement;
365
+ }
354
366
  function aLibShowElement(selector) {
355
367
  const element = aLibRequireElement(selector);
356
368
  element.hidden = false;
@@ -359,7 +371,7 @@ function aLibShowElement(selector) {
359
371
  function aLibToggleElement(originalElement, switcher = void 0) {
360
372
  const innerElement = aLibRequireElement(originalElement);
361
373
  if (switcher === void 0) {
362
- switcher = !innerElement.hidden;
374
+ switcher = innerElement.hidden;
363
375
  }
364
376
  if (switcher) {
365
377
  return aLibShowElement(innerElement);
@@ -371,6 +383,7 @@ export {
371
383
  aLibCreateWidget,
372
384
  aLibFindElement,
373
385
  aLibHideElement,
386
+ aLibPrepareElement,
374
387
  aLibRequireElement,
375
388
  aLibShowElement,
376
389
  aLibToggleElement
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontElement.ts","../src/AngelsFrontMod.ts","../src/AngelsFrontWidgetClass.ts","../src/AngelsFrontDOMLibrary.ts"],"sourcesContent":["import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n","import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public originalElement: THTMLElement;\n\n constructor(element: THTMLElement) {\n\n this.originalElement = element;\n\n return new Proxy(this, {\n\n get(target: any, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.originalElement, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.originalElement);\n }\n return valueOfProperty;\n },\n\n set(target: any, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.originalElement) {\n // @test AngelsFrontElementClass sets properties on the original element\n target.originalElement[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n target[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.originalElement);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.originalElement, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.originalElement.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.originalElement);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.originalElement.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets originalElement.textContent\n this.originalElement.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.originalElement.textContent === null) {\n // @test aTextContent() returns empty string if originalElement.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of originalElement\n return this.originalElement.textContent;\n }\n}\n","export default class AngelsFrontMod {\n\n protected modSubMods: Array<AngelsFrontMod>;\n public modWaitStartTimeout = 1000;\n\n constructor() {\n this.modSubMods = new Array;\n }\n\n /**\n * Starts AngelsFrontMod.\n */\n modStart() {\n this.modInit();\n this.modBind();\n this.modLink();\n this.modRun();\n setTimeout(() => {\n this.modWait();\n }, this.modWaitStartTimeout);\n }\n\n /**\n * Finishes AngelsFrontMod.\n */\n modFinish() {\n this.modDeWait();\n this.modDeRun();\n this.modDeLink();\n this.modDeBind();\n this.modDeInit();\n }\n\n /**\n * Inits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modInit() {\n this.modSubMods.forEach(mod => mod.modInit());\n }\n\n /**\n * Binds AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modBind() {\n this.modSubMods.forEach(mod => mod.modBind());\n }\n\n /**\n * Links AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modLink() {\n this.modSubMods.forEach(mod => mod.modLink());\n }\n\n /**\n * Runs AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modRun() {\n this.modSubMods.forEach(mod => mod.modRun());\n }\n\n /**\n * Waits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modWait() {\n this.modSubMods.forEach(mod => mod.modWait());\n }\n\n /**\n * DeInits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeInit() {\n this.modSubMods.forEach(mod => mod.modDeInit());\n }\n /**\n * DeBinds AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeBind() {\n this.modSubMods.forEach(mod => mod.modDeBind());\n }\n /**\n * DeLinks AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeLink() {\n this.modSubMods.forEach(mod => mod.modDeLink());\n }\n /**\n * DeRuns AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeRun() {\n this.modSubMods.forEach(mod => mod.modDeRun());\n }\n /**\n * DeWaits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeWait() {\n this.modSubMods.forEach(mod => mod.modDeWait());\n }\n\n modDestructor() {\n this.modSubMods.forEach(mod => mod.modDestructor());\n }\n\n modAddSubMod(mod: null): null;\n modAddSubMod<TMod extends AngelsFrontMod>(mod: TMod): TMod;\n modAddSubMod<TMod extends AngelsFrontMod>(mod: TMod | null): TMod | null {\n if (mod) {\n this.modSubMods.push(mod);\n mod.modInit();\n return mod;\n }\n return null;\n }\n\n modRequireSubMod<TMod extends AngelsFrontMod>(mod: TMod): TMod {\n this.modSubMods.push(mod);\n mod.modInit();\n return mod;\n }\n}","import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport AngelsFrontMod from \"./AngelsFrontMod\";\n\nexport type AngelsFrontWidget<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontWidgetClass<THTMLElement> & THTMLElement;\n\nexport default interface AngelsFrontWidgetClass<TWidgetHTMLElement extends HTMLElement = HTMLElement> extends HTMLElement { }\n\nexport default class AngelsFrontWidgetClass<TWidgetHTMLElement extends HTMLElement = HTMLElement> extends AngelsFrontMod {\n\n readonly widElement: AngelsFrontElement<TWidgetHTMLElement>;\n\n constructor(element: TWidgetHTMLElement) {\n super();\n this.widElement = new AngelsFrontElementClass(element) as AngelsFrontElement<TWidgetHTMLElement>;\n return new Proxy(this, {\n get(target: any, prop: string | symbol, receiver: any) {\n if (prop in target) {\n const valueOfProperty = target[prop];\n if (typeof valueOfProperty === 'function') {\n return Reflect.get(target, prop);\n }\n return valueOfProperty;\n }\n\n const valueOfProperty = target.widElement[prop];\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.widElement);\n }\n return valueOfProperty;\n },\n\n set(target: any, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target) {\n target[prop] = newValue;\n } else {\n target.widElement[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontWidget<TWidgetHTMLElement>;\n }\n\n widFindElement<THTMLElement extends HTMLElement = HTMLElement>(selector: string): AngelsFrontElement<THTMLElement> | null | null {\n const findElement = this.widElement.querySelector(selector);\n if (findElement) {\n return aFindElement<THTMLElement>(findElement);\n }\n return null;\n }\n\n widFindElements<THTMLElement extends HTMLElement = HTMLElement>(selector: string): Array<AngelsFrontElement<THTMLElement>> {\n return Array.from(this.widElement.querySelectorAll(selector))\n .map(aFindElement);\n }\n\n widRequireElement<THTMLElement extends HTMLElement = HTMLElement>(selector: string): AngelsFrontElement<THTMLElement> {\n const element = this.widElement.querySelector(selector);\n if (element) {\n return aFindElement<THTMLElement>(element);\n }\n throw Error(`Element '${selector}' is not found.`);\n }\n}","import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = !innerElement.hidden;\n }\n if (switcher) {\n return aLibShowElement(innerElement);\n } else {\n return aLibHideElement(innerElement);\n }\n}\n"],"mappings":"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","names":["valueOfProperty"]}
1
+ {"version":3,"sources":["../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontElement.ts","../src/AngelsFrontMod.ts","../src/AngelsFrontWidgetClass.ts","../src/AngelsFrontDOMLibrary.ts"],"sourcesContent":["import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n","import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public elementBase: THTMLElement;\n aProxyBaseClass: typeof AngelsFrontElementClass = AngelsFrontElementClass;\n\n constructor(element: THTMLElement) {\n\n this.elementBase = element;\n\n return new Proxy(this, {\n\n get(target: AngelsFrontElementClass, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.elementBase, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.elementBase);\n }\n return valueOfProperty;\n },\n\n set(target: AngelsFrontElementClass, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.elementBase) {\n // @test AngelsFrontElementClass sets properties on the original element\n (target as any).elementBase[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n (target as any)[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.elementBase);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.elementBase, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.elementBase.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.elementBase);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.elementBase.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets elementBase.textContent\n this.elementBase.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.elementBase.textContent === null) {\n // @test aTextContent() returns empty string if elementBase.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of elementBase\n return this.elementBase.textContent;\n }\n}\n","export default class AngelsFrontMod {\n\n protected modSubMods: Array<AngelsFrontMod>;\n public modWaitStartTimeout = 1000;\n\n constructor() {\n this.modSubMods = new Array;\n }\n\n /**\n * Starts AngelsFrontMod.\n */\n modStart() {\n this.modInit();\n this.modBind();\n this.modLink();\n this.modRun();\n setTimeout(() => {\n this.modWait();\n }, this.modWaitStartTimeout);\n }\n\n /**\n * Finishes AngelsFrontMod.\n */\n modFinish() {\n this.modDeWait();\n this.modDeRun();\n this.modDeLink();\n this.modDeBind();\n this.modDeInit();\n }\n\n /**\n * Inits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modInit() {\n this.modSubMods.forEach(mod => mod.modInit());\n }\n\n /**\n * Binds AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modBind() {\n this.modSubMods.forEach(mod => mod.modBind());\n }\n\n /**\n * Links AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modLink() {\n this.modSubMods.forEach(mod => mod.modLink());\n }\n\n /**\n * Runs AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modRun() {\n this.modSubMods.forEach(mod => mod.modRun());\n }\n\n /**\n * Waits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modWait() {\n this.modSubMods.forEach(mod => mod.modWait());\n }\n\n /**\n * DeInits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeInit() {\n this.modSubMods.forEach(mod => mod.modDeInit());\n }\n /**\n * DeBinds AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeBind() {\n this.modSubMods.forEach(mod => mod.modDeBind());\n }\n /**\n * DeLinks AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeLink() {\n this.modSubMods.forEach(mod => mod.modDeLink());\n }\n /**\n * DeRuns AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeRun() {\n this.modSubMods.forEach(mod => mod.modDeRun());\n }\n /**\n * DeWaits AngelsFrontMod and its sub-modules AngelsFrontMod.\n */\n modDeWait() {\n this.modSubMods.forEach(mod => mod.modDeWait());\n }\n\n modDestructor() {\n this.modSubMods.forEach(mod => mod.modDestructor());\n }\n\n modAddSubMod(mod: null): null;\n modAddSubMod<TMod extends AngelsFrontMod>(mod: TMod): TMod;\n modAddSubMod<TMod extends AngelsFrontMod>(mod: TMod | null): TMod | null {\n if (mod) {\n this.modSubMods.push(mod);\n mod.modInit();\n return mod;\n }\n return null;\n }\n\n modRequireSubMod<TMod extends AngelsFrontMod>(mod: TMod): TMod {\n this.modSubMods.push(mod);\n mod.modInit();\n return mod;\n }\n}","import { aLibPrepareElement } from \"./AngelsFrontDOMLibrary\";\nimport { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport AngelsFrontMod from \"./AngelsFrontMod\";\n\nexport type AngelsFrontWidget<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontWidgetClass<THTMLElement> & THTMLElement;\n\nexport default interface AngelsFrontWidgetClass<TWidgetHTMLElement extends HTMLElement = HTMLElement> extends HTMLElement { }\n\nexport default class AngelsFrontWidgetClass<TWidgetHTMLElement extends HTMLElement = HTMLElement> extends AngelsFrontMod {\n\n readonly widElement: AngelsFrontElement<TWidgetHTMLElement>;\n\n constructor(element: TWidgetHTMLElement) {\n super();\n this.widElement = aLibPrepareElement<TWidgetHTMLElement>(element);\n return new Proxy(this, {\n get(target: any, prop: string | symbol, receiver: any) {\n if (prop in target) {\n const valueOfProperty = target[prop];\n if (typeof valueOfProperty === 'function') {\n return Reflect.get(target, prop);\n }\n return valueOfProperty;\n }\n\n const valueOfProperty = target.widElement[prop];\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.widElement);\n }\n return valueOfProperty;\n },\n\n set(target: any, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target) {\n target[prop] = newValue;\n } else {\n target.widElement[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontWidget<TWidgetHTMLElement>;\n }\n\n widFindElement<THTMLElement extends HTMLElement = HTMLElement>(selector: string): AngelsFrontElement<THTMLElement> | null | null {\n const findElement = this.widElement.querySelector(selector);\n if (findElement) {\n return aFindElement<THTMLElement>(findElement);\n }\n return null;\n }\n\n widFindElements<THTMLElement extends HTMLElement = HTMLElement>(selector: string): Array<AngelsFrontElement<THTMLElement>> {\n return Array.from(this.widElement.querySelectorAll(selector))\n .map(aFindElement);\n }\n\n widRequireElement<THTMLElement extends HTMLElement = HTMLElement>(selector: string): AngelsFrontElement<THTMLElement> {\n const element = this.widElement.querySelector(selector);\n if (element) {\n return aFindElement<THTMLElement>(element);\n }\n throw Error(`Element '${selector}' is not found.`);\n }\n}","import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibPrepareElement<TWidgetHTMLElement extends HTMLElement = HTMLElement>(element: TWidgetHTMLElement | AngelsFrontElementClass<TWidgetHTMLElement>): AngelsFrontElement<TWidgetHTMLElement> {\n let angelsFrontElement: AngelsFrontElement<TWidgetHTMLElement>;\n if ('aProxyBaseClass' in element && element.aProxyBaseClass === AngelsFrontElementClass) {\n // @test aLibPrepareElement() returns existing AngelsFrontElement when element has aProxyBaseClass\n angelsFrontElement = element as AngelsFrontElement<TWidgetHTMLElement>;\n } else if (element instanceof HTMLElement) {\n // @test aLibPrepareElement() creates new AngelsFrontElement when element is HTMLElement\n angelsFrontElement = new AngelsFrontElementClass(element) as AngelsFrontElement<TWidgetHTMLElement>;\n } else {\n // @test aLibPrepareElement() throws error when element is invalid type\n throw Error('Cannot prepare element: invalid element type.');\n }\n return angelsFrontElement\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n // @test aLibToggleElement() toggles element when switcher undefined and hidden false\n // @test aLibToggleElement() toggles element when switcher undefined and hidden true\n switcher = innerElement.hidden;\n }\n if (switcher) {\n // @test aLibToggleElement() shows element when switcher is true\n return aLibShowElement(innerElement);\n } else {\n // @test aLibToggleElement() hides element when switcher is false\n return aLibHideElement(innerElement);\n }\n}\n"],"mappings":"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","names":["valueOfProperty"]}
@@ -1,6 +1,7 @@
1
1
  type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;
2
2
  declare class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {
3
- originalElement: THTMLElement;
3
+ elementBase: THTMLElement;
4
+ aProxyBaseClass: typeof AngelsFrontElementClass;
4
5
  constructor(element: THTMLElement);
5
6
  aConcealElement(): this;
6
7
  aEngageElement(switcher?: boolean | undefined): this;
@@ -1,6 +1,7 @@
1
1
  type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;
2
2
  declare class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {
3
- originalElement: THTMLElement;
3
+ elementBase: THTMLElement;
4
+ aProxyBaseClass: typeof AngelsFrontElementClass;
4
5
  constructor(element: THTMLElement);
5
6
  aConcealElement(): this;
6
7
  aEngageElement(switcher?: boolean | undefined): this;
@@ -157,23 +157,24 @@ function aLibRevealElement(originalElement) {
157
157
  }
158
158
 
159
159
  // src/AngelsFrontElement.ts
160
- var AngelsFrontElementClass = class {
160
+ var AngelsFrontElementClass = class _AngelsFrontElementClass {
161
161
  constructor(element) {
162
- this.originalElement = element;
162
+ this.aProxyBaseClass = _AngelsFrontElementClass;
163
+ this.elementBase = element;
163
164
  return new Proxy(this, {
164
165
  get(target, prop, receiver) {
165
166
  if (prop in target) {
166
167
  return Reflect.get(target, prop);
167
168
  }
168
- const valueOfProperty = Reflect.get(target.originalElement, prop);
169
+ const valueOfProperty = Reflect.get(target.elementBase, prop);
169
170
  if (typeof valueOfProperty === "function") {
170
- return valueOfProperty.bind(target.originalElement);
171
+ return valueOfProperty.bind(target.elementBase);
171
172
  }
172
173
  return valueOfProperty;
173
174
  },
174
175
  set(target, prop, newValue, receiver) {
175
- if (prop in target.originalElement) {
176
- target.originalElement[prop] = newValue;
176
+ if (prop in target.elementBase) {
177
+ target.elementBase[prop] = newValue;
177
178
  } else {
178
179
  target[prop] = newValue;
179
180
  }
@@ -182,35 +183,35 @@ var AngelsFrontElementClass = class {
182
183
  });
183
184
  }
184
185
  aConcealElement() {
185
- aLibConcealElement(this.originalElement);
186
+ aLibConcealElement(this.elementBase);
186
187
  return this;
187
188
  }
188
189
  aEngageElement(switcher = void 0) {
189
- aLibEngageElement(this.originalElement, switcher);
190
+ aLibEngageElement(this.elementBase, switcher);
190
191
  return this;
191
192
  }
192
193
  aHideElement() {
193
- this.originalElement.hidden = true;
194
+ this.elementBase.hidden = true;
194
195
  return this;
195
196
  }
196
197
  aRevealElement() {
197
- aLibRevealElement(this.originalElement);
198
+ aLibRevealElement(this.elementBase);
198
199
  return this;
199
200
  }
200
201
  aShowElement() {
201
- this.originalElement.hidden = false;
202
+ this.elementBase.hidden = false;
202
203
  return this;
203
204
  }
204
205
  aSetTextContent(content) {
205
206
  const contentToSet = content.toString();
206
- this.originalElement.textContent = contentToSet;
207
+ this.elementBase.textContent = contentToSet;
207
208
  return this;
208
209
  }
209
210
  aTextContent() {
210
- if (this.originalElement.textContent === null) {
211
+ if (this.elementBase.textContent === null) {
211
212
  return ``;
212
213
  }
213
- return this.originalElement.textContent;
214
+ return this.elementBase.textContent;
214
215
  }
215
216
  };
216
217
  //# sourceMappingURL=AngelsFrontElement.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontElement.ts","../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts"],"sourcesContent":["import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public originalElement: THTMLElement;\n\n constructor(element: THTMLElement) {\n\n this.originalElement = element;\n\n return new Proxy(this, {\n\n get(target: any, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.originalElement, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.originalElement);\n }\n return valueOfProperty;\n },\n\n set(target: any, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.originalElement) {\n // @test AngelsFrontElementClass sets properties on the original element\n target.originalElement[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n target[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.originalElement);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.originalElement, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.originalElement.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.originalElement);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.originalElement.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets originalElement.textContent\n this.originalElement.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.originalElement.textContent === null) {\n // @test aTextContent() returns empty string if originalElement.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of originalElement\n return this.originalElement.textContent;\n }\n}\n","import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = !innerElement.hidden;\n }\n if (switcher) {\n return aLibShowElement(innerElement);\n } else {\n return aLibHideElement(innerElement);\n }\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontElement.ts","../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts"],"sourcesContent":["import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public elementBase: THTMLElement;\n aProxyBaseClass: typeof AngelsFrontElementClass = AngelsFrontElementClass;\n\n constructor(element: THTMLElement) {\n\n this.elementBase = element;\n\n return new Proxy(this, {\n\n get(target: AngelsFrontElementClass, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.elementBase, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.elementBase);\n }\n return valueOfProperty;\n },\n\n set(target: AngelsFrontElementClass, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.elementBase) {\n // @test AngelsFrontElementClass sets properties on the original element\n (target as any).elementBase[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n (target as any)[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.elementBase);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.elementBase, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.elementBase.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.elementBase);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.elementBase.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets elementBase.textContent\n this.elementBase.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.elementBase.textContent === null) {\n // @test aTextContent() returns empty string if elementBase.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of elementBase\n return this.elementBase.textContent;\n }\n}\n","import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibPrepareElement<TWidgetHTMLElement extends HTMLElement = HTMLElement>(element: TWidgetHTMLElement | AngelsFrontElementClass<TWidgetHTMLElement>): AngelsFrontElement<TWidgetHTMLElement> {\n let angelsFrontElement: AngelsFrontElement<TWidgetHTMLElement>;\n if ('aProxyBaseClass' in element && element.aProxyBaseClass === AngelsFrontElementClass) {\n // @test aLibPrepareElement() returns existing AngelsFrontElement when element has aProxyBaseClass\n angelsFrontElement = element as AngelsFrontElement<TWidgetHTMLElement>;\n } else if (element instanceof HTMLElement) {\n // @test aLibPrepareElement() creates new AngelsFrontElement when element is HTMLElement\n angelsFrontElement = new AngelsFrontElementClass(element) as AngelsFrontElement<TWidgetHTMLElement>;\n } else {\n // @test aLibPrepareElement() throws error when element is invalid type\n throw Error('Cannot prepare element: invalid element type.');\n }\n return angelsFrontElement\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n // @test aLibToggleElement() toggles element when switcher undefined and hidden false\n // @test aLibToggleElement() toggles element when switcher undefined and hidden true\n switcher = innerElement.hidden;\n }\n if (switcher) {\n // @test aLibToggleElement() shows element when switcher is true\n return aLibShowElement(innerElement);\n } else {\n // @test aLibToggleElement() hides element when switcher is false\n return aLibHideElement(innerElement);\n }\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n"],"mappings":"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","names":[]}
@@ -132,23 +132,24 @@ function aLibRevealElement(originalElement) {
132
132
  }
133
133
 
134
134
  // src/AngelsFrontElement.ts
135
- var AngelsFrontElementClass = class {
135
+ var AngelsFrontElementClass = class _AngelsFrontElementClass {
136
136
  constructor(element) {
137
- this.originalElement = element;
137
+ this.aProxyBaseClass = _AngelsFrontElementClass;
138
+ this.elementBase = element;
138
139
  return new Proxy(this, {
139
140
  get(target, prop, receiver) {
140
141
  if (prop in target) {
141
142
  return Reflect.get(target, prop);
142
143
  }
143
- const valueOfProperty = Reflect.get(target.originalElement, prop);
144
+ const valueOfProperty = Reflect.get(target.elementBase, prop);
144
145
  if (typeof valueOfProperty === "function") {
145
- return valueOfProperty.bind(target.originalElement);
146
+ return valueOfProperty.bind(target.elementBase);
146
147
  }
147
148
  return valueOfProperty;
148
149
  },
149
150
  set(target, prop, newValue, receiver) {
150
- if (prop in target.originalElement) {
151
- target.originalElement[prop] = newValue;
151
+ if (prop in target.elementBase) {
152
+ target.elementBase[prop] = newValue;
152
153
  } else {
153
154
  target[prop] = newValue;
154
155
  }
@@ -157,35 +158,35 @@ var AngelsFrontElementClass = class {
157
158
  });
158
159
  }
159
160
  aConcealElement() {
160
- aLibConcealElement(this.originalElement);
161
+ aLibConcealElement(this.elementBase);
161
162
  return this;
162
163
  }
163
164
  aEngageElement(switcher = void 0) {
164
- aLibEngageElement(this.originalElement, switcher);
165
+ aLibEngageElement(this.elementBase, switcher);
165
166
  return this;
166
167
  }
167
168
  aHideElement() {
168
- this.originalElement.hidden = true;
169
+ this.elementBase.hidden = true;
169
170
  return this;
170
171
  }
171
172
  aRevealElement() {
172
- aLibRevealElement(this.originalElement);
173
+ aLibRevealElement(this.elementBase);
173
174
  return this;
174
175
  }
175
176
  aShowElement() {
176
- this.originalElement.hidden = false;
177
+ this.elementBase.hidden = false;
177
178
  return this;
178
179
  }
179
180
  aSetTextContent(content) {
180
181
  const contentToSet = content.toString();
181
- this.originalElement.textContent = contentToSet;
182
+ this.elementBase.textContent = contentToSet;
182
183
  return this;
183
184
  }
184
185
  aTextContent() {
185
- if (this.originalElement.textContent === null) {
186
+ if (this.elementBase.textContent === null) {
186
187
  return ``;
187
188
  }
188
- return this.originalElement.textContent;
189
+ return this.elementBase.textContent;
189
190
  }
190
191
  };
191
192
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontElement.ts"],"sourcesContent":["import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = !innerElement.hidden;\n }\n if (switcher) {\n return aLibShowElement(innerElement);\n } else {\n return aLibHideElement(innerElement);\n }\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n","import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public originalElement: THTMLElement;\n\n constructor(element: THTMLElement) {\n\n this.originalElement = element;\n\n return new Proxy(this, {\n\n get(target: any, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.originalElement, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.originalElement);\n }\n return valueOfProperty;\n },\n\n set(target: any, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.originalElement) {\n // @test AngelsFrontElementClass sets properties on the original element\n target.originalElement[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n target[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.originalElement);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.originalElement, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.originalElement.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.originalElement);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.originalElement.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets originalElement.textContent\n this.originalElement.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.originalElement.textContent === null) {\n // @test aTextContent() returns empty string if originalElement.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of originalElement\n return this.originalElement.textContent;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontElement.ts"],"sourcesContent":["import AngelsFrontElementClass, { AngelsFrontElement } from \"./AngelsFrontElement\";\nimport { AngelsFrontWidget } from \"./AngelsFrontWidgetClass\";\nimport AngelsFrontWidgetClass from \"./AngelsFrontWidgetClass\";\n\nexport function aLibCreateWidget<THTMLElement extends HTMLElement = HTMLElement>(element: THTMLElement): AngelsFrontWidget<THTMLElement> {\n return (new AngelsFrontWidgetClass<THTMLElement>(element)) as AngelsFrontWidget<THTMLElement>;\n}\n\nexport function aLibFindElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType<THTMLElement>): AngelsFrontElement<THTMLElement> | null {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n return null;\n } else if (selector === null) {\n return null;\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n return null;\n }\n element = findElement;\n } else if (selector instanceof HTMLElement) {\n element = selector as THTMLElement;\n } else if (selector instanceof Element) {\n element = selector as THTMLElement;\n } else if (selector instanceof AngelsFrontElementClass) {\n return selector as AngelsFrontElement<THTMLElement>;\n } else {\n element = selector;\n }\n return new AngelsFrontElementClass(element) as AngelsFrontElement<THTMLElement>;\n}\n\nexport function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibFindElement<THTMLElement>(selector);\n if (element) {\n return element;\n }\n throw Error(`Element not found by '${selector}' selector.`);\n}\n\nexport function aLibHideElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = true;\n return element;\n}\n\nexport function aLibPrepareElement<TWidgetHTMLElement extends HTMLElement = HTMLElement>(element: TWidgetHTMLElement | AngelsFrontElementClass<TWidgetHTMLElement>): AngelsFrontElement<TWidgetHTMLElement> {\n let angelsFrontElement: AngelsFrontElement<TWidgetHTMLElement>;\n if ('aProxyBaseClass' in element && element.aProxyBaseClass === AngelsFrontElementClass) {\n // @test aLibPrepareElement() returns existing AngelsFrontElement when element has aProxyBaseClass\n angelsFrontElement = element as AngelsFrontElement<TWidgetHTMLElement>;\n } else if (element instanceof HTMLElement) {\n // @test aLibPrepareElement() creates new AngelsFrontElement when element is HTMLElement\n angelsFrontElement = new AngelsFrontElementClass(element) as AngelsFrontElement<TWidgetHTMLElement>;\n } else {\n // @test aLibPrepareElement() throws error when element is invalid type\n throw Error('Cannot prepare element: invalid element type.');\n }\n return angelsFrontElement\n}\n\nexport function aLibShowElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): AngelsFrontElement<THTMLElement> {\n const element = aLibRequireElement<THTMLElement>(selector);\n element.hidden = false;\n return element;\n}\n\nexport function aLibToggleElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n // @test aLibToggleElement() toggles element when switcher undefined and hidden false\n // @test aLibToggleElement() toggles element when switcher undefined and hidden true\n switcher = innerElement.hidden;\n }\n if (switcher) {\n // @test aLibToggleElement() shows element when switcher is true\n return aLibShowElement(innerElement);\n } else {\n // @test aLibToggleElement() hides element when switcher is false\n return aLibHideElement(innerElement);\n }\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibConcealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n resolve();\n }\n\n innerElement.classList.add('a-out-animation');\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n innerElement.hidden = true;\n innerElement.classList.remove('a-out-animation');\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n innerElement.hidden = true;\n resolve();\n }\n });\n\n return promise;\n}\n\nexport async function aLibEngageElement(originalElement: AngelsSelectorType, switcher: boolean | undefined = undefined) {\n const innerElement = aLibRequireElement(originalElement);\n if (switcher === undefined) {\n switcher = innerElement.hidden;\n }\n\n if (switcher) {\n return await aLibRevealElement(innerElement);\n } else {\n return await aLibConcealElement(innerElement);\n }\n}\n\nexport async function aLibRevealElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n if (!innerElement.hidden) {\n resolve();\n return;\n }\n\n let timeout: NodeJS.Timeout | undefined;\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.hidden = false;\n\n const animations = innerElement.getAnimations();\n if (animations.length > 0) {\n timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n innerElement.addEventListener('animationend', animationHandler);\n } else {\n resolve();\n }\n });\n\n return promise;\n}\n","import { aLibConcealElement, aLibEngageElement, aLibRevealElement } from \"./AngelsFrontAnimationLibrary\";\n\nexport type AngelsFrontElement<THTMLElement extends HTMLElement = HTMLElement> = AngelsFrontElementClass<THTMLElement> & THTMLElement;\n\nexport default class AngelsFrontElementClass<THTMLElement extends HTMLElement = HTMLElement> {\n\n public elementBase: THTMLElement;\n aProxyBaseClass: typeof AngelsFrontElementClass = AngelsFrontElementClass;\n\n constructor(element: THTMLElement) {\n\n this.elementBase = element;\n\n return new Proxy(this, {\n\n get(target: AngelsFrontElementClass, prop: string | symbol, receiver: any) {\n if (prop in target) {\n // @test AngelsFrontElementClass proxies methods to the original element\n return Reflect.get(target, prop);\n }\n // @test AngelsFrontElementClass uses methods of the main object\n const valueOfProperty = Reflect.get(target.elementBase, prop);\n if (typeof valueOfProperty === 'function') {\n return valueOfProperty.bind(target.elementBase);\n }\n return valueOfProperty;\n },\n\n set(target: AngelsFrontElementClass, prop: string | symbol, newValue: any, receiver: any) {\n if (prop in target.elementBase) {\n // @test AngelsFrontElementClass sets properties on the original element\n (target as any).elementBase[prop] = newValue;\n } else {\n // @test AngelsFrontElementClass sets properties on the main object\n (target as any)[prop] = newValue;\n }\n return true;\n }\n }) as unknown as AngelsFrontElement<THTMLElement>;\n }\n\n aConcealElement(): this {\n\n // @test aConcealElement() calls aLibConcealElement() with the original element\n aLibConcealElement(this.elementBase);\n\n // @test aConcealElement() returns this\n return this;\n }\n\n aEngageElement(switcher: boolean | undefined = undefined): this {\n\n // @test aEngageElement() calls aLibEngageElement() with the original element and the same switcher\n aLibEngageElement(this.elementBase, switcher);\n\n // @test aEngageElement() returns this\n return this;\n }\n\n aHideElement(): this {\n\n // @test aHideElement() sets the hidden property of the element to true\n this.elementBase.hidden = true;\n\n // @test aHideElement() returns this\n return this;\n }\n\n aRevealElement(): this {\n\n // @test aRevealElement() calls aLibRevealElement() with the original element\n aLibRevealElement(this.elementBase);\n\n // @test aRevealElement() returns this\n return this;\n }\n\n aShowElement(): this {\n\n // @test aShowElement() sets the hidden property of the element to false\n this.elementBase.hidden = false;\n\n // @test aShowElement() returns this\n return this;\n }\n\n aSetTextContent(content: string): this {\n\n // @test aSetTextContent() converts non-string content to string before setting\n const contentToSet = content.toString();\n\n // @test aSetTextContent() sets elementBase.textContent\n this.elementBase.textContent = contentToSet;\n\n // @test aSetTextContent() returns this for chaining\n return this;\n }\n\n aTextContent(): string {\n if (this.elementBase.textContent === null) {\n // @test aTextContent() returns empty string if elementBase.textContent is null\n return ``;\n }\n\n // @test aTextContent() returns textContent of elementBase\n return this.elementBase.textContent;\n }\n}\n"],"mappings":"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","names":[]}