From bdbb351396cf679015dc9dde0054d6fcf402ca9a Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sat, 14 Nov 2026 09:45:44 -0600 Subject: [PATCH 1/2] build: Upgrade dependencies within the release-age window Upgrade every workspace dependency except TypeScript to the newest release that meets minimumReleaseAge, and migrate the code that the upgrades break: Babel 8 options in Ember configs, the Vitest 5 bench API, angular-pacer injectDebouncer, and Hotkeys adapters in the cell-selection and spreadsheet examples. --- .changeset/raise-dependency-floors.md | 13 + AGENTS.md | 41 +- docs/framework/alpine/guide/cell-selection.md | 44 +- docs/framework/ember/guide/cell-selection.md | 26 +- docs/framework/lit/guide/cell-selection.md | 38 +- examples/alpine/aggregation/package.json | 6 +- examples/alpine/basic-app-table/package.json | 6 +- .../alpine/basic-create-table/package.json | 6 +- .../alpine/basic-dynamic-columns/package.json | 6 +- .../alpine/basic-external-atoms/package.json | 6 +- .../alpine/basic-external-state/package.json | 6 +- examples/alpine/cell-selection/index.html | 2 +- examples/alpine/cell-selection/package.json | 8 +- examples/alpine/cell-selection/src/main.ts | 68 +- examples/alpine/cell-spanning/package.json | 6 +- examples/alpine/column-ordering/package.json | 6 +- .../alpine/column-pinning-split/package.json | 6 +- .../alpine/column-pinning-sticky/package.json | 6 +- examples/alpine/column-pinning/package.json | 6 +- .../column-resizing-performant/package.json | 6 +- examples/alpine/column-resizing/package.json | 6 +- examples/alpine/column-sizing/package.json | 6 +- .../alpine/column-visibility/package.json | 6 +- examples/alpine/custom-plugin/package.json | 6 +- examples/alpine/expanding/package.json | 6 +- .../filters-faceted-bucketed/package.json | 6 +- examples/alpine/filters-faceted/package.json | 6 +- examples/alpine/filters/package.json | 6 +- .../alpine/grouped-aggregation/package.json | 6 +- examples/alpine/grouping/package.json | 6 +- examples/alpine/header-groups/package.json | 6 +- examples/alpine/pagination/package.json | 6 +- examples/alpine/realtime-trading/package.json | 6 +- examples/alpine/row-pinning/package.json | 6 +- examples/alpine/row-selection/package.json | 6 +- .../alpine/sorting-dynamic-data/package.json | 6 +- examples/alpine/sorting/package.json | 6 +- examples/alpine/sub-components/package.json | 6 +- examples/angular/aggregation/package.json | 22 +- examples/angular/basic-app-table/package.json | 22 +- .../basic-dynamic-columns/package.json | 24 +- .../app/debounced-input/debounced-input.ts | 8 +- .../angular/basic-external-atoms/package.json | 22 +- .../angular/basic-external-state/package.json | 22 +- .../angular/basic-inject-table/package.json | 24 +- examples/angular/cell-selection/package.json | 28 +- examples/angular/cell-spanning/package.json | 22 +- .../angular/cell-spanning/src/app/app.html | 6 +- examples/angular/column-ordering/package.json | 22 +- .../angular/column-pinning-split/package.json | 22 +- .../column-pinning-sticky/package.json | 22 +- examples/angular/column-pinning/package.json | 22 +- .../column-resizing-performant/package.json | 22 +- examples/angular/column-resizing/package.json | 22 +- examples/angular/column-sizing/package.json | 22 +- .../angular/column-visibility/package.json | 22 +- .../angular/composable-tables/package.json | 24 +- examples/angular/custom-plugin/package.json | 22 +- examples/angular/editable/package.json | 22 +- examples/angular/expanding/package.json | 22 +- .../filters-faceted-bucketed/package.json | 22 +- examples/angular/filters-faceted/package.json | 24 +- .../app/debounced-input/debounced-input.ts | 8 +- examples/angular/filters-fuzzy/package.json | 24 +- .../app/debounced-input/debounced-input.ts | 8 +- examples/angular/filters/package.json | 24 +- .../app/debounced-input/debounced-input.ts | 8 +- .../angular/grouped-aggregation/package.json | 22 +- examples/angular/grouping/package.json | 22 +- examples/angular/header-groups/package.json | 22 +- examples/angular/kitchen-sink/package.json | 24 +- examples/angular/pagination/package.json | 22 +- .../angular/realtime-trading/package.json | 20 +- examples/angular/remote-data/package.json | 32 +- examples/angular/row-dnd/package.json | 24 +- examples/angular/row-pinning/package.json | 22 +- .../angular/row-selection-signal/package.json | 26 +- examples/angular/row-selection/package.json | 26 +- examples/angular/signal-input/package.json | 24 +- examples/angular/sorting/package.json | 22 +- examples/angular/sub-components/package.json | 22 +- .../angular/virtualized-columns/package.json | 24 +- .../package.json | 24 +- .../angular/virtualized-rows/package.json | 24 +- .../angular/with-tanstack-form/package.json | 26 +- .../angular/with-tanstack-query/package.json | 26 +- examples/ember/aggregation/babel.config.js | 2 - examples/ember/aggregation/package.json | 30 +- .../ember/basic-app-table/babel.config.js | 2 - examples/ember/basic-app-table/package.json | 30 +- .../basic-external-atoms/babel.config.js | 2 - .../ember/basic-external-atoms/package.json | 30 +- .../basic-external-state/babel.config.js | 2 - .../ember/basic-external-state/package.json | 30 +- examples/ember/basic-table/babel.config.js | 2 - examples/ember/basic-table/package.json | 30 +- .../app/templates/application.gts | 62 +- examples/ember/cell-selection/babel.config.js | 2 - examples/ember/cell-selection/package.json | 32 +- examples/ember/cell-spanning/babel.config.js | 2 - examples/ember/cell-spanning/package.json | 30 +- .../ember/column-ordering/babel.config.js | 2 - examples/ember/column-ordering/package.json | 30 +- .../column-pinning-split/babel.config.js | 2 - .../ember/column-pinning-split/package.json | 30 +- .../column-pinning-sticky/babel.config.js | 2 - .../ember/column-pinning-sticky/package.json | 30 +- examples/ember/column-pinning/babel.config.js | 2 - examples/ember/column-pinning/package.json | 30 +- .../babel.config.js | 2 - .../column-resizing-performant/package.json | 30 +- .../ember/column-resizing/babel.config.js | 2 - examples/ember/column-resizing/package.json | 30 +- examples/ember/column-sizing/babel.config.js | 2 - examples/ember/column-sizing/package.json | 30 +- .../ember/column-visibility/babel.config.js | 2 - examples/ember/column-visibility/package.json | 30 +- examples/ember/custom-plugin/babel.config.js | 2 - examples/ember/custom-plugin/package.json | 30 +- examples/ember/editable/babel.config.js | 2 - examples/ember/editable/package.json | 30 +- examples/ember/expanding/babel.config.js | 2 - examples/ember/expanding/package.json | 30 +- .../filters-faceted-bucketed/babel.config.js | 2 - .../filters-faceted-bucketed/package.json | 30 +- .../ember/filters-faceted/babel.config.js | 2 - examples/ember/filters-faceted/package.json | 30 +- examples/ember/filters-fuzzy/babel.config.js | 2 - examples/ember/filters-fuzzy/package.json | 30 +- examples/ember/filters/babel.config.js | 2 - examples/ember/filters/package.json | 30 +- .../ember/grouped-aggregation/babel.config.js | 2 - .../ember/grouped-aggregation/package.json | 30 +- examples/ember/grouping/babel.config.js | 2 - examples/ember/grouping/package.json | 30 +- examples/ember/header-groups/babel.config.js | 2 - examples/ember/header-groups/package.json | 30 +- examples/ember/kitchen-sink/babel.config.js | 2 - examples/ember/kitchen-sink/package.json | 30 +- examples/ember/pagination/babel.config.js | 2 - examples/ember/pagination/package.json | 30 +- .../ember/realtime-trading/babel.config.js | 2 - examples/ember/realtime-trading/package.json | 30 +- examples/ember/remote-data/babel.config.js | 2 - examples/ember/remote-data/package.json | 30 +- examples/ember/row-dnd/babel.config.js | 2 - examples/ember/row-dnd/package.json | 30 +- examples/ember/row-pinning/babel.config.js | 2 - examples/ember/row-pinning/package.json | 30 +- examples/ember/row-selection/babel.config.js | 2 - examples/ember/row-selection/package.json | 30 +- examples/ember/sorting/babel.config.js | 2 - examples/ember/sorting/package.json | 30 +- examples/ember/sub-components/babel.config.js | 2 - examples/ember/sub-components/package.json | 30 +- examples/lit/aggregation/package.json | 4 +- examples/lit/basic-app-table/package.json | 4 +- .../lit/basic-dynamic-columns/package.json | 4 +- .../lit/basic-external-atoms/package.json | 4 +- .../lit/basic-external-state/package.json | 4 +- examples/lit/basic-subscribe/package.json | 4 +- .../lit/basic-table-controller/package.json | 4 +- examples/lit/cell-selection/package.json | 6 +- examples/lit/cell-selection/src/main.ts | 50 +- examples/lit/cell-spanning/package.json | 4 +- examples/lit/column-ordering/package.json | 4 +- .../lit/column-pinning-split/package.json | 4 +- .../lit/column-pinning-sticky/package.json | 4 +- examples/lit/column-pinning/package.json | 4 +- .../column-resizing-performant/package.json | 4 +- examples/lit/column-resizing/package.json | 4 +- examples/lit/column-sizing/package.json | 4 +- examples/lit/column-visibility/package.json | 4 +- examples/lit/composable-tables/package.json | 4 +- examples/lit/expanding/package.json | 4 +- .../lit/filters-faceted-bucketed/package.json | 4 +- examples/lit/filters-faceted/package.json | 4 +- examples/lit/filters-fuzzy/package.json | 4 +- examples/lit/filters/package.json | 4 +- examples/lit/grouped-aggregation/package.json | 4 +- examples/lit/grouping/package.json | 4 +- examples/lit/header-groups/package.json | 4 +- examples/lit/kitchen-sink/package.json | 4 +- examples/lit/pagination/package.json | 4 +- examples/lit/realtime-trading/package.json | 6 +- examples/lit/row-pinning/package.json | 4 +- examples/lit/row-selection/package.json | 4 +- .../lit/sorting-dynamic-data/package.json | 4 +- examples/lit/sorting/package.json | 4 +- examples/lit/sub-components/package.json | 4 +- examples/lit/virtualized-columns/package.json | 6 +- .../package.json | 6 +- examples/lit/virtualized-rows/package.json | 6 +- examples/octane/aggregation/package.json | 10 +- .../octane/basic-dynamic-columns/package.json | 10 +- .../octane/basic-external-atoms/package.json | 10 +- .../octane/basic-external-state/package.json | 10 +- examples/octane/basic-subscribe/package.json | 10 +- .../octane/basic-use-app-table/package.json | 10 +- examples/octane/basic-use-table/package.json | 10 +- examples/octane/cell-spanning/package.json | 10 +- examples/octane/column-ordering/package.json | 10 +- .../octane/column-pinning-split/package.json | 10 +- .../octane/column-pinning-sticky/package.json | 10 +- examples/octane/column-pinning/package.json | 10 +- .../column-resizing-performant/package.json | 10 +- examples/octane/column-resizing/package.json | 10 +- examples/octane/column-sizing/package.json | 10 +- .../octane/column-visibility/package.json | 10 +- .../octane/composable-tables/package.json | 10 +- examples/octane/custom-plugin/package.json | 10 +- examples/octane/expanding/package.json | 10 +- .../filters-faceted-bucketed/package.json | 10 +- examples/octane/filters-faceted/package.json | 10 +- examples/octane/filters-fuzzy/package.json | 10 +- examples/octane/filters/package.json | 10 +- .../octane/grouped-aggregation/package.json | 10 +- examples/octane/grouping/package.json | 10 +- examples/octane/header-groups/package.json | 10 +- examples/octane/kitchen-sink/package.json | 10 +- examples/octane/pagination/package.json | 10 +- examples/octane/realtime-trading/package.json | 10 +- examples/octane/row-pinning/package.json | 10 +- examples/octane/row-selection/package.json | 10 +- examples/octane/sorting/package.json | 10 +- examples/octane/sub-components/package.json | 10 +- examples/preact/aggregation/package.json | 6 +- .../preact/basic-dynamic-columns/package.json | 10 +- .../preact/basic-external-atoms/package.json | 8 +- .../preact/basic-external-state/package.json | 8 +- examples/preact/basic-subscribe/package.json | 8 +- .../preact/basic-use-app-table/package.json | 8 +- examples/preact/basic-use-table/package.json | 8 +- examples/preact/cell-selection/package.json | 10 +- examples/preact/cell-spanning/package.json | 6 +- examples/preact/column-ordering/package.json | 6 +- .../preact/column-pinning-split/package.json | 6 +- .../preact/column-pinning-sticky/package.json | 6 +- examples/preact/column-pinning/package.json | 6 +- .../column-resizing-performant/package.json | 6 +- examples/preact/column-resizing/package.json | 6 +- examples/preact/column-sizing/package.json | 6 +- .../preact/column-visibility/package.json | 6 +- .../preact/composable-tables/package.json | 8 +- examples/preact/custom-plugin/package.json | 6 +- examples/preact/expanding/package.json | 6 +- .../filters-faceted-bucketed/package.json | 6 +- examples/preact/filters-faceted/package.json | 8 +- examples/preact/filters-fuzzy/package.json | 8 +- examples/preact/filters/package.json | 8 +- .../preact/grouped-aggregation/package.json | 6 +- examples/preact/grouping/package.json | 6 +- examples/preact/header-groups/package.json | 6 +- examples/preact/kitchen-sink/package.json | 8 +- examples/preact/pagination/package.json | 6 +- examples/preact/realtime-trading/package.json | 6 +- examples/preact/row-pinning/package.json | 6 +- examples/preact/row-selection/package.json | 8 +- examples/preact/sorting/package.json | 6 +- examples/preact/sub-components/package.json | 6 +- .../preact/with-tanstack-form/package.json | 14 +- .../preact/with-tanstack-query/package.json | 12 +- examples/react/aggregation/package.json | 12 +- .../react/basic-dynamic-columns/package.json | 16 +- .../react/basic-external-atoms/package.json | 14 +- .../react/basic-external-state/package.json | 14 +- examples/react/basic-subscribe/package.json | 16 +- .../react/basic-use-app-table/package.json | 14 +- .../react/basic-use-legacy-table/package.json | 16 +- examples/react/basic-use-table/package.json | 14 +- examples/react/cell-selection/package.json | 16 +- examples/react/cell-spanning/package.json | 12 +- examples/react/column-dnd/package.json | 12 +- examples/react/column-ordering/package.json | 12 +- .../react/column-pinning-split/package.json | 12 +- .../react/column-pinning-sticky/package.json | 12 +- examples/react/column-pinning/package.json | 12 +- .../column-resizing-performant/package.json | 12 +- examples/react/column-resizing/package.json | 12 +- examples/react/column-sizing/package.json | 12 +- examples/react/column-visibility/package.json | 12 +- examples/react/composable-tables/package.json | 14 +- examples/react/custom-plugin/package.json | 14 +- examples/react/expanding/package.json | 14 +- .../filters-faceted-bucketed/package.json | 12 +- examples/react/filters-faceted/package.json | 14 +- examples/react/filters-fuzzy/package.json | 14 +- examples/react/filters/package.json | 14 +- .../react/grouped-aggregation/package.json | 12 +- examples/react/grouping/package.json | 12 +- examples/react/header-groups/package.json | 12 +- .../react/kitchen-sink-chakra-ui/package.json | 20 +- .../react/kitchen-sink-hero-ui/package.json | 24 +- .../react/kitchen-sink-mantine/package.json | 24 +- .../kitchen-sink-material-ui/package.json | 20 +- .../kitchen-sink-react-aria/package.json | 22 +- .../kitchen-sink-shadcn-base/package.json | 24 +- .../kitchen-sink-shadcn-radix/package.json | 24 +- examples/react/kitchen-sink/package.json | 24 +- examples/react/lib-chakra-ui/package.json | 16 +- examples/react/lib-hero-ui/package.json | 20 +- examples/react/lib-mantine/package.json | 20 +- examples/react/lib-material-ui/package.json | 16 +- examples/react/lib-react-aria/package.json | 18 +- examples/react/lib-shadcn-base/package.json | 22 +- examples/react/lib-shadcn-radix/package.json | 22 +- .../react/mantine-react-table/package.json | 24 +- .../src/mantine-react-table/locales/np.ts | 3 +- .../src/mantine-react-table/locales/th.ts | 3 +- .../react/material-react-table/package.json | 22 +- .../src/material-react-table/locales/np.ts | 3 +- examples/react/pagination/package.json | 12 +- examples/react/realtime-trading/package.json | 14 +- examples/react/row-dnd/package.json | 12 +- examples/react/row-pinning/package.json | 14 +- examples/react/row-selection/package.json | 16 +- examples/react/sorting/package.json | 12 +- examples/react/spreadsheet/package.json | 16 +- .../spreadsheet/src/useGridInteractions.ts | 4 + examples/react/sub-components/package.json | 12 +- .../package.json | 14 +- .../react/virtualized-columns/package.json | 14 +- .../package.json | 16 +- .../package.json | 14 +- examples/react/virtualized-rows/package.json | 14 +- .../react/web-worker-row-models/package.json | 20 +- .../react/with-tanstack-form/package.json | 20 +- .../react/with-tanstack-query/package.json | 18 +- .../react/with-tanstack-router/package.json | 28 +- examples/solid/aggregation/package.json | 8 +- examples/solid/basic-app-table/package.json | 10 +- .../solid/basic-dynamic-columns/package.json | 10 +- .../solid/basic-external-atoms/package.json | 10 +- .../solid/basic-external-state/package.json | 10 +- examples/solid/basic-use-table/package.json | 10 +- examples/solid/cell-selection/package.json | 12 +- examples/solid/cell-spanning/package.json | 8 +- examples/solid/column-ordering/package.json | 8 +- .../solid/column-pinning-split/package.json | 8 +- .../solid/column-pinning-sticky/package.json | 8 +- examples/solid/column-pinning/package.json | 8 +- .../column-resizing-performant/package.json | 8 +- examples/solid/column-resizing/package.json | 8 +- examples/solid/column-sizing/package.json | 8 +- examples/solid/column-visibility/package.json | 8 +- examples/solid/composable-tables/package.json | 10 +- examples/solid/expanding/package.json | 8 +- .../filters-faceted-bucketed/package.json | 8 +- examples/solid/filters-faceted/package.json | 10 +- examples/solid/filters-fuzzy/package.json | 10 +- examples/solid/filters/package.json | 10 +- .../solid/grouped-aggregation/package.json | 8 +- examples/solid/grouping/package.json | 8 +- examples/solid/header-groups/package.json | 8 +- examples/solid/kitchen-sink/package.json | 10 +- examples/solid/pagination/package.json | 8 +- examples/solid/realtime-trading/package.json | 10 +- examples/solid/row-pinning/package.json | 8 +- examples/solid/row-selection/package.json | 10 +- examples/solid/sorting/package.json | 8 +- examples/solid/spreadsheet/package.json | 12 +- .../spreadsheet/src/createGridInteractions.ts | 4 + examples/solid/sub-components/package.json | 8 +- .../solid/virtualized-columns/package.json | 10 +- .../package.json | 12 +- examples/solid/virtualized-rows/package.json | 10 +- .../solid/with-tanstack-form/package.json | 12 +- .../solid/with-tanstack-query/package.json | 14 +- .../solid/with-tanstack-router/package.json | 24 +- examples/svelte/aggregation/package.json | 10 +- examples/svelte/basic-app-table/package.json | 10 +- .../svelte/basic-create-table/package.json | 10 +- .../svelte/basic-dynamic-columns/package.json | 10 +- .../svelte/basic-external-atoms/package.json | 12 +- .../svelte/basic-external-state/package.json | 10 +- examples/svelte/basic-snippets/package.json | 10 +- examples/svelte/cell-selection/package.json | 12 +- examples/svelte/cell-spanning/package.json | 10 +- examples/svelte/column-ordering/package.json | 10 +- .../svelte/column-pinning-split/package.json | 10 +- .../svelte/column-pinning-sticky/package.json | 10 +- examples/svelte/column-pinning/package.json | 10 +- .../column-resizing-performant/package.json | 10 +- examples/svelte/column-resizing/package.json | 10 +- examples/svelte/column-sizing/package.json | 10 +- .../svelte/column-visibility/package.json | 10 +- .../svelte/composable-tables/package.json | 10 +- examples/svelte/expanding/package.json | 10 +- examples/svelte/filtering/package.json | 10 +- .../filters-faceted-bucketed/package.json | 10 +- examples/svelte/filters-faceted/package.json | 10 +- examples/svelte/filters-fuzzy/package.json | 10 +- .../svelte/grouped-aggregation/package.json | 10 +- examples/svelte/grouping/package.json | 10 +- examples/svelte/header-groups/package.json | 10 +- .../svelte/kitchen-sink-shadcn/package.json | 30 +- examples/svelte/kitchen-sink/package.json | 10 +- examples/svelte/lib-shadcn/package.json | 24 +- examples/svelte/pagination/package.json | 10 +- examples/svelte/realtime-trading/package.json | 14 +- examples/svelte/row-pinning/package.json | 10 +- examples/svelte/row-selection/package.json | 10 +- examples/svelte/sorting/package.json | 10 +- examples/svelte/spreadsheet/package.json | 14 +- .../src/createGridInteractions.svelte.ts | 4 + examples/svelte/sub-components/package.json | 10 +- .../svelte/virtualized-columns/package.json | 12 +- .../package.json | 14 +- examples/svelte/virtualized-rows/package.json | 12 +- .../svelte/with-tanstack-form/package.json | 14 +- .../svelte/with-tanstack-query/package.json | 18 +- examples/vanilla/aggregation/package.json | 6 +- examples/vanilla/basic/package.json | 6 +- examples/vanilla/pagination/package.json | 6 +- examples/vanilla/sorting/package.json | 6 +- examples/vue/aggregation/package.json | 12 +- .../vue/basic-dynamic-columns/package.json | 14 +- .../vue/basic-external-atoms/package.json | 14 +- .../vue/basic-external-state/package.json | 14 +- examples/vue/basic-use-app-table/package.json | 14 +- examples/vue/basic-use-table/package.json | 14 +- examples/vue/cell-selection/package.json | 16 +- examples/vue/cell-spanning/package.json | 12 +- examples/vue/column-ordering/package.json | 12 +- .../vue/column-pinning-split/package.json | 12 +- .../vue/column-pinning-sticky/package.json | 12 +- examples/vue/column-pinning/package.json | 12 +- .../column-resizing-performant/package.json | 12 +- examples/vue/column-resizing/package.json | 12 +- examples/vue/column-sizing/package.json | 12 +- examples/vue/column-visibility/package.json | 12 +- examples/vue/composable-tables/package.json | 14 +- examples/vue/expanding/package.json | 12 +- .../vue/filters-faceted-bucketed/package.json | 12 +- examples/vue/filters-faceted/package.json | 12 +- examples/vue/filters-fuzzy/package.json | 12 +- examples/vue/filters/package.json | 12 +- examples/vue/grouped-aggregation/package.json | 12 +- examples/vue/grouping/package.json | 12 +- examples/vue/header-groups/package.json | 12 +- examples/vue/kitchen-sink-shadcn/package.json | 24 +- examples/vue/kitchen-sink/package.json | 14 +- examples/vue/lib-shadcn/package.json | 22 +- examples/vue/pagination/package.json | 12 +- examples/vue/realtime-trading/package.json | 14 +- examples/vue/row-pinning/package.json | 12 +- examples/vue/row-selection/package.json | 14 +- examples/vue/sorting/package.json | 12 +- examples/vue/sub-components/package.json | 12 +- examples/vue/virtualized-columns/package.json | 14 +- .../package.json | 16 +- examples/vue/virtualized-rows/package.json | 14 +- examples/vue/with-tanstack-form/package.json | 16 +- examples/vue/with-tanstack-query/package.json | 18 +- knip.json | 3 + package.json | 38 +- packages/alpine-table/package.json | 2 +- packages/angular-table-devtools/package.json | 6 +- packages/angular-table/package.json | 16 +- .../tests/flex-render/flex-render.bench.ts | 92 +- packages/ember-table/package.json | 40 +- packages/octane-table/package.json | 6 +- packages/preact-table-devtools/package.json | 4 +- packages/preact-table/package.json | 6 +- packages/react-table-devtools/package.json | 8 +- packages/react-table/package.json | 8 +- packages/solid-table-devtools/package.json | 6 +- packages/solid-table/package.json | 4 +- packages/svelte-table/package.json | 10 +- packages/table-devtools/package.json | 10 +- packages/vue-table-devtools/package.json | 6 +- packages/vue-table/package.json | 6 +- pnpm-lock.yaml | 27964 +++++++--------- pnpm-workspace.yaml | 6 - 474 files changed, 15702 insertions(+), 18388 deletions(-) create mode 100644 .changeset/raise-dependency-floors.md diff --git a/.changeset/raise-dependency-floors.md b/.changeset/raise-dependency-floors.md new file mode 100644 index 0000000000..2d4bfb0003 --- /dev/null +++ b/.changeset/raise-dependency-floors.md @@ -0,0 +1,13 @@ +--- +'@tanstack/angular-table': patch +'@tanstack/angular-table-devtools': patch +'@tanstack/ember-table': patch +'@tanstack/preact-table-devtools': patch +'@tanstack/react-table-devtools': patch +'@tanstack/solid-table-devtools': patch +'@tanstack/svelte-table': patch +'@tanstack/table-devtools': patch +'@tanstack/vue-table-devtools': patch +--- + +Raise minimum versions of runtime dependencies: `@tanstack/devtools-utils` ^0.7.2, `@tanstack/devtools-ui` ^0.7.2, `@tanstack/svelte-store` ^0.12.3, `@embroider/addon-shim` ^1.11.0, `solid-js` ^1.9.19, and `tslib` ^2.9.1 diff --git a/AGENTS.md b/AGENTS.md index 796797e14b..3c39f498f7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,36 +11,21 @@ that follows the repository template. ## Packages that cannot be upgraded yet -Leave these pins alone during routine dependency bumps. They currently break -Ember, the Svelte kitchen-sink types, or are intentionally deferred. +Leave these pins alone during routine dependency bumps. They are either +intentionally deferred or need a manual version choice that `ncu` gets wrong. - **TypeScript** — keep `6.0.3`. Do not bump it as part of a general upgrade. -- **Babel 7** — Ember is not compatible with Babel 8. In `packages/ember-table` - and every `examples/ember/*` app, keep `@babel/core`, - `@babel/plugin-transform-runtime`, `@babel/plugin-transform-typescript`, and - `@babel/runtime` at `7.29.7`. `@rollup/plugin-babel` `7.1.0` is the Rollup - plugin version, not Babel itself. -- **`@dnd-kit/abstract` and `@dnd-kit/helpers`** — keep `^0.2.3` in - `examples/svelte/kitchen-sink-shadcn`. `@dnd-kit-svelte/svelte@0.1.6` still - depends on the 0.2.x line. Bumping to 0.5.x installs a second copy, and - TypeScript treats those private-field types as incompatible. -- **Vitest and `@vitest/coverage-v8`** — keep the 4.x line (currently - `^4.1.11` and `4.1.11`). `@analogjs/vitest-angular@2.7.2` and Angular build - tooling do not support Vitest 5, which also removes the `vitest` `bench` export - used by the repository benchmarks. Upgrade these together in a separate migration. -- **Octane** — keep `0.1.36`. The 0.2.x line fails the adapter conformance - test for synchronous owner and isolated controlled updates during a discrete event. -- **Pacer devtools** — keep `@tanstack/react-pacer-devtools` at `0.8.0` and - `@tanstack/solid-pacer-devtools` at `0.7.0`. The 0.14.x packages do not export - `pacerDevtoolsPlugin`, which the Form and Router examples use. -- **`@tanstack/preact-form`** — keep `1.30.5` in the Preact Form example. - The 1.33.x line removes `createFormHookContexts` and `withForm`, requiring - a separate example migration. -- **Preact** — keep `^10.29.8`. Preact 11 fails the adapter's hook and SSR - tests and the devtools type check. The Store and Query adapters still require - Preact 10. Upgrade these together in a separate migration. +- **Octane** — `ncu` reports `octane` `1.0.3`, an unrelated 2015 release that + outranks the real 0.x line by semver. Do not take it. Check + `npm view octane dist-tags` and use the newest 0.x release that meets + `minimumReleaseAge` (currently `0.17.0`). Octane peers on an exact + `@tsrx/oxc` version (`0.23.0` for 0.17.x), so keep `@tsrx/oxc` on that exact + version even when `ncu` offers a newer one. - **`@tanstack/intent`** — keep `0.4.0`. The 0.5 checker compiles TS and JS fences without framework TypeScript configuration or surrounding context. It rejects valid Preact and Lit examples, class-member excerpts, and deliberately - wrong examples. Keep the repository's content and annotated-snippet checks - enabled while this migration is deferred. + wrong examples. 0.5.6 still reports 64 such errors. 0.5 can skip a fence + with a `no-check` fence property or expect one with `expect-error`, but the + repository's snippet checker only accepts bare `ts`/`tsx` fences after a + `skill-snippet:check` marker. Keep the repository's content and + annotated-snippet checks enabled while this migration is deferred. diff --git a/docs/framework/alpine/guide/cell-selection.md b/docs/framework/alpine/guide/cell-selection.md index 2ada44ca5d..1a65e09c16 100644 --- a/docs/framework/alpine/guide/cell-selection.md +++ b/docs/framework/alpine/guide/cell-selection.md @@ -274,19 +274,43 @@ Cell selection ships no keyboard handling of its own. Instead it exposes imperat `direction` is `'up'`, `'down'`, `'left'`, or `'right'`. ```ts -import { createMultiHotkeyHandler } from '@tanstack/hotkeys' +import Alpine from 'alpinejs' +import { createHotkeysScope, hotkeysPlugin } from '@tanstack/alpine-hotkeys' + +Alpine.plugin(hotkeysPlugin) -// Alpine has no hotkeys adapter, so the framework-agnostic core handler is used -onGridKeyDown: createMultiHotkeyHandler({ - ArrowUp: () => table.moveCellSelection('up'), - ArrowDown: () => table.moveCellSelection('down'), - 'Shift+ArrowDown': () => table.extendCellSelection('down'), - 'Mod+A': () => table.selectAllCells(), - Escape: () => table.resetCellSelection(true), -}), +Alpine.data('table', () => { + // ...create the table + const hotkeys = createHotkeysScope() + + return { + init() { + hotkeys.createHotkeys( + [ + { hotkey: 'ArrowUp', callback: () => table.moveCellSelection('up') }, + { + hotkey: 'ArrowDown', + callback: () => table.moveCellSelection('down'), + }, + { + hotkey: 'Shift+ArrowDown', + callback: () => table.extendCellSelection('down'), + }, + { hotkey: 'Mod+A', callback: () => table.selectAllCells() }, + { hotkey: 'Escape', callback: () => table.resetCellSelection(true) }, + ], + // scope every binding to the grid element + () => ({ target: this.$refs.grid }), + ) + }, + destroy() { + hotkeys.destroy() + }, + } +}) // then, in the markup: -//
...
+//
...
``` Scope the hotkeys to the grid element rather than the document, or arrow keys and Escape will hijack inputs elsewhere on the page. diff --git a/docs/framework/ember/guide/cell-selection.md b/docs/framework/ember/guide/cell-selection.md index 1115a7992f..c0567988ee 100644 --- a/docs/framework/ember/guide/cell-selection.md +++ b/docs/framework/ember/guide/cell-selection.md @@ -254,19 +254,23 @@ Cell selection ships no keyboard handling of its own. Instead it exposes imperat `direction` is `'up'`, `'down'`, `'left'`, or `'right'`. ```ts -import { createMultiHotkeyHandler } from '@tanstack/hotkeys' - -// Ember has no hotkeys adapter, so the framework-agnostic core handler is used -onGridKeyDown = createMultiHotkeyHandler({ - ArrowUp: () => this.table.moveCellSelection('up'), - ArrowDown: () => this.table.moveCellSelection('down'), - 'Shift+ArrowDown': () => this.table.extendCellSelection('down'), - 'Mod+A': () => this.table.selectAllCells(), - Escape: () => this.table.resetCellSelection(true), -}) +import { onHotkeys } from '@tanstack/ember-hotkeys' +import type { EmberHotkeyDefinition } from '@tanstack/ember-hotkeys' + +// the onHotkeys modifier scopes every binding to the element it is on +gridHotkeys: Array = [ + { hotkey: 'ArrowUp', callback: () => this.table.moveCellSelection('up') }, + { hotkey: 'ArrowDown', callback: () => this.table.moveCellSelection('down') }, + { + hotkey: 'Shift+ArrowDown', + callback: () => this.table.extendCellSelection('down'), + }, + { hotkey: 'Mod+A', callback: () => this.table.selectAllCells() }, + { hotkey: 'Escape', callback: () => this.table.resetCellSelection(true) }, +] // then, in the template: -//
...
+//
...
``` Scope the hotkeys to the grid element rather than the document, or arrow keys and Escape will hijack inputs elsewhere on the page. diff --git a/docs/framework/lit/guide/cell-selection.md b/docs/framework/lit/guide/cell-selection.md index ca69647422..9443f231eb 100644 --- a/docs/framework/lit/guide/cell-selection.md +++ b/docs/framework/lit/guide/cell-selection.md @@ -254,19 +254,31 @@ Cell selection ships no keyboard handling of its own. Instead it exposes imperat `direction` is `'up'`, `'down'`, `'left'`, or `'right'`. ```ts -import { createMultiHotkeyHandler } from '@tanstack/lit-hotkeys' - -// one stateless handler is simpler here than a HotkeyController per binding -const onGridKeyDown = createMultiHotkeyHandler({ - ArrowUp: () => table.moveCellSelection('up'), - ArrowDown: () => table.moveCellSelection('down'), - 'Shift+ArrowDown': () => table.extendCellSelection('down'), - 'Mod+A': () => table.selectAllCells(), - Escape: () => table.resetCellSelection(true), -}) - -// then, in the template: -// html`
...
` +import { createRef, ref } from 'lit/directives/ref.js' +import { HotkeyController } from '@tanstack/lit-hotkeys' +import type { HotkeyChord } from '@tanstack/lit-hotkeys' + +// inside the element class: one HotkeyController per binding, each scoped to +// the grid element +private _grid = createRef() + +private _gridHotkeys = ( + [ + ['ArrowUp', () => this._table?.moveCellSelection('up')], + ['ArrowDown', () => this._table?.moveCellSelection('down')], + ['Shift+ArrowDown', () => this._table?.extendCellSelection('down')], + ['Mod+A', () => this._table?.selectAllCells()], + ['Escape', () => this._table?.resetCellSelection(true)], + ] satisfies Array<[HotkeyChord, () => void]> +).map( + ([hotkey, callback]) => + new HotkeyController(this, hotkey, callback, () => ({ + target: this._grid.value, + })), +) + +// then, in render(): +// html`
...
` ``` Scope the hotkeys to the grid element rather than the document, or arrow keys and Escape will hijack inputs elsewhere on the page. diff --git a/examples/alpine/aggregation/package.json b/examples/alpine/aggregation/package.json index 4ca22597ff..a97b78de39 100644 --- a/examples/alpine/aggregation/package.json +++ b/examples/alpine/aggregation/package.json @@ -14,13 +14,13 @@ "dependencies": { "@faker-js/faker": "^10.6.0", "@tanstack/alpine-table": "^9.3.1", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/basic-app-table/package.json b/examples/alpine/basic-app-table/package.json index 9304ce09e9..85db6056e5 100644 --- a/examples/alpine/basic-app-table/package.json +++ b/examples/alpine/basic-app-table/package.json @@ -13,13 +13,13 @@ }, "dependencies": { "@tanstack/alpine-table": "^9.3.1", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/basic-create-table/package.json b/examples/alpine/basic-create-table/package.json index bafba150fe..dfaf3b989a 100644 --- a/examples/alpine/basic-create-table/package.json +++ b/examples/alpine/basic-create-table/package.json @@ -14,13 +14,13 @@ "dependencies": { "@faker-js/faker": "^10.6.0", "@tanstack/alpine-table": "^9.3.1", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/basic-dynamic-columns/package.json b/examples/alpine/basic-dynamic-columns/package.json index 42e4651770..768ec21e7d 100644 --- a/examples/alpine/basic-dynamic-columns/package.json +++ b/examples/alpine/basic-dynamic-columns/package.json @@ -14,13 +14,13 @@ "dependencies": { "@faker-js/faker": "^10.6.0", "@tanstack/alpine-table": "^9.3.1", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/basic-external-atoms/package.json b/examples/alpine/basic-external-atoms/package.json index 232c52f696..a0c7f073ce 100644 --- a/examples/alpine/basic-external-atoms/package.json +++ b/examples/alpine/basic-external-atoms/package.json @@ -15,13 +15,13 @@ "@faker-js/faker": "^10.6.0", "@tanstack/alpine-table": "^9.3.1", "@tanstack/store": "^0.11.2", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/basic-external-state/package.json b/examples/alpine/basic-external-state/package.json index a647e7f4ca..0135e1e7ad 100644 --- a/examples/alpine/basic-external-state/package.json +++ b/examples/alpine/basic-external-state/package.json @@ -14,13 +14,13 @@ "dependencies": { "@faker-js/faker": "^10.6.0", "@tanstack/alpine-table": "^9.3.1", - "alpinejs": "^3.17.4" + "alpinejs": "^3.17.5" }, "devDependencies": { - "@rolldown/binding-wasm32-wasi": "~1.2.12", + "@rolldown/binding-wasm32-wasi": "~1.3.2", "@rollup/plugin-replace": "^6.0.3", "@types/alpinejs": "^3.17.0", "typescript": "6.0.3", - "vite": "^8.3.2" + "vite": "^8.3.8" } } diff --git a/examples/alpine/cell-selection/index.html b/examples/alpine/cell-selection/index.html index 2cd4ad0e2d..5941bb01d5 100644 --- a/examples/alpine/cell-selection/index.html +++ b/examples/alpine/cell-selection/index.html @@ -93,7 +93,7 @@ -->
-
+