import { useEffectRunConditionToDependencyArray } from "./tools/useEffectRunConditionToDependencyArray.ts";import React from "https://dev.jspm.io/react@18.2.0";;import { assert } from "https://raw.githubusercontent.com/garronej/tsafe/v1.0.0/deno_dist/assert.ts";const { useEffect } = React;
export type Destructor = () => void;
export function useEffectIf<Deps extends readonly any[]>( effect: (params: { deps: Deps; }) => (void | Destructor), effectRunCondition: Deps | boolean): void {
const { deps, doSkipEffectRun } = useEffectRunConditionToDependencyArray({ effectRunCondition, "hookName": useEffectIf.name });
useEffect( () => {
if (doSkipEffectRun) return;
assert(effectRunCondition !== false);
return effect({ "deps": effectRunCondition === true ? [] as any : effectRunCondition });
}, deps );
}