From 7e5af28ac241d409745f1c395721288b3da70518 Mon Sep 17 00:00:00 2001 From: Chris Kruining Date: Wed, 8 Jan 2025 11:31:16 +0100 Subject: [PATCH] remove debounce in favor of solid-primitive --- bun.lockb | Bin 361504 -> 361935 bytes package.json | 1 + src/components/filetree.tsx | 2 +- src/features/file/grid.tsx | 3 +- src/routes/(editor)/experimental/grid.tsx | 3 +- src/utilities.spec.ts | 34 ---------------------- src/utilities.ts | 12 -------- 7 files changed, 6 insertions(+), 49 deletions(-) diff --git a/bun.lockb b/bun.lockb index f6a66cd2f06c1345ca4c1b13adfd408ced7a04da..810c186ad2c85094ae42972ef3619b7dfad14fb9 100644 GIT binary patch delta 57814 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
!HrDL8yOInFo7#% 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 delta 57418 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 K9>l|1TL}Q!I}|?v diff --git a/package.json b/package.json index c39ed2b..3e5ed53 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "dependencies": { "@solid-primitives/clipboard": "^1.5.10", "@solid-primitives/i18n": "^2.1.1", + "@solid-primitives/scheduled": "^1.4.4", "@solid-primitives/storage": "^4.2.1", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.2", diff --git a/src/components/filetree.tsx b/src/components/filetree.tsx index 9515cd1..2cdbae5 100644 --- a/src/components/filetree.tsx +++ b/src/components/filetree.tsx @@ -1,8 +1,8 @@ import { Accessor, Component, createContext, createSignal, For, JSX, Show, useContext } from "solid-js"; import { AiFillFile, AiFillFolder, AiFillFolderOpen } from "solid-icons/ai"; import { SelectionProvider, selectable } from "~/features/selectable"; +import { debounce } from "@solid-primitives/scheduled"; import css from "./filetree.module.css"; -import { debounce } from "~/utilities"; selectable; diff --git a/src/features/file/grid.tsx b/src/features/file/grid.tsx index 22c7c26..1deed61 100644 --- a/src/features/file/grid.tsx +++ b/src/features/file/grid.tsx @@ -1,9 +1,10 @@ import { Accessor, Component, createEffect, createMemo, createSignal, JSX } from "solid-js"; -import { debounce, decode, Mutation } from "~/utilities"; +import { decode, Mutation } from "~/utilities"; import { Column, GridApi as GridCompApi, Grid as GridComp } from "~/components/grid"; import { createDataSet, DataSetNode, DataSetRowNode } from "~/components/table"; import { SelectionItem } from "../selectable"; import { useI18n } from "../i18n"; +import { debounce } from "@solid-primitives/scheduled"; import css from "./grid.module.css" export type Entry = { key: string } & { [lang: string]: string }; diff --git a/src/routes/(editor)/experimental/grid.tsx b/src/routes/(editor)/experimental/grid.tsx index bd988fc..037b8e1 100644 --- a/src/routes/(editor)/experimental/grid.tsx +++ b/src/routes/(editor)/experimental/grid.tsx @@ -2,8 +2,9 @@ import { Sidebar } from '~/components/sidebar'; import { CellEditor, Column, DataSetGroupNode, DataSetNode, DataSetRowNode, Grid, GridApi } from '~/components/grid'; import { people, Person } from './experimental.data'; import { Component, createEffect, createMemo, createSignal, For, Match, Switch } from 'solid-js'; -import { debounce, MutarionKind, Mutation } from '~/utilities'; +import { MutarionKind, Mutation } from '~/utilities'; import { createDataSet, Table } from '~/components/table'; +import { debounce } from '@solid-primitives/scheduled'; import css from './grid.module.css'; export default function GridExperiment() { diff --git a/src/utilities.spec.ts b/src/utilities.spec.ts index e2394c4..c456d36 100644 --- a/src/utilities.spec.ts +++ b/src/utilities.spec.ts @@ -72,40 +72,6 @@ describe('utilities', () => { }); }); - describe('debounce', () => { - const { tick } = useFakeTimers(); - - it('should run the given callback after the provided time', async () => { - // Arrange - const callback = mock(() => { }); - const delay = 1000; - const debounced = debounce(callback, delay); - - // Act - debounced(); - tick(delay); - - // Assert - expect(callback).toHaveBeenCalledTimes(1); - }); - - it('should reset if another call is made', async () => { - // Arrange - const callback = mock(() => { }); - const delay = 1000; - const debounced = debounce(callback, delay); - - // Act - debounced(); - tick(delay / 2); - debounced(); - tick(delay); - - // Assert - expect(callback).toHaveBeenCalledTimes(1); - }); - }); - describe('deepCopy', () => { it('can skip values passed by reference (non-objects, null, and undefined)', async () => { // arrange diff --git a/src/utilities.ts b/src/utilities.ts index 9bc9fd5..e58a76d 100644 --- a/src/utilities.ts +++ b/src/utilities.ts @@ -23,18 +23,6 @@ const decodeReplacer = (_: any, char: string) => ({ }[char.charAt(0)] ?? ''); export const decode = (subject: string): string => subject.replace(decodeRegex, decodeReplacer); -export const debounce = void>(callback: T, delay: number): ((...args: Parameters) => void) => { - let handle: ReturnType | undefined; - - return (...args: Parameters) => { - if (handle) { - clearTimeout(handle); - } - - handle = setTimeout(() => callback(...args), delay); - }; -}; - export const deepCopy = (original: T): T => { if (typeof original !== 'object' || original === null || original === undefined) { return original;