2025-04-23 12:43:32 +00:00
|
|
|
import { create } from 'zustand';
|
|
|
|
import { immer } from 'zustand/middleware/immer';
|
|
|
|
import * as THREE from 'three';
|
|
|
|
|
|
|
|
interface SelectedEventSphereState {
|
|
|
|
selectedEventSphere: THREE.Mesh | null;
|
|
|
|
setSelectedEventSphere: (mesh: THREE.Mesh | null) => void;
|
|
|
|
clearSelectedEventSphere: () => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useSelectedEventSphere = create<SelectedEventSphereState>()(
|
|
|
|
immer((set) => ({
|
|
|
|
selectedEventSphere: null,
|
|
|
|
setSelectedEventSphere: (mesh) => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedEventSphere = mesh;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
clearSelectedEventSphere: () => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedEventSphere = null;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
}))
|
2025-04-24 05:37:15 +00:00
|
|
|
);
|
|
|
|
|
2025-04-24 11:08:42 +00:00
|
|
|
interface SelectedEventDataState {
|
|
|
|
selectedEventData: { data: EventsSchema; selectedPoint: string } | undefined;
|
|
|
|
setSelectedEventData: (data: EventsSchema, selectedPoint: string) => void;
|
|
|
|
clearSelectedEventData: () => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useSelectedEventData = create<SelectedEventDataState>()(
|
|
|
|
immer((set) => ({
|
|
|
|
selectedEventData: undefined,
|
|
|
|
setSelectedEventData: (data, selectedPoint) => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedEventData = { data, selectedPoint };
|
|
|
|
});
|
|
|
|
},
|
|
|
|
clearSelectedEventData: () => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedEventData = undefined;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
);
|
|
|
|
|
|
|
|
interface SelectedAssetState {
|
|
|
|
selectedAsset: EventsSchema | undefined;
|
|
|
|
setSelectedAsset: (EventData: EventsSchema) => void;
|
|
|
|
clearSelectedAsset: () => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useSelectedAsset = create<SelectedAssetState>()(
|
|
|
|
immer((set) => ({
|
|
|
|
selectedAsset: undefined,
|
|
|
|
setSelectedAsset: (EventData) => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedAsset = EventData;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
clearSelectedAsset: () => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedAsset = undefined;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
);
|
|
|
|
|
2025-04-24 05:37:15 +00:00
|
|
|
interface SelectedProductState {
|
|
|
|
selectedProduct: { productId: string; productName: string };
|
|
|
|
setSelectedProduct: (productId: string, productName: string) => void;
|
|
|
|
clearSelectedProduct: () => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useSelectedProduct = create<SelectedProductState>()(
|
|
|
|
immer((set) => ({
|
|
|
|
selectedProduct: { productId: '', productName: '' },
|
|
|
|
setSelectedProduct: (productId, productName) => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedProduct.productId = productId;
|
|
|
|
state.selectedProduct.productName = productName;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
clearSelectedProduct: () => {
|
|
|
|
set((state) => {
|
|
|
|
state.selectedProduct.productId = '';
|
|
|
|
state.selectedProduct.productName = '';
|
|
|
|
});
|
|
|
|
},
|
|
|
|
}))
|
2025-04-23 12:43:32 +00:00
|
|
|
);
|