@applicaster/zapp-react-native-ui-components
Version:
Applicaster Zapp React Native ui components for the Quick Brick App
37 lines (28 loc) • 903 B
JavaScript
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);
}