@thednp/shorty 2.0.7 → 2.0.8

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 (258) hide show
  1. package/README.md +54 -26
  2. package/dist/shorty.cjs +1 -1
  3. package/dist/shorty.cjs.map +1 -1
  4. package/dist/shorty.d.ts +235 -138
  5. package/dist/shorty.js +1 -1
  6. package/dist/shorty.js.map +1 -1
  7. package/dist/shorty.mjs +536 -600
  8. package/dist/shorty.mjs.map +1 -1
  9. package/package.json +9 -8
  10. package/.eslintrc.cjs +0 -224
  11. package/.lgtm.yml +0 -8
  12. package/.prettierrc.json +0 -15
  13. package/src/attr/getAttribute.ts +0 -11
  14. package/src/attr/getAttributeNS.ts +0 -12
  15. package/src/attr/hasAttribute.ts +0 -11
  16. package/src/attr/hasAttributeNS.ts +0 -15
  17. package/src/attr/removeAttribute.ts +0 -10
  18. package/src/attr/removeAttributeNS.ts +0 -14
  19. package/src/attr/setAttribute.ts +0 -11
  20. package/src/attr/setAttributeNS.ts +0 -16
  21. package/src/blocks/documentBody.ts +0 -5
  22. package/src/blocks/documentElement.ts +0 -5
  23. package/src/blocks/documentHead.ts +0 -5
  24. package/src/boolean/isApple.ts +0 -15
  25. package/src/boolean/isFirefox.ts +0 -9
  26. package/src/boolean/isMobile.ts +0 -14
  27. package/src/boolean/support3DTransform.ts +0 -7
  28. package/src/boolean/supportAnimation.ts +0 -7
  29. package/src/boolean/supportPassive.ts +0 -29
  30. package/src/boolean/supportTouch.ts +0 -9
  31. package/src/boolean/supportTransform.ts +0 -7
  32. package/src/boolean/supportTransition.ts +0 -7
  33. package/src/class/addClass.ts +0 -11
  34. package/src/class/hasClass.ts +0 -11
  35. package/src/class/removeClass.ts +0 -11
  36. package/src/event/off.ts +0 -18
  37. package/src/event/on.ts +0 -18
  38. package/src/event/one.ts +0 -26
  39. package/src/get/getBoundingClientRect.ts +0 -44
  40. package/src/get/getDocument.ts +0 -24
  41. package/src/get/getDocumentBody.ts +0 -13
  42. package/src/get/getDocumentElement.ts +0 -13
  43. package/src/get/getDocumentHead.ts +0 -14
  44. package/src/get/getElementAnimationDelay.ts +0 -25
  45. package/src/get/getElementAnimationDuration.ts +0 -25
  46. package/src/get/getElementStyle.ts +0 -25
  47. package/src/get/getElementTransitionDelay.ts +0 -25
  48. package/src/get/getElementTransitionDuration.ts +0 -25
  49. package/src/get/getNodeScroll.ts +0 -22
  50. package/src/get/getParentNode.ts +0 -28
  51. package/src/get/getRectRelativeToOffsetParent.ts +0 -43
  52. package/src/get/getUID.ts +0 -42
  53. package/src/get/getWindow.ts +0 -23
  54. package/src/index.ts +0 -571
  55. package/src/interface/boundingClientRect.d.ts +0 -10
  56. package/src/interface/css4Declaration.d.ts +0 -4
  57. package/src/interface/customElement.d.ts +0 -8
  58. package/src/interface/event.d.ts +0 -255
  59. package/src/interface/fn.ts +0 -1
  60. package/src/interface/navigatorUA.d.ts +0 -15
  61. package/src/interface/offsetRect.d.ts +0 -6
  62. package/src/interface/originalEvent.d.ts +0 -4
  63. package/src/is/isArray.ts +0 -10
  64. package/src/is/isCanvas.ts +0 -13
  65. package/src/is/isCustomElement.ts +0 -15
  66. package/src/is/isDocument.ts +0 -14
  67. package/src/is/isElement.ts +0 -28
  68. package/src/is/isElementInScrollRange.ts +0 -20
  69. package/src/is/isElementInViewport.ts +0 -21
  70. package/src/is/isElementsArray.ts +0 -13
  71. package/src/is/isFunction.ts +0 -12
  72. package/src/is/isHTMLCollection.ts +0 -12
  73. package/src/is/isHTMLElement.ts +0 -13
  74. package/src/is/isHTMLImageElement.ts +0 -12
  75. package/src/is/isJSON.ts +0 -20
  76. package/src/is/isMap.ts +0 -11
  77. package/src/is/isMedia.ts +0 -26
  78. package/src/is/isNode.ts +0 -19
  79. package/src/is/isNodeList.ts +0 -13
  80. package/src/is/isNumber.ts +0 -10
  81. package/src/is/isObject.ts +0 -10
  82. package/src/is/isRTL.ts +0 -11
  83. package/src/is/isSVGElement.ts +0 -13
  84. package/src/is/isScaledElement.ts +0 -20
  85. package/src/is/isShadowRoot.ts +0 -12
  86. package/src/is/isString.ts +0 -10
  87. package/src/is/isTableElement.ts +0 -17
  88. package/src/is/isWeakMap.ts +0 -11
  89. package/src/is/isWindow.ts +0 -13
  90. package/src/misc/ArrayFrom.ts +0 -11
  91. package/src/misc/Float32ArrayFrom.ts +0 -11
  92. package/src/misc/Float64ArrayFrom.ts +0 -11
  93. package/src/misc/ObjectAssign.ts +0 -54
  94. package/src/misc/ObjectEntries.ts +0 -11
  95. package/src/misc/ObjectFromEntries.ts +0 -11
  96. package/src/misc/ObjectHasOwn.ts +0 -18
  97. package/src/misc/ObjectKeys.ts +0 -11
  98. package/src/misc/ObjectValues.ts +0 -12
  99. package/src/misc/createCustomEvent.ts +0 -31
  100. package/src/misc/createElement.ts +0 -36
  101. package/src/misc/createElementNS.ts +0 -40
  102. package/src/misc/data.ts +0 -80
  103. package/src/misc/dispatchEvent.ts +0 -10
  104. package/src/misc/distinct.ts +0 -19
  105. package/src/misc/emulateAnimationEnd.ts +0 -43
  106. package/src/misc/emulateTransitionEnd.ts +0 -42
  107. package/src/misc/focus.ts +0 -10
  108. package/src/misc/focusTrap.ts +0 -67
  109. package/src/misc/getInstance.ts +0 -9
  110. package/src/misc/noop.ts +0 -6
  111. package/src/misc/normalizeOptions.ts +0 -58
  112. package/src/misc/normalizeValue.ts +0 -32
  113. package/src/misc/passiveHandler.ts +0 -6
  114. package/src/misc/reflow.ts +0 -9
  115. package/src/misc/setElementStyle.ts +0 -26
  116. package/src/misc/timer.ts +0 -91
  117. package/src/misc/toLowerCase.ts +0 -9
  118. package/src/misc/toUpperCase.ts +0 -9
  119. package/src/selectors/closest.ts +0 -23
  120. package/src/selectors/getCustomElements.ts +0 -19
  121. package/src/selectors/getElementById.ts +0 -16
  122. package/src/selectors/getElementsByClassName.ts +0 -22
  123. package/src/selectors/getElementsByTagName.ts +0 -22
  124. package/src/selectors/matches.ts +0 -11
  125. package/src/selectors/querySelector.ts +0 -25
  126. package/src/selectors/querySelectorAll.ts +0 -19
  127. package/src/strings/DOMContentLoadedEvent.ts +0 -5
  128. package/src/strings/DOMMouseScrollEvent.ts +0 -5
  129. package/src/strings/abortEvent.ts +0 -5
  130. package/src/strings/addEventListener.ts +0 -5
  131. package/src/strings/animationDelay.ts +0 -5
  132. package/src/strings/animationDuration.ts +0 -5
  133. package/src/strings/animationEndEvent.ts +0 -5
  134. package/src/strings/animationName.ts +0 -5
  135. package/src/strings/ariaChecked.ts +0 -5
  136. package/src/strings/ariaDescribedBy.ts +0 -5
  137. package/src/strings/ariaDescription.ts +0 -5
  138. package/src/strings/ariaExpanded.ts +0 -5
  139. package/src/strings/ariaHasPopup.ts +0 -5
  140. package/src/strings/ariaHidden.ts +0 -5
  141. package/src/strings/ariaLabel.ts +0 -5
  142. package/src/strings/ariaLabelledBy.ts +0 -5
  143. package/src/strings/ariaModal.ts +0 -5
  144. package/src/strings/ariaPressed.ts +0 -5
  145. package/src/strings/ariaSelected.ts +0 -5
  146. package/src/strings/ariaValueMax.ts +0 -5
  147. package/src/strings/ariaValueMin.ts +0 -5
  148. package/src/strings/ariaValueNow.ts +0 -5
  149. package/src/strings/ariaValueText.ts +0 -5
  150. package/src/strings/beforeunloadEvent.ts +0 -5
  151. package/src/strings/bezierEasings.ts +0 -32
  152. package/src/strings/blurEvent.ts +0 -5
  153. package/src/strings/changeEvent.ts +0 -5
  154. package/src/strings/contextmenuEvent.ts +0 -5
  155. package/src/strings/dragEvent.ts +0 -5
  156. package/src/strings/dragendEvent.ts +0 -5
  157. package/src/strings/dragenterEvent.ts +0 -5
  158. package/src/strings/dragleaveEvent.ts +0 -5
  159. package/src/strings/dragoverEvent.ts +0 -5
  160. package/src/strings/dragstartEvent.ts +0 -5
  161. package/src/strings/errorEvent.ts +0 -5
  162. package/src/strings/focusEvent.ts +0 -5
  163. package/src/strings/focusEvents.ts +0 -5
  164. package/src/strings/focusableSelector.ts +0 -4
  165. package/src/strings/focusinEvent.ts +0 -5
  166. package/src/strings/focusoutEvent.ts +0 -5
  167. package/src/strings/gesturechangeEvent.ts +0 -5
  168. package/src/strings/gestureendEvent.ts +0 -5
  169. package/src/strings/gesturestartEvent.ts +0 -5
  170. package/src/strings/keyAlt.ts +0 -7
  171. package/src/strings/keyArrowDown.ts +0 -7
  172. package/src/strings/keyArrowLeft.ts +0 -7
  173. package/src/strings/keyArrowRight.ts +0 -7
  174. package/src/strings/keyArrowUp.ts +0 -7
  175. package/src/strings/keyBackspace.ts +0 -7
  176. package/src/strings/keyCapsLock.ts +0 -7
  177. package/src/strings/keyControl.ts +0 -7
  178. package/src/strings/keyDelete.ts +0 -7
  179. package/src/strings/keyEnter.ts +0 -7
  180. package/src/strings/keyEscape.ts +0 -7
  181. package/src/strings/keyInsert.ts +0 -7
  182. package/src/strings/keyMeta.ts +0 -7
  183. package/src/strings/keyNumpadEnter.ts +0 -7
  184. package/src/strings/keyPause.ts +0 -7
  185. package/src/strings/keyScrollLock.ts +0 -7
  186. package/src/strings/keyShift.ts +0 -7
  187. package/src/strings/keySpace.ts +0 -7
  188. package/src/strings/keyTab.ts +0 -7
  189. package/src/strings/keyboardEventKeys.ts +0 -26
  190. package/src/strings/keydownEvent.ts +0 -5
  191. package/src/strings/keypressEvent.ts +0 -5
  192. package/src/strings/keyupEvent.ts +0 -5
  193. package/src/strings/loadEvent.ts +0 -5
  194. package/src/strings/loadstartEvent.ts +0 -5
  195. package/src/strings/mouseClickEvents.ts +0 -5
  196. package/src/strings/mouseHoverEvents.ts +0 -7
  197. package/src/strings/mouseSwipeEvents.ts +0 -10
  198. package/src/strings/mouseclickEvent.ts +0 -5
  199. package/src/strings/mousedblclickEvent.ts +0 -5
  200. package/src/strings/mousedownEvent.ts +0 -5
  201. package/src/strings/mouseenterEvent.ts +0 -5
  202. package/src/strings/mousehoverEvent.ts +0 -5
  203. package/src/strings/mouseinEvent.ts +0 -5
  204. package/src/strings/mouseleaveEvent.ts +0 -5
  205. package/src/strings/mousemoveEvent.ts +0 -5
  206. package/src/strings/mouseoutEvent.ts +0 -5
  207. package/src/strings/mouseoverEvent.ts +0 -5
  208. package/src/strings/mouseupEvent.ts +0 -5
  209. package/src/strings/mousewheelEvent.ts +0 -5
  210. package/src/strings/moveEvent.ts +0 -5
  211. package/src/strings/nativeEvents.ts +0 -108
  212. package/src/strings/offsetHeight.ts +0 -5
  213. package/src/strings/offsetWidth.ts +0 -5
  214. package/src/strings/orientationchangeEvent.ts +0 -5
  215. package/src/strings/pointercancelEvent.ts +0 -5
  216. package/src/strings/pointerdownEvent.ts +0 -5
  217. package/src/strings/pointerleaveEvent.ts +0 -5
  218. package/src/strings/pointermoveEvent.ts +0 -5
  219. package/src/strings/pointerupEvent.ts +0 -5
  220. package/src/strings/readystatechangeEvent.ts +0 -5
  221. package/src/strings/removeEventListener.ts +0 -5
  222. package/src/strings/resetEvent.ts +0 -5
  223. package/src/strings/resizeEvent.ts +0 -5
  224. package/src/strings/scrollEvent.ts +0 -5
  225. package/src/strings/scrollHeight.ts +0 -5
  226. package/src/strings/scrollWidth.ts +0 -5
  227. package/src/strings/selectEvent.ts +0 -5
  228. package/src/strings/selectendEvent.ts +0 -5
  229. package/src/strings/selectstartEvent.ts +0 -5
  230. package/src/strings/submitEvent.ts +0 -5
  231. package/src/strings/tabindex.ts +0 -5
  232. package/src/strings/touchEvents.ts +0 -10
  233. package/src/strings/touchcancelEvent.ts +0 -5
  234. package/src/strings/touchendEvent.ts +0 -5
  235. package/src/strings/touchmoveEvent.ts +0 -5
  236. package/src/strings/touchstartEvent.ts +0 -5
  237. package/src/strings/transitionDelay.ts +0 -5
  238. package/src/strings/transitionDuration.ts +0 -5
  239. package/src/strings/transitionEndEvent.ts +0 -5
  240. package/src/strings/transitionProperty.ts +0 -5
  241. package/src/strings/unloadEvent.ts +0 -5
  242. package/src/strings/userAgent.ts +0 -7
  243. package/src/strings/userAgentData.ts +0 -8
  244. package/test/att.test.ts +0 -43
  245. package/test/boolean.test.ts +0 -30
  246. package/test/class.test.ts +0 -26
  247. package/test/event.test.ts +0 -39
  248. package/test/fixtures/custom-elem.js +0 -18
  249. package/test/fixtures/getExampleDom.ts +0 -52
  250. package/test/fixtures/style.css +0 -18
  251. package/test/get.test.ts +0 -150
  252. package/test/is.test.ts +0 -240
  253. package/test/misc.test.ts +0 -400
  254. package/test/selectors.test.ts +0 -90
  255. package/tsconfig.json +0 -36
  256. package/vite.config.mts +0 -45
  257. package/vitest.config-ui.mts +0 -26
  258. package/vitest.config.mts +0 -25
