@twobirds/microcomponents 0.1.1 → 0.1.2

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 (324) hide show
  1. package/dist/MC.min.js +33 -52
  2. package/dist/elements.min.js +1 -1
  3. package/dist/formValues.min.js +1 -1
  4. package/dist/microcomponents.min.js +1 -1
  5. package/dist/observables.min.js +1 -1
  6. package/package.json +11 -2
  7. package/.gitlab-ci.yml +0 -18
  8. package/.vscode/settings.json +0 -3
  9. package/MicroComponents.svg +0 -15
  10. package/assets/documentation/MC.md +0 -547
  11. package/assets/documentation/MicroComponents.svg +0 -15
  12. package/assets/documentation/ajaxian-1.png +0 -0
  13. package/assets/documentation/ajaxian-2.png +0 -0
  14. package/assets/documentation/ajaxian-3.png +0 -0
  15. package/assets/documentation/elements.md +0 -277
  16. package/assets/documentation/formvalues.md +0 -25
  17. package/assets/documentation/functional_requirements.md +0 -8
  18. package/assets/documentation/history.md +0 -436
  19. package/assets/documentation/klemmstein.png +0 -0
  20. package/assets/documentation/magic.md +0 -29
  21. package/assets/documentation/observables.md +0 -187
  22. package/assets/documentation/rnd0023-1.jpg +0 -0
  23. package/assets/documentation/rnd0023-2.jpg +0 -0
  24. package/assets/documentation/rnd0023-3.jpg +0 -0
  25. package/assets/documentation/tB_react.md +0 -207
  26. package/assets/documentation/usage.md +0 -142
  27. package/assets/documentation/why.md +0 -25
  28. package/assets/fiddle/MicroComponents.svg +0 -15
  29. package/assets/fiddle/fiddle.css +0 -0
  30. package/assets/fiddle/fiddle.js +0 -0
  31. package/assets/fiddle/index.html +0 -0
  32. package/assets/test/MicroComponents.svg +0 -15
  33. package/assets/test/grandparent.css +0 -16
  34. package/assets/test/myButton.css +0 -19
  35. package/assets/test/style.css +0 -8
  36. package/assets/test/test.html +0 -29
  37. package/assets/test/testform.json +0 -27
  38. package/public/.nojekyll +0 -1
  39. package/public/MC.d.ts +0 -39
  40. package/public/MC.d.ts.map +0 -1
  41. package/public/MC.js +0 -287
  42. package/public/MC.js.map +0 -1
  43. package/public/MC.min.js +0 -348
  44. package/public/MC.ts +0 -431
  45. package/public/MicroComponents.svg +0 -15
  46. package/public/documentation/MC.md +0 -547
  47. package/public/documentation/MicroComponents.svg +0 -15
  48. package/public/documentation/ajaxian-1.png +0 -0
  49. package/public/documentation/ajaxian-2.png +0 -0
  50. package/public/documentation/ajaxian-3.png +0 -0
  51. package/public/documentation/elements.md +0 -277
  52. package/public/documentation/formvalues.md +0 -25
  53. package/public/documentation/functional_requirements.md +0 -8
  54. package/public/documentation/history.md +0 -436
  55. package/public/documentation/klemmstein.png +0 -0
  56. package/public/documentation/magic.md +0 -29
  57. package/public/documentation/observables.md +0 -187
  58. package/public/documentation/rnd0023-1.jpg +0 -0
  59. package/public/documentation/rnd0023-2.jpg +0 -0
  60. package/public/documentation/rnd0023-3.jpg +0 -0
  61. package/public/documentation/tB_react.md +0 -207
  62. package/public/documentation/usage.md +0 -142
  63. package/public/documentation/why.md +0 -25
  64. package/public/elements.d.ts +0 -5
  65. package/public/elements.d.ts.map +0 -1
  66. package/public/elements.js +0 -68
  67. package/public/elements.js.map +0 -1
  68. package/public/elements.min.js +0 -1
  69. package/public/elements.ts +0 -119
  70. package/public/fiddle/MicroComponents.svg +0 -15
  71. package/public/fiddle/fiddle.css +0 -0
  72. package/public/fiddle/fiddle.js +0 -0
  73. package/public/fiddle/index.html +0 -0
  74. package/public/formValues.d.ts +0 -3
  75. package/public/formValues.d.ts.map +0 -1
  76. package/public/formValues.js +0 -162
  77. package/public/formValues.js.map +0 -1
  78. package/public/formValues.min.js +0 -1
  79. package/public/formValues.ts +0 -225
  80. package/public/helpers.d.ts +0 -14
  81. package/public/helpers.d.ts.map +0 -1
  82. package/public/helpers.js +0 -113
  83. package/public/helpers.js.map +0 -1
  84. package/public/helpers.ts +0 -149
  85. package/public/microcomponents.d.ts +0 -6
  86. package/public/microcomponents.d.ts.map +0 -1
  87. package/public/microcomponents.js +0 -7
  88. package/public/microcomponents.js.map +0 -1
  89. package/public/microcomponents.min.js +0 -1
  90. package/public/microcomponents.ts +0 -8
  91. package/public/observables.d.ts +0 -11
  92. package/public/observables.d.ts.map +0 -1
  93. package/public/observables.js +0 -244
  94. package/public/observables.js.map +0 -1
  95. package/public/observables.min.js +0 -1
  96. package/public/observables.ts +0 -416
  97. package/public/selectors._ts +0 -1269
  98. package/public/src/MC.d.ts +0 -39
  99. package/public/src/MC.d.ts.map +0 -1
  100. package/public/src/MC.js +0 -287
  101. package/public/src/MC.js.map +0 -1
  102. package/public/src/MC.ts +0 -431
  103. package/public/src/elements.d.ts +0 -5
  104. package/public/src/elements.d.ts.map +0 -1
  105. package/public/src/elements.js +0 -68
  106. package/public/src/elements.js.map +0 -1
  107. package/public/src/elements.ts +0 -119
  108. package/public/src/formValues.d.ts +0 -3
  109. package/public/src/formValues.d.ts.map +0 -1
  110. package/public/src/formValues.js +0 -162
  111. package/public/src/formValues.js.map +0 -1
  112. package/public/src/formValues.ts +0 -225
  113. package/public/src/helpers.d.ts +0 -14
  114. package/public/src/helpers.d.ts.map +0 -1
  115. package/public/src/helpers.js +0 -113
  116. package/public/src/helpers.js.map +0 -1
  117. package/public/src/helpers.ts +0 -149
  118. package/public/src/microcomponents.d.ts +0 -6
  119. package/public/src/microcomponents.d.ts.map +0 -1
  120. package/public/src/microcomponents.js +0 -7
  121. package/public/src/microcomponents.js.map +0 -1
  122. package/public/src/microcomponents.ts +0 -8
  123. package/public/src/observables.d.ts +0 -11
  124. package/public/src/observables.d.ts.map +0 -1
  125. package/public/src/observables.js +0 -244
  126. package/public/src/observables.js.map +0 -1
  127. package/public/src/observables.ts +0 -416
  128. package/public/src/selectors._ts +0 -1269
  129. package/public/src/test/grandparent.css +0 -14
  130. package/public/src/test/test/child.d.ts +0 -2
  131. package/public/src/test/test/child.d.ts.map +0 -1
  132. package/public/src/test/test/child.js +0 -26
  133. package/public/src/test/test/child.js.map +0 -1
  134. package/public/src/test/test/child.ts +0 -36
  135. package/public/src/test/test/grandchild.d.ts +0 -2
  136. package/public/src/test/test/grandchild.d.ts.map +0 -1
  137. package/public/src/test/test/grandchild.js +0 -22
  138. package/public/src/test/test/grandchild.js.map +0 -1
  139. package/public/src/test/test/grandchild.ts +0 -31
  140. package/public/src/test/test/grandparent.d.ts +0 -2
  141. package/public/src/test/test/grandparent.d.ts.map +0 -1
  142. package/public/src/test/test/grandparent.js +0 -1
  143. package/public/src/test/test/grandparent.js.map +0 -1
  144. package/public/src/test/test/grandparent.ts +0 -43
  145. package/public/src/test/test/greatgrandchild.d.ts +0 -2
  146. package/public/src/test/test/greatgrandchild.d.ts.map +0 -1
  147. package/public/src/test/test/greatgrandchild.js +0 -36
  148. package/public/src/test/test/greatgrandchild.js.map +0 -1
  149. package/public/src/test/test/greatgrandchild.ts +0 -51
  150. package/public/src/test/test/parent.d.ts +0 -2
  151. package/public/src/test/test/parent.d.ts.map +0 -1
  152. package/public/src/test/test/parent.js +0 -25
  153. package/public/src/test/test/parent.js.map +0 -1
  154. package/public/src/test/test/parent.ts +0 -35
  155. package/public/src/test/test/testform.d.ts +0 -2
  156. package/public/src/test/test/testform.d.ts.map +0 -1
  157. package/public/src/test/test/testform.js +0 -1
  158. package/public/src/test/test/testform.js.map +0 -1
  159. package/public/src/test/test/testform.ts +0 -153
  160. package/public/src/test/test/testfunction.d.ts +0 -3
  161. package/public/src/test/test/testfunction.d.ts.map +0 -1
  162. package/public/src/test/test/testfunction.js +0 -7
  163. package/public/src/test/test/testfunction.js.map +0 -1
  164. package/public/src/test/test/testfunction.ts +0 -12
  165. package/public/src/test/test/testmc.d.ts +0 -3
  166. package/public/src/test/test/testmc.d.ts.map +0 -1
  167. package/public/src/test/test/testmc.js +0 -10
  168. package/public/src/test/test/testmc.js.map +0 -1
  169. package/public/src/test/test/testmc.ts +0 -16
  170. package/public/src/test/test/testsimpleclass.d.ts +0 -3
  171. package/public/src/test/test/testsimpleclass.d.ts.map +0 -1
  172. package/public/src/test/test/testsimpleclass.js +0 -9
  173. package/public/src/test/test/testsimpleclass.js.map +0 -1
  174. package/public/src/test/test/testsimpleclass.ts +0 -15
  175. package/public/src/test/test.d.ts +0 -2
  176. package/public/src/test/test.d.ts.map +0 -1
  177. package/public/src/test/test.js +0 -72
  178. package/public/src/test/test.js.map +0 -1
  179. package/public/src/test/test.ts +0 -176
  180. package/public/src/test/testform.css +0 -47
  181. package/public/src/test/testform.html +0 -56
  182. package/public/src/test/testform.json +0 -27
  183. package/public/test/MC.d.ts +0 -39
  184. package/public/test/MC.d.ts.map +0 -1
  185. package/public/test/MC.js +0 -287
  186. package/public/test/MC.min.js +0 -348
  187. package/public/test/MC.ts +0 -431
  188. package/public/test/MicroComponents.svg +0 -15
  189. package/public/test/elements.d.ts +0 -5
  190. package/public/test/elements.d.ts.map +0 -1
  191. package/public/test/elements.js +0 -68
  192. package/public/test/elements.min.js +0 -1
  193. package/public/test/elements.ts +0 -119
  194. package/public/test/formValues.d.ts +0 -3
  195. package/public/test/formValues.d.ts.map +0 -1
  196. package/public/test/formValues.js +0 -162
  197. package/public/test/formValues.min.js +0 -1
  198. package/public/test/formValues.ts +0 -225
  199. package/public/test/grandparent.css +0 -14
  200. package/public/test/helpers.d.ts +0 -14
  201. package/public/test/helpers.d.ts.map +0 -1
  202. package/public/test/helpers.js +0 -113
  203. package/public/test/helpers.ts +0 -149
  204. package/public/test/microcomponents.d.ts +0 -6
  205. package/public/test/microcomponents.d.ts.map +0 -1
  206. package/public/test/microcomponents.js +0 -7
  207. package/public/test/microcomponents.min.js +0 -1
  208. package/public/test/microcomponents.ts +0 -8
  209. package/public/test/myButton.css +0 -19
  210. package/public/test/observables.d.ts +0 -11
  211. package/public/test/observables.d.ts.map +0 -1
  212. package/public/test/observables.js +0 -244
  213. package/public/test/observables.min.js +0 -1
  214. package/public/test/observables.ts +0 -416
  215. package/public/test/style.css +0 -8
  216. package/public/test/test/child.d.ts +0 -2
  217. package/public/test/test/child.d.ts.map +0 -1
  218. package/public/test/test/child.js +0 -26
  219. package/public/test/test/child.js.map +0 -1
  220. package/public/test/test/child.ts +0 -36
  221. package/public/test/test/grandchild.d.ts +0 -2
  222. package/public/test/test/grandchild.d.ts.map +0 -1
  223. package/public/test/test/grandchild.js +0 -22
  224. package/public/test/test/grandchild.js.map +0 -1
  225. package/public/test/test/grandchild.ts +0 -31
  226. package/public/test/test/grandparent.d.ts +0 -2
  227. package/public/test/test/grandparent.d.ts.map +0 -1
  228. package/public/test/test/grandparent.js +0 -1
  229. package/public/test/test/grandparent.js.map +0 -1
  230. package/public/test/test/grandparent.ts +0 -43
  231. package/public/test/test/greatgrandchild.d.ts +0 -2
  232. package/public/test/test/greatgrandchild.d.ts.map +0 -1
  233. package/public/test/test/greatgrandchild.js +0 -36
  234. package/public/test/test/greatgrandchild.js.map +0 -1
  235. package/public/test/test/greatgrandchild.ts +0 -51
  236. package/public/test/test/parent.d.ts +0 -2
  237. package/public/test/test/parent.d.ts.map +0 -1
  238. package/public/test/test/parent.js +0 -25
  239. package/public/test/test/parent.js.map +0 -1
  240. package/public/test/test/parent.ts +0 -35
  241. package/public/test/test/testform.d.ts +0 -2
  242. package/public/test/test/testform.d.ts.map +0 -1
  243. package/public/test/test/testform.js +0 -1
  244. package/public/test/test/testform.js.map +0 -1
  245. package/public/test/test/testform.ts +0 -153
  246. package/public/test/test/testfunction.d.ts +0 -3
  247. package/public/test/test/testfunction.d.ts.map +0 -1
  248. package/public/test/test/testfunction.js +0 -7
  249. package/public/test/test/testfunction.js.map +0 -1
  250. package/public/test/test/testfunction.ts +0 -12
  251. package/public/test/test/testmc.d.ts +0 -3
  252. package/public/test/test/testmc.d.ts.map +0 -1
  253. package/public/test/test/testmc.js +0 -10
  254. package/public/test/test/testmc.js.map +0 -1
  255. package/public/test/test/testmc.ts +0 -16
  256. package/public/test/test/testsimpleclass.d.ts +0 -3
  257. package/public/test/test/testsimpleclass.d.ts.map +0 -1
  258. package/public/test/test/testsimpleclass.js +0 -9
  259. package/public/test/test/testsimpleclass.js.map +0 -1
  260. package/public/test/test/testsimpleclass.ts +0 -15
  261. package/public/test/test.d.ts +0 -2
  262. package/public/test/test.d.ts.map +0 -1
  263. package/public/test/test.html +0 -29
  264. package/public/test/test.js +0 -72
  265. package/public/test/test.js.map +0 -1
  266. package/public/test/test.ts +0 -176
  267. package/public/test/testform.css +0 -47
  268. package/public/test/testform.html +0 -56
  269. package/public/test/testform.json +0 -27
  270. package/public/typedoc/.nojekyll +0 -1
  271. package/public/typedoc/assets/highlight.css +0 -106
  272. package/public/typedoc/assets/icons.js +0 -18
  273. package/public/typedoc/assets/icons.svg +0 -1
  274. package/public/typedoc/assets/main.js +0 -60
  275. package/public/typedoc/assets/navigation.js +0 -1
  276. package/public/typedoc/assets/search.js +0 -1
  277. package/public/typedoc/assets/style.css +0 -1493
  278. package/public/typedoc/classes/MC.DC.html +0 -13
  279. package/public/typedoc/classes/MC.MC.html +0 -3
  280. package/public/typedoc/classes/MC.McBase.html +0 -3
  281. package/public/typedoc/functions/MC.autoload.html +0 -1
  282. package/public/typedoc/functions/MC.off.html +0 -1
  283. package/public/typedoc/functions/MC.on.html +0 -1
  284. package/public/typedoc/functions/MC.one.html +0 -1
  285. package/public/typedoc/functions/MC.trigger.html +0 -1
  286. package/public/typedoc/functions/elements.defineCE.html +0 -1
  287. package/public/typedoc/functions/elements.getCE.html +0 -1
  288. package/public/typedoc/functions/formValues.formValues.html +0 -1
  289. package/public/typedoc/functions/observables.observe.html +0 -1
  290. package/public/typedoc/hierarchy.html +0 -1
  291. package/public/typedoc/index.html +0 -122
  292. package/public/typedoc/interfaces/MC.HTMLMcElement.html +0 -758
  293. package/public/typedoc/media/MicroComponents.svg +0 -15
  294. package/public/typedoc/modules/MC.html +0 -10
  295. package/public/typedoc/modules/elements.html +0 -3
  296. package/public/typedoc/modules/formValues.html +0 -2
  297. package/public/typedoc/modules/observables.html +0 -3
  298. package/public/typedoc/modules.html +0 -5
  299. package/public/typedoc/types/observables.Observable.html +0 -1
  300. package/src/MC.ts +0 -431
  301. package/src/elements.ts +0 -119
  302. package/src/formValues.ts +0 -225
  303. package/src/helpers.ts +0 -149
  304. package/src/microcomponents.ts +0 -8
  305. package/src/observables.ts +0 -416
  306. package/src/selectors._ts +0 -1269
  307. package/src/test/grandparent.css +0 -14
  308. package/src/test/test/child.ts +0 -36
  309. package/src/test/test/grandchild.ts +0 -31
  310. package/src/test/test/grandparent.ts +0 -43
  311. package/src/test/test/greatgrandchild.ts +0 -51
  312. package/src/test/test/parent.ts +0 -35
  313. package/src/test/test/testform.ts +0 -153
  314. package/src/test/test/testfunction.ts +0 -12
  315. package/src/test/test/testmc.ts +0 -16
  316. package/src/test/test/testsimpleclass.ts +0 -15
  317. package/src/test/test.ts +0 -176
  318. package/src/test/testform.css +0 -47
  319. package/src/test/testform.html +0 -56
  320. package/src/test/testform.json +0 -27
  321. package/tasks.md +0 -36
  322. package/tsconfig.json +0 -107
  323. package/typedoc.json +0 -7
  324. package/webpack.config.js +0 -346
