UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

77 lines (69 loc) 2.22 kB
import {CoreGraphNodeId} from '../../../core/graph/CoreGraph'; import {TypedParam} from '../_Base'; import { ParamValueSerializedTypeMap, ParamValuePreConversionSerializedTypeMap, } from '../types/ParamValueSerializedTypeMap'; import {ParamType} from '../../poly/ParamType'; import {ParamInitValueSerializedTypeMap} from '../types/ParamInitValueSerializedTypeMap'; export interface ParamSerializerData<T extends ParamType> { name: string; type: T; raw_input: ParamInitValueSerializedTypeMap[T]; value: ParamValueSerializedTypeMap[T]; value_pre_conversion: ParamValuePreConversionSerializedTypeMap[T]; expression?: string; graph_node_id: CoreGraphNodeId; // is_dirty: boolean; error_message?: string; is_visible: boolean; editable: boolean; folder_name?: string; components?: Readonly<CoreGraphNodeId[]>; } export class CoreParamSerializer<T extends ParamType> { constructor(public readonly param: TypedParam<T>) {} toJSON(): ParamSerializerData<T> { const data: ParamSerializerData<T> = { name: this.param.name(), type: this.param.type(), raw_input: this.rawInput(), value: this.value(), value_pre_conversion: this.value_pre_conversion(), expression: this.expression(), graph_node_id: this.param.graphNodeId(), // is_dirty: this.param.isDirty(), error_message: this.error_message(), is_visible: this.is_visible(), editable: this.editable(), // folder_name: this.param.uiData.folder_name, components: undefined, }; if (this.param.isMultiple() && this.param.components) { data['components'] = this.param.components.map((component) => component.graphNodeId()); } return data; } rawInput() { return this.param.rawInputSerialized(); } value() { return this.param.valueSerialized(); } value_pre_conversion() { return this.param.valuePreConversionSerialized(); } expression() { return this.param.hasExpression() ? this.param.expressionController?.expression() : undefined; } error_message() { return this.param.states.error.message(); } is_visible() { return this.param.options.isVisible(); } editable() { return this.param.options.editable(); } } export type BaseParamSerializer = typeof CoreParamSerializer<ParamType>;