From 0848b05088d15eec4e4ca6fcba74147ba1ec6b70 Mon Sep 17 00:00:00 2001 From: Sean Lynch Date: Wed, 14 May 2025 15:16:02 -0400 Subject: [PATCH 1/3] Cleanup --- packages/svelte-state/src/lib/index.ts | 1 + .../svelte-state/src/lib/selectionState.svelte.ts | 14 ++++++-------- .../docs/svelte-state/selectionState/+page.md | 2 -- .../docs/svelte-state/selectionState/+page.ts | 2 +- .../routes/docs/svelte-state/uniqueState/+page.ts | 2 +- .../routes/docs/svelte-stores/timerStore/+page.md | 4 +++- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/svelte-state/src/lib/index.ts b/packages/svelte-state/src/lib/index.ts index 44a397c..0a641cf 100644 --- a/packages/svelte-state/src/lib/index.ts +++ b/packages/svelte-state/src/lib/index.ts @@ -1,2 +1,3 @@ export { SelectionState } from './selectionState.svelte.js'; +export { TimerState } from './timerState.svelte.js'; export { UniqueState } from './uniqueState.svelte.js'; diff --git a/packages/svelte-state/src/lib/selectionState.svelte.ts b/packages/svelte-state/src/lib/selectionState.svelte.ts index 06763e0..96e0c78 100644 --- a/packages/svelte-state/src/lib/selectionState.svelte.ts +++ b/packages/svelte-state/src/lib/selectionState.svelte.ts @@ -1,6 +1,6 @@ import { UniqueState } from './uniqueState.svelte.js'; -export type SelectionProps = { +export type SelectionOptions = { /** Initial values */ initial?: T[]; @@ -14,8 +14,6 @@ export type SelectionProps = { max?: number; }; -// export type SelectionState = ReturnType>; - export class SelectionState { #initial: T[]; #selected: UniqueState; @@ -24,13 +22,13 @@ export class SelectionState { single: boolean; max: number | undefined; - constructor(props: SelectionProps = {}) { - this.#initial = props.initial ?? []; + constructor(options: SelectionOptions = {}) { + this.#initial = options.initial ?? []; this.#selected = new UniqueState(this.#initial); - this.all = props.all ?? []; - this.single = props.single ?? false; - this.max = props.max; + this.all = options.all ?? []; + this.single = options.single ?? false; + this.max = options.max; } get current() { diff --git a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.md b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.md index 77a396f..b2f962a 100644 --- a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.md +++ b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.md @@ -14,8 +14,6 @@ const selection3 = new SelectionState({ all: data.map(d => d.id)}); const selection4 = new SelectionState({ single: true }); const selection5 = new SelectionState({ max: 3 }); - - console.log({ selection })

Usage

diff --git a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts index b6f1695..8a06543 100644 --- a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts +++ b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts @@ -8,7 +8,7 @@ export async function load() { pageSource, description: 'Manage item selection state including toggling values, selecting all, and clear or reset selection', - // related: ['components/MultiSelect', 'components/Selection'], + related: ['svelte-state/UniqueState', 'components/MultiSelect', 'components/Selection'], }, }; } diff --git a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts index d5f5db7..2b90a09 100644 --- a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts +++ b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts @@ -8,7 +8,7 @@ export async function load() { pageSource, description: 'State to manage unique values using `Set` with improves ergonomics and better control of updates', - related: ['svelte-state/selectionState'], + related: ['svelte-state/SelectionState'], }, }; } diff --git a/sites/docs/src/routes/docs/svelte-stores/timerStore/+page.md b/sites/docs/src/routes/docs/svelte-stores/timerStore/+page.md index fd76221..1572f1a 100644 --- a/sites/docs/src/routes/docs/svelte-stores/timerStore/+page.md +++ b/sites/docs/src/routes/docs/svelte-stores/timerStore/+page.md @@ -22,7 +22,9 @@ const timer = timerStore(); const timer = timerStore({ initial?: T, onTick?: (value: T) => {...}, delay?: number, disabled?: boolean }) ``` -

Example

+

Examples

+ +

Default

```svelte + +

Usage

+ + + +({ initial?: T, onTick?: (value: T) => {...}, delay?: number, disabled?: boolean })`} + language="javascript" +/> + +

Examples

+ +

Default

+ + + + +
{dateTimer.current}
+ { + // @ts-expect-error + e.target?.checked ? dateTimer.start() : dateTimer.stop(); + }} + /> +
+ +

Tick count

+ + value + 1 });`} + language="javascript" +/> + + +
{tickTimer.current}
+ { + // @ts-expect-error + e.target?.checked ? tickTimer.start() : tickTimer.stop(); + }} + /> +
diff --git a/sites/docs/src/routes/docs/svelte-state/TimerState/+page.ts b/sites/docs/src/routes/docs/svelte-state/TimerState/+page.ts new file mode 100644 index 0000000..43030ae --- /dev/null +++ b/sites/docs/src/routes/docs/svelte-state/TimerState/+page.ts @@ -0,0 +1,13 @@ +import source from '$svelte-state/timerState.svelte.ts?raw'; +import pageSource from './+page.svelte?raw'; + +export async function load() { + return { + meta: { + source, + pageSource, + description: 'Manage interval ticks, useful for timely updates and countdowns', + related: ['components/Duration', 'components/ScrollingValue'], + }, + }; +} From c83a5ccad26de8472b65610c1bd09d2eba234890 Mon Sep 17 00:00:00 2001 From: Sean Lynch Date: Wed, 14 May 2025 15:26:53 -0400 Subject: [PATCH 3/3] docs: Migrate from +page.md to +page.svelte --- .../docs/svelte-state/TimerState/+page.svelte | 5 +- .../docs/svelte-state/selectionState/+page.md | 107 ------------- .../svelte-state/selectionState/+page.svelte | 141 ++++++++++++++++++ .../docs/svelte-state/selectionState/+page.ts | 2 +- .../docs/svelte-state/uniqueState/+page.md | 41 ----- .../svelte-state/uniqueState/+page.svelte | 45 ++++++ .../docs/svelte-state/uniqueState/+page.ts | 2 +- 7 files changed, 190 insertions(+), 153 deletions(-) delete mode 100644 sites/docs/src/routes/docs/svelte-state/selectionState/+page.md create mode 100644 sites/docs/src/routes/docs/svelte-state/selectionState/+page.svelte delete mode 100644 sites/docs/src/routes/docs/svelte-state/uniqueState/+page.md create mode 100644 sites/docs/src/routes/docs/svelte-state/uniqueState/+page.svelte diff --git a/sites/docs/src/routes/docs/svelte-state/TimerState/+page.svelte b/sites/docs/src/routes/docs/svelte-state/TimerState/+page.svelte index f05895e..ffbc494 100644 --- a/sites/docs/src/routes/docs/svelte-state/TimerState/+page.svelte +++ b/sites/docs/src/routes/docs/svelte-state/TimerState/+page.svelte @@ -1,8 +1,7 @@ - -

Usage

- -

Max

- -```js -const selection = new SelectionState({ max: 3 }); -``` - - - {#each data as d} -
- selection5.toggleSelected(d.id)} disabled={selection5.isDisabled(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify(selection5.current)} -
- -

Basic

- -```js -const selection = new SelectionState(); -``` - - - {#each data as d} -
- selection.toggleSelected(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify(selection.current)} -
- -

Initial selection

- -```js -const selection2 = new SelectionState({ initial: [3, 4, 5] }); -``` - - - {#each data as d} -
- selection2.toggleSelected(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify(selection2.current)} -
- -

Select all

- -```js -const selection3 = new SelectionState({ all: data.map((d) => d.id) }); -``` - - - selection3.toggleAll()}> - Select all - - {#each data as d} -
- selection3.toggleSelected(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify(selection3.current)} -
- -

Single

- -```js -const selection4 = new SelectionState({ single: true }); -``` - - - {#each data as d} -
- selection4.toggleSelected(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify(selection4.current)} -
diff --git a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.svelte b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.svelte new file mode 100644 index 0000000..45db5aa --- /dev/null +++ b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.svelte @@ -0,0 +1,141 @@ + + +

Usage

+ + + +

Examples

+ +

Basic

+ + + + + {#each data as d} +
+ selection.toggleSelected(d.id)} + > + {d.id} + +
+ {/each} + selected: {JSON.stringify(selection.current)} +
+ +

Initial selection

+ + + + + {#each data as d} +
+ selection2.toggleSelected(d.id)} + > + {d.id} + +
+ {/each} + selected: {JSON.stringify(selection2.current)} +
+ +

Max

+ + + + + {#each data as d} +
+ selection5.toggleSelected(d.id)} + disabled={selection5.isDisabled(d.id)} + > + {d.id} + +
+ {/each} + selected: {JSON.stringify(selection5.current)} +
+ +

Select all

+ + d.id) });`} + language="javascript" +/> + + + selection3.toggleAll()} + > + Select all + + {#each data as d} +
+ selection3.toggleSelected(d.id)} + > + {d.id} + +
+ {/each} + selected: {JSON.stringify(selection3.current)} +
+ +