package/src/selectors._ts DELETED
@@ -1,1269 +0,0 @@
1
- import { MC, DC, HTMLMcElement, addListener, removeListener } from './MC.js';
2
- import { LooseObject } from './helpers.js';
3
-
4
- /*
5
- helpers
6
- */
7
-
8
- const isObject = ( value: any ): boolean => {
9
- return value != null && typeof value === 'object';
10
- }
11
-
12
- const words = ( classes: Array<string> ): Array<string> => {
13
-
14
- let classSet: Set<string> = new Set();
15
-
16
- // read classes into set
17
- classes.forEach( c => {
18
- c = c.trim();
19
- c.split(' ').forEach( e => {
20
- if ( e !== '' ){
21
- classSet.add(e);
22
- }
23
- });
24
- });
25
-
26
- // now we have a sanitized array
27
- classes = Array.from( classSet );
28
-
29
- return classes;
30
- }
31
-
32
- /*
33
- selector classes
34
- */
35
-
36
- class DomSelector{
37
-
38
- #set: Set<HTMLElement> = new Set();
39
-
40
- public get set(): Set<HTMLElement> {
41
- return this.#set;
42
- }
43
-
44
- public get array(): HTMLElement[] {
45
- return Array.from( this.#set );
46
- }
47
-
48
- public set set( set: Set<HTMLElement> ) {
49
- this.#set = set;
50
- return;
51
- }
52
-
53
- public get length(): number {
54
- return this.#set.size;
55
- }
56
-
57
- constructor( selection?: selection, element: any = document.body ){
58
-
59
- let
60
- that = this,
61
- undefinedTags: Set<any> = new Set();
62
-
63
- if ( !selection ) {
64
- return that;
65
- }
66
- }
67
-
68
- $t( nameSpace?: string ): TSelector {
69
- let
70
- result = new TbSelector()
71
- ;
72
-
73
- this.#set.forEach( (e: HTMLElement) => {
74
- if ( (e as HTMLMcElement)._mc ){
75
- Object.values( (e as HTMLMcElement)._mc ).forEach( ( mc: MC | DC ) => {
76
- result.set.add( mc );
77
- });
78
- }
79
- });
80
-
81
- if ( nameSpace ) {
82
- result.filter( mc => (mc as LooseObject).nameSpace === nameSpace );
83
- }
84
-
85
- return result;
86
- }
87
-
88
- add( selection: selection, target?: HTMLElement ): DSelector {
89
-
90
- let
91
- that = this
92
- ;
93
-
94
- $d( selection, target ).forEach( element => {
95
- that.#set.add( element );
96
- });
97
-
98
- return that;
99
- }
100
-
101
- addClass( ...classes: string[] ): DSelector {
102
-
103
- // sanitize classes
104
- classes = words( classes );
105
-
106
- // now set those classes
107
- this.forEach( element => {
108
- element.classList.add( ...classes );
109
- });
110
-
111
- return this;
112
- }
113
-
114
- after( selection: selection, target?: HTMLElement ): DSelector {
115
-
116
- let
117
- that = this,
118
- after = $d( selection, target );
119
- ;
120
-
121
- if ( !after.length ) return that;
122
-
123
- after
124
- .first()
125
- .forEach( element => {
126
- that.array.reverse().forEach( (e: HTMLElement) => {
127
- e.after( element );
128
- });
129
- });
130
-
131
- return that;
132
- }
133
-
134
- append( selection: selection, target?: HTMLElement ): DSelector {
135
-
136
- let
137
- that = this,
138
- addTo = that.array['0'],
139
- append = $d( selection, target )
140
- ;
141
-
142
- if ( addTo ){
143
- append.forEach( (e: HTMLElement) => {
144
- addTo.append( e );
145
- });
146
- }
147
-
148
- return that;
149
- }
150
-
151
- appendTo( selection: selection, target?: HTMLElement ): DSelector {
152
-
153
- let
154
- that = this,
155
- appendTo = $d( selection, target ).array['0']
156
- ;
157
-
158
- if ( appendTo ){
159
- that.forEach( (e: HTMLElement) => {
160
- appendTo.append( e );
161
- });
162
- }
163
-
164
- return that;
165
- }
166
-
167
- attr(): LooseObject;
168
- attr( obj: LooseObject ): DSelector;
169
- attr( name: string ): string | null;
170
- attr( first?: string | LooseObject, second?: string | object | null ): DSelector;
171
- attr( first?: unknown, second?: unknown ): DSelector | LooseObject | string | null {
172
- let
173
- that = this,
174
- attributes: LooseObject = {}
175
- ;
176
-
177
- // if no elements in set -> skip
178
- if ( !that.length ) return that;
179
-
180
- // if no arguments, return attributes of first in list as hash object
181
- if (!arguments.length) {
182
- Array.from( [ ...that.set ][0].attributes ).forEach( (attribute: LooseObject) => {
183
- attributes[attribute.name] = attribute.value;
184
- });
185
- return attributes;
186
- }
187
-
188
- // if first is a string
189
- // if no value (second) is given -> return attribute value of first element in node selection
190
- // if value (second) is null -> remove attribute and return this
191
- // else set attribute values and return this
192
- if ( typeof first === 'string' ) {
193
-
194
- // return attributes
195
- if ( second === undefined ){
196
- return [ ...that.set ][0].getAttribute( first );
197
- }
198
-
199
- // remove attribute
200
- if ( second === null ){
201
- [ ...that.set ].forEach( (e: HTMLElement) =>{
202
- e.removeAttribute( first );
203
- });
204
- return that;
205
- }
206
-
207
- // if attribute value is an object -> convert to json string
208
- if ( typeof second === 'object' ){
209
- second = JSON.stringify( second );
210
- }
211
-
212
- // set attribute
213
- [ ...that.set ].forEach( (e: HTMLElement) =>{
214
- e.setAttribute( first, second as string );
215
- });
216
-
217
- return that;
218
- }
219
-
220
- // if first is an object set attributes to all nodes
221
- if ( typeof first === 'object' ) {
222
- [ ...that.set ].forEach( (e: HTMLElement) =>{
223
- Object.keys( first as LooseObject ).forEach( (key: string) => {
224
- $d(e).attr( key, ( first as LooseObject ).key );
225
- });
226
- });
227
- return that;
228
- }
229
-
230
- return that;
231
- }
232
-
233
- before( selection: selection, target?: HTMLElement ): DSelector {
234
-
235
- let
236
- that = this,
237
- before = $d( selection, target );
238
- ;
239
-
240
- if ( !before.length ) return that;
241
-
242
- before
243
- .first()
244
- .forEach( element => {
245
- that.forEach( (e: HTMLElement) => {
246
- e.before( element );
247
- });
248
- });
249
-
250
- return that;
251
- }
252
-
253
- children( selection?: selection, rootNode?: HTMLElement ): DSelector{
254
-
255
- let
256
- that: DomSelector = this,
257
- set: Set<HTMLElement> = new Set()
258
- ;
259
-
260
- that.#set.forEach( (e: HTMLElement) => {
261
- Array.from( e.children ).forEach( ( c ) => {
262
- set.add( c as HTMLElement );
263
- });
264
- });
265
-
266
- that = $d( [ ...set] );
267
-
268
- if ( selection ){
269
- let compare = $d( selection, rootNode );
270
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
271
- }
272
-
273
- return that;
274
- }
275
-
276
- descendants( selection?: selection, rootNode?: HTMLElement ): DSelector{
277
- let
278
- that: DomSelector = this,
279
- set: Set<HTMLElement> = new Set()
280
- ;
281
-
282
- that.#set.forEach( (e: HTMLElement) => {
283
- e.querySelectorAll('*').forEach( ( h ) => {
284
- set.add( h as HTMLElement );
285
- });
286
- });
287
-
288
- that = $d( [ ...set] );
289
-
290
- if ( selection ){
291
- let compare = $d( selection, rootNode );
292
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
293
- }
294
-
295
- return that;
296
- }
297
-
298
- empty(): DSelector {
299
- return this.filter( (e: any)=>false );
300
- }
301
-
302
- first( selection?: selection, rootNode?: HTMLElement ): DSelector{
303
- let
304
- that: DomSelector = this,
305
- set: Set<HTMLElement> = new Set(),
306
- compare: any = false;
307
- ;
308
-
309
- // get compare selection if specified
310
- if ( selection ){
311
- compare = $d( selection, rootNode );
312
- }
313
-
314
- // get compare selection if specified
315
- that.#set.forEach( (e: HTMLElement) => {
316
- if ( e.parentNode ){
317
- set.add( e.parentNode.children[0] as HTMLElement );
318
- }
319
- });
320
-
321
- // make result
322
- that = $d( [ ...set ] );
323
-
324
- // compare if necessay
325
- if ( selection ){
326
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
327
- }
328
-
329
- return that;
330
- }
331
-
332
- has( element: HTMLElement ): boolean{
333
- return this.#set.has( element );
334
- }
335
-
336
- hasClass( ...classes: string[] ): boolean {
337
-
338
- // sanitize classes
339
- classes = words( classes );
340
-
341
- // now test those classes
342
- return this.every( e => {
343
- return Array.from( e.classList ).every( c => e.contains( c ) );
344
- });
345
-
346
- }
347
-
348
-
349
- html( html?: string ): string | DSelector{
350
- let that = this;
351
-
352
- if ( html ){
353
- that.forEach( (e: HTMLElement) => {
354
- !e.parentNode
355
- ? (()=>{
356
- console.warn('Cannot access the .innerHTML of a HTMLElement that hasnt been inserted yet', e );
357
- console.trace( e, this );
358
- console.info( 'If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!', 'color: blue;' )
359
- })()
360
- : e.innerHTML = html;
361
- });
362
- return that;
363
- }
364
-
365
- return that.array[0].innerHTML;
366
- }
367
-
368
- last( selection?: selection, rootNode?: HTMLElement ): DSelector{
369
- let
370
- that: DomSelector = this,
371
- set: Set<HTMLElement> = new Set()
372
- ;
373
-
374
- that.#set.forEach( (e: HTMLElement) => {
375
- let
376
- siblings = e.parentNode?.children as HTMLCollection
377
- ;
378
- if ( siblings ) {
379
- set.add( Array.from(siblings).at(-1) as HTMLElement );
380
- }
381
- });
382
-
383
- that = $d( [ ...set] );
384
-
385
- if ( selection ){
386
- let compare = $d( selection, rootNode );
387
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
388
- }
389
-
390
- return that;
391
- }
392
-
393
- next( selection?: selection, rootNode?: HTMLElement ): DSelector{
394
- let
395
- that: DomSelector = this,
396
- set: Set<HTMLElement> = new Set()
397
- ;
398
-
399
- that.#set.forEach( (e: HTMLElement) => {
400
- let
401
- siblings = e.parentNode?.children as HTMLCollection
402
- ;
403
- if ( siblings ) {
404
- let
405
- arr = Array.from(siblings),
406
- pos = arr.indexOf(e) + 1
407
- ;
408
- if ( pos < arr.length ){
409
- set.add( arr.at(pos) as HTMLElement );
410
- }
411
- }
412
- });
413
-
414
- that = $d( [ ...set] );
415
-
416
- if ( selection ){
417
- let compare = $d( selection, rootNode );
418
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
419
- }
420
-
421
- return that;
422
- }
423
-
424
- normalize(): DSelector {
425
- let that = this;
426
- that.#set.forEach( (e: HTMLElement) => { e.normalize() });
427
- return that;
428
- }
429
-
430
- off( eventName: string, cb: Function ): DSelector{
431
- let
432
- that = this,
433
- eventNames =
434
- eventName.indexOf(' ') > -1
435
- ? eventName.split(' ')
436
- : [ eventName ]
437
- ;
438
-
439
- // remove handler
440
- that.array.forEach( (e: HTMLElement) => {
441
- eventNames.forEach(function ( n: string ) {
442
- removeListener(
443
- e,
444
- n,
445
- cb as EventListenerOrEventListenerObject
446
- );
447
- });
448
- });
449
-
450
- return that;
451
- }
452
-
453
- on( eventName: string, cb: Function, capture: boolean = false, once: boolean = false ): Function{
454
-
455
- let
456
- that = this,
457
- eventNames =
458
- eventName.indexOf(' ') > -1
459
- ? eventName.split(' ').filter( (s) => s !== '' )
460
- : [ eventName ]
461
- ;
462
-
463
- function wrapper(){ wrapper.cb.apply(that, Array.from(arguments) ); };
464
- wrapper.cb = cb;
465
-
466
- // attach handler
467
- that.forEach( (e: HTMLElement) => {
468
- eventNames.forEach(function ( n: string ) {
469
- addListener(
470
- e,
471
- n,
472
- (wrapper as EventListenerOrEventListenerObject),
473
- capture,
474
- once
475
- );
476
- });
477
- });
478
-
479
- return wrapper;
480
- }
481
-
482
- one( eventName: string, cb: Function, capture: boolean = false ): Function{
483
- let
484
- that = this,
485
- eventNames =
486
- eventName.indexOf(' ') > -1
487
- ? eventName.split(' ').filter( (s) => s !== '' )
488
- : [ eventName ]
489
- ;
490
-
491
- function wrapper(){ wrapper.cb.apply(that, Array.from(arguments) ); };
492
- wrapper.cb = cb;
493
-
494
- // attach handler
495
- that.forEach( (e: HTMLElement) => {
496
- eventNames.forEach(function ( n: string ) {
497
- addListener(
498
- e,
499
- n,
500
- (wrapper as EventListenerOrEventListenerObject),
501
- capture,
502
- true
503
- );
504
- });
505
- });
506
-
507
- return wrapper;
508
- }
509
-
510
- parent( selection?: selection, rootNode?: HTMLElement ): DSelector {
511
- let
512
- that: DomSelector = this,
513
- set: Set<HTMLElement> = new Set()
514
- ;
515
-
516
- that.#set.forEach( (e: HTMLElement) => {
517
- if ( e.parentNode && (e.parentNode as HTMLElement).tagName !== 'HTML') {
518
- set.add( e.parentNode as HTMLElement );
519
- }
520
- });
521
-
522
- that = $d( [ ...set] );
523
-
524
- if ( selection ){
525
- let compare = $d( selection, rootNode );
526
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
527
- }
528
-
529
- return that;
530
- }
531
-
532
- ancestors( selection?: selection, rootNode?: HTMLElement ): DSelector {
533
- let
534
- that: DomSelector = this,
535
- set: Set<HTMLElement> = new Set()
536
- ;
537
-
538
- that.#set.forEach( (e: HTMLElement) => {
539
- let
540
- current = e
541
- ;
542
- while ( current.parentNode && (current.parentNode as HTMLElement).tagName !== 'HTML' ){
543
- current = current.parentNode as HTMLElement;
544
- set.add( current );
545
- }
546
- });
547
-
548
- that = $d( [ ...set] );
549
-
550
- if ( selection ){
551
- let compare = $d( selection, rootNode );
552
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
553
- }
554
-
555
- return that;
556
- }
557
-
558
- prepend( selection: selection, target?: HTMLElement ): DSelector {
559
-
560
- let
561
- that = this,
562
- addTo = that.array['0'],
563
- prepend = $d( selection, target )
564
- ;
565
-
566
- if ( addTo ){
567
- prepend.forEach( (e: HTMLElement) => {
568
- addTo.prepend( e );
569
- });
570
- }
571
-
572
- return that;
573
- }
574
-
575
-
576
- prev( selection?: selection, rootNode?: HTMLElement ): DSelector{
577
- let
578
- that: DomSelector = this,
579
- set: Set<HTMLElement> = new Set()
580
- ;
581
-
582
- that.#set.forEach( (e: HTMLElement) => {
583
- let
584
- siblings = e.parentNode?.children as HTMLCollection
585
- ;
586
- if ( siblings ) {
587
- let
588
- arr = Array.from(siblings),
589
- pos = arr.indexOf(e) - 1
590
- ;
591
- if ( pos > -1 ){
592
- set.add( arr.at(pos) as HTMLElement );
593
- }
594
- }
595
- });
596
-
597
- that = $d( [ ...set] );
598
-
599
- if ( selection ){
600
- let compare = $d( selection, rootNode );
601
- that.filter( ( e: HTMLElement ) => compare.has( e ) );
602
- }
603
-
604
- return that;
605
- }
606
-
607
- removeClass( ...classes: string[] ): DSelector {
608
-
609
- // sanitize classes
610
- classes = words( classes );
611
-
612
- // now set those classes
613
- this.forEach( element => {
614
- element.classList.remove( ...classes );
615
- });
616
-
617
- return this;
618
- }
619
-
620
- text( text?: string ): string | DSelector{
621
- let that = this;
622
- if ( text ){
623
- that.forEach( (e: HTMLElement) => {
624
- !e.parentNode
625
- ? (()=>{
626
- console.warn('Cannot access the .textContent of a HTMLElement that hasnt been inserted yet', e );
627
- console.trace( e, this );
628
- console.info( 'If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!', 'color: blue;' )
629
- })()
630
- : e.innerText = text;
631
- });
632
- return that as DomSelector;
633
- }
634
-
635
- let t = that.array[0].innerText;
636
- return t ?? '' as string;
637
- }
638
-
639
- toggleClass( ...classes: string[] ): DSelector {
640
-
641
- // sanitize classes
642
- classes = words( classes );
643
-
644
- // now set those classes
645
- this.forEach( element => {
646
- element.classList.toggle( ...classes );
647
- });
648
-
649
- return this;
650
- }
651
-
652
- trigger( eventName: string, data: any = {}, bubbles: boolean = false, cancelable: boolean = false, composed: boolean = false ): DSelector{
653
- let
654
- that = this,
655
- ev: Event,
656
- options: LooseObject = { bubbles, cancelable, composed },
657
- eventNames =
658
- eventName.indexOf(' ') > -1
659
- ? eventName.split(' ')
660
- : [ eventName ]
661
- ;
662
-
663
- that.#set.forEach( (e: HTMLElement) => {
664
- eventNames.forEach(function ( n: string ) {
665
- // console.log()
666
- ev = new Event( n, options );
667
- (ev as LooseObject ).data = data;
668
- e.dispatchEvent( ev );
669
- });
670
- });
671
-
672
- return that;
673
- }
674
-
675
- /*
676
- array method mapping
677
- */
678
-
679
- at( index: number ): DSelector {
680
- return $d( this.array.at( index ) as HTMLElement ) as DomSelector;
681
- }
682
-
683
- concat( items: DSelector | any[] ): DSelector{
684
- let
685
- that = this,
686
- arr = items instanceof DomSelector
687
- ? items.array
688
- : items as HTMLElement[]
689
- ;
690
-
691
- arr.forEach( (e: HTMLElement) => {
692
- that.#set.add( e );
693
- });
694
-
695
- return that;
696
- }
697
-
698
- entries(): IterableIterator<[number, any]> {
699
- return this.array.entries();
700
- }
701
-
702
- every( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): boolean {
703
- return this.array.every( predicate, thisArg );
704
- }
705
-
706
- filter( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): DSelector {
707
- this.#set = new Set( this.array.filter( predicate, thisArg ) );
708
- return this;
709
- }
710
-
711
- forEach( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): DSelector {
712
- this.array.forEach( predicate, thisArg );
713
- return this;
714
- }
715
-
716
- includes( item: HTMLElement ): boolean{
717
- return this.array.indexOf( item, 0 ) !== -1;
718
- }
719
-
720
- indexOf( item: HTMLElement, start?: number ): number{
721
- return this.array.indexOf( item, start );
722
- }
723
-
724
- map( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): Array<any>{
725
- return this.array.map( predicate, thisArg );
726
- }
727
-
728
- pop(): HTMLElement {
729
- return this.array.pop() as HTMLElement;
730
- }
731
-
732
- push( ...items: HTMLElement[] ): DSelector {
733
- items.forEach( (item: HTMLElement) => {
734
- this.#set.add( item );
735
- });
736
- return this;
737
- }
738
-
739
- shift(): HTMLElement | undefined {
740
- let
741
- that = this,
742
- element = that.#set.size ? that.array[0] : undefined
743
- ;
744
-
745
- if ( element ){
746
- that.#set.delete( element );
747
- }
748
-
749
- return element;
750
- }
751
-
752
- slice( start: number, end?: number ): DSelector {
753
- return $d( this.array.slice( start, end ) );
754
- }
755
-
756
- some( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): boolean{
757
- return this.array.some( predicate, thisArg );
758
- }
759
-
760
- splice( start: number, deleteCount?: number | undefined ): DSelector;
761
- splice( start: number, deleteCount: number, ...items: HTMLElement[] ): DSelector {
762
- let
763
- that = this,
764
- arr = that.array
765
- ;
766
-
767
- arr.splice( start, deleteCount, ...items );
768
- return $d( arr );
769
- }
770
-
771
- }
772
-
773
- export interface DSelector extends DomSelector{};
774
-
775
- class TbSelector{
776
-
777
- #set: Set<any> = new Set();
778
-
779
- public get set(): Set<any> {
780
- return this.#set;
781
- }
782
-
783
- public get array(): any[] {
784
- return Array.from( this.#set );
785
- }
786
-
787
- public set set( set: Set<any> ) {
788
- this.#set = set;
789
- return;
790
- }
791
-
792
- public get length(): number {
793
- return this.#set.size;
794
- }
795
-
796
- public set length( value: number ){
797
- //ignore
798
- }
799
-
800
- constructor( selection?: selection, element: HTMLElement = document.body ){
801
-
802
- if ( !selection ) {
803
- return this;
804
- }
805
-
806
- $d( selection, element ).forEach( (e: HTMLMcElement) => {
807
- $t( e ).forEach( (t: any ) => {
808
- this.#set.add(t);
809
- });
810
- });
811
-
812
- }
813
-
814
- $d( selection?: selection, element: HTMLElement = document.body ): DSelector {
815
- let
816
- result = new DomSelector(),
817
- set: Set<HTMLElement> = new Set(),
818
- compare: boolean = !!selection || false,
819
- compareSelection: Set<HTMLElement> = new Set()
820
- ;
821
-
822
- if ( compare ){
823
- compareSelection = $d( selection, element ).set;
824
- }
825
-
826
- this.#set.forEach( (e: any) => {
827
- if ( !compare || compareSelection.has( (e as any)._tg ) ) {
828
- set.add( (e as any)._tg );
829
- }
830
- });
831
-
832
- result.set = set;
833
-
834
- return result;
835
- }
836
-
837
- children( nameSpace?: string ): TSelector{
838
-
839
- let
840
- that: TbSelector = this,
841
- set: Set<any> = new Set()
842
- ;
843
-
844
- that.#set.forEach( (e: any) => {
845
- e.children( nameSpace ).forEach( ( tb: any ) => {
846
- set.add( tb );
847
- });
848
- });
849
-
850
- that.#set = set;
851
-
852
- return that;
853
- }
854
-
855
- descendants( nameSpace?: string ): TSelector{
856
-
857
- let
858
- that: TbSelector = this,
859
- set: Set<any> = new Set()
860
- ;
861
-
862
- that.#set.forEach( (e: any) => {
863
- e.descendants( nameSpace ).forEach( ( tb: any ) => {
864
- set.add( tb );
865
- });
866
- });
867
-
868
- that.#set = set;
869
-
870
- return that;
871
- }
872
-
873
- first( nameSpace?: string ): TSelector{
874
-
875
- let
876
- that: TbSelector = this,
877
- set: Set<any> = new Set()
878
- ;
879
-
880
- that.#set.forEach( (e: any) => {
881
- e
882
- .parent()
883
- .children()
884
- .$d()
885
- .first()
886
- .$t()
887
- .forEach( (tb: any) => {
888
- set.add( tb );
889
- });
890
- });
891
-
892
- that.#set = set;
893
-
894
- if ( nameSpace ){
895
- that.filter( ( tb: any ) => (tb as any).nameSpace = nameSpace );
896
- }
897
-
898
- return that;
899
- }
900
-
901
- has( element: any ): boolean{
902
- return this.#set.has( element );
903
- }
904
-
905
- last( nameSpace?: string ): TSelector{
906
- let
907
- that: TbSelector = this,
908
- set: Set<any> = new Set()
909
- ;
910
-
911
- that.#set.forEach( (e: any) => {
912
- e
913
- .parent()
914
- .children()
915
- .$d()
916
- .last()
917
- .$t()
918
- .forEach( (tb: any) => {
919
- set.add( tb );
920
- });
921
- });
922
-
923
- that.#set = set;
924
-
925
- if ( nameSpace ){
926
- that.filter( ( e: any ) => ( e as LooseObject).nameSpace = nameSpace );
927
- }
928
-
929
- return that;
930
- }
931
-
932
- next( nameSpace?: string ): TSelector{
933
-
934
- let
935
- that: TbSelector = this,
936
- set: Set<any> = new Set()
937
- ;
938
-
939
- that.#set.forEach( (e: any) => {
940
- let
941
- elements: Set<HTMLElement> = new Set(),
942
- element: HTMLElement
943
- ;
944
-
945
- element = (e as any)._tg;
946
- while ( element.nextElementSibling !== null ){
947
- element = element.nextElementSibling as HTMLElement;
948
- elements.add( element );
949
- }
950
-
951
- $t([...elements])
952
- .$d()
953
- .first()
954
- .$t()
955
- .forEach( (tb: any) => {
956
- set.add( tb );
957
- });
958
- });
959
-
960
- that.#set = set;
961
-
962
- if ( nameSpace ){
963
- that.filter( ( e: any ) => ( e as LooseObject).nameSpace = nameSpace );
964
- }
965
-
966
- return that;
967
- }
968
-
969
- ns( nameSpace: string ): TSelector{
970
- return this.filter( (tb: any) => (tb as any).nameSpace === nameSpace );
971
- }
972
-
973
- off( name: string, cb: Function ): TSelector{
974
- let
975
- that = this,
976
- eventNames =
977
- name.indexOf(' ') > -1
978
- ? name.split(' ').filter( (s) => s !== '' )
979
- : [ name ]
980
- ;
981
-
982
- // remove handlers
983
- that.$d().array.forEach( (e: HTMLElement) => {
984
- eventNames.forEach(function ( n: string ) {
985
- // console.log('Tb Selector remove event', `[TB]${n}`, e, cb );
986
- removeListener(
987
- e,
988
- `[TB]${n}`,
989
- cb as EventListenerOrEventListenerObject
990
- );
991
- });
992
- });
993
-
994
- return that;
995
- }
996
-
997
- on( name: string, cb: Function, once: boolean = false ): Function{
998
-
999
- let
1000
- that = this,
1001
- eventNames =
1002
- name.indexOf(' ') > -1
1003
- ? name.split(' ').filter( (s) => s !== '' )
1004
- : [ name ]
1005
- ;
1006
-
1007
- function wrapper(){ wrapper.cb.apply(that, Array.from(arguments) ); };
1008
- wrapper.cb = cb;
1009
-
1010
- // attach handler
1011
- that.forEach( ( tb: any) => {
1012
- eventNames.forEach(function ( n: string ) {
1013
- addListener(
1014
- (tb as any)._tg,
1015
- `[TB]${n}`,
1016
- (wrapper as EventListenerOrEventListenerObject),
1017
- false,
1018
- once
1019
- );
1020
- });
1021
- });
1022
-
1023
- return wrapper;
1024
- }
1025
-
1026
- one( name: string, cb: Function ): Function{
1027
- let
1028
- that = this,
1029
- eventNames =
1030
- name.indexOf(' ') > -1
1031
- ? name.split(' ').filter( (s) => s !== '' )
1032
- : [ name ]
1033
- ;
1034
-
1035
- function wrapper(){ wrapper.cb.apply(that, Array.from(arguments) ); };
1036
- wrapper.cb = cb;
1037
-
1038
- // attach handler
1039
- that.forEach( ( tb: any) => {
1040
- eventNames.forEach(function ( n: string ) {
1041
- addListener(
1042
- (tb as any)._tg,
1043
- `[TB]${n}`,
1044
- (wrapper as EventListenerOrEventListenerObject),
1045
- false,
1046
- true
1047
- );
1048
- });
1049
- });
1050
-
1051
- return wrapper;
1052
- }
1053
-
1054
- parent( nameSpace?: string ): TSelector {
1055
-
1056
- let
1057
- that: TbSelector = this,
1058
- set: Set<any> = new Set()
1059
- ;
1060
-
1061
- that.#set.forEach( (e: any) => {
1062
- e.parent( nameSpace ).forEach( ( tb: any ) => {
1063
- set.add( tb );
1064
- });
1065
- });
1066
-
1067
- that.#set = set;
1068
-
1069
- return that;
1070
- }
1071
-
1072
- ancestors( nameSpace?: string ): TSelector {
1073
-
1074
- let
1075
- that: TbSelector = this,
1076
- set: Set<any> = new Set()
1077
- ;
1078
-
1079
- that.#set.forEach( (e: any) => {
1080
- e.parents( nameSpace ).forEach( ( tb: any ) => {
1081
- set.add( tb );
1082
- });
1083
- });
1084
-
1085
- that.#set = set;
1086
-
1087
- return that;
1088
- }
1089
-
1090
- prev( nameSpace?: string ): TSelector{
1091
-
1092
- let
1093
- that: TbSelector = this,
1094
- set: Set<any> = new Set()
1095
- ;
1096
-
1097
- that.#set.forEach( (e: any) => {
1098
- let
1099
- elements: Set<HTMLElement> = new Set(),
1100
- element: HTMLElement
1101
- ;
1102
-
1103
- element = (e as any)._tg;
1104
- while ( element.previousElementSibling !== null ){
1105
- element = element.previousElementSibling as HTMLElement;
1106
- elements.add( element );
1107
- }
1108
-
1109
- $t([...elements])
1110
- .$d()
1111
- .last()
1112
- .$t()
1113
- .forEach( (tb: any) => {
1114
- set.add( tb );
1115
- });
1116
- });
1117
-
1118
- that.#set = set;
1119
-
1120
- if ( nameSpace ){
1121
- that.filter( ( e: any ) => ( e as LooseObject).nameSpace = nameSpace );
1122
- }
1123
-
1124
- return that;
1125
- }
1126
-
1127
- trigger( ev: string, data: any = {}, bubble: string = 'l' ): TSelector{
1128
- let
1129
- that = this
1130
- ;
1131
-
1132
- that.forEach( ( tb: any ) => {
1133
- tb.trigger( ev, data, bubble );
1134
- });
1135
-
1136
- return that;
1137
- }
1138
-
1139
- /*
1140
- array method mapping
1141
- */
1142
-
1143
- at( index: number ): TSelector {
1144
- return $t( this.array.at( index ) ) as TbSelector;
1145
- }
1146
-
1147
- concat( items: TSelector ): TSelector {
1148
-
1149
- let
1150
- that = this
1151
- ;
1152
-
1153
- items.forEach( ( tb: any) => {
1154
- that.#set.add( tb );
1155
- });
1156
-
1157
- return that;
1158
- }
1159
-
1160
- entries(): IterableIterator<[number, any]> {
1161
- return this.array.entries();
1162
- }
1163
-
1164
- every( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): boolean {
1165
- return this.array.every( predicate, thisArg );
1166
- }
1167
-
1168
- filter( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): TSelector {
1169
- return $t( this.array.filter( predicate, thisArg ) );
1170
- }
1171
-
1172
- forEach( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): TSelector {
1173
- let
1174
- that = this
1175
- ;
1176
- that.array.forEach( predicate, thisArg );
1177
- return that;
1178
- }
1179
-
1180
- includes( item: any ): boolean{
1181
- return this.array.indexOf( item ) !== -1;
1182
- }
1183
-
1184
- indexOf( item: any, start?: number ): number{
1185
- return this.array.indexOf( item, start );
1186
- }
1187
-
1188
- map( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): Array<any>{
1189
- return this.array.map( predicate, thisArg );
1190
- }
1191
-
1192
- pop(): any {
1193
-
1194
- let
1195
- that = this,
1196
- arr = that.array,
1197
- result = arr.pop()
1198
- ;
1199
-
1200
- that.#set = new Set( arr );
1201
-
1202
- return result as any;
1203
- }
1204
-
1205
- push( item: any ): TSelector {
1206
- let
1207
- that = this
1208
- ;
1209
- that.#set.add( item );
1210
- return that;
1211
- }
1212
-
1213
- shift(): any | undefined {
1214
- let
1215
- that = this,
1216
- first = this.array.shift() as any
1217
- ;
1218
- that.#set.delete( first );
1219
- return first;
1220
- }
1221
-
1222
- slice( start: number, end?: number ): TSelector {
1223
- return $t( this.array.slice( start, end ) );
1224
- }
1225
-
1226
- some( predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any ): boolean{
1227
- return this.array.some( predicate, thisArg );
1228
- }
1229
-
1230
- splice( start: number, deleteCount?: number | undefined ): TSelector;
1231
- splice( start: number, deleteCount: number, ...items: never[] ): TSelector {
1232
- let
1233
- that = this,
1234
- arr = that.array,
1235
- result = arr.splice( start, deleteCount, ...items )
1236
- ;
1237
-
1238
- return $t( result );
1239
- }
1240
-
1241
- }
1242
-
1243
- export interface TSelector extends TbSelector{};
1244
-
1245
- export const $d = ( selection: selection, element: any = document ): DSelector => {
1246
-
1247
- let
1248
- set = new Set<HTMLElement>()
1249
- ;
1250
-
1251
- if ( selection instanceof Array ){
1252
- selection.forEach( value => {
1253
- $d( value, element ).forEach( n => {
1254
- set.add( n );
1255
- });
1256
- });
1257
- return new DomSelector( [...set] );
1258
- } else {
1259
- return new DomSelector( selection, element );
1260
- }
1261
- }
1262
-
1263
- export const $t = ( selection?: selection, element: any = document ): TSelector => {
1264
- return $d( selection, element ).$t();
1265
- }
1266
-
1267
- export type singleSelector = string | ShadowRoot | HTMLElement | HTMLElement[] | HTMLCollection | NodeList | DSelector | MC | DC | TSelector | undefined;
1268
-
1269
- export type selection = singleSelector | singleSelector[];