@angelscmf/front 1.0.25 → 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.
Files changed (61) hide show
  1. package/dist/AngelsCore.cjs +203 -0
  2. package/dist/AngelsCore.cjs.map +1 -0
  3. package/dist/AngelsCore.d.ts +2 -0
  4. package/dist/AngelsCore.js +202 -0
  5. package/dist/AngelsCore.js.map +1 -0
  6. package/dist/AngelsFrontAnimationLibrary.cjs +157 -0
  7. package/dist/AngelsFrontAnimationLibrary.cjs.map +1 -0
  8. package/dist/AngelsFrontAnimationLibrary.d.cts +5 -0
  9. package/dist/AngelsFrontAnimationLibrary.d.ts +5 -0
  10. package/dist/AngelsFrontAnimationLibrary.js +129 -0
  11. package/dist/AngelsFrontAnimationLibrary.js.map +1 -0
  12. package/dist/{AngelsFrontApplication.mjs → AngelsFrontApplication.cjs} +27 -4
  13. package/dist/AngelsFrontApplication.cjs.map +1 -0
  14. package/dist/{AngelsFrontApplication.d.mts → AngelsFrontApplication.d.cts} +2 -2
  15. package/dist/AngelsFrontApplication.js +3 -26
  16. package/dist/AngelsFrontApplication.js.map +1 -1
  17. package/dist/{AngelsFrontComponent.mjs → AngelsFrontComponent.cjs} +27 -4
  18. package/dist/AngelsFrontComponent.cjs.map +1 -0
  19. package/dist/{AngelsFrontComponent.d.mts → AngelsFrontComponent.d.cts} +1 -1
  20. package/dist/AngelsFrontComponent.js +3 -26
  21. package/dist/AngelsFrontComponent.js.map +1 -1
  22. package/dist/AngelsFrontDOMLibrary.cjs +51 -0
  23. package/dist/AngelsFrontDOMLibrary.cjs.map +1 -0
  24. package/dist/AngelsFrontDOMLibrary.d.cts +3 -0
  25. package/dist/AngelsFrontDOMLibrary.d.ts +3 -0
  26. package/dist/AngelsFrontDOMLibrary.js +26 -0
  27. package/dist/AngelsFrontDOMLibrary.js.map +1 -0
  28. package/dist/AngelsFrontLibrary.cjs +131 -0
  29. package/dist/AngelsFrontLibrary.cjs.map +1 -0
  30. package/dist/AngelsFrontLibrary.d.cts +2 -0
  31. package/dist/AngelsFrontLibrary.d.ts +2 -0
  32. package/dist/AngelsFrontLibrary.js +130 -0
  33. package/dist/AngelsFrontLibrary.js.map +1 -0
  34. package/dist/{AngelsFrontMod.mjs → AngelsFrontMod.cjs} +25 -4
  35. package/dist/{AngelsFrontMod.mjs.map → AngelsFrontMod.cjs.map} +1 -1
  36. package/dist/AngelsFrontMod.js +3 -24
  37. package/dist/AngelsFrontMod.js.map +1 -1
  38. package/dist/{AngelsFrontPage.mjs → AngelsFrontPage.cjs} +27 -4
  39. package/dist/AngelsFrontPage.cjs.map +1 -0
  40. package/dist/{AngelsFrontPage.d.mts → AngelsFrontPage.d.cts} +2 -2
  41. package/dist/AngelsFrontPage.js +3 -26
  42. package/dist/AngelsFrontPage.js.map +1 -1
  43. package/dist/index.cjs +2 -0
  44. package/dist/index.cjs.map +1 -0
  45. package/dist/index.d.cts +2 -0
  46. package/dist/index.js +0 -1
  47. package/package.json +13 -3
  48. package/sass/AngelsDesign.scss +3 -1
  49. package/sass/angelsAnimation/_AngelsAnimations.scss +8 -0
  50. package/sass/angelsAnimation/_AngelsFadeAnimation.scss +42 -0
  51. package/sass/angelsAnimation/_AngelsSlideLeftAnimation.scss +46 -0
  52. package/sass/angelsAnimation/_AngelsSlideRightAnimation.scss +46 -0
  53. package/sass/angelsAnimation/_AngelsSlideUpAnimation.scss +46 -0
  54. package/sass/angelsTags/_a-board.scss +16 -0
  55. package/dist/AngelsFrontApplication.mjs.map +0 -1
  56. package/dist/AngelsFrontComponent.mjs.map +0 -1
  57. package/dist/AngelsFrontPage.mjs.map +0 -1
  58. package/dist/index.mjs +0 -12
  59. package/dist/index.mjs.map +0 -1
  60. /package/dist/{index.d.mts → AngelsCore.d.cts} +0 -0
  61. /package/dist/{AngelsFrontMod.d.mts → AngelsFrontMod.d.cts} +0 -0
