Skip to content

Commit ad015f7

Browse files
committed
Merge branch 'release/3.0.5'
2 parents 934a61d + 0631a45 commit ad015f7

File tree

12 files changed

+2095
-3612
lines changed

12 files changed

+2095
-3612
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. The format
44

55
## [Unreleased]
66

7+
## [v3.0.5](https://github.com/studiometa/js-toolkit/compare/3.0.4..3.0.5) (2025-07-23)
8+
9+
### Changed
10+
11+
- **withScrolledInView:** improve performance ([#645](https://github.com/studiometa/js-toolkit/pull/645), [83b65f16](https://github.com/studiometa/js-toolkit/commit/83b65f16))
12+
- **useScroll:** avoid layout thrashing ([#645](https://github.com/studiometa/js-toolkit/pull/645), [158d0b66](https://github.com/studiometa/js-toolkit/commit/158d0b66))
13+
14+
### Fixed
15+
16+
- **scrollTo:** fix scroll to be always instant ([#644](https://github.com/studiometa/js-toolkit/pull/644), [6e018553](https://github.com/studiometa/js-toolkit/commit/6e018553))
17+
718
## [v3.0.4](https://github.com/studiometa/js-toolkit/compare/3.0.3..3.0.4) (2025-05-12)
819

920
### Changed

package-lock.json

Lines changed: 1962 additions & 3573 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@studiometa/js-toolkit-workspace",
3-
"version": "3.0.4",
3+
"version": "3.0.5",
44
"private": true,
55
"type": "module",
66
"workspaces": [
@@ -30,10 +30,10 @@
3030
"build-for-export-size": "node scripts/add-utils-export.js && rm -rf dist && npm run build:pkg && npm run build:cp-files"
3131
},
3232
"devDependencies": {
33-
"@studiometa/prettier-config": "4.1.0",
34-
"@types/node": "22.15.17",
35-
"oxlint": "0.16.10",
36-
"prettier": "3.5.3",
33+
"@studiometa/prettier-config": "4.2.0",
34+
"@types/node": "22.16.0",
35+
"oxlint": "0.18.1",
36+
"prettier": "3.6.2",
3737
"typescript": "5.8.3"
3838
},
3939
"dependencies": {

packages/demo/package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@studiometa/js-toolkit-demo",
3-
"version": "3.0.4",
3+
"version": "3.0.5",
44
"private": true,
55
"type": "module",
66
"scripts": {
@@ -19,20 +19,20 @@
1919
"fix:prettier": "npm run lint:prettier -- --write"
2020
},
2121
"dependencies": {
22-
"@studiometa/ui": "^1.0.0-beta.0",
22+
"@studiometa/ui": "1.0.0-rc.2",
2323
"tailwindcss": "^3.4.14"
2424
},
2525
"devDependencies": {
26-
"@studiometa/eslint-config": "4.2.0",
27-
"@studiometa/prettier-config": "4.1.0",
28-
"@studiometa/stylelint-config": "4.0.0",
26+
"@studiometa/eslint-config": "4.3.1",
27+
"@studiometa/prettier-config": "4.2.0",
28+
"@studiometa/stylelint-config": "4.1.1",
2929
"@studiometa/tailwind-config": "2.1.0",
30-
"@studiometa/webpack-config": "6.3.4",
31-
"@studiometa/webpack-config-preset-prototyping": "6.3.4",
32-
"eslint": "9.26.0",
30+
"@studiometa/webpack-config": "6.3.6",
31+
"@studiometa/webpack-config-preset-prototyping": "6.3.6",
32+
"eslint": "9.30.1",
3333
"http-server": "14.1.1",
34-
"prettier": "3.5.3",
35-
"stylelint": "16.19.1"
34+
"prettier": "3.6.2",
35+
"stylelint": "16.21.1"
3636
},
3737
"stylelint": {
3838
"extends": "@studiometa/stylelint-config"

packages/docs/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@studiometa/js-toolkit-docs",
3-
"version": "3.0.4",
3+
"version": "3.0.5",
44
"type": "module",
55
"private": true,
66
"scripts": {
@@ -9,10 +9,10 @@
99
"preview": "vitepress preview ."
1010
},
1111
"devDependencies": {
12-
"@shikijs/vitepress-twoslash": "3.4.0",
12+
"@shikijs/vitepress-twoslash": "3.7.0",
1313
"@studiometa/tailwind-config": "2.1.0",
1414
"tailwindcss": "3.4.17",
1515
"vitepress": "1.6.3",
16-
"vitepress-plugin-llms": "1.1.3"
16+
"vitepress-plugin-llms": "1.7.0"
1717
}
1818
}

packages/js-toolkit/decorators/withScrolledInView/withScrolledInView.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
ScrollServiceProps,
66
ResizeServiceProps,
77
} from '../../services/index.js';
8+
import { useScroll } from '../../services/index.js';
89
import { withMountWhenInView } from '../withMountWhenInView.js';
910
import {
1011
damp,
@@ -78,11 +79,7 @@ function updateProps(
7879
dampPrecision: number,
7980
axis: 'x' | 'y' = 'x',
8081
): void {
81-
props.current[axis] = clamp(
82-
axis === 'x' ? window.scrollX : window.scrollY,
83-
props.start[axis],
84-
props.end[axis],
85-
);
82+
props.current[axis] = clamp(useScroll().props()[axis], props.start[axis], props.end[axis]);
8683
props.dampedCurrent[axis] = damp(
8784
props.current[axis],
8885
props.dampedCurrent[axis],

packages/js-toolkit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@studiometa/js-toolkit",
3-
"version": "3.0.4",
3+
"version": "3.0.5",
44
"description": "A set of useful little bits of JavaScript to boost your project! 🚀",
55
"publishConfig": {
66
"access": "public"

packages/js-toolkit/services/ScrollService.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { ServiceConfig, ServiceInterface } from './AbstractService.js';
22
import { AbstractService } from './AbstractService.js';
33
import { debounce } from '../utils/debounce.js';
44
import { PASSIVE_CAPTURE_EVENT_OPTIONS } from './utils.js';
5+
import { nextTick } from '../utils/nextTick.js';
56

67
export interface ScrollServiceProps {
78
x: number;
@@ -105,15 +106,19 @@ export class ScrollService extends AbstractService<ScrollServiceProps> {
105106
return props;
106107
}
107108

109+
update() {
110+
nextTick(() => this.updateProps()).then(() => this.trigger(this.props));
111+
}
112+
108113
onScrollDebounced = debounce(() => {
109-
this.trigger(this.updateProps());
114+
this.update();
110115
}, 100);
111116

112117
/**
113118
* Scroll handler.
114119
*/
115120
handleEvent() {
116-
this.trigger(this.updateProps());
121+
this.update();
117122
this.onScrollDebounced();
118123
}
119124
}

packages/js-toolkit/utils/scrollTo.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ export function scrollTo(
154154
rootElement.scrollTo({
155155
left: lerp(initialScrollPosition.left, targetScrollPosition.left, progress),
156156
top: lerp(initialScrollPosition.top, targetScrollPosition.top, progress),
157+
behavior: 'instant',
157158
});
158159
},
159160
{

packages/tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@studiometa/js-toolkit-tests",
3-
"version": "3.0.4",
3+
"version": "3.0.5",
44
"private": true,
55
"type": "module",
66
"scripts": {

0 commit comments

Comments
 (0)