@twobirds/microcomponents 0.0.82 → 0.0.83

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 (233) hide show
  1. package/assets/documentation/MC.md +0 -1
  2. package/dist/MC.d.ts +3 -3
  3. package/dist/MC.d.ts.map +1 -1
  4. package/dist/MC.js +43 -74
  5. package/dist/MC.min.js +43 -74
  6. package/dist/MC.ts +67 -143
  7. package/dist/elements.d.ts +1 -1
  8. package/dist/elements.d.ts.map +1 -1
  9. package/dist/elements.js +16 -2
  10. package/dist/elements.min.js +1 -1
  11. package/dist/elements.ts +33 -3
  12. package/dist/formValues.min.js +1 -1
  13. package/dist/microcomponents.min.js +1 -1
  14. package/dist/observables.d.ts.map +1 -1
  15. package/dist/observables.js +40 -47
  16. package/dist/observables.min.js +1 -1
  17. package/dist/observables.ts +54 -59
  18. package/dist/selectors.d.ts +2 -4
  19. package/dist/selectors.d.ts.map +1 -1
  20. package/dist/selectors.js +2 -214
  21. package/dist/selectors.min.js +1 -1
  22. package/dist/selectors.ts +2 -367
  23. package/package.json +6 -5
  24. package/public/MC.d.ts +3 -3
  25. package/public/MC.d.ts.map +1 -1
  26. package/public/MC.js +43 -74
  27. package/public/MC.js.map +1 -1
  28. package/public/MC.min.js +43 -74
  29. package/public/MC.ts +67 -143
  30. package/public/documentation/MC.md +0 -1
  31. package/public/elements.d.ts +1 -1
  32. package/public/elements.d.ts.map +1 -1
  33. package/public/elements.js +16 -2
  34. package/public/elements.js.map +1 -1
  35. package/public/elements.min.js +1 -1
  36. package/public/elements.ts +33 -3
  37. package/public/formValues.min.js +1 -1
  38. package/public/microcomponents.min.js +1 -1
  39. package/public/observables.d.ts.map +1 -1
  40. package/public/observables.js +40 -47
  41. package/public/observables.js.map +1 -1
  42. package/public/observables.min.js +1 -1
  43. package/public/observables.ts +54 -59
  44. package/public/selectors.d.ts +2 -4
  45. package/public/selectors.d.ts.map +1 -1
  46. package/public/selectors.js +2 -214
  47. package/public/selectors.js.map +1 -1
  48. package/public/selectors.min.js +1 -1
  49. package/public/selectors.ts +2 -367
  50. package/public/src/MC.d.ts +36 -0
  51. package/public/src/MC.d.ts.map +1 -0
  52. package/public/src/MC.js +348 -0
  53. package/public/src/MC.js.map +1 -0
  54. package/public/src/MC.ts +67 -143
  55. package/public/src/McEvent.d.ts +15 -0
  56. package/public/src/McEvent.d.ts.map +1 -0
  57. package/public/src/McEvent.js +71 -0
  58. package/public/src/elements.d.ts +5 -0
  59. package/public/src/elements.d.ts.map +1 -0
  60. package/public/src/elements.js +62 -0
  61. package/public/src/elements.js.map +1 -0
  62. package/public/src/elements.ts +33 -3
  63. package/public/src/formValues.d.ts +3 -0
  64. package/public/src/formValues.d.ts.map +1 -0
  65. package/public/src/formValues.js +162 -0
  66. package/public/src/helpers.d.ts +14 -0
  67. package/public/src/helpers.d.ts.map +1 -0
  68. package/public/src/helpers.js +113 -0
  69. package/public/src/microcomponents.d.ts +7 -0
  70. package/public/src/microcomponents.d.ts.map +1 -0
  71. package/public/src/microcomponents.js +8 -0
  72. package/public/src/observables.d.ts +11 -0
  73. package/public/src/observables.d.ts.map +1 -0
  74. package/public/src/observables.js +242 -0
  75. package/public/src/observables.js.map +1 -0
  76. package/public/src/observables.ts +54 -59
  77. package/public/src/selectors.d.ts +106 -0
  78. package/public/src/selectors.d.ts.map +1 -0
  79. package/public/src/selectors.js +759 -0
  80. package/public/src/selectors.js.map +1 -0
  81. package/public/src/selectors.ts +2 -367
  82. package/public/src/test/grandparent.css +11 -0
  83. package/public/src/test/test/child.d.ts +2 -0
  84. package/public/src/test/test/child.d.ts.map +1 -0
  85. package/public/src/test/test/child.js +15 -0
  86. package/public/src/test/test/child.js.map +1 -0
  87. package/public/src/test/test/child.ts +21 -0
  88. package/public/src/test/test/grandchild.d.ts +2 -0
  89. package/public/src/test/test/grandchild.d.ts.map +1 -0
  90. package/public/src/test/test/grandchild.js +15 -0
  91. package/public/src/test/test/grandchild.js.map +1 -0
  92. package/public/src/test/test/grandchild.ts +21 -0
  93. package/public/src/test/test/grandparent.d.ts +2 -0
  94. package/public/src/test/test/grandparent.d.ts.map +1 -0
  95. package/public/src/test/test/grandparent.js +1 -0
  96. package/public/src/test/test/grandparent.js.map +1 -0
  97. package/public/src/test/test/grandparent.ts +21 -0
  98. package/public/src/test/test/greatgrandchild.d.ts +2 -0
  99. package/public/src/test/test/greatgrandchild.d.ts.map +1 -0
  100. package/public/src/test/test/greatgrandchild.js +29 -0
  101. package/public/src/test/test/greatgrandchild.js.map +1 -0
  102. package/public/src/test/test/greatgrandchild.ts +42 -0
  103. package/public/src/test/test/parent.d.ts +2 -0
  104. package/public/src/test/test/parent.d.ts.map +1 -0
  105. package/public/src/test/test/parent.js +15 -0
  106. package/public/src/test/test/parent.js.map +1 -0
  107. package/public/src/test/test/parent.ts +21 -0
  108. package/public/src/test/test/testform.d.ts +2 -0
  109. package/public/src/test/test/testform.d.ts.map +1 -0
  110. package/public/src/test/test/testform.js +1 -0
  111. package/public/src/test/test/testform.js.map +1 -0
  112. package/public/src/test/test/testform.ts +155 -0
  113. package/public/src/test/test/testfunction.d.ts +3 -0
  114. package/public/src/test/test/testfunction.d.ts.map +1 -0
  115. package/public/src/test/test/testfunction.js +7 -0
  116. package/public/src/test/test/testfunction.js.map +1 -0
  117. package/public/src/test/test/testfunction.ts +12 -0
  118. package/public/src/test/test/testmc.d.ts +3 -0
  119. package/public/src/test/test/testmc.d.ts.map +1 -0
  120. package/public/src/test/test/testmc.js +10 -0
  121. package/public/src/test/test/testmc.js.map +1 -0
  122. package/public/src/test/test/testmc.ts +16 -0
  123. package/public/src/test/test/testsimpleclass.d.ts +3 -0
  124. package/public/src/test/test/testsimpleclass.d.ts.map +1 -0
  125. package/public/src/test/test/testsimpleclass.js +9 -0
  126. package/public/src/test/test/testsimpleclass.js.map +1 -0
  127. package/public/src/test/test/testsimpleclass.ts +15 -0
  128. package/public/src/test/test.d.ts +2 -0
  129. package/public/src/test/test.d.ts.map +1 -0
  130. package/public/src/test/test.js +79 -0
  131. package/public/src/test/test.js.map +1 -0
  132. package/public/src/test/test.ts +188 -0
  133. package/public/src/test/testform.css +47 -0
  134. package/public/src/test/testform.html +56 -0
  135. package/public/src/test/testform.json +27 -0
  136. package/public/test/MC.d.ts +3 -3
  137. package/public/test/MC.d.ts.map +1 -1
  138. package/public/test/MC.js +43 -74
  139. package/public/test/MC.min.js +485 -0
  140. package/public/test/MC.ts +67 -143
  141. package/public/test/elements.d.ts +1 -1
  142. package/public/test/elements.d.ts.map +1 -1
  143. package/public/test/elements.js +16 -2
  144. package/public/test/elements.min.js +1 -0
  145. package/public/test/elements.ts +33 -3
  146. package/public/test/formValues.min.js +1 -0
  147. package/public/test/grandparent.css +1 -3
  148. package/public/test/microcomponents.min.js +1 -1
  149. package/public/test/observables.d.ts.map +1 -1
  150. package/public/test/observables.js +40 -47
  151. package/public/test/observables.min.js +1 -0
  152. package/public/test/observables.ts +54 -59
  153. package/public/test/selectors.d.ts +2 -4
  154. package/public/test/selectors.d.ts.map +1 -1
  155. package/public/test/selectors.js +2 -214
  156. package/public/test/selectors.min.js +1 -0
  157. package/public/test/selectors.ts +2 -367
  158. package/public/test/test/child.ts +21 -0
  159. package/public/test/test/grandchild.ts +21 -0
  160. package/public/test/test/grandparent.js +1 -1
  161. package/public/test/test/grandparent.ts +21 -0
  162. package/public/test/test/greatgrandchild.ts +42 -0
  163. package/public/test/test/parent.ts +21 -0
  164. package/public/test/test/testform.js +1 -1
  165. package/public/test/test/testform.js.map +1 -1
  166. package/public/test/test/testform.ts +155 -0
  167. package/public/test/test/testfunction.d.ts +3 -0
  168. package/public/test/test/testfunction.d.ts.map +1 -0
  169. package/public/test/test/testfunction.js +7 -0
  170. package/public/test/test/testfunction.js.map +1 -0
  171. package/public/test/test/testfunction.ts +12 -0
  172. package/public/test/test/testmc.d.ts +2 -5
  173. package/public/test/test/testmc.d.ts.map +1 -1
  174. package/public/test/test/testmc.js +4 -4
  175. package/public/test/test/testmc.js.map +1 -1
  176. package/public/test/test/testmc.ts +16 -0
  177. package/public/test/test/testsimpleclass.d.ts +3 -0
  178. package/public/test/test/testsimpleclass.d.ts.map +1 -0
  179. package/public/test/test/testsimpleclass.js +9 -0
  180. package/public/test/test/testsimpleclass.js.map +1 -0
  181. package/public/test/test/testsimpleclass.ts +15 -0
  182. package/public/test/test.js +0 -2
  183. package/public/test/test.js.map +1 -1
  184. package/public/test/test.ts +188 -0
  185. package/public/test/testform.css +47 -0
  186. package/public/test/testform.html +56 -0
  187. package/public/test/testform.json +3 -3
  188. package/public/typedoc/assets/navigation.js +1 -1
  189. package/public/typedoc/assets/search.js +1 -1
  190. package/public/typedoc/classes/MC.DC.html +5 -5
  191. package/public/typedoc/classes/MC.MC.html +5 -5
  192. package/public/typedoc/classes/MC.McBase.html +4 -3
  193. package/public/typedoc/classes/MC.McEvent.html +2 -2
  194. package/public/typedoc/functions/MC.addListener.html +1 -1
  195. package/public/typedoc/functions/MC.autoload.html +1 -1
  196. package/public/typedoc/functions/MC.removeListener.html +1 -1
  197. package/public/typedoc/functions/elements.defineCE.html +1 -1
  198. package/public/typedoc/functions/elements.getCE.html +1 -1
  199. package/public/typedoc/functions/formValues.formValues.html +1 -1
  200. package/public/typedoc/functions/observables.observe.html +1 -1
  201. package/public/typedoc/functions/selectors._d.html +1 -0
  202. package/public/typedoc/functions/selectors._t.html +1 -0
  203. package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
  204. package/public/typedoc/interfaces/selectors.DSelector.html +48 -0
  205. package/public/typedoc/interfaces/selectors.TSelector.html +34 -0
  206. package/public/typedoc/modules/MC.html +1 -1
  207. package/public/typedoc/modules/elements.html +1 -1
  208. package/public/typedoc/modules/formValues.html +1 -1
  209. package/public/typedoc/modules/observables.html +1 -1
  210. package/public/typedoc/modules/selectors.html +7 -0
  211. package/public/typedoc/modules.html +1 -0
  212. package/public/typedoc/types/observables.Observable.html +1 -1
  213. package/public/typedoc/types/selectors.selection.html +1 -0
  214. package/public/typedoc/types/selectors.singleSelector.html +1 -0
  215. package/src/MC.ts +67 -143
  216. package/src/elements.ts +33 -3
  217. package/src/observables.ts +54 -59
  218. package/src/selectors.ts +2 -367
  219. package/src/test/test/testform.ts +7 -3
  220. package/src/test/test/testfunction.ts +12 -0
  221. package/src/test/test/testmc.ts +13 -9
  222. package/src/test/test/testsimpleclass.ts +15 -0
  223. package/src/test/test.ts +0 -12
  224. package/tasks.md +36 -0
  225. package/typedoc.json +1 -1
  226. package/public/test/MC.js.map +0 -1
  227. package/public/test/elements.js.map +0 -1
  228. package/public/test/observables.js.map +0 -1
  229. package/public/test/selectors.js.map +0 -1
  230. /package/public/{test → src}/McEvent.js.map +0 -0
  231. /package/public/{test → src}/formValues.js.map +0 -0
  232. /package/public/{test → src}/helpers.js.map +0 -0
  233. /package/public/{test → src}/microcomponents.js.map +0 -0