Single

+ + + + + {#each data as d} +
+ selection4.toggleSelected(d.id)} + > + {d.id} + +
+ {/each} + selected: {JSON.stringify(selection4.current)} +
diff --git a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts index 8a06543..0158feb 100644 --- a/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts +++ b/sites/docs/src/routes/docs/svelte-state/selectionState/+page.ts @@ -1,5 +1,5 @@ import source from '$svelte-state/selectionState.svelte.ts?raw'; -import pageSource from './+page.md?raw'; +import pageSource from './+page.svelte?raw'; export async function load() { return { diff --git a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.md b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.md deleted file mode 100644 index 2ea6e15..0000000 --- a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.md +++ /dev/null @@ -1,41 +0,0 @@ - - -

Usage

- -```js -import { uniqueState } from '@layerstack/svelte-state'; - -const state = new UniqueState(); -// state.current.has(value) -// state.current.size -// state.add(value); -// state.delete(value); -// state.toggle(value); -``` - -

Examples

- -

Basic

- - - {#each data as d} -
- state.toggle(d.id)}> - {d.id} - -
- {/each} - selected: {JSON.stringify([...state.current])} -
diff --git a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.svelte b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.svelte new file mode 100644 index 0000000..33fc105 --- /dev/null +++ b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.svelte @@ -0,0 +1,45 @@ + + +

Usage

+ + + +

Examples

+ +

Basic

+ + + {#each data as d} +
+ state.toggle(d.id)}> + {d.id} + +
+ {/each} + selected: {JSON.stringify([...state.current])} +
diff --git a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts index 2b90a09..b55a2ee 100644 --- a/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts +++ b/sites/docs/src/routes/docs/svelte-state/uniqueState/+page.ts @@ -1,5 +1,5 @@ import source from '$svelte-state/uniqueState.svelte.ts?raw'; -import pageSource from './+page.md?raw'; +import pageSource from './+page.svelte?raw'; export async function load() { return {