solid-tiny-utils 0.9.0 → 0.11.0
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/dist/dom/animation.d.mts +4 -0
- package/dist/dom/animation.mjs +8 -0
- package/dist/{jsx → dom}/attrs.d.mts +1 -1
- package/dist/{jsx → dom}/attrs.mjs +1 -1
- package/dist/index.d.mts +19 -17
- package/dist/index.mjs +18 -16
- package/dist/{event → solidjs}/create-click-outside.d.mts +1 -1
- package/dist/{event → solidjs}/create-click-outside.mjs +2 -2
- package/dist/{reactive → solidjs}/create-debounce-watch.d.mts +1 -1
- package/dist/{reactive → solidjs}/create-debounce-watch.mjs +2 -2
- package/dist/{fn → solidjs}/create-debounce.d.mts +1 -1
- package/dist/{fn → solidjs}/create-debounce.mjs +2 -2
- package/dist/{event → solidjs}/create-event-listener.d.mts +1 -1
- package/dist/{event → solidjs}/create-event-listener.mjs +4 -5
- package/dist/{event → solidjs}/create-intersection-observer.d.mts +1 -1
- package/dist/{event → solidjs}/create-intersection-observer.mjs +4 -4
- package/dist/solidjs/create-list.d.mts +14 -0
- package/dist/solidjs/create-list.mjs +77 -0
- package/dist/{fn → solidjs}/create-loop-exec.d.mts +1 -1
- package/dist/{fn → solidjs}/create-loop-exec.mjs +3 -3
- package/dist/solidjs/create-presence.d.mts +11 -0
- package/dist/solidjs/create-presence.mjs +29 -0
- package/dist/{fn → solidjs}/create-throttle.d.mts +1 -1
- package/dist/{fn → solidjs}/create-throttle.mjs +2 -2
- package/dist/{event → solidjs}/create-visibility-observer.d.mts +1 -1
- package/dist/{event → solidjs}/create-visibility-observer.mjs +3 -3
- package/dist/{reactive → solidjs}/create-watch.d.mts +1 -1
- package/dist/{reactive → solidjs}/create-watch.mjs +1 -1
- package/dist/solidjs/index.d.mts +13 -0
- package/dist/{event → solidjs}/make-event-listener.d.mts +1 -1
- package/dist/{event → solidjs}/make-event-listener.mjs +2 -2
- package/dist/solidjs/utils.d.mts +10 -0
- package/dist/solidjs/utils.mjs +16 -0
- package/dist/utils/constant.d.mts +4 -0
- package/dist/utils/constant.mjs +5 -0
- package/dist/utils/is.d.mts +3 -1
- package/dist/utils/is.mjs +8 -2
- package/package.json +8 -7
- package/dist/event/index.d.mts +0 -11
- package/dist/event/index.mjs +0 -14
- package/dist/fn/index.d.mts +0 -8
- package/dist/fn/index.mjs +0 -9
- package/dist/reactive/access.d.mts +0 -6
- package/dist/reactive/access.mjs +0 -9
- package/dist/reactive/index.d.mts +0 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import { OKLCH, RGB, oklchToRgb, rgbToOklch } from "./color/oklch-rgb.mjs";
|
|
2
2
|
import { hexToRgb, rgbToHex } from "./color/hex-rgb.mjs";
|
|
3
3
|
import { isValidHex, isValidOKLCH, isValidRGB } from "./color/validation.mjs";
|
|
4
|
+
import { hasAnimation } from "./dom/animation.mjs";
|
|
5
|
+
import { dataIf } from "./dom/attrs.mjs";
|
|
4
6
|
import { combineClass, combineStyle, mountStyle, stringStyleToObject } from "./dom/css.mjs";
|
|
5
7
|
import { AnyFn, Fn } from "./types/fn.mjs";
|
|
6
8
|
import { MaybeAccessor, MaybeArray, MaybeNullableAccessor, MaybePromise } from "./types/maybe.mjs";
|
|
7
9
|
import "./types/index.mjs";
|
|
8
|
-
import { createClickOutside } from "./
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { createLoopExec } from "./
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import
|
|
22
|
-
import "./reactive/index.mjs";
|
|
10
|
+
import { createClickOutside } from "./solidjs/create-click-outside.mjs";
|
|
11
|
+
import { createDebounce } from "./solidjs/create-debounce.mjs";
|
|
12
|
+
import { createDebouncedWatch } from "./solidjs/create-debounce-watch.mjs";
|
|
13
|
+
import { DocumentEventName, GeneralEventListener, WindowEventName, makeEventListener } from "./solidjs/make-event-listener.mjs";
|
|
14
|
+
import { createEventListener } from "./solidjs/create-event-listener.mjs";
|
|
15
|
+
import { createIntersectionObserver } from "./solidjs/create-intersection-observer.mjs";
|
|
16
|
+
import { createList } from "./solidjs/create-list.mjs";
|
|
17
|
+
import { createLoopExec } from "./solidjs/create-loop-exec.mjs";
|
|
18
|
+
import { PresenceState, createPresence } from "./solidjs/create-presence.mjs";
|
|
19
|
+
import { createThrottle } from "./solidjs/create-throttle.mjs";
|
|
20
|
+
import { CreateVisibilityObserverOption, EntryCallback, UseVisibilityObserverFn, createVisibilityObserver } from "./solidjs/create-visibility-observer.mjs";
|
|
21
|
+
import { createWatch } from "./solidjs/create-watch.mjs";
|
|
22
|
+
import { MaybeCallableChild, access, callMaybeCallableChild, runSolidEventHandler } from "./solidjs/utils.mjs";
|
|
23
|
+
import "./solidjs/index.mjs";
|
|
23
24
|
import { clearArray, iterate, list, range } from "./utils/array.mjs";
|
|
24
25
|
import { runAtNextAnimationFrame, sleep } from "./utils/async.mjs";
|
|
25
|
-
import {
|
|
26
|
+
import { noop } from "./utils/constant.mjs";
|
|
27
|
+
import { isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined } from "./utils/is.mjs";
|
|
26
28
|
import { clamp, inRange, max, min, toHex } from "./utils/number.mjs";
|
|
27
29
|
import { draw, random, shuffle, uid } from "./utils/random.mjs";
|
|
28
30
|
import { camel, capitalize, dash, pascal, snake, template, title, trim } from "./utils/str.mjs";
|
|
29
|
-
export { AnyFn, CreateVisibilityObserverOption, DocumentEventName, EntryCallback, Fn, GeneralEventListener, MaybeAccessor, MaybeArray, MaybeNullableAccessor, MaybePromise, OKLCH, RGB, UseVisibilityObserverFn, WindowEventName, access, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, createLoopExec, createThrottle, createVisibilityObserver, createWatch, dash, dataIf, draw, hexToRgb, inRange, isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isValidHex, isValidOKLCH, isValidRGB, iterate, list, makeEventListener, max, min, mountStyle, noop, oklchToRgb, pascal, random, range, rgbToHex, rgbToOklch, runAtNextAnimationFrame, runSolidEventHandler, shuffle, sleep, snake, stringStyleToObject, template, title, toHex, trim, uid };
|
|
31
|
+
export { AnyFn, CreateVisibilityObserverOption, DocumentEventName, EntryCallback, Fn, GeneralEventListener, MaybeAccessor, MaybeArray, MaybeCallableChild, MaybeNullableAccessor, MaybePromise, OKLCH, PresenceState, RGB, UseVisibilityObserverFn, WindowEventName, access, callMaybeCallableChild, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, createList, createLoopExec, createPresence, createThrottle, createVisibilityObserver, createWatch, dash, dataIf, draw, hasAnimation, hexToRgb, inRange, isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined, isValidHex, isValidOKLCH, isValidRGB, iterate, list, makeEventListener, max, min, mountStyle, noop, oklchToRgb, pascal, random, range, rgbToHex, rgbToOklch, runAtNextAnimationFrame, runSolidEventHandler, shuffle, sleep, snake, stringStyleToObject, template, title, toHex, trim, uid };
|
package/dist/index.mjs
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol } from "./utils/is.mjs";
|
|
1
|
+
import { isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined } from "./utils/is.mjs";
|
|
2
2
|
import { clearArray, iterate, list, range } from "./utils/array.mjs";
|
|
3
3
|
import { runAtNextAnimationFrame, sleep } from "./utils/async.mjs";
|
|
4
|
+
import { noop } from "./utils/constant.mjs";
|
|
4
5
|
import { clamp, inRange, max, min, toHex } from "./utils/number.mjs";
|
|
5
6
|
import { draw, random, shuffle, uid } from "./utils/random.mjs";
|
|
6
7
|
import { camel, capitalize, dash, pascal, snake, template, title, trim } from "./utils/str.mjs";
|
|
7
8
|
import { hexToRgb, rgbToHex } from "./color/hex-rgb.mjs";
|
|
8
9
|
import { oklchToRgb, rgbToOklch } from "./color/oklch-rgb.mjs";
|
|
9
10
|
import { isValidHex, isValidOKLCH, isValidRGB } from "./color/validation.mjs";
|
|
11
|
+
import { hasAnimation } from "./dom/animation.mjs";
|
|
12
|
+
import { dataIf } from "./dom/attrs.mjs";
|
|
10
13
|
import { combineClass, combineStyle, mountStyle, stringStyleToObject } from "./dom/css.mjs";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import { dataIf } from "./jsx/attrs.mjs";
|
|
14
|
+
import { makeEventListener } from "./solidjs/make-event-listener.mjs";
|
|
15
|
+
import { access, callMaybeCallableChild, runSolidEventHandler } from "./solidjs/utils.mjs";
|
|
16
|
+
import { createClickOutside } from "./solidjs/create-click-outside.mjs";
|
|
17
|
+
import { createDebounce } from "./solidjs/create-debounce.mjs";
|
|
18
|
+
import { createWatch } from "./solidjs/create-watch.mjs";
|
|
19
|
+
import { createDebouncedWatch } from "./solidjs/create-debounce-watch.mjs";
|
|
20
|
+
import { createEventListener } from "./solidjs/create-event-listener.mjs";
|
|
21
|
+
import { createIntersectionObserver } from "./solidjs/create-intersection-observer.mjs";
|
|
22
|
+
import { createList } from "./solidjs/create-list.mjs";
|
|
23
|
+
import { createLoopExec } from "./solidjs/create-loop-exec.mjs";
|
|
24
|
+
import { createPresence } from "./solidjs/create-presence.mjs";
|
|
25
|
+
import { createThrottle } from "./solidjs/create-throttle.mjs";
|
|
26
|
+
import { createVisibilityObserver } from "./solidjs/create-visibility-observer.mjs";
|
|
25
27
|
|
|
26
|
-
export { access, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, createLoopExec, createThrottle, createVisibilityObserver, createWatch, dash, dataIf, draw, hexToRgb, inRange, isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isValidHex, isValidOKLCH, isValidRGB, iterate, list, makeEventListener, max, min, mountStyle, noop, oklchToRgb, pascal, random, range, rgbToHex, rgbToOklch, runAtNextAnimationFrame, runSolidEventHandler, shuffle, sleep, snake, stringStyleToObject, template, title, toHex, trim, uid };
|
|
28
|
+
export { access, callMaybeCallableChild, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, createList, createLoopExec, createPresence, createThrottle, createVisibilityObserver, createWatch, dash, dataIf, draw, hasAnimation, hexToRgb, inRange, isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined, isValidHex, isValidOKLCH, isValidRGB, iterate, list, makeEventListener, max, min, mountStyle, noop, oklchToRgb, pascal, random, range, rgbToHex, rgbToOklch, runAtNextAnimationFrame, runSolidEventHandler, shuffle, sleep, snake, stringStyleToObject, template, title, toHex, trim, uid };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
2
|
import "../types/index.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-click-outside.d.ts
|
|
5
5
|
declare function createClickOutside(target: MaybeAccessor<HTMLElement | null | undefined>, handler: (event: PointerEvent) => void, options?: {
|
|
6
6
|
ignore?: MaybeAccessor<HTMLElement | null | undefined>[];
|
|
7
7
|
}): () => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { access } from "../reactive/access.mjs";
|
|
2
1
|
import { makeEventListener } from "./make-event-listener.mjs";
|
|
2
|
+
import { access } from "./utils.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-click-outside.ts
|
|
5
5
|
function createClickOutside(target, handler, options) {
|
|
6
6
|
let shouldListen = false;
|
|
7
7
|
const shouldIgnore = (event) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createDebounce } from "
|
|
1
|
+
import { createDebounce } from "./create-debounce.mjs";
|
|
2
2
|
import { createWatch } from "./create-watch.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-debounce-watch.ts
|
|
5
5
|
/**
|
|
6
6
|
* Creates a debounced watch effect.
|
|
7
7
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
2
|
import "../types/index.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-debounce.d.ts
|
|
5
5
|
declare function createDebounce<Args extends unknown[]>(callback: (...args: Args) => void, delay: MaybeAccessor<number>): (...args: Args) => void;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { createDebounce };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { access } from "
|
|
1
|
+
import { access } from "./utils.mjs";
|
|
2
2
|
import { onCleanup } from "solid-js";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-debounce.ts
|
|
5
5
|
function createDebounce(callback, delay) {
|
|
6
6
|
let timeoutId;
|
|
7
7
|
onCleanup(() => {
|
|
@@ -3,7 +3,7 @@ import { MaybeAccessor, MaybeArray } from "../types/maybe.mjs";
|
|
|
3
3
|
import "../types/index.mjs";
|
|
4
4
|
import { DocumentEventName, GeneralEventListener, WindowEventName } from "./make-event-listener.mjs";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/solidjs/create-event-listener.d.ts
|
|
7
7
|
/**
|
|
8
8
|
* Overload 2: Explicitly Window target
|
|
9
9
|
*/
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { isArray } from "../utils/is.mjs";
|
|
2
2
|
import { clearArray } from "../utils/array.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { noop } from "../fn/index.mjs";
|
|
5
|
-
import { createWatch } from "../reactive/create-watch.mjs";
|
|
3
|
+
import { noop } from "../utils/constant.mjs";
|
|
6
4
|
import { makeEventListener } from "./make-event-listener.mjs";
|
|
5
|
+
import { access } from "./utils.mjs";
|
|
6
|
+
import { createWatch } from "./create-watch.mjs";
|
|
7
7
|
|
|
8
|
-
//#region src/
|
|
9
|
-
/** biome-ignore-all lint/suspicious/noExplicitAny: I need any */
|
|
8
|
+
//#region src/solidjs/create-event-listener.ts
|
|
10
9
|
function createEventListener(...args) {
|
|
11
10
|
const target = args[0];
|
|
12
11
|
const events = args[1];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
2
|
import "../types/index.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-intersection-observer.d.ts
|
|
5
5
|
declare function createIntersectionObserver(targets: MaybeAccessor<HTMLElement | null | undefined>[], callback: IntersectionObserverCallback, options?: IntersectionObserverInit): () => void;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { createIntersectionObserver };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { clearArray } from "../utils/array.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { createWatch } from "
|
|
2
|
+
import { noop } from "../utils/constant.mjs";
|
|
3
|
+
import { access } from "./utils.mjs";
|
|
4
|
+
import { createWatch } from "./create-watch.mjs";
|
|
5
5
|
import { isServer } from "solid-js/web";
|
|
6
6
|
import { onCleanup } from "solid-js";
|
|
7
7
|
|
|
8
|
-
//#region src/
|
|
8
|
+
//#region src/solidjs/create-intersection-observer.ts
|
|
9
9
|
function createIntersectionObserver(targets, callback, options = {}) {
|
|
10
10
|
if (isServer) return noop;
|
|
11
11
|
const io = new IntersectionObserver(callback, options);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SetStoreFunction } from "solid-js/store";
|
|
2
|
+
|
|
3
|
+
//#region src/solidjs/create-list.d.ts
|
|
4
|
+
declare function createList<T>(initialValue?: T[]): readonly [T[], {
|
|
5
|
+
readonly setList: SetStoreFunction<T[]>;
|
|
6
|
+
readonly insert: (item: T, at?: number) => void;
|
|
7
|
+
readonly remove: (at?: number) => void;
|
|
8
|
+
readonly swap: (indexA: number, indexB: number) => void;
|
|
9
|
+
readonly move: (from: number, to: number) => void;
|
|
10
|
+
readonly sort: (compareFn: (a: T, b: T) => number) => void;
|
|
11
|
+
readonly isSortedBy: (compareFn: (a: T, b: T) => number) => boolean;
|
|
12
|
+
}];
|
|
13
|
+
//#endregion
|
|
14
|
+
export { createList };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { inRange } from "../utils/number.mjs";
|
|
2
|
+
import { createStore, unwrap } from "solid-js/store";
|
|
3
|
+
|
|
4
|
+
//#region src/solidjs/create-list.ts
|
|
5
|
+
function createInsertHelper(setList) {
|
|
6
|
+
return (item, at) => {
|
|
7
|
+
setList((list) => {
|
|
8
|
+
let atIdx = at ?? list.length;
|
|
9
|
+
if (atIdx < 0 || atIdx > list.length) atIdx = list.length;
|
|
10
|
+
const newList = [...list];
|
|
11
|
+
newList.splice(atIdx, 0, item);
|
|
12
|
+
return newList;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function createRemoveHelper(setList) {
|
|
17
|
+
return (at) => {
|
|
18
|
+
setList((list) => {
|
|
19
|
+
const atIdx = at ?? list.length - 1;
|
|
20
|
+
if (atIdx < 0 || atIdx >= list.length) return list;
|
|
21
|
+
const newList = [...list];
|
|
22
|
+
newList.splice(atIdx, 1);
|
|
23
|
+
return newList;
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createSwapHelper(setList) {
|
|
28
|
+
return (indexA, indexB) => {
|
|
29
|
+
setList((list) => {
|
|
30
|
+
if (indexA === indexB || !inRange(indexA, 0, list.length - 1) || !inRange(indexB, 0, list.length - 1)) return list;
|
|
31
|
+
const newList = [...list];
|
|
32
|
+
[newList[indexA], newList[indexB]] = [newList[indexB], newList[indexA]];
|
|
33
|
+
return newList;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function createMoveHelper(setList) {
|
|
38
|
+
return (from, to) => {
|
|
39
|
+
setList((list) => {
|
|
40
|
+
if (from === to || !inRange(from, 0, list.length - 1) || !inRange(to, 0, list.length - 1)) return list;
|
|
41
|
+
const newList = [...list];
|
|
42
|
+
const [item] = newList.splice(from, 1);
|
|
43
|
+
newList.splice(to, 0, item);
|
|
44
|
+
return newList;
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createSortHelper(setList) {
|
|
49
|
+
return (compareFn) => {
|
|
50
|
+
setList((list) => {
|
|
51
|
+
const newList = [...list];
|
|
52
|
+
newList.sort(compareFn);
|
|
53
|
+
return newList;
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function createIsSortedHelper(list, compareFn) {
|
|
58
|
+
for (let i = 1; i < list.length; i++) if (compareFn(list[i - 1], list[i]) > 0) return false;
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
function createList(initialValue) {
|
|
62
|
+
const [list, setList] = createStore(unwrap(initialValue) || []);
|
|
63
|
+
return [list, {
|
|
64
|
+
setList,
|
|
65
|
+
insert: createInsertHelper(setList),
|
|
66
|
+
remove: createRemoveHelper(setList),
|
|
67
|
+
swap: createSwapHelper(setList),
|
|
68
|
+
move: createMoveHelper(setList),
|
|
69
|
+
sort: createSortHelper(setList),
|
|
70
|
+
isSortedBy: (compareFn) => {
|
|
71
|
+
return createIsSortedHelper(list, compareFn);
|
|
72
|
+
}
|
|
73
|
+
}];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
export { createList };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isNumber } from "../utils/is.mjs";
|
|
2
|
-
import { access } from "
|
|
3
|
-
import { createWatch } from "
|
|
2
|
+
import { access } from "./utils.mjs";
|
|
3
|
+
import { createWatch } from "./create-watch.mjs";
|
|
4
4
|
import { onCleanup } from "solid-js";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/solidjs/create-loop-exec.ts
|
|
7
7
|
/**
|
|
8
8
|
* Repeatedly executes an asynchronous function with a specified delay between each execution.
|
|
9
9
|
* The loop continues until the surrounding SolidJS effect is cleaned up.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
|
+
import { Accessor } from "solid-js";
|
|
3
|
+
|
|
4
|
+
//#region src/solidjs/create-presence.d.ts
|
|
5
|
+
type PresenceState = "opening" | "opened" | "closing" | "closed";
|
|
6
|
+
declare function createPresence(params: {
|
|
7
|
+
show: Accessor<boolean>;
|
|
8
|
+
element: MaybeAccessor<HTMLElement | undefined>;
|
|
9
|
+
}): readonly [Accessor<boolean>, Accessor<PresenceState>];
|
|
10
|
+
//#endregion
|
|
11
|
+
export { PresenceState, createPresence };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { noop } from "../utils/constant.mjs";
|
|
2
|
+
import { hasAnimation } from "../dom/animation.mjs";
|
|
3
|
+
import { makeEventListener } from "./make-event-listener.mjs";
|
|
4
|
+
import { access } from "./utils.mjs";
|
|
5
|
+
import { createWatch } from "./create-watch.mjs";
|
|
6
|
+
import { createMemo, createSignal } from "solid-js";
|
|
7
|
+
|
|
8
|
+
//#region src/solidjs/create-presence.ts
|
|
9
|
+
function createPresence(params) {
|
|
10
|
+
const [state, setState] = createSignal(access(params.show) ? "opened" : "closed");
|
|
11
|
+
createWatch(createMemo(() => access(params.show)), (show) => {
|
|
12
|
+
if (show) setState("opening");
|
|
13
|
+
else setState("closing");
|
|
14
|
+
}, { defer: true });
|
|
15
|
+
let clear = noop;
|
|
16
|
+
createWatch(state, (current) => {
|
|
17
|
+
clear();
|
|
18
|
+
const el = access(params.element);
|
|
19
|
+
if (!el) return;
|
|
20
|
+
if (current.endsWith("ing")) if (hasAnimation(el)) clear = makeEventListener(el, "animationend", () => {
|
|
21
|
+
setState(current === "opening" ? "opened" : "closed");
|
|
22
|
+
});
|
|
23
|
+
else setState(current === "opening" ? "opened" : "closed");
|
|
24
|
+
});
|
|
25
|
+
return [createMemo(() => state() !== "closed"), state];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { createPresence };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
2
|
import "../types/index.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-throttle.d.ts
|
|
5
5
|
declare function createThrottle<Args extends unknown[]>(callback: (...args: Args) => void, delay: MaybeAccessor<number>): (...args: Args) => void;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { createThrottle };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { access } from "
|
|
1
|
+
import { access } from "./utils.mjs";
|
|
2
2
|
import { onCleanup } from "solid-js";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/solidjs/create-throttle.ts
|
|
5
5
|
function createThrottle(callback, delay) {
|
|
6
6
|
let timeoutId;
|
|
7
7
|
onCleanup(() => {
|
|
@@ -2,7 +2,7 @@ import { MaybeNullableAccessor } from "../types/maybe.mjs";
|
|
|
2
2
|
import "../types/index.mjs";
|
|
3
3
|
import { Accessor } from "solid-js";
|
|
4
4
|
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/solidjs/create-visibility-observer.d.ts
|
|
6
6
|
type UseVisibilityObserverFn = (target: MaybeNullableAccessor<HTMLElement>) => Accessor<boolean>;
|
|
7
7
|
type CreateVisibilityObserverOption = IntersectionObserverInit & {
|
|
8
8
|
initialValue?: boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isObject } from "../utils/is.mjs";
|
|
2
|
-
import { access } from "
|
|
3
|
-
import { createWatch } from "
|
|
2
|
+
import { access } from "./utils.mjs";
|
|
3
|
+
import { createWatch } from "./create-watch.mjs";
|
|
4
4
|
import { createSignal, onCleanup } from "solid-js";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/solidjs/create-visibility-observer.ts
|
|
7
7
|
function createVisibilityObserver(arg1, arg2) {
|
|
8
8
|
let target;
|
|
9
9
|
let options;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Accessor, AccessorArray, OnEffectFunction, OnOptions } from "solid-js";
|
|
2
2
|
|
|
3
|
-
//#region src/
|
|
3
|
+
//#region src/solidjs/create-watch.d.ts
|
|
4
4
|
declare function createWatch<S, Next extends Prev, Prev = Next>(targets: AccessorArray<S> | Accessor<S>, fn: OnEffectFunction<S, undefined | NoInfer<Prev>, Next>, opt?: OnOptions): void;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { createWatch };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createClickOutside } from "./create-click-outside.mjs";
|
|
2
|
+
import { createDebounce } from "./create-debounce.mjs";
|
|
3
|
+
import { createDebouncedWatch } from "./create-debounce-watch.mjs";
|
|
4
|
+
import { DocumentEventName, GeneralEventListener, WindowEventName, makeEventListener } from "./make-event-listener.mjs";
|
|
5
|
+
import { createEventListener } from "./create-event-listener.mjs";
|
|
6
|
+
import { createIntersectionObserver } from "./create-intersection-observer.mjs";
|
|
7
|
+
import { createList } from "./create-list.mjs";
|
|
8
|
+
import { createLoopExec } from "./create-loop-exec.mjs";
|
|
9
|
+
import { PresenceState, createPresence } from "./create-presence.mjs";
|
|
10
|
+
import { createThrottle } from "./create-throttle.mjs";
|
|
11
|
+
import { CreateVisibilityObserverOption, EntryCallback, UseVisibilityObserverFn, createVisibilityObserver } from "./create-visibility-observer.mjs";
|
|
12
|
+
import { createWatch } from "./create-watch.mjs";
|
|
13
|
+
import { MaybeCallableChild, access, callMaybeCallableChild, runSolidEventHandler } from "./utils.mjs";
|
|
@@ -2,7 +2,7 @@ import { Fn } from "../types/fn.mjs";
|
|
|
2
2
|
import { MaybeArray } from "../types/maybe.mjs";
|
|
3
3
|
import "../types/index.mjs";
|
|
4
4
|
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/solidjs/make-event-listener.d.ts
|
|
6
6
|
interface InferEventTarget<Events> {
|
|
7
7
|
addEventListener: (event: Events, fn?: any, options?: any) => any;
|
|
8
8
|
removeEventListener: (event: Events, fn?: any, options?: any) => any;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isArray } from "../utils/is.mjs";
|
|
2
2
|
import { clearArray } from "../utils/array.mjs";
|
|
3
|
-
import { noop } from "../
|
|
3
|
+
import { noop } from "../utils/constant.mjs";
|
|
4
4
|
import { onCleanup } from "solid-js";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/solidjs/make-event-listener.ts
|
|
7
7
|
/** biome-ignore-all lint/suspicious/noExplicitAny: I need any */
|
|
8
8
|
function makeEventListener(...args) {
|
|
9
9
|
let target;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
|
+
import { JSX } from "solid-js";
|
|
3
|
+
|
|
4
|
+
//#region src/solidjs/utils.d.ts
|
|
5
|
+
declare function access<T>(value: MaybeAccessor<T>): T;
|
|
6
|
+
declare function runSolidEventHandler<T, E extends Event, EHandler extends JSX.EventHandler<T, any> = JSX.EventHandler<T, E>>(event: E, handler?: EHandler | JSX.BoundEventHandler<T, E, EHandler>): void;
|
|
7
|
+
type MaybeCallableChild<T extends unknown[] = []> = JSX.Element | ((...args: T) => JSX.Element);
|
|
8
|
+
declare function callMaybeCallableChild<T extends unknown[] = []>(children: MaybeCallableChild<T>, ...args: T): JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { MaybeCallableChild, access, callMaybeCallableChild, runSolidEventHandler };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { isFn } from "../utils/is.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/solidjs/utils.ts
|
|
4
|
+
function access(value) {
|
|
5
|
+
return isFn(value) ? value() : value;
|
|
6
|
+
}
|
|
7
|
+
function runSolidEventHandler(event, handler) {
|
|
8
|
+
if (typeof handler === "function") handler(event);
|
|
9
|
+
if (Array.isArray(handler)) handler[0](handler[1], event);
|
|
10
|
+
}
|
|
11
|
+
function callMaybeCallableChild(children, ...args) {
|
|
12
|
+
return isFn(children) ? children(...args) : children;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { access, callMaybeCallableChild, runSolidEventHandler };
|
package/dist/utils/is.d.mts
CHANGED
|
@@ -25,5 +25,7 @@ declare const isDate: (value: any) => value is Date;
|
|
|
25
25
|
declare const isPromise: (value: any) => value is Promise<any>;
|
|
26
26
|
declare const isEmpty: (value: any) => boolean;
|
|
27
27
|
declare const isClient: boolean;
|
|
28
|
+
declare function isUndefined(value: any): value is undefined;
|
|
29
|
+
declare function isDefined<T>(value: T | undefined): value is T;
|
|
28
30
|
//#endregion
|
|
29
|
-
export { isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol };
|
|
31
|
+
export { isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined };
|
package/dist/utils/is.mjs
CHANGED
|
@@ -21,7 +21,7 @@ const isPrimitive = (value) => {
|
|
|
21
21
|
return value === void 0 || value === null || typeof value !== "object" && typeof value !== "function";
|
|
22
22
|
};
|
|
23
23
|
const isFn = (value) => {
|
|
24
|
-
return
|
|
24
|
+
return typeof value === "function";
|
|
25
25
|
};
|
|
26
26
|
const isString = (value) => {
|
|
27
27
|
return typeof value === "string" || value instanceof String;
|
|
@@ -67,6 +67,12 @@ const isEmpty = (value) => {
|
|
|
67
67
|
return Object.keys(value).length === 0;
|
|
68
68
|
};
|
|
69
69
|
const isClient = !isServer;
|
|
70
|
+
function isUndefined(value) {
|
|
71
|
+
return typeof value === "undefined";
|
|
72
|
+
}
|
|
73
|
+
function isDefined(value) {
|
|
74
|
+
return !isUndefined(value);
|
|
75
|
+
}
|
|
70
76
|
|
|
71
77
|
//#endregion
|
|
72
|
-
export { isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol };
|
|
78
|
+
export { isArray, isClient, isDate, isDefined, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-tiny-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "A collection of tiny utilities for SolidJS applications",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -13,23 +13,24 @@
|
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@biomejs/biome": "2.3.10",
|
|
16
|
+
"@formkit/auto-animate": "^0.9.0",
|
|
16
17
|
"@solidjs/router": "^0.15.4",
|
|
17
18
|
"@solidjs/testing-library": "^0.8.10",
|
|
18
19
|
"@testing-library/jest-dom": "^6.9.1",
|
|
19
20
|
"@testing-library/user-event": "^14.6.1",
|
|
20
21
|
"@types/culori": "^4.0.0",
|
|
21
22
|
"@types/node": "^25.0.3",
|
|
22
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
23
|
+
"@typescript/native-preview": "7.0.0-dev.20260102.1",
|
|
23
24
|
"@vitest/ui": "^4.0.16",
|
|
24
|
-
"bumpp": "^10.2
|
|
25
|
+
"bumpp": "^10.3.2",
|
|
25
26
|
"culori": "^4.0.2",
|
|
26
27
|
"jsdom": "^27.3.0",
|
|
27
28
|
"solid-tiny-context": "0.2.3",
|
|
28
|
-
"tsdown": "^0.18.
|
|
29
|
-
"ultracite": "
|
|
29
|
+
"tsdown": "^0.18.4",
|
|
30
|
+
"ultracite": "7.0.5",
|
|
30
31
|
"unocss": "^66.3.3",
|
|
31
32
|
"vite": "^7.3.0",
|
|
32
|
-
"vite-plugin-solid": "^2.11.
|
|
33
|
+
"vite-plugin-solid": "^2.11.10",
|
|
33
34
|
"vite-plugin-solid-pages": "^0.3.5",
|
|
34
35
|
"vitest": "^4.0.16"
|
|
35
36
|
},
|
|
@@ -58,7 +59,7 @@
|
|
|
58
59
|
"lint:error": "pnpm dlx ultracite@latest check --diagnostic-level error",
|
|
59
60
|
"lint:fix": "pnpm dlx ultracite@latest fix",
|
|
60
61
|
"type-check": "tsgo --noEmit --skipLibCheck",
|
|
61
|
-
"bump": "pnpm type-check && pnpm
|
|
62
|
+
"bump": "pnpm type-check && pnpm test && pnpm bumpp --no-push",
|
|
62
63
|
"prepublish": "pnpm build"
|
|
63
64
|
}
|
|
64
65
|
}
|
package/dist/event/index.d.mts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createClickOutside } from "./create-click-outside.mjs";
|
|
2
|
-
import { DocumentEventName, GeneralEventListener, WindowEventName, makeEventListener } from "./make-event-listener.mjs";
|
|
3
|
-
import { createEventListener } from "./create-event-listener.mjs";
|
|
4
|
-
import { createIntersectionObserver } from "./create-intersection-observer.mjs";
|
|
5
|
-
import { CreateVisibilityObserverOption, EntryCallback, UseVisibilityObserverFn, createVisibilityObserver } from "./create-visibility-observer.mjs";
|
|
6
|
-
import { JSX } from "solid-js/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
//#region src/event/index.d.ts
|
|
9
|
-
declare function runSolidEventHandler<T, E extends Event, EHandler extends JSX.EventHandler<T, any> = JSX.EventHandler<T, E>>(event: E, handler?: EHandler | JSX.BoundEventHandler<T, E, EHandler>): void;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { runSolidEventHandler };
|
package/dist/event/index.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { makeEventListener } from "./make-event-listener.mjs";
|
|
2
|
-
import { createClickOutside } from "./create-click-outside.mjs";
|
|
3
|
-
import { createEventListener } from "./create-event-listener.mjs";
|
|
4
|
-
import { createIntersectionObserver } from "./create-intersection-observer.mjs";
|
|
5
|
-
import { createVisibilityObserver } from "./create-visibility-observer.mjs";
|
|
6
|
-
|
|
7
|
-
//#region src/event/index.ts
|
|
8
|
-
function runSolidEventHandler(event, handler) {
|
|
9
|
-
if (typeof handler === "function") handler(event);
|
|
10
|
-
if (Array.isArray(handler)) handler[0](handler[1], event);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
//#endregion
|
|
14
|
-
export { runSolidEventHandler };
|
package/dist/fn/index.d.mts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { createDebounce } from "./create-debounce.mjs";
|
|
2
|
-
import { createLoopExec } from "./create-loop-exec.mjs";
|
|
3
|
-
import { createThrottle } from "./create-throttle.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/fn/index.d.ts
|
|
6
|
-
declare const noop: () => void;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { noop };
|
package/dist/fn/index.mjs
DELETED
package/dist/reactive/access.mjs
DELETED