@twobirds/microcomponents 0.0.48 → 0.0.51

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 (130) hide show
  1. package/assets/Grandparent.css +13 -0
  2. package/assets/documentation/MC.md +380 -166
  3. package/assets/test.html +5 -1
  4. package/dist/MC.d.ts +1 -0
  5. package/dist/MC.d.ts.map +1 -1
  6. package/dist/MC.min.js +44 -0
  7. package/dist/MC.ts +65 -0
  8. package/dist/elements.min.js +1 -1
  9. package/dist/elements.ts +10 -10
  10. package/dist/formValues.d.ts +3 -2
  11. package/dist/formValues.d.ts.map +1 -1
  12. package/dist/formValues.ts +205 -203
  13. package/dist/formvValues.min.js +1 -1
  14. package/dist/helpers.d.ts +1 -0
  15. package/dist/helpers.d.ts.map +1 -1
  16. package/dist/helpers.ts +9 -0
  17. package/dist/microcomponents.min.js +1 -1
  18. package/dist/observables.d.ts +1 -1
  19. package/dist/observables.d.ts.map +1 -1
  20. package/dist/observables.min.js +1 -1
  21. package/dist/observables.ts +64 -31
  22. package/dist/selectors.min.js +1 -1
  23. package/dist/test.ts +8 -5
  24. package/package.json +1 -1
  25. package/public/assets/search.js +1 -1
  26. package/public/classes/MC.DC.html +13 -13
  27. package/public/classes/MC.MC.html +7 -7
  28. package/public/classes/MC.McBase.html +4 -4
  29. package/public/classes/MC.McEvent.html +13 -13
  30. package/public/classes/formValues.FormValues.html +86 -0
  31. package/public/functions/MC.addListener.html +2 -1
  32. package/public/functions/{formValues.formValues.html → MC.autoload.html} +18 -17
  33. package/public/functions/MC.removeListener.html +2 -1
  34. package/public/functions/elements.defineCE.html +1 -1
  35. package/public/functions/elements.getCE.html +1 -1
  36. package/public/functions/observables.observe.html +3 -3
  37. package/public/functions/selectors._d.html +1 -1
  38. package/public/functions/selectors._t.html +1 -1
  39. package/public/interfaces/MC.HTMLMcElement.html +2 -2
  40. package/public/interfaces/selectors.DSelector.html +55 -55
  41. package/public/interfaces/selectors.TSelector.html +37 -37
  42. package/public/modules/MC.html +3 -1
  43. package/public/modules/elements.html +1 -1
  44. package/public/modules/formValues.html +4 -4
  45. package/public/modules/observables.html +1 -1
  46. package/public/modules/selectors.html +1 -1
  47. package/public/types/observables.Observable.html +1 -1
  48. package/public/types/selectors.selection.html +1 -1
  49. package/public/types/selectors.singleSelector.html +1 -1
  50. package/src/MC.ts +65 -0
  51. package/src/elements.ts +10 -10
  52. package/src/formValues.ts +205 -203
  53. package/src/helpers.ts +9 -0
  54. package/src/observables.ts +64 -31
  55. package/src/test/Child.ts +21 -0
  56. package/src/test/Grandchild.ts +21 -0
  57. package/src/test/Grandparent.css +11 -0
  58. package/src/test/Grandparent.ts +21 -0
  59. package/src/test/Greatgrandchild.ts +42 -0
  60. package/src/test/Parent.ts +21 -0
  61. package/src/test/Testform.css +47 -0
  62. package/src/test/Testform.html +56 -0
  63. package/src/test/Testform.json +27 -0
  64. package/src/test/Testform.ts +159 -0
  65. package/src/test.ts +8 -5
  66. package/webpack.config.js +135 -61
  67. package/public/3d.html +0 -42
  68. package/public/MC.js +0 -271
  69. package/public/MC.js.map +0 -1
  70. package/public/MC.min.js +0 -407
  71. package/public/McEvent.js +0 -71
  72. package/public/McEvent.js.map +0 -1
  73. package/public/MicroComponents.svg +0 -15
  74. package/public/autoloader.js +0 -53
  75. package/public/autoloader.js.map +0 -1
  76. package/public/documentation/MC.md +0 -256
  77. package/public/documentation/ajaxian-1.png +0 -0
  78. package/public/documentation/ajaxian-2.png +0 -0
  79. package/public/documentation/ajaxian-3.png +0 -0
  80. package/public/documentation/comparision.md +0 -0
  81. package/public/documentation/elements.md +0 -276
  82. package/public/documentation/functional_requirements.md +0 -8
  83. package/public/documentation/history.md +0 -436
  84. package/public/documentation/how_tos.md +0 -0
  85. package/public/documentation/introduction.md +0 -0
  86. package/public/documentation/magic.md +0 -29
  87. package/public/documentation/proposal_draft.md +0 -37
  88. package/public/documentation/rnd0023-1.jpg +0 -0
  89. package/public/documentation/rnd0023-2.jpg +0 -0
  90. package/public/documentation/rnd0023-3.jpg +0 -0
  91. package/public/documentation/tB_react.md +0 -207
  92. package/public/documentation/usage.md +0 -142
  93. package/public/documentation/why.md +0 -25
  94. package/public/elements.js +0 -48
  95. package/public/elements.js.map +0 -1
  96. package/public/elements.min.js +0 -1
  97. package/public/fiddle/MicroComponents.svg +0 -15
  98. package/public/fiddle/fiddle.css +0 -0
  99. package/public/fiddle/fiddle.js +0 -0
  100. package/public/fiddle/index.html +0 -0
  101. package/public/formValues.js +0 -196
  102. package/public/formValues.js.map +0 -1
  103. package/public/formvValues.min.js +0 -1
  104. package/public/helpers.js +0 -105
  105. package/public/helpers.js.map +0 -1
  106. package/public/microcomponents.es3.js +0 -303
  107. package/public/microcomponents.es3.js.map +0 -1
  108. package/public/microcomponents.js +0 -9
  109. package/public/microcomponents.js.map +0 -1
  110. package/public/microcomponents.min.js +0 -1
  111. package/public/my-tag.css +0 -19
  112. package/public/observables.js +0 -239
  113. package/public/observables.js.map +0 -1
  114. package/public/observables.min.js +0 -1
  115. package/public/selectors.js +0 -971
  116. package/public/selectors.js.map +0 -1
  117. package/public/selectors.min.js +0 -1
  118. package/public/src/MC.ts +0 -413
  119. package/public/src/McEvent.ts +0 -96
  120. package/public/src/autoloader.ts +0 -98
  121. package/public/src/elements.ts +0 -76
  122. package/public/src/formValues.ts +0 -275
  123. package/public/src/helpers.ts +0 -140
  124. package/public/src/microcomponents.ts +0 -8
  125. package/public/src/observables.ts +0 -372
  126. package/public/src/selectors.ts +0 -1634
  127. package/public/src/test.ts +0 -174
  128. package/public/test.html +0 -23
  129. package/public/test.js +0 -79
  130. package/public/test.js.map +0 -1
