import { Component, RealObject } from '@hatiolab/things-scene'; import * as THREE from 'three'; /** * Stock material/legend 정보를 제공하는 컴포넌트 인터페이스. * Visualizer와 RackTable 모두 이를 구현한다. */ export interface StockMaterialProvider { _stock_materials: THREE.Material[]; _default_material?: THREE.Material; _empty_material?: THREE.Material; legendTarget?: Component; hideEmptyStock?: boolean; } export declare class Stock extends RealObject { static defaultMaterial: THREE.MeshStandardMaterial; static defaultEmptyMaterial: THREE.MeshStandardMaterial; static stockGeometry: THREE.BoxGeometry; _hideEmptyStock: boolean; _focused: boolean; _focusedAt?: number; _instancedMesh?: THREE.InstancedMesh; _instanceIndex: number; _basePosition?: { x: number; y: number; z: number; }; _baseScale?: { x: number; y: number; z: number; }; model: any; _data?: any; constructor(component: Component, model: any); get isInstanced(): boolean; protected getObject3dInstance(): THREE.Mesh, THREE.Material | THREE.Material[], THREE.Object3DEventMap>; /** * 가장 가까운 StockMaterialProvider 조상을 찾는다 (RackTable 또는 Visualizer). */ get provider(): StockMaterialProvider | undefined; private get _legendStatus(); /** * InstancedMesh의 해당 인스턴스 색상을 설정한다. */ private _setInstanceColor; /** * 색상을 결정하고 InstancedMesh에 반영한다. */ private _applyMaterialColor; private _getDefaultColor; getMaterial(index: number): THREE.Material; get stockMaterials(): THREE.Material[]; get userDefineDefaultMaterial(): THREE.Material; get emptyMaterial(): THREE.Material; build(): void; createStock(w: number, h: number, d: number): void; onchangeStockData(data: any): void; /** * InstancedMesh 모드에서의 데이터 변경 처리. * 개별 mesh의 material 대신 instanceColor를 변경한다. */ private _onchangeStockDataInstanced; private _aggregate; onBeforeRender: () => void; onmouseup(e: MouseEvent, _context: unknown, callback: (arg: { data: any; location: string; }) => void): void; private _getCurrentColorHex; updateTransform(): void; updateDimension(): void; updateAlpha(): void; updateFillStyle(): void; updateStrokeStyle(): void; updateHidden(): void; updateText(): void; }