use solid-primitives/resize-observer across web code (#20613)

This commit is contained in:
Brendan Allan
2026-04-02 17:24:10 +08:00
committed by GitHub
parent d540d363a7
commit 327f62526a
12 changed files with 41 additions and 67 deletions

View File

@@ -1,4 +1,5 @@
import { onCleanup, onMount, splitProps, type ComponentProps, Show, mergeProps } from "solid-js"
import { onMount, splitProps, type ComponentProps, Show, mergeProps } from "solid-js"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { createStore } from "solid-js/store"
import { useI18n } from "../context/i18n"
@@ -97,19 +98,7 @@ export function ScrollView(props: ScrollViewProps) {
local.viewportRef(viewportRef)
}
const observer = new ResizeObserver(() => {
updateThumb()
})
observer.observe(viewportRef)
// Also observe the first child if possible to catch content changes
if (viewportRef.firstElementChild) {
observer.observe(viewportRef.firstElementChild)
}
onCleanup(() => {
observer.disconnect()
})
createResizeObserver([viewportRef, viewportRef.firstElementChild], updateThumb)
updateThumb()
})

View File

@@ -1,5 +1,6 @@
// @ts-nocheck
import { createEffect, createSignal, onCleanup, onMount } from "solid-js"
import { createSignal, onMount } from "solid-js"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { createStore } from "solid-js/store"
import { useSpring } from "./motion-spring"
import { TextStrikethrough } from "./text-strikethrough"
@@ -144,13 +145,7 @@ function VariantF(props: { active: boolean; text: string }) {
}
onMount(measure)
createEffect(() => {
const el = containerRef
if (!el) return
const observer = new ResizeObserver(measure)
observer.observe(el)
onCleanup(() => observer.disconnect())
})
createResizeObserver(() => containerRef, measure)
const clipRight = () => {
const cw = containerWidth()

View File

@@ -1,5 +1,6 @@
import type { JSX } from "solid-js"
import { createEffect, onCleanup, onMount } from "solid-js"
import { onMount } from "solid-js"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { createStore } from "solid-js/store"
import { useSpring } from "./motion-spring"
@@ -33,14 +34,7 @@ export function TextStrikethrough(props: {
}
onMount(measure)
createEffect(() => {
const el = containerRef
if (!el) return
const observer = new ResizeObserver(measure)
observer.observe(el)
onCleanup(() => observer.disconnect())
})
createResizeObserver(() => containerRef, measure)
// Revealed pixels from left = progress * textWidth
const revealedPx = () => {