package/webpack.config.js CHANGED
@@ -1,15 +1,15 @@
1
- const path = require("path");
1
+ const path = require('path');
2
2
 
3
3
  module.exports = [
4
4
  {
5
- entry: "./build/MC.js",
6
- mode: "production",
5
+ entry: './build/MC.js',
6
+ mode: 'production',
7
7
  output: {
8
- path: path.resolve(__dirname, "dist"),
9
- filename: "MC.min.js",
10
- libraryTarget: "umd",
11
- library: "MC",
12
- globalObject: "this",
8
+ path: path.resolve(__dirname, 'dist'),
9
+ filename: 'MC.min.js',
10
+ libraryTarget: 'umd',
11
+ library: 'MC',
12
+ globalObject: 'this',
13
13
  },
14
14
  module: {
15
15
  rules: [
@@ -17,13 +17,13 @@ module.exports = [
17
17
  // test: /\.tsx?$/,
18
18
  use: [
19
19
  {
20
- loader: "ts-loader",
20
+ loader: 'ts-loader',
21
21
  options: {
22
22
  transpileOnly: true, // Avoid type checking during webpack build
23
23
  compilerOptions: {
24
24
  declaration: false, // Generate .d.ts files
25
25
  declarationMap: false, // Generate .d.ts.map files
26
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
26
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
27
27
  },
28
28
  },
29
29
  },
@@ -33,21 +33,21 @@ module.exports = [
33
33
  ],
34
34
  },
35
35
  resolve: {
36
- extensions: [".tsx", ".ts", ".js"],
36
+ extensions: ['.tsx', '.ts', '.js'],
37
37
  },
38
38
  optimization: {
39
39
  minimize: false, // Enable minification
40
40
  },
41
41
  },
42
42
  {
43
- entry: "./build/elements.js",
44
- mode: "production",
43
+ entry: './build/elements.js',
44
+ mode: 'production',
45
45
  output: {
46
- path: path.resolve(__dirname, "dist"),
47
- filename: "elements.min.js",
48
- libraryTarget: "umd",
49
- library: "elements",
50
- globalObject: "this",
46
+ path: path.resolve(__dirname, 'dist'),
47
+ filename: 'elements.min.js',
48
+ libraryTarget: 'umd',
49
+ library: 'elements',
50
+ globalObject: 'this',
51
51
  },
52
52
  module: {
53
53
  rules: [
@@ -55,13 +55,13 @@ module.exports = [
55
55
  // test: /\.tsx?$/,
56
56
  use: [
57
57
  {
58
- loader: "ts-loader",
58
+ loader: 'ts-loader',
59
59
  options: {
60
60
  transpileOnly: true, // Avoid type checking during webpack build
61
61
  compilerOptions: {
62
62
  declaration: false, // Generate .d.ts files
63
63
  declarationMap: false, // Generate .d.ts.map files
64
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
64
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
65
65
  },
66
66
  },
67
67
  },
@@ -71,21 +71,21 @@ module.exports = [
71
71
  ],
72
72
  },
73
73
  resolve: {
74
- extensions: [".tsx", ".ts", ".js"],
74
+ extensions: ['.tsx', '.ts', '.js'],
75
75
  },
76
76
  optimization: {
77
77
  minimize: true, // Enable minification
78
78
  },
79
79
  },
80
80
  {
81
- entry: "./build/selectors.js",
82
- mode: "production",
81
+ entry: './build/selectors.js',
82
+ mode: 'production',
83
83
  output: {
84
- path: path.resolve(__dirname, "dist"),
85
- filename: "selectors.min.js",
86
- libraryTarget: "umd",
87
- library: "selectors",
88
- globalObject: "this",
84
+ path: path.resolve(__dirname, 'dist'),
85
+ filename: 'selectors.min.js',
86
+ libraryTarget: 'umd',
87
+ library: 'selectors',
88
+ globalObject: 'this',
89
89
  },
90
90
  module: {
91
91
  rules: [
@@ -93,13 +93,13 @@ module.exports = [
93
93
  // test: /\.tsx?$/,
94
94
  use: [
95
95
  {
96
- loader: "ts-loader",
96
+ loader: 'ts-loader',
97
97
  options: {
98
98
  transpileOnly: true, // Avoid type checking during webpack build
99
99
  compilerOptions: {
100
100
  declaration: false, // Generate .d.ts files
101
101
  declarationMap: false, // Generate .d.ts.map files
102
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
102
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
103
103
  },
104
104
  },
105
105
  },
@@ -109,21 +109,21 @@ module.exports = [
109
109
  ],
110
110
  },
111
111
  resolve: {
112
- extensions: [".tsx", ".ts", ".js"],
112
+ extensions: ['.tsx', '.ts', '.js'],
113
113
  },
114
114
  optimization: {
115
115
  minimize: true, // Enable minification
116
116
  },
117
117
  },
118
118
  {
119
- entry: "./build/formValues.js",
120
- mode: "production",
119
+ entry: './build/formValues.js',
120
+ mode: 'production',
121
121
  output: {
122
- path: path.resolve(__dirname, "dist"),
123
- filename: "formvValues.min.js",
124
- libraryTarget: "umd",
125
- library: "formValues",
126
- globalObject: "this",
122
+ path: path.resolve(__dirname, 'dist'),
123
+ filename: 'formvValues.min.js',
124
+ libraryTarget: 'umd',
125
+ library: 'formValues',
126
+ globalObject: 'this',
127
127
  },
128
128
  module: {
129
129
  rules: [
@@ -131,13 +131,13 @@ module.exports = [
131
131
  // test: /\.tsx?$/,
132
132
  use: [
133
133
  {
134
- loader: "ts-loader",
134
+ loader: 'ts-loader',
135
135
  options: {
136
136
  transpileOnly: true, // Avoid type checking during webpack build
137
137
  compilerOptions: {
138
138
  declaration: false, // Generate .d.ts files
139
139
  declarationMap: false, // Generate .d.ts.map files
140
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
140
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
141
141
  },
142
142
  },
143
143
  },
@@ -147,21 +147,21 @@ module.exports = [
147
147
  ],
148
148
  },
149
149
  resolve: {
150
- extensions: [".tsx", ".ts", ".js"],
150
+ extensions: ['.tsx', '.ts', '.js'],
151
151
  },
152
152
  optimization: {
153
153
  minimize: true, // Enable minification
154
154
  },
155
155
  },
156
156
  {
157
- entry: "./build/observables.js",
158
- mode: "production",
157
+ entry: './build/observables.js',
158
+ mode: 'production',
159
159
  output: {
160
- path: path.resolve(__dirname, "dist"),
161
- filename: "observables.min.js",
162
- libraryTarget: "umd",
163
- library: "observables",
164
- globalObject: "this",
160
+ path: path.resolve(__dirname, 'dist'),
161
+ filename: 'observables.min.js',
162
+ libraryTarget: 'umd',
163
+ library: 'observables',
164
+ globalObject: 'this',
165
165
  },
166
166
  module: {
167
167
  rules: [
@@ -169,13 +169,13 @@ module.exports = [
169
169
  // test: /\.tsx?$/,
170
170
  use: [
171
171
  {
172
- loader: "ts-loader",
172
+ loader: 'ts-loader',
173
173
  options: {
174
174
  transpileOnly: true, // Avoid type checking during webpack build
175
175
  compilerOptions: {
176
176
  declaration: false, // Generate .d.ts files
177
177
  declarationMap: false, // Generate .d.ts.map files
178
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
178
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
179
179
  },
180
180
  },
181
181
  },
@@ -185,7 +185,7 @@ module.exports = [
185
185
  ],
186
186
  },
187
187
  resolve: {
188
- extensions: [".tsx", ".ts", ".js"],
188
+ extensions: ['.tsx', '.ts', '.js'],
189
189
  },
190
190
  optimization: {
191
191
  minimize: true, // Enable minification
@@ -193,14 +193,14 @@ module.exports = [
193
193
  },
194
194
  // bundle files
195
195
  {
196
- entry: "./build/microcomponents.js",
197
- mode: "production",
196
+ entry: './build/microcomponents.js',
197
+ mode: 'production',
198
198
  output: {
199
- path: path.resolve(__dirname, "dist"),
200
- filename: "microcomponents.min.js",
201
- libraryTarget: "umd",
202
- library: "microcomponents",
203
- globalObject: "this",
199
+ path: path.resolve(__dirname, 'dist'),
200
+ filename: 'microcomponents.min.js',
201
+ libraryTarget: 'umd',
202
+ library: 'microcomponents',
203
+ globalObject: 'this',
204
204
  },
205
205
  module: {
206
206
  rules: [
@@ -208,13 +208,13 @@ module.exports = [
208
208
  // test: /\.tsx?$/,
209
209
  use: [
210
210
  {
211
- loader: "ts-loader",
211
+ loader: 'ts-loader',
212
212
  options: {
213
213
  transpileOnly: true, // Avoid type checking during webpack build
214
214
  compilerOptions: {
215
215
  declaration: false, // Generate .d.ts files
216
216
  declarationMap: false, // Generate .d.ts.map files
217
- outDir: "build/types", // Output .d.ts and .d.ts.map to a different directory
217
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
218
218
  },
219
219
  },
220
220
  },
@@ -224,7 +224,81 @@ module.exports = [
224
224
  ],
225
225
  },
226
226
  resolve: {
227
- extensions: [".tsx", ".ts", ".js"],
227
+ extensions: ['.tsx', '.ts', '.js'],
228
+ },
229
+ optimization: {
230
+ minimize: true, // Enable minification
231
+ },
232
+ },
233
+ {
234
+ entry: './build/test/Grandparent.js',
235
+ mode: 'production',
236
+ output: {
237
+ path: path.resolve(__dirname, 'public/test'),
238
+ filename: 'Grandparent.js',
239
+ libraryTarget: 'umd',
240
+ library: 'TestGrandparent',
241
+ },
242
+ module: {
243
+ rules: [
244
+ {
245
+ // test: /\.tsx?$/,
246
+ use: [
247
+ {
248
+ loader: 'ts-loader',
249
+ options: {
250
+ transpileOnly: true, // Avoid type checking during webpack build
251
+ compilerOptions: {
252
+ declaration: false, // Generate .d.ts files
253
+ declarationMap: false, // Generate .d.ts.map files
254
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
255
+ },
256
+ },
257
+ },
258
+ ],
259
+ exclude: /node_modules/,
260
+ },
261
+ ],
262
+ },
263
+ resolve: {
264
+ extensions: ['.tsx', '.ts', '.js'],
265
+ },
266
+ optimization: {
267
+ minimize: true, // Enable minification
268
+ },
269
+ },
270
+ {
271
+ entry: './build/test/Testform.js',
272
+ mode: 'production',
273
+ output: {
274
+ path: path.resolve(__dirname, 'public/test'),
275
+ filename: 'Testform.js',
276
+ libraryTarget: 'umd',
277
+ library: 'TestTestform',
278
+ },
279
+ module: {
280
+ rules: [
281
+ {
282
+ // test: /\.tsx?$/,
283
+ use: [
284
+ {
285
+ loader: 'ts-loader',
286
+ options: {
287
+ transpileOnly: true, // Avoid type checking during webpack build
288
+ compilerOptions: {
289
+ declaration: false, // Generate .d.ts files
290
+ declarationMap: false, // Generate .d.ts.map files
291
+ outDir: 'build/types', // Output .d.ts and .d.ts.map to a different directory
292
+ },
293
+ },
294
+ },
295
+ ],
296
+ exclude: /node_modules/,
297
+ },
298
+ ],
299
+ },
300
+ resolve: {
301
+ extensions: ['.tsx', '.ts', '.js'],
228
302
  },
229
303
  optimization: {
230
304
  minimize: true, // Enable minification
package/public/3d.html DELETED
@@ -1,42 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>3D Positioned Image with CSS</title>
7
- <style>
8
- body {
9
- display: flex;
10
- justify-content: center;
11
- align-items: center;
12
- height: 100vh;
13
- background-color: #222;
14
- perspective: 800px; /* Depth effect */
15
- }
16
-
17
- .container {
18
- width: 300px;
19
- height: 200px;
20
- transform-style: preserve-3d; /* Needed for 3D transformations */
21
- }
22
-
23
- .image3d {
24
- width: 100%;
25
- height: 100%;
26
- transform: rotateY(20deg) rotateX(10deg) translateZ(50px);
27
- transition: transform 0.5s ease-in-out;
28
- box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.5);
29
- }
30
-
31
- /* Hover effect */
32
- .container:hover .image3d {
33
- transform: rotateY(-20deg) rotateX(-10deg) translateZ(100px);
34
- }
35
- </style>
36
- </head>
37
- <body>
38
- <div class="container">
39
- <img class="image3d" src="https://via.placeholder.com/300x200" alt="3D Image">
40
- </div>
41
- </body>
42
- </html>
package/public/MC.js DELETED
@@ -1,271 +0,0 @@
1
- 'use strict';
2
- import { McEvent } from './McEvent.js';
3
- var isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
4
- let nativeEventNames = new Set();
5
- if (isBrowser()) {
6
- Object.keys(HTMLElement.prototype)
7
- .filter((key) => /^on/.test(key))
8
- .forEach((eventName) => nativeEventNames.add(eventName));
9
- }
10
- function getMicroComponents(elements, search) {
11
- let mcValues = [];
12
- elements.forEach((e) => {
13
- if (e) {
14
- if (e instanceof HTMLElement) {
15
- const _mc = e?._mc;
16
- if (!search && _mc) {
17
- mcValues = mcValues.concat(Object.values(e._mc));
18
- }
19
- else if (search && _mc && _mc[search]) {
20
- mcValues.push(_mc[search]);
21
- }
22
- }
23
- }
24
- });
25
- return mcValues;
26
- }
27
- function traverseNodes(node, search, firstonly = true) {
28
- let mcValues = [];
29
- while (node) {
30
- if (node._mc) {
31
- if (!search) {
32
- mcValues = mcValues.concat(Object.values(node._mc));
33
- }
34
- else if (search && node._mc[search]) {
35
- mcValues.push(node._mc[search]);
36
- }
37
- if (firstonly)
38
- return mcValues;
39
- }
40
- node = node.parentNode;
41
- }
42
- return mcValues;
43
- }
44
- function isDOM(element) {
45
- return element && element instanceof HTMLElement;
46
- }
47
- function addListener(domNode, eventName, handler, capture = false, once = false) {
48
- let options = { once: false };
49
- if (capture) {
50
- options.capture = capture;
51
- }
52
- if (once) {
53
- options.once = once;
54
- }
55
- domNode.addEventListener(eventName, handler, options);
56
- }
57
- function removeListener(domNode, eventName, handler) {
58
- domNode.removeEventListener(eventName, handler);
59
- }
60
- function add(target, key, element = {}) {
61
- let node = target;
62
- if (!node._mc) {
63
- let debug = DC?.debug;
64
- DC.debug = false;
65
- node._mc = new DC(target);
66
- DC.debug = debug;
67
- delete node._mc._mc;
68
- }
69
- const _mc = node._mc;
70
- if (key.length && !_mc[key]) {
71
- _mc[key] = element;
72
- if (target instanceof HTMLElement) {
73
- target.setAttribute('_mc', '');
74
- }
75
- }
76
- return element;
77
- }
78
- function remove(target, key) {
79
- if (!key)
80
- return;
81
- const _mc = target?._mc || {};
82
- if (_mc && _mc[key]) {
83
- delete _mc[key];
84
- }
85
- if (!Object.keys(_mc).length &&
86
- target instanceof HTMLElement &&
87
- target.hasAttribute('_mc')) {
88
- target.removeAttribute('_mc');
89
- }
90
- return;
91
- }
92
- function trigger(target, ev, data = {}, bubble = 'l') {
93
- let _mc = target?._mc;
94
- if (!_mc)
95
- return;
96
- let event = ev instanceof McEvent
97
- ? new McEvent(ev.type, ev.data, 'l')
98
- : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble);
99
- [...Object.values(_mc)].forEach((mc) => {
100
- if (mc?.trigger && typeof mc?.trigger === 'function') {
101
- mc?.trigger(event);
102
- }
103
- });
104
- if (/[ud]/.test(mcEvent.bubble)) {
105
- bubbleEvent(target, mcEvent);
106
- }
107
- return;
108
- }
109
- function init(element) {
110
- if (element.constructor === DC)
111
- return;
112
- setTimeout(() => {
113
- element.trigger('Init');
114
- }, 0);
115
- }
116
- function autoAttachListeners(element) {
117
- if (!isBrowser() || element.constructor === DC)
118
- return;
119
- const target = element.target;
120
- if (target instanceof HTMLElement) {
121
- let that = element;
122
- Object.getOwnPropertyNames(that.constructor.prototype)
123
- .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
124
- typeof that.constructor.prototype[key] === 'function')
125
- .forEach((key) => {
126
- let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => {
127
- that.trigger(withoutOnOne, ev);
128
- };
129
- if (once) {
130
- Object.defineProperty(element, 'on' + withoutOnOne, {
131
- configurable: true,
132
- enumerable: false,
133
- writable: true,
134
- value: (ev) => {
135
- that.constructor.prototype[key].bind(that)(ev);
136
- },
137
- });
138
- }
139
- if (nativeEventNames.has('on' + nativeEventName)) {
140
- addListener(target, nativeEventName, listener, false, once);
141
- }
142
- });
143
- }
144
- }
145
- function bubbleEvent(target, ev) {
146
- if (/[ud]/.test(ev.bubble)) {
147
- setTimeout(() => {
148
- if (ev.bubble.indexOf('l') === -1) {
149
- ev.bubble += 'l';
150
- }
151
- if (ev.bubble.indexOf('u') > -1) {
152
- let parent = traverseNodes(target, '', true)?.[0].target;
153
- if (parent)
154
- DC.trigger(parent, ev);
155
- }
156
- if (ev.bubble.indexOf('d') > -1) {
157
- let targets = new Set(target._mc
158
- .children()
159
- .map((c) => c?.target));
160
- targets.forEach((target) => {
161
- if (target)
162
- DC.trigger(target, ev);
163
- });
164
- }
165
- }, 0);
166
- }
167
- }
168
- class McBase {
169
- #target;
170
- constructor(target, debug = false) {
171
- let that = this, element = that;
172
- this.#target = new WeakRef(target || {});
173
- init(element);
174
- autoAttachListeners(element);
175
- }
176
- get target() {
177
- return this.#target.deref();
178
- }
179
- }
180
- class MC extends McBase {
181
- _mc = {};
182
- constructor(target) {
183
- super(target);
184
- }
185
- static trigger = trigger;
186
- trigger(ev, data = {}, bubble = 'l') {
187
- let that = this;
188
- if (that.constructor === MC || that.constructor === DC) {
189
- let event = ev instanceof McEvent
190
- ? new McEvent(ev.type, ev.data, 'l')
191
- : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string'
192
- ? ev
193
- : new McEvent(ev, data, bubble);
194
- [...Object.getOwnPropertyNames(that)].forEach((mc) => {
195
- if (that[mc]?.trigger &&
196
- typeof that[mc]?.trigger === 'function') {
197
- that[mc]?.trigger(event);
198
- }
199
- });
200
- if (/[ud]/.test(mcEvent.bubble)) {
201
- bubbleEvent(that.target, mcEvent);
202
- }
203
- return;
204
- }
205
- if (that instanceof MC || that instanceof DC) {
206
- const that = this, mcEvent = typeof ev !== 'string'
207
- ? ev
208
- : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
209
- if (mcEvent.bubble.indexOf('l') > -1) {
210
- if (!mcEvent.immediateStopped &&
211
- typeof that[handlerName] === 'function') {
212
- that[handlerName](mcEvent);
213
- if (that.hasOwnProperty(handlerName)) {
214
- delete that[handlerName];
215
- }
216
- }
217
- }
218
- if (mcEvent.stopped || mcEvent.bubble === 'l') {
219
- return that;
220
- }
221
- if (/[ud]/.test(mcEvent.bubble)) {
222
- bubbleEvent(that.target, mcEvent);
223
- }
224
- }
225
- }
226
- }
227
- class DC extends McBase {
228
- _mc = {};
229
- constructor(target, debug = false) {
230
- super(target);
231
- }
232
- static add = add;
233
- static remove = remove;
234
- static trigger = trigger;
235
- trigger(ev, data = {}, bubble) {
236
- MC.prototype.trigger.call(this, ev, data, bubble);
237
- }
238
- parent(search = '') {
239
- let target = this.target;
240
- if (!isDOM(target))
241
- return [];
242
- return traverseNodes(target.parentNode, search, true);
243
- }
244
- ancestors(search = '') {
245
- let target = this?.target;
246
- if (!isDOM(target))
247
- return [];
248
- return traverseNodes(this.target.parentNode, search, false);
249
- }
250
- children(search = '') {
251
- let target = this?.target;
252
- if (!isDOM(target))
253
- return [];
254
- const id = Math.random().toString().replace('.', '');
255
- const selector = '[_mc]:not([temp_id="' + id + '"] [_mc] [_mc])';
256
- target.setAttribute('temp_id', id);
257
- const myDomElements = target.querySelectorAll(selector);
258
- const mcValues = getMicroComponents([...myDomElements], search);
259
- target.removeAttribute('temp_id');
260
- return mcValues;
261
- }
262
- descendants(search = '') {
263
- let target = this?.target;
264
- if (!isDOM(target))
265
- return [];
266
- const myDomElements = target.querySelectorAll('*[_mc]');
267
- return getMicroComponents([...myDomElements], search);
268
- }
269
- }
270
- export { addListener, removeListener, McBase, MC, DC, McEvent };
271
- //# sourceMappingURL=MC.js.map
package/public/MC.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"MC.js","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,SAAS,GAAG,IAAI,QAAQ,CAC3B,qDAAqD,CACrD,CAAC;AAEF,IAAI,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;AAG9C,IAAI,SAAS,EAAE,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;SAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,CAAC;AAOD,SAAS,kBAAkB,CAAC,QAAe,EAAE,MAAc;IAC1D,IAAI,QAAQ,GAAU,EAAE,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAI,CAAS,EAAE,GAAG,CAAC;gBAC5B,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBACpB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAE,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAGD,SAAS,aAAa,CACrB,IAA4B,EAC5B,MAAc,EACd,SAAS,GAAG,IAAI;IAEhB,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,SAAS;gBAAE,OAAO,QAAQ,CAAC;QAChC,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,KAAK,CAAC,OAA+B;IAC7C,OAAO,OAAO,IAAI,OAAO,YAAY,WAAW,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CACnB,OAAa,EACb,SAAiB,EACjB,OAAkD,EAClD,UAAmB,KAAK,EACxB,OAAgB,KAAK;IAErB,IAAI,OAAO,GAA6C,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAGD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACtB,OAAa,EACb,SAAiB,EACjB,OAAkD;IAElD,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAGD,SAAS,GAAG,CAAC,MAAmB,EAAE,GAAW,EAAE,OAAO,GAAG,EAAE;IAC1D,IAAI,IAAI,GAAG,MAAuB,CAAC;IAGnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,GAAI,EAAU,EAAE,KAAK,CAAC;QAC9B,EAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAK,EAAU,CAAC,MAAM,CAAC,CAAC;QAClC,EAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAGrB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAEnB,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAGD,SAAS,MAAM,CAAC,MAAqB,EAAE,GAAW;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAG9B,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAGD,IACC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;QACxB,MAAM,YAAY,WAAW;QAC7B,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EACzB,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO;AACR,CAAC;AAGD,SAAS,OAAO,CACf,MAAmB,EACnB,EAAoB,EACpB,OAAY,EAAE,EACd,SAAiB,GAAG;IAEpB,IAAI,GAAG,GAAI,MAAc,EAAE,GAAG,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,IAAI,KAAK,GACP,EAAE,YAAY,OAAO;QACpB,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QACpC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAC9B,OAAO,GACN,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAE,EAAc,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE3E,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;QAE3C,IAAK,EAAU,EAAE,OAAO,IAAI,OAAQ,EAAU,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;YACvE,EAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;AACR,CAAC;AAGD,SAAS,IAAI,CAAC,OAAgB;IAC7B,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE;QAAE,OAAO;IAEvC,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAczB,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC5C,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE;QAAE,OAAO;IAEvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACnC,IAAI,IAAI,GAAgB,OAAO,CAAC;QAChC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;aACpD,MAAM,CACN,CAAC,GAAG,EAAE,EAAE,CACP,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,UAAU,CACtD;aACA,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC1B,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAC7C,eAAe,GAAG,YAAY,CAAC,WAAW,EAAE,EAC5C,QAAQ,GAAG,CAAC,EAAiC,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,CAAC;gBAEV,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,EAAE;oBACnD,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,CAAC,EAAO,EAAE,EAAE;wBAElB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;iBACD,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;gBAGlD,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC,CAAC,CAAC;IACL,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB,EAAE,EAAW;IAGpD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE;YAEf,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACnC,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC;YAGD,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjC,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzD,IAAI,MAAM;oBAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,CAAC;YAGD,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjC,IAAI,OAAO,GAAG,IAAI,GAAG,CACnB,MAAwB,CAAC,GAAG;qBAC3B,QAAQ,EAAE;qBACV,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAE,CAAS,EAAE,MAAM,CAAC,CACzC,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAqB,EAAE,EAAE;oBACzC,IAAI,MAAM;wBAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC;AACF,CAAC;AAED,MAAM,MAAM;IACX,OAAO,CAAe;IAEtB,YAAY,MAA+B,EAAE,QAAiB,KAAK;QAClE,IAAI,IAAI,GAAY,IAAI,EACvB,OAAO,GAAG,IAAe,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEd,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,GAAiB,EAAE,CAAC;IAEvB,YAAY,MAAY;QACvB,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAEzB,OAAO,CAAC,EAAoB,EAAE,OAAY,EAAE,EAAE,SAAiB,GAAG;QACjE,IAAI,IAAI,GAAG,IAAI,CAAC;QAKhB,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,GACP,EAAE,YAAY,OAAO;gBACpB,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;gBACpC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAC9B,OAAO,GACN,OAAO,EAAE,KAAK,QAAQ;gBACrB,CAAC,CAAE,EAAc;gBACjB,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACpD,IACE,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO;oBAC1B,OAAQ,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,UAAU,EAC/C,CAAC;oBACD,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAED,OAAO;QACR,CAAC;QAGD,IAAK,IAAY,YAAY,EAAE,IAAK,IAAY,YAAY,EAAE,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,EAChB,OAAO,GACN,OAAO,EAAE,KAAK,QAAQ;gBACrB,CAAC,CAAE,EAAc;gBACjB,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,EACjC,WAAW,GACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAG/D,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACtC,IACC,CAAC,OAAO,CAAC,gBAAgB;oBACzB,OAAQ,IAAY,CAAC,WAAW,CAAC,KAAK,UAAU,EAC/C,CAAC;oBAED,IAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAK,IAAY,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;wBAE/C,OAAQ,IAAY,CAAC,WAAW,CAAC,CAAC;oBACnC,CAAC;gBACF,CAAC;YACF,CAAC;YAGD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACb,CAAC;YAGD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;QACF,CAAC;IACF,CAAC;;AAGF,MAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,GAAiB,EAAE,CAAC;IAEvB,YAAY,MAAmB,EAAE,QAAiB,KAAK;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,GAAa,GAAG,CAAC;IAC3B,MAAM,CAAC,MAAM,GAAa,MAAM,CAAC;IACjC,MAAM,CAAC,OAAO,GAAa,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAoB,EAAE,OAAY,EAAE,EAAE,MAAe;QAC5D,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE;QACzB,IAAI,MAAM,GAAiB,IAAY,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAE,MAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE;QAC5B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAE,IAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE;QAC3B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,sBAAsB,GAAG,EAAE,GAAG,iBAAiB,CAAC;QACjE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,SAAiB,EAAE;QAC9B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,kBAAkB,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;;AAGF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC"}