diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2022-12-26 12:55:10 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-26 12:55:10 +0900 |
| commit | f0fe930aae2aa936d85abfca58cbab3cd3cbb968 (patch) | |
| tree | 41d1379ef59dc005a5c3c98f0591d3da4e7ef510 /packages/client/src/directives | |
| parent | feat(client): add user list widget (diff) | |
| download | misskey-f0fe930aae2aa936d85abfca58cbab3cd3cbb968.tar.gz misskey-f0fe930aae2aa936d85abfca58cbab3cd3cbb968.tar.bz2 misskey-f0fe930aae2aa936d85abfca58cbab3cd3cbb968.zip | |
fix(client): prevent infinite resize loop (#9232)
* clientWidth?
* spacer?
* size directive?
* size directive
* use const
Diffstat (limited to 'packages/client/src/directives')
| -rw-r--r-- | packages/client/src/directives/size.ts | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/client/src/directives/size.ts b/packages/client/src/directives/size.ts index b514f4e38b..da8bd78ea1 100644 --- a/packages/client/src/directives/size.ts +++ b/packages/client/src/directives/size.ts @@ -8,6 +8,7 @@ const mountings = new Map<Element, { resize: ResizeObserver; intersection?: IntersectionObserver; previousWidth: number; + twoPreviousWidth: number; }>(); type ClassOrder = { @@ -66,7 +67,13 @@ function calc(el: Element) { delete info.intersection; } - mountings.set(el, Object.assign(info, { previousWidth: width })); + mountings.set(el, { ...info, ...{ previousWidth: width, twoPreviousWidth: info.previousWidth }}); + + // Prevent infinite resizing + // https://github.com/misskey-dev/misskey/issues/9076 + if (info.twoPreviousWidth === width) { + return; + } const cached = cache.get(getOrderName(width, info.value)); if (cached) { @@ -90,6 +97,7 @@ export default { value: binding.value, resize, previousWidth: 0, + twoPreviousWidth: 0, }); calc(src); |