import {InputsController} from './InputsController'; import {OutputsController} from './OutputsController'; import {ConnectionsController} from './ConnectionsController'; import {SavedConnectionPointsDataController} from './SavedConnectionPointsDataController'; import {NodeContext} from '../../../poly/NodeContext'; import {TypedNode} from '../../_Base'; import {ConnectionPointsController} from './ConnectionPointsController'; import {ParamType} from '../../../poly/ParamType'; import {ParamInitValueSerializedTypeMap} from '../../../params/types/ParamInitValueSerializedTypeMap'; import {ParamOptions} from '../../../params/utils/OptionsController'; import {PolyDictionary} from '../../../../types/GlobalTypes'; export type OverridenOptions = PolyDictionary; export type SimpleParamJsonExporterData = ParamInitValueSerializedTypeMap[T]; export interface ComplexParamJsonExporterData { type?: T; default_value?: ParamInitValueSerializedTypeMap[T]; raw_input?: ParamInitValueSerializedTypeMap[T]; options?: ParamOptions; overriden_options?: OverridenOptions; // components?: ParamJsonExporterDataByName; // expression?: string; } export type ParamJsonExporterData = | SimpleParamJsonExporterData | ComplexParamJsonExporterData; export type ParamJsonExporterDataByName = PolyDictionary>; export type ParamsJsonExporterData = PolyDictionary>; export interface ParamInitData { raw_input?: ParamInitValueSerializedTypeMap[T]; simple_data?: SimpleParamJsonExporterData; complex_data?: ComplexParamJsonExporterData; } export type ParamsInitData = PolyDictionary>; export class IOController { protected _inputs: InputsController | undefined; protected _outputs: OutputsController | undefined; protected _connections: ConnectionsController = new ConnectionsController(this.node); protected _saved_connection_points_data: SavedConnectionPointsDataController | undefined; protected _connection_points: ConnectionPointsController | undefined; constructor(protected node: TypedNode) {} get connections() { return this._connections; } // // // inputs // // get inputs(): InputsController { return (this._inputs = this._inputs || new InputsController(this.node)); } has_inputs() { return this._inputs != null; } // // // outputs // // get outputs(): OutputsController { return (this._outputs = this._outputs || new OutputsController(this.node)); } has_outputs() { return this._outputs != null; } // // // connection_points // // get connection_points(): ConnectionPointsController { return (this._connection_points = this._connection_points || new ConnectionPointsController(this.node, this.node.nodeContext() as NC)); } get has_connection_points_controller(): boolean { return this._connection_points != null; } // // // saved connection points data // // get saved_connection_points_data() { return (this._saved_connection_points_data = this._saved_connection_points_data || new SavedConnectionPointsDataController(this.node)); } clear_saved_connection_points_data() { if (this._saved_connection_points_data) { this._saved_connection_points_data.clear(); this._saved_connection_points_data = undefined; } } }