@angelscmf/front 1.0.26 → 1.0.27

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.
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+
23
+ // src/AngelsWebComponents/AngelsBoardWebComponent.ts
24
+ var AngelsBoardWebComponent = class _AngelsBoardWebComponent extends HTMLElement {
25
+ /**
26
+ * Use the global displayHandler if set
27
+ */
28
+ get displayHandler() {
29
+ return _AngelsBoardWebComponent.globalDisplayHandler;
30
+ }
31
+ /**
32
+ * Switch the visible child by key
33
+ */
34
+ aBoardSwitch(aBoardItemKey) {
35
+ this.setAttribute("a-board-show", aBoardItemKey);
36
+ }
37
+ /**
38
+ * Update visibility based on children/text
39
+ */
40
+ aBoardUpdateDisplaying() {
41
+ const children = Array.from(this.children);
42
+ const hasVisibleChildren = children.some((el) => !el.hidden);
43
+ const hasNonWhitespaceText = Array.from(this.childNodes).some(
44
+ (node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== ""
45
+ );
46
+ this.hidden = !hasVisibleChildren && !hasNonWhitespaceText;
47
+ this.toggleAttribute("a-board-auto-hidden", this.hidden);
48
+ }
49
+ aBoardShowKey() {
50
+ return this.getAttribute("a-board-show") || "";
51
+ }
52
+ connectedCallback() {
53
+ this.initContent();
54
+ this.observeMutations();
55
+ }
56
+ disconnectedCallback() {
57
+ var _a;
58
+ (_a = this.mutationObserver) == null ? void 0 : _a.disconnect();
59
+ }
60
+ static get observedAttributes() {
61
+ return ["a-board-show"];
62
+ }
63
+ attributeChangedCallback(name, oldValue, newValue) {
64
+ switch (name) {
65
+ case "a-board-show":
66
+ if (oldValue !== newValue) {
67
+ this.updateContent();
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Update which child is visible
73
+ */
74
+ initContent() {
75
+ return __async(this, null, function* () {
76
+ const key = this.aBoardShowKey();
77
+ const items = Array.from(this.querySelectorAll(`:scope > [a-board-key]`));
78
+ const activeItem = items.find((el) => el.getAttribute("a-board-key") === key);
79
+ items.filter((el) => el !== activeItem).forEach((el) => {
80
+ const show = el === activeItem;
81
+ el.hidden = true;
82
+ });
83
+ if (activeItem) {
84
+ activeItem.hidden = false;
85
+ }
86
+ this.aBoardUpdateDisplaying();
87
+ });
88
+ }
89
+ /**
90
+ * Update which child is visible
91
+ */
92
+ updateContent() {
93
+ return __async(this, null, function* () {
94
+ var _a;
95
+ (_a = this.mutationObserver) == null ? void 0 : _a.disconnect();
96
+ const key = this.aBoardShowKey();
97
+ const items = Array.from(this.querySelectorAll(`:scope > [a-board-key]`));
98
+ const activeItem = items.find((el) => el.getAttribute("a-board-key") === key);
99
+ const rect = this.getBoundingClientRect();
100
+ const prevWidth = this.style.width;
101
+ const prevHeight = this.style.height;
102
+ const prevOverflow = this.style.overflow;
103
+ this.style.width = rect.width + "px";
104
+ this.style.height = rect.height + "px";
105
+ this.style.overflow = "hidden";
106
+ if (this.displayHandler) {
107
+ const promises = [];
108
+ items.filter((el) => el !== activeItem).forEach((el) => {
109
+ const displayHandlerResult = this.displayHandler(el, false);
110
+ if (displayHandlerResult instanceof Promise) {
111
+ promises.push(displayHandlerResult);
112
+ }
113
+ });
114
+ yield Promise.all(promises);
115
+ let targetHeight = 0;
116
+ console.log("targetHeight", targetHeight);
117
+ if (activeItem) {
118
+ activeItem.classList.add("a-technical-transparent");
119
+ targetHeight = activeItem.scrollHeight;
120
+ activeItem.classList.remove("a-technical-transparent");
121
+ }
122
+ console.log("targetHeight", targetHeight);
123
+ const heightAnimation = this.animate([
124
+ { height: rect.height + "px" },
125
+ { height: targetHeight + "px" }
126
+ ], {
127
+ duration: 300,
128
+ easing: "ease-in-out"
129
+ });
130
+ yield new Promise((resolve) => {
131
+ heightAnimation.addEventListener("finish", resolve);
132
+ });
133
+ this.style.height = targetHeight + "px";
134
+ if (activeItem) {
135
+ yield this.displayHandler(activeItem, true);
136
+ }
137
+ } else {
138
+ items.filter((el) => el !== activeItem).forEach((el) => {
139
+ const show = el === activeItem;
140
+ el.hidden = true;
141
+ });
142
+ let targetHeight = 0;
143
+ if (activeItem) {
144
+ activeItem.classList.add("a-technical-transparent");
145
+ targetHeight = activeItem.scrollHeight;
146
+ ;
147
+ activeItem.classList.remove("a-technical-transparent");
148
+ }
149
+ this.style.height = targetHeight + "px";
150
+ if (activeItem) {
151
+ activeItem.hidden = false;
152
+ }
153
+ }
154
+ this.style.height = "";
155
+ this.style.width = prevWidth;
156
+ this.style.overflow = prevOverflow;
157
+ this.aBoardUpdateDisplaying();
158
+ this.observeMutations();
159
+ });
160
+ }
161
+ /**
162
+ * Observe direct children and text nodes only, with debounce
163
+ */
164
+ observeMutations() {
165
+ if (this.mutationObserver) this.mutationObserver.disconnect();
166
+ this.mutationObserver = new MutationObserver(() => {
167
+ clearTimeout(this.mutationTimeout);
168
+ this.mutationTimeout = window.setTimeout(() => {
169
+ this.aBoardUpdateDisplaying();
170
+ }, 50);
171
+ });
172
+ this.mutationObserver.observe(this, {
173
+ childList: true,
174
+ characterData: true,
175
+ attributes: true,
176
+ subtree: false,
177
+ attributeFilter: ["hidden", "style", "class"]
178
+ });
179
+ }
180
+ /**
181
+ * Set global display handler for all <a-board> instances
182
+ */
183
+ static setGlobalDisplayHandler(handler) {
184
+ _AngelsBoardWebComponent.globalDisplayHandler = handler;
185
+ }
186
+ };
187
+ function registerAngelsBoard(options) {
188
+ if (!customElements.get("a-board")) {
189
+ if (options == null ? void 0 : options.displayHandler) {
190
+ AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);
191
+ }
192
+ customElements.define("a-board", AngelsBoardWebComponent);
193
+ } else if (options == null ? void 0 : options.displayHandler) {
194
+ AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);
195
+ }
196
+ return customElements.get("a-board");
197
+ }
198
+
199
+ // src/AngelsCore.ts
200
+ registerAngelsBoard({
201
+ displayHandler: aToggleElement
202
+ });
203
+ //# sourceMappingURL=AngelsCore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/AngelsWebComponents/AngelsBoardWebComponent.ts","../src/AngelsCore.ts"],"sourcesContent":["export type AngelsBoardItemKey = string;\nexport type DisplayHandler = (el: HTMLElement, show: boolean) => Promise<void> | void;\n\n/**\n * Custom web component <a-board> that automatically shows or hides itself\n * based on the visibility of its direct children and the presence of text nodes.\n * Supports a global displayHandler set during registration.\n */\nexport default class AngelsBoardWebComponent extends HTMLElement {\n private static globalDisplayHandler?: DisplayHandler;\n\n private mutationObserver?: MutationObserver;\n private mutationTimeout?: number;\n\n /**\n * Use the global displayHandler if set\n */\n private get displayHandler(): DisplayHandler | undefined {\n return AngelsBoardWebComponent.globalDisplayHandler;\n }\n\n /**\n * Switch the visible child by key\n */\n aBoardSwitch(aBoardItemKey: AngelsBoardItemKey) {\n this.setAttribute('a-board-show', aBoardItemKey);\n }\n\n /**\n * Update visibility based on children/text\n */\n aBoardUpdateDisplaying() {\n const children = Array.from(this.children) as HTMLElement[];\n const hasVisibleChildren = children.some(el => !el.hidden);\n const hasNonWhitespaceText = Array.from(this.childNodes).some(\n node => node.nodeType === Node.TEXT_NODE && node.textContent!.trim() !== ''\n );\n this.hidden = !hasVisibleChildren && !hasNonWhitespaceText;\n this.toggleAttribute('a-board-auto-hidden', this.hidden);\n }\n\n aBoardShowKey(): string {\n return this.getAttribute('a-board-show') || '';\n }\n\n connectedCallback() {\n this.initContent();\n this.observeMutations();\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n\n static get observedAttributes() {\n return ['a-board-show'];\n }\n\n attributeChangedCallback(name: string, oldValue: any, newValue: any) {\n switch (name) {\n case 'a-board-show':\n if (oldValue !== newValue) {\n this.updateContent();\n }\n }\n }\n\n /**\n * Update which child is visible\n */\n async initContent() {\n const key = this.aBoardShowKey();\n const items = Array.from(this.querySelectorAll<HTMLElement>(`:scope > [a-board-key]`));\n const activeItem = items.find(el => el.getAttribute('a-board-key') === key);\n\n items.filter(el => el !== activeItem).forEach(el => {\n const show = el === activeItem;\n el.hidden = true;\n });\n if (activeItem) {\n activeItem.hidden = false;\n }\n\n this.aBoardUpdateDisplaying();\n }\n\n /**\n * Update which child is visible\n */\n async updateContent() {\n this.mutationObserver?.disconnect();\n\n const key = this.aBoardShowKey();\n const items = Array.from(this.querySelectorAll<HTMLElement>(`:scope > [a-board-key]`));\n const activeItem = items.find(el => el.getAttribute('a-board-key') === key);\n\n // --- FREEZE LAYOUT START ---\n const rect = this.getBoundingClientRect();\n const prevWidth = this.style.width;\n const prevHeight = this.style.height;\n const prevOverflow = this.style.overflow;\n\n this.style.width = rect.width + 'px';\n this.style.height = rect.height + 'px';\n this.style.overflow = 'hidden';\n // --- /FREEZE LAYOUT START ---\n\n if (this.displayHandler) {\n const promises: Array<Promise<void>> = [];\n items.filter(el => el !== activeItem).forEach(el => {\n const displayHandlerResult = this.displayHandler!(el, false);\n if (displayHandlerResult instanceof Promise) {\n promises.push(displayHandlerResult);\n }\n });\n await Promise.all(promises);\n\n let targetHeight = 0;\n console.log('targetHeight', targetHeight);\n if (activeItem) {\n activeItem.classList.add('a-technical-transparent');\n targetHeight = activeItem.scrollHeight;\n activeItem.classList.remove('a-technical-transparent');\n }\n console.log('targetHeight', targetHeight);\n\n // Animate board height from old → new\n const heightAnimation = this.animate([\n { height: rect.height + 'px' },\n { height: targetHeight + 'px' }\n ], {\n duration: 300,\n easing: 'ease-in-out'\n });\n await new Promise(resolve => {\n heightAnimation.addEventListener('finish', resolve);\n });\n\n this.style.height = targetHeight + 'px';\n\n if (activeItem) {\n await this.displayHandler(activeItem, true);\n }\n } else {\n items.filter(el => el !== activeItem).forEach(el => {\n const show = el === activeItem;\n el.hidden = true;\n });\n\n let targetHeight = 0;\n if (activeItem) {\n activeItem.classList.add('a-technical-transparent');\n targetHeight = activeItem.scrollHeight;;\n activeItem.classList.remove('a-technical-transparent');\n }\n\n this.style.height = targetHeight + 'px';\n\n if (activeItem) {\n activeItem.hidden = false;\n }\n }\n\n // --- FREEZE LAYOUT END ---\n this.style.height = '';\n this.style.width = prevWidth;\n this.style.overflow = prevOverflow;\n // --- /FREEZE LAYOUT END ---\n\n this.aBoardUpdateDisplaying();\n this.observeMutations();\n }\n\n /**\n * Observe direct children and text nodes only, with debounce\n */\n private observeMutations() {\n if (this.mutationObserver) this.mutationObserver.disconnect();\n\n this.mutationObserver = new MutationObserver(() => {\n clearTimeout(this.mutationTimeout);\n this.mutationTimeout = window.setTimeout(() => {\n this.aBoardUpdateDisplaying();\n }, 50);\n });\n\n this.mutationObserver.observe(this, {\n childList: true,\n characterData: true,\n attributes: true,\n subtree: false,\n attributeFilter: ['hidden', 'style', 'class'],\n });\n }\n\n /**\n * Set global display handler for all <a-board> instances\n */\n static setGlobalDisplayHandler(handler: DisplayHandler) {\n AngelsBoardWebComponent.globalDisplayHandler = handler;\n }\n}\n\n/**\n * Options for registering a-board\n */\nexport interface AngelsBoardRegistrationOptions {\n displayHandler?: DisplayHandler;\n}\n\n/**\n * Register the <a-board> custom element and optionally set a global displayHandler\n */\nexport function registerAngelsBoard(options?: AngelsBoardRegistrationOptions) {\n if (!customElements.get('a-board')) {\n if (options?.displayHandler) {\n AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);\n }\n customElements.define('a-board', AngelsBoardWebComponent);\n } else if (options?.displayHandler) {\n AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);\n }\n return customElements.get('a-board')!;\n}\n\n","import { registerAngelsBoard } from \"./AngelsWebComponents/AngelsBoardWebComponent\";\n\nregisterAngelsBoard({\n displayHandler: aToggleElement\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,202 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+
22
+ // src/AngelsWebComponents/AngelsBoardWebComponent.ts
23
+ var AngelsBoardWebComponent = class _AngelsBoardWebComponent extends HTMLElement {
24
+ /**
25
+ * Use the global displayHandler if set
26
+ */
27
+ get displayHandler() {
28
+ return _AngelsBoardWebComponent.globalDisplayHandler;
29
+ }
30
+ /**
31
+ * Switch the visible child by key
32
+ */
33
+ aBoardSwitch(aBoardItemKey) {
34
+ this.setAttribute("a-board-show", aBoardItemKey);
35
+ }
36
+ /**
37
+ * Update visibility based on children/text
38
+ */
39
+ aBoardUpdateDisplaying() {
40
+ const children = Array.from(this.children);
41
+ const hasVisibleChildren = children.some((el) => !el.hidden);
42
+ const hasNonWhitespaceText = Array.from(this.childNodes).some(
43
+ (node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== ""
44
+ );
45
+ this.hidden = !hasVisibleChildren && !hasNonWhitespaceText;
46
+ this.toggleAttribute("a-board-auto-hidden", this.hidden);
47
+ }
48
+ aBoardShowKey() {
49
+ return this.getAttribute("a-board-show") || "";
50
+ }
51
+ connectedCallback() {
52
+ this.initContent();
53
+ this.observeMutations();
54
+ }
55
+ disconnectedCallback() {
56
+ var _a;
57
+ (_a = this.mutationObserver) == null ? void 0 : _a.disconnect();
58
+ }
59
+ static get observedAttributes() {
60
+ return ["a-board-show"];
61
+ }
62
+ attributeChangedCallback(name, oldValue, newValue) {
63
+ switch (name) {
64
+ case "a-board-show":
65
+ if (oldValue !== newValue) {
66
+ this.updateContent();
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Update which child is visible
72
+ */
73
+ initContent() {
74
+ return __async(this, null, function* () {
75
+ const key = this.aBoardShowKey();
76
+ const items = Array.from(this.querySelectorAll(`:scope > [a-board-key]`));
77
+ const activeItem = items.find((el) => el.getAttribute("a-board-key") === key);
78
+ items.filter((el) => el !== activeItem).forEach((el) => {
79
+ const show = el === activeItem;
80
+ el.hidden = true;
81
+ });
82
+ if (activeItem) {
83
+ activeItem.hidden = false;
84
+ }
85
+ this.aBoardUpdateDisplaying();
86
+ });
87
+ }
88
+ /**
89
+ * Update which child is visible
90
+ */
91
+ updateContent() {
92
+ return __async(this, null, function* () {
93
+ var _a;
94
+ (_a = this.mutationObserver) == null ? void 0 : _a.disconnect();
95
+ const key = this.aBoardShowKey();
96
+ const items = Array.from(this.querySelectorAll(`:scope > [a-board-key]`));
97
+ const activeItem = items.find((el) => el.getAttribute("a-board-key") === key);
98
+ const rect = this.getBoundingClientRect();
99
+ const prevWidth = this.style.width;
100
+ const prevHeight = this.style.height;
101
+ const prevOverflow = this.style.overflow;
102
+ this.style.width = rect.width + "px";
103
+ this.style.height = rect.height + "px";
104
+ this.style.overflow = "hidden";
105
+ if (this.displayHandler) {
106
+ const promises = [];
107
+ items.filter((el) => el !== activeItem).forEach((el) => {
108
+ const displayHandlerResult = this.displayHandler(el, false);
109
+ if (displayHandlerResult instanceof Promise) {
110
+ promises.push(displayHandlerResult);
111
+ }
112
+ });
113
+ yield Promise.all(promises);
114
+ let targetHeight = 0;
115
+ console.log("targetHeight", targetHeight);
116
+ if (activeItem) {
117
+ activeItem.classList.add("a-technical-transparent");
118
+ targetHeight = activeItem.scrollHeight;
119
+ activeItem.classList.remove("a-technical-transparent");
120
+ }
121
+ console.log("targetHeight", targetHeight);
122
+ const heightAnimation = this.animate([
123
+ { height: rect.height + "px" },
124
+ { height: targetHeight + "px" }
125
+ ], {
126
+ duration: 300,
127
+ easing: "ease-in-out"
128
+ });
129
+ yield new Promise((resolve) => {
130
+ heightAnimation.addEventListener("finish", resolve);
131
+ });
132
+ this.style.height = targetHeight + "px";
133
+ if (activeItem) {
134
+ yield this.displayHandler(activeItem, true);
135
+ }
136
+ } else {
137
+ items.filter((el) => el !== activeItem).forEach((el) => {
138
+ const show = el === activeItem;
139
+ el.hidden = true;
140
+ });
141
+ let targetHeight = 0;
142
+ if (activeItem) {
143
+ activeItem.classList.add("a-technical-transparent");
144
+ targetHeight = activeItem.scrollHeight;
145
+ ;
146
+ activeItem.classList.remove("a-technical-transparent");
147
+ }
148
+ this.style.height = targetHeight + "px";
149
+ if (activeItem) {
150
+ activeItem.hidden = false;
151
+ }
152
+ }
153
+ this.style.height = "";
154
+ this.style.width = prevWidth;
155
+ this.style.overflow = prevOverflow;
156
+ this.aBoardUpdateDisplaying();
157
+ this.observeMutations();
158
+ });
159
+ }
160
+ /**
161
+ * Observe direct children and text nodes only, with debounce
162
+ */
163
+ observeMutations() {
164
+ if (this.mutationObserver) this.mutationObserver.disconnect();
165
+ this.mutationObserver = new MutationObserver(() => {
166
+ clearTimeout(this.mutationTimeout);
167
+ this.mutationTimeout = window.setTimeout(() => {
168
+ this.aBoardUpdateDisplaying();
169
+ }, 50);
170
+ });
171
+ this.mutationObserver.observe(this, {
172
+ childList: true,
173
+ characterData: true,
174
+ attributes: true,
175
+ subtree: false,
176
+ attributeFilter: ["hidden", "style", "class"]
177
+ });
178
+ }
179
+ /**
180
+ * Set global display handler for all <a-board> instances
181
+ */
182
+ static setGlobalDisplayHandler(handler) {
183
+ _AngelsBoardWebComponent.globalDisplayHandler = handler;
184
+ }
185
+ };
186
+ function registerAngelsBoard(options) {
187
+ if (!customElements.get("a-board")) {
188
+ if (options == null ? void 0 : options.displayHandler) {
189
+ AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);
190
+ }
191
+ customElements.define("a-board", AngelsBoardWebComponent);
192
+ } else if (options == null ? void 0 : options.displayHandler) {
193
+ AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);
194
+ }
195
+ return customElements.get("a-board");
196
+ }
197
+
198
+ // src/AngelsCore.ts
199
+ registerAngelsBoard({
200
+ displayHandler: aToggleElement
201
+ });
202
+ //# sourceMappingURL=AngelsCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/AngelsWebComponents/AngelsBoardWebComponent.ts","../src/AngelsCore.ts"],"sourcesContent":["export type AngelsBoardItemKey = string;\nexport type DisplayHandler = (el: HTMLElement, show: boolean) => Promise<void> | void;\n\n/**\n * Custom web component <a-board> that automatically shows or hides itself\n * based on the visibility of its direct children and the presence of text nodes.\n * Supports a global displayHandler set during registration.\n */\nexport default class AngelsBoardWebComponent extends HTMLElement {\n private static globalDisplayHandler?: DisplayHandler;\n\n private mutationObserver?: MutationObserver;\n private mutationTimeout?: number;\n\n /**\n * Use the global displayHandler if set\n */\n private get displayHandler(): DisplayHandler | undefined {\n return AngelsBoardWebComponent.globalDisplayHandler;\n }\n\n /**\n * Switch the visible child by key\n */\n aBoardSwitch(aBoardItemKey: AngelsBoardItemKey) {\n this.setAttribute('a-board-show', aBoardItemKey);\n }\n\n /**\n * Update visibility based on children/text\n */\n aBoardUpdateDisplaying() {\n const children = Array.from(this.children) as HTMLElement[];\n const hasVisibleChildren = children.some(el => !el.hidden);\n const hasNonWhitespaceText = Array.from(this.childNodes).some(\n node => node.nodeType === Node.TEXT_NODE && node.textContent!.trim() !== ''\n );\n this.hidden = !hasVisibleChildren && !hasNonWhitespaceText;\n this.toggleAttribute('a-board-auto-hidden', this.hidden);\n }\n\n aBoardShowKey(): string {\n return this.getAttribute('a-board-show') || '';\n }\n\n connectedCallback() {\n this.initContent();\n this.observeMutations();\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n\n static get observedAttributes() {\n return ['a-board-show'];\n }\n\n attributeChangedCallback(name: string, oldValue: any, newValue: any) {\n switch (name) {\n case 'a-board-show':\n if (oldValue !== newValue) {\n this.updateContent();\n }\n }\n }\n\n /**\n * Update which child is visible\n */\n async initContent() {\n const key = this.aBoardShowKey();\n const items = Array.from(this.querySelectorAll<HTMLElement>(`:scope > [a-board-key]`));\n const activeItem = items.find(el => el.getAttribute('a-board-key') === key);\n\n items.filter(el => el !== activeItem).forEach(el => {\n const show = el === activeItem;\n el.hidden = true;\n });\n if (activeItem) {\n activeItem.hidden = false;\n }\n\n this.aBoardUpdateDisplaying();\n }\n\n /**\n * Update which child is visible\n */\n async updateContent() {\n this.mutationObserver?.disconnect();\n\n const key = this.aBoardShowKey();\n const items = Array.from(this.querySelectorAll<HTMLElement>(`:scope > [a-board-key]`));\n const activeItem = items.find(el => el.getAttribute('a-board-key') === key);\n\n // --- FREEZE LAYOUT START ---\n const rect = this.getBoundingClientRect();\n const prevWidth = this.style.width;\n const prevHeight = this.style.height;\n const prevOverflow = this.style.overflow;\n\n this.style.width = rect.width + 'px';\n this.style.height = rect.height + 'px';\n this.style.overflow = 'hidden';\n // --- /FREEZE LAYOUT START ---\n\n if (this.displayHandler) {\n const promises: Array<Promise<void>> = [];\n items.filter(el => el !== activeItem).forEach(el => {\n const displayHandlerResult = this.displayHandler!(el, false);\n if (displayHandlerResult instanceof Promise) {\n promises.push(displayHandlerResult);\n }\n });\n await Promise.all(promises);\n\n let targetHeight = 0;\n console.log('targetHeight', targetHeight);\n if (activeItem) {\n activeItem.classList.add('a-technical-transparent');\n targetHeight = activeItem.scrollHeight;\n activeItem.classList.remove('a-technical-transparent');\n }\n console.log('targetHeight', targetHeight);\n\n // Animate board height from old → new\n const heightAnimation = this.animate([\n { height: rect.height + 'px' },\n { height: targetHeight + 'px' }\n ], {\n duration: 300,\n easing: 'ease-in-out'\n });\n await new Promise(resolve => {\n heightAnimation.addEventListener('finish', resolve);\n });\n\n this.style.height = targetHeight + 'px';\n\n if (activeItem) {\n await this.displayHandler(activeItem, true);\n }\n } else {\n items.filter(el => el !== activeItem).forEach(el => {\n const show = el === activeItem;\n el.hidden = true;\n });\n\n let targetHeight = 0;\n if (activeItem) {\n activeItem.classList.add('a-technical-transparent');\n targetHeight = activeItem.scrollHeight;;\n activeItem.classList.remove('a-technical-transparent');\n }\n\n this.style.height = targetHeight + 'px';\n\n if (activeItem) {\n activeItem.hidden = false;\n }\n }\n\n // --- FREEZE LAYOUT END ---\n this.style.height = '';\n this.style.width = prevWidth;\n this.style.overflow = prevOverflow;\n // --- /FREEZE LAYOUT END ---\n\n this.aBoardUpdateDisplaying();\n this.observeMutations();\n }\n\n /**\n * Observe direct children and text nodes only, with debounce\n */\n private observeMutations() {\n if (this.mutationObserver) this.mutationObserver.disconnect();\n\n this.mutationObserver = new MutationObserver(() => {\n clearTimeout(this.mutationTimeout);\n this.mutationTimeout = window.setTimeout(() => {\n this.aBoardUpdateDisplaying();\n }, 50);\n });\n\n this.mutationObserver.observe(this, {\n childList: true,\n characterData: true,\n attributes: true,\n subtree: false,\n attributeFilter: ['hidden', 'style', 'class'],\n });\n }\n\n /**\n * Set global display handler for all <a-board> instances\n */\n static setGlobalDisplayHandler(handler: DisplayHandler) {\n AngelsBoardWebComponent.globalDisplayHandler = handler;\n }\n}\n\n/**\n * Options for registering a-board\n */\nexport interface AngelsBoardRegistrationOptions {\n displayHandler?: DisplayHandler;\n}\n\n/**\n * Register the <a-board> custom element and optionally set a global displayHandler\n */\nexport function registerAngelsBoard(options?: AngelsBoardRegistrationOptions) {\n if (!customElements.get('a-board')) {\n if (options?.displayHandler) {\n AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);\n }\n customElements.define('a-board', AngelsBoardWebComponent);\n } else if (options?.displayHandler) {\n AngelsBoardWebComponent.setGlobalDisplayHandler(options.displayHandler);\n }\n return customElements.get('a-board')!;\n}\n\n","import { registerAngelsBoard } from \"./AngelsWebComponents/AngelsBoardWebComponent\";\n\nregisterAngelsBoard({\n displayHandler: aToggleElement\n});\n"],"mappings":"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","names":[]}
@@ -74,26 +74,39 @@ function aLibShowElement(originalElement) {
74
74
  return __async(this, null, function* () {
75
75
  const innerElement = aLibRequireElement(originalElement);
76
76
  const promise = new Promise((resolve) => {
77
- const timeout = setTimeout(() => {
78
- innerElement.removeEventListener("animationend", animationHandler);
79
- console.warn("Animation timeout");
77
+ if (!innerElement.hidden) {
80
78
  resolve();
81
- }, 5e3);
79
+ return;
80
+ }
81
+ let timeout;
82
82
  const animationHandler = () => {
83
83
  clearTimeout(timeout);
84
84
  innerElement.removeEventListener("animationend", animationHandler);
85
85
  resolve();
86
86
  };
87
- innerElement.addEventListener("animationend", animationHandler);
88
87
  innerElement.hidden = false;
88
+ const animations = innerElement.getAnimations();
89
+ if (animations.length > 0) {
90
+ timeout = setTimeout(() => {
91
+ innerElement.removeEventListener("animationend", animationHandler);
92
+ console.warn("Animation timeout");
93
+ resolve();
94
+ }, 5e3);
95
+ innerElement.addEventListener("animationend", animationHandler);
96
+ } else {
97
+ resolve();
98
+ }
89
99
  });
90
100
  return promise;
91
101
  });
92
102
  }
93
- function aLibToggleElement(originalElement) {
103
+ function aLibToggleElement(originalElement, switcher = void 0) {
94
104
  return __async(this, null, function* () {
95
105
  const innerElement = aLibRequireElement(originalElement);
96
- if (innerElement.hidden) {
106
+ if (switcher === void 0) {
107
+ switcher = !innerElement.hidden;
108
+ }
109
+ if (switcher) {
97
110
  return yield aLibShowElement(innerElement);
98
111
  } else {
99
112
  return yield aLibHideElement(innerElement);
@@ -104,13 +117,11 @@ function aLibHideElement(originalElement) {
104
117
  return __async(this, null, function* () {
105
118
  const innerElement = aLibRequireElement(originalElement);
106
119
  const promise = new Promise((resolve) => {
107
- const timeout = setTimeout(() => {
108
- innerElement.removeEventListener("animationend", animationHandler);
109
- innerElement.hidden = true;
110
- innerElement.classList.remove("a-out-animation");
111
- console.warn("Animation timeout");
120
+ if (innerElement.hidden) {
112
121
  resolve();
113
- }, 5e3);
122
+ return;
123
+ }
124
+ let timeout;
114
125
  const animationHandler = () => {
115
126
  clearTimeout(timeout);
116
127
  innerElement.removeEventListener("animationend", animationHandler);
@@ -118,8 +129,21 @@ function aLibHideElement(originalElement) {
118
129
  innerElement.classList.remove("a-out-animation");
119
130
  resolve();
120
131
  };
121
- innerElement.addEventListener("animationend", animationHandler);
122
132
  innerElement.classList.add("a-out-animation");
133
+ const animations = innerElement.getAnimations();
134
+ if (animations.length > 0) {
135
+ timeout = setTimeout(() => {
136
+ innerElement.removeEventListener("animationend", animationHandler);
137
+ innerElement.hidden = true;
138
+ innerElement.classList.remove("a-out-animation");
139
+ console.warn("Animation timeout");
140
+ resolve();
141
+ }, 5e3);
142
+ innerElement.addEventListener("animationend", animationHandler);
143
+ } else {
144
+ innerElement.hidden = true;
145
+ resolve();
146
+ }
123
147
  });
124
148
  return promise;
125
149
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontDOMLibrary.ts"],"sourcesContent":["import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.addEventListener('animationend', animationHandler);\n innerElement.hidden = false;\n });\n\n return promise;\n}\n\nexport async function aLibToggleElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n if (innerElement.hidden) {\n return await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const 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\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.addEventListener('animationend', animationHandler);\n innerElement.classList.add('a-out-animation');\n });\n\n return promise;\n}\n","export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ADnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,SAAS;AAAA,IAC1B,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC;AAAA;AACzE,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAQ;AACrB,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,UAAU,IAAI,iBAAiB;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACX;AAAA;","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontDOMLibrary.ts"],"sourcesContent":["import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(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\nexport async 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 await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(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","export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ADnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,CAAC,aAAa,QAAQ;AACtB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,SAAS;AAEtB,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC,WAAgC,QAAW;AAAA;AACpH,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAW;AACxB,iBAAW,CAAC,aAAa;AAAA,IAC7B;AACA,QAAI,UAAU;AACV,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,aAAa,QAAQ;AACrB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,UAAU,IAAI,iBAAiB;AAE5C,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,uBAAa,SAAS;AACtB,uBAAa,UAAU,OAAO,iBAAiB;AAC/C,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,qBAAa,SAAS;AACtB,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;","names":[]}
@@ -1,5 +1,5 @@
1
1
  declare function aLibShowElement(originalElement: AngelsSelectorType): Promise<void>;
2
- declare function aLibToggleElement(originalElement: AngelsSelectorType): Promise<void>;
2
+ declare function aLibToggleElement(originalElement: AngelsSelectorType, switcher?: boolean | undefined): Promise<void>;
3
3
  declare function aLibHideElement(originalElement: AngelsSelectorType): Promise<void>;
4
4
 
5
5
  export { aLibHideElement, aLibShowElement, aLibToggleElement };
@@ -1,5 +1,5 @@
1
1
  declare function aLibShowElement(originalElement: AngelsSelectorType): Promise<void>;
2
- declare function aLibToggleElement(originalElement: AngelsSelectorType): Promise<void>;
2
+ declare function aLibToggleElement(originalElement: AngelsSelectorType, switcher?: boolean | undefined): Promise<void>;
3
3
  declare function aLibHideElement(originalElement: AngelsSelectorType): Promise<void>;
4
4
 
5
5
  export { aLibHideElement, aLibShowElement, aLibToggleElement };
@@ -47,26 +47,39 @@ function aLibShowElement(originalElement) {
47
47
  return __async(this, null, function* () {
48
48
  const innerElement = aLibRequireElement(originalElement);
49
49
  const promise = new Promise((resolve) => {
50
- const timeout = setTimeout(() => {
51
- innerElement.removeEventListener("animationend", animationHandler);
52
- console.warn("Animation timeout");
50
+ if (!innerElement.hidden) {
53
51
  resolve();
54
- }, 5e3);
52
+ return;
53
+ }
54
+ let timeout;
55
55
  const animationHandler = () => {
56
56
  clearTimeout(timeout);
57
57
  innerElement.removeEventListener("animationend", animationHandler);
58
58
  resolve();
59
59
  };
60
- innerElement.addEventListener("animationend", animationHandler);
61
60
  innerElement.hidden = false;
61
+ const animations = innerElement.getAnimations();
62
+ if (animations.length > 0) {
63
+ timeout = setTimeout(() => {
64
+ innerElement.removeEventListener("animationend", animationHandler);
65
+ console.warn("Animation timeout");
66
+ resolve();
67
+ }, 5e3);
68
+ innerElement.addEventListener("animationend", animationHandler);
69
+ } else {
70
+ resolve();
71
+ }
62
72
  });
63
73
  return promise;
64
74
  });
65
75
  }
66
- function aLibToggleElement(originalElement) {
76
+ function aLibToggleElement(originalElement, switcher = void 0) {
67
77
  return __async(this, null, function* () {
68
78
  const innerElement = aLibRequireElement(originalElement);
69
- if (innerElement.hidden) {
79
+ if (switcher === void 0) {
80
+ switcher = !innerElement.hidden;
81
+ }
82
+ if (switcher) {
70
83
  return yield aLibShowElement(innerElement);
71
84
  } else {
72
85
  return yield aLibHideElement(innerElement);
@@ -77,13 +90,11 @@ function aLibHideElement(originalElement) {
77
90
  return __async(this, null, function* () {
78
91
  const innerElement = aLibRequireElement(originalElement);
79
92
  const promise = new Promise((resolve) => {
80
- const timeout = setTimeout(() => {
81
- innerElement.removeEventListener("animationend", animationHandler);
82
- innerElement.hidden = true;
83
- innerElement.classList.remove("a-out-animation");
84
- console.warn("Animation timeout");
93
+ if (innerElement.hidden) {
85
94
  resolve();
86
- }, 5e3);
95
+ return;
96
+ }
97
+ let timeout;
87
98
  const animationHandler = () => {
88
99
  clearTimeout(timeout);
89
100
  innerElement.removeEventListener("animationend", animationHandler);
@@ -91,8 +102,21 @@ function aLibHideElement(originalElement) {
91
102
  innerElement.classList.remove("a-out-animation");
92
103
  resolve();
93
104
  };
94
- innerElement.addEventListener("animationend", animationHandler);
95
105
  innerElement.classList.add("a-out-animation");
106
+ const animations = innerElement.getAnimations();
107
+ if (animations.length > 0) {
108
+ timeout = setTimeout(() => {
109
+ innerElement.removeEventListener("animationend", animationHandler);
110
+ innerElement.hidden = true;
111
+ innerElement.classList.remove("a-out-animation");
112
+ console.warn("Animation timeout");
113
+ resolve();
114
+ }, 5e3);
115
+ innerElement.addEventListener("animationend", animationHandler);
116
+ } else {
117
+ innerElement.hidden = true;
118
+ resolve();
119
+ }
96
120
  });
97
121
  return promise;
98
122
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.addEventListener('animationend', animationHandler);\n innerElement.hidden = false;\n });\n\n return promise;\n}\n\nexport async function aLibToggleElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n if (innerElement.hidden) {\n return await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const 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\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.addEventListener('animationend', animationHandler);\n innerElement.classList.add('a-out-animation');\n });\n\n return promise;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,SAAS;AAAA,IAC1B,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC;AAAA;AACzE,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAQ;AACrB,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,UAAU,IAAI,iBAAiB;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACX;AAAA;","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(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\nexport async 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 await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,CAAC,aAAa,QAAQ;AACtB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,SAAS;AAEtB,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC,WAAgC,QAAW;AAAA;AACpH,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAW;AACxB,iBAAW,CAAC,aAAa;AAAA,IAC7B;AACA,QAAI,UAAU;AACV,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,aAAa,QAAQ;AACrB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,UAAU,IAAI,iBAAiB;AAE5C,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,uBAAa,SAAS;AACtB,uBAAa,UAAU,OAAO,iBAAiB;AAC/C,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,qBAAa,SAAS;AACtB,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;","names":[]}
@@ -48,26 +48,39 @@ function aLibShowElement(originalElement) {
48
48
  return __async(this, null, function* () {
49
49
  const innerElement = aLibRequireElement(originalElement);
50
50
  const promise = new Promise((resolve) => {
51
- const timeout = setTimeout(() => {
52
- innerElement.removeEventListener("animationend", animationHandler);
53
- console.warn("Animation timeout");
51
+ if (!innerElement.hidden) {
54
52
  resolve();
55
- }, 5e3);
53
+ return;
54
+ }
55
+ let timeout;
56
56
  const animationHandler = () => {
57
57
  clearTimeout(timeout);
58
58
  innerElement.removeEventListener("animationend", animationHandler);
59
59
  resolve();
60
60
  };
61
- innerElement.addEventListener("animationend", animationHandler);
62
61
  innerElement.hidden = false;
62
+ const animations = innerElement.getAnimations();
63
+ if (animations.length > 0) {
64
+ timeout = setTimeout(() => {
65
+ innerElement.removeEventListener("animationend", animationHandler);
66
+ console.warn("Animation timeout");
67
+ resolve();
68
+ }, 5e3);
69
+ innerElement.addEventListener("animationend", animationHandler);
70
+ } else {
71
+ resolve();
72
+ }
63
73
  });
64
74
  return promise;
65
75
  });
66
76
  }
67
- function aLibToggleElement(originalElement) {
77
+ function aLibToggleElement(originalElement, switcher = void 0) {
68
78
  return __async(this, null, function* () {
69
79
  const innerElement = aLibRequireElement(originalElement);
70
- if (innerElement.hidden) {
80
+ if (switcher === void 0) {
81
+ switcher = !innerElement.hidden;
82
+ }
83
+ if (switcher) {
71
84
  return yield aLibShowElement(innerElement);
72
85
  } else {
73
86
  return yield aLibHideElement(innerElement);
@@ -78,13 +91,11 @@ function aLibHideElement(originalElement) {
78
91
  return __async(this, null, function* () {
79
92
  const innerElement = aLibRequireElement(originalElement);
80
93
  const promise = new Promise((resolve) => {
81
- const timeout = setTimeout(() => {
82
- innerElement.removeEventListener("animationend", animationHandler);
83
- innerElement.hidden = true;
84
- innerElement.classList.remove("a-out-animation");
85
- console.warn("Animation timeout");
94
+ if (innerElement.hidden) {
86
95
  resolve();
87
- }, 5e3);
96
+ return;
97
+ }
98
+ let timeout;
88
99
  const animationHandler = () => {
89
100
  clearTimeout(timeout);
90
101
  innerElement.removeEventListener("animationend", animationHandler);
@@ -92,8 +103,21 @@ function aLibHideElement(originalElement) {
92
103
  innerElement.classList.remove("a-out-animation");
93
104
  resolve();
94
105
  };
95
- innerElement.addEventListener("animationend", animationHandler);
96
106
  innerElement.classList.add("a-out-animation");
107
+ const animations = innerElement.getAnimations();
108
+ if (animations.length > 0) {
109
+ timeout = setTimeout(() => {
110
+ innerElement.removeEventListener("animationend", animationHandler);
111
+ innerElement.hidden = true;
112
+ innerElement.classList.remove("a-out-animation");
113
+ console.warn("Animation timeout");
114
+ resolve();
115
+ }, 5e3);
116
+ innerElement.addEventListener("animationend", animationHandler);
117
+ } else {
118
+ innerElement.hidden = true;
119
+ resolve();
120
+ }
97
121
  });
98
122
  return promise;
99
123
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.addEventListener('animationend', animationHandler);\n innerElement.hidden = false;\n });\n\n return promise;\n}\n\nexport async function aLibToggleElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n if (innerElement.hidden) {\n return await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const 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\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.addEventListener('animationend', animationHandler);\n innerElement.classList.add('a-out-animation');\n });\n\n return promise;\n}\n","import { aLibHideElement, aLibShowElement, aLibToggleElement } from \"./AngelsFrontAnimationLibrary\";\nimport { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nwindow.aHideElement = aLibHideElement;\nwindow.aRequireElement = aLibRequireElement;\nwindow.aShowElement = aLibShowElement;\nwindow.aToggleElement = aLibToggleElement;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,SAAS;AAAA,IAC1B,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC;AAAA;AACzE,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAQ;AACrB,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,UAAU,IAAI,iBAAiB;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACX;AAAA;;;ACxDA,OAAO,eAAe;AACtB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(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\nexport async 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 await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(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","import { aLibHideElement, aLibShowElement, aLibToggleElement } from \"./AngelsFrontAnimationLibrary\";\nimport { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nwindow.aHideElement = aLibHideElement;\nwindow.aRequireElement = aLibRequireElement;\nwindow.aShowElement = aLibShowElement;\nwindow.aToggleElement = aLibToggleElement;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,CAAC,aAAa,QAAQ;AACtB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,SAAS;AAEtB,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC,WAAgC,QAAW;AAAA;AACpH,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAW;AACxB,iBAAW,CAAC,aAAa;AAAA,IAC7B;AACA,QAAI,UAAU;AACV,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,aAAa,QAAQ;AACrB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,UAAU,IAAI,iBAAiB;AAE5C,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,uBAAa,SAAS;AACtB,uBAAa,UAAU,OAAO,iBAAiB;AAC/C,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,qBAAa,SAAS;AACtB,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;;;ACpFA,OAAO,eAAe;AACtB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,iBAAiB;","names":[]}
@@ -47,26 +47,39 @@ function aLibShowElement(originalElement) {
47
47
  return __async(this, null, function* () {
48
48
  const innerElement = aLibRequireElement(originalElement);
49
49
  const promise = new Promise((resolve) => {
50
- const timeout = setTimeout(() => {
51
- innerElement.removeEventListener("animationend", animationHandler);
52
- console.warn("Animation timeout");
50
+ if (!innerElement.hidden) {
53
51
  resolve();
54
- }, 5e3);
52
+ return;
53
+ }
54
+ let timeout;
55
55
  const animationHandler = () => {
56
56
  clearTimeout(timeout);
57
57
  innerElement.removeEventListener("animationend", animationHandler);
58
58
  resolve();
59
59
  };
60
- innerElement.addEventListener("animationend", animationHandler);
61
60
  innerElement.hidden = false;
61
+ const animations = innerElement.getAnimations();
62
+ if (animations.length > 0) {
63
+ timeout = setTimeout(() => {
64
+ innerElement.removeEventListener("animationend", animationHandler);
65
+ console.warn("Animation timeout");
66
+ resolve();
67
+ }, 5e3);
68
+ innerElement.addEventListener("animationend", animationHandler);
69
+ } else {
70
+ resolve();
71
+ }
62
72
  });
63
73
  return promise;
64
74
  });
65
75
  }
66
- function aLibToggleElement(originalElement) {
76
+ function aLibToggleElement(originalElement, switcher = void 0) {
67
77
  return __async(this, null, function* () {
68
78
  const innerElement = aLibRequireElement(originalElement);
69
- if (innerElement.hidden) {
79
+ if (switcher === void 0) {
80
+ switcher = !innerElement.hidden;
81
+ }
82
+ if (switcher) {
70
83
  return yield aLibShowElement(innerElement);
71
84
  } else {
72
85
  return yield aLibHideElement(innerElement);
@@ -77,13 +90,11 @@ function aLibHideElement(originalElement) {
77
90
  return __async(this, null, function* () {
78
91
  const innerElement = aLibRequireElement(originalElement);
79
92
  const promise = new Promise((resolve) => {
80
- const timeout = setTimeout(() => {
81
- innerElement.removeEventListener("animationend", animationHandler);
82
- innerElement.hidden = true;
83
- innerElement.classList.remove("a-out-animation");
84
- console.warn("Animation timeout");
93
+ if (innerElement.hidden) {
85
94
  resolve();
86
- }, 5e3);
95
+ return;
96
+ }
97
+ let timeout;
87
98
  const animationHandler = () => {
88
99
  clearTimeout(timeout);
89
100
  innerElement.removeEventListener("animationend", animationHandler);
@@ -91,8 +102,21 @@ function aLibHideElement(originalElement) {
91
102
  innerElement.classList.remove("a-out-animation");
92
103
  resolve();
93
104
  };
94
- innerElement.addEventListener("animationend", animationHandler);
95
105
  innerElement.classList.add("a-out-animation");
106
+ const animations = innerElement.getAnimations();
107
+ if (animations.length > 0) {
108
+ timeout = setTimeout(() => {
109
+ innerElement.removeEventListener("animationend", animationHandler);
110
+ innerElement.hidden = true;
111
+ innerElement.classList.remove("a-out-animation");
112
+ console.warn("Animation timeout");
113
+ resolve();
114
+ }, 5e3);
115
+ innerElement.addEventListener("animationend", animationHandler);
116
+ } else {
117
+ innerElement.hidden = true;
118
+ resolve();
119
+ }
96
120
  });
97
121
  return promise;
98
122
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const timeout = setTimeout(() => {\n innerElement.removeEventListener('animationend', animationHandler);\n console.warn('Animation timeout');\n resolve();\n }, 5000); // 5 seconds timeout\n\n const animationHandler = () => {\n clearTimeout(timeout);\n innerElement.removeEventListener('animationend', animationHandler);\n resolve();\n }\n\n innerElement.addEventListener('animationend', animationHandler);\n innerElement.hidden = false;\n });\n\n return promise;\n}\n\nexport async function aLibToggleElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n if (innerElement.hidden) {\n return await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(originalElement: AngelsSelectorType) {\n const innerElement = aLibRequireElement(originalElement);\n const promise = new Promise<void>((resolve) => {\n\n const 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\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.addEventListener('animationend', animationHandler);\n innerElement.classList.add('a-out-animation');\n });\n\n return promise;\n}\n","import { aLibHideElement, aLibShowElement, aLibToggleElement } from \"./AngelsFrontAnimationLibrary\";\nimport { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nwindow.aHideElement = aLibHideElement;\nwindow.aRequireElement = aLibRequireElement;\nwindow.aShowElement = aLibShowElement;\nwindow.aToggleElement = aLibToggleElement;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,SAAS;AAAA,IAC1B,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC;AAAA;AACzE,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAQ;AACrB,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,YAAM,UAAU,WAAW,MAAM;AAC7B,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ,KAAK,mBAAmB;AAChC,gBAAQ;AAAA,MACZ,GAAG,GAAI;AAEP,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,iBAAiB,gBAAgB,gBAAgB;AAC9D,mBAAa,UAAU,IAAI,iBAAiB;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACX;AAAA;;;ACxDA,OAAO,eAAe;AACtB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../src/AngelsFrontDOMLibrary.ts","../src/AngelsFrontAnimationLibrary.ts","../src/AngelsFrontLibrary.ts"],"sourcesContent":["export function aLibRequireElement<THTMLElement extends HTMLElement>(selector: AngelsSelectorType): THTMLElement {\n\n let element: THTMLElement;\n if (typeof selector === 'undefined') {\n throw Error(`Selector is undefined.`);\n } else if (selector === null) {\n throw Error(`Selector is null.`);\n } else if (typeof selector === 'string') {\n const findElement = document.querySelector<THTMLElement>(selector);\n if (!findElement) {\n throw Error(`Element not found by '${selector}' selector.`);\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 {\n element = selector;\n }\n return element\n}\n","import { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nexport async function aLibShowElement(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\nexport async 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 await aLibShowElement(innerElement);\n } else {\n return await aLibHideElement(innerElement);\n }\n}\n\nexport async function aLibHideElement(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","import { aLibHideElement, aLibShowElement, aLibToggleElement } from \"./AngelsFrontAnimationLibrary\";\nimport { aLibRequireElement } from \"./AngelsFrontDOMLibrary\";\n\nwindow.aHideElement = aLibHideElement;\nwindow.aRequireElement = aLibRequireElement;\nwindow.aShowElement = aLibShowElement;\nwindow.aToggleElement = aLibToggleElement;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,mBAAqD,UAA4C;AAE7G,MAAI;AACJ,MAAI,OAAO,aAAa,aAAa;AACjC,UAAM,MAAM,wBAAwB;AAAA,EACxC,WAAW,aAAa,MAAM;AAC1B,UAAM,MAAM,mBAAmB;AAAA,EACnC,WAAW,OAAO,aAAa,UAAU;AACrC,UAAM,cAAc,SAAS,cAA4B,QAAQ;AACjE,QAAI,CAAC,aAAa;AACd,YAAM,MAAM,yBAAyB,QAAQ,aAAa;AAAA,IAC9D;AACA,cAAU;AAAA,EACd,WAAW,oBAAoB,aAAa;AACxC,cAAU;AAAA,EACd,WAAW,oBAAoB,SAAS;AACpC,cAAU;AAAA,EACd,OAAO;AACH,cAAU;AAAA,EACd;AACA,SAAO;AACX;;;ACnBA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,CAAC,aAAa,QAAQ;AACtB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,gBAAQ;AAAA,MACZ;AAEA,mBAAa,SAAS;AAEtB,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAEA,SAAsB,kBAAkB,iBAAqC,WAAgC,QAAW;AAAA;AACpH,UAAM,eAAe,mBAAmB,eAAe;AACvD,QAAI,aAAa,QAAW;AACxB,iBAAW,CAAC,aAAa;AAAA,IAC7B;AACA,QAAI,UAAU;AACV,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,gBAAgB,YAAY;AAAA,IAC7C;AAAA,EACJ;AAAA;AAEA,SAAsB,gBAAgB,iBAAqC;AAAA;AACvE,UAAM,eAAe,mBAAmB,eAAe;AACvD,UAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAE3C,UAAI,aAAa,QAAQ;AACrB,gBAAQ;AACR;AAAA,MACJ;AAEA,UAAI;AAEJ,YAAM,mBAAmB,MAAM;AAC3B,qBAAa,OAAO;AACpB,qBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,qBAAa,SAAS;AACtB,qBAAa,UAAU,OAAO,iBAAiB;AAC/C,gBAAQ;AAAA,MACZ;AAEA,mBAAa,UAAU,IAAI,iBAAiB;AAE5C,YAAM,aAAa,aAAa,cAAc;AAC9C,UAAI,WAAW,SAAS,GAAG;AACvB,kBAAU,WAAW,MAAM;AACvB,uBAAa,oBAAoB,gBAAgB,gBAAgB;AACjE,uBAAa,SAAS;AACtB,uBAAa,UAAU,OAAO,iBAAiB;AAC/C,kBAAQ,KAAK,mBAAmB;AAChC,kBAAQ;AAAA,QACZ,GAAG,GAAI;AACP,qBAAa,iBAAiB,gBAAgB,gBAAgB;AAAA,MAClE,OAAO;AACH,qBAAa,SAAS;AACtB,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA;;;ACpFA,OAAO,eAAe;AACtB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,iBAAiB;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angelscmf/front",
3
- "version": "1.0.26",
3
+ "version": "1.0.27",
4
4
  "description": "",
5
5
  "license": "UNLICENSED",
6
6
  "author": "",
@@ -23,15 +23,18 @@
23
23
  "devDependencies": {
24
24
  "browser-sync": "^3.0.4",
25
25
  "browserify": "^17.0.1",
26
- "glob": "^11.0.1",
26
+ "glob": "^11.0.3",
27
27
  "gulp": "^5.0.1",
28
28
  "gulp-livereload": "^4.0.2",
29
29
  "gulp-plumber": "^1.2.1",
30
30
  "gulp-sass": "^6.0.1",
31
31
  "gulp-sourcemaps": "^3.0.0",
32
32
  "gulp-typescript": "^6.0.0-alpha.1",
33
+ "load-json-file": "^7.0.1",
33
34
  "merge-stream": "^2.0.0",
35
+ "path": "^0.12.7",
34
36
  "sass": "^1.89.2",
37
+ "stream": "^0.0.3",
35
38
  "ts-node": "^10.9.2",
36
39
  "tsify": "^5.0.4",
37
40
  "tsup": "^8.4.0",
@@ -12,6 +12,7 @@
12
12
  @forward 'angelsMessages/AngelsWarn';
13
13
  @forward 'AngelsScreenRanges';
14
14
  @forward 'angelsTags/a-block';
15
+ @forward 'angelsTags/a-board';
15
16
  @forward 'angelsTags/a-brick';
16
17
  @forward 'angelsTags/a-flex';
17
18
  @forward 'angelsTags/a-grid';
@@ -0,0 +1,16 @@
1
+ a-board {
2
+ display: flex;
3
+ }
4
+
5
+ a-board:empty {
6
+ display: none;
7
+ }
8
+
9
+ .a-technical-transparent {
10
+ animation: none !important;
11
+ display: unset !important;
12
+ height: min-content !important;
13
+ opacity: 0.5 !important;
14
+ visibility: visible !important;
15
+ width: max-content !important;
16
+ }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=AngelsFrontDeclarations.d.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=AngelsFrontDeclarations.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}