From 6d22446fdec5303214dedf74db4a3de399cc7b53 Mon Sep 17 00:00:00 2001 From: Hunter Johnston Date: Wed, 18 Sep 2024 17:33:12 -0400 Subject: [PATCH 1/8] update sv and runed next --- package.json | 2 +- packages/bits-ui/package.json | 4 +- .../src/lib/bits/calendar/calendar.svelte.ts | 21 +- .../components/date-range-picker.svelte | 6 +- .../bits-ui/src/lib/bits/menu/menu.svelte.ts | 9 +- .../navigation-menu/navigation-menu.svelte.ts | 32 +-- .../components/range-calendar.svelte | 6 +- .../range-calendar/range-calendar.svelte.ts | 21 +- .../bits/scroll-area/scroll-area.svelte.ts | 4 +- .../src/lib/bits/select/select.svelte.ts | 95 ++++---- .../src/lib/bits/tooltip/tooltip.svelte.ts | 22 +- .../shared/date/calendar-helpers.svelte.ts | 33 +-- pnpm-lock.yaml | 212 +++++++++--------- sites/docs/package.json | 2 +- 14 files changed, 246 insertions(+), 223 deletions(-) diff --git a/package.json b/package.json index 1e0e4b8e4..b75d9eb72 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "prettier": "^3.2.5", "prettier-plugin-svelte": "^3.2.2", "prettier-plugin-tailwindcss": "0.5.13", - "svelte": "5.0.0-next.208", + "svelte": "5.0.0-next.251", "svelte-eslint-parser": "^0.41.0", "wrangler": "^3.44.0" }, diff --git a/packages/bits-ui/package.json b/packages/bits-ui/package.json index b7115e168..b5e478d27 100644 --- a/packages/bits-ui/package.json +++ b/packages/bits-ui/package.json @@ -44,7 +44,7 @@ "jsdom": "^24.1.0", "publint": "^0.2.8", "resize-observer-polyfill": "^1.5.1", - "svelte": "5.0.0-next.208", + "svelte": "5.0.0-next.251", "svelte-check": "^3.8.4", "tslib": "^2.6.3", "typescript": "^5.5.3", @@ -60,7 +60,7 @@ "@internationalized/date": "^3.5.4", "clsx": "^2.1.1", "esm-env": "^1.0.0", - "runed": "^0.15.0", + "runed": "^0.15.2", "scule": "^1.3.0", "style-object-to-css-string": "^1.1.3", "style-to-object": "^1.0.6", diff --git a/packages/bits-ui/src/lib/bits/calendar/calendar.svelte.ts b/packages/bits-ui/src/lib/bits/calendar/calendar.svelte.ts index a5a78d410..c893647f2 100644 --- a/packages/bits-ui/src/lib/bits/calendar/calendar.svelte.ts +++ b/packages/bits-ui/src/lib/bits/calendar/calendar.svelte.ts @@ -218,16 +218,19 @@ export class CalendarRootState { /** * Synchronize the placeholder value with the current value. */ - watch(this.value, () => { - const value = this.value.current; - if (Array.isArray(value) && value.length) { - const lastValue = value[value.length - 1]; - if (lastValue && this.placeholder.current !== lastValue) { - this.placeholder.current = lastValue; + $effect(() => { + this.value.current; + untrack(() => { + const value = this.value.current; + if (Array.isArray(value) && value.length) { + const lastValue = value[value.length - 1]; + if (lastValue && this.placeholder.current !== lastValue) { + this.placeholder.current = lastValue; + } + } else if (!Array.isArray(value) && value && this.placeholder.current !== value) { + this.placeholder.current = value; } - } else if (!Array.isArray(value) && value && this.placeholder.current !== value) { - this.placeholder.current = value; - } + }); }); } diff --git a/packages/bits-ui/src/lib/bits/date-range-picker/components/date-range-picker.svelte b/packages/bits-ui/src/lib/bits/date-range-picker/components/date-range-picker.svelte index 34e63e271..13de56dab 100644 --- a/packages/bits-ui/src/lib/bits/date-range-picker/components/date-range-picker.svelte +++ b/packages/bits-ui/src/lib/bits/date-range-picker/components/date-range-picker.svelte @@ -83,10 +83,8 @@ value: box.with( () => value as DateRange, (v) => { - if (!$state.is(value, v)) { - value = v; - onValueChange(v); - } + value = v; + onValueChange(v); } ), placeholder: box.with( diff --git a/packages/bits-ui/src/lib/bits/menu/menu.svelte.ts b/packages/bits-ui/src/lib/bits/menu/menu.svelte.ts index f6251859a..c5158a796 100644 --- a/packages/bits-ui/src/lib/bits/menu/menu.svelte.ts +++ b/packages/bits-ui/src/lib/bits/menu/menu.svelte.ts @@ -1,5 +1,5 @@ import { box } from "svelte-toolbelt"; -import { tick } from "svelte"; +import { tick, untrack } from "svelte"; import { IsFocusWithin } from "runed"; import { FIRST_LAST_KEYS, @@ -145,8 +145,11 @@ class MenuMenuState { this.parentMenu = parentMenu; if (parentMenu) { - watch(parentMenu.open, (v) => { - if (!v) this.open.current = false; + $effect(() => { + parentMenu.open; + untrack(() => { + if (!this.parentMenu?.open) this.open.current = false; + }); }); } } diff --git a/packages/bits-ui/src/lib/bits/navigation-menu/navigation-menu.svelte.ts b/packages/bits-ui/src/lib/bits/navigation-menu/navigation-menu.svelte.ts index 7c88c29bb..a0535d112 100644 --- a/packages/bits-ui/src/lib/bits/navigation-menu/navigation-menu.svelte.ts +++ b/packages/bits-ui/src/lib/bits/navigation-menu/navigation-menu.svelte.ts @@ -86,20 +86,24 @@ class NavigationMenuRootState { ref: this.rootRef, }); - watch(this.value, (curr) => { - const isOpen = curr !== ""; - const hasSkipDelayDuration = this.skipDelayDuration.current > 0; - - if (isOpen) { - window.clearTimeout(this.skipDelayTimer); - if (hasSkipDelayDuration) this.isOpenDelayed = false; - } else { - window.clearTimeout(this.skipDelayTimer); - this.skipDelayTimer = window.setTimeout( - () => (this.isOpenDelayed = true), - this.skipDelayDuration.current - ); - } + $effect(() => { + this.value.current; + untrack(() => { + const curr = this.value.current; + const isOpen = curr !== ""; + const hasSkipDelayDuration = this.skipDelayDuration.current > 0; + + if (isOpen) { + window.clearTimeout(this.skipDelayTimer); + if (hasSkipDelayDuration) this.isOpenDelayed = false; + } else { + window.clearTimeout(this.skipDelayTimer); + this.skipDelayTimer = window.setTimeout( + () => (this.isOpenDelayed = true), + this.skipDelayDuration.current + ); + } + }); }); $effect(() => { diff --git a/packages/bits-ui/src/lib/bits/range-calendar/components/range-calendar.svelte b/packages/bits-ui/src/lib/bits/range-calendar/components/range-calendar.svelte index d8c142f49..03be8fd19 100644 --- a/packages/bits-ui/src/lib/bits/range-calendar/components/range-calendar.svelte +++ b/packages/bits-ui/src/lib/bits/range-calendar/components/range-calendar.svelte @@ -58,10 +58,8 @@ value: box.with( () => (value === undefined ? { start: undefined, end: undefined } : value), (v) => { - if (!$state.is(v, value)) { - value = v; - onValueChange(v as any); - } + value = v; + onValueChange(v as any); } ), placeholder: box.with( diff --git a/packages/bits-ui/src/lib/bits/range-calendar/range-calendar.svelte.ts b/packages/bits-ui/src/lib/bits/range-calendar/range-calendar.svelte.ts index b2b047aab..707f2a9fb 100644 --- a/packages/bits-ui/src/lib/bits/range-calendar/range-calendar.svelte.ts +++ b/packages/bits-ui/src/lib/bits/range-calendar/range-calendar.svelte.ts @@ -27,12 +27,8 @@ import { type CalendarPrevButtonStateProps, } from "../calendar/calendar.svelte.js"; import type { DateRange, Month } from "$lib/shared/index.js"; -import { - type ReadableBoxedValues, - type WritableBoxedValues, - watch, -} from "$lib/internal/box.svelte.js"; -import type { OnChangeFn, WithRefProps } from "$lib/internal/types.js"; +import type { ReadableBoxedValues, WritableBoxedValues } from "$lib/internal/box.svelte.js"; +import type { WithRefProps } from "$lib/internal/types.js"; import { type Announcer, getAnnouncer } from "$lib/shared/date/announcer.js"; import { type Formatter, createFormatter } from "$lib/shared/date/formatter.js"; import { useId } from "$lib/internal/useId.js"; @@ -216,11 +212,14 @@ export class RangeCalendarRootState { /** * Synchronize the placeholder value with the current start value */ - watch(this.value, () => { - const startValue = this.value.current.start; - if (startValue && this.placeholder.current !== startValue) { - this.placeholder.current = startValue; - } + $effect(() => { + this.value.current; + untrack(() => { + const startValue = this.value.current.start; + if (startValue && this.placeholder.current !== startValue) { + this.placeholder.current = startValue; + } + }); }); $effect(() => { diff --git a/packages/bits-ui/src/lib/bits/scroll-area/scroll-area.svelte.ts b/packages/bits-ui/src/lib/bits/scroll-area/scroll-area.svelte.ts index 7689a6854..0510daaf0 100644 --- a/packages/bits-ui/src/lib/bits/scroll-area/scroll-area.svelte.ts +++ b/packages/bits-ui/src/lib/bits/scroll-area/scroll-area.svelte.ts @@ -374,7 +374,7 @@ class ScrollAreaScrollbarVisibleState { root: ScrollAreaRootState; thumbNode = $state(null); pointerOffset = $state(0); - sizes = $state.frozen({ + sizes = $state.raw({ content: 0, viewport: 0, scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }, @@ -696,7 +696,7 @@ class ScrollAreaScrollbarSharedState { scrollbarState: ScrollbarAxis; root: ScrollAreaRootState; scrollbarVis: ScrollAreaScrollbarVisibleState; - rect = $state.frozen(null); + rect = $state.raw(null); prevWebkitUserSelect = $state(""); handleResize: () => void; handleThumbPositionChange: () => void; diff --git a/packages/bits-ui/src/lib/bits/select/select.svelte.ts b/packages/bits-ui/src/lib/bits/select/select.svelte.ts index 1b4839d75..ee7162a29 100644 --- a/packages/bits-ui/src/lib/bits/select/select.svelte.ts +++ b/packages/bits-ui/src/lib/bits/select/select.svelte.ts @@ -392,57 +392,62 @@ export class SelectContentState { }, }); - watch(this.root.open, () => { - let cleanup = [noop]; - - afterTick(() => { - const node = document.getElementById(this.id.current); - if (!node) return; - - let pointerMoveDelta = { x: 0, y: 0 }; - - const handlePointerMove = (e: PointerEvent) => { - pointerMoveDelta = { - x: Math.abs( - Math.round(e.pageX) - (this.root.triggerPointerDownPos.current?.x ?? 0) - ), - y: Math.abs( - Math.round(e.pageY) - (this.root.triggerPointerDownPos.current?.y ?? 0) - ), + $effect(() => { + this.root.open.current; + untrack(() => { + let cleanup = [noop]; + + afterTick(() => { + const node = document.getElementById(this.id.current); + if (!node) return; + + let pointerMoveDelta = { x: 0, y: 0 }; + + const handlePointerMove = (e: PointerEvent) => { + pointerMoveDelta = { + x: Math.abs( + Math.round(e.pageX) - + (this.root.triggerPointerDownPos.current?.x ?? 0) + ), + y: Math.abs( + Math.round(e.pageY) - + (this.root.triggerPointerDownPos.current?.y ?? 0) + ), + }; }; - }; - const handlePointerUp = (e: PointerEvent) => { - if (e.pointerType === "touch") return; + const handlePointerUp = (e: PointerEvent) => { + if (e.pointerType === "touch") return; - if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) { - e.preventDefault(); - } else { - if (!this.root.contentNode?.contains(e.target as HTMLElement)) { - this.root.handleClose(); + if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) { + e.preventDefault(); + } else { + if (!this.root.contentNode?.contains(e.target as HTMLElement)) { + this.root.handleClose(); + } } - } - document.removeEventListener("pointermove", handlePointerMove); - this.root.triggerPointerDownPos.current = null; - }; + document.removeEventListener("pointermove", handlePointerMove); + this.root.triggerPointerDownPos.current = null; + }; - if (this.root.triggerPointerDownPos.current !== null) { - const pointerMove = addEventListener( - document, - "pointermove", - handlePointerMove - ); - const pointerUp = addEventListener(document, "pointerup", handlePointerUp, { - capture: true, - once: true, - }); - for (const cleanupFn of cleanup) cleanupFn(); - cleanup = [pointerMove, pointerUp]; - } + if (this.root.triggerPointerDownPos.current !== null) { + const pointerMove = addEventListener( + document, + "pointermove", + handlePointerMove + ); + const pointerUp = addEventListener(document, "pointerup", handlePointerUp, { + capture: true, + once: true, + }); + for (const cleanupFn of cleanup) cleanupFn(); + cleanup = [pointerMove, pointerUp]; + } - return () => { - for (const cleanupFn of cleanup) cleanupFn(); - }; + return () => { + for (const cleanupFn of cleanup) cleanupFn(); + }; + }); }); }); diff --git a/packages/bits-ui/src/lib/bits/tooltip/tooltip.svelte.ts b/packages/bits-ui/src/lib/bits/tooltip/tooltip.svelte.ts index 078389343..7dd3a2d31 100644 --- a/packages/bits-ui/src/lib/bits/tooltip/tooltip.svelte.ts +++ b/packages/bits-ui/src/lib/bits/tooltip/tooltip.svelte.ts @@ -149,15 +149,19 @@ class TooltipRootState { } }); - watch(this.open, (isOpen) => { - if (!this.provider.onClose) return; - if (isOpen) { - this.provider.onOpen(); - - document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN_EVENT)); - } else { - this.provider.onClose(); - } + $effect(() => { + this.open.current; + untrack(() => { + if (!this.provider.onClose) return; + const isOpen = this.open.current; + if (isOpen) { + this.provider.onOpen(); + + document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN_EVENT)); + } else { + this.provider.onClose(); + } + }); }); } diff --git a/packages/bits-ui/src/lib/shared/date/calendar-helpers.svelte.ts b/packages/bits-ui/src/lib/shared/date/calendar-helpers.svelte.ts index 084a2a893..f0a770f2c 100644 --- a/packages/bits-ui/src/lib/shared/date/calendar-helpers.svelte.ts +++ b/packages/bits-ui/src/lib/shared/date/calendar-helpers.svelte.ts @@ -566,23 +566,26 @@ export function useMonthViewPlaceholderSync({ numberOfMonths, setMonths, }: UseMonthViewPlaceholderSyncProps) { - watch(placeholder, () => { - /** - * If the placeholder's month is already in this visible months, - * we don't need to do anything. - */ - if (getVisibleMonths().some((month) => isSameMonth(month, placeholder.current))) { - return; - } + $effect(() => { + placeholder.current; + untrack(() => { + /** + * If the placeholder's month is already in this visible months, + * we don't need to do anything. + */ + if (getVisibleMonths().some((month) => isSameMonth(month, placeholder.current))) { + return; + } - const defaultMonthProps = { - weekStartsOn: weekStartsOn.current, - locale: locale.current, - fixedWeeks: fixedWeeks.current, - numberOfMonths: numberOfMonths.current, - }; + const defaultMonthProps = { + weekStartsOn: weekStartsOn.current, + locale: locale.current, + fixedWeeks: fixedWeeks.current, + numberOfMonths: numberOfMonths.current, + }; - setMonths(createMonths({ ...defaultMonthProps, dateObj: placeholder.current })); + setMonths(createMonths({ ...defaultMonthProps, dateObj: placeholder.current })); + }); }); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0361303b8..6adcda7f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.7 '@huntabyte/eslint-config': specifier: ^0.3.2 - version: 0.3.2(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vitest@2.0.4) + version: 0.3.2(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vitest@2.0.4) '@huntabyte/eslint-plugin': specifier: ^0.1.0 version: 0.1.0(eslint@9.8.0) @@ -25,22 +25,22 @@ importers: version: 9.8.0 eslint-plugin-svelte: specifier: ^2.37.0 - version: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208) + version: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251) prettier: specifier: ^3.2.5 version: 3.3.3 prettier-plugin-svelte: specifier: ^3.2.2 - version: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.208) + version: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.251) prettier-plugin-tailwindcss: specifier: 0.5.13 - version: 0.5.13(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.208))(prettier@3.3.3) + version: 0.5.13(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.251))(prettier@3.3.3) svelte: - specifier: 5.0.0-next.208 - version: 5.0.0-next.208 + specifier: 5.0.0-next.251 + version: 5.0.0-next.251 svelte-eslint-parser: specifier: ^0.41.0 - version: 0.41.0(svelte@5.0.0-next.208) + version: 0.41.0(svelte@5.0.0-next.251) wrangler: specifier: ^3.44.0 version: 3.67.1(@cloudflare/workers-types@4.20240725.0) @@ -63,8 +63,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 runed: - specifier: ^0.15.0 - version: 0.15.0(svelte@5.0.0-next.208) + specifier: ^0.15.2 + version: 0.15.2(svelte@5.0.0-next.251) scule: specifier: ^1.3.0 version: 1.3.0 @@ -76,17 +76,17 @@ importers: version: 1.0.6 svelte-toolbelt: specifier: ^0.1.0 - version: 0.1.0(svelte@5.0.0-next.208) + version: 0.1.0(svelte@5.0.0-next.251) devDependencies: '@sveltejs/kit': specifier: ^2.5.18 - version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) '@sveltejs/package': specifier: ^2.3.2 - version: 2.3.2(svelte@5.0.0-next.208)(typescript@5.5.4) + version: 2.3.2(svelte@5.0.0-next.251)(typescript@5.5.4) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.1 - version: 3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + version: 3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) '@testing-library/dom': specifier: ^10.3.1 version: 10.4.0 @@ -95,7 +95,7 @@ importers: version: 6.4.8 '@testing-library/svelte': specifier: ^5.2.1 - version: 5.2.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13))(vitest@2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)) + version: 5.2.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13))(vitest@2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)) '@testing-library/user-event': specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@10.4.0) @@ -130,11 +130,11 @@ importers: specifier: ^1.5.1 version: 1.5.1 svelte: - specifier: 5.0.0-next.208 - version: 5.0.0-next.208 + specifier: 5.0.0-next.251 + version: 5.0.0-next.251 svelte-check: specifier: ^3.8.4 - version: 3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.208) + version: 3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.251) tslib: specifier: ^2.6.3 version: 2.6.3 @@ -155,26 +155,26 @@ importers: version: 3.5.5 '@melt-ui/svelte': specifier: 0.76.2 - version: 0.76.2(svelte@5.0.0-next.208) + version: 0.76.2(svelte@5.0.0-next.251) bits-ui: specifier: workspace:* version: link:../../packages/bits-ui devDependencies: '@melt-ui/pp': specifier: ^0.3.0 - version: 0.3.2(@melt-ui/svelte@0.76.2(svelte@5.0.0-next.208))(svelte@5.0.0-next.208) + version: 0.3.2(@melt-ui/svelte@0.76.2(svelte@5.0.0-next.251))(svelte@5.0.0-next.251) '@prettier/sync': specifier: 0.3.0 version: 0.3.0(prettier@3.3.3) '@sveltejs/adapter-cloudflare': specifier: ^4.2.0 - version: 4.7.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(wrangler@3.67.1(@cloudflare/workers-types@4.20240725.0)) + version: 4.7.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(wrangler@3.67.1(@cloudflare/workers-types@4.20240725.0)) '@sveltejs/kit': specifier: ^2.5.0 - version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + version: 3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.13(tailwindcss@3.4.7) @@ -207,13 +207,13 @@ importers: version: 3.2.1 mdsx: specifier: ^0.0.6 - version: 0.0.6(svelte@5.0.0-next.208) + version: 0.0.6(svelte@5.0.0-next.251) mode-watcher: specifier: ^0.2.0 - version: 0.2.2(svelte@5.0.0-next.208) + version: 0.2.2(svelte@5.0.0-next.251) phosphor-svelte: specifier: ^2.0.1 - version: 2.0.1(svelte@5.0.0-next.208) + version: 2.0.1(svelte@5.0.0-next.251) postcss: specifier: ^8.4.33 version: 8.4.40 @@ -233,14 +233,14 @@ importers: specifier: ^1.1.1 version: 1.12.0 svelte: - specifier: 5.0.0-next.208 - version: 5.0.0-next.208 + specifier: 5.0.0-next.251 + version: 5.0.0-next.251 svelte-check: specifier: ^3.6.9 - version: 3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.208) + version: 3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.251) svelte-sonner: specifier: ^0.3.24 - version: 0.3.27(svelte@5.0.0-next.208) + version: 0.3.27(svelte@5.0.0-next.251) tailwind-merge: specifier: ^2.2.1 version: 2.4.0 @@ -1851,6 +1851,10 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.1: + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} + array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} @@ -4187,8 +4191,8 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - runed@0.15.0: - resolution: {integrity: sha512-dVFyidL/ihmoQF9eKu3hxXl3p4yg3asCIMTtxDIcH76wBLB99q6OvJoDl/qbIeL7+lT7q7gzOyaBMuGc1U2vhw==} + runed@0.15.2: + resolution: {integrity: sha512-4rqCpoq3IezYYxgGo4ukboXdZ86Z7xPkQJzdIO0h0NVHVX0Hwg+X5rOnRWoqRHMYIwEGpr+tSA2ywhlzOcMF5g==} peerDependencies: svelte: ^5.0.0-next.1 @@ -4500,8 +4504,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.0.0-next.208: - resolution: {integrity: sha512-gYABb68367fGnY/GIpb/j3DD5DUqhVWi6EodEBVpiRA9wLQTpY8QmuPg04xut/0EHqlFU3a40wbpjJKmpL3Y/g==} + svelte@5.0.0-next.251: + resolution: {integrity: sha512-LHYqc20juzfpLl61Yah/CpZEG4NWU1w7TgItvJkPqYGbmtLCHZHHhVqYskwDQnw73dGum81vyODxPlJAcOwxHA==} engines: {node: '>=18'} symbol-tree@3.2.4: @@ -5022,12 +5026,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.24.0(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vitest@2.0.4)': + '@antfu/eslint-config@2.24.0(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vitest@2.0.4)': dependencies: '@antfu/install-pkg': 0.3.3 '@clack/prompts': 0.7.0 '@stylistic/eslint-plugin': 2.6.0-beta.1(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/parser': 8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4) eslint: 9.8.0 eslint-config-flat-gitignore: 0.1.8 @@ -5042,7 +5046,7 @@ snapshots: eslint-plugin-markdown: 5.1.0(eslint@9.8.0) eslint-plugin-n: 17.10.1(eslint@9.8.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-perfectionist: 3.0.0(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) + eslint-plugin-perfectionist: 3.0.0(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)) eslint-plugin-regexp: 2.6.0(eslint@9.8.0) eslint-plugin-toml: 0.11.1(eslint@9.8.0) eslint-plugin-unicorn: 55.0.0(eslint@9.8.0) @@ -5061,8 +5065,8 @@ snapshots: yaml-eslint-parser: 1.2.3 yargs: 17.7.2 optionalDependencies: - eslint-plugin-svelte: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208) - svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.208) + eslint-plugin-svelte: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251) + svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.251) transitivePeerDependencies: - '@vue/compiler-sfc' - supports-color @@ -5735,9 +5739,9 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@huntabyte/eslint-config@0.3.2(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vitest@2.0.4)': + '@huntabyte/eslint-config@0.3.2(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vitest@2.0.4)': dependencies: - '@antfu/eslint-config': 2.24.0(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vitest@2.0.4) + '@antfu/eslint-config': 2.24.0(@vue/compiler-sfc@3.4.34)(eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251))(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vitest@2.0.4) '@antfu/install-pkg': 0.3.3 '@clack/prompts': 0.7.0 '@huntabyte/eslint-plugin': 0.1.0(eslint@9.8.0) @@ -5746,10 +5750,10 @@ snapshots: chalk: 5.3.0 eslint: 9.8.0 eslint-flat-config-utils: 0.2.5 - eslint-plugin-svelte: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208) + eslint-plugin-svelte: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251) local-pkg: 0.5.0 parse-gitignore: 2.0.0 - svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.208) + svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.251) yargs: 17.7.2 transitivePeerDependencies: - '@eslint-react/eslint-plugin' @@ -5886,14 +5890,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.76.2(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)': + '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.76.2(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)': dependencies: - '@melt-ui/svelte': 0.76.2(svelte@5.0.0-next.208) + '@melt-ui/svelte': 0.76.2(svelte@5.0.0-next.251) estree-walker: 3.0.3 magic-string: 0.30.11 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - '@melt-ui/svelte@0.76.2(svelte@5.0.0-next.208)': + '@melt-ui/svelte@0.76.2(svelte@5.0.0-next.251)': dependencies: '@floating-ui/core': 1.6.5 '@floating-ui/dom': 1.6.8 @@ -5901,7 +5905,7 @@ snapshots: dequal: 2.0.3 focus-trap: 7.5.4 nanoid: 5.0.7 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 '@nodelib/fs.scandir@2.1.5': dependencies: @@ -6167,17 +6171,17 @@ snapshots: - supports-color - typescript - '@sveltejs/adapter-cloudflare@4.7.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(wrangler@3.67.1(@cloudflare/workers-types@4.20240725.0))': + '@sveltejs/adapter-cloudflare@4.7.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(wrangler@3.67.1(@cloudflare/workers-types@4.20240725.0))': dependencies: '@cloudflare/workers-types': 4.20240725.0 - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) esbuild: 0.21.5 worktop: 0.8.0-next.18 wrangler: 3.67.1(@cloudflare/workers-types@4.20240725.0) - '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13))': + '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -6189,39 +6193,39 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 tiny-glob: 0.2.9 vite: 5.3.5(@types/node@20.14.13) - '@sveltejs/package@2.3.2(svelte@5.0.0-next.208)(typescript@5.5.4)': + '@sveltejs/package@2.3.2(svelte@5.0.0-next.251)(typescript@5.5.4)': dependencies: chokidar: 3.6.0 kleur: 4.1.5 sade: 1.8.1 semver: 7.6.3 - svelte: 5.0.0-next.208 - svelte2tsx: 0.7.13(svelte@5.0.0-next.208)(typescript@5.5.4) + svelte: 5.0.0-next.251 + svelte2tsx: 0.7.13(svelte@5.0.0-next.251)(typescript@5.5.4) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) debug: 4.3.6 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 vite: 5.3.5(@types/node@20.14.13) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13))': + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)))(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13)) debug: 4.3.6 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 - svelte: 5.0.0-next.208 - svelte-hmr: 0.16.0(svelte@5.0.0-next.208) + svelte: 5.0.0-next.251 + svelte-hmr: 0.16.0(svelte@5.0.0-next.251) vite: 5.3.5(@types/node@20.14.13) vitefu: 0.2.5(vite@5.3.5(@types/node@20.14.13)) transitivePeerDependencies: @@ -6268,10 +6272,10 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/svelte@5.2.1(svelte@5.0.0-next.208)(vite@5.3.5(@types/node@20.14.13))(vitest@2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1))': + '@testing-library/svelte@5.2.1(svelte@5.0.0-next.251)(vite@5.3.5(@types/node@20.14.13))(vitest@2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1))': dependencies: '@testing-library/dom': 10.4.0 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 optionalDependencies: vite: 5.3.5(@types/node@20.14.13) vitest: 2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1) @@ -6406,10 +6410,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.0.0-alpha.40(@typescript-eslint/parser@8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.0.0-alpha.40(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.0.0-alpha.40 '@typescript-eslint/type-utils': 8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4) '@typescript-eslint/utils': 8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4) @@ -6739,6 +6743,8 @@ snapshots: dependencies: dequal: 2.0.3 + aria-query@5.3.1: {} + array-timsort@1.0.3: {} array-union@2.1.0: {} @@ -7316,7 +7322,7 @@ snapshots: eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-perfectionist@3.0.0(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208))(svelte@5.0.0-next.208)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)): + eslint-plugin-perfectionist@3.0.0(eslint@9.8.0)(svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251))(svelte@5.0.0-next.251)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.8.0)): dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) @@ -7324,8 +7330,8 @@ snapshots: minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: - svelte: 5.0.0-next.208 - svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.208) + svelte: 5.0.0-next.251 + svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.251) vue-eslint-parser: 9.4.3(eslint@9.8.0) transitivePeerDependencies: - supports-color @@ -7342,7 +7348,7 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.208): + eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.251): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@jridgewell/sourcemap-codec': 1.5.0 @@ -7355,9 +7361,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.4.40) postcss-selector-parser: 6.1.1 semver: 7.6.3 - svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.208) + svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.251) optionalDependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 transitivePeerDependencies: - ts-node @@ -7396,14 +7402,14 @@ snapshots: eslint: 9.8.0 eslint-rule-composer: 0.3.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.0.0-alpha.40(@typescript-eslint/parser@8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4): dependencies: '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) eslint: 9.8.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@8.0.0-alpha.40(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.40(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) vitest: 2.0.4(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1) transitivePeerDependencies: - supports-color @@ -8557,7 +8563,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdsx@0.0.6(svelte@5.0.0-next.208): + mdsx@0.0.6(svelte@5.0.0-next.251): dependencies: esrap: 1.2.2 hast-util-to-html: 9.0.1 @@ -8566,7 +8572,7 @@ snapshots: rehype-stringify: 10.0.0 remark-parse: 11.0.0 remark-rehype: 11.1.0 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 unified: 11.0.5 unist-util-visit: 5.0.0 vfile: 6.0.2 @@ -9076,9 +9082,9 @@ snapshots: pkg-types: 1.1.3 ufo: 1.5.4 - mode-watcher@0.2.2(svelte@5.0.0-next.208): + mode-watcher@0.2.2(svelte@5.0.0-next.251): dependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 mri@1.2.0: {} @@ -9294,9 +9300,9 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 - phosphor-svelte@2.0.1(svelte@5.0.0-next.208): + phosphor-svelte@2.0.1(svelte@5.0.0-next.251): dependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 picocolors@1.0.1: {} @@ -9396,16 +9402,16 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.208): + prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.251): dependencies: prettier: 3.3.3 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - prettier-plugin-tailwindcss@0.5.13(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.208))(prettier@3.3.3): + prettier-plugin-tailwindcss@0.5.13(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.251))(prettier@3.3.3): dependencies: prettier: 3.3.3 optionalDependencies: - prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.208) + prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.251) prettier@2.8.8: {} @@ -9692,10 +9698,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 - runed@0.15.0(svelte@5.0.0-next.208): + runed@0.15.2(svelte@5.0.0-next.251): dependencies: esm-env: 1.0.0 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 rxjs@7.8.1: dependencies: @@ -9919,14 +9925,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.208): + svelte-check@3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.251): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.0.1 sade: 1.8.1 - svelte: 5.0.0-next.208 - svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.208)(typescript@5.5.4) + svelte: 5.0.0-next.251 + svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.251)(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - '@babel/core' @@ -9939,7 +9945,7 @@ snapshots: - stylus - sugarss - svelte-eslint-parser@0.41.0(svelte@5.0.0-next.208): + svelte-eslint-parser@0.41.0(svelte@5.0.0-next.251): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -9947,48 +9953,48 @@ snapshots: postcss: 8.4.40 postcss-scss: 4.0.9(postcss@8.4.40) optionalDependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - svelte-hmr@0.16.0(svelte@5.0.0-next.208): + svelte-hmr@0.16.0(svelte@5.0.0-next.251): dependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.208)(typescript@5.5.4): + svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.251)(typescript@5.5.4): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.11 sorcery: 0.11.1 strip-indent: 3.0.0 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 optionalDependencies: postcss: 8.4.40 postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.40) typescript: 5.5.4 - svelte-sonner@0.3.27(svelte@5.0.0-next.208): + svelte-sonner@0.3.27(svelte@5.0.0-next.251): dependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - svelte-toolbelt@0.1.0(svelte@5.0.0-next.208): + svelte-toolbelt@0.1.0(svelte@5.0.0-next.251): dependencies: - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 - svelte2tsx@0.7.13(svelte@5.0.0-next.208)(typescript@5.5.4): + svelte2tsx@0.7.13(svelte@5.0.0-next.251)(typescript@5.5.4): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.0.0-next.208 + svelte: 5.0.0-next.251 typescript: 5.5.4 - svelte@5.0.0-next.208: + svelte@5.0.0-next.251: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 '@types/estree': 1.0.5 acorn: 8.12.1 acorn-typescript: 1.4.13(acorn@8.12.1) - aria-query: 5.3.0 + aria-query: 5.3.1 axobject-query: 4.1.0 esm-env: 1.0.0 esrap: 1.2.2 diff --git a/sites/docs/package.json b/sites/docs/package.json index 986cbffc8..622f3c9e3 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -39,7 +39,7 @@ "rehype-slug": "^6.0.0", "remark-gfm": "^4.0.0", "shiki": "^1.1.1", - "svelte": "5.0.0-next.208", + "svelte": "5.0.0-next.251", "svelte-check": "^3.6.9", "svelte-sonner": "^0.3.24", "tailwind-merge": "^2.2.1", From 6414eb98e7968615918ba54c3ce059af5f46442c Mon Sep 17 00:00:00 2001 From: Hunter Johnston Date: Wed, 18 Sep 2024 17:50:04 -0400 Subject: [PATCH 2/8] urg --- package.json | 2 +- packages/bits-ui/package.json | 4 +- .../tests/alert-dialog/AlertDialogTest.svelte | 2 +- .../tests/calendar/CalendarMultiTest.svelte | 2 +- .../src/tests/calendar/CalendarTest.svelte | 2 +- .../tests/combobox/ComboboxMultiTest.svelte | 2 +- .../src/tests/combobox/ComboboxTest.svelte | 2 +- .../tests/context-menu/ContextMenuTest.svelte | 2 +- .../src/tests/date-field/DateFieldTest.svelte | 2 +- .../DateRangeFieldTest.svelte | 2 +- .../src/tests/dialog/DialogTest.svelte | 2 +- .../dropdown-menu/DropdownMenuTest.svelte | 2 +- .../tests/link-preview/LinkPreviewTest.svelte | 2 +- .../src/tests/listbox/ListboxMultiTest.svelte | 2 +- .../src/tests/listbox/ListboxTest.svelte | 2 +- .../src/tests/menubar/MenubarMenu.svelte | 2 +- .../tests/pagination/PaginationTest.svelte | 2 +- .../src/tests/popover/PopoverTest.svelte | 2 +- .../tests/radio-group/RadioGroupTest.svelte | 2 +- .../range-calendar/RangeCalendarTest.svelte | 2 +- .../tests/scroll-area/ScrollAreaTest.svelte | 2 +- .../src/tests/select/SelectTest.svelte | 2 +- .../src/tests/slider/SliderRangeTest.svelte | 2 +- .../src/tests/slider/SliderTest.svelte | 2 +- .../bits-ui/src/tests/tabs/TabsTest.svelte | 2 +- .../ToggleGroupMultipleTest.svelte | 2 +- .../tests/toggle-group/ToggleGroupTest.svelte | 2 +- .../src/tests/toolbar/ToolbarTest.svelte | 2 +- .../src/tests/tooltip/TooltipTest.svelte | 2 +- pnpm-lock.yaml | 495 +++++++++++------- sites/docs/package.json | 2 +- .../lib/components/markdown/blueprint.svelte | 2 +- 32 files changed, 350 insertions(+), 209 deletions(-) diff --git a/package.json b/package.json index b75d9eb72..935daeb47 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "prettier-plugin-svelte": "^3.2.2", "prettier-plugin-tailwindcss": "0.5.13", "svelte": "5.0.0-next.251", - "svelte-eslint-parser": "^0.41.0", + "svelte-eslint-parser": "^0.41.1", "wrangler": "^3.44.0" }, "type": "module", diff --git a/packages/bits-ui/package.json b/packages/bits-ui/package.json index b5e478d27..05b6c20b5 100644 --- a/packages/bits-ui/package.json +++ b/packages/bits-ui/package.json @@ -45,10 +45,10 @@ "publint": "^0.2.8", "resize-observer-polyfill": "^1.5.1", "svelte": "5.0.0-next.251", - "svelte-check": "^3.8.4", + "svelte-check": "^4.0.2", "tslib": "^2.6.3", "typescript": "^5.5.3", - "vite": "^5.3.3", + "vite": "^5.4.6", "vitest": "^2.0.2" }, "svelte": "./dist/index.js", diff --git a/packages/bits-ui/src/tests/alert-dialog/AlertDialogTest.svelte b/packages/bits-ui/src/tests/alert-dialog/AlertDialogTest.svelte index 5829c9eae..769ae6afe 100644 --- a/packages/bits-ui/src/tests/alert-dialog/AlertDialogTest.svelte +++ b/packages/bits-ui/src/tests/alert-dialog/AlertDialogTest.svelte @@ -1,4 +1,4 @@ - diff --git a/packages/bits-ui/src/tests/combobox/ComboboxMultiTest.svelte b/packages/bits-ui/src/tests/combobox/ComboboxMultiTest.svelte index 4821107cc..a45100a09 100644 --- a/packages/bits-ui/src/tests/combobox/ComboboxMultiTest.svelte +++ b/packages/bits-ui/src/tests/combobox/ComboboxMultiTest.svelte @@ -1,4 +1,4 @@ - diff --git a/packages/bits-ui/src/tests/popover/PopoverTest.svelte b/packages/bits-ui/src/tests/popover/PopoverTest.svelte index 40134dda4..cde4d87cb 100644 --- a/packages/bits-ui/src/tests/popover/PopoverTest.svelte +++ b/packages/bits-ui/src/tests/popover/PopoverTest.svelte @@ -1,4 +1,4 @@ - diff --git a/sites/docs/src/lib/components/demos/progress-demo.svelte b/sites/docs/src/lib/components/demos/progress-demo.svelte index 0d8ec6365..4024865af 100644 --- a/sites/docs/src/lib/components/demos/progress-demo.svelte +++ b/sites/docs/src/lib/components/demos/progress-demo.svelte @@ -17,6 +17,6 @@ >
diff --git a/sites/docs/src/lib/components/markdown/blueprint.svelte b/sites/docs/src/lib/components/markdown/blueprint.svelte index 52b50c84b..3fadf24d5 100644 --- a/sites/docs/src/lib/components/markdown/blueprint.svelte +++ b/sites/docs/src/lib/components/markdown/blueprint.svelte @@ -1,4 +1,4 @@ - + diff --git a/sites/docs/src/lib/components/navigation/sidebar-nav-main-items.svelte b/sites/docs/src/lib/components/navigation/sidebar-nav-main-items.svelte index 199443e3e..330584cca 100644 --- a/sites/docs/src/lib/components/navigation/sidebar-nav-main-items.svelte +++ b/sites/docs/src/lib/components/navigation/sidebar-nav-main-items.svelte @@ -45,7 +45,8 @@ rel={item.external ? "noreferrer" : ""} > {#if isIconMapKey(item.title)} - + {@const Icon = iconMap[item.title]} + {/if} {item.title} {#if item.label} diff --git a/sites/docs/src/routes/docs/[...slug]/+page.svelte b/sites/docs/src/routes/docs/[...slug]/+page.svelte index fad1af37a..5034aa8df 100644 --- a/sites/docs/src/routes/docs/[...slug]/+page.svelte +++ b/sites/docs/src/routes/docs/[...slug]/+page.svelte @@ -1,10 +1,9 @@
@@ -12,5 +11,5 @@ {data.metadata.title} {data.metadata.description} - +
diff --git a/sites/docs/src/routes/docs/components/[name]/+page.svelte b/sites/docs/src/routes/docs/components/[name]/+page.svelte index 92754cdbd..e6747517f 100644 --- a/sites/docs/src/routes/docs/components/[name]/+page.svelte +++ b/sites/docs/src/routes/docs/components/[name]/+page.svelte @@ -3,6 +3,7 @@ import { PageHeader, PageHeaderDescription, PageHeaderHeading } from "$lib/components/index.js"; let { data } = $props(); + const Component = $derived(data.component);
@@ -10,5 +11,5 @@ {data.metadata.title} {data.metadata.description} - +
From 7f67222dd19c8f67a494d08e90d9408d5830856d Mon Sep 17 00:00:00 2001 From: Hunter Johnston Date: Thu, 19 Sep 2024 20:18:51 -0400 Subject: [PATCH 4/8] allow custom anchor --- .../components/select-content-floating.svelte | 3 +- .../components/floating-layer-content.svelte | 6 ++-- .../bits/utilities/floating-layer/types.ts | 16 ++++++++++ .../floating-layer/useFloatingLayer.svelte.ts | 32 +++++++++++++++++-- .../popper-layer/popper-layer.svelte | 5 ++- .../src/tests/combobox/Combobox.spec.ts | 1 - .../src/lib/components/demo-code-tabs.svelte | 4 +-- .../demos/dropdown-menu-demo.svelte | 9 +++++- 8 files changed, 64 insertions(+), 12 deletions(-) diff --git a/packages/bits-ui/src/lib/bits/select/components/select-content-floating.svelte b/packages/bits-ui/src/lib/bits/select/components/select-content-floating.svelte index 879ff2c20..b45cd16a7 100644 --- a/packages/bits-ui/src/lib/bits/select/components/select-content-floating.svelte +++ b/packages/bits-ui/src/lib/bits/select/components/select-content-floating.svelte @@ -6,6 +6,7 @@ import type { WithChild } from "$lib/internal/types.js"; import { FloatingLayer } from "$lib/bits/utilities/floating-layer/index.js"; import type { FloatingLayerContentImplProps } from "$lib/bits/utilities/floating-layer/types.js"; + import ScrollLock from "$lib/bits/utilities/scroll-lock/scroll-lock.svelte"; let { children, @@ -52,12 +53,12 @@ {updatePositionStrategy} {strategy} {dir} - {preventScroll} {wrapperId} {onPlaced} {style} > {#snippet content({ props })} + {@const finalProps = mergeProps(props, mergedProps, { style: contentFloatingState.props.style, })} diff --git a/packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-content.svelte b/packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-content.svelte index e947b33ab..8de4ed3ea 100644 --- a/packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-content.svelte +++ b/packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-content.svelte @@ -4,7 +4,6 @@ import type { ContentImplProps } from "./index.js"; import { mergeProps } from "$lib/internal/mergeProps.js"; import { useId } from "$lib/internal/useId.js"; - import { useBodyScrollLock } from "$lib/internal/useBodyScrollLock.svelte.js"; let { content, @@ -25,7 +24,7 @@ dir = "ltr", style = {}, wrapperId = useId(), - preventScroll = true, + customAnchor = null, }: ContentImplProps = $props(); const contentState = useFloatingContentState({ @@ -47,6 +46,7 @@ style: box.with(() => style), enabled: box.with(() => false), wrapperId: box.with(() => wrapperId), + customAnchor: box.with(() => customAnchor), }); const mergedProps = $derived( @@ -56,8 +56,6 @@ }, }) ); - - useBodyScrollLock(preventScroll);
diff --git a/packages/bits-ui/src/lib/bits/utilities/floating-layer/types.ts b/packages/bits-ui/src/lib/bits/utilities/floating-layer/types.ts index d728bc518..2e39dc603 100644 --- a/packages/bits-ui/src/lib/bits/utilities/floating-layer/types.ts +++ b/packages/bits-ui/src/lib/bits/utilities/floating-layer/types.ts @@ -87,6 +87,22 @@ export type FloatingLayerContentProps = { * Whether to prevent scrolling the body when the content is open. */ preventScroll?: boolean; + + /** + * Use an element other than the trigger to anchor the content to. If provided, + * the content will be anchored to the provided element instead of the trigger. + * + * You can pass a selector string or an HTMLElement. + */ + customAnchor?: string | HTMLElement | Measurable | null; + + /** + * Whether to opt out of using Floating UI and instead render a static element which you + * can position yourself. + * + * @defaultValue false + */ + static?: boolean; }; export type FloatingLayerContentImplProps = { diff --git a/packages/bits-ui/src/lib/bits/utilities/floating-layer/useFloatingLayer.svelte.ts b/packages/bits-ui/src/lib/bits/utilities/floating-layer/useFloatingLayer.svelte.ts index e67aaa49d..ca8c93132 100644 --- a/packages/bits-ui/src/lib/bits/utilities/floating-layer/useFloatingLayer.svelte.ts +++ b/packages/bits-ui/src/lib/bits/utilities/floating-layer/useFloatingLayer.svelte.ts @@ -42,6 +42,22 @@ export type Boundary = Element | null; class FloatingRootState { anchorNode = box(null); + customAnchorNode = box(null); + triggerNode = box(null); + + constructor() { + $effect(() => { + if (this.customAnchorNode.current) { + if (typeof this.customAnchorNode.current === "string") { + this.anchorNode.current = document.querySelector(this.customAnchorNode.current); + } else { + this.anchorNode.current = this.customAnchorNode.current; + } + } else { + this.anchorNode.current = this.triggerNode.current; + } + }); + } createAnchor(props: FloatingAnchorStateProps) { return new FloatingAnchorState(props, this); @@ -71,6 +87,7 @@ export type FloatingContentStateProps = ReadableBoxedValues<{ dir: Direction; style: StyleProperties | null | undefined | string; enabled: boolean; + customAnchor: string | HTMLElement | null | Measurable; }>; class FloatingContentState { @@ -264,6 +281,17 @@ class FloatingContentState { this.#arrowSize = useSize(this.arrowRef); this.wrapperId = props.wrapperId; + if (props.customAnchor) { + this.root.customAnchorNode.current = props.customAnchor.current; + } + + $effect(() => { + props.customAnchor.current; + untrack(() => { + this.root.customAnchorNode.current = props.customAnchor.current; + }); + }); + useRefById({ id: this.wrapperId, ref: this.wrapperRef, @@ -353,13 +381,13 @@ class FloatingAnchorState { constructor(props: FloatingAnchorStateProps, root: FloatingRootState) { if (props.virtualEl && props.virtualEl.current) { - root.anchorNode = box.from(props.virtualEl.current); + root.triggerNode = box.from(props.virtualEl.current); } else { useRefById({ id: props.id, ref: this.ref, onRefChange: (node) => { - root.anchorNode.current = node; + root.triggerNode.current = node; }, }); } diff --git a/packages/bits-ui/src/lib/bits/utilities/popper-layer/popper-layer.svelte b/packages/bits-ui/src/lib/bits/utilities/popper-layer/popper-layer.svelte index 83c336d04..d5dc5d678 100644 --- a/packages/bits-ui/src/lib/bits/utilities/popper-layer/popper-layer.svelte +++ b/packages/bits-ui/src/lib/bits/utilities/popper-layer/popper-layer.svelte @@ -1,4 +1,5 @@ @@ -64,12 +66,13 @@ {updatePositionStrategy} {strategy} {dir} - {preventScroll} {wrapperId} {style} {onPlaced} + {customAnchor} > {#snippet content({ props: floatingProps })} + {#snippet focusScope({ props: focusScopeProps })} { expect(getHiddenInput()).toHaveValue("1"); await user.click(input); expectSelected(item1!); - expect(queryByTestId("1-indicator")).not.toBeNull(); }); it("should navigate through the items using the keyboard (loop = false)", async () => { diff --git a/sites/docs/src/lib/components/demo-code-tabs.svelte b/sites/docs/src/lib/components/demo-code-tabs.svelte index 2ea508f55..9b182b56c 100644 --- a/sites/docs/src/lib/components/demo-code-tabs.svelte +++ b/sites/docs/src/lib/components/demo-code-tabs.svelte @@ -20,7 +20,7 @@ {#each items as item} {item.label} @@ -31,7 +31,7 @@