@@ -15,167 +15,6 @@ const words = (classes) => {
15
15
  classes = Array.from(classSet);
16
16
  return classes;
17
17
  };
18
- const getInputName = (e) => {
19
- let ret = e instanceof HTMLInputElement
20
- ? 'input'
21
- : e instanceof HTMLSelectElement
22
- ? 'select'
23
- : e instanceof HTMLTextAreaElement
24
- ? 'textarea'
25
- : '';
26
- return ret;
27
- };
28
- const getInputHandlers = (e) => {
29
- let inputList = $d('input,select,textarea', e).array, handlers = {};
30
- inputList.forEach((i) => {
31
- const name = i.getAttribute('name') || 'undefined';
32
- if (name) {
33
- let h;
34
- switch (getInputName(i)) {
35
- case 'input':
36
- h = new InputHandler(i, e);
37
- Object.defineProperty(handlers, name, {
38
- enumerable: true,
39
- configurable: true,
40
- get: () => { return h.val; },
41
- set: (value) => { h.val = value; }
42
- });
43
- break;
44
- case 'select':
45
- h = new SelectHandler(i);
46
- Object.defineProperty(handlers, name, {
47
- enumerable: true,
48
- configurable: true,
49
- get: () => { return h.val; },
50
- set: (value) => { h.val = value; }
51
- });
52
- break;
53
- case 'textarea':
54
- h = new TextAreaHandler(i);
55
- Object.defineProperty(handlers, name, {
56
- enumerable: true,
57
- configurable: true,
58
- get: () => { return h.val; },
59
- set: (value) => { h.val = value; }
60
- });
61
- break;
62
- default:
63
- console.warn('handler missing:', name, 'for', i);
64
- break;
65
- }
66
- }
67
- });
68
- return handlers;
69
- };
70
- class InputBase {
71
- constructor(e) {
72
- }
73
- }
74
- class InputHandler extends InputBase {
75
- #e;
76
- #type;
77
- #radioBase;
78
- constructor(e, radioBase) {
79
- super(e);
80
- this.#e = e;
81
- this.#type = e.type;
82
- this.#radioBase = radioBase;
83
- }
84
- get val() {
85
- let that = this, type = that.#type, ret;
86
- switch (type) {
87
- case 'radio':
88
- const check = $d(`input[type="radio"][name="${this.#e.getAttribute('name')}"]`, this.#radioBase)
89
- .filter(e => e.checked);
90
- if (!check.length)
91
- return '';
92
- ret = check.array[0];
93
- return ret.value;
94
- case 'checkbox':
95
- return that.#e.checked;
96
- default:
97
- return that.#e.value;
98
- break;
99
- }
100
- return '';
101
- }
102
- set val(value) {
103
- let that = this, type = that.#type, ret;
104
- switch (type) {
105
- case 'radio':
106
- const selection = `input[type="radio"][name="${this.#e.getAttribute('name')}"]`, radios = $d(selection, this.#radioBase);
107
- if (!radios.length)
108
- return;
109
- if (value === '') {
110
- radios.forEach(r => { if (r.checked)
111
- r.checked = false; });
112
- return;
113
- }
114
- const setRadioElement = radios.filter(r => r.getAttribute('value') === value);
115
- if (!setRadioElement.length)
116
- return;
117
- setRadioElement.array[0].checked = true;
118
- return;
119
- break;
120
- case 'checkbox':
121
- that.#e.checked = value;
122
- break;
123
- default:
124
- that.#e.value = value;
125
- break;
126
- }
127
- return;
128
- }
129
- }
130
- class SelectHandler extends InputBase {
131
- #e;
132
- #multi = false;
133
- constructor(e) {
134
- super(e);
135
- this.#e = e;
136
- this.#multi = e.type === 'select-multiple';
137
- }
138
- get val() {
139
- const that = this, ret = [];
140
- const options = $d(that.#e.querySelectorAll('option'))
141
- .filter(o => o.selected)
142
- .forEach(o => { if (o.selected)
143
- ret.push(o.value); });
144
- if (this.#multi)
145
- return ret;
146
- return ret.length ? ret[0] : '';
147
- }
148
- set val(value) {
149
- const that = this;
150
- value = typeof value === 'string' ? [value] : value;
151
- const options = $d(that.#e.querySelectorAll('option'))
152
- .forEach(o => {
153
- if (value.indexOf(o.value) > -1) {
154
- o.setAttribute('selected', true);
155
- o.selected = true;
156
- }
157
- else {
158
- o.removeAttribute('selected');
159
- o.selected = false;
160
- }
161
- });
162
- return;
163
- }
164
- }
165
- class TextAreaHandler extends InputBase {
166
- #e;
167
- constructor(e) {
168
- super(e);
169
- this.#e = e;
170
- }
171
- get val() {
172
- return this.#e.value;
173
- }
174
- set val(value) {
175
- this.#e.value = value;
176
- return;
177
- }
178
- }
179
18
  class DomSelector {
180
19
  #set = new Set();
181
20
  get set() {
@@ -473,7 +312,7 @@ class DomSelector {
473
312
  }
474
313
  return that;
475
314
  }
476
- parents(selection, rootNode) {
315
+ ancestors(selection, rootNode) {
477
316
  let that = this, set = new Set();
478
317
  that.#set.forEach((e) => {
479
318
  let current = e;
@@ -560,57 +399,6 @@ class DomSelector {
560
399
  });
561
400
  return that;
562
401
  }
563
- val(p1, p2) {
564
- if (!this.length)
565
- return this;
566
- const that = this;
567
- let result, handlers = getInputHandlers(that.array[0]);
568
- if (!p1) {
569
- result = Object.assign({}, handlers);
570
- }
571
- else {
572
- if (isObject(p1)) {
573
- Object.assign(handlers, p1);
574
- result = that;
575
- }
576
- else if (typeof p1 === 'string') {
577
- if (p2 === undefined) {
578
- result = handlers[p1];
579
- }
580
- else {
581
- handlers[p1] = p2;
582
- result = that;
583
- }
584
- }
585
- }
586
- return result;
587
- }
588
- values(values) {
589
- const that = this, holder = {};
590
- let data = {};
591
- if (!that.length) {
592
- console.warn('no dom selection to search inputs in');
593
- return {};
594
- }
595
- let handlers = getInputHandlers(that.array[0]);
596
- Object.keys(handlers).forEach((key) => {
597
- data[key] = handlers[key];
598
- });
599
- if (Object.keys(data).length === 0) {
600
- console.warn('no inputs in this dom selection', that.array[0], data);
601
- }
602
- if (values) {
603
- Object
604
- .keys(values)
605
- .forEach(key => {
606
- if (handlers.hasOwnProperty(key)) {
607
- console.log('key found', key);
608
- handlers[key] = values[key];
609
- }
610
- });
611
- }
612
- return structuredClone(Object.assign(handlers));
613
- }
614
402
  at(index) {
615
403
  return $d(this.array.at(index));
616
404
  }
@@ -851,7 +639,7 @@ class TbSelector {
851
639
  that.#set = set;
852
640
  return that;
853
641
  }
854
- parents(nameSpace) {
642
+ ancestors(nameSpace) {
855
643
  let that = this, set = new Set();
856
644
  that.#set.forEach((e) => {
857
645
  e.parents(nameSpace).forEach((tb) => {
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.selectors=t():e.selectors=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{$d:()=>f,$t:()=>d});var r=new Function("try {return this===window;}catch(e){ return false;}");let n=new Set;r()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>n.add(e)));var a=new Function("try {return this===window;}catch(e){ return false;}");let s=new Set;function i(e,t,r,n=!1,a=!1){let s={once:!1};n&&(s.capture=n),a&&(s.once=a),e.addEventListener(t,r,s)}function o(e,t,r){e.removeEventListener(t,r)}a()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>s.add(e))),new Set;const h=e=>{let t=new Set;return e.forEach((e=>{(e=e.trim()).split(" ").forEach((e=>{""!==e&&t.add(e)}))})),Array.from(t)};class c{#e=new Set;get set(){return this.#e}get array(){return Array.from(this.#e)}set set(e){this.#e=e}get length(){return this.#e.size}constructor(e,t=document.body){if(new Set,!e)return this}$t(e){let t=new l;return this.#e.forEach((e=>{e._mc&&Object.values(e._mc).forEach((e=>{t.set.add(e)}))})),e&&t.filter((t=>t.nameSpace===e)),t}add(e,t){let r=this;return f(e,t).forEach((e=>{r.#e.add(e)})),r}addClass(...e){return e=h(e),this.forEach((t=>{t.classList.add(...e)})),this}after(e,t){let r=this,n=f(e,t);return n.length?(n.first().forEach((e=>{r.array.reverse().forEach((t=>{t.after(e)}))})),r):r}append(e,t){let r=this.array[0],n=f(e,t);return r&&n.forEach((e=>{r.append(e)})),this}appendTo(e,t){let r=f(e,t).array[0];return r&&this.forEach((e=>{r.append(e)})),this}attr(e,t){let r=this,n={};return r.length?arguments.length?"string"==typeof e?void 0===t?[...r.set][0].getAttribute(e):null===t?([...r.set].forEach((t=>{t.removeAttribute(e)})),r):("object"==typeof t&&(t=JSON.stringify(t)),[...r.set].forEach((r=>{r.setAttribute(e,t)})),r):"object"==typeof e?([...r.set].forEach((t=>{Object.keys(e).forEach((r=>{f(t).attr(r,e.key)}))})),r):r:(Array.from([...r.set][0].attributes).forEach((e=>{n[e.name]=e.value})),n):r}before(e,t){let r=this,n=f(e,t);return n.length?(n.first().forEach((e=>{r.forEach((t=>{t.before(e)}))})),r):r}children(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{Array.from(e.children).forEach((e=>{n.add(e)}))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}descendants(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{e.querySelectorAll("*").forEach((e=>{n.add(e)}))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}empty(){return this.filter((e=>!1))}first(e,t){let r=this,n=new Set,a=!1;return e&&(a=f(e,t)),r.#e.forEach((e=>{e.parentNode&&n.add(e.parentNode.children[0])})),r=f([...n]),e&&r.filter((e=>a.has(e))),r}has(e){return this.#e.has(e)}hasClass(...e){return e=h(e),this.every((e=>Array.from(e.classList).every((t=>e.contains(t)))))}html(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerHTML=e:(()=>{console.warn("Cannot access the .innerHTML of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerHTML}last(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;t&&n.add(Array.from(t).at(-1))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}next(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),a=r.indexOf(e)+1;a<r.length&&n.add(r.at(a))}})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}normalize(){return this.#e.forEach((e=>{e.normalize()})),this}off(e,t){let r=e.indexOf(" ")>-1?e.split(" "):[e];return this.array.forEach((e=>{r.forEach((function(r){o(e,r,t)}))})),this}on(e,t,r=!1,n=!1){let a=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function o(){o.cb.apply(a,Array.from(arguments))}return o.cb=t,a.forEach((e=>{s.forEach((function(t){i(e,t,o,r,n)}))})),o}one(e,t,r=!1){let n=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(n,Array.from(arguments))}return s.cb=t,n.forEach((e=>{a.forEach((function(t){i(e,t,s,r,!0)}))})),s}parent(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{e.parentNode&&"HTML"!==e.parentNode.tagName&&n.add(e.parentNode)})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}ancestors(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e;for(;t.parentNode&&"HTML"!==t.parentNode.tagName;)t=t.parentNode,n.add(t)})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}prepend(e,t){let r=this.array[0],n=f(e,t);return r&&n.forEach((e=>{r.prepend(e)})),this}prev(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),a=r.indexOf(e)-1;a>-1&&n.add(r.at(a))}})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}removeClass(...e){return e=h(e),this.forEach((t=>{t.classList.remove(...e)})),this}text(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerText=e:(()=>{console.warn("Cannot access the .textContent of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerText??""}toggleClass(...e){return e=h(e),this.forEach((t=>{t.classList.toggle(...e)})),this}trigger(e,t={},r=!1,n=!1,a=!1){let s,i={bubbles:r,cancelable:n,composed:a},o=e.indexOf(" ")>-1?e.split(" "):[e];return this.#e.forEach((e=>{o.forEach((function(r){s=new Event(r,i),s.data=t,e.dispatchEvent(s)}))})),this}at(e){return f(this.array.at(e))}concat(e){let t=this;return(e instanceof c?e.array:e).forEach((e=>{t.#e.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return this.#e=new Set(this.array.filter(e,t)),this}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e,0)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){return this.array.pop()}push(...e){return e.forEach((e=>{this.#e.add(e)})),this}shift(){let e=this,t=e.#e.size?e.array[0]:void 0;return t&&e.#e.delete(t),t}slice(e,t){return f(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array;return n.splice(e,t,...r),f(n)}}class l{#e=new Set;get set(){return this.#e}get array(){return Array.from(this.#e)}set set(e){this.#e=e}get length(){return this.#e.size}set length(e){}constructor(e,t=document.body){if(!e)return this;f(e,t).forEach((e=>{d(e).forEach((e=>{this.#e.add(e)}))}))}$d(e,t=document.body){let r=new c,n=new Set,a=!!e||!1,s=new Set;return a&&(s=f(e,t).set),this.#e.forEach((e=>{a&&!s.has(e._tg)||n.add(e._tg)})),r.set=n,r}children(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.children(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}descendants(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.descendants(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}first(e){let t=this,r=new Set;return t.#e.forEach((e=>{e.parent().children().$d().first().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}has(e){return this.#e.has(e)}last(e){let t=this,r=new Set;return t.#e.forEach((e=>{e.parent().children().$d().last().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}next(e){let t=this,r=new Set;return t.#e.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.nextElementSibling;)t=t.nextElementSibling,n.add(t);d([...n]).$d().first().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}ns(e){return this.filter((t=>t.nameSpace===e))}off(e,t){let r=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];return this.$d().array.forEach((e=>{r.forEach((function(r){o(e,`[TB]${r}`,t)}))})),this}on(e,t,r=!1){let n=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(n,Array.from(arguments))}return s.cb=t,n.forEach((e=>{a.forEach((function(t){i(e._tg,`[TB]${t}`,s,!1,r)}))})),s}one(e,t){let r=this,n=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(r,Array.from(arguments))}return a.cb=t,r.forEach((e=>{n.forEach((function(t){i(e._tg,`[TB]${t}`,a,!1,!0)}))})),a}parent(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.parent(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}ancestors(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.parents(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}prev(e){let t=this,r=new Set;return t.#e.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.previousElementSibling;)t=t.previousElementSibling,n.add(t);d([...n]).$d().last().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}trigger(e,t={},r="l"){return this.forEach((n=>{n.trigger(e,t,r)})),this}at(e){return d(this.array.at(e))}concat(e){let t=this;return e.forEach((e=>{t.#e.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return d(this.array.filter(e,t))}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){let e=this.array,t=e.pop();return this.#e=new Set(e),t}push(e){return this.#e.add(e),this}shift(){let e=this.array.shift();return this.#e.delete(e),e}slice(e,t){return d(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array.splice(e,t,...r);return d(n)}}const f=(e,t=document)=>{let r=new Set;return e instanceof Array?(e.forEach((e=>{f(e,t).forEach((e=>{r.add(e)}))})),new c([...r])):new c(e,t)},d=(e,t=document)=>f(e,t).$t();return t})()));
@@ -29,249 +29,6 @@ const words = ( classes: Array<string> ): Array<string> => {
29
29
  return classes;
30
30
  }
31
31
 
32
- type inputTypes = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
33
-
34
- const getInputName = ( e: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement ): string => {
35
-
36
- let ret = e instanceof HTMLInputElement
37
- ? 'input'
38
- : e instanceof HTMLSelectElement
39
- ? 'select'
40
- : e instanceof HTMLTextAreaElement
41
- ? 'textarea'
42
- : ''
43
- ;
44
-
45
- return ret;
46
- }
47
-
48
-
49
- const getInputHandlers = ( e: HTMLElement | ShadowRoot ): LooseObject => {
50
-
51
- let
52
- //inputList = ( Array.from( e.querySelectorAll('*') ) as HTMLElement[] ).filter( i => isInputElement(i) ),
53
- inputList = $d('input,select,textarea', e).array,
54
- handlers: LooseObject = {};
55
-
56
- inputList.forEach( (i) => {
57
- const
58
- name: string = ( i as inputTypes ).getAttribute('name') || 'undefined';
59
-
60
- if ( name ){
61
- let h: InputBase;
62
- switch ( getInputName( i as inputTypes ) ){
63
- case 'input':
64
- //console.log( i, 'is HTMLInputElement');
65
- h = new InputHandler( i as HTMLInputElement, e ); // e = element to search radios in = radioBase
66
- Object.defineProperty( handlers, name, {
67
- enumerable: true,
68
- configurable: true,
69
- get: (): any => { return h.val },
70
- set: ( value: any ) => { h.val = value }
71
- });
72
- break;
73
- case 'select':
74
- //console.log( i, 'is HTMLSelectElement');
75
- h = new SelectHandler( i as HTMLSelectElement );
76
- Object.defineProperty( handlers, name, {
77
- enumerable: true,
78
- configurable: true,
79
- get: (): any => { return h.val },
80
- set: ( value: any ) => { h.val = value }
81
- });
82
- break;
83
- case 'textarea':
84
- //console.log( i, 'is HTMLTextAreaElement');
85
- h = new TextAreaHandler( i as HTMLTextAreaElement );
86
- Object.defineProperty( handlers, name, {
87
- enumerable: true,
88
- configurable: true,
89
- get: (): any => { return h.val },
90
- set: ( value: any ) => { h.val = value }
91
- });
92
- break;
93
- default:
94
- console.warn('handler missing:', name, 'for', i);
95
- break;
96
- }
97
- }
98
- });
99
-
100
- return handlers;
101
- }
102
-
103
- abstract class InputBase{
104
- constructor( e: any ){
105
- }
106
-
107
- abstract get val(): any;
108
-
109
- abstract set val( value: any );
110
-
111
- }
112
-
113
- class InputHandler extends InputBase {
114
-
115
- #e: HTMLInputElement;
116
- #type: string;
117
- #radioBase: any;
118
-
119
- constructor( e: HTMLInputElement, radioBase?: HTMLElement | ShadowRoot ){
120
- super( e );
121
- this.#e = e;
122
- this.#type = e.type;
123
- this.#radioBase = radioBase;
124
- }
125
-
126
- get val(): any{
127
- let that = this,
128
- type = that.#type,
129
- ret: any;
130
-
131
- switch (type){
132
- case 'radio':
133
- const check = $d( `input[type="radio"][name="${ this.#e.getAttribute('name') }"]`, this.#radioBase )
134
- .filter( e => e.checked );
135
- if ( !check.length ) return '';
136
- ret = check.array[0];
137
- return ret.value;
138
- case 'checkbox':
139
- return that.#e.checked;
140
- default:
141
- return that.#e.value;
142
- break;
143
- }
144
-
145
- return '';
146
- }
147
-
148
- set val( value: any ){
149
- let that = this,
150
- type = that.#type,
151
- ret: any;
152
-
153
- switch (type){
154
- case 'radio':
155
- const
156
- selection = `input[type="radio"][name="${ this.#e.getAttribute('name') }"]`,
157
- radios = $d( selection, this.#radioBase );
158
-
159
- // console.log('set radios', selection, this.#radioBase, radios.array );
160
-
161
- if ( !radios.length ) return;
162
-
163
- if ( value === '' ){ // uncheck all
164
- radios.forEach( r => { if (r.checked) r.checked = false } );
165
- //console.log('unset all radios', radios.array );
166
- return;
167
- }
168
-
169
- const setRadioElement = radios.filter( r => r.getAttribute('value') === value );
170
-
171
- if ( !setRadioElement.length ) return;
172
-
173
- // console.log('set this radio', setRadioElement.array );
174
-
175
- (setRadioElement.array[0] as HTMLInputElement).checked = true;
176
-
177
- // console.log('done', setRadioElement.array );
178
- return;
179
- break;
180
- case 'checkbox':
181
- that.#e.checked = value;
182
- break;
183
- default:
184
- that.#e.value = value;
185
- break;
186
- }
187
-
188
- return;
189
- }
190
-
191
- }
192
-
193
- class SelectHandler extends InputBase {
194
-
195
- #e: HTMLSelectElement;
196
- #multi: boolean = false;
197
-
198
- constructor( e: HTMLSelectElement ){
199
- super( e );
200
- this.#e = e;
201
- this.#multi = e.type === 'select-multiple';
202
- }
203
-
204
- get val(): string[] | string{
205
- const
206
- that = this,
207
- ret: string[] = [];
208
-
209
- // get all options
210
- const options = $d( that.#e.querySelectorAll('option') )
211
- .filter( o => o.selected )
212
- .forEach( o => { if ( o.selected ) ret.push( o.value ) } );
213
-
214
- if ( this.#multi ) return ret;
215
- return ret.length ? ret[0] : '';
216
- }
217
-
218
- set val( value: string[] | string ){
219
- const
220
- that = this;
221
-
222
- value = typeof value === 'string' ? [ value ] : value;
223
-
224
- //console.log('set values', value );
225
-
226
- // set all options
227
- const options = $d( that.#e.querySelectorAll('option') )
228
- .forEach( o => {
229
- if ( value.indexOf( o.value ) > -1 ) {
230
- o.setAttribute( 'selected', true )
231
- o.selected = true;
232
- } else {
233
- o.removeAttribute( 'selected' )
234
- o.selected = false;
235
- }
236
- });
237
-
238
- /*
239
- if (pOption.selected) {
240
- if (
241
- !pOption.disabled &&
242
- (!pOption.parentNode.disabled ||
243
- pOption.parentNode.nodeName !==
244
- 'optgroup')
245
- ) {
246
- var value = pOption.value;
247
-
248
- ret.push(value);
249
- }
250
- }
251
- */
252
- return;
253
- }
254
-
255
- }
256
-
257
- class TextAreaHandler extends InputBase {
258
- #e: HTMLTextAreaElement
259
- constructor( e: HTMLTextAreaElement ){
260
- super(e);
261
- this.#e = e;
262
- }
263
-
264
- get val(): string{
265
- return this.#e.value;
266
- }
267
-
268
- set val( value: string ){
269
- this.#e.value = value;
270
- return;
271
- }
272
-
273
- }
274
-
275
32
  /*
276
33
  selector classes
277
34
  */
@@ -303,28 +60,9 @@ class DomSelector{
303
60
  that = this,
304
61
  undefinedTags: Set<any> = new Set();
305
62
 
306
- // // console.log('DomSelector constructor', ...arguments);
307
-
308
63
  if ( !selection ) {
309
64
  return that;
310
65
  }
311
-
312
- /* autoloading disabled !
313
- if ( selection instanceof Array ){
314
- selection.forEach( (select) => {
315
- _getElementList( select, element ).forEach( (e) => {
316
- if ( e.localName?.indexOf('-') !== -1 || e.getAttribute?.('is') ) _loadRequirements( e );
317
- that.#set.add( e );
318
- });
319
- });
320
- } else {
321
- _getElementList( selection, element ).forEach( (e) => {
322
- if ( e.localName?.indexOf('-') !== -1 || e.getAttribute?.('is') ) _loadRequirements( e );
323
- that.#set.add( e );
324
- });
325
- }
326
- */
327
-
328
66
  }
329
67
 
330
68
  $t( nameSpace?: string ): TSelector {
@@ -652,20 +390,6 @@ class DomSelector{
652
390
  return that;
653
391
  }
654
392
 
655
- /*
656
- load(): DSelector{
657
- let that = this;
658
-
659
- if( !that.length ){
660
- that.add( document.body );
661
- }
662
-
663
- that.forEach( e => _loadRequirements( e ) );
664
-
665
- return that;
666
- }
667
- */
668
-
669
393
  next( selection?: selection, rootNode?: HTMLElement ): DSelector{
670
394
  let
671
395
  that: DomSelector = this,
@@ -805,7 +529,7 @@ class DomSelector{
805
529
  return that;
806
530
  }
807
531
 
808
- parents( selection?: selection, rootNode?: HTMLElement ): DSelector {
532
+ ancestors( selection?: selection, rootNode?: HTMLElement ): DSelector {
809
533
  let
810
534
  that: DomSelector = this,
811
535
  set: Set<HTMLElement> = new Set()
@@ -948,95 +672,6 @@ class DomSelector{
948
672
  return that;
949
673
  }
950
674
 
951
- // INFO:
952
- // val(): LooseObject; // no param: get all as LooseObject
953
- // val( p1: string ): Array<string> | number | string; // get from input name
954
- // val( p1: object ): DomSelector; // set from object
955
- // val( p1: string, p2: any ): DomSelector; // set from name and value
956
- val( p1?: any, p2?: any ): any {
957
-
958
- if ( !this.length ) return this;
959
-
960
- const
961
- that = this
962
- ;
963
-
964
- let result: any,
965
- handlers: LooseObject = getInputHandlers( that.array[0] );
966
-
967
- // work with it
968
- if ( !p1 ){ // get all inputs as LooseObject
969
- result = Object.assign( {}, handlers );
970
- // Object.keys( handlers ).forEach( ( key ) => result[key] = handlers.hasOwnProperty(key) ? handlers[key].val : undefined );
971
- } else {
972
- if ( isObject(p1) ){ // set inputs from Object
973
- Object.assign( handlers, p1 );
974
- // Object.keys( p1 ).forEach( ( key ) => !!handlers[key] ? handlers[key].val = p1[key] : false );
975
- result = that;
976
- } else if ( typeof p1 === 'string' ){
977
- if ( p2 === undefined ){ // get a single input
978
- result = handlers[p1];
979
- } else { // set a single input
980
- handlers[p1] = p2;
981
- result = that;
982
- }
983
- }
984
- }
985
-
986
- return result;
987
- }
988
-
989
- values( values?: LooseObject ): LooseObject {
990
- const
991
- that = this,
992
- holder: LooseObject = {};
993
-
994
- let
995
- data: LooseObject = {};
996
-
997
- //console.log( '$d().values()', values );
998
-
999
- if ( !that.length ) {
1000
- console.warn('no dom selection to search inputs in');
1001
- return {};
1002
- }
1003
-
1004
- let handlers = getInputHandlers( that.array[0] );
1005
-
1006
- //console.log( 'handlers', Object.keys(handlers), handlers['cb1'] );
1007
-
1008
- // let values = that.val();
1009
-
1010
- // console.log( 'values', values );
1011
-
1012
- Object.keys( handlers ).forEach( (key: string) => {
1013
- //console.log(key);
1014
- data[key] = handlers[key];
1015
- });
1016
-
1017
- // data = Object.assign( {}, that.val() )
1018
- //console.log( 'data', that.array[0], data, Object.keys( data ) );
1019
-
1020
- if ( Object.keys( data ).length === 0 ) {
1021
- console.warn('no inputs in this dom selection', that.array[0], data );
1022
- }
1023
-
1024
- //console.log( '$d val()', data );
1025
- if (values) {
1026
- Object
1027
- .keys( values )
1028
- .forEach( key => {
1029
- if ( handlers.hasOwnProperty(key) ) {
1030
- console.log( 'key found', key );
1031
- handlers[key] = values[key];
1032
- }
1033
- });
1034
- // .forEach( key => handlers[key] = values[key] )
1035
- }
1036
-
1037
- return structuredClone( Object.assign( handlers ) );
1038
- }
1039
-
1040
675
  /*
1041
676
  array method mapping
1042
677
  */
@@ -1434,7 +1069,7 @@ class TbSelector{
1434
1069
  return that;
1435
1070
  }
1436
1071
 
1437
- parents( nameSpace?: string ): TSelector {
1072
+ ancestors( nameSpace?: string ): TSelector {
1438
1073
 
1439
1074
  let
1440
1075
  that: TbSelector = this,
@@ -0,0 +1,21 @@
1
+ import { DC, defineCE, getCE } from './../../microcomponents.js';
2
+ import { Grandchild } from './grandchild.js';
3
+ defineCE(
4
+ 'test-child',
5
+
6
+ class TestChild extends DC {
7
+ constructor(target: HTMLElement) {
8
+ super(target);
9
+ }
10
+
11
+ onConnected() {
12
+ let that = this;
13
+
14
+ for (let x = 0; x < 10; x++) {
15
+ that.target.append(new Grandchild!());
16
+ }
17
+ }
18
+ }
19
+ );
20
+
21
+ export const Child = getCE('test-child');