solid-tiny-utils 0.9.0 → 0.10.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/event/create-presence.d.mts +14 -0
- package/dist/event/create-presence.mjs +32 -0
- package/dist/event/index.d.mts +1 -0
- package/dist/event/index.mjs +1 -0
- package/dist/index.d.mts +4 -2
- package/dist/index.mjs +4 -2
- package/dist/utils/is.d.mts +3 -1
- package/dist/utils/is.mjs +7 -1
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MaybeAccessor } from "../types/maybe.mjs";
|
|
2
|
+
import { Accessor } from "solid-js";
|
|
3
|
+
|
|
4
|
+
//#region src/event/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
|
+
}): {
|
|
10
|
+
show: () => boolean;
|
|
11
|
+
state: Accessor<PresenceState>;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PresenceState, createPresence };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { hasAnimation } from "../dom/animation.mjs";
|
|
2
|
+
import { access } from "../reactive/access.mjs";
|
|
3
|
+
import { noop } from "../fn/index.mjs";
|
|
4
|
+
import { createWatch } from "../reactive/create-watch.mjs";
|
|
5
|
+
import { makeEventListener } from "./make-event-listener.mjs";
|
|
6
|
+
import { createSignal } from "solid-js";
|
|
7
|
+
|
|
8
|
+
//#region src/event/create-presence.ts
|
|
9
|
+
function createPresence(params) {
|
|
10
|
+
const [state, setState] = createSignal(access(params.show) ? "opened" : "closed");
|
|
11
|
+
createWatch(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
|
+
}, { once: true });
|
|
23
|
+
else setState(current === "opening" ? "opened" : "closed");
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
show: () => state() !== "closed",
|
|
27
|
+
state
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { createPresence };
|
package/dist/event/index.d.mts
CHANGED
|
@@ -2,6 +2,7 @@ import { createClickOutside } from "./create-click-outside.mjs";
|
|
|
2
2
|
import { DocumentEventName, GeneralEventListener, WindowEventName, makeEventListener } from "./make-event-listener.mjs";
|
|
3
3
|
import { createEventListener } from "./create-event-listener.mjs";
|
|
4
4
|
import { createIntersectionObserver } from "./create-intersection-observer.mjs";
|
|
5
|
+
import { PresenceState, createPresence } from "./create-presence.mjs";
|
|
5
6
|
import { CreateVisibilityObserverOption, EntryCallback, UseVisibilityObserverFn, createVisibilityObserver } from "./create-visibility-observer.mjs";
|
|
6
7
|
import { JSX } from "solid-js/jsx-runtime";
|
|
7
8
|
|
package/dist/event/index.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import { makeEventListener } from "./make-event-listener.mjs";
|
|
|
2
2
|
import { createClickOutside } from "./create-click-outside.mjs";
|
|
3
3
|
import { createEventListener } from "./create-event-listener.mjs";
|
|
4
4
|
import { createIntersectionObserver } from "./create-intersection-observer.mjs";
|
|
5
|
+
import { createPresence } from "./create-presence.mjs";
|
|
5
6
|
import { createVisibilityObserver } from "./create-visibility-observer.mjs";
|
|
6
7
|
|
|
7
8
|
//#region src/event/index.ts
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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";
|
|
4
5
|
import { combineClass, combineStyle, mountStyle, stringStyleToObject } from "./dom/css.mjs";
|
|
5
6
|
import { AnyFn, Fn } from "./types/fn.mjs";
|
|
6
7
|
import { MaybeAccessor, MaybeArray, MaybeNullableAccessor, MaybePromise } from "./types/maybe.mjs";
|
|
@@ -9,6 +10,7 @@ import { createClickOutside } from "./event/create-click-outside.mjs";
|
|
|
9
10
|
import { DocumentEventName, GeneralEventListener, WindowEventName, makeEventListener } from "./event/make-event-listener.mjs";
|
|
10
11
|
import { createEventListener } from "./event/create-event-listener.mjs";
|
|
11
12
|
import { createIntersectionObserver } from "./event/create-intersection-observer.mjs";
|
|
13
|
+
import { PresenceState, createPresence } from "./event/create-presence.mjs";
|
|
12
14
|
import { CreateVisibilityObserverOption, EntryCallback, UseVisibilityObserverFn, createVisibilityObserver } from "./event/create-visibility-observer.mjs";
|
|
13
15
|
import { runSolidEventHandler } from "./event/index.mjs";
|
|
14
16
|
import { createDebounce } from "./fn/create-debounce.mjs";
|
|
@@ -22,8 +24,8 @@ import { createWatch } from "./reactive/create-watch.mjs";
|
|
|
22
24
|
import "./reactive/index.mjs";
|
|
23
25
|
import { clearArray, iterate, list, range } from "./utils/array.mjs";
|
|
24
26
|
import { runAtNextAnimationFrame, sleep } from "./utils/async.mjs";
|
|
25
|
-
import { isArray, isClient, isDate, isEmpty, isFloat, isFn, isInt, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol } from "./utils/is.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, MaybeNullableAccessor, MaybePromise, OKLCH, PresenceState, RGB, UseVisibilityObserverFn, WindowEventName, access, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, 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,4 +1,4 @@
|
|
|
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
4
|
import { clamp, inRange, max, min, toHex } from "./utils/number.mjs";
|
|
@@ -7,6 +7,7 @@ import { camel, capitalize, dash, pascal, snake, template, title, trim } from ".
|
|
|
7
7
|
import { hexToRgb, rgbToHex } from "./color/hex-rgb.mjs";
|
|
8
8
|
import { oklchToRgb, rgbToOklch } from "./color/oklch-rgb.mjs";
|
|
9
9
|
import { isValidHex, isValidOKLCH, isValidRGB } from "./color/validation.mjs";
|
|
10
|
+
import { hasAnimation } from "./dom/animation.mjs";
|
|
10
11
|
import { combineClass, combineStyle, mountStyle, stringStyleToObject } from "./dom/css.mjs";
|
|
11
12
|
import { access } from "./reactive/access.mjs";
|
|
12
13
|
import { createDebounce } from "./fn/create-debounce.mjs";
|
|
@@ -19,8 +20,9 @@ import { makeEventListener } from "./event/make-event-listener.mjs";
|
|
|
19
20
|
import { createClickOutside } from "./event/create-click-outside.mjs";
|
|
20
21
|
import { createEventListener } from "./event/create-event-listener.mjs";
|
|
21
22
|
import { createIntersectionObserver } from "./event/create-intersection-observer.mjs";
|
|
23
|
+
import { createPresence } from "./event/create-presence.mjs";
|
|
22
24
|
import { createVisibilityObserver } from "./event/create-visibility-observer.mjs";
|
|
23
25
|
import { runSolidEventHandler } from "./event/index.mjs";
|
|
24
26
|
import { dataIf } from "./jsx/attrs.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, camel, capitalize, clamp, clearArray, combineClass, combineStyle, createClickOutside, createDebounce, createDebouncedWatch, createEventListener, createIntersectionObserver, 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/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
|
@@ -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.10.0",
|
|
4
4
|
"description": "A collection of tiny utilities for SolidJS applications",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"lint:error": "pnpm dlx ultracite@latest check --diagnostic-level error",
|
|
59
59
|
"lint:fix": "pnpm dlx ultracite@latest fix",
|
|
60
60
|
"type-check": "tsgo --noEmit --skipLibCheck",
|
|
61
|
-
"bump": "pnpm type-check && pnpm lint
|
|
61
|
+
"bump": "pnpm type-check && pnpm lint && pnpm test && pnpm bumpp --no-push",
|
|
62
62
|
"prepublish": "pnpm build"
|
|
63
63
|
}
|
|
64
64
|
}
|