@soonspacejs/plugin-flow 2.13.7 → 2.13.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/flows/ComponentFlowParser.d.ts +8 -0
- package/dist/flows/FlowParser.d.ts +46 -0
- package/dist/flows/edges/index.d.ts +9 -0
- package/dist/flows/index.d.ts +4 -0
- package/dist/flows/nodes/ColorNode.d.ts +8 -0
- package/dist/flows/nodes/ConditionNode.d.ts +9 -0
- package/dist/flows/nodes/DataExtractionNode.d.ts +8 -0
- package/dist/flows/nodes/DataFilterNode.d.ts +8 -0
- package/dist/flows/nodes/DelayNode.d.ts +8 -0
- package/dist/flows/nodes/EmissiveNode.d.ts +10 -0
- package/dist/flows/nodes/FlyToNode.d.ts +8 -0
- package/dist/flows/nodes/HideNode.d.ts +10 -0
- package/dist/flows/nodes/HighlightNode.d.ts +10 -0
- package/dist/flows/nodes/MeshNode.d.ts +8 -0
- package/dist/flows/nodes/MeshesNode.d.ts +8 -0
- package/dist/flows/nodes/ModelNode.d.ts +8 -0
- package/dist/flows/nodes/ModelsNode.d.ts +8 -0
- package/dist/flows/nodes/Node.d.ts +48 -0
- package/dist/flows/nodes/NumberNode.d.ts +8 -0
- package/dist/flows/nodes/OpacityNode.d.ts +10 -0
- package/dist/flows/nodes/POINode.d.ts +8 -0
- package/dist/flows/nodes/POISNode.d.ts +8 -0
- package/dist/flows/nodes/PathNode.d.ts +8 -0
- package/dist/flows/nodes/PathsNode.d.ts +8 -0
- package/dist/flows/nodes/RotateNode.d.ts +8 -0
- package/dist/flows/nodes/ScaleNode.d.ts +8 -0
- package/dist/flows/nodes/ShowNode.d.ts +10 -0
- package/dist/flows/nodes/SpaceNode.d.ts +8 -0
- package/dist/flows/nodes/SpacesNode.d.ts +8 -0
- package/dist/flows/nodes/StartNode.d.ts +7 -0
- package/dist/flows/nodes/TranslateNode.d.ts +8 -0
- package/dist/flows/nodes/UnEmissiveNode.d.ts +10 -0
- package/dist/flows/nodes/UnHighlightNode.d.ts +10 -0
- package/dist/flows/nodes/UnOpacityNode.d.ts +10 -0
- package/dist/flows/nodes/clip-animation/ClipAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/clip-animation/UnClipAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/clip-animation/index.d.ts +2 -0
- package/dist/flows/nodes/component-tween-animation/ComponentTweenAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/component-tween-animation/UnComponentTweenAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/component-tween-animation/index.d.ts +2 -0
- package/dist/flows/nodes/component-tween-animation/utils.d.ts +5 -0
- package/dist/flows/nodes/index.d.ts +33 -0
- package/dist/flows/nodes/tween-animation/TweenAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/tween-animation/UnTweenAnimationNode.d.ts +8 -0
- package/dist/flows/nodes/tween-animation/index.d.ts +2 -0
- package/dist/flows/nodes/tween-animation/utils.d.ts +5 -0
- package/dist/flows/types.d.ts +106 -0
- package/dist/flows/utils.d.ts +12 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.esm.js +1 -1881
- package/dist/triggers/ComponentTrigger.d.ts +18 -0
- package/dist/triggers/Trigger.d.ts +27 -0
- package/dist/triggers/index.d.ts +3 -0
- package/dist/triggers/types.d.ts +54 -0
- package/dist/triggers/utils.d.ts +2 -0
- package/dist/types.d.ts +16 -0
- package/package.json +3 -3
- package/test/test.ts +118 -118
- package/dist/index.esm.js.map +0 -1
package/dist/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/flows/edges/index.ts","../src/flows/types.ts","../src/flows/nodes/Node.ts","../src/flows/nodes/StartNode.ts","../src/flows/nodes/ColorNode.ts","../src/flows/nodes/NumberNode.ts","../src/flows/nodes/HighlightNode.ts","../src/flows/nodes/UnHighlightNode.ts","../src/flows/nodes/OpacityNode.ts","../src/flows/nodes/UnOpacityNode.ts","../src/flows/nodes/EmissiveNode.ts","../src/flows/nodes/UnEmissiveNode.ts","../src/flows/nodes/MeshNode.ts","../src/flows/nodes/MeshesNode.ts","../src/flows/nodes/ModelNode.ts","../src/flows/nodes/ModelsNode.ts","../src/flows/nodes/DelayNode.ts","../src/flows/nodes/ConditionNode.ts","../src/flows/nodes/ShowNode.ts","../src/flows/nodes/HideNode.ts","../src/flows/nodes/TranslateNode.ts","../src/flows/nodes/ScaleNode.ts","../src/flows/nodes/RotateNode.ts","../src/flows/nodes/FlyToNode.ts","../src/flows/nodes/SpaceNode.ts","../src/flows/nodes/SpacesNode.ts","../src/flows/nodes/POINode.ts","../src/flows/nodes/POISNode.ts","../src/flows/nodes/DataExtractionNode.ts","../src/flows/nodes/DataFilterNode.ts","../src/flows/nodes/PathNode.ts","../src/flows/nodes/PathsNode.ts","../src/flows/nodes/clip-animation/ClipAnimationNode.ts","../src/flows/nodes/clip-animation/UnClipAnimationNode.ts","../src/flows/nodes/tween-animation/utils.ts","../src/flows/nodes/tween-animation/TweenAnimationNode.ts","../src/flows/nodes/tween-animation/UnTweenAnimationNode.ts","../src/flows/nodes/component-tween-animation/utils.ts","../src/flows/nodes/component-tween-animation/ComponentTweenAnimationNode.ts","../src/flows/nodes/component-tween-animation/UnComponentTweenAnimationNode.ts","../src/flows/utils.ts","../src/flows/FlowParser.ts","../src/flows/ComponentFlowParser.ts","../../../soonspacejs/src/Constants/index.ts","../../../soonspacejs/src/Shared/viewport.ts","../../../soonspacejs/src/Constants/headers.ts","../../../soonspacejs/src/Shared/network.ts","../../../soonspacejs/src/Shared/occlude.ts","../../../soonspacejs/src/Shared/ctx.ts","../src/triggers/utils.ts","../src/triggers/Trigger.ts","../src/triggers/types.ts","../src/triggers/ComponentTrigger.ts"],"sourcesContent":["import { EdgeType, } from '../types'\r\n\r\nclass Edge {\r\n\r\n id: string\r\n source: string\r\n target: string\r\n sourceHandle?: string | null\r\n\r\n constructor ( edge: EdgeType ) {\r\n\r\n this.id = edge.id\r\n this.source = edge.source\r\n this.target = edge.target\r\n this.sourceHandle = edge.sourceHandle\r\n \r\n }\r\n\r\n}\r\n\r\nexport { Edge, }","import { Model, } from 'soonspacejs'\r\nimport { Object3D, } from 'three'\r\nimport { IAnimation, IComponentAnimation, } from '../types'\r\nimport { Node, } from './nodes'\r\n\r\nexport enum NodePropTypeEnum {\r\n LOCAL = 'LOCAL',\r\n READ_CTX = 'READ_CTX',\r\n WRITE_CTX = 'WRITE_CTX',\r\n}\r\n\r\nexport enum NodeTypeEnum {\r\n START = 'START',\r\n COLOR = 'COLOR',\r\n NUMBER = 'NUMBER',\r\n HIGHLIGHT = 'HIGHLIGHT',\r\n UN_HIGHLIGHT = 'UN_HIGHLIGHT',\r\n OPACITY = 'OPACITY',\r\n UN_OPACITY = 'UN_OPACITY',\r\n EMISSIVE = 'EMISSIVE',\r\n UN_EMISSIVE = 'UN_EMISSIVE',\r\n MESH = 'MESH',\r\n MESHES = 'MESHES',\r\n MODEL = 'MODEL',\r\n MODELS = 'MODELS',\r\n SHOW = 'SHOW',\r\n HIDE = 'HIDE',\r\n CLIP_ANIMATION = 'CLIP_ANIMATION',\r\n UN_CLIP_ANIMATION = 'UN_CLIP_ANIMATION',\r\n TWEEN_ANIMATION = 'TWEEN_ANIMATION',\r\n UN_TWEEN_ANIMATION = 'UN_TWEEN_ANIMATION',\r\n COMPONENT_TWEEN_ANIMATION = 'COMPONENT_TWEEN_ANIMATION',\r\n UN_COMPONENT_TWEEN_ANIMATION = 'UN_COMPONENT_TWEEN_ANIMATION',\r\n SPACE = 'SPACE',\r\n SPACES = 'SPACES',\r\n PATH = 'PATH',\r\n PATHS = 'PATHS',\r\n POI = 'POI',\r\n POIS = 'POIS',\r\n FLY_TO = 'FLY_TO',\r\n TRANSLATE = 'TRANSLATE',\r\n ROTATE = 'ROTATE',\r\n SCALE = 'SCALE',\r\n DATA_FILTER = 'DATA_FILTER',\r\n DATA_EXTRACTION = 'DATA_EXTRACTION',\r\n CONDITION_NODE = 'CONDITION_NODE',\r\n DELAY = 'DELAY',\r\n}\r\n\r\n/**\r\n * 节点 props 数据\r\n */\r\nexport type NodePropType = {\r\n name: string;\r\n type: NodePropTypeEnum;\r\n value: string;\r\n valueType: string;\r\n}\r\n\r\n/**\r\n * 节点数据\r\n */\r\nexport type NodeType = {\r\n id: string;\r\n // 节点类型\r\n type: NodeTypeEnum;\r\n props: NodePropType[];\r\n}\r\n\r\n/**\r\n * 连接数据\r\n */\r\nexport type EdgeType = {\r\n id: string;\r\n source: string;\r\n target: string;\r\n sourceHandle?: string | null;\r\n}\r\n\r\n/**\r\n * 流程数据\r\n */\r\nexport type FlowType = {\r\n id: string;\r\n sid: string;\r\n name: string;\r\n // 起始节点 id\r\n portal: string;\r\n nodes: NodeType[];\r\n edges: EdgeType[];\r\n}\r\n\r\n/**\r\n * 组件流程数据\r\n */\r\nexport type ComponentFlowType = FlowType & {\r\n editionId: string;\r\n}\r\n\r\n/**\r\n * 节点上下文对象\r\n */\r\nexport type NodeCtxType = {\r\n [x: string]: any;\r\n}\r\n\r\n/**\r\n * 节点全局对象\r\n * 由运行时动态定义接口\r\n */\r\nexport type NodeGlobalType = {\r\n // 当前节点对象\r\n getTarget?: ( currentNode: Node, ) => Promise<Model | null>;\r\n // 场景动画数组\r\n getAnimations?: ( currentNode: Node, object: Object3D, animationId: string ) => Promise<IAnimation[] | null>;\r\n // 组件动画数组\r\n getComponentAnimations?: ( currentNode: Node, object: Object3D, animationId: string ) => Promise<IComponentAnimation[] | null>;\r\n [s: symbol]: any;\r\n}\r\n\r\n\r\nexport type FlowParserEventMap = {\r\n //\r\n}","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeType, NodeCtxType, NodePropType, NodeGlobalType, NodeTypeEnum, NodePropTypeEnum, } from '../types'\r\nimport { Object3D, } from 'three'\r\nimport { getObjectById, parseValue, } from '../utils'\r\n\r\nlet count = 0\r\n\r\nclass Node {\r\n\r\n parser: FlowParser\r\n ssp: SoonSpace\r\n id: string\r\n type: NodeTypeEnum\r\n props: NodeType['props']\r\n // 前置节点\r\n prevNodes: Node[] = []\r\n // 后置节点\r\n postNodes: Node[] = []\r\n\r\n // 执行顺序\r\n execOrder = 0\r\n\r\n // 当前上下文对象\r\n ctx!: NodeCtxType\r\n // 运行结果\r\n promise!: Promise<void>\r\n resolve!: () => void\r\n reject!: ( reason?: any ) => void\r\n\r\n // 清空队列回调\r\n cleanSets = new Set<() => void>()\r\n\r\n // 前置钩子\r\n onBefore: ( ( node: Node ) => ( Promise<void> | void ) ) | null = null\r\n // 后置钩子\r\n onAfter: ( ( node: Node ) => ( Promise<void> | void ) ) | null = null\r\n\r\n rejected: boolean\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n this.parser = parser\r\n this.ssp = parser.ssp\r\n this.id = node.id\r\n this.type = node.type\r\n this.props = node.props\r\n this.rejected = false\r\n\r\n this.init()\r\n\r\n }\r\n\r\n init () {\r\n\r\n this.ctx = {}\r\n this.promise = new Promise( ( resolve, reject ) => {\r\n\r\n this.resolve = resolve\r\n this.reject = () => {\r\n\r\n this.rejected = true\r\n reject()\r\n\r\n }\r\n \r\n } )\r\n\r\n }\r\n\r\n readContext <T = any> ( key: string ) {\r\n\r\n return this.ctx[ key ] as T | undefined\r\n \r\n }\r\n\r\n writeContext ( key: string, value: any ) {\r\n\r\n this.ctx[ key ] = value\r\n \r\n }\r\n\r\n findProp ( name: string, type: NodePropType['type'] | NodePropType['type'][] ): undefined | NodePropType {\r\n \r\n // 如果是数组则从第一个成员开始查找,如果有prop则返回该值\r\n if ( type instanceof Array ) {\r\n \r\n for ( const item of type ) {\r\n\r\n const prop = this.findProp( name, item )\r\n\r\n if ( prop ) return prop\r\n\r\n }\r\n\r\n } else {\r\n\r\n return this.props.find( prop => prop.name === name && prop.type === type )\r\n\r\n }\r\n \r\n }\r\n\r\n /**\r\n * 等待前置节点执行完毕\r\n */\r\n async waitForPrevNodes () {\r\n\r\n return await Promise.all( this.prevNodes.map( prevNode => prevNode.promise ) )\r\n \r\n }\r\n\r\n /**\r\n * 合并上下文\r\n */\r\n mergeContext () {\r\n\r\n this.prevNodes.forEach( prevNode => {\r\n\r\n Object.assign( this.ctx, prevNode.ctx )\r\n \r\n } )\r\n \r\n }\r\n\r\n /**\r\n * 执行节点逻辑\r\n * @param global \r\n */\r\n async exec ( _global: NodeGlobalType ): Promise<void> {\r\n // 子类实现\r\n }\r\n\r\n /**\r\n * 运行节点\r\n * @param global \r\n */\r\n async run ( global: NodeGlobalType ) {\r\n \r\n try {\r\n\r\n await this.waitForPrevNodes()\r\n \r\n if ( this.rejected ) throw new Error()\r\n\r\n this.mergeContext()\r\n \r\n await ( this.onBefore ?? this.parser.onNodeBefore )?.( this )\r\n try {\r\n \r\n this.execOrder = ++count\r\n await this.exec( global )\r\n \r\n } catch ( e ) {\r\n \r\n this.reject( e )\r\n \r\n throw e\r\n \r\n }\r\n await ( this.onAfter ?? this.parser.onNodeAfter )?.( this )\r\n \r\n this.resolve()\r\n\r\n } catch ( e ) {\r\n\r\n this.reject()\r\n\r\n }\r\n\r\n }\r\n\r\n // 清空节点逻辑\r\n cleanup () {\r\n\r\n this.cleanSets.forEach( clean => clean() )\r\n this.cleanSets.clear()\r\n \r\n }\r\n\r\n protected getValue ( prop: NodePropType, object?: Object3D | null ) {\r\n\r\n if ( prop.type === NodePropTypeEnum.READ_CTX ) {\r\n\r\n return this.readContext<Object3D[] | Object3D>( parseValue( prop.value ) )\r\n\r\n } else if ( prop.type === NodePropTypeEnum.LOCAL ) {\r\n\r\n const { viewport: { scene, }, } = this.ssp\r\n\r\n if ( prop.name === 'objects' || prop.name === 'models' || prop.name === 'meshs' ) {\r\n\r\n return parseValue( prop.value ).map( ( item: string ) => getObjectById( this.ssp, item, object ?? scene ) )\r\n\r\n } else if ( prop.name === 'object' || prop.name === 'model' || prop.name === 'mesh' ) {\r\n\r\n return getObjectById( this.ssp, parseValue( prop.value ), object ?? scene )\r\n\r\n } else {\r\n\r\n return parseValue( prop.value )\r\n\r\n }\r\n // return prop.name === 'objects' ? getObjectById( parseValue( prop.value ) ) : parseValue( prop.value )\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { Node, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nclass StartNode extends Node {\r\n \r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n}\r\n\r\nexport { StartNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\nclass ColorNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec () {\r\n\r\n const colorProp = this.findProp( 'color', NodePropTypeEnum.LOCAL )\r\n const out = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( colorProp && out ) {\r\n\r\n this.writeContext( parseValue( out.value ), parseValue( colorProp.value ) )\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ColorNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\nclass NumberNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n async exec () {\r\n\r\n const numberProp = this.findProp( 'number', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n \r\n if ( numberProp && outProp ) {\r\n\r\n this.writeContext( parseValue( outProp.value ), parseValue( numberProp.value ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { NumberNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass HighlightNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterHighlightObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( !this.ssp.viewport.scener.selectedObjects.highlight.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const colorProp = this.findProp( 'color', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const opacityProp = this.findProp( 'opacity', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && colorProp && opacityProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model )\r\n const colorValue = this.getValue( colorProp )\r\n const opacityValue = this.getValue( opacityProp )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterHighlightObject( objectsValue )\r\n\r\n this.ssp.highlightShow( filteredObjects, { color: colorValue, opacity: opacityValue, } )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.unHighlightShow( filteredObjects )\r\n\r\n } )\r\n\r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { HighlightNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass UnHighlightNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterUnHighlightObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( this.ssp.viewport.scener.selectedObjects.highlight.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objects = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objects ) {\r\n\r\n const objectsValue = this.getValue( objects, model )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterUnHighlightObject( objectsValue )\r\n\r\n this.ssp.unHighlightShow( filteredObjects )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.highlightShow( filteredObjects ) // @todo 参数\r\n\r\n } )\r\n\r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { UnHighlightNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass OpacityNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterOpacityObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( !this.ssp.viewport.scener.selectedObjects.opacity.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const colorProp = this.findProp( 'color', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const opacityProp = this.findProp( 'opacity', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && colorProp && opacityProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model )\r\n const colorValue = this.getValue( colorProp )\r\n const opacityValue = this.getValue( opacityProp )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterOpacityObject( objectsValue )\r\n\r\n this.ssp.opacityShow( filteredObjects, { color: colorValue, opacity: opacityValue, } )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.unOpacityShow( filteredObjects )\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { OpacityNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass UnOpacityNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterUnOpacityObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( this.ssp.viewport.scener.selectedObjects.opacity.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objects = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objects ) {\r\n\r\n const objectsValue = this.getValue( objects, model )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterUnOpacityObject( objectsValue )\r\n\r\n this.ssp.unOpacityShow( filteredObjects )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.opacityShow( filteredObjects ) // @todo 参数\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { UnOpacityNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass EmissiveNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterEmissiveObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( !this.ssp.viewport.scener.selectedObjects.emissive.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const colorProp = this.findProp( 'color', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const baseColorProp = this.findProp( 'baseColor', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const minOpacityProp = this.findProp( 'minOpacity', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const maxOpacityProp = this.findProp( 'maxOpacity', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const durationProp = this.findProp( 'duration', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && colorProp && baseColorProp && minOpacityProp && maxOpacityProp && durationProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model )\r\n const colorValue = this.getValue( colorProp )\r\n const baseColorValue = this.getValue( baseColorProp )\r\n const minOpacityValue = this.getValue( minOpacityProp )\r\n const maxOpacityValue = this.getValue( maxOpacityProp )\r\n const durationValue = this.getValue( durationProp )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterEmissiveObject( objectsValue )\r\n\r\n this.ssp.emissiveShow( filteredObjects, { \r\n color: colorValue,\r\n baseColor: baseColorValue,\r\n minOpacity: minOpacityValue,\r\n maxOpacity: maxOpacityValue,\r\n duration: durationValue,\r\n } )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.unEmissiveShow( filteredObjects )\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { EmissiveNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass UnEmissiveNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterUnEmissiveObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( this.ssp.viewport.scener.selectedObjects.emissive.has( obj ) ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objects = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objects ) {\r\n\r\n const objectsValue = this.getValue( objects, model )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterUnEmissiveObject( objectsValue )\r\n\r\n this.ssp.unEmissiveShow( filteredObjects )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.emissiveShow( filteredObjects ) // @todo 参数\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { UnEmissiveNode, }","import { Object3D, } from 'three'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { getMeshByUserDataUuid, parseValue, } from '../utils'\r\n\r\nconst meshCacheSymbol = Symbol( 'meshCache' )\r\n\r\nclass MeshNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const { viewport: { scene, }, } = this.ssp\r\n\r\n const model = await global.getTarget?.( this ) || scene\r\n\r\n // 检查缓存\r\n if ( !global[ meshCacheSymbol ] ) {\r\n\r\n global[ meshCacheSymbol ] = {}\r\n \r\n }\r\n\r\n const meshProp = this.findProp( 'mesh', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( meshProp && outProp ) {\r\n\r\n let meshObject: Object3D | null = null\r\n const meshValue = parseValue<string>( meshProp.value )\r\n const outValue = parseValue( outProp.value )\r\n\r\n const cachedMesh = global[ meshCacheSymbol ][ meshValue ]\r\n\r\n if ( cachedMesh ) {\r\n\r\n meshObject = cachedMesh\r\n return\r\n \r\n }\r\n const mesh = getMeshByUserDataUuid( model, meshValue )\r\n\r\n if ( mesh ) {\r\n\r\n meshObject = mesh \r\n global[ meshCacheSymbol ][ meshValue ] = mesh\r\n \r\n }\r\n \r\n \r\n this.writeContext( outValue, meshObject )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { MeshNode, }\r\n\r\n","import { Object3D, } from 'three'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { getMeshByUserDataUuid, parseValue, } from '../utils'\r\n\r\nconst meshesCacheSymbol = Symbol( 'meshesCache' )\r\n\r\nclass MeshesNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const { viewport: { scene, }, } = this.ssp\r\n\r\n const model = await global.getTarget?.( this ) || scene\r\n\r\n // 检查缓存\r\n if ( !global[ meshesCacheSymbol ] ) {\r\n\r\n global[ meshesCacheSymbol ] = {}\r\n \r\n }\r\n\r\n const meshesProp = this.findProp( 'meshes', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( meshesProp && outProp ) {\r\n\r\n const meshesObject: Object3D[] = []\r\n const meshesValue = parseValue<string[]>( meshesProp.value )\r\n const outValue = parseValue( outProp.value )\r\n\r\n meshesValue.forEach( ( uuid ) => {\r\n\r\n const cachedMesh = global[ meshesCacheSymbol ][ uuid ]\r\n\r\n if ( cachedMesh ) {\r\n\r\n meshesObject.push( cachedMesh )\r\n return\r\n \r\n }\r\n const mesh = getMeshByUserDataUuid( model, uuid )\r\n\r\n if ( mesh ) {\r\n\r\n meshesObject.push( mesh )\r\n global[ meshesCacheSymbol ][ uuid ] = mesh\r\n \r\n }\r\n \r\n } )\r\n \r\n this.writeContext( outValue, meshesObject )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { MeshesNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass ModelNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const modelProp = this.findProp( 'model', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( modelProp && outProp ) {\r\n\r\n const modelValue = parseValue<string>( modelProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, getObjectById( this.ssp, modelValue ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { ModelNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectByIds, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass ModelsNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const modelsProp = this.findProp( 'models', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( modelsProp && outProp ) {\r\n\r\n const modelValue = parseValue<string[]>( modelsProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, getObjectByIds( this.ssp, modelValue ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { ModelsNode, }\r\n\r\n","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\nclass DelayNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec () {\r\n\r\n const delayProp = this.findProp( 'delay', NodePropTypeEnum.LOCAL )\r\n\r\n if ( delayProp ) {\r\n\r\n const delayValue = parseValue<number>( delayProp.value )\r\n\r\n await SoonSpace.utils.sleep( delayValue )\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { DelayNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\nclass ConditionNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n execFn ( fnStr: string ) {\r\n \r\n const fn = new Function( 'sourceData', fnStr )\r\n\r\n return fn( this.ctx )\r\n\r\n }\r\n\r\n async exec () {\r\n\r\n const conditionProp = this.findProp( 'conditaion_node', NodePropTypeEnum.LOCAL )\r\n\r\n if ( conditionProp ) {\r\n\r\n const conditionValue = parseValue<{\r\n\r\n id: number;\r\n name: string;\r\n value: string;\r\n\r\n }[]>( conditionProp.value )\r\n\r\n const edges = this.parser.edges.filter( edge => edge.source === this.id )\r\n\r\n conditionValue.forEach( item => {\r\n\r\n try {\r\n\r\n const res = this.execFn( item.value )\r\n\r\n if ( res !== true ) throw new Error()\r\n\r\n } catch ( e ) {\r\n\r\n const edge = edges.find( edge => edge.sourceHandle == String( item.id ) )\r\n \r\n if ( !edge ) return \r\n \r\n const targetNode = this.postNodes.find( node => node.id === edge.target )\r\n \r\n targetNode?.reject()\r\n\r\n }\r\n \r\n\r\n } )\r\n\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ConditionNode, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { Object3D, } from 'three'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass ShowNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterShowObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( obj.visible === false ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterShowObject( objectsValue )\r\n\r\n const handler = ( visible: boolean ) => {\r\n\r\n objectHandle( filteredObjects, obj => {\r\n\r\n obj.visible = visible\r\n \r\n } )\r\n \r\n this.ssp.render()\r\n \r\n }\r\n\r\n handler( true )\r\n\r\n this.cleanSets.add( () => handler( false ) )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { ShowNode, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { Object3D, } from 'three'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass HideNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n filterHideObject ( objectsValue: Object3D[] | Object3D ) {\r\n\r\n const objects: Object3D[] = []\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n if ( obj.visible === true ) {\r\n\r\n objects.push( obj )\r\n \r\n }\r\n \r\n } )\r\n\r\n return objects\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model )\r\n\r\n if ( objectsValue ) {\r\n\r\n const filteredObjects = this.filterHideObject( objectsValue )\r\n\r\n const handler = ( visible: boolean ) => {\r\n\r\n objectHandle( filteredObjects, obj => {\r\n\r\n obj.visible = visible\r\n \r\n } )\r\n \r\n this.ssp.render()\r\n \r\n }\r\n\r\n handler( false )\r\n\r\n this.cleanSets.add( () => handler( true ) )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { HideNode, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { Object3D, Vector3, } from 'three'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass TranslateNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const axisProp = this.findProp( 'axis', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const translateProp = this.findProp( 'translate', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && axisProp && translateProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model ) as Object3D[]\r\n const axisValue = this.getValue( axisProp )\r\n const translateValue = this.getValue( translateProp )\r\n\r\n if ( objectsValue ) {\r\n\r\n const positions: Vector3[] = []\r\n const duration = 800\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n positions.push( obj.position.clone() )\r\n\r\n } )\r\n\r\n const onUpdate = ( position: Vector3, current: Vector3 ) => {\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n position.setX( current.x )\r\n break\r\n\r\n case 'y':\r\n position.setY( current.y )\r\n break\r\n\r\n case 'z':\r\n position.setZ( current.z )\r\n break\r\n \r\n default:\r\n break\r\n\r\n }\r\n\r\n }\r\n\r\n const handler = async () => {\r\n \r\n const res = objectHandle( objectsValue, async obj => {\r\n\r\n const position = obj.position.clone()\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n await this.ssp.animation( position, new Vector3().set( position.x + translateValue, position.y, position.z ), { duration, }, ( e ) => onUpdate( obj.position, e ) )\r\n break\r\n \r\n case 'y':\r\n await this.ssp.animation( position, new Vector3().set( position.x, position.y + translateValue, position.z ), { duration, }, ( e ) => onUpdate( obj.position, e ) )\r\n break\r\n \r\n case 'z':\r\n await this.ssp.animation( position, new Vector3().set( position.x, position.y, position.z + translateValue ), { duration, }, ( e ) => onUpdate( obj.position, e ) )\r\n break\r\n\r\n }\r\n\r\n } )\r\n\r\n if ( res instanceof Array ) {\r\n\r\n await Promise.all( res )\r\n\r\n } else {\r\n\r\n await res\r\n\r\n }\r\n\r\n this.ssp.render()\r\n\r\n }\r\n\r\n await handler()\r\n\r\n this.cleanSets.add( () => {\r\n\r\n let i = 0\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n obj.position.copy( positions[ i++ ] )\r\n\r\n } )\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { TranslateNode, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { Object3D, Vector3, } from 'three'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass ScaleNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const axisProp = this.findProp( 'axis', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const scaleProp = this.findProp( 'scale', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && axisProp && scaleProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model ) as Object3D[]\r\n const axisValue = this.getValue( axisProp )\r\n const scaleValue = this.getValue( scaleProp )\r\n\r\n if ( objectsValue ) {\r\n\r\n const scales: Vector3[] = []\r\n const duration = 800\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n scales.push( obj.scale.clone() )\r\n\r\n } )\r\n\r\n const onUpdate = ( scale: Vector3, current: Vector3 ) => {\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n scale.setX( current.x )\r\n break\r\n\r\n case 'y':\r\n scale.setY( current.y )\r\n break\r\n\r\n case 'z':\r\n scale.setZ( current.z )\r\n break\r\n \r\n default:\r\n break\r\n\r\n }\r\n\r\n }\r\n\r\n const handler = async () => {\r\n \r\n const res = objectHandle( objectsValue, async obj => {\r\n\r\n const scal = obj.scale.clone()\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n await this.ssp.animation( scal, new Vector3().set( scal.x * scaleValue, scal.y, scal.z ), { duration, }, ( e ) => onUpdate( obj.scale, e ) )\r\n break\r\n \r\n case 'y':\r\n await this.ssp.animation( scal, new Vector3().set( scal.x, scal.y * scaleValue, scal.z ), { duration, }, ( e ) => onUpdate( obj.scale, e ) )\r\n break\r\n \r\n case 'z':\r\n await this.ssp.animation( scal, new Vector3().set( scal.x, scal.y, scal.z * scaleValue ), { duration, }, ( e ) => onUpdate( obj.scale, e ) )\r\n break\r\n\r\n }\r\n\r\n } )\r\n\r\n if ( res instanceof Array ) {\r\n\r\n await Promise.all( res )\r\n\r\n } else {\r\n\r\n await res\r\n\r\n }\r\n\r\n this.ssp.render()\r\n\r\n }\r\n\r\n await handler()\r\n\r\n this.cleanSets.add( () => {\r\n\r\n let i = 0\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n obj.scale.copy( scales[ i++ ] )\r\n\r\n } )\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { ScaleNode, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { Euler, Object3D, Object3DEventMap, } from 'three'\r\n\r\nconst { objectHandle, } = SoonSpace.utils\r\n\r\nclass RotateNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectsProp = this.findProp( 'objects', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const axisProp = this.findProp( 'axis', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const rotationProp = this.findProp( 'rotation', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n const model = await global.getTarget?.( this )\r\n\r\n if ( objectsProp && axisProp && rotationProp ) {\r\n\r\n const objectsValue = this.getValue( objectsProp, model ) as Object3D[]\r\n const axisValue = this.getValue( axisProp )\r\n const rotationValue = this.getValue( rotationProp )\r\n\r\n if ( objectsValue ) {\r\n \r\n const rotations: Euler[] = []\r\n const duration = 800\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n rotations.push( obj.rotation.clone() )\r\n\r\n } )\r\n \r\n const onUpdate = ( rotation: Euler, current: Euler ) => {\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n rotation.x = current.x\r\n break\r\n\r\n case 'y':\r\n rotation.y = current.y\r\n break\r\n\r\n case 'z':\r\n rotation.z = current.z\r\n break\r\n \r\n default:\r\n break\r\n\r\n }\r\n\r\n }\r\n\r\n const handler = async () => {\r\n \r\n const rad = rotationValue / 180 * Math.PI\r\n \r\n const res = objectHandle( objectsValue, async obj => {\r\n\r\n const rotation = obj.rotation.clone()\r\n\r\n switch ( axisValue ) {\r\n\r\n case 'x':\r\n await this.ssp.animation( rotation, new Euler().set( rotation.x + rad, rotation.y, rotation.z ), { duration, }, ( e ) => onUpdate( obj.rotation, e ) )\r\n break\r\n \r\n case 'y':\r\n await this.ssp.animation( rotation, new Euler().set( rotation.x, rotation.y + rad, rotation.z ), { duration, }, ( e ) => onUpdate( obj.rotation, e ) )\r\n break\r\n \r\n case 'z':\r\n await this.ssp.animation( rotation, new Euler().set( rotation.x, rotation.y, rotation.z + rad ), { duration, }, ( e ) => onUpdate( obj.rotation, e ) )\r\n break\r\n\r\n }\r\n\r\n } )\r\n\r\n if ( res instanceof Array ) {\r\n\r\n await Promise.all( res )\r\n\r\n } else {\r\n\r\n await res\r\n\r\n }\r\n\r\n this.ssp.render()\r\n\r\n }\r\n\r\n await handler()\r\n\r\n this.cleanSets.add( () => {\r\n\r\n let i = 0\r\n\r\n objectHandle( objectsValue, obj => {\r\n\r\n obj.rotation.copy( rotations[ i++ ] )\r\n\r\n } )\r\n\r\n } )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { RotateNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\n\r\nclass FlyToNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n \r\n async exec () {\r\n\r\n const viewpointProp = this.findProp( 'viewpoint', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n \r\n if ( viewpointProp ) {\r\n\r\n const viewpointValue = parseValue( this.getValue( viewpointProp ) )\r\n\r\n if ( viewpointValue ) {\r\n\r\n // const oldViewpoint = this.ssp.getCameraViewpoint()\r\n\r\n this.ssp.setCameraViewpoint( viewpointValue, true )\r\n\r\n // this.cleanSets.add( () => this.ssp.setCameraViewpoint( oldViewpoint ) )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { FlyToNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass SpaceNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const spaceProp = this.findProp( 'space', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( spaceProp && outProp ) {\r\n\r\n const spaceValue = parseValue<string>( spaceProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, getObjectById( this.ssp, spaceValue ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { SpaceNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass SpacesNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const spaceProp = this.findProp( 'spaces', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( spaceProp && outProp ) {\r\n\r\n const spacesValue = parseValue<string[]>( spaceProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n const spaces = spacesValue.map( item => getObjectById( this.ssp, item ) )\r\n\r\n this.writeContext( outValue, spaces )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { SpacesNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass POINode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const POIProp = this.findProp( 'poi', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( POIProp && outProp ) {\r\n\r\n const POIValue = parseValue<string>( POIProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, getObjectById( this.ssp, POIValue ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { POINode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass POIsNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const POIsProp = this.findProp( 'pois', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( POIsProp && outProp ) {\r\n\r\n const POIsValue = parseValue<string[]>( POIsProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n const POIs = POIsValue.map( item => getObjectById( this.ssp, item ) )\r\n\r\n this.writeContext( outValue, POIs )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { POIsNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass DataExtractionNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const modelProp = this.findProp( 'value', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( modelProp && outProp ) {\r\n\r\n const modelValue = parseValue<string>( modelProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, modelValue )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { DataExtractionNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { Node, } from './Node'\r\nimport { parseValue, } from '../utils'\r\n\r\nclass DataFilterNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec () {\r\n\r\n const filterProp = this.findProp( 'model', NodePropTypeEnum.LOCAL )\r\n\r\n if ( filterProp ) {\r\n \r\n const conditionValue = parseValue<string>( filterProp.value )\r\n\r\n const fn = new Function( 'sourceData', conditionValue )\r\n\r\n for ( const key in this.ctx ) {\r\n \r\n const res = fn( this.ctx[ key ] )\r\n\r\n if ( res === undefined || res === null || res === false ) {\r\n\r\n delete this.ctx[ key ]\r\n\r\n }\r\n\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { DataFilterNode, }","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass PathNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const pathProp = this.findProp( 'path', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( pathProp && outProp ) {\r\n\r\n const pathValue = parseValue<string>( pathProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n this.writeContext( outValue, getObjectById( this.ssp, pathValue ) )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { PathNode, }\r\n\r\n","import { FlowParser, } from '../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../types'\r\nimport { getObjectById, parseValue, } from '../utils'\r\nimport { Node, } from './Node'\r\n\r\nclass PathsNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const pathsProp = this.findProp( 'paths', NodePropTypeEnum.LOCAL )\r\n const outProp = this.findProp( 'out', NodePropTypeEnum.WRITE_CTX )\r\n\r\n if ( pathsProp && outProp ) {\r\n\r\n const pathsValue = parseValue<string[]>( pathsProp.value )\r\n const outValue = parseValue<string>( outProp.value )\r\n\r\n const paths = pathsValue.map( item => getObjectById( this.ssp, item ) )\r\n\r\n this.writeContext( outValue, paths )\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n\r\nexport { PathsNode, }\r\n\r\n","import { Model, } from 'soonspacejs'\r\nimport { FlowParser, } from '../../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../../types'\r\nimport { parseValue, } from '../../utils'\r\nimport { Node, } from '../Node'\r\n\r\nclass ClipAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n let target = await global.getTarget?.( this )\r\n\r\n if ( !target ) {\r\n\r\n const objectProp = this.findProp( 'model', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n if ( objectProp ) {\r\n\r\n target = this.getValue( objectProp )\r\n \r\n }\r\n \r\n }\r\n\r\n const animationProp = this.findProp( 'animation', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n if ( target && animationProp ) {\r\n\r\n let animationValue: number\r\n\r\n if ( animationProp.type === NodePropTypeEnum.READ_CTX ) {\r\n \r\n const variableName = this.parser.getVariableNameById( parseValue<string>( animationProp.value ) )\r\n \r\n animationValue = this.readContext( variableName ) as number\r\n \r\n } else {\r\n\r\n animationValue = parseValue<number>( animationProp.value )\r\n\r\n }\r\n\r\n const foundClip = target.animations[ animationValue ]\r\n\r\n if ( foundClip ) {\r\n\r\n this.ssp.playModelAnimation( target, foundClip )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n this.ssp.stopModelAnimation( target as Model, foundClip )\r\n \r\n } )\r\n\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ClipAnimationNode, }","import { Model, } from 'soonspacejs'\r\nimport { FlowParser, } from '../../FlowParser'\r\nimport { NodeGlobalType, NodePropTypeEnum, NodeType, } from '../../types'\r\nimport { parseValue, } from '../../utils'\r\nimport { Node, } from '../Node'\r\n\r\nclass UnClipAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n let target = await global.getTarget?.( this )\r\n\r\n if ( !target ) {\r\n\r\n const objectProp = this.findProp( 'model', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n if ( objectProp ) {\r\n\r\n target = this.getValue( objectProp )\r\n \r\n }\r\n \r\n }\r\n\r\n const animationProp = this.findProp( 'animation', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n\r\n if ( target && animationProp ) {\r\n\r\n let animationValue: number\r\n\r\n if ( animationProp.type === NodePropTypeEnum.READ_CTX ) {\r\n \r\n const variableName = this.parser.getVariableNameById( parseValue<string>( animationProp.value ) )\r\n \r\n animationValue = this.readContext( variableName ) as number\r\n \r\n } else {\r\n\r\n animationValue = parseValue<number>( animationProp.value )\r\n\r\n }\r\n\r\n const foundClip = target.animations[ animationValue ]\r\n\r\n if ( foundClip ) this.ssp.stopModelAnimation( target, foundClip )\r\n \r\n \r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n\r\nexport { UnClipAnimationNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { AnimationPlayer, } from 'umanager-animation-parser'\r\nimport { IAnimation, } from '../../../types'\r\n\r\nconst tweenCache = new Map<string, Set<AnimationPlayer>>()\r\n\r\nexport async function playTweenAnimation ( ssp: SoonSpace, object: Object3D, animation: IAnimation ) {\r\n\r\n const { id, keyframes, } = animation\r\n\r\n const player = new AnimationPlayer( ssp, object )\r\n\r\n if ( !tweenCache.has( id ) ) {\r\n\r\n tweenCache.set( id, new Set() )\r\n \r\n }\r\n\r\n tweenCache.get( id )?.add( player )\r\n\r\n await player.play( keyframes )\r\n\r\n}\r\n\r\nexport function stopTweenAnimation ( animationId: string ) {\r\n\r\n tweenCache.get( animationId )?.forEach( player => player.stop() )\r\n tweenCache.get( animationId )?.clear()\r\n\r\n}","import { Object3D, } from 'three'\r\nimport { FlowParser, } from '../../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, NodeGlobalType, } from '../../types'\r\nimport { parseValue, waitFor, } from '../../utils'\r\nimport { Node, } from '../Node'\r\nimport { playTweenAnimation, stopTweenAnimation, } from './utils'\r\n\r\nclass TweenAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectProp = this.findProp( 'model', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const animationProp = this.findProp( 'animation', NodePropTypeEnum.LOCAL )\r\n const waitProp = this.findProp( 'wait', NodePropTypeEnum.LOCAL )\r\n\r\n if ( objectProp && animationProp && waitProp ) {\r\n\r\n const objectValue = this.getValue( objectProp )\r\n const animationValue = parseValue<string>( animationProp.value )\r\n const waitValue = parseValue<boolean>( waitProp.value )\r\n \r\n if ( objectValue ) {\r\n\r\n const animations = await global.getAnimations?.( this, objectValue, animationValue )\r\n\r\n if ( animations ) {\r\n\r\n const foundComponentAnimation = animations.find( c => c.id === animationValue )\r\n\r\n if ( foundComponentAnimation ) {\r\n \r\n await waitFor( async () => {\r\n\r\n const beforeMatrix = objectValue.matrix.clone()\r\n \r\n await playTweenAnimation( this.ssp, objectValue, foundComponentAnimation )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n stopTweenAnimation( foundComponentAnimation.id )\r\n\r\n if ( objectValue ) beforeMatrix.decompose( objectValue.position, objectValue.quaternion, objectValue.scale )\r\n \r\n } )\r\n \r\n }, waitValue )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n } \r\n \r\n }\r\n\r\n}\r\n\r\nexport { TweenAnimationNode, }","import { FlowParser, } from '../../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../../types'\r\nimport { parseValue, } from '../../utils'\r\nimport { Node, } from '../Node'\r\nimport { stopTweenAnimation, } from './utils'\r\n\r\nclass UnTweenAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const animationProp = this.findProp( 'animation', NodePropTypeEnum.LOCAL )\r\n\r\n if ( animationProp ) {\r\n \r\n const animationValue = parseValue<string>( animationProp.value )\r\n\r\n stopTweenAnimation( animationValue )\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { UnTweenAnimationNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { AnimationPlayer, } from 'umanager-animation-parser'\r\nimport { IComponentAnimation, } from '../../../types'\r\n\r\nconst tweenCache = new Map<string, Set<AnimationPlayer>>()\r\n\r\nexport async function playComponentTweenAnimation ( ssp: SoonSpace, object: Object3D, componentAnimation: IComponentAnimation ) {\r\n\r\n const { id, keyframes, } = componentAnimation\r\n\r\n const player = new AnimationPlayer( ssp, object )\r\n\r\n if ( !tweenCache.has( id ) ) {\r\n\r\n tweenCache.set( id, new Set() )\r\n \r\n }\r\n\r\n tweenCache.get( id )?.add( player )\r\n\r\n await player.play( keyframes )\r\n\r\n}\r\n\r\nexport function stopComponentTweenAnimation ( animationId: string ) {\r\n\r\n tweenCache.get( animationId )?.forEach( player => player.stop() )\r\n tweenCache.get( animationId )?.clear()\r\n\r\n}","import { Object3D, } from 'three'\r\nimport { FlowParser, } from '../../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, NodeGlobalType, } from '../../types'\r\nimport { getMeshByUserDataUuid, parseValue, waitFor, } from '../../utils'\r\nimport { Node, } from '../Node'\r\nimport { playComponentTweenAnimation, stopComponentTweenAnimation, } from './utils'\r\n\r\nclass ComponentTweenAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( global: NodeGlobalType ) {\r\n\r\n const objectProp = this.findProp( 'mesh', [ NodePropTypeEnum.READ_CTX, NodePropTypeEnum.LOCAL ] )\r\n const animationProp = this.findProp( 'animation', NodePropTypeEnum.LOCAL )\r\n const waitProp = this.findProp( 'wait', NodePropTypeEnum.LOCAL )\r\n\r\n if ( objectProp && animationProp && waitProp ) {\r\n\r\n const objectValue = this.getValue( objectProp )\r\n const animationValue = parseValue<string>( animationProp.value )\r\n const waitValue = parseValue<boolean>( waitProp.value )\r\n\r\n if ( objectValue ) {\r\n\r\n const componentAnimations = await global.getComponentAnimations?.( this, objectValue, animationValue )\r\n\r\n if ( componentAnimations ) {\r\n\r\n const foundComponentAnimation = componentAnimations.find( c => c.id === animationValue )\r\n\r\n if ( foundComponentAnimation ) {\r\n \r\n let animationTarget: Object3D | null = null\r\n \r\n // valueType 可能是 mesh | model\r\n // mesh 直接从上下文中获取,model 从上下文中获取后,再获取 mesh 对象\r\n if ( objectProp.valueType === 'Mesh' ) {\r\n \r\n animationTarget = objectValue\r\n \r\n } else if ( objectProp.valueType === 'Model' ) {\r\n \r\n animationTarget = getMeshByUserDataUuid( objectValue, foundComponentAnimation.refId )\r\n \r\n }\r\n \r\n if ( animationTarget ) {\r\n \r\n await waitFor( async () => {\r\n \r\n if ( animationTarget ) {\r\n\r\n const beforeMatrix = animationTarget.matrix.clone()\r\n\r\n await playComponentTweenAnimation( this.ssp, animationTarget, foundComponentAnimation )\r\n\r\n this.cleanSets.add( () => {\r\n\r\n stopComponentTweenAnimation( foundComponentAnimation.id )\r\n \r\n if ( animationTarget ) beforeMatrix.decompose( animationTarget.position, animationTarget.quaternion, animationTarget.scale )\r\n \r\n } )\r\n\r\n }\r\n \r\n }, waitValue )\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ComponentTweenAnimationNode, }","import { FlowParser, } from '../../FlowParser'\r\nimport { NodePropTypeEnum, NodeType, } from '../../types'\r\nimport { parseValue, } from '../../utils'\r\nimport { Node, } from '../Node'\r\nimport { stopComponentTweenAnimation, } from './utils'\r\n\r\nclass UnComponentTweenAnimationNode extends Node {\r\n\r\n constructor ( parser: FlowParser, node: NodeType ) {\r\n\r\n super( parser, node )\r\n \r\n }\r\n\r\n async exec ( ) {\r\n\r\n const animationProp = this.findProp( 'animation', NodePropTypeEnum.LOCAL )\r\n\r\n if ( animationProp ) {\r\n\r\n // id\r\n const animationValue = parseValue<string>( animationProp.value )\r\n\r\n stopComponentTweenAnimation( animationValue )\r\n \r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n\r\nexport { UnComponentTweenAnimationNode, }","import { Object3D, } from 'three'\r\nimport SoonSpace, { BaseObject3D, } from 'soonspacejs'\r\nimport { FlowParser, } from './FlowParser'\r\nimport {\r\n ColorNode, \r\n HighlightNode, OpacityNode, EmissiveNode,\r\n StartNode, Node, NumberNode, DelayNode, \r\n UnHighlightNode, UnEmissiveNode, UnOpacityNode,\r\n MeshNode, MeshesNode, ModelNode, ModelsNode, SpaceNode, SpacesNode, POIsNode, POINode, PathNode, PathsNode,\r\n ShowNode, HideNode,\r\n ClipAnimationNode, UnClipAnimationNode,\r\n TweenAnimationNode, UnTweenAnimationNode, ComponentTweenAnimationNode, UnComponentTweenAnimationNode, \r\n TranslateNode, ScaleNode, RotateNode, FlyToNode,\r\n ConditionNode,\r\n DataExtractionNode, DataFilterNode,\r\n} from './nodes'\r\nimport { NodeType, NodeTypeEnum, } from './types'\r\n\r\nexport function parseNodeByType ( parser: FlowParser, node: NodeType ) {\r\n\r\n switch ( node.type ) {\r\n\r\n case NodeTypeEnum.START:\r\n return new StartNode( parser, node )\r\n case NodeTypeEnum.COLOR:\r\n return new ColorNode( parser, node )\r\n case NodeTypeEnum.NUMBER:\r\n return new NumberNode( parser, node )\r\n case NodeTypeEnum.HIGHLIGHT:\r\n return new HighlightNode( parser, node )\r\n case NodeTypeEnum.UN_HIGHLIGHT:\r\n return new UnHighlightNode( parser, node )\r\n case NodeTypeEnum.OPACITY:\r\n return new OpacityNode( parser, node )\r\n case NodeTypeEnum.UN_OPACITY:\r\n return new UnOpacityNode( parser, node )\r\n case NodeTypeEnum.EMISSIVE:\r\n return new EmissiveNode( parser, node )\r\n case NodeTypeEnum.UN_EMISSIVE:\r\n return new UnEmissiveNode( parser, node )\r\n // 获取对象\r\n case NodeTypeEnum.MESH: \r\n return new MeshNode( parser, node )\r\n case NodeTypeEnum.MESHES:\r\n return new MeshesNode( parser, node )\r\n case NodeTypeEnum.MODEL:\r\n return new ModelNode( parser, node )\r\n case NodeTypeEnum.MODELS:\r\n return new ModelsNode( parser, node )\r\n case NodeTypeEnum.SPACE:\r\n return new SpaceNode( parser, node )\r\n case NodeTypeEnum.SPACES:\r\n return new SpacesNode( parser, node )\r\n case NodeTypeEnum.POIS:\r\n return new POIsNode( parser, node )\r\n case NodeTypeEnum.POI:\r\n return new POINode( parser, node )\r\n case NodeTypeEnum.PATH:\r\n return new PathNode( parser, node )\r\n case NodeTypeEnum.PATHS:\r\n return new PathsNode( parser, node )\r\n // 逻辑节点\r\n case NodeTypeEnum.DELAY:\r\n return new DelayNode( parser, node )\r\n case NodeTypeEnum.CONDITION_NODE:\r\n return new ConditionNode( parser, node )\r\n // 显示隐藏\r\n case NodeTypeEnum.SHOW:\r\n return new ShowNode( parser, node )\r\n case NodeTypeEnum.HIDE:\r\n return new HideNode( parser, node )\r\n // 动画相关\r\n case NodeTypeEnum.CLIP_ANIMATION:\r\n return new ClipAnimationNode( parser, node )\r\n case NodeTypeEnum.UN_CLIP_ANIMATION:\r\n return new UnClipAnimationNode( parser, node )\r\n case NodeTypeEnum.TWEEN_ANIMATION:\r\n return new TweenAnimationNode( parser, node )\r\n case NodeTypeEnum.UN_TWEEN_ANIMATION:\r\n return new UnTweenAnimationNode( parser, node )\r\n case NodeTypeEnum.COMPONENT_TWEEN_ANIMATION:\r\n return new ComponentTweenAnimationNode( parser, node )\r\n case NodeTypeEnum.UN_COMPONENT_TWEEN_ANIMATION:\r\n return new UnComponentTweenAnimationNode( parser, node )\r\n // 移动\r\n case NodeTypeEnum.TRANSLATE:\r\n return new TranslateNode( parser, node )\r\n case NodeTypeEnum.ROTATE:\r\n return new RotateNode( parser, node )\r\n case NodeTypeEnum.SCALE:\r\n return new ScaleNode( parser, node )\r\n case NodeTypeEnum.FLY_TO:\r\n return new FlyToNode( parser, node )\r\n // 数据处理节点\r\n case NodeTypeEnum.DATA_EXTRACTION:\r\n return new DataExtractionNode( parser, node )\r\n case NodeTypeEnum.DATA_FILTER:\r\n return new DataFilterNode( parser, node )\r\n default:\r\n return new Node( parser, node )\r\n \r\n }\r\n\r\n}\r\n\r\nexport function parseValue<T = any> ( value: string ) {\r\n\r\n return JSON.parse( value ) as T\r\n\r\n}\r\n\r\nexport async function waitFor ( fn: () => Promise<void>, wait: boolean ) {\r\n \r\n if ( wait ) {\r\n\r\n await fn()\r\n \r\n } else {\r\n \r\n fn()\r\n \r\n }\r\n\r\n}\r\n\r\nexport function getObjectByIds ( ssp: SoonSpace, ids: string[] ): BaseObject3D[] {\r\n \r\n return ids.map( id => ssp.getObjectById( id ) ).filter( Boolean ) as BaseObject3D[]\r\n\r\n}\r\n\r\nexport function getObjectById ( ssp: SoonSpace, id: string, object?: Object3D ): Object3D | null {\r\n\r\n const obj = ssp.getObjectById( id )\r\n \r\n if ( obj ) {\r\n \r\n return obj\r\n \r\n } else {\r\n\r\n const { viewport: { scene, }, } = ssp\r\n\r\n return getMeshByUserDataUuid( object ?? scene, id )\r\n\r\n }\r\n\r\n}\r\n\r\nexport function getMeshByUserDataUuid ( object: Object3D, uuid: string ): Object3D | null {\r\n\r\n // 组件编辑内写入 key\r\n if ( object.userData.key === uuid || object.uuid === uuid ) return object\r\n\r\n for ( let i = 0, l = object.children.length; i < l; i++ ) {\r\n\r\n const child = object.children[ i ]\r\n const _object = getMeshByUserDataUuid( child, uuid )\r\n\r\n if ( _object !== null ) {\r\n\r\n return _object\r\n\r\n }\r\n\r\n }\r\n\r\n return null\r\n\r\n}\r\n\r\nexport function filterNodes ( prevNode: Node, result: Node[] ) {\r\n\r\n prevNode.postNodes.forEach( node => {\r\n\r\n result.push( node )\r\n filterNodes( node, result )\r\n\r\n } )\r\n\r\n return result\r\n\r\n}\r\n","import { EventDispatcher, } from 'three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { Edge, } from './edges'\r\nimport { Node, } from './nodes'\r\nimport { FlowParserEventMap, FlowType, NodeGlobalType, } from './types'\r\nimport { parseNodeByType, parseValue, } from './utils'\r\n\r\nconst { utils: { sleep, }, } = SoonSpace\r\n\r\nclass FlowParser extends EventDispatcher<FlowParserEventMap> {\r\n\r\n ssp: SoonSpace\r\n flow: FlowType\r\n\r\n nodes: Node[]\r\n nodesMap: Map<Node['id'], Node>\r\n edges: Edge[]\r\n edgesMap: Map<Edge['id'], Edge>\r\n\r\n onNodeBefore: Node['onBefore'] = null\r\n onNodeAfter: Node['onAfter'] = null\r\n\r\n constructor ( ssp: SoonSpace, flow: FlowType ) {\r\n\r\n super()\r\n\r\n this.ssp = ssp\r\n this.flow = flow\r\n\r\n this.nodes = []\r\n this.nodesMap = new Map()\r\n this.edges = []\r\n this.edgesMap = new Map()\r\n\r\n }\r\n\r\n addNode ( node: Node ) {\r\n\r\n this.nodes.push( node )\r\n this.nodesMap.set( node.id, node )\r\n \r\n }\r\n\r\n addEdge ( edge: Edge ) {\r\n\r\n this.edges.push( edge )\r\n this.edgesMap.set( edge.id, edge )\r\n \r\n }\r\n\r\n getNodeById ( id: string ) {\r\n\r\n return this.nodesMap.get( id )\r\n \r\n }\r\n\r\n getEdgeById ( id: string ) {\r\n\r\n return this.edgesMap.get( id )\r\n \r\n }\r\n\r\n clear () {\r\n\r\n this.nodes.length = 0\r\n this.nodesMap.clear()\r\n this.edges.length = 0\r\n this.edgesMap.clear()\r\n \r\n }\r\n\r\n /**\r\n * 解析流程\r\n */\r\n parse () {\r\n\r\n this.clear()\r\n\r\n const { nodes, edges, } = this.flow\r\n\r\n nodes.forEach( node => {\r\n\r\n // 创建 Node 实例\r\n const nodeInstance = parseNodeByType( this, node )\r\n\r\n this.addNode( nodeInstance )\r\n \r\n } )\r\n\r\n edges.forEach( edge => {\r\n\r\n // 创建 Edge 实例\r\n const edgeInstance = new Edge( edge )\r\n\r\n this.addEdge( edgeInstance )\r\n\r\n // 记录 Node 前后节点\r\n const sourceNode = this.getNodeById( edge.source )\r\n const targetNode = this.getNodeById( edge.target )\r\n\r\n if ( sourceNode && targetNode ) {\r\n\r\n sourceNode.postNodes.push( targetNode )\r\n targetNode.prevNodes.push( sourceNode )\r\n \r\n }\r\n \r\n } )\r\n \r\n }\r\n\r\n /**\r\n * 执行流程\r\n * @param startNode \r\n * @param ctx \r\n */\r\n async run ( global: NodeGlobalType = {} ) {\r\n\r\n const nodes = this.nodes.filter( ( node ) => node.prevNodes.length || node.postNodes.length )\r\n const tasks = nodes.map( ( node ) => node.run( global ) )\r\n\r\n await Promise.allSettled( tasks )\r\n \r\n }\r\n\r\n /**\r\n * 调试流程\r\n */\r\n async debug ( global: NodeGlobalType = {}, time = 1500 ) {\r\n\r\n const onNodeAfter = this.onNodeAfter\r\n\r\n this.onNodeAfter = async ( node: Node ) => {\r\n\r\n await sleep( time )\r\n onNodeAfter?.( node )\r\n\r\n }\r\n \r\n await this.run( global )\r\n \r\n }\r\n\r\n /**\r\n * 停止流程\r\n */\r\n stop () {\r\n\r\n this.nodes.forEach( node => node.reject( new Error( 'Flow stopped' ) ) )\r\n \r\n }\r\n\r\n /**\r\n * 清理流程\r\n */\r\n cleanup () {\r\n\r\n this.nodes\r\n .sort( ( a, b ) => b.execOrder - a.execOrder )\r\n .forEach( ( node ) => node.cleanup() )\r\n \r\n }\r\n \r\n getVariableNameById ( id: string ) {\r\n\r\n const node = this.nodes.find( node => node.id === id )\r\n\r\n if ( node ) {\r\n\r\n const prop = node.props.find( prop => prop.name === 'out' )\r\n\r\n return prop ? parseValue( prop.value ) : null\r\n\r\n }\r\n\r\n return null\r\n\r\n }\r\n\r\n dispose () {\r\n\r\n this.stop()\r\n this.cleanup()\r\n \r\n }\r\n\r\n}\r\n\r\nexport { FlowParser, }","import SoonSpace from 'soonspacejs'\r\nimport { FlowParser, } from './FlowParser'\r\nimport { ComponentFlowType, } from './types'\r\n\r\nclass ComponentFlowParser extends FlowParser {\r\n\r\n flow: ComponentFlowType\r\n\r\n constructor ( ssp: SoonSpace, flow: ComponentFlowType ) {\r\n\r\n super( ssp, flow )\r\n\r\n this.flow = flow\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ComponentFlowParser, }","export const INNER_ID = '[soonspacejs]: '\r\n\r\nexport enum ObjecType {\r\n Group = 'Group',\r\n Light = 'Light',\r\n Model = 'Model',\r\n Poi = 'Poi',\r\n PoiNode = 'PoiNode',\r\n Canvas3D = 'Canvas3D',\r\n Topology = 'Topology',\r\n Helper = 'Helper',\r\n Decal = 'Decal',\r\n PluginObject = 'PluginObject',\r\n}\r\n\r\nexport enum ModelFormat {\r\n sbm = 'SBM',\r\n sbmx = 'SBMX',\r\n glb = 'GLB',\r\n gltf = 'GLTF',\r\n fbx = 'FBX',\r\n obj = 'OBJ',\r\n stl = 'STL',\r\n}","import { Vector3, Euler, Box3, Object3D, Quaternion, Scene, Vector2, Camera, MathUtils, } from 'three'\r\nimport { IVector3, AxisType, Rotation, } from '../Interface'\r\n\r\nfunction IVector3ToVector3 ( val: IVector3 | Vector3 ): Vector3 {\r\n\r\n if ( val instanceof Vector3 ) return val\r\n else return new Vector3( val.x, val.y, val.z )\r\n\r\n}\r\n\r\nfunction IVector3ToEuler ( val: IVector3 | Euler ): Euler {\r\n\r\n if ( val instanceof Euler ) return val\r\n else return new Euler( val.x, val.y, val.z )\r\n\r\n}\r\n\r\n/**\r\n * 获取 object box\r\n * @param object\r\n * @returns\r\n */\r\nfunction getBoundingBox ( object: Object3D, precise?: boolean ): Box3 {\r\n\r\n const box3 = new Box3()\r\n\r\n if ( object instanceof Scene ) {\r\n\r\n /**\r\n * @workaround 排除 TransformControls\r\n */\r\n object.children\r\n .filter( child => !( 'isTransformControls' in child ) )\r\n .reduce( ( box, curr ) => {\r\n\r\n return box.union( new Box3().setFromObject( curr, precise ) ) \r\n\r\n }, box3 )\r\n\r\n } else {\r\n\r\n box3.setFromObject( object, precise )\r\n \r\n }\r\n\r\n /**\r\n * 空 box 判断\r\n */\r\n if ( box3.isEmpty() ) {\r\n\r\n object.getWorldPosition( box3.min )\r\n\r\n box3.max.copy( box3.min )\r\n \r\n }\r\n\r\n return box3\r\n\r\n}\r\n\r\nfunction rotationAxisFix ( axis: AxisType, source: Euler, target: Euler ): Euler {\r\n\r\n const newTarget = target.clone()\r\n\r\n if ( Math.abs( source[ axis ] - target[ axis ] ) > Math.PI ) {\r\n\r\n if ( source[ axis ] > target[ axis ] ) {\r\n\r\n newTarget[ axis ] += Math.PI * 2\r\n \r\n } else {\r\n\r\n newTarget[ axis ] -= Math.PI * 2\r\n \r\n }\r\n \r\n }\r\n\r\n return newTarget\r\n\r\n}\r\n\r\nfunction rotationAFix ( source: Euler, target: Euler ): Euler {\r\n\r\n const xFixedRotation = rotationAxisFix( 'x', source, target )\r\n const yFixedRotation = rotationAxisFix( 'y', source, target )\r\n const zFixedRotation = rotationAxisFix( 'z', source, target )\r\n\r\n return new Euler(\r\n xFixedRotation.x,\r\n yFixedRotation.y,\r\n zFixedRotation.z,\r\n target.order\r\n )\r\n\r\n}\r\n\r\nfunction deg2Euler ( deg: number ): number {\r\n\r\n return ( Math.PI / 180 ) * deg\r\n\r\n}\r\n\r\nfunction euler2Deg ( euler: number ): number {\r\n\r\n return euler / ( Math.PI / 180 )\r\n\r\n}\r\n\r\n/**\r\n * 从 object 获取 position、rotation、scale\r\n * @param object\r\n * @param isFromWorld\r\n * @returns\r\n */\r\nfunction getSpaceAttributeFromObject ( object: Object3D, isFromWorld = true ) {\r\n\r\n if ( isFromWorld ) {\r\n\r\n return {\r\n position: object.getWorldPosition( new Vector3() ),\r\n rotation: new Euler().setFromQuaternion(\r\n object.getWorldQuaternion( new Quaternion() )\r\n ),\r\n scale: object.getWorldScale( new Vector3() ),\r\n }\r\n \r\n } else {\r\n\r\n return {\r\n position: object.position.clone(),\r\n rotation: object.rotation.clone(),\r\n scale: object.scale.clone(),\r\n }\r\n \r\n }\r\n\r\n}\r\n\r\n/**\r\n * 同步 source 的 position、rotation、scale 到 target\r\n * @param target\r\n * @param source\r\n * @param isFromWorld\r\n */\r\nfunction syncSpaceAttributeToObject (\r\n target: Object3D,\r\n source: Object3D,\r\n isFromWorld = true\r\n) {\r\n\r\n const attribute = getSpaceAttributeFromObject( source, isFromWorld )\r\n\r\n target.position.copy( attribute.position )\r\n target.rotation.copy( attribute.rotation )\r\n target.scale.copy( attribute.scale )\r\n\r\n}\r\n\r\nfunction isObjectVisible ( object: Object3D ): boolean {\r\n\r\n if ( !object.visible ) return false\r\n else if ( !object.parent ) return true\r\n else return isObjectVisible( object.parent )\r\n\r\n}\r\n\r\nconst tV0 = new Vector3()\r\nconst tV1 = new Vector3()\r\nconst tV2 = new Vector3()\r\n\r\nconst getPoint2 = ( point3: Vector3, camera: Camera, size: Vector2 ) => {\r\n\r\n const widthHalf = size.width / 2\r\n const heightHalf = size.height / 2\r\n\r\n camera.updateMatrixWorld()\r\n const vector = point3.project( camera )\r\n\r\n vector.x = vector.x * widthHalf + widthHalf\r\n vector.y = -( vector.y * heightHalf ) + heightHalf\r\n return vector\r\n\r\n}\r\n\r\nconst getPoint3 = ( point2: Vector3, camera: Camera, size: Vector2, zValue = 1 ) => {\r\n\r\n const vector = tV0.set( ( point2.x / size.width ) * 2 - 1, -( point2.y / size.height ) * 2 + 1, zValue )\r\n\r\n vector.unproject( camera )\r\n return vector\r\n\r\n}\r\n\r\nconst calculateScaleFactor = ( point3: Vector3, radiusPx: number, camera: Camera, size: Vector2 ) => {\r\n\r\n const point2 = getPoint2( tV2.copy( point3 ), camera, size )\r\n\r\n let scale = 0\r\n\r\n for ( let i = 0; i < 2; ++i ) {\r\n\r\n const point2off = tV1.copy( point2 ).setComponent( i, point2.getComponent( i ) + radiusPx )\r\n const point3off = getPoint3( point2off, camera, size, point2off.z )\r\n\r\n scale = Math.max( scale, point3.distanceTo( point3off ) )\r\n \r\n }\r\n return scale\r\n\r\n}\r\n\r\n/**\r\n * 计算 target\r\n */\r\nfunction computeTargetByRotation ( position: IVector3, rotation: Rotation, scalar = 5 ): Vector3 {\r\n \r\n const tempObj = new Object3D()\r\n const tempDir = new Vector3()\r\n const tempTarget = new Vector3()\r\n\r\n tempObj.position.set( position.x, position.y, position.z )\r\n tempObj.rotation.set( rotation.x, rotation.y, rotation.z )\r\n tempObj.getWorldDirection( tempDir )\r\n tempDir.multiplyScalar( scalar )\r\n tempTarget.subVectors(\r\n tempObj.position,\r\n tempDir\r\n )\r\n\r\n return tempTarget\r\n\r\n}\r\n\r\nfunction absoluteAngle ( targetAngle: number, sourceAngle: number ): number {\r\n\r\n const angle = targetAngle - sourceAngle\r\n\r\n return MathUtils.euclideanModulo( angle + Math.PI, Math.PI * 2 ) - Math.PI\r\n\r\n}\r\n\r\nexport {\r\n //\r\n IVector3ToVector3,\r\n IVector3ToEuler,\r\n //\r\n getBoundingBox,\r\n //\r\n rotationAxisFix,\r\n rotationAFix,\r\n //\r\n deg2Euler,\r\n euler2Deg,\r\n //\r\n getSpaceAttributeFromObject,\r\n syncSpaceAttributeToObject,\r\n //\r\n isObjectVisible,\r\n //\r\n calculateScaleFactor,\r\n computeTargetByRotation,\r\n absoluteAngle,\r\n}\r\n","export const FileRequestHeaders = {}","import { FileLoader, ImageLoader, TextureLoader, } from 'three'\r\nimport { FileRequestHeaders, } from '../Constants/headers'\r\nimport { RGBELoader, } from 'three/examples/jsm/loaders/RGBELoader.js'\r\n\r\nexport type FileResponseType = 'json' | 'arraybuffer' | 'blob' | 'document' | 'text'\r\n\r\nconst fileLoader = new FileLoader()\r\n\r\nfileLoader.setRequestHeader( FileRequestHeaders )\r\n\r\nexport const fetchFile = async <T = any>( url: string, responseType: FileResponseType ) => {\r\n\r\n fileLoader.setResponseType( responseType )\r\n\r\n return fileLoader.loadAsync( url ) as Promise<T>\r\n\r\n}\r\n\r\nexport const imageLoader = new ImageLoader()\r\nimageLoader.load = (\r\n url: string,\r\n onLoad?: ( data: HTMLImageElement ) => void,\r\n onProgress?: ( event: ProgressEvent ) => void,\r\n onError?: ( err: unknown ) => void \r\n) => {\r\n\r\n const image = new Image()\r\n\r\n fileLoader.setResponseType( 'blob' )\r\n fileLoader.load( url, function ( blob ) {\r\n\r\n image.src = URL.createObjectURL( blob as unknown as Blob )\r\n image.onload = () => {\r\n\r\n URL.revokeObjectURL( image.src )\r\n onLoad?.( image )\r\n \r\n }\r\n\r\n }, onProgress, onError )\r\n\r\n return image\r\n\r\n}\r\n\r\nexport const textureLoader = new TextureLoader()\r\ntextureLoader.setRequestHeader( FileRequestHeaders )\r\n\r\nexport const rgbeLoader = new RGBELoader()\r\nrgbeLoader.setRequestHeader( FileRequestHeaders )","import { Vector3, Object3D, Camera, Raycaster, Vector2, } from 'three'\r\nimport { isArray, isNumber, IVector3ToVector3, } from '.'\r\nimport { PoiNode, } from '../Library'\r\nimport Viewport from '../Viewport'\r\n\r\nconst v1 = new Vector3()\r\nconst v2 = new Vector3()\r\nconst v3 = new Vector3()\r\n\r\nexport function isObjectBehindCamera ( dir: Vector3, camera: Camera ) {\r\n\r\n const camDir = v3.setFromMatrixColumn( camera.matrixWorld, 2 ).normalize().negate()\r\n\r\n return dir.dot( camDir ) < 0\r\n\r\n}\r\n\r\nexport function isObjectOccludeVisible ( el: Object3D, camera: Camera, raycaster: Raycaster, occlude: Object3D[] ) {\r\n\r\n const elPos = v1.setFromMatrixPosition( el.matrixWorld )\r\n const screenPos = elPos.clone()\r\n\r\n screenPos.project( camera )\r\n raycaster.setFromCamera( new Vector2( screenPos.x, screenPos.y ), camera )\r\n const intersects = raycaster.intersectObjects( occlude, true )\r\n\r\n if ( intersects.length ) {\r\n\r\n const intersectionDistance = intersects[ 0 ].distance\r\n const pointDistance = elPos.distanceTo( raycaster.ray.origin )\r\n\r\n return pointDistance < intersectionDistance\r\n \r\n }\r\n \r\n return true\r\n\r\n}\r\n\r\nexport function poiNodeOccludeHandler ( object: Object3D, viewport: Viewport ) {\r\n\r\n const poiNode = object.parent as PoiNode\r\n\r\n if ( !poiNode.occlude ) return\r\n\r\n const { occludeThrottle, } = poiNode\r\n\r\n let needsComputeOcclude = true\r\n \r\n if ( isNumber( occludeThrottle ) && isNumber( object.userData.delta ) ) needsComputeOcclude = performance.now() - object.userData.delta > occludeThrottle \r\n\r\n if ( needsComputeOcclude && poiNode.occlude ) {\r\n\r\n let objectVisible = object.visible\r\n\r\n const objectPos = v1.setFromMatrixPosition( object.matrixWorld )\r\n const cameraPos = v2.setFromMatrixPosition( viewport.camera.matrixWorld )\r\n const deltaCamObj = objectPos.clone().sub( cameraPos )\r\n \r\n if ( poiNode.occlude === true || isArray( poiNode.occlude ) ) {\r\n\r\n // boolean || array\r\n\r\n const camDir = v3.setFromMatrixColumn( viewport.camera.matrixWorld, 2 ).normalize().negate()\r\n const isBehindCamera = deltaCamObj.dot( camDir ) < 0\r\n\r\n objectVisible = !isBehindCamera && isObjectOccludeVisible( object, viewport.camera, viewport.raycaster, isArray( poiNode.occlude ) ? poiNode.occlude : viewport.scener.intersectsList.getAll() )\r\n \r\n } else {\r\n\r\n // vector3\r\n\r\n const objectOccludeDir = IVector3ToVector3( poiNode.occlude )\r\n const dotNum = deltaCamObj.dot( objectOccludeDir )\r\n const isFrontObject = dotNum < 0\r\n\r\n objectVisible = isFrontObject\r\n\r\n }\r\n \r\n object.visible = objectVisible\r\n\r\n object.userData.delta = performance.now()\r\n \r\n }\r\n\r\n}","export const propertiesCtx = {\r\n source: null as null | 'code' | 'unknown',\r\n}\r\n\r\nfunction runWithCtx<T> ( source: typeof propertiesCtx.source, fn: () => T ): T {\r\n\r\n propertiesCtx.source = source\r\n const result = fn()\r\n\r\n propertiesCtx.source = null\r\n return result\r\n\r\n}\r\n\r\nexport function runWithCode<T> ( fn: ( ...args: any [] ) => T ): T {\r\n\r\n return runWithCtx( 'code', fn )\r\n\r\n}\r\n\r\nasync function asyncRunWithCtx<T> (\r\n source: typeof propertiesCtx.source,\r\n fn: () => Promise<T>\r\n): Promise<Awaited<T>> {\r\n\r\n propertiesCtx.source = source\r\n const result = await fn()\r\n\r\n propertiesCtx.source = null\r\n return result\r\n\r\n}\r\n\r\nexport async function asyncRunWithCode<T> (\r\n fn: ( ...args: any [] ) => Promise<T>\r\n): Promise<T> {\r\n\r\n return asyncRunWithCtx( 'code', fn )\r\n\r\n}\r\n","import { Object3D, } from 'three'\r\n\r\nexport const findObjectFromTarget = (\r\n target: Object3D,\r\n key: string\r\n): boolean => {\r\n\r\n if ( target.userData.key === key ) {\r\n\r\n return true\r\n\r\n } else {\r\n\r\n if ( target.parent ) return findObjectFromTarget( target.parent, key )\r\n\r\n return false\r\n\r\n }\r\n\r\n}","import SoonSpace, { Model, ModelEventParams, } from 'soonspacejs'\r\nimport {\r\n FlowParser,\r\n FlowType,\r\n Interaction,\r\n InteractionAction,\r\n InteractionObsType,\r\n InteractionType,\r\n Node, TriggerOptions,\r\n} from '@soonspacejs/plugin-flow'\r\nimport { asyncRunWithCode, } from 'soonspacejs/types/Shared'\r\nimport { findObjectFromTarget, } from './utils'\r\n\r\nconst { groupBy, } = SoonSpace.utils\r\n\r\n\r\nclass Trigger {\r\n\r\n ssp: SoonSpace\r\n interaction: Interaction\r\n flows: FlowType[]\r\n flowsMap: Map<string, FlowType[]>\r\n\r\n options: TriggerOptions\r\n disposables: ( () => void )[] = []\r\n status: 'ready' | 'running' | 'error' = 'ready'\r\n target?: Model\r\n\r\n constructor ( ssp: SoonSpace, interaction: Interaction, flows: FlowType[], options: TriggerOptions ) {\r\n\r\n this.ssp = ssp\r\n\r\n // this.target = target\r\n this.interaction = interaction\r\n this.flows = flows\r\n this.flowsMap = groupBy( flows, 'id' )\r\n this.options = options || {}\r\n\r\n this.#init()\r\n\r\n }\r\n\r\n #init () {\r\n\r\n switch ( this.interaction.type ) {\r\n \r\n case InteractionType.MOUSE_CLICK:\r\n this.initMouseClick()\r\n break\r\n case InteractionType.MOUSE_DB_CLICK:\r\n this.initMouseDbClick()\r\n break\r\n case InteractionType.MOUSE_RIGHT_CLICK:\r\n this.initMouseRightClick()\r\n break\r\n case InteractionType.LOADED:\r\n this.initLoaded()\r\n break\r\n case InteractionType.THING_PROP_CHANGE:\r\n this.initThingPropChange()\r\n break\r\n case InteractionType.THING_EVENT:\r\n this.initThingEvent()\r\n break\r\n case InteractionType.MODEL_PROP_CHANGE:\r\n this.initModelPropChange()\r\n break\r\n\r\n }\r\n\r\n }\r\n \r\n // 获取交互触发\r\n async #getObsTarget ( currentNode: Node ) {\r\n\r\n const { obsType, obsTargets, editionId, } = this.interaction\r\n\r\n if ( obsType === InteractionObsType.GLOBAL ) {\r\n\r\n // return this.target\r\n return null\r\n \r\n }\r\n if ( obsType === InteractionObsType.INSTANCE ) {\r\n\r\n let target\r\n\r\n if ( editionId ) {\r\n\r\n target = this.ssp.getModelById( editionId )\r\n \r\n if ( !target ) {\r\n \r\n console.warn( 'Target not found:', editionId )\r\n \r\n }\r\n\r\n } else {\r\n\r\n target = obsTargets?.map( targetId => {\r\n \r\n const target = this.ssp.getModelById( targetId )\r\n \r\n if ( !target ) {\r\n \r\n console.warn( 'Target not found:', obsTargets[ 0 ] )\r\n \r\n }\r\n return target\r\n \r\n } )[ 0 ]\r\n\r\n }\r\n\r\n }\r\n\r\n return null\r\n \r\n }\r\n \r\n // 模型事件触发\r\n modelHandler ( params: ModelEventParams ) {\r\n\r\n const { target, currentTarget, } = params\r\n\r\n const editionId = this.interaction.editionId\r\n\r\n if ( editionId ) {\r\n\r\n // 组件交互\r\n if (\r\n ( target.sid === editionId || target.userData.familyId === editionId ) && \r\n findObjectFromTarget( currentTarget, this.interaction.modelId )\r\n ) {\r\n\r\n this.target = target\r\n this.execBehavior()\r\n\r\n }\r\n\r\n } else {\r\n \r\n this.interaction.obsTargets?.forEach( targetKey => {\r\n \r\n if ( targetKey === target.userData.id || targetKey === target.userData.sid ) {\r\n \r\n this.target = target\r\n this.execBehavior()\r\n \r\n }\r\n \r\n } )\r\n\r\n }\r\n\r\n }\r\n\r\n runFlowByIds ( flowIds: string[] ) {\r\n\r\n const getTarget = this.target ? async () => this.target as Model : this.#getObsTarget.bind( this )\r\n\r\n flowIds.forEach( flowId => {\r\n\r\n const foundFlow = this.flowsMap.get( flowId )\r\n\r\n if ( foundFlow ) {\r\n\r\n const flow = new FlowParser( this.ssp, foundFlow[ 0 ] )\r\n\r\n flow.parse()\r\n // todo 确定ctx 包转具体位置\r\n asyncRunWithCode(\r\n () => flow.run( {\r\n getTarget: getTarget,\r\n getAnimations: this.options.getAnimations,\r\n getComponentAnimations: this.options.getComponentAnimations,\r\n } )\r\n )\r\n \r\n }\r\n\r\n } )\r\n\r\n }\r\n\r\n async execBehavior () {\r\n\r\n const active = this.interaction.active ?? true\r\n\r\n if ( !active ) return\r\n\r\n try {\r\n\r\n this.status = 'running'\r\n\r\n const { behaviors, } = this.interaction\r\n\r\n behaviors?.forEach( behavior => {\r\n\r\n switch ( behavior.action ) {\r\n\r\n case InteractionAction.FLOW:\r\n if ( behavior.actionRefs ) this.runFlowByIds( behavior.actionRefs )\r\n break\r\n\r\n }\r\n\r\n } )\r\n this.options?.onTrigger && this.options?.onTrigger( this.interaction )\r\n \r\n } catch (\r\n e\r\n ) {\r\n\r\n this.status = 'error'\r\n\r\n this.options?.onError && this.options?.onError( e as Error )\r\n \r\n }\r\n \r\n }\r\n\r\n initMouseClick () {\r\n\r\n const modelHandler = this.modelHandler.bind( this )\r\n\r\n this.ssp.signals.modelClick.add( modelHandler )\r\n\r\n this.disposables.push( () => this.ssp.signals.modelClick.remove( modelHandler ) )\r\n\r\n }\r\n\r\n initMouseDbClick () {\r\n\r\n const modelHandler = this.modelHandler.bind( this )\r\n\r\n this.ssp.signals.modelDblClick.add( modelHandler )\r\n\r\n this.disposables.push( () => this.ssp.signals.modelDblClick.remove( modelHandler ) )\r\n\r\n }\r\n\r\n initMouseRightClick () {\r\n\r\n const modelHandler = this.modelHandler.bind( this )\r\n\r\n this.ssp.signals.modelRightClick.add( modelHandler )\r\n\r\n this.disposables.push( () => this.ssp.signals.modelRightClick.remove( modelHandler ) )\r\n\r\n }\r\n\r\n initLoaded () {\r\n\r\n const loadHandler = () => {\r\n\r\n this.execBehavior()\r\n\r\n }\r\n\r\n // todo 场景加载结束是否有信号或事件\r\n loadHandler()\r\n // this.ssp.viewport.scene.addEventListener( 'load', loadHandler )\r\n //\r\n // this.disposables.push( () => this.target.removeEventListener( 'load', loadHandler ) )\r\n\r\n }\r\n \r\n modelPropChangeHandler ( properties: any ) {\r\n\r\n\r\n if ( !properties?.target?.refId ) {\r\n\r\n return\r\n\r\n }\r\n\r\n // todo diff next and before\r\n // 流程节点修改的自定义属性不触发 交互流程\r\n if ( this.ssp.utils.propertiesCtx.source === 'code' ) {\r\n\r\n return\r\n\r\n }\r\n\r\n const targetSid = properties.target?.refId\r\n\r\n if ( this.interaction.editionId ) {\r\n\r\n this.target = this.ssp.getObjectByUserDataProperty( 'familyId', this.interaction.editionId )[ 0 ] as Model\r\n\r\n }\r\n\r\n this.execBehavior()\r\n\r\n }\r\n\r\n initModelPropChange () {\r\n\r\n const modelPropChangeHandler = this.modelPropChangeHandler.bind( this )\r\n\r\n this.ssp.signals.propertiesChanged.add( modelPropChangeHandler )\r\n\r\n this.disposables.push( () => this.ssp.signals.propertiesChanged.remove( modelPropChangeHandler ) )\r\n \r\n }\r\n\r\n initThingPropChange () {\r\n // @todo\r\n }\r\n\r\n initThingEvent () {\r\n // @todo\r\n }\r\n\r\n dispose () {\r\n\r\n this.disposables.forEach( dispose => dispose() )\r\n \r\n }\r\n\r\n}\r\n\r\nexport { Trigger, }","import { Object3D, } from 'three'\r\nimport { IAnimation, IComponentAnimation, } from '../types'\r\nimport { Node, } from '../flows'\r\n\r\nexport enum InteractionActionType {\r\n GLOBAL = 'GLOBAL',\r\n SELF = 'SELF',\r\n OTHER = 'OTHER',\r\n}\r\n\r\nexport enum InteractionAction {\r\n FLOW = 'FLOW',\r\n ANIMATION = 'ANIMATION',\r\n DELAY = 'DELAY',\r\n}\r\n\r\nexport enum InteractionObsType {\r\n GLOBAL = 'GLOBAL',\r\n INSTANCE = 'INSTANCE',\r\n FAMILY = 'FAMILY',\r\n}\r\n\r\nexport enum InteractionType {\r\n MOUSE_CLICK = 'MOUSE_CLICK',\r\n MOUSE_DB_CLICK = 'MOUSE_DB_CLICK',\r\n MOUSE_RIGHT_CLICK = 'MOUSE_RIGHT_CLICK',\r\n THING_PROP_CHANGE = 'THING_PROP_CHANGE',\r\n THING_EVENT = 'THING_EVENT',\r\n LOADED = 'LOADED',\r\n MODEL_PROP_CHANGE = 'MODEL_PROP_CHANGE',\r\n}\r\n\r\nexport type InteractionBehavior = {\r\n id: string;\r\n uuid: string;\r\n actionType: InteractionActionType;\r\n action: InteractionAction;\r\n actionTargets: string[] | null;\r\n actionRefs: string[] | null;\r\n}\r\n\r\nexport type Interaction = {\r\n id: string;\r\n sid: string;\r\n name: string;\r\n modelId: string;\r\n type: InteractionType;\r\n obsType: InteractionObsType;\r\n obsTargets: string[] | null;\r\n obsProps: string[] | null;\r\n behaviors: InteractionBehavior[] | null;\r\n active: boolean;\r\n editionId?: string;\r\n}\r\n\r\nexport type TriggerOptions = {\r\n onError?: ( e: Error ) => void;\r\n onTrigger?: ( interaction: Interaction ) => void;\r\n getAnimations?: ( currentNode: Node, object: Object3D, animationId: string ) => Promise<IAnimation[] | null>;\r\n getComponentAnimations?: ( currentNode: Node, object: Object3D, animationId: string ) => Promise<IComponentAnimation[] | null>;\r\n}","import SoonSpace, { ModelEventParams, } from 'soonspacejs'\r\nimport { Trigger, } from './Trigger'\r\nimport { Interaction, InteractionAction, InteractionObsType, InteractionType, TriggerOptions, } from './types'\r\nimport { ComponentFlowType, } from '../flows/types'\r\nimport { ComponentFlowParser, Node, } from '../flows'\r\nimport { asyncRunWithCode, } from 'soonspacejs/types/Shared'\r\n\r\nconst { groupBy, } = SoonSpace.utils\r\n\r\nclass ComponentTrigger extends Trigger {\r\n\r\n flows: ComponentFlowType[]\r\n flowsMap: Map<string, ComponentFlowType[]>\r\n\r\n constructor ( ssp: SoonSpace, interaction: Interaction, flows: ComponentFlowType[], options: TriggerOptions ) {\r\n\r\n super( ssp, interaction, flows, options )\r\n\r\n this.flows = flows\r\n this.flowsMap = groupBy( flows, 'id' )\r\n\r\n this.#init()\r\n\r\n }\r\n\r\n #init () {\r\n\r\n switch ( this.interaction.type ) {\r\n\r\n case InteractionType.MOUSE_CLICK:\r\n this.initMouseClick()\r\n break\r\n case InteractionType.MOUSE_DB_CLICK:\r\n this.initMouseDbClick()\r\n break\r\n case InteractionType.MOUSE_RIGHT_CLICK:\r\n this.initMouseRightClick()\r\n break\r\n case InteractionType.LOADED:\r\n this.initLoaded()\r\n break\r\n case InteractionType.THING_PROP_CHANGE:\r\n this.initThingPropChange()\r\n break\r\n case InteractionType.THING_EVENT:\r\n this.initThingEvent()\r\n break\r\n case InteractionType.MODEL_PROP_CHANGE:\r\n this.initModelPropChange()\r\n break\r\n \r\n }\r\n \r\n }\r\n\r\n // 获取交互触发的Mesh\r\n async #getObsTarget ( currentNode?: Node ) {\r\n\r\n console.log( 'currentNode', currentNode )\r\n\r\n const { obsType, obsTargets, } = this.interaction\r\n\r\n if ( obsType === InteractionObsType.GLOBAL ) {\r\n\r\n // return this.target\r\n return null\r\n\r\n }\r\n if ( obsType === InteractionObsType.INSTANCE ) {\r\n\r\n const targets = obsTargets?.map( targetId => {\r\n\r\n const target = this.ssp.getModelById( targetId )\r\n\r\n if ( !target ) {\r\n\r\n console.warn( 'Target not found:', targetId )\r\n\r\n }\r\n return target\r\n\r\n } )\r\n\r\n return targets ? targets[ 0 ] : null\r\n\r\n }\r\n\r\n return null\r\n\r\n }\r\n\r\n // 模型事件触发\r\n modelHandler ( params: ModelEventParams ) {\r\n\r\n const { currentTarget, } = params\r\n\r\n this.interaction.obsTargets?.forEach( targetKey => {\r\n\r\n // todo confirm component id \r\n if ( targetKey === currentTarget.userData.key ) {\r\n\r\n this.execBehavior()\r\n\r\n }\r\n \r\n } )\r\n \r\n }\r\n\r\n // 物模型事件触发\r\n #thingModelHandler ( params: { propKey: string } ) {\r\n\r\n const { propKey, } = params\r\n\r\n this.interaction.obsProps?.forEach( targetProp => {\r\n\r\n if ( targetProp === propKey ) {\r\n\r\n this.execBehavior()\r\n\r\n }\r\n \r\n } )\r\n\r\n }\r\n\r\n runFlowByIds ( flowIds: string[] ) {\r\n\r\n const getTarget = this.#getObsTarget.bind( this )\r\n\r\n flowIds.forEach( flowId => {\r\n\r\n const foundFlow = this.flowsMap.get( flowId )\r\n\r\n if ( foundFlow ) {\r\n \r\n const flow = new ComponentFlowParser( this.ssp, foundFlow[ 0 ] )\r\n \r\n flow.parse()\r\n asyncRunWithCode(\r\n () => flow.run( {\r\n getTarget,\r\n } )\r\n )\r\n \r\n }\r\n \r\n } )\r\n \r\n }\r\n\r\n async execBehavior () {\r\n\r\n try {\r\n\r\n const { behaviors, } = this.interaction\r\n\r\n behaviors?.forEach( behavior => {\r\n\r\n switch ( behavior.action ) {\r\n\r\n case InteractionAction.FLOW:\r\n if ( behavior.actionRefs ) this.runFlowByIds( behavior.actionRefs )\r\n break\r\n\r\n }\r\n\r\n } )\r\n\r\n this.options?.onTrigger && this.options?.onTrigger( this.interaction )\r\n\r\n }\r\n catch ( e ) {\r\n\r\n this.options?.onError && this.options?.onError( e as Error )\r\n \r\n }\r\n\r\n }\r\n\r\n initLoaded () {\r\n\r\n const loadHandler = () => {\r\n\r\n this.execBehavior()\r\n\r\n }\r\n \r\n this.#getObsTarget().then( target => {\r\n\r\n if ( target ) {\r\n\r\n target.addEventListener( 'load', loadHandler )\r\n\r\n this.disposables.push( () => target.removeEventListener( 'load', loadHandler ) )\r\n \r\n }\r\n \r\n } )\r\n\r\n \r\n }\r\n\r\n initThingPropChange () {\r\n\r\n const thingModelHandler = this.#thingModelHandler.bind( this )\r\n\r\n this.ssp.signals.thingModelPropsChange.add( thingModelHandler )\r\n\r\n this.disposables.push( () => this.ssp.signals.thingModelPropsChange.remove( thingModelHandler ) )\r\n\r\n }\r\n\r\n initThingEvent () {\r\n // @todo\r\n }\r\n\r\n onThingPropChange ( newProps: string ) {\r\n\r\n this.ssp.signals.thingModelPropsChange.dispatch( {\r\n propKey: newProps,\r\n } )\r\n\r\n }\r\n\r\n}\r\n\r\nexport { ComponentTrigger, }"],"names":["objectHandle","tweenCache","groupBy","FlowParser","InteractionAction","InteractionType","InteractionObsType"],"mappings":"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"}
|