Skip to content

Commit

Permalink
fix other examples
Browse files Browse the repository at this point in the history
  • Loading branch information
TGlide committed Apr 24, 2024
1 parent 5077d98 commit b1cff94
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .changeset/spicy-nails-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"runed": minor
---

add `box` and `readonlyBox` utilities
add `box` utilities
2 changes: 0 additions & 2 deletions packages/runed/src/lib/functions/box/box.test.svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ describe("box", () => {
count.value = 1;
expect(count.value).toBe(1);
});


});

describe("box.from", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { FunctionArgs, ValueOrGetter } from "$lib/internal/types.js";
import type { FunctionArgs, MaybeGetter } from "$lib/internal/types.js";

/**
* Function that takes a callback, and returns a debounced version of it.
Expand All @@ -15,7 +15,7 @@ import type { FunctionArgs, ValueOrGetter } from "$lib/internal/types.js";
*/
export function useDebounce<Callback extends FunctionArgs>(
callback: Callback,
wait: ValueOrGetter<number> = 250
wait: MaybeGetter<number> = 250
) {
let timeout: ReturnType<typeof setTimeout> | undefined;
let resolve: (value: ReturnType<Callback>) => void;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ValueOrReadonlyBox } from "$lib/index.js";
import { readonlyBox } from "$lib/index.js";
import { box } from "../box/box.svelte.js";
import type { MaybeBoxOrGetter } from "$lib/internal/types.js";

type Options = {
initialSize?: {
Expand All @@ -19,12 +19,12 @@ type Options = {
* @returns an object with `width` and `height` properties.
*/
export function useElementSize(
_node: ValueOrReadonlyBox<HTMLElement | undefined>,
_node: MaybeBoxOrGetter<HTMLElement | undefined>,
options: Options = {
box: "border-box",
}
): { width: number; height: number } {
const node = readonlyBox(_node);
const node = box.from(_node);
const size = $state({
width: options.initialSize?.width ?? 0,
height: options.initialSize?.height ?? 0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { box } from "../box/box.svelte.js";
import type { MaybeBoxOrGetter } from "$lib/internal/types.js";
import { addEventListener } from "$lib/internal/utils/event.js";
import { type ValueOrReadonlyBox, readonlyBox } from "$lib/index.js";
;

export function useEventListener<TEvent extends keyof WindowEventMap>(
target: ValueOrReadonlyBox<Window | null | undefined>,
target: MaybeBoxOrGetter<Window | null | undefined>,
event: TEvent,
handler: (this: Window, event: WindowEventMap[TEvent]) => unknown,
options?: boolean | AddEventListenerOptions
): void;

export function useEventListener<TEvent extends keyof DocumentEventMap>(
target: ValueOrReadonlyBox<Document | null | undefined>,
target: MaybeBoxOrGetter<Document | null | undefined>,
event: TEvent,
handler: (this: Document, event: DocumentEventMap[TEvent]) => unknown,
options?: boolean | AddEventListenerOptions
Expand All @@ -19,26 +21,26 @@ export function useEventListener<
TElement extends HTMLElement,
TEvent extends keyof HTMLElementEventMap,
>(
target: ValueOrReadonlyBox<TElement | null | undefined>,
target: MaybeBoxOrGetter<TElement | null | undefined>,
event: TEvent,
handler: (this: TElement, event: HTMLElementEventMap[TEvent]) => unknown,
options?: boolean | AddEventListenerOptions
): void;

export function useEventListener(
target: ValueOrReadonlyBox<EventTarget | null | undefined>,
target: MaybeBoxOrGetter<EventTarget | null | undefined>,
event: string,
handler: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOptions
): void;

export function useEventListener(
_target: ValueOrReadonlyBox<EventTarget | null | undefined>,
_target: MaybeBoxOrGetter<EventTarget | null | undefined>,
event: string,
handler: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOptions
) {
const target = readonlyBox(_target);
const target = box.from(_target);

$effect(() => {
if (target.value === undefined || target.value === null) return;
Expand Down
6 changes: 5 additions & 1 deletion packages/runed/src/lib/internal/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import type { ReadableBox } from "$lib/functions/index.js";

// eslint-disable-next-line ts/no-explicit-any
export type FunctionArgs<Args extends any[] = any[], Return = void> = (...args: Args) => Return;

export type Getter<T> = () => T;
export type ValueOrGetter<T> = T | (() => T);
export type MaybeGetter<T> = T | (() => T);

export type MaybeBoxOrGetter<T> = T | Getter<T> | ReadableBox<T>

0 comments on commit b1cff94

Please sign in to comment.