summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-02 17:24:10 +0800
committerGitHub <[email protected]>2026-04-02 17:24:10 +0800
commit327f62526a7f60c1c67ae017d1b105466bb730e9 (patch)
tree4190af49ea728807c503107e78e07cba593cac3a /packages/app/src
parentd540d363a76909c9c1b1d4e4113a1b8fea62c5a8 (diff)
downloadopencode-327f62526a7f60c1c67ae017d1b105466bb730e9.tar.gz
opencode-327f62526a7f60c1c67ae017d1b105466bb730e9.zip
use solid-primitives/resize-observer across web code (#20613)
Diffstat (limited to 'packages/app/src')
-rw-r--r--packages/app/src/components/server/server-row.tsx9
-rw-r--r--packages/app/src/pages/session/composer/session-composer-region.tsx9
-rw-r--r--packages/app/src/pages/session/composer/session-question-dock.tsx11
-rw-r--r--packages/app/src/pages/session/composer/session-todo-dock.tsx5
4 files changed, 13 insertions, 21 deletions
diff --git a/packages/app/src/components/server/server-row.tsx b/packages/app/src/components/server/server-row.tsx
index 63a40bac2..d4f68d630 100644
--- a/packages/app/src/components/server/server-row.tsx
+++ b/packages/app/src/components/server/server-row.tsx
@@ -1,11 +1,11 @@
import { Tooltip } from "@opencode-ai/ui/tooltip"
+import { createResizeObserver } from "@solid-primitives/resize-observer"
import {
children,
createEffect,
createMemo,
createSignal,
type JSXElement,
- onCleanup,
onMount,
type ParentProps,
Show,
@@ -46,12 +46,9 @@ export function ServerRow(props: ServerRowProps) {
})
onMount(() => {
- check()
if (typeof ResizeObserver !== "function") return
- const observer = new ResizeObserver(check)
- if (nameRef) observer.observe(nameRef)
- if (versionRef) observer.observe(versionRef)
- onCleanup(() => observer.disconnect())
+ createResizeObserver([nameRef, versionRef], check)
+ check()
})
const tooltipValue = () => (
diff --git a/packages/app/src/pages/session/composer/session-composer-region.tsx b/packages/app/src/pages/session/composer/session-composer-region.tsx
index a5263cd74..372adef96 100644
--- a/packages/app/src/pages/session/composer/session-composer-region.tsx
+++ b/packages/app/src/pages/session/composer/session-composer-region.tsx
@@ -13,6 +13,7 @@ import { SessionRevertDock } from "@/pages/session/composer/session-revert-dock"
import type { SessionComposerState } from "@/pages/session/composer/session-composer-state"
import { SessionTodoDock } from "@/pages/session/composer/session-todo-dock"
import type { FollowupDraft } from "@/components/prompt-input/submit"
+import { createResizeObserver } from "@solid-primitives/resize-observer"
export function SessionComposerRegion(props: {
state: SessionComposerState
@@ -115,13 +116,9 @@ export function SessionComposerRegion(props: {
createEffect(() => {
const el = store.body
if (!el) return
- const update = () => {
- setStore("height", el.getBoundingClientRect().height)
- }
+ const update = () => setStore("height", el.getBoundingClientRect().height)
+ createResizeObserver(store.body, update)
update()
- const observer = new ResizeObserver(update)
- observer.observe(el)
- onCleanup(() => observer.disconnect())
})
return (
diff --git a/packages/app/src/pages/session/composer/session-question-dock.tsx b/packages/app/src/pages/session/composer/session-question-dock.tsx
index 38974b246..35690030c 100644
--- a/packages/app/src/pages/session/composer/session-question-dock.tsx
+++ b/packages/app/src/pages/session/composer/session-question-dock.tsx
@@ -8,6 +8,8 @@ import { showToast } from "@opencode-ai/ui/toast"
import type { QuestionAnswer, QuestionRequest } from "@opencode-ai/sdk/v2"
import { useLanguage } from "@/context/language"
import { useSDK } from "@/context/sdk"
+import { makeEventListener } from "@solid-primitives/event-listener"
+import { createResizeObserver } from "@solid-primitives/resize-observer"
const cache = new Map<string, { tab: number; answers: QuestionAnswer[]; custom: string[]; customOn: boolean[] }>()
@@ -172,17 +174,14 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit
}
update()
- window.addEventListener("resize", update)
+
+ makeEventListener(window, "resize", update)
const dock = root?.closest('[data-component="session-prompt-dock"]')
const scroller = document.querySelector(".scroll-view__viewport")
- const observer = new ResizeObserver(update)
- if (dock instanceof HTMLElement) observer.observe(dock)
- if (scroller instanceof HTMLElement) observer.observe(scroller)
+ createResizeObserver([dock, scroller], update)
onCleanup(() => {
- window.removeEventListener("resize", update)
- observer.disconnect()
if (raf !== undefined) cancelAnimationFrame(raf)
})
diff --git a/packages/app/src/pages/session/composer/session-todo-dock.tsx b/packages/app/src/pages/session/composer/session-todo-dock.tsx
index c16ac8399..7928bcc9c 100644
--- a/packages/app/src/pages/session/composer/session-todo-dock.tsx
+++ b/packages/app/src/pages/session/composer/session-todo-dock.tsx
@@ -6,6 +6,7 @@ import { IconButton } from "@opencode-ai/ui/icon-button"
import { useSpring } from "@opencode-ai/ui/motion-spring"
import { TextReveal } from "@opencode-ai/ui/text-reveal"
import { TextStrikethrough } from "@opencode-ai/ui/text-strikethrough"
+import { createResizeObserver } from "@solid-primitives/resize-observer"
import { Index, createEffect, createMemo, on, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { composerEnabled, composerProbe } from "@/testing/session-composer"
@@ -91,9 +92,7 @@ export function SessionTodoDock(props: {
setStore("height", el.getBoundingClientRect().height)
}
update()
- const observer = new ResizeObserver(update)
- observer.observe(el)
- onCleanup(() => observer.disconnect())
+ createResizeObserver(el, update)
})
createEffect(() => {