package/test/misc.test.ts DELETED
@@ -1,400 +0,0 @@
1
- import { expect, it, describe, vi, afterEach } from 'vitest';
2
- import { getExampleDOM } from './fixtures/getExampleDom';
3
- import * as SHORTY from '../src/index';
4
- import "./fixtures/style.css";
5
-
6
- describe('Shorty Library Tests - MISC', () => {
7
- const wrapper = document.createElement('div');
8
- document.body.append(wrapper);
9
-
10
- afterEach(async () => {
11
- wrapper.innerHTML = '';
12
- });
13
-
14
- it('Test misc folder - emulateTransitionEnd - no transition', async () => {
15
- vi.useFakeTimers();
16
- const container = getExampleDOM();
17
- wrapper.append(container);
18
- await vi.waitFor(() => container.querySelector('.alert'), 200);
19
-
20
- const {
21
- dispatchEvent,
22
- emulateTransitionEnd,
23
- createCustomEvent,
24
- reflow,
25
- querySelector,
26
- setElementStyle,
27
- getElementStyle,
28
- removeClass,
29
- addClass,
30
- one,
31
- } = SHORTY;
32
-
33
- const el = querySelector('.alert', container) as HTMLElement;
34
- const btn = querySelector('.btn-close', el) as HTMLButtonElement;
35
- const alertHideEvent = createCustomEvent('hide-alert',);
36
-
37
- setElementStyle(el, {
38
- transition: 'none',
39
- transitionProperty: 'none',
40
- transitionDuration: '0s',
41
- 'transition-delay': '0s',
42
- '--transition-prop': 'none',
43
- });
44
-
45
- expect(getElementStyle(el, 'transitionProperty')).to.equal('none');
46
- expect(getElementStyle(el, 'transition-duration')).to.equal('0s');
47
- expect(getElementStyle(el, 'transitionDelay')).to.equal('0s');
48
- expect(getElementStyle(el, '--transition-prop')).to.equal('none');
49
-
50
- one(el, 'hide-alert', function hideHandler(e: typeof alertHideEvent) {
51
- expect(e.target).to.equal(el);
52
- expect(e.relatedTarget).to.equal(btn);
53
- });
54
-
55
- one(btn, 'click', function handleBtn(e) {
56
- expect(e.target).to.equal(btn);
57
- removeClass(el, 'show');
58
- reflow(el);
59
- alertHideEvent.relatedTarget = btn;
60
- dispatchEvent(el, alertHideEvent);
61
- emulateTransitionEnd(el, function () {
62
- addClass(el, 'show');
63
- vi.advanceTimersByTime(350);
64
- });
65
- });
66
-
67
- btn.click();
68
- });
69
-
70
- it('Test misc folder - emulateTransitionEnd - default', async () => {
71
- vi.useFakeTimers();
72
- const container = getExampleDOM();
73
- wrapper.append(container);
74
- await vi.waitFor(() => container.querySelector('.alert'), 200);
75
-
76
- const {
77
- dispatchEvent,
78
- emulateTransitionEnd,
79
- createCustomEvent,
80
- reflow,
81
- querySelector,
82
- removeClass,
83
- addClass,
84
- one,
85
- focus,
86
- } = SHORTY;
87
-
88
- const el = querySelector('.alert', container) as HTMLElement;
89
- const btn = querySelector('.btn-close', el) as HTMLButtonElement;
90
- const alertHideEvent = createCustomEvent('hide-alert', { relatedTarget: null });
91
-
92
- one(el, 'hide-alert', function hideHandler(e: typeof alertHideEvent) {
93
- expect(e.target).to.equal(el);
94
- expect(e.relatedTarget).to.equal(btn);
95
- });
96
-
97
- one(btn, 'click', function handleBtn(e) {
98
- expect(e.target).to.equal(btn);
99
- removeClass(el, 'show');
100
- reflow(el);
101
- alertHideEvent.relatedTarget = btn;
102
- dispatchEvent(el, alertHideEvent);
103
- emulateTransitionEnd(el, function () {
104
- addClass(el, 'show');
105
- focus(btn, { preventScroll: false });
106
- console.log('transitionend triggered');
107
- vi.advanceTimersByTime(350);
108
- });
109
- });
110
-
111
- btn.click();
112
- });
113
-
114
- it("Can use focus trap", async () => {
115
- const container = getExampleDOM();
116
- const { focus, toggleFocusTrap, focusableSelector } = SHORTY;
117
- wrapper.append(container);
118
- await vi.waitFor(() => container.querySelector('.alert'), 200);
119
- const element = container.querySelector<HTMLElement>('.alert')!;
120
- const firstFocusable = element.querySelector<SHORTY.FocusableElement>(focusableSelector)!;
121
- const table = container.querySelector<HTMLElement>('table')!;
122
- const doc = element.ownerDocument!;
123
-
124
- focus(firstFocusable);
125
- toggleFocusTrap(element);
126
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
127
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
128
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
129
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
130
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
131
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
132
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
133
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
134
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
135
- element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
136
-
137
- await vi.waitFor(() => {
138
- expect(element).to.contain(doc.activeElement);
139
- }, 50)
140
- toggleFocusTrap(element);
141
-
142
- toggleFocusTrap(table);
143
- table.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', shiftKey: true }));
144
- table.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab' }));
145
-
146
- await vi.waitFor(() => {
147
- expect(element).to.contain(doc.activeElement);
148
- }, 50)
149
- toggleFocusTrap(table);
150
- });
151
-
152
- it('Test misc folder - emulateAnimationEnd - default', async () => {
153
- vi.useFakeTimers();
154
- const container = getExampleDOM();
155
- wrapper.append(container);
156
- const { emulateAnimationEnd, getElementStyle, querySelector, addClass } = SHORTY;
157
- await vi.waitFor(() => container.querySelector('.alert'), 200);
158
-
159
- const el = querySelector('.alert') as HTMLElement;
160
-
161
- addClass(el, 'animate-test');
162
- emulateAnimationEnd(el, () => {
163
- console.log('animationend fired - default');
164
- vi.advanceTimersByTime(350);
165
- });
166
- await vi.waitFor(() => {
167
- expect(getElementStyle(el, 'animationName'), 'animationName').to.equal('animate-test');
168
- expect(getElementStyle(el, 'animationDuration'), 'animationDuration').to.equal('0.3s');
169
- expect(getElementStyle(el, 'animationDelay'), 'animationDelay').to.equal('0s');
170
- }, 351)
171
- });
172
-
173
-
174
- it('Test misc folder - emulateAnimationEnd - no duration', async () => {
175
- vi.useFakeTimers();
176
- const container = getExampleDOM();
177
- wrapper.append(container);
178
- await vi.waitFor(() => container.querySelector('.alert'), 200);
179
-
180
- const { emulateAnimationEnd, setElementStyle, getElementStyle, querySelector, addClass } =
181
- SHORTY;
182
-
183
- const el = querySelector('.alert', container)!;
184
- // setElementStyle(el, { animationDuration: '0.1s' });
185
- setElementStyle(el, { animationDuration: '0s' });
186
-
187
- addClass(el, 'animate-test');
188
-
189
- emulateAnimationEnd(el, () => {
190
- console.log('animationend fired no duration');
191
- vi.advanceTimersByTime(150);
192
- });
193
-
194
- await vi.waitFor(() => {
195
- expect(getElementStyle(el, 'animationName'), 'animationName').to.equal('animate-test');
196
- expect(getElementStyle(el, 'animationDuration'), 'animationDuration').to.equal('0s');
197
- expect(getElementStyle(el, 'animationDelay'), 'animationDelay').to.equal('0s');
198
- }, 50)
199
-
200
- });
201
-
202
- it('Test misc folder - everything else', async () => {
203
- const container = getExampleDOM();
204
- wrapper.append(container);
205
- await vi.waitFor(() => container.querySelector('.alert'), 200);
206
-
207
- const {
208
- ArrayFrom,
209
- Float32ArrayFrom,
210
- Float64ArrayFrom,
211
- distinct,
212
- noop,
213
- ObjectHasOwn,
214
- ObjectEntries,
215
- ObjectAssign,
216
- ObjectKeys,
217
- ObjectValues,
218
- // ObjectDefineProperty,
219
- ObjectFromEntries,
220
- createElement,
221
- createElementNS,
222
- Data,
223
- getInstance,
224
- normalizeOptions,
225
- Timer,
226
- toLowerCase,
227
- toUpperCase,
228
- querySelector,
229
- getElementsByClassName,
230
- } = SHORTY;
231
-
232
-
233
- const el = querySelector('.alert', container)!;
234
- const table = querySelector('.table', container)!;
235
-
236
- const defaults = { op1: true, op2: true, op3: 5, title: null };
237
- const jsOps = { op1: false, op2: false, op3: 8, title: 'something' };
238
- expect(ObjectHasOwn(jsOps, 'op3')).to.be.true;
239
- expect(ObjectHasOwn(jsOps, 'momo')).to.be.false;
240
- // @ts-expect-error
241
- expect(ObjectHasOwn(null, 'momo')).to.be.false;
242
- expect(normalizeOptions(el, defaults, {}, 'bs'), 'normalizeOptions(data)').to.deep.equal({
243
- op1: false,
244
- op2: true,
245
- op3: 10,
246
- title: null,
247
- });
248
- // @ts-expect-error
249
- expect(normalizeOptions(el, defaults, jsOps, 'bs'), 'normalizeOptions(js)').to.deep.equal({
250
- op1: false,
251
- op2: false,
252
- op3: 8,
253
- title: 'something',
254
- });
255
- expect(noop()).to.be.undefined;
256
-
257
- // @ts-expect-error
258
- Timer.set('el', noop, 150);
259
- Timer.set(el, () => console.log(el.tagName + ' has timer of 150'), 150, 'alert');
260
- // @ts-expect-error
261
- expect(Timer.get('el', 'alert')).to.be.null;
262
- expect(Timer.get(el, 'alert')).to.not.be.undefined;
263
- // @ts-expect-error
264
- Timer.clear('el', 'alert');
265
- Timer.clear(el, 'alert');
266
- expect(Timer.get(el, 'alert')).to.be.null;
267
-
268
- Timer.set(el, () => console.log(el.tagName + ' has timer of 250'), 250);
269
- expect(Timer.get(el)).to.not.be.null;
270
- Timer.clear(el);
271
- expect(Timer.get(el)).to.be.null;
272
-
273
- expect([0, 1, 1, 2, 3, 3].filter(distinct), 'filter(DISTINCT)').to.deep.equal([0, 1, 2, 3]);
274
-
275
- expect(toLowerCase('textSample'), 'toLowerCase(string)').to.equal('textsample');
276
- expect(toUpperCase('textSample'), 'toUpperCase(string)').to.equal('TEXTSAMPLE');
277
-
278
- // expect(
279
- // Object.defineProperty({ c: 3}, 'a', { value: {b: 1}, writable: true }),
280
- // 'ObjectDefineProperty(object1, prop, value)',
281
- // ).to.deep.equal({ c: 3, a: {b: 1} });
282
- expect(
283
- ObjectAssign({ c: 3 }, { a: 1, b: 2 }),
284
- 'ObjectAssign(object1, object2)',
285
- ).to.deep.equal({ a: 1, b: 2, c: 3 });
286
- expect(ObjectEntries({ a: 1, b: 2 }), 'ObjectEntries(object)').to.deep.equal([
287
- ['a', 1],
288
- ['b', 2],
289
- ]);
290
- expect(ObjectKeys({ a: 1, b: 2 }), 'ObjectKeys(object)').to.deep.equal(['a', 'b']);
291
- expect(ObjectValues({ a: 1, b: 2 }), 'ObjectValues(object)').to.deep.equal([1, 2]);
292
-
293
- expect(Float32ArrayFrom([0, 1, 2, 3]), 'Float32ArrayFrom(array)').to.be.instanceOf(
294
- Float32Array,
295
- );
296
- expect(Float64ArrayFrom([0, 1, 2, 3]), 'Float64ArrayFrom(array)').to.be.instanceOf(
297
- Float64Array,
298
- );
299
- expect(Float64ArrayFrom([0, 1, 2, 3]).length, 'Float64ArrayFrom(array)').to.eq(4);
300
-
301
- expect(
302
- ArrayFrom(new Float32Array([0, 1, 2, 3])),
303
- 'ArrayFrom(Float32Array)',
304
- ).to.be.instanceOf(Array);
305
- expect(ArrayFrom(new Float64Array([0, 1, 2, 3])), 'Array(Float64Array)').to.be.instanceOf(
306
- Array,
307
- );
308
- expect(
309
- ArrayFrom(getElementsByClassName('table', container)),
310
- 'ArrayFrom(HTMLCollection)',
311
- ).to.deep.equal([table]);
312
-
313
- expect(createElement(), 'createElement()').to.be.undefined;
314
- expect(createElement('input'), 'createElement(string)').to.be.instanceOf(HTMLInputElement);
315
- const parag = createElement({
316
- tagName: 'p',
317
- className: 'lead',
318
- innerText: 'This is a newly created paragraph.',
319
- });
320
- expect(parag).to.be.instanceOf(HTMLParagraphElement)
321
- expect(parag?.className).to.contain('lead')
322
- expect(parag?.innerHTML).to.contain('This is a newly created paragraph.');
323
- expect(
324
- createElement({
325
- tagName: 'p',
326
- textContent: 'This is a newly created paragraph.',
327
- }),
328
- 'createElement(object)',
329
- ).to.be.instanceOf(HTMLParagraphElement)
330
- // .and.contain('This is a newly created paragraph.');
331
-
332
- expect(
333
- createElement({
334
- className: 'lead',
335
- innerText: 'This is a newly created paragraph.',
336
- }),
337
- 'createElement(incompleteObject)',
338
- ).to.be.undefined;
339
-
340
- expect(createElementNS(''), 'createElementNS()').to.be.undefined;
341
- expect(
342
- createElementNS('http://www.w3.org/2000/svg', 'svg'),
343
- 'createElementNS(ns, string)',
344
- ).to.be.instanceOf(SVGElement);
345
- expect(
346
- createElementNS<HTMLButtonElement>('http://www.w3.org/1999/xhtml', {
347
- tagName: 'button',
348
- className: 'btn',
349
- innerText: 'New Item',
350
- textContent: 'New Item',
351
- }),
352
- 'createElementNS(ns, object)',
353
- )
354
- .to.be.instanceOf(HTMLButtonElement)
355
- // .and.contain('btn')
356
- // .and.contain('New Item');
357
-
358
- expect(
359
- createElementNS<SVGPathElement & { d: string }>('http://www.w3.org/2000/svg', {
360
- tagName: 'path',
361
- d: 'M98,158l157,156L411,158l27,27L255,368L71,185L98,158z',
362
- }),
363
- 'createElementNS(ns, object)',
364
- ).to.be.instanceOf(SVGPathElement)
365
- .and.have.property('d').equal('M98,158l157,156L411,158l27,27L255,368L71,185L98,158z');
366
-
367
- expect(
368
- createElementNS<SVGPathElement & { d: string }>('http://www.w3.org/2000/svg', {
369
- tagName: '',
370
- className: 'icon',
371
- d: 'M98,158l157,156L411,158l27,27L255,368L71,185L98,158z',
372
- }),
373
- 'createElementNS(ns, incompleteObject)',
374
- ).to.be.undefined;
375
-
376
- // @ts-expect-error
377
- Data.set(el);
378
- // @ts-expect-error
379
- expect(Data.get(el), 'not enough params - Data.get(node)').to.be.null;
380
-
381
- // @ts-expect-error
382
- Data.set('str', 'strKey', 'data');
383
- // @ts-expect-error
384
- expect(Data.get('str', 'strKey'), 'not HTMLElement - Data.get(string, string, string)').to
385
- .be.null;
386
-
387
- Data.set(el, 'Alert', { element: el });
388
- expect(Data.get(el, 'Alert'), 'Data.get(node, key)').to.deep.equal({ element: el });
389
- expect(getInstance(el, 'Alert'), 'getInstance(node, key)').to.deep.equal({ element: el });
390
- expect(Data.getAllFor('Alert')?.size, 'Data.getAllFor(string).size').to.equal(1);
391
-
392
- Data.remove(el, 'Alert');
393
- expect(Data.get(el, 'Alert'), 'removed - Data.get(node, string)').to.be.null;
394
- expect(getInstance(el, 'Alert'), 'removed - getInstance(node, string)').to.be.null;
395
- expect(Data.getAllFor('Alert'), 'removed - Data.getAllFor(string)').to.be.null;
396
- Data.remove(el, 'Alert');
397
-
398
- expect(ObjectFromEntries([['a', 1], ['b', 2]])).to.deep.equal({ a: 1, b: 2 })
399
- });
400
- });
@@ -1,90 +0,0 @@
1
- import { expect, it, describe, vi, afterEach } from 'vitest';
2
- import { getExampleDOM } from './fixtures/getExampleDom';
3
- import * as SHORTY from '../src/index';
4
- import CustomElem from './fixtures/custom-elem';
5
- import "./fixtures/style.css";
6
-
7
- describe('Shorty Library Tests', () => {
8
- const wrapper = document.createElement('div');
9
- document.body.append(wrapper);
10
- afterEach(async () => {
11
- wrapper.innerHTML = '';
12
- });
13
-
14
- it('Test selectors folder', () => {
15
- const container = getExampleDOM();
16
- wrapper.append(container);
17
-
18
- const {
19
- closest,
20
- getCustomElements,
21
- getElementById,
22
- getElementsByClassName,
23
- getElementsByTagName,
24
- matches,
25
- querySelector,
26
- querySelectorAll,
27
- } = SHORTY;
28
-
29
- const el = querySelector('.alert', container);
30
- if (!el) return;
31
- const win = window;
32
-
33
- const CE = new CustomElem();
34
- win.document.body.append(CE);
35
-
36
- expect(querySelectorAll('div'), 'querySelectorAll(div)').to.have.length(3);
37
- expect(querySelectorAll('div', win.document), 'querySelectorAll(div, parent)').to.have.length(3);
38
-
39
- // @ts-expect-error
40
- expect(querySelector(), 'querySelector()').to.be.null;
41
- expect(querySelector(el), 'querySelector(node)').to.equal(el);
42
- expect(querySelector('.alert'), 'querySelector(selector)').to.not.be.null;
43
- expect(querySelector('.alert', win.document), 'querySelector(selector, parent)').to.eq(el);
44
- // @ts-expect-error
45
- expect(closest(), 'closest()').to.be.null;
46
- // @ts-expect-error
47
- expect(closest(el)).to.be.null;
48
- expect(closest(el, 'wombat'), 'closest(el, invalidTagSelector)').to.be.null;
49
- expect(closest(el, 'body'), 'closest(body)').to.eq(win.document.body);
50
-
51
- expect(getCustomElements(), 'getCustomElements()').to.have.lengthOf(1);
52
- expect(getCustomElements(win.document), 'getCustomElements(expected)').to.deep.equal([CE]);
53
-
54
- // @ts-expect-error
55
- expect(getElementById(), 'getElementById()').to.be.null;
56
- expect(getElementById('alertDemo'), 'getElementById(id)').to.not.be.null;
57
- expect(
58
- getElementById('alertDemo', win.document),
59
- 'getElementById(id, parent)',
60
- ).to.be.instanceOf(win.HTMLDivElement);
61
-
62
- // @ts-expect-error
63
- expect(getElementsByClassName(), 'getElementsByClassName()').to.be.instanceOf(
64
- HTMLCollection,
65
- );
66
- expect(
67
- getElementsByClassName('alert'),
68
- 'getElementsByClassName(selector)',
69
- ).to.be.instanceOf(HTMLCollection);
70
- expect(
71
- getElementsByClassName('alert', win.document),
72
- 'getElementsByClassName(selector, parent)',
73
- ).to.be.instanceOf(win.HTMLCollection);
74
-
75
- // @ts-expect-error
76
- expect(getElementsByTagName(), 'getElementsByTagName()').to.be.instanceOf(HTMLCollection);
77
- expect(getElementsByTagName('div'), 'getElementsByTagName(selector)').to.be.instanceOf(
78
- HTMLCollection,
79
- );
80
- expect(
81
- getElementsByTagName('div', win.document),
82
- 'getElementsByTagName(selector, parent)',
83
- ).to.be.instanceOf(win.HTMLCollection);
84
-
85
- expect(
86
- [...getElementsByClassName('alert', win.document)].filter(x => matches(x, 'div')),
87
- 'matches(node, selector)',
88
- ).to.deep.equal([el]);
89
- });
90
- });
package/tsconfig.json DELETED
@@ -1,36 +0,0 @@
1
- {
2
- // https://janessagarrow.com/blog/typescript-and-esbuild/
3
- "compilerOptions": {
4
- "lib": ["DOM", "ESNext", "DOM.Iterable"],
5
- // "types": ["vite", "vite/client"],
6
- "rootDir": "./",
7
- "baseUrl": "./",
8
- "module": "ESNext",
9
- "target": "ESNext",
10
- "moduleResolution": "Bundler",
11
- "allowJs": true,
12
- "forceConsistentCasingInFileNames": true,
13
- "resolvePackageJsonImports": true,
14
- "useDefineForClassFields": true,
15
- "strict": true,
16
- "sourceMap": true,
17
- "resolveJsonModule": true,
18
- "esModuleInterop": true,
19
- "isolatedModules": true,
20
- "noUnusedLocals": true,
21
- "noUnusedParameters": true,
22
- "noImplicitReturns": true,
23
- "removeComments": false,
24
- "allowSyntheticDefaultImports": true,
25
- "noEmit": true,
26
- "checkJs": true,
27
- "skipLibCheck": true, // allows dts-bundle-generator to import from package.json
28
- "paths": {
29
- "~/*": [
30
- "./src/*"
31
- ],
32
- }
33
- },
34
- "include": ["src/*", "src/**/*"],
35
- "exclude": ["node_modules", "experiments", "coverage", "dist"],
36
- }
package/vite.config.mts DELETED
@@ -1,45 +0,0 @@
1
- import { resolve } from 'path';
2
- import { defineConfig } from 'vite';
3
- import dts from "vite-plugin-dts";
4
-
5
- const NAME = 'SHORTY';
6
-
7
- const fileName = {
8
- es: `shorty.mjs`,
9
- cjs: `shorty.cjs`,
10
- iife: `shorty.js`,
11
- };
12
-
13
- export default defineConfig({
14
- base: './',
15
- esbuild: {
16
- legalComments: 'none',
17
- minifyIdentifiers: false,
18
- },
19
- plugins: [
20
- dts({
21
- outDir: 'dist',
22
- copyDtsFiles: true,
23
- rollupTypes: true,
24
- })
25
- ],
26
- build: {
27
- rollupOptions: {
28
- preserveEntrySignatures: "strict",
29
- output: {
30
- compact: true
31
- }
32
- },
33
- minify: 'esbuild',
34
- emptyOutDir: true,
35
- outDir: 'dist',
36
- target: 'ESNext',
37
- lib: {
38
- entry: resolve(__dirname, 'src/index.ts'),
39
- name: NAME,
40
- formats: ['es', 'cjs', 'iife'],
41
- fileName: (format) => fileName[format],
42
- },
43
- sourcemap: true,
44
- },
45
- });
@@ -1,26 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- optimizeDeps: {
5
- include: [
6
- "@vitest/coverage-istanbul"
7
- ]
8
- },
9
- test: {
10
- css: true,
11
- globals: true,
12
- coverage: {
13
- provider: "istanbul",
14
- reporter: ["html", "text", "lcov"],
15
- enabled: true,
16
- include: ["src/**/*.{ts,tsx}"],
17
- },
18
- browser: {
19
- // provider: 'webdriverio', // or 'preview'
20
- enabled: true,
21
- headless: false,
22
- name: 'chrome', // browser name is required
23
- // enableUI: true
24
- },
25
- },
26
- });
package/vitest.config.mts DELETED
@@ -1,25 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- optimizeDeps: {
5
- include: [
6
- "@vitest/coverage-istanbul"
7
- ]
8
- },
9
- test: {
10
- css: true,
11
- globals: true,
12
- coverage: {
13
- provider: "istanbul",
14
- reporter: ["html", "text", "lcov"],
15
- enabled: true,
16
- include: ["src/**/*.{ts,tsx}"],
17
- },
18
- browser: {
19
- provider: 'playwright', // or 'webdriverio'
20
- enabled: true,
21
- headless: true,
22
- name: 'chromium', // browser name is required
23
- },
24
- },
25
- });