import isEqual from 'react-fast-compare'; import { RuntimeStore, runtimeStorePlaceholder } from 'ontime-types'; import { createWithEqualityFn, useStoreWithEqualityFn } from 'zustand/traditional'; const deepCompare = (a: T, b: T) => isEqual(a, b); export const runtimeStore = createWithEqualityFn( () => ({ ...runtimeStorePlaceholder, }), deepCompare, ); export const useRuntimeStore = (selector: (state: RuntimeStore) => T) => useStoreWithEqualityFn(runtimeStore, selector, deepCompare); /** * Allows patching a property of the runtime store * @param key * @param value */ export function patchRuntime(key: K, value: RuntimeStore[K]): void { const state = runtimeStore.getState(); state[key] = value; runtimeStore.setState({ ...state }); }