UNPKG

@applicaster/zapp-react-native-ui-components

Version:

Applicaster Zapp React Native ui components for the Quick Brick App

37 lines (28 loc) 903 B
import * as React from "react"; import { removeItemFromList } from "@applicaster/zapp-react-native-utils/arrayUtils"; export class ViewportEvents { constructor(firesLastEventOnAdd = false) { this.listeners = []; this.lastEvent = null; this.firesLastEventOnAdd = firesLastEventOnAdd; } addListener(listener) { if (!this.listeners.includes(listener)) { this.listeners.push(listener); if (this.firesLastEventOnAdd && this.lastEvent) { listener(this.lastEvent); } } } removeListener(listener) { this.listeners = removeItemFromList(listener, this.listeners); } notify = (event) => { this.lastEvent = event; this.listeners.forEach((listener) => listener(event)); }; } export const ViewportEventContext = React.createContext(null); export function useViewportEventsContext() { return React.useContext(ViewportEventContext); }