@@ -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,2 @@
1
+
2
+ export { }
@@ -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":[]}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __async = (__this, __arguments, generator) => {
20
+ return new Promise((resolve, reject) => {
21
+ var fulfilled = (value) => {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ };
28
+ var rejected = (value) => {
29
+ try {
30
+ step(generator.throw(value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ };
35
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
+ step((generator = generator.apply(__this, __arguments)).next());
37
+ });
38
+ };
39
+
40
+ // src/AngelsFrontAnimationLibrary.ts
41
+ var AngelsFrontAnimationLibrary_exports = {};
42
+ __export(AngelsFrontAnimationLibrary_exports, {
43
+ aLibHideElement: () => aLibHideElement,
44
+ aLibShowElement: () => aLibShowElement,
45
+ aLibToggleElement: () => aLibToggleElement
46
+ });
47
+ module.exports = __toCommonJS(AngelsFrontAnimationLibrary_exports);
48
+
49
+ // src/AngelsFrontDOMLibrary.ts
50
+ function aLibRequireElement(selector) {
51
+ let element;
52
+ if (typeof selector === "undefined") {
53
+ throw Error(`Selector is undefined.`);
54
+ } else if (selector === null) {
55
+ throw Error(`Selector is null.`);
56
+ } else if (typeof selector === "string") {
57
+ const findElement = document.querySelector(selector);
58
+ if (!findElement) {
59
+ throw Error(`Element not found by '${selector}' selector.`);
60
+ }
61
+ element = findElement;
62
+ } else if (selector instanceof HTMLElement) {
63
+ element = selector;
64
+ } else if (selector instanceof Element) {
65
+ element = selector;
66
+ } else {
67
+ element = selector;
68
+ }
69
+ return element;
70
+ }
71
+
72
+ // src/AngelsFrontAnimationLibrary.ts
73
+ function aLibShowElement(originalElement) {
74
+ return __async(this, null, function* () {
75
+ const innerElement = aLibRequireElement(originalElement);
76
+ const promise = new Promise((resolve) => {
77
+ if (!innerElement.hidden) {
78
+ resolve();
79
+ return;
80
+ }
81
+ let timeout;
82
+ const animationHandler = () => {
83
+ clearTimeout(timeout);
84
+ innerElement.removeEventListener("animationend", animationHandler);
85
+ resolve();
86
+ };
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
+ }
99
+ });
100
+ return promise;
101
+ });
102
+ }
103
+ function aLibToggleElement(originalElement, switcher = void 0) {
104
+ return __async(this, null, function* () {
105
+ const innerElement = aLibRequireElement(originalElement);
106
+ if (switcher === void 0) {
107
+ switcher = !innerElement.hidden;
108
+ }
109
+ if (switcher) {
110
+ return yield aLibShowElement(innerElement);
111
+ } else {
112
+ return yield aLibHideElement(innerElement);
113
+ }
114
+ });
115
+ }
116
+ function aLibHideElement(originalElement) {
117
+ return __async(this, null, function* () {
118
+ const innerElement = aLibRequireElement(originalElement);
119
+ const promise = new Promise((resolve) => {
120
+ if (innerElement.hidden) {
121
+ resolve();
122
+ return;
123
+ }
124
+ let timeout;
125
+ const animationHandler = () => {
126
+ clearTimeout(timeout);
127
+ innerElement.removeEventListener("animationend", animationHandler);
128
+ innerElement.hidden = true;
129
+ innerElement.classList.remove("a-out-animation");
130
+ resolve();
131
+ };
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
+ }
147
+ });
148
+ return promise;
149
+ });
150
+ }
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ aLibHideElement,
154
+ aLibShowElement,
155
+ aLibToggleElement
156
+ });
157
+ //# sourceMappingURL=AngelsFrontAnimationLibrary.cjs.map
@@ -0,0 +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 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":[]}
@@ -0,0 +1,5 @@
1
+ declare function aLibShowElement(originalElement: AngelsSelectorType): Promise<void>;
2
+ declare function aLibToggleElement(originalElement: AngelsSelectorType, switcher?: boolean | undefined): Promise<void>;
3
+ declare function aLibHideElement(originalElement: AngelsSelectorType): Promise<void>;
4
+
5
+ export { aLibHideElement, aLibShowElement, aLibToggleElement };
@@ -0,0 +1,5 @@
1
+ declare function aLibShowElement(originalElement: AngelsSelectorType): Promise<void>;
2
+ declare function aLibToggleElement(originalElement: AngelsSelectorType, switcher?: boolean | undefined): Promise<void>;
3
+ declare function aLibHideElement(originalElement: AngelsSelectorType): Promise<void>;
4
+
5
+ export { aLibHideElement, aLibShowElement, aLibToggleElement };