@thednp/shorty 2.0.4 → 2.0.6
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.
- package/README.md +5 -5
- package/dist/shorty.cjs +18 -1
- package/dist/shorty.cjs.map +1 -1
- package/dist/shorty.d.ts +31 -18
- package/dist/shorty.js +18 -1
- package/dist/shorty.js.map +1 -1
- package/dist/shorty.mjs +451 -386
- package/dist/shorty.mjs.map +1 -1
- package/dts.config.ts +1 -7
- package/package.json +16 -28
- package/src/attr/hasAttribute.ts +2 -1
- package/src/attr/hasAttributeNS.ts +5 -2
- package/src/attr/removeAttribute.ts +2 -1
- package/src/attr/removeAttributeNS.ts +5 -2
- package/src/attr/setAttributeNS.ts +6 -2
- package/src/boolean/isApple.ts +6 -4
- package/src/boolean/isFirefox.ts +2 -2
- package/src/boolean/isMobile.ts +4 -4
- package/src/boolean/support3DTransform.ts +4 -2
- package/src/boolean/supportAnimation.ts +4 -2
- package/src/boolean/supportPassive.ts +6 -6
- package/src/boolean/supportTouch.ts +3 -2
- package/src/boolean/supportTransform.ts +4 -2
- package/src/boolean/supportTransition.ts +4 -2
- package/src/event/off.ts +5 -1
- package/src/event/on.ts +5 -1
- package/src/event/one.ts +5 -5
- package/src/get/getBoundingClientRect.ts +10 -5
- package/src/get/getDocument.ts +4 -4
- package/src/get/getDocumentBody.ts +1 -1
- package/src/get/getDocumentElement.ts +1 -1
- package/src/get/getDocumentHead.ts +4 -2
- package/src/get/getElementAnimationDelay.ts +9 -6
- package/src/get/getElementAnimationDuration.ts +9 -6
- package/src/get/getElementStyle.ts +2 -2
- package/src/get/getElementTransitionDelay.ts +9 -8
- package/src/get/getElementTransitionDuration.ts +9 -8
- package/src/get/getNodeScroll.ts +4 -2
- package/src/get/getParentNode.ts +5 -5
- package/src/get/getRectRelativeToOffsetParent.ts +9 -6
- package/src/get/getUID.ts +1 -1
- package/src/get/getWindow.ts +2 -2
- package/src/index.ts +425 -415
- package/src/interface/event.d.ts +49 -41
- package/src/interface/fn.ts +1 -0
- package/src/interface/originalEvent.d.ts +1 -1
- package/src/is/isArray.ts +2 -1
- package/src/is/isCanvas.ts +2 -2
- package/src/is/isCustomElement.ts +5 -3
- package/src/is/isDocument.ts +3 -2
- package/src/is/isElement.ts +3 -2
- package/src/is/isElementInScrollRange.ts +3 -3
- package/src/is/isElementInViewport.ts +5 -4
- package/src/is/isElementsArray.ts +2 -2
- package/src/is/isFunction.ts +4 -2
- package/src/is/isHTMLCollection.ts +2 -2
- package/src/is/isHTMLElement.ts +1 -1
- package/src/is/isHTMLImageElement.ts +2 -2
- package/src/is/isJSON.ts +2 -2
- package/src/is/isMap.ts +3 -3
- package/src/is/isMedia.ts +9 -3
- package/src/is/isNode.ts +5 -3
- package/src/is/isNodeList.ts +2 -2
- package/src/is/isNumber.ts +2 -1
- package/src/is/isObject.ts +1 -1
- package/src/is/isRTL.ts +2 -2
- package/src/is/isSVGElement.ts +2 -2
- package/src/is/isScaledElement.ts +4 -3
- package/src/is/isShadowRoot.ts +2 -2
- package/src/is/isString.ts +2 -1
- package/src/is/isTableElement.ts +6 -3
- package/src/is/isWeakMap.ts +3 -3
- package/src/is/isWindow.ts +2 -2
- package/src/misc/Float32ArrayFrom.ts +3 -2
- package/src/misc/Float64ArrayFrom.ts +3 -2
- package/src/misc/ObjectAssign.ts +15 -4
- package/src/misc/ObjectEntries.ts +1 -1
- package/src/misc/ObjectHasOwn.ts +3 -2
- package/src/misc/ObjectKeys.ts +2 -1
- package/src/misc/ObjectValues.ts +3 -2
- package/src/misc/createCustomEvent.ts +8 -5
- package/src/misc/createElement.ts +6 -4
- package/src/misc/createElementNS.ts +3 -3
- package/src/misc/data.ts +4 -7
- package/src/misc/dispatchEvent.ts +2 -1
- package/src/misc/distinct.ts +2 -1
- package/src/misc/emulateAnimationEnd.ts +12 -9
- package/src/misc/emulateTransitionEnd.ts +11 -8
- package/src/misc/focus.ts +2 -1
- package/src/misc/focusTrap.ts +67 -0
- package/src/misc/getInstance.ts +1 -1
- package/src/misc/normalizeOptions.ts +16 -13
- package/src/misc/normalizeValue.ts +8 -6
- package/src/misc/setElementStyle.ts +9 -6
- package/src/misc/timer.ts +15 -8
- package/src/selectors/closest.ts +2 -2
- package/src/selectors/getCustomElements.ts +4 -5
- package/src/selectors/getElementById.ts +3 -3
- package/src/selectors/getElementsByClassName.ts +5 -5
- package/src/selectors/getElementsByTagName.ts +7 -5
- package/src/selectors/matches.ts +2 -1
- package/src/selectors/querySelector.ts +9 -6
- package/src/selectors/querySelectorAll.ts +6 -3
- package/src/strings/DOMContentLoadedEvent.ts +1 -1
- package/src/strings/DOMMouseScrollEvent.ts +1 -1
- package/src/strings/abortEvent.ts +1 -1
- package/src/strings/addEventListener.ts +1 -1
- package/src/strings/animationDelay.ts +1 -1
- package/src/strings/animationDuration.ts +1 -1
- package/src/strings/animationEndEvent.ts +1 -1
- package/src/strings/animationName.ts +1 -1
- package/src/strings/ariaChecked.ts +1 -1
- package/src/strings/ariaDescribedBy.ts +1 -1
- package/src/strings/ariaDescription.ts +1 -1
- package/src/strings/ariaExpanded.ts +1 -1
- package/src/strings/ariaHasPopup.ts +1 -1
- package/src/strings/ariaHidden.ts +1 -1
- package/src/strings/ariaLabel.ts +1 -1
- package/src/strings/ariaLabelledBy.ts +1 -1
- package/src/strings/ariaModal.ts +1 -1
- package/src/strings/ariaPressed.ts +1 -1
- package/src/strings/ariaSelected.ts +1 -1
- package/src/strings/ariaValueMax.ts +1 -1
- package/src/strings/ariaValueMin.ts +1 -1
- package/src/strings/ariaValueNow.ts +1 -1
- package/src/strings/ariaValueText.ts +1 -1
- package/src/strings/beforeunloadEvent.ts +1 -1
- package/src/strings/bezierEasings.ts +25 -25
- package/src/strings/blurEvent.ts +1 -1
- package/src/strings/changeEvent.ts +1 -1
- package/src/strings/contextmenuEvent.ts +1 -1
- package/src/strings/dragEvent.ts +1 -1
- package/src/strings/dragendEvent.ts +1 -1
- package/src/strings/dragenterEvent.ts +1 -1
- package/src/strings/dragleaveEvent.ts +1 -1
- package/src/strings/dragoverEvent.ts +1 -1
- package/src/strings/dragstartEvent.ts +1 -1
- package/src/strings/errorEvent.ts +1 -1
- package/src/strings/focusEvent.ts +1 -1
- package/src/strings/focusEvents.ts +1 -1
- package/src/strings/focusableSelector.ts +4 -0
- package/src/strings/focusinEvent.ts +1 -1
- package/src/strings/focusoutEvent.ts +1 -1
- package/src/strings/gesturechangeEvent.ts +1 -1
- package/src/strings/gestureendEvent.ts +1 -1
- package/src/strings/gesturestartEvent.ts +1 -1
- package/src/strings/keyAlt.ts +1 -1
- package/src/strings/keyArrowDown.ts +1 -1
- package/src/strings/keyArrowLeft.ts +1 -1
- package/src/strings/keyArrowRight.ts +1 -1
- package/src/strings/keyArrowUp.ts +1 -1
- package/src/strings/keyBackspace.ts +1 -1
- package/src/strings/keyCapsLock.ts +1 -1
- package/src/strings/keyControl.ts +1 -1
- package/src/strings/keyDelete.ts +1 -1
- package/src/strings/keyEnter.ts +1 -1
- package/src/strings/keyEscape.ts +1 -1
- package/src/strings/keyInsert.ts +1 -1
- package/src/strings/keyMeta.ts +1 -1
- package/src/strings/keyNumpadEnter.ts +1 -1
- package/src/strings/keyPause.ts +1 -1
- package/src/strings/keyScrollLock.ts +1 -1
- package/src/strings/keyShift.ts +1 -1
- package/src/strings/keySpace.ts +1 -1
- package/src/strings/keyTab.ts +1 -1
- package/src/strings/keyboardEventKeys.ts +19 -19
- package/src/strings/keydownEvent.ts +1 -1
- package/src/strings/keypressEvent.ts +1 -1
- package/src/strings/keyupEvent.ts +1 -1
- package/src/strings/loadEvent.ts +1 -1
- package/src/strings/loadstartEvent.ts +1 -1
- package/src/strings/mouseClickEvents.ts +1 -1
- package/src/strings/mouseHoverEvents.ts +3 -4
- package/src/strings/mouseSwipeEvents.ts +4 -4
- package/src/strings/mouseclickEvent.ts +1 -1
- package/src/strings/mousedblclickEvent.ts +1 -1
- package/src/strings/mousedownEvent.ts +1 -1
- package/src/strings/mouseenterEvent.ts +1 -1
- package/src/strings/mousehoverEvent.ts +1 -1
- package/src/strings/mouseinEvent.ts +1 -1
- package/src/strings/mouseleaveEvent.ts +1 -1
- package/src/strings/mousemoveEvent.ts +1 -1
- package/src/strings/mouseoutEvent.ts +1 -1
- package/src/strings/mouseoverEvent.ts +1 -1
- package/src/strings/mouseupEvent.ts +1 -1
- package/src/strings/mousewheelEvent.ts +1 -1
- package/src/strings/moveEvent.ts +1 -1
- package/src/strings/nativeEvents.ts +50 -50
- package/src/strings/offsetHeight.ts +1 -1
- package/src/strings/offsetWidth.ts +1 -1
- package/src/strings/orientationchangeEvent.ts +1 -1
- package/src/strings/pointercancelEvent.ts +1 -1
- package/src/strings/pointerdownEvent.ts +1 -1
- package/src/strings/pointerleaveEvent.ts +1 -1
- package/src/strings/pointermoveEvent.ts +1 -1
- package/src/strings/pointerupEvent.ts +1 -1
- package/src/strings/readystatechangeEvent.ts +1 -1
- package/src/strings/removeEventListener.ts +1 -1
- package/src/strings/resetEvent.ts +1 -1
- package/src/strings/resizeEvent.ts +1 -1
- package/src/strings/scrollEvent.ts +1 -1
- package/src/strings/scrollHeight.ts +1 -1
- package/src/strings/scrollWidth.ts +1 -1
- package/src/strings/selectEvent.ts +1 -1
- package/src/strings/selectendEvent.ts +1 -1
- package/src/strings/selectstartEvent.ts +1 -1
- package/src/strings/submitEvent.ts +1 -1
- package/src/strings/tabindex.ts +1 -1
- package/src/strings/touchEvents.ts +4 -4
- package/src/strings/touchcancelEvent.ts +1 -1
- package/src/strings/touchendEvent.ts +1 -1
- package/src/strings/touchmoveEvent.ts +1 -1
- package/src/strings/touchstartEvent.ts +1 -1
- package/src/strings/transitionDelay.ts +1 -1
- package/src/strings/transitionDuration.ts +1 -1
- package/src/strings/transitionEndEvent.ts +1 -1
- package/src/strings/transitionProperty.ts +1 -1
- package/src/strings/unloadEvent.ts +1 -1
- package/src/strings/userAgentData.ts +2 -2
- package/test/fixtures/getExampleDom.ts +12 -8
- package/test/is.test.ts +15 -11
- package/test/misc.test.ts +65 -17
- package/{vite.config.ts → vite.config.mts} +4 -8
- package/{vitest.config-ui.ts → vitest.config-ui.mts} +5 -0
- package/{vitest.config.ts → vitest.config.mts} +5 -0
package/src/interface/event.d.ts
CHANGED
|
@@ -52,11 +52,13 @@ interface BaseEvent<E = Event, C = unknown, T = unknown> {
|
|
|
52
52
|
*/
|
|
53
53
|
type NativeEvent<T = Element, E = Event> = BaseEvent<E, T, T>;
|
|
54
54
|
|
|
55
|
-
interface ClipboardEvent<T = Element>
|
|
55
|
+
interface ClipboardEvent<T = Element>
|
|
56
|
+
extends NativeEvent<T, NativeClipboardEvent> {
|
|
56
57
|
clipboardData: DataTransfer;
|
|
57
58
|
}
|
|
58
59
|
|
|
59
|
-
interface CompositionEvent<T = Element>
|
|
60
|
+
interface CompositionEvent<T = Element>
|
|
61
|
+
extends NativeEvent<T, NativeCompositionEvent> {
|
|
60
62
|
data: string;
|
|
61
63
|
}
|
|
62
64
|
|
|
@@ -73,11 +75,12 @@ interface PointerEvent<T = Element> extends MouseEvent<T, NativePointerEvent> {
|
|
|
73
75
|
twist: number;
|
|
74
76
|
width: number;
|
|
75
77
|
height: number;
|
|
76
|
-
pointerType:
|
|
78
|
+
pointerType: "mouse" | "pen" | "touch";
|
|
77
79
|
isPrimary: boolean;
|
|
78
80
|
}
|
|
79
81
|
|
|
80
|
-
interface FocusEvent<T = Element, R = Element>
|
|
82
|
+
interface FocusEvent<T = Element, R = Element>
|
|
83
|
+
extends NativeEvent<T, NativeFocusEvent> {
|
|
81
84
|
relatedTarget: (EventTarget & R) | null;
|
|
82
85
|
target: EventTarget & T;
|
|
83
86
|
}
|
|
@@ -90,20 +93,20 @@ interface ChangeEvent<T = FormControl> extends FormEvent<T> {
|
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
type ModifierKey =
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
|
106
|
-
|
|
|
96
|
+
| "Alt"
|
|
97
|
+
| "AltGraph"
|
|
98
|
+
| "CapsLock"
|
|
99
|
+
| "Control"
|
|
100
|
+
| "Fn"
|
|
101
|
+
| "FnLock"
|
|
102
|
+
| "Hyper"
|
|
103
|
+
| "Meta"
|
|
104
|
+
| "NumLock"
|
|
105
|
+
| "ScrollLock"
|
|
106
|
+
| "Shift"
|
|
107
|
+
| "Super"
|
|
108
|
+
| "Symbol"
|
|
109
|
+
| "SymbolLock";
|
|
107
110
|
|
|
108
111
|
interface KeyboardEvent<T = Element> extends UIEvent<T, NativeKeyboardEvent> {
|
|
109
112
|
altKey: boolean;
|
|
@@ -178,13 +181,15 @@ interface WheelEvent<T = Element> extends MouseEvent<T, NativeWheelEvent> {
|
|
|
178
181
|
deltaZ: number;
|
|
179
182
|
}
|
|
180
183
|
|
|
181
|
-
interface AnimationEvent<T = Element>
|
|
184
|
+
interface AnimationEvent<T = Element>
|
|
185
|
+
extends NativeEvent<T, NativeAnimationEvent> {
|
|
182
186
|
animationName: string;
|
|
183
187
|
elapsedTime: number;
|
|
184
188
|
pseudoElement: string;
|
|
185
189
|
}
|
|
186
190
|
|
|
187
|
-
interface TransitionEvent<T = Element>
|
|
191
|
+
interface TransitionEvent<T = Element>
|
|
192
|
+
extends NativeEvent<T, NativeTransitionEvent> {
|
|
188
193
|
elapsedTime: number;
|
|
189
194
|
propertyName: string;
|
|
190
195
|
pseudoElement: string;
|
|
@@ -197,7 +202,10 @@ interface TransitionEvent<T = Element> extends NativeEvent<T, NativeTransitionEv
|
|
|
197
202
|
type EventHandler<T = Element, E = Event | NativeEvent<T>> = (event: E) => void;
|
|
198
203
|
type NativeEventHandler<T = Element> = EventHandler<T, NativeEvent<T>>;
|
|
199
204
|
type ClipboardEventHandler<T = Element> = EventHandler<T, ClipboardEvent<T>>;
|
|
200
|
-
type CompositionEventHandler<T = Element> = EventHandler<
|
|
205
|
+
type CompositionEventHandler<T = Element> = EventHandler<
|
|
206
|
+
T,
|
|
207
|
+
CompositionEvent<T>
|
|
208
|
+
>;
|
|
201
209
|
type DragEventHandler<T = Element> = EventHandler<T, DragEvent<T>>;
|
|
202
210
|
type FocusEventHandler<T = Element> = EventHandler<T, FocusEvent<T>>;
|
|
203
211
|
type FormEventHandler<T = Element> = EventHandler<T, FormEvent<T>>;
|
|
@@ -213,35 +221,35 @@ type TransitionEventHandler<T = Element> = EventHandler<T, TransitionEvent<T>>;
|
|
|
213
221
|
type PossibleEventTarget = EventTarget & (Element | Document | Window);
|
|
214
222
|
|
|
215
223
|
export {
|
|
216
|
-
NativeEvent,
|
|
217
|
-
ClipboardEvent,
|
|
218
|
-
CompositionEvent,
|
|
219
|
-
DragEvent,
|
|
220
|
-
FocusEvent,
|
|
221
|
-
FormEvent,
|
|
222
|
-
ChangeEvent,
|
|
223
|
-
KeyboardEvent,
|
|
224
|
-
MouseEvent,
|
|
225
|
-
TouchEvent,
|
|
226
|
-
PointerEvent,
|
|
227
|
-
UIEvent,
|
|
228
|
-
WheelEvent,
|
|
229
224
|
AnimationEvent,
|
|
230
|
-
|
|
231
|
-
|
|
225
|
+
AnimationEventHandler,
|
|
226
|
+
ChangeEvent,
|
|
227
|
+
ChangeEventHandler,
|
|
228
|
+
ClipboardEvent,
|
|
232
229
|
ClipboardEventHandler,
|
|
230
|
+
CompositionEvent,
|
|
233
231
|
CompositionEventHandler,
|
|
232
|
+
DragEvent,
|
|
234
233
|
DragEventHandler,
|
|
234
|
+
FocusEvent,
|
|
235
235
|
FocusEventHandler,
|
|
236
|
+
FormEvent,
|
|
236
237
|
FormEventHandler,
|
|
237
|
-
|
|
238
|
+
KeyboardEvent,
|
|
238
239
|
KeyboardEventHandler,
|
|
240
|
+
MouseEvent,
|
|
239
241
|
MouseEventHandler,
|
|
240
|
-
|
|
242
|
+
NativeEvent,
|
|
243
|
+
NativeEventHandler,
|
|
244
|
+
PointerEvent,
|
|
241
245
|
PointerEventHandler,
|
|
246
|
+
PossibleEventTarget,
|
|
247
|
+
TouchEvent,
|
|
248
|
+
TouchEventHandler,
|
|
249
|
+
TransitionEvent,
|
|
250
|
+
TransitionEventHandler,
|
|
251
|
+
UIEvent,
|
|
242
252
|
UIEventHandler,
|
|
253
|
+
WheelEvent,
|
|
243
254
|
WheelEventHandler,
|
|
244
|
-
AnimationEventHandler,
|
|
245
|
-
TransitionEventHandler,
|
|
246
|
-
PossibleEventTarget,
|
|
247
255
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Fn = (...args: unknown[]) => unknown;
|
package/src/is/isArray.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @param obj array-like iterable object
|
|
5
5
|
* @returns the query result
|
|
6
6
|
*/
|
|
7
|
-
const isArray = (obj?: unknown): obj is
|
|
7
|
+
const isArray = (obj?: unknown): obj is unknown[] =>
|
|
8
|
+
Array.isArray(obj) || false;
|
|
8
9
|
|
|
9
10
|
export default isArray;
|
package/src/is/isCanvas.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an element is an `HTMLCanvasElement` or `<canvas>`.
|
|
@@ -8,6 +8,6 @@ import isNode from './isNode';
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
const isCanvas = (element?: unknown): element is HTMLCanvasElement =>
|
|
11
|
-
(isNode(element) && element.nodeName ===
|
|
11
|
+
(isNode(element) && element.nodeName === "CANVAS") || false;
|
|
12
12
|
|
|
13
13
|
export default isCanvas;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import isHTMLElement from
|
|
2
|
-
import type { CustomElement } from
|
|
1
|
+
import isHTMLElement from "./isHTMLElement";
|
|
2
|
+
import type { CustomElement } from "../interface/customElement";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Checks if an object is a `CustomElement`.
|
|
@@ -7,7 +7,9 @@ import type { CustomElement } from '../interface/customElement';
|
|
|
7
7
|
* @param element the target object
|
|
8
8
|
* @returns the query result
|
|
9
9
|
*/
|
|
10
|
-
const isCustomElement = <T extends CustomElement>(
|
|
10
|
+
const isCustomElement = <T extends CustomElement>(
|
|
11
|
+
element?: unknown,
|
|
12
|
+
): element is T =>
|
|
11
13
|
(isHTMLElement(element) && !!(element as T).shadowRoot) || false;
|
|
12
14
|
|
|
13
15
|
export default isCustomElement;
|
package/src/is/isDocument.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an object is a `Document`.
|
|
@@ -8,6 +8,7 @@ import isNode from './isNode';
|
|
|
8
8
|
* @param obj the target object
|
|
9
9
|
* @returns the query result
|
|
10
10
|
*/
|
|
11
|
-
const isDocument = (obj?: unknown): obj is Document =>
|
|
11
|
+
const isDocument = (obj?: unknown): obj is Document =>
|
|
12
|
+
(isNode(obj) && obj.nodeType === 9) || false;
|
|
12
13
|
|
|
13
14
|
export default isDocument;
|
package/src/is/isElement.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an object is an `Element`.
|
|
@@ -22,6 +22,7 @@ import isNode from './isNode';
|
|
|
22
22
|
* @returns the query result
|
|
23
23
|
*/
|
|
24
24
|
const isElement = (element?: unknown): element is Element =>
|
|
25
|
-
(isNode(element) &&
|
|
25
|
+
(isNode(element) &&
|
|
26
|
+
[1, 2, 3, 4, 5, 6, 7, 8].some((x) => element.nodeType === x)) || false;
|
|
26
27
|
|
|
27
28
|
export default isElement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import getBoundingClientRect from
|
|
2
|
-
import getDocumentElement from
|
|
3
|
-
import isNode from
|
|
1
|
+
import getBoundingClientRect from "../get/getBoundingClientRect";
|
|
2
|
+
import getDocumentElement from "../get/getDocumentElement";
|
|
3
|
+
import isNode from "./isNode";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Utility to determine if an `HTMLElement`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import getBoundingClientRect from
|
|
2
|
-
import getDocumentElement from
|
|
3
|
-
import isNode from
|
|
1
|
+
import getBoundingClientRect from "../get/getBoundingClientRect";
|
|
2
|
+
import getDocumentElement from "../get/getDocumentElement";
|
|
3
|
+
import isNode from "./isNode";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Utility to determine if an `HTMLElement`
|
|
@@ -15,6 +15,7 @@ const isElementInViewport = (element?: HTMLElement): boolean => {
|
|
|
15
15
|
const { clientWidth, clientHeight } = getDocumentElement(element);
|
|
16
16
|
const { top, left, bottom, right } = getBoundingClientRect(element, true);
|
|
17
17
|
|
|
18
|
-
return top >= 0 && left >= 0 && bottom <= clientHeight &&
|
|
18
|
+
return top >= 0 && left >= 0 && bottom <= clientHeight &&
|
|
19
|
+
right <= clientWidth;
|
|
19
20
|
};
|
|
20
21
|
export default isElementInViewport;
|
package/src/is/isFunction.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { Fn } from "../interface/fn";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Checks if an object is a `Function`.
|
|
3
5
|
*
|
|
4
6
|
* @param fn the target object
|
|
5
7
|
* @returns the query result
|
|
6
8
|
*/
|
|
7
|
-
const isFunction = (fn?: unknown): fn is
|
|
8
|
-
typeof fn ===
|
|
9
|
+
const isFunction = (fn?: unknown): fn is Fn =>
|
|
10
|
+
typeof fn === "function" || false;
|
|
9
11
|
|
|
10
12
|
export default isFunction;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an object is an `HTMLCollection`.
|
|
@@ -7,6 +7,6 @@ import isObject from './isObject';
|
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
9
|
const isHTMLCollection = (obj?: unknown): obj is HTMLCollection =>
|
|
10
|
-
(isObject(obj) && obj.constructor.name ===
|
|
10
|
+
(isObject(obj) && obj.constructor.name === "HTMLCollection") || false;
|
|
11
11
|
|
|
12
12
|
export default isHTMLCollection;
|
package/src/is/isHTMLElement.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isHTMLElement from
|
|
1
|
+
import isHTMLElement from "./isHTMLElement";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if a target element is an `<img>`.
|
|
@@ -7,6 +7,6 @@ import isHTMLElement from './isHTMLElement';
|
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
9
|
const isHTMLImageElement = (element?: unknown): element is HTMLImageElement =>
|
|
10
|
-
(isHTMLElement(element) && element.tagName ===
|
|
10
|
+
(isHTMLElement(element) && element.tagName === "IMG") || false;
|
|
11
11
|
|
|
12
12
|
export default isHTMLImageElement;
|
package/src/is/isJSON.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isString from
|
|
1
|
+
import isString from "./isString";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if a string is a `JSON` string.
|
|
@@ -11,7 +11,7 @@ const isJSON = (str?: string): boolean => {
|
|
|
11
11
|
|
|
12
12
|
try {
|
|
13
13
|
JSON.parse(str);
|
|
14
|
-
} catch (
|
|
14
|
+
} catch (_e) {
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
17
|
return true;
|
package/src/is/isMap.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an element is a `Map`.
|
|
@@ -6,6 +6,6 @@ import isObject from './isObject';
|
|
|
6
6
|
* @param obj the target object
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
|
-
const isMap = (obj?: unknown): obj is Map<
|
|
10
|
-
(isObject(obj) && obj.constructor.name ===
|
|
9
|
+
const isMap = (obj?: unknown): obj is Map<unknown, unknown> =>
|
|
10
|
+
(isObject(obj) && obj.constructor.name === "Map") || false;
|
|
11
11
|
export default isMap;
|
package/src/is/isMedia.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an element is an `<svg>` (or any type of SVG element),
|
|
@@ -12,9 +12,15 @@ import isNode from './isNode';
|
|
|
12
12
|
|
|
13
13
|
const isMedia = (
|
|
14
14
|
element?: unknown,
|
|
15
|
-
): element is
|
|
15
|
+
): element is
|
|
16
|
+
| SVGElement
|
|
17
|
+
| HTMLImageElement
|
|
18
|
+
| HTMLVideoElement
|
|
19
|
+
| HTMLCanvasElement =>
|
|
16
20
|
(isNode(element) &&
|
|
17
|
-
[
|
|
21
|
+
["SVG", "Image", "Video", "Canvas"].some((s) =>
|
|
22
|
+
element.constructor.name.includes(s)
|
|
23
|
+
)) ||
|
|
18
24
|
false;
|
|
19
25
|
|
|
20
26
|
export default isMedia;
|
package/src/is/isNode.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
type NodeObject = object & { nodeType: number };
|
|
4
4
|
|
|
@@ -10,8 +10,10 @@ type NodeObject = object & { nodeType: number };
|
|
|
10
10
|
*/
|
|
11
11
|
const isNode = (node?: unknown): node is Node =>
|
|
12
12
|
(isObject(node) &&
|
|
13
|
-
typeof (node as NodeObject).nodeType ===
|
|
14
|
-
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some(
|
|
13
|
+
typeof (node as NodeObject).nodeType === "number" &&
|
|
14
|
+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((x) =>
|
|
15
|
+
(node as NodeObject).nodeType === x
|
|
16
|
+
)) ||
|
|
15
17
|
false;
|
|
16
18
|
|
|
17
19
|
export default isNode;
|
package/src/is/isNodeList.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an object is a `NodeList`.
|
|
@@ -8,6 +8,6 @@ import isObject from './isObject';
|
|
|
8
8
|
* @returns the query result
|
|
9
9
|
*/
|
|
10
10
|
const isNodeList = (obj?: unknown): obj is NodeList =>
|
|
11
|
-
(isObject(obj) && obj.constructor.name ===
|
|
11
|
+
(isObject(obj) && obj.constructor.name === "NodeList") || false;
|
|
12
12
|
|
|
13
13
|
export default isNodeList;
|
package/src/is/isNumber.ts
CHANGED
package/src/is/isObject.ts
CHANGED
package/src/is/isRTL.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import getDocumentElement from
|
|
1
|
+
import getDocumentElement from "../get/getDocumentElement";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if a page is Right To Left.
|
|
@@ -6,6 +6,6 @@ import getDocumentElement from '../get/getDocumentElement';
|
|
|
6
6
|
* @param node the target
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
|
-
const isRTL = (node?: Node): boolean => getDocumentElement(node).dir ===
|
|
9
|
+
const isRTL = (node?: Node): boolean => getDocumentElement(node).dir === "rtl";
|
|
10
10
|
|
|
11
11
|
export default isRTL;
|
package/src/is/isSVGElement.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if an element is an `<svg>` or any other SVG element,
|
|
@@ -8,6 +8,6 @@ import isNode from './isNode';
|
|
|
8
8
|
* @returns the query result
|
|
9
9
|
*/
|
|
10
10
|
const isSVGElement = (element?: unknown): element is SVGElement =>
|
|
11
|
-
(isNode(element) && element.constructor.name.includes(
|
|
11
|
+
(isNode(element) && element.constructor.name.includes("SVG")) || false;
|
|
12
12
|
|
|
13
13
|
export default isSVGElement;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import isHTMLElement from
|
|
2
|
-
import getBoundingClientRect from
|
|
1
|
+
import isHTMLElement from "./isHTMLElement";
|
|
2
|
+
import getBoundingClientRect from "../get/getBoundingClientRect";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Checks if a target `HTMLElement` is affected by scale.
|
|
@@ -13,7 +13,8 @@ const isScaledElement = (element?: HTMLElement): boolean => {
|
|
|
13
13
|
if (!isHTMLElement(element)) return false;
|
|
14
14
|
const { width, height } = getBoundingClientRect(element);
|
|
15
15
|
const { offsetWidth, offsetHeight } = element;
|
|
16
|
-
return Math.round(width) !== offsetWidth ||
|
|
16
|
+
return Math.round(width) !== offsetWidth ||
|
|
17
|
+
Math.round(height) !== offsetHeight;
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export default isScaledElement;
|
package/src/is/isShadowRoot.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if target is a `ShadowRoot`.
|
|
@@ -7,6 +7,6 @@ import isNode from './isNode';
|
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
9
|
const isShadowRoot = (element?: unknown): element is ShadowRoot =>
|
|
10
|
-
(isNode(element) && element.constructor.name ===
|
|
10
|
+
(isNode(element) && element.constructor.name === "ShadowRoot") || false;
|
|
11
11
|
|
|
12
12
|
export default isShadowRoot;
|
package/src/is/isString.ts
CHANGED
package/src/is/isTableElement.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isNode from
|
|
1
|
+
import isNode from "./isNode";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if a target element is a `<table>`, `<td>` or `<th>`.
|
|
@@ -8,7 +8,10 @@ import isNode from './isNode';
|
|
|
8
8
|
* @param element the target element
|
|
9
9
|
* @returns the query result
|
|
10
10
|
*/
|
|
11
|
-
const isTableElement = (
|
|
12
|
-
|
|
11
|
+
const isTableElement = (
|
|
12
|
+
element?: unknown,
|
|
13
|
+
): element is HTMLTableElement | HTMLTableCellElement =>
|
|
14
|
+
(isNode(element) && ["TABLE", "TD", "TH"].includes(element.nodeName)) ||
|
|
15
|
+
false;
|
|
13
16
|
|
|
14
17
|
export default isTableElement;
|
package/src/is/isWeakMap.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Checks if an element is a `WeakMap`.
|
|
@@ -6,6 +6,6 @@ import isObject from './isObject';
|
|
|
6
6
|
* @param obj the target object
|
|
7
7
|
* @returns the query result
|
|
8
8
|
*/
|
|
9
|
-
const isWeakMap = (obj?: unknown): obj is WeakMap<
|
|
10
|
-
(isObject(obj) && obj.constructor.name ===
|
|
9
|
+
const isWeakMap = (obj?: unknown): obj is WeakMap<WeakKey, unknown> =>
|
|
10
|
+
(isObject(obj) && obj.constructor.name === "WeakMap") || false;
|
|
11
11
|
export default isWeakMap;
|
package/src/is/isWindow.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "./isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if a target object is `Window`.
|
|
@@ -8,6 +8,6 @@ import isObject from './isObject';
|
|
|
8
8
|
* @returns the query result
|
|
9
9
|
*/
|
|
10
10
|
const isWindow = (obj?: unknown): obj is Window =>
|
|
11
|
-
(isObject(obj) && obj.constructor.name ===
|
|
11
|
+
(isObject(obj) && obj.constructor.name === "Window") || false;
|
|
12
12
|
|
|
13
13
|
export default isWindow;
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* @param arr array-like iterable object
|
|
5
5
|
* @returns a new Float32Array
|
|
6
6
|
*/
|
|
7
|
-
const Float32ArrayFrom = (
|
|
8
|
-
|
|
7
|
+
const Float32ArrayFrom = (
|
|
8
|
+
arr: ArrayLike<number> | Iterable<number>,
|
|
9
|
+
): Float32Array => Float32Array.from(Array.from(arr));
|
|
9
10
|
|
|
10
11
|
export default Float32ArrayFrom;
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* @param arr array-like iterable object
|
|
5
5
|
* @returns a new Float64Array
|
|
6
6
|
*/
|
|
7
|
-
const Float64ArrayFrom = (
|
|
8
|
-
|
|
7
|
+
const Float64ArrayFrom = (
|
|
8
|
+
arr: ArrayLike<number> | Iterable<number>,
|
|
9
|
+
): Float64Array => Float64Array.from(Array.from(arr));
|
|
9
10
|
|
|
10
11
|
export default Float64ArrayFrom;
|
package/src/misc/ObjectAssign.ts
CHANGED
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
* @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/object-assign/index.d.ts
|
|
5
5
|
*/
|
|
6
6
|
declare function ObjectAssignTyped<T, U>(target: T, source: U): T & U;
|
|
7
|
-
declare function ObjectAssignTyped<T, U, V>(
|
|
7
|
+
declare function ObjectAssignTyped<T, U, V>(
|
|
8
|
+
target: T,
|
|
9
|
+
source1: U,
|
|
10
|
+
source2: V,
|
|
11
|
+
): T & U & V;
|
|
8
12
|
declare function ObjectAssignTyped<T, U, V, W>(
|
|
9
13
|
target: T,
|
|
10
14
|
source1: U,
|
|
@@ -26,7 +30,10 @@ declare function ObjectAssignTyped<T, U, V, W, Q, R>(
|
|
|
26
30
|
source4: Q,
|
|
27
31
|
source5: R,
|
|
28
32
|
): T & U & V & W & Q & R;
|
|
29
|
-
declare function ObjectAssignTyped(
|
|
33
|
+
declare function ObjectAssignTyped(
|
|
34
|
+
target: unknown,
|
|
35
|
+
...sources: unknown[]
|
|
36
|
+
): unknown;
|
|
30
37
|
|
|
31
38
|
/**
|
|
32
39
|
* Shortcut for `Object.assign()` static method.
|
|
@@ -35,9 +42,13 @@ declare function ObjectAssignTyped(target: any, ...sources: any[]): any;
|
|
|
35
42
|
* @param source source object(s)
|
|
36
43
|
* @see https://github.com/devinrhode2/ObjectTyped/blob/master/src/index.ts
|
|
37
44
|
*/
|
|
38
|
-
const ObjectAssign: typeof ObjectAssignTyped = <
|
|
45
|
+
const ObjectAssign: typeof ObjectAssignTyped = <
|
|
46
|
+
A extends Record<string, unknown>,
|
|
47
|
+
B,
|
|
48
|
+
>(
|
|
39
49
|
obj: A,
|
|
40
50
|
...source: B[]
|
|
41
|
-
): B extends Record<string,
|
|
51
|
+
): B extends Record<string, unknown>[] ? unknown : A & B =>
|
|
52
|
+
Object.assign(obj, ...source);
|
|
42
53
|
|
|
43
54
|
export default ObjectAssign;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @returns the entries of an object in an array format [key, value][]
|
|
6
6
|
* @see https://github.com/devinrhode2/ObjectTyped/blob/master/src/index.ts
|
|
7
7
|
*/
|
|
8
|
-
const ObjectEntries = <O extends Record<
|
|
8
|
+
const ObjectEntries = <O extends Record<keyof O, unknown>>(obj: O) =>
|
|
9
9
|
Object.entries(obj) as [keyof O, O[keyof O]][];
|
|
10
10
|
|
|
11
11
|
export default ObjectEntries;
|
package/src/misc/ObjectHasOwn.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from
|
|
1
|
+
import isObject from "../is/isObject";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A shortcut to `Object.hasOwn()` static method to work
|
|
@@ -12,6 +12,7 @@ import isObject from '../is/isObject';
|
|
|
12
12
|
const ObjectHasOwn = <T extends object, K extends PropertyKey>(
|
|
13
13
|
obj: T,
|
|
14
14
|
prop: K,
|
|
15
|
-
): obj is T & Record<K, unknown> =>
|
|
15
|
+
): obj is T & Record<K, unknown> =>
|
|
16
|
+
isObject(obj) && (Object.hasOwn(obj, prop) || prop in obj);
|
|
16
17
|
|
|
17
18
|
export default ObjectHasOwn;
|