Files
fizzy/app/javascript/controllers/bridge/insets_controller.js
T
2026-01-08 16:22:55 +01:00

32 lines
907 B
JavaScript

import { BridgeComponent } from "@hotwired/hotwire-native-bridge"
// Bridge component to control custom safe-area insets from native apps.
// Sets CSS variables --injected-safe-inset-(top|right|bottom|left).
export default class extends BridgeComponent {
static component = "insets"
connect() {
super.connect()
this.notifyBridgeOfConnect()
}
disconnect() {
super.disconnect()
this.send("disconnect")
}
notifyBridgeOfConnect() {
this.send("connect", {}, message => {
this.setInsets(message.data)
})
}
setInsets({ top, right, bottom, left }) {
const root = document.documentElement.style
root.setProperty("--injected-safe-inset-top", `${top}px`)
root.setProperty("--injected-safe-inset-right", `${right}px`)
root.setProperty("--injected-safe-inset-bottom", `${bottom}px`)
root.setProperty("--injected-safe-inset-left", `${left}px`)
}
}