fix: type-safe scrollIntoViewIfNeeded
Add proper interface for WebKit extension method. Changes: - Add ScrollableElement interface - Use typeof check instead of 'as any' cast
This commit is contained in:
@@ -511,7 +511,8 @@ export class PageAgentCore extends EventTarget {
|
|||||||
// Accumulated wait time warning
|
// Accumulated wait time warning
|
||||||
if (this.#states.totalWaitTime >= 3) {
|
if (this.#states.totalWaitTime >= 3) {
|
||||||
this.pushObservation(
|
this.pushObservation(
|
||||||
`You have waited ${this.#states.totalWaitTime} seconds accumulatively. DO NOT wait any longer unless you have a good reason.`
|
`You have waited ${this.#states.totalWaitTime} seconds accumulatively. ` +
|
||||||
|
`DO NOT wait any longer unless you have a good reason.`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,7 +528,8 @@ export class PageAgentCore extends EventTarget {
|
|||||||
const remaining = this.config.maxSteps - step
|
const remaining = this.config.maxSteps - step
|
||||||
if (remaining === 5) {
|
if (remaining === 5) {
|
||||||
this.pushObservation(
|
this.pushObservation(
|
||||||
`⚠️ Only ${remaining} steps remaining. Consider wrapping up or calling done with partial results.`
|
`⚠️ Only ${remaining} steps remaining. ` +
|
||||||
|
`Consider wrapping up or calling done with partial results.`
|
||||||
)
|
)
|
||||||
} else if (remaining === 2) {
|
} else if (remaining === 2) {
|
||||||
this.pushObservation(
|
this.pushObservation(
|
||||||
|
|||||||
@@ -213,14 +213,18 @@ export async function selectOptionElement(selectElement: HTMLSelectElement, opti
|
|||||||
await waitFor(0.1) // Wait to ensure change event processing completes
|
await waitFor(0.1) // Wait to ensure change event processing completes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ScrollableElement extends HTMLElement {
|
||||||
|
scrollIntoViewIfNeeded?: (centerIfNeeded?: boolean) => void
|
||||||
|
}
|
||||||
|
|
||||||
export async function scrollIntoViewIfNeeded(element: HTMLElement) {
|
export async function scrollIntoViewIfNeeded(element: HTMLElement) {
|
||||||
const el = element as any
|
const el = element as ScrollableElement
|
||||||
if (el.scrollIntoViewIfNeeded) {
|
if (typeof el.scrollIntoViewIfNeeded === 'function') {
|
||||||
el.scrollIntoViewIfNeeded()
|
el.scrollIntoViewIfNeeded()
|
||||||
// await waitFor(0.5) // Animation playback
|
// await waitFor(0.5) // Animation playback
|
||||||
} else {
|
} else {
|
||||||
// @todo visibility check
|
// @todo visibility check
|
||||||
el.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'nearest' })
|
element.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'nearest' })
|
||||||
// await waitFor(0.5) // Animation playback
|
// await waitFor(0.5) // Animation playback
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user