summaryrefslogtreecommitdiff
path: root/packages/client/src/directives
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2022-12-26 12:55:10 +0900
committerGitHub <noreply@github.com>2022-12-26 12:55:10 +0900
commitf0fe930aae2aa936d85abfca58cbab3cd3cbb968 (patch)
tree41d1379ef59dc005a5c3c98f0591d3da4e7ef510 /packages/client/src/directives
parentfeat(client): add user list widget (diff)
downloadmisskey-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.ts10
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);