Migrate to a monorepo structure (#2909)

This commit is contained in:
Charles Bochet
2023-12-10 18:10:54 +01:00
committed by GitHub
parent a70a9281eb
commit 5bdca9de6c
2304 changed files with 37152 additions and 25869 deletions

View File

@ -0,0 +1,14 @@
import React, { Ref, RefCallback } from 'react';
import { isFunction } from '@sniptt/guards';
export const useCombinedRefs =
<T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>
(node: T) => {
for (const ref of refs) {
if (isFunction(ref)) {
ref(node);
} else if (ref !== null && ref !== undefined) {
(ref as React.MutableRefObject<T | null>).current = node;
}
}
};

View File

@ -0,0 +1,14 @@
import { useRef } from 'react';
export const useFirstMountState = (): boolean => {
// eslint-disable-next-line twenty/no-state-useref
const isFirst = useRef(true);
if (isFirst.current) {
isFirst.current = false;
return true;
}
return isFirst.current;
};

View File

@ -0,0 +1,19 @@
import { useCallback } from 'react';
import { matchPath, useLocation } from 'react-router-dom';
import { AppBasePath } from '@/types/AppBasePath';
export const useIsMatchingLocation = () => {
const location = useLocation();
return useCallback(
(path: string, basePath?: AppBasePath) => {
const constructedPath = basePath
? new URL(basePath + path, document.location.origin).pathname ?? ''
: path;
return !!matchPath(constructedPath, location.pathname);
},
[location.pathname],
);
};

View File

@ -0,0 +1,17 @@
import { DependencyList, EffectCallback, useEffect } from 'react';
import { useFirstMountState } from './useFirstMountState';
export const useUpdateEffect = (
effect: EffectCallback,
deps?: DependencyList,
) => {
const isFirst = useFirstMountState();
useEffect(() => {
if (!isFirst) {
return effect();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, deps);
};