mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-01 20:15:07 -05:00
fix(ui): use reactive entity adapter hooks, fix one-behind issue
This commit is contained in:
@@ -1,32 +0,0 @@
|
||||
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
|
||||
import type { CanvasEntityAdapter } from 'features/controlLayers/konva/CanvasEntity/types';
|
||||
import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types';
|
||||
import { useMemo } from 'react';
|
||||
import { assert } from 'tsafe';
|
||||
|
||||
/** @knipignore */
|
||||
export const useEntityAdapter = (entityIdentifier: CanvasEntityIdentifier): CanvasEntityAdapter => {
|
||||
const canvasManager = useCanvasManager();
|
||||
|
||||
const adapter = useMemo(() => {
|
||||
const adapter = canvasManager.getAdapter(entityIdentifier);
|
||||
assert(adapter, 'Entity adapter not found');
|
||||
return adapter;
|
||||
}, [canvasManager, entityIdentifier]);
|
||||
|
||||
return adapter;
|
||||
};
|
||||
|
||||
export const useEntityAdapterSafe = (entityIdentifier: CanvasEntityIdentifier | null): CanvasEntityAdapter | null => {
|
||||
const canvasManager = useCanvasManager();
|
||||
|
||||
const adapter = useMemo(() => {
|
||||
if (!entityIdentifier) {
|
||||
return null;
|
||||
}
|
||||
const adapter = canvasManager.getAdapter(entityIdentifier);
|
||||
return adapter ?? null;
|
||||
}, [canvasManager, entityIdentifier]);
|
||||
|
||||
return adapter;
|
||||
};
|
||||
@@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react';
|
||||
import { useAppSelector } from 'app/store/storeHooks';
|
||||
import { SyncableMap } from 'common/util/SyncableMap/SyncableMap';
|
||||
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
|
||||
import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext';
|
||||
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
|
||||
import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter';
|
||||
import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types';
|
||||
import { getEmptyRect } from 'features/controlLayers/konva/util';
|
||||
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';
|
||||
|
||||
@@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react';
|
||||
import { useAppSelector } from 'app/store/storeHooks';
|
||||
import { SyncableMap } from 'common/util/SyncableMap/SyncableMap';
|
||||
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
|
||||
import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext';
|
||||
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
|
||||
import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter';
|
||||
import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types';
|
||||
import { getEmptyRect } from 'features/controlLayers/konva/util';
|
||||
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';
|
||||
|
||||
Reference in New Issue
Block a user