@awesome-flow/noise 0.14.1 → 0.15.0
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/dist/abstract/index.d.cts +1 -1
- package/dist/abstract/index.d.mts +1 -1
- package/dist/abstract-2JON8rzd.mjs.map +1 -1
- package/dist/abstract-B_pVp8sm.cjs.map +1 -1
- package/dist/generators-1ateTPw4.cjs.map +1 -1
- package/dist/generators-C4lV1Acx.mjs.map +1 -1
- package/dist/groups-Bd_YqsSe.cjs.map +1 -1
- package/dist/groups-QnZwWs5K.mjs.map +1 -1
- package/dist/{index-CsaYSseO.d.cts → index-BHiHVVeK.d.cts} +11 -12
- package/dist/index-BHiHVVeK.d.cts.map +1 -0
- package/dist/index-BbHM1kxc.d.cts.map +1 -1
- package/dist/index-C0hF9uhX.d.mts.map +1 -1
- package/dist/{index-DD7w4U2L.d.cts → index-C1nJ4XJk.d.cts} +32 -33
- package/dist/index-C1nJ4XJk.d.cts.map +1 -0
- package/dist/{index-Cq4cX7_1.d.cts → index-C4DHyM1g.d.cts} +10 -11
- package/dist/index-C4DHyM1g.d.cts.map +1 -0
- package/dist/{index-BF4lvH9m.d.mts → index-CS8WIlPD.d.mts} +3 -4
- package/dist/index-CS8WIlPD.d.mts.map +1 -0
- package/dist/{index-CBbjO4LA.d.cts → index-CzIN981R.d.cts} +3 -4
- package/dist/index-CzIN981R.d.cts.map +1 -0
- package/dist/{index-BvYuyqpe.d.mts → index-D7O6JDFK.d.mts} +2 -3
- package/dist/index-D7O6JDFK.d.mts.map +1 -0
- package/dist/{index-C_YCQJAR.d.mts → index-Ddhg5ibV.d.mts} +10 -11
- package/dist/index-Ddhg5ibV.d.mts.map +1 -0
- package/dist/{index-CYv9fQPE.d.mts → index-DitvKb3V.d.mts} +11 -12
- package/dist/index-DitvKb3V.d.mts.map +1 -0
- package/dist/{index-PUkjAp6D.d.mts → index-DjvWGLyW.d.mts} +5 -6
- package/dist/index-DjvWGLyW.d.mts.map +1 -0
- package/dist/{index-Bq5dqoNQ.d.mts → index-Du4UfXGg.d.mts} +32 -33
- package/dist/index-Du4UfXGg.d.mts.map +1 -0
- package/dist/{index-DGy2GCvU.d.cts → index-DxMCGzod.d.cts} +2 -3
- package/dist/index-DxMCGzod.d.cts.map +1 -0
- package/dist/{index-DNxXxhXh.d.cts → index-f9IqM_EJ.d.cts} +6 -7
- package/dist/index-f9IqM_EJ.d.cts.map +1 -0
- package/dist/{index-iThYgph-.d.mts → index-qgKLlTGY.d.mts} +6 -7
- package/dist/index-qgKLlTGY.d.mts.map +1 -0
- package/dist/{index-Bgmf14d3.d.cts → index-yGkfzuz0.d.cts} +5 -6
- package/dist/index-yGkfzuz0.d.cts.map +1 -0
- package/dist/modifiers-Buu-9KXs.cjs.map +1 -1
- package/dist/modifiers-DQcS3gLS.mjs.map +1 -1
- package/dist/module-group-template-C6pYnpOd.d.cts.map +1 -1
- package/dist/module-group-template-DFt0ldxW.d.mts.map +1 -1
- package/dist/modules/index.cjs +0 -2
- package/dist/modules/index.cjs.map +1 -1
- package/dist/modules/index.mjs +0 -2
- package/dist/modules/index.mjs.map +1 -1
- package/dist/node-props-CoXzPLD6.d.cts.map +1 -1
- package/dist/node-props-GcUBDDY0.d.mts.map +1 -1
- package/dist/nodes/generators/index.d.cts +1 -1
- package/dist/nodes/generators/index.d.mts +1 -1
- package/dist/nodes/groups/index.d.cts +1 -1
- package/dist/nodes/groups/index.d.mts +1 -1
- package/dist/nodes/index.d.cts +6 -6
- package/dist/nodes/index.d.mts +6 -6
- package/dist/nodes/modifiers/index.d.cts +1 -1
- package/dist/nodes/modifiers/index.d.mts +1 -1
- package/dist/nodes/output/index.d.cts +1 -1
- package/dist/nodes/output/index.d.mts +1 -1
- package/dist/nodes/selectors/index.d.cts +1 -1
- package/dist/nodes/selectors/index.d.mts +1 -1
- package/dist/nodes/transformers/index.d.cts +1 -1
- package/dist/nodes/transformers/index.d.mts +1 -1
- package/dist/position-grid-template-BDMWIHUn.d.mts.map +1 -1
- package/dist/position-grid-template-DckkGHAX.d.cts.map +1 -1
- package/dist/selectors-BC2RDFCB.mjs.map +1 -1
- package/dist/selectors-CRgS2O53.cjs.map +1 -1
- package/dist/templates/index.d.cts +1 -1
- package/dist/templates/index.d.mts +1 -1
- package/dist/templates/modifiers/index.d.cts +1 -1
- package/dist/templates/modifiers/index.d.mts +1 -1
- package/dist/templates/output/index.d.cts +1 -1
- package/dist/templates/output/index.d.mts +1 -1
- package/dist/templates/selectors/index.d.cts +1 -1
- package/dist/templates/selectors/index.d.mts +1 -1
- package/dist/templates/transformers/index.d.cts +1 -1
- package/dist/templates/transformers/index.d.mts +1 -1
- package/dist/transformers-BvmiSDwZ.mjs.map +1 -1
- package/dist/transformers-ob-K3S2I.cjs.map +1 -1
- package/package.json +14 -14
- package/dist/index-BF4lvH9m.d.mts.map +0 -1
- package/dist/index-Bgmf14d3.d.cts.map +0 -1
- package/dist/index-Bq5dqoNQ.d.mts.map +0 -1
- package/dist/index-BvYuyqpe.d.mts.map +0 -1
- package/dist/index-CBbjO4LA.d.cts.map +0 -1
- package/dist/index-CYv9fQPE.d.mts.map +0 -1
- package/dist/index-C_YCQJAR.d.mts.map +0 -1
- package/dist/index-Cq4cX7_1.d.cts.map +0 -1
- package/dist/index-CsaYSseO.d.cts.map +0 -1
- package/dist/index-DD7w4U2L.d.cts.map +0 -1
- package/dist/index-DGy2GCvU.d.cts.map +0 -1
- package/dist/index-DNxXxhXh.d.cts.map +0 -1
- package/dist/index-PUkjAp6D.d.mts.map +0 -1
- package/dist/index-iThYgph-.d.mts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-2JON8rzd.mjs","names":["CustomNodeHandle","NoiseHandleType","textureData","noise","position","module","DisplacementHandle","sourceModule","xModule","yModule","zModule","output","NoiseSourceControlHandle","source","control","DisplacementModuleHandle","dataId","NoiseSourceControlModuleHandle","BasicNodeData","useNodeContext","NodeContainer","Divider","Stack","Text","Node","NodeProps","memo","NoiseHandleType","NoiseLoggerContext","NoiseLoggerNode","t0","$","_c","id","selected","data","type","context","incoming","noise","T0","T1","t1","t2","t3","t4","t5","t6","t7","filter","_temp","flatMap","_temp2","length","Symbol","for","map","_temp3","t8","t9","v","i","position","x","y","z","value","c_0","c","computed","BasicNodeData","HandlesIncomingDataStatus","useNodeContext","NodeContainer","NoiseOutputContext","Text","Node","NodeProps","memo","NoiseOutputNode","t0","$","_c","id","selected","data","type","context","t1","handles","t2","computed","noise","length","t3","t4","BasicNodeData","useNodeContext","NodeContainer","NoiseTextureDataContext","Group","Stack","Node","NodeProps","memo","NoiseTextureDataNode","t0","$","_c","id","selected","data","type","context","computed","t1","textureResolutionX","t2","textureResolutionY","t3","t4","textureData","length","t5","t6","t7","t8","t9","t10","t11","BasicNodeData","useNodeContext","NodeContainer","Divider","Stack","Text","Node","NodeProps","memo","NoiseHandleType","PositionLoggerNodeContext","PositionsLoggerNode","t0","$","_c","id","selected","data","type","incoming","position","T0","T1","t1","t2","t3","t4","t5","t6","t7","positions","filter","_temp","flatMap","_temp2","length","Symbol","for","map","_temp3","t8","t9","v","i","x","y","z","p_0","p","computed","NoiseTemplateGroup","positions","output","noiseGenerators","noiseModifiers","noiseSelectors","noiseTransformers","IMiddleware","CoreHandleType","NoiseGeneratorContext","IncomingPropertyValueMiddleware","action","context","incoming","variableProperty","properties","data","connection","overwrite","computed","Object","assign","property","value","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","IDGenerator","Position","Billow","NoiseHandleType","NodeFBMNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseBillowContext","NoiseBillowNodeTemplateFactory","template","id","type","noiseBillow","group","noiseGenerators","data","title","frequency","lacunarity","octaves","persistence","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","ComputedModuleData","Position","Checkerboard","NoiseHandleType","NoiseNodeType","NoiseTemplateGroup","NoiseCheckerboardContext","NoiseCheckerboardNodeTemplateFactory","template","type","noiseCheckerboard","group","noiseGenerators","data","title","handles","position","Right","dataType","module","connection","pipeline","create","action","context","computed","cleanup","IPipeline","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Const","NoiseHandleType","ComputedModuleData","NodeConstNoiseData","NoiseNodeType","NoiseTemplateGroup","NoiseConstContext","NoiseConstNodeTemplateFactory","template","type","noiseConst","group","noiseGenerators","data","title","noise","min","max","handles","position","Right","dataType","module","connection","pipeline","create","shouldRun","context","undefined","action","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Cylinders","NoiseHandleType","NodeCylindersNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseCylindersContext","NoiseCylindersNodeTemplateFactory","template","type","noiseCylinders","group","noiseGenerators","data","title","frequency","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Perlin","NoiseHandleType","NodeFBMNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoisePerlinContext","NoisePerlinNodeTemplateFactory","template","type","noisePerlin","group","noiseGenerators","data","title","frequency","lacunarity","octaves","persistence","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","RidgedMulti","NoiseHandleType","NodeRidgedNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseRidgedMultiContext","NoiseRidgedMultiNodeTemplateFactory","template","type","noiseRidgedMulti","group","noiseGenerators","data","title","frequency","lacunarity","octaves","offset","gain","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Spheres","NoiseHandleType","NodeSpheresNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseSpheresContext","NoiseSpheresNodeTemplateFactory","template","type","noiseSpheres","group","noiseGenerators","data","title","frequency","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Voronoi","NoiseHandleType","NodeVoronoiNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseVoronoiContext","NoiseVoronoiNodeTemplateFactory","template","type","noiseVoronoi","group","noiseGenerators","data","title","frequency","displacement","distance","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","NoiseHandleType","ComputedPositionsData","NodePositionData","NoiseNodeType","NoiseTemplateGroup","NodePositionContext","PositionConstNodeTemplateFactory","template","type","position","group","positions","data","title","x","y","z","handles","Right","dataType","connection","pipeline","create","shouldRun","context","undefined","action","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","NoiseHandleType","ComputedPositionsData","GridPosition","NodeGridData","NoiseNodeType","NoiseTemplateGroup","NodeGridPositionContext","PositionGridNodeTemplateFactory","template","type","grid","group","positions","data","title","center","x","y","z","radius","handles","position","Right","dataType","connection","pipeline","create","shouldRun","context","undefined","action","i","j","push","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","CoreTemplateGroup","ITemplateFactory","NodeTemplate","NodeContext","IDGenerator","ComputedModuleData","NoiseModuleContext","Position","NoiseHandleType","NoiseNodeType","ModuleGroupNodeContext","module","ModuleGroupNodeTemplateFactory","template","id","type","groupModule","group","groups","data","title","isGroup","initialSize","width","height","collapsedSize","handles","position","Bottom","dataType","connection","maxConnections","hideOnCollapse","Right","pipeline","create","shouldRun","context","incoming","action","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Abs","ModifierModule","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseAbsNodeContext","module","NoiseAbsNodeTemplateFactory","template","type","noiseAbs","group","noiseModifiers","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Clamp","ModifierModule","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeClampNoiseData","NoiseModuleContext","NoiseNodeType","NoiseClampNodeContext","module","NoiseClampNodeTemplateFactory","template","type","noiseClamp","group","noiseModifiers","data","title","lowerBound","upperBound","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","clampModule","sourceModule","cleanup","Add","Max","Min","Multiply","Power","NoiseCombineType","add","max","min","multiply","power","noiseCombineModuleMap","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","CombinerModule","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeCombineNoiseData","NoiseModuleContext","NoiseNodeType","NoiseCombineType","noiseCombineModuleMap","NoiseCombineNodeContext","module","NoiseCombineNodeTemplateFactory","template","type","noiseCombine","group","noiseModifiers","data","title","operation","add","handles","position","Left","dataType","connection","minConnections","maxConnections","Right","pipeline","create","shouldRun","context","incoming","length","action","ModuleFactory","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Curve","ModifierModule","Tuple","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeCurveNoiseData","NoiseModuleContext","NoiseNodeType","NoiseCurveNodeContext","module","NoiseCurveNodeTemplateFactory","template","type","noiseCurve","group","noiseModifiers","data","title","points","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","curve","map","p","input","output","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Exponent","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeExponentNoiseData","NoiseModuleContext","NoiseNodeType","NoiseExponentNodeContext","module","NoiseExponentNodeTemplateFactory","template","type","noiseExponent","group","noiseModifiers","data","title","exponent","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","exponentModule","cleanup","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Invert","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseInvertNodeContext","module","NoiseInvertNodeTemplateFactory","template","type","noiseInvert","group","noiseModifiers","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","IDGenerator","Position","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeNormalizeNoiseData","NoiseModuleContext","NoiseNodeType","NormalizeNoiseModule","NoiseNormalizeNodeContext","module","NoiseNormalizeNodeTemplateFactory","template","id","type","noiseNormalize","group","noiseModifiers","data","title","intervalStart","intervalEnd","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","normalizeModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","ScaleBias","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeScaleBiasNoiseData","NoiseModuleContext","NoiseNodeType","NoiseScaleBiasNodeContext","module","NoiseScaleBiasNodeTemplateFactory","template","type","noiseScaleBias","group","noiseModifiers","data","title","scale","bias","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","scaleBiasModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Terrace","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTerraceNoiseData","NoiseModuleContext","NoiseNodeType","NoiseTerraceNodeContext","module","NoiseTerraceNodeTemplateFactory","template","type","noiseTerrace","group","noiseModifiers","data","title","points","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","terrace","cleanup","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseLoggerContext","noise","NoiseLoggerNodeTemplateFactory","template","type","noiseLogger","group","output","data","title","handles","position","Left","dataType","connection","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","ComputedPositionsData","NoiseModuleContext","NoiseTemplateGroup","PositionNoiseValue","NoiseHandleType","NoiseNodeType","NoiseOutputContext","position","module","NoiseOutputNodeTemplateFactory","template","type","noiseOutput","group","output","data","title","handles","Left","dataType","connection","maxConnections","Right","noise","pipeline","create","action","context","incomingPositions","incoming","incomingModule","length","computed","input","positions","value","getValue","x","y","z","push","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","ComputedNoiseTextureData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseTextureDataContext","noise","NoiseTextureDataTemplateFactory","template","type","textureData","group","output","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","length","action","size","Math","ceil","sqrt","colors","flatMap","n","value","dataArray","Uint8Array","set","textureResolutionX","textureResolutionY","cleanup","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedPositionsData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","PositionLoggerNodeContext","position","PositionLoggerNodeTemplateFactory","template","type","positionLogger","group","positions","data","title","handles","Left","dataType","connection","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Blend","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseSourceControlHandle","NoiseNodeType","NoiseBlendNodeContext","source","control","NoiseBlendNodeTemplateFactory","template","type","noiseBlend","group","noiseSelectors","data","title","handles","position","Left","dataType","module","connection","label","dataId","groupBy","maxConnections","minConnections","Right","output","pipeline","create","shouldRun","context","incoming","length","action","incomingSources","incomingControl","computed","controlModule","sourceModuleA","sourceModuleB","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Select","NoiseTemplateGroup","NoiseHandleType","NoiseSourceControlHandle","ComputedModuleData","NodeSelectNoiseData","NoiseModuleContext","NoiseNodeType","NoiseSelectNodeContext","source","control","NoiseSelectNodeTemplateFactory","template","type","noiseSelect","group","noiseSelectors","data","title","edgeFalloff","lowerBound","upperBound","handles","position","Left","dataType","module","dataId","groupBy","connection","label","maxConnections","minConnections","Right","output","pipeline","create","shouldRun","context","incoming","length","action","incomingSources","incomingControl","computed","controlModule","sourceModuleA","sourceModuleB","cleanup","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Displace","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","DisplacementHandle","DisplacementModuleHandle","NoiseHandleType","NoiseNodeType","NoiseDisplaceNodeContext","sourceModule","xModule","yModule","zModule","NoiseDisplaceNodeTemplateFactory","template","Omit","type","noiseDisplace","group","noiseTransformers","data","title","handles","position","Left","connection","label","dataType","module","dataId","groupBy","maxConnections","Right","output","pipeline","create","shouldRun","context","incoming","computed","action","hasModules","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","RotatePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeRotatePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseRotatePointNodeContext","module","NoiseRotatePointNodeTemplateFactory","template","type","noiseRotatePoint","group","noiseTransformers","data","title","xAngle","yAngle","zAngle","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","ScalePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeScalePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseScalePointNodeContext","module","NoiseScalePointNodeTemplateFactory","template","type","noiseScalePoint","group","noiseTransformers","data","title","xScale","yScale","zScale","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","TranslatePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTranslatePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseTranslatePointNodeContext","module","NoiseTranslatePointNodeTemplateFactory","template","type","noiseTranslatePoint","group","noiseTransformers","data","title","translateX","translateY","translateZ","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","NodeContext","NodeVariablePropertyContext","Position","Turbulence","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTurbulenceNoiseData","NoiseGeneratorContext","NoiseModuleContext","NoiseNodeType","IncomingPropertyValueMiddleware","NoiseTurbulenceNodeContext","module","variableProperty","NoiseTurbulenceNodeTemplateFactory","template","type","noiseTurbulence","group","noiseTransformers","data","title","frequency","power","roughness","seed","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","properties","sourceModule","cleanup","ITemplateFactory","NodeTypes","ModuleGroupNode","NoiseBillowNode","NoiseCheckerboardNode","NoiseConstNode","NoiseCylindersNode","NoisePerlinNode","NoiseRidgedMultiNode","NoiseSpheresNode","NoiseVoronoiNode","PositionConstNode","PositionGridNode","NoiseAbsNode","NoiseClampNode","NoiseCombineNode","NoiseCurveNode","NoiseExponentNode","NoiseInvertNode","NoiseNormalizeNode","NoiseScaleBiasNode","NoiseTerraceNode","NoiseLoggerNode","NoiseOutputNode","NoiseTextureDataNode","PositionsLoggerNode","NoiseBlendNode","NoiseSelectNode","NoiseDisplaceNode","NoiseRotatePointNode","NoiseScalePointNode","NoiseTranslatePointNode","NoiseTurbulenceNode","NoiseBillowNodeTemplateFactory","NoiseCheckerboardNodeTemplateFactory","NoiseConstNodeTemplateFactory","NoiseCylindersNodeTemplateFactory","NoisePerlinNodeTemplateFactory","NoiseRidgedMultiNodeTemplateFactory","NoiseSpheresNodeTemplateFactory","NoiseVoronoiNodeTemplateFactory","PositionConstNodeTemplateFactory","PositionGridNodeTemplateFactory","ModuleGroupNodeTemplateFactory","NoiseAbsNodeTemplateFactory","NoiseClampNodeTemplateFactory","NoiseCombineNodeTemplateFactory","NoiseCurveNodeTemplateFactory","NoiseExponentNodeTemplateFactory","NoiseInvertNodeTemplateFactory","NoiseNormalizeNodeTemplateFactory","NoiseScaleBiasNodeTemplateFactory","NoiseTerraceNodeTemplateFactory","NoiseLoggerNodeTemplateFactory","NoiseOutputNodeTemplateFactory","NoiseTextureDataTemplateFactory","PositionLoggerNodeTemplateFactory","NoiseBlendNodeTemplateFactory","NoiseSelectNodeTemplateFactory","NoiseDisplaceNodeTemplateFactory","NoiseRotatePointNodeTemplateFactory","NoiseScalePointNodeTemplateFactory","NoiseTranslatePointNodeTemplateFactory","NoiseTurbulenceNodeTemplateFactory","NoiseNodeType","position","grid","textureData","groupModule","positionLogger","noiseLogger","noiseOutput","noiseConst","noiseBillow","noiseCheckerboard","noiseNormalize","noiseCylinders","noisePerlin","noiseRidgedMulti","noiseSpheres","noiseVoronoi","noiseCombine","noiseClamp","noiseAbs","noiseCurve","noiseExponent","noiseInvert","noiseScaleBias","noiseTerrace","noiseBlend","noiseSelect","noiseDisplace","noiseRotatePoint","noiseScalePoint","noiseTranslatePoint","noiseTurbulence","noiseNodeTypes","noiseNodeTemplates","Record"],"sources":["../src/abstract/handle-types.ts","../src/nodes/output/noise-logger-node.tsx","../src/nodes/output/noise-output-node.tsx","../src/nodes/output/noise-texture-data-node.tsx","../src/nodes/output/positions-logger-node.tsx","../src/abstract/templates.ts","../src/middleware/incoming-property-value.ts","../src/templates/generators/noise-billow-template.ts","../src/templates/generators/noise-checkerboard-template.ts","../src/templates/generators/noise-const-template.ts","../src/templates/generators/noise-cylinders-template.ts","../src/templates/generators/noise-perlin-template.ts","../src/templates/generators/noise-ridgedmulti-template.ts","../src/templates/generators/noise-spheres-template.ts","../src/templates/generators/noise-voronoi-template.ts","../src/templates/generators/position-const-template.ts","../src/templates/generators/position-grid-template.ts","../src/templates/groups/module-group-template.ts","../src/templates/modifiers/noise-abs-template.ts","../src/templates/modifiers/noise-clamp-template.ts","../src/abstract/operations.ts","../src/templates/modifiers/noise-combine-template.ts","../src/templates/modifiers/noise-curve-template.ts","../src/templates/modifiers/noise-exponent-template.ts","../src/templates/modifiers/noise-invert-template.ts","../src/templates/modifiers/noise-normalize-template.ts","../src/templates/modifiers/noise-scalebias-template.ts","../src/templates/modifiers/noise-terrace-template.ts","../src/templates/output/noise-logger-template.ts","../src/templates/output/noise-output-template.ts","../src/templates/output/noise-texture-data-template.ts","../src/templates/output/position-logger-template.ts","../src/templates/selectors/noise-blend-template.ts","../src/templates/selectors/noise-select-template.ts","../src/templates/transformers/noise-displace-template.ts","../src/templates/transformers/noise-rotate-point-template.ts","../src/templates/transformers/noise-scale-point-template.ts","../src/templates/transformers/noise-translate-point-template.ts","../src/templates/transformers/noise-turbulence-template.ts","../src/abstract/node-types.ts"],"sourcesContent":["import { CustomNodeHandle } from '@awesome-flow/core/abstract';\n\nexport enum NoiseHandleType {\n textureData = 'texture-data',\n noise = 'noise',\n position = 'position',\n module = 'module'\n}\n\nexport enum DisplacementHandle {\n sourceModule = 'source',\n xModule = 'x-module',\n yModule = 'y-module',\n zModule = 'z-module',\n output = 'output'\n}\n\nexport enum NoiseSourceControlHandle {\n source = 'source',\n control = 'control',\n output = 'output'\n}\n\nexport type DisplacementModuleHandle = CustomNodeHandle & {\n dataId: DisplacementHandle;\n};\n\nexport type NoiseSourceControlModuleHandle = CustomNodeHandle & {\n dataId: NoiseSourceControlHandle;\n};\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\nimport { NoiseHandleType } from '../../abstract';\nimport { NoiseLoggerContext } from '../../templates';\n\nfunction NoiseLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseLoggerContext>(id)?.incoming?.[NoiseHandleType.noise];\n const noise = context?.filter((c) => c.computed?.noise).flatMap((c) => c.computed.noise) || [];\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {noise?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {noise?.map((v, i) => (\n <Text key={i}>\n {v.position?.x}:{v.position?.y}:{v.position?.z}: {v.value}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseLoggerNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { NoiseOutputContext } from '@awesome-flow/noise/templates';\nimport { Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\n\nfunction NoiseOutputNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseOutputContext>(id);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus nodeId={id} handles={data.handles} />\n <Text mt={5}>Noise points: {context?.computed?.noise?.length || 0}</Text>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseOutputNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { NoiseTextureDataContext } from '@awesome-flow/noise/templates';\nimport { Group, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\n\nfunction NoiseTextureDataNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseTextureDataContext>(id)?.computed;\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Resolution: {context?.textureResolutionX}x{context?.textureResolutionY}\n </Group>\n <Group>Input Length: {context?.textureData?.length || 0}</Group>\n <Group>\n Output Length ({context?.textureResolutionX}*{context?.textureResolutionY}*4): {context?.textureData?.length || 0}\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseTextureDataNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\nimport { NoiseHandleType } from '../../abstract';\nimport { PositionLoggerNodeContext } from '../../templates';\n\nfunction PositionsLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useNodeContext<PositionLoggerNodeContext>(id)?.incoming[NoiseHandleType.position];\n const positions = incoming\n ?.filter((p) => !!p.computed?.positions?.length)\n .flatMap((p) => p.computed.positions);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {positions?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {positions?.map((v, i) => (\n <Text key={i}>\n {v.x}:{v.y}:{v.z}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(PositionsLoggerNode);\n","export enum NoiseTemplateGroup {\n positions = 'Positions',\n output = 'Output',\n noiseGenerators = 'Noise Generators',\n noiseModifiers = 'Noise Modifiers',\n noiseSelectors = 'Noise Selectors',\n noiseTransformers = 'Noise Transformers'\n}\n","import { IMiddleware } from '@awesome-ecs/abstract/pipelines';\nimport { CoreHandleType } from '@awesome-flow/core/abstract';\nimport { NoiseGeneratorContext } from '../abstract/node-props';\n\nexport class IncomingPropertyValueMiddleware implements IMiddleware<NoiseGeneratorContext<any>> {\n action(context: NoiseGeneratorContext<any>): void {\n const incoming = context.incoming?.[CoreHandleType.variableProperty] ?? [];\n\n const properties = { ...context.data };\n\n for (const connection of incoming) {\n const overwrite = connection.computed;\n\n if (overwrite) {\n Object.assign(properties, { [overwrite.property]: overwrite.value });\n }\n }\n\n context.properties = properties;\n }\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { Billow } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseBillowContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoiseBillowNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseBillow,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Billow Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseBillowContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseBillowContext) => {\n const { properties } = context;\n\n context.computed = {\n module: new Billow(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseBillowContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { Checkerboard } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseCheckerboardContext = NodeContext<BasicNodeData, ComputedModuleData>;\n\nexport class NoiseCheckerboardNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseCheckerboard,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Checkerboard Noise'\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCheckerboardContext> = PipelineFactory.create({\n action: (context: NoiseCheckerboardContext) => {\n context.computed = {\n module: new Checkerboard()\n };\n },\n cleanup: (context: NoiseCheckerboardContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Const } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeConstNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseConstContext = NodeContext<NodeConstNoiseData, ComputedModuleData>;\n\nexport class NoiseConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeConstNoiseData> = {\n type: NoiseNodeType.noiseConst,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Const Value Noise',\n noise: 0,\n min: -1,\n max: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseConstContext> = PipelineFactory.create<NoiseConstContext>({\n shouldRun(context: NoiseConstContext) {\n return context.data.noise !== undefined && context.data.noise !== null;\n },\n action(context: NoiseConstContext) {\n const module = new Const(context.data.noise);\n context.computed = { module };\n },\n cleanup(context: NoiseConstContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Cylinders } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCylindersNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseCylindersContext = NoiseGeneratorContext<NodeCylindersNoiseData>;\n\nexport class NoiseCylindersNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCylindersNoiseData> = {\n type: NoiseNodeType.noiseCylinders,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Cylinders Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCylindersContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseCylindersContext) => {\n const { properties } = context;\n context.computed = {\n module: new Cylinders(properties.frequency)\n };\n },\n cleanup: (context: NoiseCylindersContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Perlin } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoisePerlinContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoisePerlinNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n type: NoiseNodeType.noisePerlin,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Perlin Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoisePerlinContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoisePerlinContext) => {\n const { properties } = context;\n context.computed = {\n module: new Perlin(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoisePerlinContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { RidgedMulti } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeRidgedNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseRidgedMultiContext = NoiseGeneratorContext<NodeRidgedNoiseData>;\n\nexport class NoiseRidgedMultiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRidgedNoiseData> = {\n type: NoiseNodeType.noiseRidgedMulti,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Ridged Multi Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 6,\n offset: 1.0,\n gain: 2.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseRidgedMultiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseRidgedMultiContext) => {\n const { properties } = context;\n context.computed = {\n module: new RidgedMulti(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.offset,\n properties.gain,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseRidgedMultiContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Spheres } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeSpheresNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseSpheresContext = NoiseGeneratorContext<NodeSpheresNoiseData>;\n\nexport class NoiseSpheresNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSpheresNoiseData> = {\n type: NoiseNodeType.noiseSpheres,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Spheres Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseSpheresContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseSpheresContext) => {\n const { properties } = context;\n context.computed = {\n module: new Spheres(properties.frequency)\n };\n },\n cleanup: (context: NoiseSpheresContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Voronoi } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeVoronoiNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseVoronoiContext = NoiseGeneratorContext<NodeVoronoiNoiseData>;\n\nexport class NoiseVoronoiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeVoronoiNoiseData> = {\n type: NoiseNodeType.noiseVoronoi,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Voronoi Noise',\n frequency: 0.1,\n displacement: 1.0,\n distance: true,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseVoronoiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseVoronoiContext) => {\n const { properties } = context;\n context.computed = {\n module: new Voronoi(properties.frequency, properties.displacement, properties.distance, properties.seed)\n };\n },\n cleanup: (context: NoiseVoronoiContext) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, NodePositionData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodePositionContext = NodeContext<NodePositionData, ComputedPositionsData>;\n\nexport class PositionConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodePositionData> = {\n type: NoiseNodeType.position,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Output',\n position: { x: 0, y: 0, z: 0 }\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodePositionContext>({\n shouldRun(context: NodePositionContext) {\n return context.data.position !== undefined && context.data.position !== null;\n },\n action(context: NodePositionContext) {\n const { data } = context;\n\n context.computed = {\n positions: [data.position]\n };\n },\n cleanup(context: NodePositionContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, Position as GridPosition, NodeGridData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodeGridPositionContext = NodeContext<NodeGridData, ComputedPositionsData>;\n\nexport class PositionGridNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeGridData> = {\n type: NoiseNodeType.grid,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Grid Output',\n center: { x: 0, y: 0, z: 0 },\n radius: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodeGridPositionContext>({\n shouldRun(context: NodeGridPositionContext) {\n const { center, radius } = context.data;\n return center !== undefined && radius !== undefined;\n },\n action(context: NodeGridPositionContext) {\n const { data } = context;\n const { center, radius } = data;\n\n const positions: GridPosition[] = [];\n\n for (let i = -radius; i < radius; i++) {\n for (let j = -radius; j < radius; j++) {\n positions.push({ x: center.x + i, y: center.y + j, z: center.z });\n }\n }\n\n context.computed = {\n positions\n };\n },\n cleanup(context: NodeGridPositionContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, CoreTemplateGroup, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { ComputedModuleData, NoiseModuleContext } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type ModuleGroupNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class ModuleGroupNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.groupModule,\n group: CoreTemplateGroup.groups,\n data: {\n title: 'Modules Group',\n isGroup: true,\n initialSize: {\n width: 300,\n height: 200\n },\n collapsedSize: {\n width: 300,\n height: 80\n }\n },\n handles: [\n {\n position: Position.Bottom,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1,\n hideOnCollapse: true\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<ModuleGroupNodeContext> = PipelineFactory.create({\n shouldRun(context: ModuleGroupNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action: (context: ModuleGroupNodeContext) => {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n context.computed = { module };\n },\n cleanup: (context: ModuleGroupNodeContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Abs, ModifierModule } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseAbsNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseAbsNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseAbs,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Abs Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseAbsNodeContext> = PipelineFactory.create({\n shouldRun(context: NoiseAbsNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseAbsNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else {\n context.computed = { module: new Abs(module) };\n }\n }\n },\n cleanup(context: NoiseAbsNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Clamp, ModifierModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeClampNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseClampNodeContext = NodeContext<\n NodeClampNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseClampNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeClampNoiseData> = {\n type: NoiseNodeType.noiseClamp,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Clamp Noise',\n lowerBound: -1,\n upperBound: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseClampNodeContext>({\n shouldRun(context: NoiseClampNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseClampNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const clampModule = context.computed?.module as Clamp;\n\n if (clampModule) {\n clampModule.sourceModule = module;\n clampModule.lowerBound = context.data.lowerBound;\n clampModule.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Clamp(module, context.data.lowerBound, context.data.upperBound)\n };\n }\n }\n },\n cleanup(context: NoiseClampNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { Add, Max, Min, Multiply, Power } from 'libnoise-simplex-ts';\n\nexport enum NoiseCombineType {\n add = 'add',\n max = 'max',\n min = 'min',\n multiply = 'multiply',\n power = 'power'\n}\n\nexport const noiseCombineModuleMap = {\n [NoiseCombineType.add]: Add,\n [NoiseCombineType.max]: Max,\n [NoiseCombineType.min]: Min,\n [NoiseCombineType.multiply]: Multiply,\n [NoiseCombineType.power]: Power\n};\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { CombinerModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCombineNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseCombineType, noiseCombineModuleMap } from '../../abstract/operations';\n\nexport type NoiseCombineNodeContext = NodeContext<\n NodeCombineNoiseData,\n ComputedModuleData<CombinerModule>,\n { [NoiseHandleType.module]: NoiseModuleContext[] }\n>;\n\nexport class NoiseCombineNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCombineNoiseData> = {\n type: NoiseNodeType.noiseCombine,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Combine Noise',\n operation: NoiseCombineType.add\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n minConnections: 2,\n maxConnections: 2\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCombineNodeContext>({\n shouldRun(context: NoiseCombineNodeContext): boolean {\n return context.incoming[NoiseHandleType.module]?.length === 2;\n },\n action(context: NoiseCombineNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n\n const ModuleFactory = noiseCombineModuleMap[context.data.operation];\n const module = new ModuleFactory(incoming[0].computed?.module, incoming[1].computed?.module);\n\n context.computed = { module };\n },\n cleanup(context: NoiseCombineNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Curve, ModifierModule, Tuple } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCurveNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseCurveNodeContext = NodeContext<\n NodeCurveNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseCurveNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCurveNoiseData> = {\n type: NoiseNodeType.noiseCurve,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Curve',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCurveNodeContext>({\n shouldRun(context: NoiseCurveNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseCurveNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const curve = new Curve(\n module,\n context.data.points.map((p) => new Tuple(p.input, p.output))\n );\n context.computed = { module: curve };\n }\n },\n cleanup(context: NoiseCurveNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Exponent } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeExponentNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseExponentNodeContext = NodeContext<\n NodeExponentNoiseData,\n ComputedModuleData<Exponent>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseExponentNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeExponentNoiseData> = {\n type: NoiseNodeType.noiseExponent,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Exponent',\n exponent: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseExponentNodeContext>({\n shouldRun(context: NoiseExponentNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseExponentNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.exponent = context.data.exponent;\n } else if (module) {\n const exponentModule = new Exponent(module, context.data.exponent);\n context.computed = { module: exponentModule };\n }\n },\n cleanup(context: NoiseExponentNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Invert } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseInvertNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Invert>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseInvertNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseInvert,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Invert Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseInvertNodeContext>({\n shouldRun(context: NoiseInvertNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseInvertNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else if (module) {\n context.computed = { module: new Invert(module) };\n }\n },\n cleanup(context: NoiseInvertNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeNormalizeNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NormalizeNoiseModule } from '../../modules';\n\nexport type NoiseNormalizeNodeContext = NodeContext<\n NodeNormalizeNoiseData,\n ComputedModuleData<NormalizeNoiseModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseNormalizeNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeNormalizeNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseNormalize,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Normalize Noise',\n intervalStart: -1,\n intervalEnd: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseNormalizeNodeContext>({\n shouldRun(context: NoiseNormalizeNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseNormalizeNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const normalizeModule = new NormalizeNoiseModule(module, context.data.intervalStart, context.data.intervalEnd);\n context.computed = { module: normalizeModule };\n }\n },\n cleanup(context: NoiseNormalizeNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ScaleBias } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScaleBiasNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScaleBiasNodeContext = NodeContext<\n NodeScaleBiasNoiseData,\n ComputedModuleData<ScaleBias>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseScaleBiasNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScaleBiasNoiseData> = {\n type: NoiseNodeType.noiseScaleBias,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Scale/Bias Noise',\n scale: 1.0,\n bias: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScaleBiasNodeContext>({\n shouldRun(context: NoiseScaleBiasNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseScaleBiasNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n context.computed.module.scale = context.data.scale;\n context.computed.module.bias = context.data.bias;\n } else if (module) {\n const scaleBiasModule = new ScaleBias(module, context.data.scale, context.data.bias);\n context.computed = { module: scaleBiasModule };\n }\n },\n cleanup(context: NoiseScaleBiasNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Terrace } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTerraceNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTerraceNodeContext = NodeContext<\n NodeTerraceNoiseData,\n ComputedModuleData<Terrace>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTerraceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTerraceNoiseData> = {\n type: NoiseNodeType.noiseTerrace,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Terrace',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTerraceNodeContext>({\n shouldRun(context: NoiseTerraceNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseTerraceNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const terrace = new Terrace(module, context.data.points);\n context.computed = { module: terrace };\n }\n },\n cleanup(context: NoiseTerraceNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseLoggerContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData>[] }\n>;\n\nexport class NoiseLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseLogger,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target'\n }\n ]\n };\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport {\n ComputedNoiseData,\n ComputedPositionsData,\n NoiseModuleContext,\n NoiseTemplateGroup,\n PositionNoiseValue\n} from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseOutputContext = NodeContext<\n BasicNodeData,\n ComputedNoiseData,\n {\n [NoiseHandleType.position]: NodeContext<any, ComputedPositionsData>[];\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseOutputNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseOutput,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Output'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.noise,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseOutputContext> = PipelineFactory.create({\n action: (context) => {\n const incomingPositions = context.incoming[NoiseHandleType.position];\n const incomingModule = context.incoming[NoiseHandleType.module];\n\n if (incomingPositions?.length && incomingModule?.computed?.module) {\n const { module } = incomingModule.computed;\n\n const noise: PositionNoiseValue[] = [];\n\n for (const input of incomingPositions) {\n const { positions } = input.computed;\n for (const position of positions) {\n const value = module.getValue(position.x, position.y, position.z);\n\n noise.push({\n position,\n value\n });\n }\n }\n\n context.computed = {\n noise\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, ComputedNoiseTextureData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTextureDataContext = NodeContext<\n BasicNodeData,\n ComputedNoiseTextureData,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData> }\n>;\n\nexport class NoiseTextureDataTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.textureData,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Texture Data'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.textureData,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseTextureDataContext> = PipelineFactory.create({\n shouldRun: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n return !!incoming?.computed?.noise.length;\n },\n action: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n const noise = incoming?.computed?.noise;\n\n const size = Math.ceil(Math.sqrt(noise.length));\n\n const colors = noise.flatMap((n) => [n.value * 255, n.value * 255, n.value * 255, 255]);\n const dataArray = new Uint8Array(size * size * 4);\n dataArray.set(colors);\n\n context.computed = {\n textureData: dataArray,\n textureResolutionX: size,\n textureResolutionY: size\n };\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedPositionsData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type PositionLoggerNodeContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseNodeType.position]: NodeContext<any, ComputedPositionsData>[] }\n>;\n\nexport class PositionLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.positionLogger,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n }\n ]\n };\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Blend } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseBlendNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Blend>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseBlendNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseBlend,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Blend'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Modules',\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseBlendNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n } else {\n context.computed = {\n module: new Blend(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Select } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeSelectNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseSelectNodeContext = NodeContext<\n NodeSelectNoiseData,\n ComputedModuleData<Select>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseSelectNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSelectNoiseData> = {\n type: NoiseNodeType.noiseSelect,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Select',\n edgeFalloff: 0.0,\n lowerBound: -1.0,\n upperBound: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Source Modules',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseSelectNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n context.computed.module.edgeFalloff = context.data.edgeFalloff;\n context.computed.module.lowerBound = context.data.lowerBound;\n context.computed.module.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Select(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module,\n context.data.edgeFalloff,\n context.data.lowerBound,\n context.data.upperBound\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Displace } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { DisplacementHandle, DisplacementModuleHandle, NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseDisplaceNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Displace>,\n {\n [DisplacementHandle.sourceModule]: NoiseModuleContext;\n [DisplacementHandle.xModule]: NoiseModuleContext;\n [DisplacementHandle.yModule]: NoiseModuleContext;\n [DisplacementHandle.zModule]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseDisplaceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData, Omit<DisplacementModuleHandle, 'handleId'>> = {\n type: NoiseNodeType.noiseDisplace,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Displace'\n },\n handles: [\n {\n position: Position.Left,\n connection: 'target',\n label: 'Source Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.sourceModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'X Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.xModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Y Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.yModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Z Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.zModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseDisplaceNodeContext>({\n shouldRun: (context) => {\n return (\n !!context.incoming[DisplacementHandle.sourceModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.xModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.yModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.zModule]?.computed?.module\n );\n },\n action: (context) => {\n const sourceModule = context.incoming[DisplacementHandle.sourceModule].computed.module;\n const xModule = context.incoming[DisplacementHandle.xModule].computed.module;\n const yModule = context.incoming[DisplacementHandle.yModule].computed.module;\n const zModule = context.incoming[DisplacementHandle.zModule].computed.module;\n\n const hasModules = !!sourceModule && !!xModule && !!yModule && !!zModule;\n\n if (context.computed?.module) {\n if (hasModules) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xModule = xModule;\n context.computed.module.yModule = yModule;\n context.computed.module.zModule = zModule;\n }\n } else {\n context.computed = {\n module: new Displace(sourceModule, xModule, yModule, zModule)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { RotatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeRotatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseRotatePointNodeContext = NodeContext<\n NodeRotatePointNoiseData,\n ComputedModuleData<RotatePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseRotatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRotatePointNoiseData> = {\n type: NoiseNodeType.noiseRotatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Rotate Point',\n xAngle: 0.0,\n yAngle: 0.0,\n zAngle: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseRotatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xAngle, yAngle, zAngle } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xAngle = xAngle;\n context.computed.module.yAngle = yAngle;\n context.computed.module.zAngle = zAngle;\n } else {\n context.computed = {\n module: new RotatePoint(sourceModule, xAngle, yAngle, zAngle)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ScalePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScalePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScalePointNodeContext = NodeContext<\n NodeScalePointNoiseData,\n ComputedModuleData<ScalePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseScalePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScalePointNoiseData> = {\n type: NoiseNodeType.noiseScalePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Scale Point',\n xScale: 1.0,\n yScale: 1.0,\n zScale: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScalePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xScale, yScale, zScale } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xScale = xScale;\n context.computed.module.yScale = yScale;\n context.computed.module.zScale = zScale;\n } else {\n context.computed = {\n module: new ScalePoint(sourceModule, xScale, yScale, zScale)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { TranslatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTranslatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTranslatePointNodeContext = NodeContext<\n NodeTranslatePointNoiseData,\n ComputedModuleData<TranslatePoint>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTranslatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTranslatePointNoiseData> = {\n type: NoiseNodeType.noiseTranslatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Translate Point',\n translateX: 0.0,\n translateY: 0.0,\n translateZ: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTranslatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { translateX, translateY, translateZ } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.translateX = translateX;\n context.computed.module.translateY = translateY;\n context.computed.module.translateZ = translateZ;\n } else {\n context.computed = {\n module: new TranslatePoint(sourceModule, translateX, translateY, translateZ)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { NodeVariablePropertyContext } from '@awesome-flow/core/templates';\nimport { Position } from '@xyflow/system';\nimport { Turbulence } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport {\n ComputedModuleData,\n NodeTurbulenceNoiseData,\n NoiseGeneratorContext,\n NoiseModuleContext\n} from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseTurbulenceNodeContext = NodeContext<\n NodeTurbulenceNoiseData,\n ComputedModuleData<Turbulence>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n [CoreHandleType.variableProperty]: NodeVariablePropertyContext[];\n }\n> &\n NoiseGeneratorContext<NodeTurbulenceNoiseData>;\n\nexport class NoiseTurbulenceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTurbulenceNoiseData> = {\n type: NoiseNodeType.noiseTurbulence,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Turbulence',\n frequency: 1.0,\n power: 1.0,\n roughness: 1.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n label: 'Variable Properties',\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context: NoiseTurbulenceNodeContext) => {\n const { properties } = context;\n const incoming = context.incoming[NoiseHandleType.module].computed.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = incoming;\n context.computed.module.frequency = properties.frequency;\n context.computed.module.power = properties.power;\n context.computed.module.roughness = properties.roughness;\n context.computed.module.seed = properties.seed;\n } else {\n context.computed = {\n module: new Turbulence(incoming, properties.frequency, properties.power, properties.roughness, properties.seed)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { ITemplateFactory } from '@awesome-flow/core/abstract';\nimport { NodeTypes } from '@xyflow/react';\nimport { ModuleGroupNode } from '../nodes';\nimport NoiseBillowNode from '../nodes/generators/noise-billow-node';\nimport NoiseCheckerboardNode from '../nodes/generators/noise-checkerboard-node';\nimport NoiseConstNode from '../nodes/generators/noise-const-node';\nimport NoiseCylindersNode from '../nodes/generators/noise-cylinders-node';\nimport NoisePerlinNode from '../nodes/generators/noise-perlin-node';\nimport NoiseRidgedMultiNode from '../nodes/generators/noise-ridgedmulti-node';\nimport NoiseSpheresNode from '../nodes/generators/noise-spheres-node';\nimport NoiseVoronoiNode from '../nodes/generators/noise-voronoi-node';\nimport PositionConstNode from '../nodes/generators/position-const-node';\nimport PositionGridNode from '../nodes/generators/position-grid-node';\nimport NoiseAbsNode from '../nodes/modifiers/noise-abs-node';\nimport NoiseClampNode from '../nodes/modifiers/noise-clamp-node';\nimport NoiseCombineNode from '../nodes/modifiers/noise-combine-node';\nimport NoiseCurveNode from '../nodes/modifiers/noise-curve-node';\nimport NoiseExponentNode from '../nodes/modifiers/noise-exponent-node';\nimport NoiseInvertNode from '../nodes/modifiers/noise-invert-node';\nimport NoiseNormalizeNode from '../nodes/modifiers/noise-normalize-node';\nimport NoiseScaleBiasNode from '../nodes/modifiers/noise-scale-bias-node';\nimport NoiseTerraceNode from '../nodes/modifiers/noise-terrace-node';\nimport NoiseLoggerNode from '../nodes/output/noise-logger-node';\nimport NoiseOutputNode from '../nodes/output/noise-output-node';\nimport NoiseTextureDataNode from '../nodes/output/noise-texture-data-node';\nimport PositionsLoggerNode from '../nodes/output/positions-logger-node';\nimport NoiseBlendNode from '../nodes/selectors/noise-blend-node';\nimport NoiseSelectNode from '../nodes/selectors/noise-select-node';\nimport NoiseDisplaceNode from '../nodes/transformers/noise-displace-node';\nimport NoiseRotatePointNode from '../nodes/transformers/noise-rotate-point-node';\nimport NoiseScalePointNode from '../nodes/transformers/noise-scale-point-node';\nimport NoiseTranslatePointNode from '../nodes/transformers/noise-translate-point-node';\nimport NoiseTurbulenceNode from '../nodes/transformers/noise-turbulence-node';\nimport { NoiseBillowNodeTemplateFactory } from '../templates/generators/noise-billow-template';\nimport { NoiseCheckerboardNodeTemplateFactory } from '../templates/generators/noise-checkerboard-template';\nimport { NoiseConstNodeTemplateFactory } from '../templates/generators/noise-const-template';\nimport { NoiseCylindersNodeTemplateFactory } from '../templates/generators/noise-cylinders-template';\nimport { NoisePerlinNodeTemplateFactory } from '../templates/generators/noise-perlin-template';\nimport { NoiseRidgedMultiNodeTemplateFactory } from '../templates/generators/noise-ridgedmulti-template';\nimport { NoiseSpheresNodeTemplateFactory } from '../templates/generators/noise-spheres-template';\nimport { NoiseVoronoiNodeTemplateFactory } from '../templates/generators/noise-voronoi-template';\nimport { PositionConstNodeTemplateFactory } from '../templates/generators/position-const-template';\nimport { PositionGridNodeTemplateFactory } from '../templates/generators/position-grid-template';\nimport { ModuleGroupNodeTemplateFactory } from '../templates/groups/module-group-template';\nimport { NoiseAbsNodeTemplateFactory } from '../templates/modifiers/noise-abs-template';\nimport { NoiseClampNodeTemplateFactory } from '../templates/modifiers/noise-clamp-template';\nimport { NoiseCombineNodeTemplateFactory } from '../templates/modifiers/noise-combine-template';\nimport { NoiseCurveNodeTemplateFactory } from '../templates/modifiers/noise-curve-template';\nimport { NoiseExponentNodeTemplateFactory } from '../templates/modifiers/noise-exponent-template';\nimport { NoiseInvertNodeTemplateFactory } from '../templates/modifiers/noise-invert-template';\nimport { NoiseNormalizeNodeTemplateFactory } from '../templates/modifiers/noise-normalize-template';\nimport { NoiseScaleBiasNodeTemplateFactory } from '../templates/modifiers/noise-scalebias-template';\nimport { NoiseTerraceNodeTemplateFactory } from '../templates/modifiers/noise-terrace-template';\nimport { NoiseLoggerNodeTemplateFactory } from '../templates/output/noise-logger-template';\nimport { NoiseOutputNodeTemplateFactory } from '../templates/output/noise-output-template';\nimport { NoiseTextureDataTemplateFactory } from '../templates/output/noise-texture-data-template';\nimport { PositionLoggerNodeTemplateFactory } from '../templates/output/position-logger-template';\nimport { NoiseBlendNodeTemplateFactory } from '../templates/selectors/noise-blend-template';\nimport { NoiseSelectNodeTemplateFactory } from '../templates/selectors/noise-select-template';\nimport { NoiseDisplaceNodeTemplateFactory } from '../templates/transformers/noise-displace-template';\nimport { NoiseRotatePointNodeTemplateFactory } from '../templates/transformers/noise-rotate-point-template';\nimport { NoiseScalePointNodeTemplateFactory } from '../templates/transformers/noise-scale-point-template';\nimport { NoiseTranslatePointNodeTemplateFactory } from '../templates/transformers/noise-translate-point-template';\nimport { NoiseTurbulenceNodeTemplateFactory } from '../templates/transformers/noise-turbulence-template';\n\nexport enum NoiseNodeType {\n position = 'position',\n grid = 'grid',\n textureData = 'texture-data',\n groupModule = 'group-module',\n positionLogger = 'position-logger',\n noiseLogger = 'noise-logger',\n noiseOutput = 'noise-output',\n noiseConst = 'noise-constant',\n noiseBillow = 'noise-billow',\n noiseCheckerboard = 'noise-checkerboard',\n noiseNormalize = 'noise-normalize',\n noiseCylinders = 'noise-cylinders',\n noisePerlin = 'noise-perlin',\n noiseRidgedMulti = 'noise-ridged-multi',\n noiseSpheres = 'noise-spheres',\n noiseVoronoi = 'noise-voronoi',\n noiseCombine = 'noise-combiner',\n noiseClamp = 'noise-clamp',\n noiseAbs = 'noise-abs',\n noiseCurve = 'noise-curve',\n noiseExponent = 'noise-exponent',\n noiseInvert = 'noise-invert',\n noiseScaleBias = 'noise-scale-bias',\n noiseTerrace = 'noise-terrace',\n noiseBlend = 'noise-blend',\n noiseSelect = 'noise-select',\n noiseDisplace = 'noise-displace',\n noiseRotatePoint = 'noise-rotate-point',\n noiseScalePoint = 'noise-scale-point',\n noiseTranslatePoint = 'noise-translate-point',\n noiseTurbulence = 'noise-turbulence'\n}\n\nexport const noiseNodeTypes = {\n [NoiseNodeType.groupModule]: ModuleGroupNode,\n [NoiseNodeType.position]: PositionConstNode,\n [NoiseNodeType.grid]: PositionGridNode,\n [NoiseNodeType.noiseOutput]: NoiseOutputNode,\n [NoiseNodeType.textureData]: NoiseTextureDataNode,\n [NoiseNodeType.noiseLogger]: NoiseLoggerNode,\n [NoiseNodeType.positionLogger]: PositionsLoggerNode,\n [NoiseNodeType.noiseConst]: NoiseConstNode,\n [NoiseNodeType.noiseBillow]: NoiseBillowNode,\n [NoiseNodeType.noiseCheckerboard]: NoiseCheckerboardNode,\n [NoiseNodeType.noiseCylinders]: NoiseCylindersNode,\n [NoiseNodeType.noisePerlin]: NoisePerlinNode,\n [NoiseNodeType.noiseRidgedMulti]: NoiseRidgedMultiNode,\n [NoiseNodeType.noiseSpheres]: NoiseSpheresNode,\n [NoiseNodeType.noiseVoronoi]: NoiseVoronoiNode,\n [NoiseNodeType.noiseCombine]: NoiseCombineNode,\n [NoiseNodeType.noiseClamp]: NoiseClampNode,\n [NoiseNodeType.noiseAbs]: NoiseAbsNode,\n [NoiseNodeType.noiseNormalize]: NoiseNormalizeNode,\n [NoiseNodeType.noiseCurve]: NoiseCurveNode,\n [NoiseNodeType.noiseExponent]: NoiseExponentNode,\n [NoiseNodeType.noiseInvert]: NoiseInvertNode,\n [NoiseNodeType.noiseScaleBias]: NoiseScaleBiasNode,\n [NoiseNodeType.noiseTerrace]: NoiseTerraceNode,\n [NoiseNodeType.noiseBlend]: NoiseBlendNode,\n [NoiseNodeType.noiseSelect]: NoiseSelectNode,\n [NoiseNodeType.noiseDisplace]: NoiseDisplaceNode,\n [NoiseNodeType.noiseRotatePoint]: NoiseRotatePointNode,\n [NoiseNodeType.noiseScalePoint]: NoiseScalePointNode,\n [NoiseNodeType.noiseTranslatePoint]: NoiseTranslatePointNode,\n [NoiseNodeType.noiseTurbulence]: NoiseTurbulenceNode\n} satisfies NodeTypes;\n\nexport const noiseNodeTemplates = {\n [NoiseNodeType.noiseOutput]: new NoiseOutputNodeTemplateFactory(),\n [NoiseNodeType.noiseBillow]: new NoiseBillowNodeTemplateFactory(),\n [NoiseNodeType.noiseCheckerboard]: new NoiseCheckerboardNodeTemplateFactory(),\n [NoiseNodeType.noiseNormalize]: new NoiseNormalizeNodeTemplateFactory(),\n [NoiseNodeType.noiseLogger]: new NoiseLoggerNodeTemplateFactory(),\n [NoiseNodeType.noiseConst]: new NoiseConstNodeTemplateFactory(),\n [NoiseNodeType.position]: new PositionConstNodeTemplateFactory(),\n [NoiseNodeType.positionLogger]: new PositionLoggerNodeTemplateFactory(),\n [NoiseNodeType.grid]: new PositionGridNodeTemplateFactory(),\n [NoiseNodeType.textureData]: new NoiseTextureDataTemplateFactory(),\n [NoiseNodeType.noiseCylinders]: new NoiseCylindersNodeTemplateFactory(),\n [NoiseNodeType.noisePerlin]: new NoisePerlinNodeTemplateFactory(),\n [NoiseNodeType.noiseRidgedMulti]: new NoiseRidgedMultiNodeTemplateFactory(),\n [NoiseNodeType.noiseSpheres]: new NoiseSpheresNodeTemplateFactory(),\n [NoiseNodeType.noiseVoronoi]: new NoiseVoronoiNodeTemplateFactory(),\n [NoiseNodeType.noiseCombine]: new NoiseCombineNodeTemplateFactory(),\n [NoiseNodeType.noiseClamp]: new NoiseClampNodeTemplateFactory(),\n [NoiseNodeType.noiseAbs]: new NoiseAbsNodeTemplateFactory(),\n [NoiseNodeType.noiseCurve]: new NoiseCurveNodeTemplateFactory(),\n [NoiseNodeType.noiseExponent]: new NoiseExponentNodeTemplateFactory(),\n [NoiseNodeType.noiseInvert]: new NoiseInvertNodeTemplateFactory(),\n [NoiseNodeType.noiseScaleBias]: new NoiseScaleBiasNodeTemplateFactory(),\n [NoiseNodeType.noiseTerrace]: new NoiseTerraceNodeTemplateFactory(),\n [NoiseNodeType.noiseBlend]: new NoiseBlendNodeTemplateFactory(),\n [NoiseNodeType.noiseSelect]: new NoiseSelectNodeTemplateFactory(),\n [NoiseNodeType.noiseDisplace]: new NoiseDisplaceNodeTemplateFactory(),\n [NoiseNodeType.noiseRotatePoint]: new NoiseRotatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseScalePoint]: new NoiseScalePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTranslatePoint]: new NoiseTranslatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTurbulence]: new NoiseTurbulenceNodeTemplateFactory(),\n [NoiseNodeType.groupModule]: new ModuleGroupNodeTemplateFactory()\n} satisfies Record<NoiseNodeType, ITemplateFactory>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract-2JON8rzd.mjs","names":["CustomNodeHandle","NoiseHandleType","textureData","noise","position","module","DisplacementHandle","sourceModule","xModule","yModule","zModule","output","NoiseSourceControlHandle","source","control","DisplacementModuleHandle","dataId","NoiseSourceControlModuleHandle","BasicNodeData","useNodeContext","NodeContainer","Divider","Stack","Text","Node","NodeProps","memo","NoiseHandleType","NoiseLoggerContext","NoiseLoggerNode","t0","$","_c","id","selected","data","type","context","incoming","noise","T0","T1","t1","t2","t3","t4","t5","t6","t7","filter","_temp","flatMap","_temp2","length","Symbol","for","map","_temp3","t8","t9","v","i","position","x","y","z","value","c_0","c","computed","BasicNodeData","HandlesIncomingDataStatus","useNodeContext","NodeContainer","NoiseOutputContext","Text","Node","NodeProps","memo","NoiseOutputNode","t0","$","_c","id","selected","data","type","context","t1","handles","t2","computed","noise","length","t3","t4","BasicNodeData","useNodeContext","NodeContainer","NoiseTextureDataContext","Group","Stack","Node","NodeProps","memo","NoiseTextureDataNode","t0","$","_c","id","selected","data","type","context","computed","t1","textureResolutionX","t2","textureResolutionY","t3","t4","textureData","length","t5","t6","t7","t8","t9","t10","t11","BasicNodeData","useNodeContext","NodeContainer","Divider","Stack","Text","Node","NodeProps","memo","NoiseHandleType","PositionLoggerNodeContext","PositionsLoggerNode","t0","$","_c","id","selected","data","type","incoming","position","T0","T1","t1","t2","t3","t4","t5","t6","t7","positions","filter","_temp","flatMap","_temp2","length","Symbol","for","map","_temp3","t8","t9","v","i","x","y","z","p_0","p","computed","NoiseTemplateGroup","positions","output","noiseGenerators","noiseModifiers","noiseSelectors","noiseTransformers","IMiddleware","CoreHandleType","NoiseGeneratorContext","IncomingPropertyValueMiddleware","action","context","incoming","variableProperty","properties","data","connection","overwrite","computed","Object","assign","property","value","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","IDGenerator","Position","Billow","NoiseHandleType","NodeFBMNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseBillowContext","NoiseBillowNodeTemplateFactory","template","id","type","noiseBillow","group","noiseGenerators","data","title","frequency","lacunarity","octaves","persistence","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","ComputedModuleData","Position","Checkerboard","NoiseHandleType","NoiseNodeType","NoiseTemplateGroup","NoiseCheckerboardContext","NoiseCheckerboardNodeTemplateFactory","template","type","noiseCheckerboard","group","noiseGenerators","data","title","handles","position","Right","dataType","module","connection","pipeline","create","action","context","computed","cleanup","IPipeline","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Const","NoiseHandleType","ComputedModuleData","NodeConstNoiseData","NoiseNodeType","NoiseTemplateGroup","NoiseConstContext","NoiseConstNodeTemplateFactory","template","type","noiseConst","group","noiseGenerators","data","title","noise","min","max","handles","position","Right","dataType","module","connection","pipeline","create","shouldRun","context","undefined","action","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Cylinders","NoiseHandleType","NodeCylindersNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseCylindersContext","NoiseCylindersNodeTemplateFactory","template","type","noiseCylinders","group","noiseGenerators","data","title","frequency","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Perlin","NoiseHandleType","NodeFBMNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoisePerlinContext","NoisePerlinNodeTemplateFactory","template","type","noisePerlin","group","noiseGenerators","data","title","frequency","lacunarity","octaves","persistence","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","RidgedMulti","NoiseHandleType","NodeRidgedNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseRidgedMultiContext","NoiseRidgedMultiNodeTemplateFactory","template","type","noiseRidgedMulti","group","noiseGenerators","data","title","frequency","lacunarity","octaves","offset","gain","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Spheres","NoiseHandleType","NodeSpheresNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseSpheresContext","NoiseSpheresNodeTemplateFactory","template","type","noiseSpheres","group","noiseGenerators","data","title","frequency","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","IPipeline","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","Position","Voronoi","NoiseHandleType","NodeVoronoiNoiseData","NoiseGeneratorContext","NoiseNodeType","NoiseTemplateGroup","IncomingPropertyValueMiddleware","NoiseVoronoiContext","NoiseVoronoiNodeTemplateFactory","template","type","noiseVoronoi","group","noiseGenerators","data","title","frequency","displacement","distance","seed","handles","position","Left","dataType","variableProperty","connection","Right","module","pipeline","create","action","context","properties","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","NoiseHandleType","ComputedPositionsData","NodePositionData","NoiseNodeType","NoiseTemplateGroup","NodePositionContext","PositionConstNodeTemplateFactory","template","type","position","group","positions","data","title","x","y","z","handles","Right","dataType","connection","pipeline","create","shouldRun","context","undefined","action","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","NoiseHandleType","ComputedPositionsData","GridPosition","NodeGridData","NoiseNodeType","NoiseTemplateGroup","NodeGridPositionContext","PositionGridNodeTemplateFactory","template","type","grid","group","positions","data","title","center","x","y","z","radius","handles","position","Right","dataType","connection","pipeline","create","shouldRun","context","undefined","action","i","j","push","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","CoreTemplateGroup","ITemplateFactory","NodeTemplate","NodeContext","IDGenerator","ComputedModuleData","NoiseModuleContext","Position","NoiseHandleType","NoiseNodeType","ModuleGroupNodeContext","module","ModuleGroupNodeTemplateFactory","template","id","type","groupModule","group","groups","data","title","isGroup","initialSize","width","height","collapsedSize","handles","position","Bottom","dataType","connection","maxConnections","hideOnCollapse","Right","pipeline","create","shouldRun","context","incoming","action","computed","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Abs","ModifierModule","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseAbsNodeContext","module","NoiseAbsNodeTemplateFactory","template","type","noiseAbs","group","noiseModifiers","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Clamp","ModifierModule","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeClampNoiseData","NoiseModuleContext","NoiseNodeType","NoiseClampNodeContext","module","NoiseClampNodeTemplateFactory","template","type","noiseClamp","group","noiseModifiers","data","title","lowerBound","upperBound","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","clampModule","sourceModule","cleanup","Add","Max","Min","Multiply","Power","NoiseCombineType","add","max","min","multiply","power","noiseCombineModuleMap","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","CombinerModule","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeCombineNoiseData","NoiseModuleContext","NoiseNodeType","NoiseCombineType","noiseCombineModuleMap","NoiseCombineNodeContext","module","NoiseCombineNodeTemplateFactory","template","type","noiseCombine","group","noiseModifiers","data","title","operation","add","handles","position","Left","dataType","connection","minConnections","maxConnections","Right","pipeline","create","shouldRun","context","incoming","length","action","ModuleFactory","computed","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Curve","ModifierModule","Tuple","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeCurveNoiseData","NoiseModuleContext","NoiseNodeType","NoiseCurveNodeContext","module","NoiseCurveNodeTemplateFactory","template","type","noiseCurve","group","noiseModifiers","data","title","points","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","curve","map","p","input","output","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Exponent","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeExponentNoiseData","NoiseModuleContext","NoiseNodeType","NoiseExponentNodeContext","module","NoiseExponentNodeTemplateFactory","template","type","noiseExponent","group","noiseModifiers","data","title","exponent","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","exponentModule","cleanup","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Invert","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseInvertNodeContext","module","NoiseInvertNodeTemplateFactory","template","type","noiseInvert","group","noiseModifiers","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","IDGenerator","Position","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeNormalizeNoiseData","NoiseModuleContext","NoiseNodeType","NormalizeNoiseModule","NoiseNormalizeNodeContext","module","NoiseNormalizeNodeTemplateFactory","template","id","type","noiseNormalize","group","noiseModifiers","data","title","intervalStart","intervalEnd","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","normalizeModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","ScaleBias","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeScaleBiasNoiseData","NoiseModuleContext","NoiseNodeType","NoiseScaleBiasNodeContext","module","NoiseScaleBiasNodeTemplateFactory","template","type","noiseScaleBias","group","noiseModifiers","data","title","scale","bias","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","sourceModule","scaleBiasModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Terrace","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTerraceNoiseData","NoiseModuleContext","NoiseNodeType","NoiseTerraceNodeContext","module","NoiseTerraceNodeTemplateFactory","template","type","noiseTerrace","group","noiseModifiers","data","title","points","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","action","computed","terrace","cleanup","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseLoggerContext","noise","NoiseLoggerNodeTemplateFactory","template","type","noiseLogger","group","output","data","title","handles","position","Left","dataType","connection","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","ComputedPositionsData","NoiseModuleContext","NoiseTemplateGroup","PositionNoiseValue","NoiseHandleType","NoiseNodeType","NoiseOutputContext","position","module","NoiseOutputNodeTemplateFactory","template","type","noiseOutput","group","output","data","title","handles","Left","dataType","connection","maxConnections","Right","noise","pipeline","create","action","context","incomingPositions","incoming","incomingModule","length","computed","input","positions","value","getValue","x","y","z","push","cleanup","IPipeline","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedNoiseData","ComputedNoiseTextureData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","NoiseTextureDataContext","noise","NoiseTextureDataTemplateFactory","template","type","textureData","group","output","data","title","handles","position","Left","dataType","connection","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","length","action","size","Math","ceil","sqrt","colors","flatMap","n","value","dataArray","Uint8Array","set","textureResolutionX","textureResolutionY","cleanup","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","ComputedPositionsData","NoiseTemplateGroup","NoiseHandleType","NoiseNodeType","PositionLoggerNodeContext","position","PositionLoggerNodeTemplateFactory","template","type","positionLogger","group","positions","data","title","handles","Left","dataType","connection","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Blend","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","NoiseHandleType","NoiseSourceControlHandle","NoiseNodeType","NoiseBlendNodeContext","source","control","NoiseBlendNodeTemplateFactory","template","type","noiseBlend","group","noiseSelectors","data","title","handles","position","Left","dataType","module","connection","label","dataId","groupBy","maxConnections","minConnections","Right","output","pipeline","create","shouldRun","context","incoming","length","action","incomingSources","incomingControl","computed","controlModule","sourceModuleA","sourceModuleB","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","Select","NoiseTemplateGroup","NoiseHandleType","NoiseSourceControlHandle","ComputedModuleData","NodeSelectNoiseData","NoiseModuleContext","NoiseNodeType","NoiseSelectNodeContext","source","control","NoiseSelectNodeTemplateFactory","template","type","noiseSelect","group","noiseSelectors","data","title","edgeFalloff","lowerBound","upperBound","handles","position","Left","dataType","module","dataId","groupBy","connection","label","maxConnections","minConnections","Right","output","pipeline","create","shouldRun","context","incoming","length","action","incomingSources","incomingControl","computed","controlModule","sourceModuleA","sourceModuleB","cleanup","PipelineFactory","BasicNodeData","ITemplateFactory","NodeTemplate","NodeContext","Position","Displace","ComputedModuleData","NoiseModuleContext","NoiseTemplateGroup","DisplacementHandle","DisplacementModuleHandle","NoiseHandleType","NoiseNodeType","NoiseDisplaceNodeContext","sourceModule","xModule","yModule","zModule","NoiseDisplaceNodeTemplateFactory","template","Omit","type","noiseDisplace","group","noiseTransformers","data","title","handles","position","Left","connection","label","dataType","module","dataId","groupBy","maxConnections","Right","output","pipeline","create","shouldRun","context","incoming","computed","action","hasModules","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","RotatePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeRotatePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseRotatePointNodeContext","module","NoiseRotatePointNodeTemplateFactory","template","type","noiseRotatePoint","group","noiseTransformers","data","title","xAngle","yAngle","zAngle","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","ScalePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeScalePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseScalePointNodeContext","module","NoiseScalePointNodeTemplateFactory","template","type","noiseScalePoint","group","noiseTransformers","data","title","xScale","yScale","zScale","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","ITemplateFactory","NodeTemplate","NodeContext","Position","TranslatePoint","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTranslatePointNoiseData","NoiseModuleContext","NoiseNodeType","NoiseTranslatePointNodeContext","module","NoiseTranslatePointNodeTemplateFactory","template","type","noiseTranslatePoint","group","noiseTransformers","data","title","translateX","translateY","translateZ","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","sourceModule","cleanup","PipelineFactory","CoreHandleType","ITemplateFactory","NodeTemplate","NodeContext","NodeVariablePropertyContext","Position","Turbulence","NoiseTemplateGroup","NoiseHandleType","ComputedModuleData","NodeTurbulenceNoiseData","NoiseGeneratorContext","NoiseModuleContext","NoiseNodeType","IncomingPropertyValueMiddleware","NoiseTurbulenceNodeContext","module","variableProperty","NoiseTurbulenceNodeTemplateFactory","template","type","noiseTurbulence","group","noiseTransformers","data","title","frequency","power","roughness","seed","handles","position","Left","dataType","connection","label","maxConnections","Right","pipeline","create","shouldRun","context","incoming","computed","action","properties","sourceModule","cleanup","ITemplateFactory","NodeTypes","ModuleGroupNode","NoiseBillowNode","NoiseCheckerboardNode","NoiseConstNode","NoiseCylindersNode","NoisePerlinNode","NoiseRidgedMultiNode","NoiseSpheresNode","NoiseVoronoiNode","PositionConstNode","PositionGridNode","NoiseAbsNode","NoiseClampNode","NoiseCombineNode","NoiseCurveNode","NoiseExponentNode","NoiseInvertNode","NoiseNormalizeNode","NoiseScaleBiasNode","NoiseTerraceNode","NoiseLoggerNode","NoiseOutputNode","NoiseTextureDataNode","PositionsLoggerNode","NoiseBlendNode","NoiseSelectNode","NoiseDisplaceNode","NoiseRotatePointNode","NoiseScalePointNode","NoiseTranslatePointNode","NoiseTurbulenceNode","NoiseBillowNodeTemplateFactory","NoiseCheckerboardNodeTemplateFactory","NoiseConstNodeTemplateFactory","NoiseCylindersNodeTemplateFactory","NoisePerlinNodeTemplateFactory","NoiseRidgedMultiNodeTemplateFactory","NoiseSpheresNodeTemplateFactory","NoiseVoronoiNodeTemplateFactory","PositionConstNodeTemplateFactory","PositionGridNodeTemplateFactory","ModuleGroupNodeTemplateFactory","NoiseAbsNodeTemplateFactory","NoiseClampNodeTemplateFactory","NoiseCombineNodeTemplateFactory","NoiseCurveNodeTemplateFactory","NoiseExponentNodeTemplateFactory","NoiseInvertNodeTemplateFactory","NoiseNormalizeNodeTemplateFactory","NoiseScaleBiasNodeTemplateFactory","NoiseTerraceNodeTemplateFactory","NoiseLoggerNodeTemplateFactory","NoiseOutputNodeTemplateFactory","NoiseTextureDataTemplateFactory","PositionLoggerNodeTemplateFactory","NoiseBlendNodeTemplateFactory","NoiseSelectNodeTemplateFactory","NoiseDisplaceNodeTemplateFactory","NoiseRotatePointNodeTemplateFactory","NoiseScalePointNodeTemplateFactory","NoiseTranslatePointNodeTemplateFactory","NoiseTurbulenceNodeTemplateFactory","NoiseNodeType","position","grid","textureData","groupModule","positionLogger","noiseLogger","noiseOutput","noiseConst","noiseBillow","noiseCheckerboard","noiseNormalize","noiseCylinders","noisePerlin","noiseRidgedMulti","noiseSpheres","noiseVoronoi","noiseCombine","noiseClamp","noiseAbs","noiseCurve","noiseExponent","noiseInvert","noiseScaleBias","noiseTerrace","noiseBlend","noiseSelect","noiseDisplace","noiseRotatePoint","noiseScalePoint","noiseTranslatePoint","noiseTurbulence","noiseNodeTypes","noiseNodeTemplates","Record"],"sources":["../src/abstract/handle-types.ts","../src/nodes/output/noise-logger-node.tsx","../src/nodes/output/noise-output-node.tsx","../src/nodes/output/noise-texture-data-node.tsx","../src/nodes/output/positions-logger-node.tsx","../src/abstract/templates.ts","../src/middleware/incoming-property-value.ts","../src/templates/generators/noise-billow-template.ts","../src/templates/generators/noise-checkerboard-template.ts","../src/templates/generators/noise-const-template.ts","../src/templates/generators/noise-cylinders-template.ts","../src/templates/generators/noise-perlin-template.ts","../src/templates/generators/noise-ridgedmulti-template.ts","../src/templates/generators/noise-spheres-template.ts","../src/templates/generators/noise-voronoi-template.ts","../src/templates/generators/position-const-template.ts","../src/templates/generators/position-grid-template.ts","../src/templates/groups/module-group-template.ts","../src/templates/modifiers/noise-abs-template.ts","../src/templates/modifiers/noise-clamp-template.ts","../src/abstract/operations.ts","../src/templates/modifiers/noise-combine-template.ts","../src/templates/modifiers/noise-curve-template.ts","../src/templates/modifiers/noise-exponent-template.ts","../src/templates/modifiers/noise-invert-template.ts","../src/templates/modifiers/noise-normalize-template.ts","../src/templates/modifiers/noise-scalebias-template.ts","../src/templates/modifiers/noise-terrace-template.ts","../src/templates/output/noise-logger-template.ts","../src/templates/output/noise-output-template.ts","../src/templates/output/noise-texture-data-template.ts","../src/templates/output/position-logger-template.ts","../src/templates/selectors/noise-blend-template.ts","../src/templates/selectors/noise-select-template.ts","../src/templates/transformers/noise-displace-template.ts","../src/templates/transformers/noise-rotate-point-template.ts","../src/templates/transformers/noise-scale-point-template.ts","../src/templates/transformers/noise-translate-point-template.ts","../src/templates/transformers/noise-turbulence-template.ts","../src/abstract/node-types.ts"],"sourcesContent":["import { CustomNodeHandle } from '@awesome-flow/core/abstract';\n\nexport enum NoiseHandleType {\n textureData = 'texture-data',\n noise = 'noise',\n position = 'position',\n module = 'module'\n}\n\nexport enum DisplacementHandle {\n sourceModule = 'source',\n xModule = 'x-module',\n yModule = 'y-module',\n zModule = 'z-module',\n output = 'output'\n}\n\nexport enum NoiseSourceControlHandle {\n source = 'source',\n control = 'control',\n output = 'output'\n}\n\nexport type DisplacementModuleHandle = CustomNodeHandle & {\n dataId: DisplacementHandle;\n};\n\nexport type NoiseSourceControlModuleHandle = CustomNodeHandle & {\n dataId: NoiseSourceControlHandle;\n};\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\nimport { NoiseHandleType } from '../../abstract';\nimport { NoiseLoggerContext } from '../../templates';\n\nfunction NoiseLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseLoggerContext>(id)?.incoming?.[NoiseHandleType.noise];\n const noise = context?.filter((c) => c.computed?.noise).flatMap((c) => c.computed.noise) || [];\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {noise?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {noise?.map((v, i) => (\n <Text key={i}>\n {v.position?.x}:{v.position?.y}:{v.position?.z}: {v.value}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseLoggerNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { NoiseOutputContext } from '@awesome-flow/noise/templates';\nimport { Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\n\nfunction NoiseOutputNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseOutputContext>(id);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <HandlesIncomingDataStatus nodeId={id} handles={data.handles} />\n <Text mt={5}>Noise points: {context?.computed?.noise?.length || 0}</Text>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseOutputNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { NoiseTextureDataContext } from '@awesome-flow/noise/templates';\nimport { Group, Stack } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\n\nfunction NoiseTextureDataNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const context = useNodeContext<NoiseTextureDataContext>(id)?.computed;\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Stack>\n <Group>\n Resolution: {context?.textureResolutionX}x{context?.textureResolutionY}\n </Group>\n <Group>Input Length: {context?.textureData?.length || 0}</Group>\n <Group>\n Output Length ({context?.textureResolutionX}*{context?.textureResolutionY}*4): {context?.textureData?.length || 0}\n </Group>\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(NoiseTextureDataNode);\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\nimport { useNodeContext } from '@awesome-flow/core/hooks';\nimport { NodeContainer } from '@awesome-flow/core/layout';\nimport { Divider, Stack, Text } from '@mantine/core';\nimport { Node, NodeProps } from '@xyflow/react';\nimport { memo } from 'react';\nimport { NoiseHandleType } from '../../abstract';\nimport { PositionLoggerNodeContext } from '../../templates';\n\nfunction PositionsLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\n const incoming = useNodeContext<PositionLoggerNodeContext>(id)?.incoming[NoiseHandleType.position];\n const positions = incoming\n ?.filter((p) => !!p.computed?.positions?.length)\n .flatMap((p) => p.computed.positions);\n\n return (\n <NodeContainer id={id} selected={selected} data={data} type={type}>\n <Text>Size: {positions?.length || 0}</Text>\n <Divider h={5} />\n <Stack>\n {positions?.map((v, i) => (\n <Text key={i}>\n {v.x}:{v.y}:{v.z}\n </Text>\n ))}\n </Stack>\n </NodeContainer>\n );\n}\n\nexport default memo(PositionsLoggerNode);\n","export enum NoiseTemplateGroup {\n positions = 'Positions',\n output = 'Output',\n noiseGenerators = 'Noise Generators',\n noiseModifiers = 'Noise Modifiers',\n noiseSelectors = 'Noise Selectors',\n noiseTransformers = 'Noise Transformers'\n}\n","import { IMiddleware } from '@awesome-ecs/abstract/pipelines';\nimport { CoreHandleType } from '@awesome-flow/core/abstract';\nimport { NoiseGeneratorContext } from '../abstract/node-props';\n\nexport class IncomingPropertyValueMiddleware implements IMiddleware<NoiseGeneratorContext<any>> {\n action(context: NoiseGeneratorContext<any>): void {\n const incoming = context.incoming?.[CoreHandleType.variableProperty] ?? [];\n\n const properties = { ...context.data };\n\n for (const connection of incoming) {\n const overwrite = connection.computed;\n\n if (overwrite) {\n Object.assign(properties, { [overwrite.property]: overwrite.value });\n }\n }\n\n context.properties = properties;\n }\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { Billow } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseBillowContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoiseBillowNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseBillow,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Billow Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseBillowContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseBillowContext) => {\n const { properties } = context;\n\n context.computed = {\n module: new Billow(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseBillowContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { ComputedModuleData } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { Checkerboard } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseCheckerboardContext = NodeContext<BasicNodeData, ComputedModuleData>;\n\nexport class NoiseCheckerboardNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseCheckerboard,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Checkerboard Noise'\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCheckerboardContext> = PipelineFactory.create({\n action: (context: NoiseCheckerboardContext) => {\n context.computed = {\n module: new Checkerboard()\n };\n },\n cleanup: (context: NoiseCheckerboardContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Const } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeConstNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseConstContext = NodeContext<NodeConstNoiseData, ComputedModuleData>;\n\nexport class NoiseConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeConstNoiseData> = {\n type: NoiseNodeType.noiseConst,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Const Value Noise',\n noise: 0,\n min: -1,\n max: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseConstContext> = PipelineFactory.create<NoiseConstContext>({\n shouldRun(context: NoiseConstContext) {\n return context.data.noise !== undefined && context.data.noise !== null;\n },\n action(context: NoiseConstContext) {\n const module = new Const(context.data.noise);\n context.computed = { module };\n },\n cleanup(context: NoiseConstContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Cylinders } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCylindersNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseCylindersContext = NoiseGeneratorContext<NodeCylindersNoiseData>;\n\nexport class NoiseCylindersNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCylindersNoiseData> = {\n type: NoiseNodeType.noiseCylinders,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Cylinders Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCylindersContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseCylindersContext) => {\n const { properties } = context;\n context.computed = {\n module: new Cylinders(properties.frequency)\n };\n },\n cleanup: (context: NoiseCylindersContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Perlin } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoisePerlinContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoisePerlinNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n type: NoiseNodeType.noisePerlin,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Perlin Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoisePerlinContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoisePerlinContext) => {\n const { properties } = context;\n context.computed = {\n module: new Perlin(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoisePerlinContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { RidgedMulti } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeRidgedNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseRidgedMultiContext = NoiseGeneratorContext<NodeRidgedNoiseData>;\n\nexport class NoiseRidgedMultiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRidgedNoiseData> = {\n type: NoiseNodeType.noiseRidgedMulti,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Ridged Multi Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 6,\n offset: 1.0,\n gain: 2.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseRidgedMultiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseRidgedMultiContext) => {\n const { properties } = context;\n context.computed = {\n module: new RidgedMulti(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.offset,\n properties.gain,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseRidgedMultiContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Spheres } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeSpheresNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseSpheresContext = NoiseGeneratorContext<NodeSpheresNoiseData>;\n\nexport class NoiseSpheresNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSpheresNoiseData> = {\n type: NoiseNodeType.noiseSpheres,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Spheres Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseSpheresContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseSpheresContext) => {\n const { properties } = context;\n context.computed = {\n module: new Spheres(properties.frequency)\n };\n },\n cleanup: (context: NoiseSpheresContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Voronoi } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeVoronoiNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseVoronoiContext = NoiseGeneratorContext<NodeVoronoiNoiseData>;\n\nexport class NoiseVoronoiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeVoronoiNoiseData> = {\n type: NoiseNodeType.noiseVoronoi,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Voronoi Noise',\n frequency: 0.1,\n displacement: 1.0,\n distance: true,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseVoronoiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseVoronoiContext) => {\n const { properties } = context;\n context.computed = {\n module: new Voronoi(properties.frequency, properties.displacement, properties.distance, properties.seed)\n };\n },\n cleanup: (context: NoiseVoronoiContext) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, NodePositionData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodePositionContext = NodeContext<NodePositionData, ComputedPositionsData>;\n\nexport class PositionConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodePositionData> = {\n type: NoiseNodeType.position,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Output',\n position: { x: 0, y: 0, z: 0 }\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodePositionContext>({\n shouldRun(context: NodePositionContext) {\n return context.data.position !== undefined && context.data.position !== null;\n },\n action(context: NodePositionContext) {\n const { data } = context;\n\n context.computed = {\n positions: [data.position]\n };\n },\n cleanup(context: NodePositionContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, Position as GridPosition, NodeGridData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodeGridPositionContext = NodeContext<NodeGridData, ComputedPositionsData>;\n\nexport class PositionGridNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeGridData> = {\n type: NoiseNodeType.grid,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Grid Output',\n center: { x: 0, y: 0, z: 0 },\n radius: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodeGridPositionContext>({\n shouldRun(context: NodeGridPositionContext) {\n const { center, radius } = context.data;\n return center !== undefined && radius !== undefined;\n },\n action(context: NodeGridPositionContext) {\n const { data } = context;\n const { center, radius } = data;\n\n const positions: GridPosition[] = [];\n\n for (let i = -radius; i < radius; i++) {\n for (let j = -radius; j < radius; j++) {\n positions.push({ x: center.x + i, y: center.y + j, z: center.z });\n }\n }\n\n context.computed = {\n positions\n };\n },\n cleanup(context: NodeGridPositionContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, CoreTemplateGroup, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { ComputedModuleData, NoiseModuleContext } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type ModuleGroupNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class ModuleGroupNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.groupModule,\n group: CoreTemplateGroup.groups,\n data: {\n title: 'Modules Group',\n isGroup: true,\n initialSize: {\n width: 300,\n height: 200\n },\n collapsedSize: {\n width: 300,\n height: 80\n }\n },\n handles: [\n {\n position: Position.Bottom,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1,\n hideOnCollapse: true\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<ModuleGroupNodeContext> = PipelineFactory.create({\n shouldRun(context: ModuleGroupNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action: (context: ModuleGroupNodeContext) => {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n context.computed = { module };\n },\n cleanup: (context: ModuleGroupNodeContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Abs, ModifierModule } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseAbsNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseAbsNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseAbs,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Abs Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseAbsNodeContext> = PipelineFactory.create({\n shouldRun(context: NoiseAbsNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseAbsNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else {\n context.computed = { module: new Abs(module) };\n }\n }\n },\n cleanup(context: NoiseAbsNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Clamp, ModifierModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeClampNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseClampNodeContext = NodeContext<\n NodeClampNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseClampNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeClampNoiseData> = {\n type: NoiseNodeType.noiseClamp,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Clamp Noise',\n lowerBound: -1,\n upperBound: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseClampNodeContext>({\n shouldRun(context: NoiseClampNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseClampNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const clampModule = context.computed?.module as Clamp;\n\n if (clampModule) {\n clampModule.sourceModule = module;\n clampModule.lowerBound = context.data.lowerBound;\n clampModule.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Clamp(module, context.data.lowerBound, context.data.upperBound)\n };\n }\n }\n },\n cleanup(context: NoiseClampNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { Add, Max, Min, Multiply, Power } from 'libnoise-simplex-ts';\n\nexport enum NoiseCombineType {\n add = 'add',\n max = 'max',\n min = 'min',\n multiply = 'multiply',\n power = 'power'\n}\n\nexport const noiseCombineModuleMap = {\n [NoiseCombineType.add]: Add,\n [NoiseCombineType.max]: Max,\n [NoiseCombineType.min]: Min,\n [NoiseCombineType.multiply]: Multiply,\n [NoiseCombineType.power]: Power\n};\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { CombinerModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCombineNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseCombineType, noiseCombineModuleMap } from '../../abstract/operations';\n\nexport type NoiseCombineNodeContext = NodeContext<\n NodeCombineNoiseData,\n ComputedModuleData<CombinerModule>,\n { [NoiseHandleType.module]: NoiseModuleContext[] }\n>;\n\nexport class NoiseCombineNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCombineNoiseData> = {\n type: NoiseNodeType.noiseCombine,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Combine Noise',\n operation: NoiseCombineType.add\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n minConnections: 2,\n maxConnections: 2\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCombineNodeContext>({\n shouldRun(context: NoiseCombineNodeContext): boolean {\n return context.incoming[NoiseHandleType.module]?.length === 2;\n },\n action(context: NoiseCombineNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n\n const ModuleFactory = noiseCombineModuleMap[context.data.operation];\n const module = new ModuleFactory(incoming[0].computed?.module, incoming[1].computed?.module);\n\n context.computed = { module };\n },\n cleanup(context: NoiseCombineNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Curve, ModifierModule, Tuple } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCurveNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseCurveNodeContext = NodeContext<\n NodeCurveNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseCurveNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCurveNoiseData> = {\n type: NoiseNodeType.noiseCurve,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Curve',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCurveNodeContext>({\n shouldRun(context: NoiseCurveNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseCurveNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const curve = new Curve(\n module,\n context.data.points.map((p) => new Tuple(p.input, p.output))\n );\n context.computed = { module: curve };\n }\n },\n cleanup(context: NoiseCurveNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Exponent } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeExponentNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseExponentNodeContext = NodeContext<\n NodeExponentNoiseData,\n ComputedModuleData<Exponent>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseExponentNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeExponentNoiseData> = {\n type: NoiseNodeType.noiseExponent,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Exponent',\n exponent: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseExponentNodeContext>({\n shouldRun(context: NoiseExponentNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseExponentNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.exponent = context.data.exponent;\n } else if (module) {\n const exponentModule = new Exponent(module, context.data.exponent);\n context.computed = { module: exponentModule };\n }\n },\n cleanup(context: NoiseExponentNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Invert } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseInvertNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Invert>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseInvertNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseInvert,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Invert Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseInvertNodeContext>({\n shouldRun(context: NoiseInvertNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseInvertNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else if (module) {\n context.computed = { module: new Invert(module) };\n }\n },\n cleanup(context: NoiseInvertNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeNormalizeNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NormalizeNoiseModule } from '../../modules';\n\nexport type NoiseNormalizeNodeContext = NodeContext<\n NodeNormalizeNoiseData,\n ComputedModuleData<NormalizeNoiseModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseNormalizeNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeNormalizeNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseNormalize,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Normalize Noise',\n intervalStart: -1,\n intervalEnd: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseNormalizeNodeContext>({\n shouldRun(context: NoiseNormalizeNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseNormalizeNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const normalizeModule = new NormalizeNoiseModule(module, context.data.intervalStart, context.data.intervalEnd);\n context.computed = { module: normalizeModule };\n }\n },\n cleanup(context: NoiseNormalizeNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ScaleBias } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScaleBiasNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScaleBiasNodeContext = NodeContext<\n NodeScaleBiasNoiseData,\n ComputedModuleData<ScaleBias>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseScaleBiasNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScaleBiasNoiseData> = {\n type: NoiseNodeType.noiseScaleBias,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Scale/Bias Noise',\n scale: 1.0,\n bias: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScaleBiasNodeContext>({\n shouldRun(context: NoiseScaleBiasNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseScaleBiasNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n context.computed.module.scale = context.data.scale;\n context.computed.module.bias = context.data.bias;\n } else if (module) {\n const scaleBiasModule = new ScaleBias(module, context.data.scale, context.data.bias);\n context.computed = { module: scaleBiasModule };\n }\n },\n cleanup(context: NoiseScaleBiasNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Terrace } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTerraceNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTerraceNodeContext = NodeContext<\n NodeTerraceNoiseData,\n ComputedModuleData<Terrace>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTerraceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTerraceNoiseData> = {\n type: NoiseNodeType.noiseTerrace,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Terrace',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTerraceNodeContext>({\n shouldRun(context: NoiseTerraceNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseTerraceNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const terrace = new Terrace(module, context.data.points);\n context.computed = { module: terrace };\n }\n },\n cleanup(context: NoiseTerraceNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseLoggerContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData>[] }\n>;\n\nexport class NoiseLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseLogger,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target'\n }\n ]\n };\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport {\n ComputedNoiseData,\n ComputedPositionsData,\n NoiseModuleContext,\n NoiseTemplateGroup,\n PositionNoiseValue\n} from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseOutputContext = NodeContext<\n BasicNodeData,\n ComputedNoiseData,\n {\n [NoiseHandleType.position]: NodeContext<any, ComputedPositionsData>[];\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseOutputNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseOutput,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Output'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.noise,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseOutputContext> = PipelineFactory.create({\n action: (context) => {\n const incomingPositions = context.incoming[NoiseHandleType.position];\n const incomingModule = context.incoming[NoiseHandleType.module];\n\n if (incomingPositions?.length && incomingModule?.computed?.module) {\n const { module } = incomingModule.computed;\n\n const noise: PositionNoiseValue[] = [];\n\n for (const input of incomingPositions) {\n const { positions } = input.computed;\n for (const position of positions) {\n const value = module.getValue(position.x, position.y, position.z);\n\n noise.push({\n position,\n value\n });\n }\n }\n\n context.computed = {\n noise\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, ComputedNoiseTextureData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTextureDataContext = NodeContext<\n BasicNodeData,\n ComputedNoiseTextureData,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData> }\n>;\n\nexport class NoiseTextureDataTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.textureData,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Texture Data'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.textureData,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseTextureDataContext> = PipelineFactory.create({\n shouldRun: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n return !!incoming?.computed?.noise.length;\n },\n action: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n const noise = incoming?.computed?.noise;\n\n const size = Math.ceil(Math.sqrt(noise.length));\n\n const colors = noise.flatMap((n) => [n.value * 255, n.value * 255, n.value * 255, 255]);\n const dataArray = new Uint8Array(size * size * 4);\n dataArray.set(colors);\n\n context.computed = {\n textureData: dataArray,\n textureResolutionX: size,\n textureResolutionY: size\n };\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ComputedPositionsData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type PositionLoggerNodeContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseNodeType.position]: NodeContext<any, ComputedPositionsData>[] }\n>;\n\nexport class PositionLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.positionLogger,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n }\n ]\n };\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Blend } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseBlendNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Blend>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseBlendNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseBlend,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Blend'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Modules',\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseBlendNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n } else {\n context.computed = {\n module: new Blend(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Select } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeSelectNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseSelectNodeContext = NodeContext<\n NodeSelectNoiseData,\n ComputedModuleData<Select>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseSelectNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSelectNoiseData> = {\n type: NoiseNodeType.noiseSelect,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Select',\n edgeFalloff: 0.0,\n lowerBound: -1.0,\n upperBound: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Source Modules',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseSelectNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n context.computed.module.edgeFalloff = context.data.edgeFalloff;\n context.computed.module.lowerBound = context.data.lowerBound;\n context.computed.module.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Select(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module,\n context.data.edgeFalloff,\n context.data.lowerBound,\n context.data.upperBound\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Displace } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { DisplacementHandle, DisplacementModuleHandle, NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseDisplaceNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Displace>,\n {\n [DisplacementHandle.sourceModule]: NoiseModuleContext;\n [DisplacementHandle.xModule]: NoiseModuleContext;\n [DisplacementHandle.yModule]: NoiseModuleContext;\n [DisplacementHandle.zModule]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseDisplaceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData, Omit<DisplacementModuleHandle, 'handleId'>> = {\n type: NoiseNodeType.noiseDisplace,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Displace'\n },\n handles: [\n {\n position: Position.Left,\n connection: 'target',\n label: 'Source Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.sourceModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'X Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.xModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Y Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.yModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Z Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.zModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseDisplaceNodeContext>({\n shouldRun: (context) => {\n return (\n !!context.incoming[DisplacementHandle.sourceModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.xModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.yModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.zModule]?.computed?.module\n );\n },\n action: (context) => {\n const sourceModule = context.incoming[DisplacementHandle.sourceModule].computed.module;\n const xModule = context.incoming[DisplacementHandle.xModule].computed.module;\n const yModule = context.incoming[DisplacementHandle.yModule].computed.module;\n const zModule = context.incoming[DisplacementHandle.zModule].computed.module;\n\n const hasModules = !!sourceModule && !!xModule && !!yModule && !!zModule;\n\n if (context.computed?.module) {\n if (hasModules) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xModule = xModule;\n context.computed.module.yModule = yModule;\n context.computed.module.zModule = zModule;\n }\n } else {\n context.computed = {\n module: new Displace(sourceModule, xModule, yModule, zModule)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { RotatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeRotatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseRotatePointNodeContext = NodeContext<\n NodeRotatePointNoiseData,\n ComputedModuleData<RotatePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseRotatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRotatePointNoiseData> = {\n type: NoiseNodeType.noiseRotatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Rotate Point',\n xAngle: 0.0,\n yAngle: 0.0,\n zAngle: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseRotatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xAngle, yAngle, zAngle } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xAngle = xAngle;\n context.computed.module.yAngle = yAngle;\n context.computed.module.zAngle = zAngle;\n } else {\n context.computed = {\n module: new RotatePoint(sourceModule, xAngle, yAngle, zAngle)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { ScalePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScalePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScalePointNodeContext = NodeContext<\n NodeScalePointNoiseData,\n ComputedModuleData<ScalePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseScalePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScalePointNoiseData> = {\n type: NoiseNodeType.noiseScalePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Scale Point',\n xScale: 1.0,\n yScale: 1.0,\n zScale: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScalePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xScale, yScale, zScale } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xScale = xScale;\n context.computed.module.yScale = yScale;\n context.computed.module.zScale = zScale;\n } else {\n context.computed = {\n module: new ScalePoint(sourceModule, xScale, yScale, zScale)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { TranslatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTranslatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTranslatePointNodeContext = NodeContext<\n NodeTranslatePointNoiseData,\n ComputedModuleData<TranslatePoint>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTranslatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTranslatePointNoiseData> = {\n type: NoiseNodeType.noiseTranslatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Translate Point',\n translateX: 0.0,\n translateY: 0.0,\n translateZ: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTranslatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { translateX, translateY, translateZ } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.translateX = translateX;\n context.computed.module.translateY = translateY;\n context.computed.module.translateZ = translateZ;\n } else {\n context.computed = {\n module: new TranslatePoint(sourceModule, translateX, translateY, translateZ)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract';\nimport { NodeVariablePropertyContext } from '@awesome-flow/core/templates';\nimport { Position } from '@xyflow/system';\nimport { Turbulence } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport {\n ComputedModuleData,\n NodeTurbulenceNoiseData,\n NoiseGeneratorContext,\n NoiseModuleContext\n} from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseTurbulenceNodeContext = NodeContext<\n NodeTurbulenceNoiseData,\n ComputedModuleData<Turbulence>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n [CoreHandleType.variableProperty]: NodeVariablePropertyContext[];\n }\n> &\n NoiseGeneratorContext<NodeTurbulenceNoiseData>;\n\nexport class NoiseTurbulenceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTurbulenceNoiseData> = {\n type: NoiseNodeType.noiseTurbulence,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Turbulence',\n frequency: 1.0,\n power: 1.0,\n roughness: 1.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n label: 'Variable Properties',\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context: NoiseTurbulenceNodeContext) => {\n const { properties } = context;\n const incoming = context.incoming[NoiseHandleType.module].computed.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = incoming;\n context.computed.module.frequency = properties.frequency;\n context.computed.module.power = properties.power;\n context.computed.module.roughness = properties.roughness;\n context.computed.module.seed = properties.seed;\n } else {\n context.computed = {\n module: new Turbulence(incoming, properties.frequency, properties.power, properties.roughness, properties.seed)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { ITemplateFactory } from '@awesome-flow/core/abstract';\nimport { NodeTypes } from '@xyflow/react';\nimport { ModuleGroupNode } from '../nodes';\nimport NoiseBillowNode from '../nodes/generators/noise-billow-node';\nimport NoiseCheckerboardNode from '../nodes/generators/noise-checkerboard-node';\nimport NoiseConstNode from '../nodes/generators/noise-const-node';\nimport NoiseCylindersNode from '../nodes/generators/noise-cylinders-node';\nimport NoisePerlinNode from '../nodes/generators/noise-perlin-node';\nimport NoiseRidgedMultiNode from '../nodes/generators/noise-ridgedmulti-node';\nimport NoiseSpheresNode from '../nodes/generators/noise-spheres-node';\nimport NoiseVoronoiNode from '../nodes/generators/noise-voronoi-node';\nimport PositionConstNode from '../nodes/generators/position-const-node';\nimport PositionGridNode from '../nodes/generators/position-grid-node';\nimport NoiseAbsNode from '../nodes/modifiers/noise-abs-node';\nimport NoiseClampNode from '../nodes/modifiers/noise-clamp-node';\nimport NoiseCombineNode from '../nodes/modifiers/noise-combine-node';\nimport NoiseCurveNode from '../nodes/modifiers/noise-curve-node';\nimport NoiseExponentNode from '../nodes/modifiers/noise-exponent-node';\nimport NoiseInvertNode from '../nodes/modifiers/noise-invert-node';\nimport NoiseNormalizeNode from '../nodes/modifiers/noise-normalize-node';\nimport NoiseScaleBiasNode from '../nodes/modifiers/noise-scale-bias-node';\nimport NoiseTerraceNode from '../nodes/modifiers/noise-terrace-node';\nimport NoiseLoggerNode from '../nodes/output/noise-logger-node';\nimport NoiseOutputNode from '../nodes/output/noise-output-node';\nimport NoiseTextureDataNode from '../nodes/output/noise-texture-data-node';\nimport PositionsLoggerNode from '../nodes/output/positions-logger-node';\nimport NoiseBlendNode from '../nodes/selectors/noise-blend-node';\nimport NoiseSelectNode from '../nodes/selectors/noise-select-node';\nimport NoiseDisplaceNode from '../nodes/transformers/noise-displace-node';\nimport NoiseRotatePointNode from '../nodes/transformers/noise-rotate-point-node';\nimport NoiseScalePointNode from '../nodes/transformers/noise-scale-point-node';\nimport NoiseTranslatePointNode from '../nodes/transformers/noise-translate-point-node';\nimport NoiseTurbulenceNode from '../nodes/transformers/noise-turbulence-node';\nimport { NoiseBillowNodeTemplateFactory } from '../templates/generators/noise-billow-template';\nimport { NoiseCheckerboardNodeTemplateFactory } from '../templates/generators/noise-checkerboard-template';\nimport { NoiseConstNodeTemplateFactory } from '../templates/generators/noise-const-template';\nimport { NoiseCylindersNodeTemplateFactory } from '../templates/generators/noise-cylinders-template';\nimport { NoisePerlinNodeTemplateFactory } from '../templates/generators/noise-perlin-template';\nimport { NoiseRidgedMultiNodeTemplateFactory } from '../templates/generators/noise-ridgedmulti-template';\nimport { NoiseSpheresNodeTemplateFactory } from '../templates/generators/noise-spheres-template';\nimport { NoiseVoronoiNodeTemplateFactory } from '../templates/generators/noise-voronoi-template';\nimport { PositionConstNodeTemplateFactory } from '../templates/generators/position-const-template';\nimport { PositionGridNodeTemplateFactory } from '../templates/generators/position-grid-template';\nimport { ModuleGroupNodeTemplateFactory } from '../templates/groups/module-group-template';\nimport { NoiseAbsNodeTemplateFactory } from '../templates/modifiers/noise-abs-template';\nimport { NoiseClampNodeTemplateFactory } from '../templates/modifiers/noise-clamp-template';\nimport { NoiseCombineNodeTemplateFactory } from '../templates/modifiers/noise-combine-template';\nimport { NoiseCurveNodeTemplateFactory } from '../templates/modifiers/noise-curve-template';\nimport { NoiseExponentNodeTemplateFactory } from '../templates/modifiers/noise-exponent-template';\nimport { NoiseInvertNodeTemplateFactory } from '../templates/modifiers/noise-invert-template';\nimport { NoiseNormalizeNodeTemplateFactory } from '../templates/modifiers/noise-normalize-template';\nimport { NoiseScaleBiasNodeTemplateFactory } from '../templates/modifiers/noise-scalebias-template';\nimport { NoiseTerraceNodeTemplateFactory } from '../templates/modifiers/noise-terrace-template';\nimport { NoiseLoggerNodeTemplateFactory } from '../templates/output/noise-logger-template';\nimport { NoiseOutputNodeTemplateFactory } from '../templates/output/noise-output-template';\nimport { NoiseTextureDataTemplateFactory } from '../templates/output/noise-texture-data-template';\nimport { PositionLoggerNodeTemplateFactory } from '../templates/output/position-logger-template';\nimport { NoiseBlendNodeTemplateFactory } from '../templates/selectors/noise-blend-template';\nimport { NoiseSelectNodeTemplateFactory } from '../templates/selectors/noise-select-template';\nimport { NoiseDisplaceNodeTemplateFactory } from '../templates/transformers/noise-displace-template';\nimport { NoiseRotatePointNodeTemplateFactory } from '../templates/transformers/noise-rotate-point-template';\nimport { NoiseScalePointNodeTemplateFactory } from '../templates/transformers/noise-scale-point-template';\nimport { NoiseTranslatePointNodeTemplateFactory } from '../templates/transformers/noise-translate-point-template';\nimport { NoiseTurbulenceNodeTemplateFactory } from '../templates/transformers/noise-turbulence-template';\n\nexport enum NoiseNodeType {\n position = 'position',\n grid = 'grid',\n textureData = 'texture-data',\n groupModule = 'group-module',\n positionLogger = 'position-logger',\n noiseLogger = 'noise-logger',\n noiseOutput = 'noise-output',\n noiseConst = 'noise-constant',\n noiseBillow = 'noise-billow',\n noiseCheckerboard = 'noise-checkerboard',\n noiseNormalize = 'noise-normalize',\n noiseCylinders = 'noise-cylinders',\n noisePerlin = 'noise-perlin',\n noiseRidgedMulti = 'noise-ridged-multi',\n noiseSpheres = 'noise-spheres',\n noiseVoronoi = 'noise-voronoi',\n noiseCombine = 'noise-combiner',\n noiseClamp = 'noise-clamp',\n noiseAbs = 'noise-abs',\n noiseCurve = 'noise-curve',\n noiseExponent = 'noise-exponent',\n noiseInvert = 'noise-invert',\n noiseScaleBias = 'noise-scale-bias',\n noiseTerrace = 'noise-terrace',\n noiseBlend = 'noise-blend',\n noiseSelect = 'noise-select',\n noiseDisplace = 'noise-displace',\n noiseRotatePoint = 'noise-rotate-point',\n noiseScalePoint = 'noise-scale-point',\n noiseTranslatePoint = 'noise-translate-point',\n noiseTurbulence = 'noise-turbulence'\n}\n\nexport const noiseNodeTypes = {\n [NoiseNodeType.groupModule]: ModuleGroupNode,\n [NoiseNodeType.position]: PositionConstNode,\n [NoiseNodeType.grid]: PositionGridNode,\n [NoiseNodeType.noiseOutput]: NoiseOutputNode,\n [NoiseNodeType.textureData]: NoiseTextureDataNode,\n [NoiseNodeType.noiseLogger]: NoiseLoggerNode,\n [NoiseNodeType.positionLogger]: PositionsLoggerNode,\n [NoiseNodeType.noiseConst]: NoiseConstNode,\n [NoiseNodeType.noiseBillow]: NoiseBillowNode,\n [NoiseNodeType.noiseCheckerboard]: NoiseCheckerboardNode,\n [NoiseNodeType.noiseCylinders]: NoiseCylindersNode,\n [NoiseNodeType.noisePerlin]: NoisePerlinNode,\n [NoiseNodeType.noiseRidgedMulti]: NoiseRidgedMultiNode,\n [NoiseNodeType.noiseSpheres]: NoiseSpheresNode,\n [NoiseNodeType.noiseVoronoi]: NoiseVoronoiNode,\n [NoiseNodeType.noiseCombine]: NoiseCombineNode,\n [NoiseNodeType.noiseClamp]: NoiseClampNode,\n [NoiseNodeType.noiseAbs]: NoiseAbsNode,\n [NoiseNodeType.noiseNormalize]: NoiseNormalizeNode,\n [NoiseNodeType.noiseCurve]: NoiseCurveNode,\n [NoiseNodeType.noiseExponent]: NoiseExponentNode,\n [NoiseNodeType.noiseInvert]: NoiseInvertNode,\n [NoiseNodeType.noiseScaleBias]: NoiseScaleBiasNode,\n [NoiseNodeType.noiseTerrace]: NoiseTerraceNode,\n [NoiseNodeType.noiseBlend]: NoiseBlendNode,\n [NoiseNodeType.noiseSelect]: NoiseSelectNode,\n [NoiseNodeType.noiseDisplace]: NoiseDisplaceNode,\n [NoiseNodeType.noiseRotatePoint]: NoiseRotatePointNode,\n [NoiseNodeType.noiseScalePoint]: NoiseScalePointNode,\n [NoiseNodeType.noiseTranslatePoint]: NoiseTranslatePointNode,\n [NoiseNodeType.noiseTurbulence]: NoiseTurbulenceNode\n} satisfies NodeTypes;\n\nexport const noiseNodeTemplates = {\n [NoiseNodeType.noiseOutput]: new NoiseOutputNodeTemplateFactory(),\n [NoiseNodeType.noiseBillow]: new NoiseBillowNodeTemplateFactory(),\n [NoiseNodeType.noiseCheckerboard]: new NoiseCheckerboardNodeTemplateFactory(),\n [NoiseNodeType.noiseNormalize]: new NoiseNormalizeNodeTemplateFactory(),\n [NoiseNodeType.noiseLogger]: new NoiseLoggerNodeTemplateFactory(),\n [NoiseNodeType.noiseConst]: new NoiseConstNodeTemplateFactory(),\n [NoiseNodeType.position]: new PositionConstNodeTemplateFactory(),\n [NoiseNodeType.positionLogger]: new PositionLoggerNodeTemplateFactory(),\n [NoiseNodeType.grid]: new PositionGridNodeTemplateFactory(),\n [NoiseNodeType.textureData]: new NoiseTextureDataTemplateFactory(),\n [NoiseNodeType.noiseCylinders]: new NoiseCylindersNodeTemplateFactory(),\n [NoiseNodeType.noisePerlin]: new NoisePerlinNodeTemplateFactory(),\n [NoiseNodeType.noiseRidgedMulti]: new NoiseRidgedMultiNodeTemplateFactory(),\n [NoiseNodeType.noiseSpheres]: new NoiseSpheresNodeTemplateFactory(),\n [NoiseNodeType.noiseVoronoi]: new NoiseVoronoiNodeTemplateFactory(),\n [NoiseNodeType.noiseCombine]: new NoiseCombineNodeTemplateFactory(),\n [NoiseNodeType.noiseClamp]: new NoiseClampNodeTemplateFactory(),\n [NoiseNodeType.noiseAbs]: new NoiseAbsNodeTemplateFactory(),\n [NoiseNodeType.noiseCurve]: new NoiseCurveNodeTemplateFactory(),\n [NoiseNodeType.noiseExponent]: new NoiseExponentNodeTemplateFactory(),\n [NoiseNodeType.noiseInvert]: new NoiseInvertNodeTemplateFactory(),\n [NoiseNodeType.noiseScaleBias]: new NoiseScaleBiasNodeTemplateFactory(),\n [NoiseNodeType.noiseTerrace]: new NoiseTerraceNodeTemplateFactory(),\n [NoiseNodeType.noiseBlend]: new NoiseBlendNodeTemplateFactory(),\n [NoiseNodeType.noiseSelect]: new NoiseSelectNodeTemplateFactory(),\n [NoiseNodeType.noiseDisplace]: new NoiseDisplaceNodeTemplateFactory(),\n [NoiseNodeType.noiseRotatePoint]: new NoiseRotatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseScalePoint]: new NoiseScalePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTranslatePoint]: new NoiseTranslatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTurbulence]: new NoiseTurbulenceNodeTemplateFactory(),\n [NoiseNodeType.groupModule]: new ModuleGroupNodeTemplateFactory()\n} satisfies Record<NoiseNodeType, ITemplateFactory>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,IAAYC,kBAAL;AACLC;AACAC;AACAC;AACAC;;KACF;AAEA,IAAYC,qBAAL;AACLC;AACAC;AACAC;AACAC;AACAC;;KACF;AAEA,IAAYC,2BAAL;AACLC;AACAC;AACAH;;KACF;;;;ACZA,SAAAkB,gBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAyB,MAAA,EAAAC,IAAAC,UAAAC,MAAAC,SAAAN;CACvB,MAAAO,UAAgBlB,eAAmCc,GAAa,EAAAK;CAA0B,IAAAE;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAAjB,EAAA,OAAAM,WAAAN,EAAA,OAAAI,QAAAJ,EAAA,OAAAE,MAAAF,EAAA,OAAAG,YAAAH,EAAA,OAAAK,MAAA;EAC1F,MAAAG,QAAcF,SAAOY,OAASC,QAAiC,CAAAC,QAACC,SAA8B,IAAhF,EAAgF;AAG3FX,OAAArB;AAAkBa,OAAAA;AAAcC,OAAAA;AAAgBC,OAAAA;AAAYC,OAAAA;AAC3DW,OAAA,qBAAC,MAAD,aAAM,UAAOR,OAAKc,UAAL,EAA0B;AAAA,MAAAtB,EAAA,QAAAuB,OAAAC,IAAA,4BAAA,EAAA;AACvCP,QAAA,oBAAC,SAAD,EAAY,GAAA,GAAK;AAAAjB,KAAA,MAAAiB;QAAAA,MAAAjB,EAAA;AAChBS,OAAAlB;AACEoB,OAAAH,OAAKiB,IAAMC,SAIV;AAAA1B,IAAA,KAAAM;AAAAN,IAAA,KAAAI;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAK;AAAAL,IAAA,KAAAS;AAAAT,IAAA,KAAAU;AAAAV,IAAA,KAAAW;AAAAX,IAAA,KAAAY;AAAAZ,IAAA,KAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;AAAAhB,IAAA,MAAAiB;QAAA;AAAAR,OAAAT,EAAA;AAAAU,OAAAV,EAAA;AAAAW,OAAAX,EAAA;AAAAY,OAAAZ,EAAA;AAAAa,OAAAb,EAAA;AAAAc,OAAAd,EAAA;AAAAe,OAAAf,EAAA;AAAAgB,OAAAhB,EAAA;AAAAiB,OAAAjB,EAAA;;CAAA,IAAA2B;AAAA,KAAA3B,EAAA,QAAAS,MAAAT,EAAA,QAAAW,IAAA;AALJgB,OAAA,oBAAC,IAAD,YACGhB,IAKK;AAAAX,IAAA,MAAAS;AAAAT,IAAA,MAAAW;AAAAX,IAAA,MAAA2B;OAAAA,MAAA3B,EAAA;CAAA,IAAA4B;AAAA,KAAA5B,EAAA,QAAAU,MAAAV,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAAAd,EAAA,QAAAe,MAAAf,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,MAAAjB,EAAA,QAAA2B,IAAA;AATVC,OAAA,qBAAC,IAAD;GAAmB1B,IAAAA;GAAcC,UAAAA;GAAgBC,MAAAA;GAAYC,MAAAA;aAA7D;IACEW;IACAC;IACAU;IAOc;;AAAA3B,IAAA,MAAAU;AAAAV,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;AAAAhB,IAAA,MAAAiB;AAAAjB,IAAA,MAAA2B;AAAA3B,IAAA,MAAA4B;OAAAA,MAAA5B,EAAA;AAAA,QAVhB4B;;AALJ,SAAAF,SAAAG,GAAAC,GAAA;AAAA,QAUU,qBAAC,MAAD;EACGD,EAACE,UAAYC;EAAC;EAAEH,EAACE,UAAYE;EAAC;EAAEJ,EAACE,UAAYG;EAAC;EAAGL,EAACM;EAC9C,IAFIL,EAEJ;;AAZjB,SAAAT,SAAAe,KAAA;AAAA,QAEyEC,IAACC,SAAS9B;;AAFnF,SAAAW,QAAAkB,GAAA;AAAA,QAEuCA,EAACC,UAAgB9B;;AAiBxD,gCAAeb,KAAKG,gBAAgB;;;;ACnBpC,SAAAkD,gBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAyB,MAAA,EAAAC,IAAAC,UAAAC,MAAAC,SAAAN;CACvB,MAAAO,UAAgBf,eAAmCW,GAAG;CAAC,IAAAK;AAAA,KAAAP,EAAA,OAAAI,KAAAI,WAAAR,EAAA,OAAAE,IAAA;AAInDK,OAAA,oBAAC,2BAAD;GAAmCL,QAAAA;GAAa,SAAAE,KAAII;GAAY;AAAAR,IAAA,KAAAI,KAAAI;AAAAR,IAAA,KAAAE;AAAAF,IAAA,KAAAO;OAAAA,MAAAP,EAAA;CACpC,MAAAS,KAAAH,SAAOI,UAAiBC,OAAQC,UAAhC;CAAqC,IAAAC;AAAA,KAAAb,EAAA,OAAAS,IAAA;AAAjEI,OAAA,qBAAC,MAAD;GAAU,IAAA;aAAV,CAAa,kBAAeJ,GAA6C;;AAAAT,IAAA,KAAAS;AAAAT,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,OAAAI,QAAAJ,EAAA,OAAAE,MAAAF,EAAA,OAAAG,YAAAH,EAAA,OAAAO,MAAAP,EAAA,OAAAa,MAAAb,EAAA,QAAAK,MAAA;AAF3ES,OAAA,qBAAC,eAAD;GAAmBZ;GAAcC;GAAgBC;GAAYC;aAA7D,CACEE,IACAM,GACc;;AAAAb,IAAA,KAAAI;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAO;AAAAP,IAAA,KAAAa;AAAAb,IAAA,MAAAK;AAAAL,IAAA,MAAAc;OAAAA,MAAAd,EAAA;AAAA,QAHhBc;;AAOJ,gCAAejB,KAAKC,gBAAgB;;;;ACZpC,SAAA0B,qBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAA8B,MAAA,EAAAC,IAAAC,UAAAC,MAAAC,SAAAN;CAC5B,MAAAO,UAAgBhB,eAAwCY,GAAa,EAAAK;CAMhD,MAAAC,KAAAF,SAAOG;CAAuB,MAAAC,KAAAJ,SAAOK;CAAoB,IAAAC;AAAA,KAAAZ,EAAA,OAAAQ,MAAAR,EAAA,OAAAU,IAAA;AADxEE,OAAA,qBAAC,OAAD;GAAO;GACQJ;GAA4B;GAAEE;GACrC;AAAAV,IAAA,KAAAQ;AAAAR,IAAA,KAAAU;AAAAV,IAAA,KAAAY;OAAAA,MAAAZ,EAAA;CACc,MAAAa,KAAAP,SAAOQ,aAAqBC,UAA5B;CAAiC,IAAAC;AAAA,KAAAhB,EAAA,OAAAa,IAAA;AAAvDG,OAAA,qBAAC,OAAD,aAAO,kBAAeH,GAA0C;AAAAb,IAAA,KAAAa;AAAAb,IAAA,KAAAgB;OAAAA,MAAAhB,EAAA;CAE9C,MAAAiB,KAAAX,SAAOG;CAAuB,MAAAS,KAAAZ,SAAOK;CAA2B,MAAAQ,KAAAb,SAAOQ,aAAqBC,UAA5B;CAAiC,IAAAK;AAAA,KAAApB,EAAA,OAAAiB,MAAAjB,EAAA,OAAAkB,MAAAlB,EAAA,OAAAmB,IAAA;AADnHC,OAAA,qBAAC,OAAD;GAAO;GACWH;GAA4B;GAAEC;GAA4B;GAAMC;GAC1E;AAAAnB,IAAA,KAAAiB;AAAAjB,IAAA,KAAAkB;AAAAlB,IAAA,KAAAmB;AAAAnB,IAAA,KAAAoB;OAAAA,MAAApB,EAAA;CAAA,IAAAqB;AAAA,KAAArB,EAAA,OAAAY,MAAAZ,EAAA,QAAAgB,MAAAhB,EAAA,QAAAoB,IAAA;AAPVC,QAAA,qBAAC,OAAD;GACET;GAGAI;GACAI;GAGM;AAAApB,IAAA,KAAAY;AAAAZ,IAAA,MAAAgB;AAAAhB,IAAA,MAAAoB;AAAApB,IAAA,MAAAqB;OAAAA,OAAArB,EAAA;CAAA,IAAAsB;AAAA,KAAAtB,EAAA,QAAAI,QAAAJ,EAAA,QAAAE,MAAAF,EAAA,QAAAG,YAAAH,EAAA,QAAAqB,OAAArB,EAAA,QAAAK,MAAA;AATViB,QAAA,oBAAC,eAAD;GAAmBpB;GAAcC;GAAgBC;GAAYC;aAC3DgB;GASc;AAAArB,IAAA,MAAAI;AAAAJ,IAAA,MAAAE;AAAAF,IAAA,MAAAG;AAAAH,IAAA,MAAAqB;AAAArB,IAAA,MAAAK;AAAAL,IAAA,MAAAsB;OAAAA,OAAAtB,EAAA;AAAA,QAVhBsB;;AAcJ,sCAAezB,KAAKC,qBAAqB;;;;ACjBzC,SAAAoC,oBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAA6B,MAAA,EAAAC,IAAAC,UAAAC,MAAAC,SAAAN;CAC3B,MAAAO,WAAiBlB,eAA0Cc,GAAa,EAAAI;CAA2B,IAAAE;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAAhB,EAAA,OAAAI,QAAAJ,EAAA,OAAAE,MAAAF,EAAA,OAAAM,YAAAN,EAAA,OAAAG,YAAAH,EAAA,OAAAK,MAAA;EACnG,MAAAY,YAAkBX,UAAQY,OACfC,MACD,CAAAC,QAACC,OAA4B;AAGpCZ,OAAApB;AAAkBa,OAAAA;AAAcC,OAAAA;AAAgBC,OAAAA;AAAYC,OAAAA;AAC3DU,OAAA,qBAAC,MAAD,aAAM,UAAOE,WAASK,UAAT,EAA8B;AAAA,MAAAtB,EAAA,QAAAuB,OAAAC,IAAA,4BAAA,EAAA;AAC3CR,QAAA,oBAAC,SAAD,EAAY,GAAA,GAAK;AAAAhB,KAAA,MAAAgB;QAAAA,MAAAhB,EAAA;AAChBQ,OAAAjB;AACEmB,OAAAO,WAASQ,IAAMC,OAId;AAAA1B,IAAA,KAAAI;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAM;AAAAN,IAAA,KAAAG;AAAAH,IAAA,KAAAK;AAAAL,IAAA,KAAAQ;AAAAR,IAAA,KAAAS;AAAAT,IAAA,KAAAU;AAAAV,IAAA,KAAAW;AAAAX,IAAA,KAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;QAAA;AAAAR,OAAAR,EAAA;AAAAS,OAAAT,EAAA;AAAAU,OAAAV,EAAA;AAAAW,OAAAX,EAAA;AAAAY,OAAAZ,EAAA;AAAAa,OAAAb,EAAA;AAAAc,OAAAd,EAAA;AAAAe,OAAAf,EAAA;AAAAgB,OAAAhB,EAAA;;CAAA,IAAA2B;AAAA,KAAA3B,EAAA,QAAAQ,MAAAR,EAAA,QAAAU,IAAA;AALJiB,OAAA,oBAAC,IAAD,YACGjB,IAKK;AAAAV,IAAA,MAAAQ;AAAAR,IAAA,MAAAU;AAAAV,IAAA,MAAA2B;OAAAA,MAAA3B,EAAA;CAAA,IAAA4B;AAAA,KAAA5B,EAAA,QAAAS,MAAAT,EAAA,QAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAAAd,EAAA,QAAAe,MAAAf,EAAA,QAAAgB,MAAAhB,EAAA,QAAA2B,IAAA;AATVC,OAAA,qBAAC,IAAD;GAAmB1B,IAAAA;GAAcC,UAAAA;GAAgBC,MAAAA;GAAYC,MAAAA;aAA7D;IACEU;IACAC;IACAW;IAOc;;AAAA3B,IAAA,MAAAS;AAAAT,IAAA,MAAAW;AAAAX,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;AAAAhB,IAAA,MAAA2B;AAAA3B,IAAA,MAAA4B;OAAAA,MAAA5B,EAAA;AAAA,QAVhB4B;;AAPJ,SAAAF,OAAAG,GAAAC,GAAA;AAAA,QAYU,qBAAC,MAAD;EACGD,EAACE;EAAG;EAAEF,EAACG;EAAG;EAAEH,EAACI;EACT,IAFIH,EAEJ;;AAdjB,SAAAT,OAAAa,KAAA;AAAA,QAIoBC,IAACC,SAASnB;;AAJ9B,SAAAE,MAAAgB,GAAA;AAAA,QAGoB,CAAC,CAACA,EAACC,UAAoBnB,WAAQK;;AAkBnD,oCAAe3B,KAAKG,oBAAoB;;;;AC9BxC,IAAYuC,qBAAL;AACLC;AACAC;AACAC;AACAC;AACAC;AACAC;;;;;;ACFF,IAAaI,kCAAb,MAAgG;CAC9FC,OAAOC,SAA2C;EAChD,MAAMC,WAAWD,QAAQC,WAAWL,eAAeM,qBAAqB,EAAE;EAE1E,MAAMC,aAAa,EAAE,GAAGH,QAAQI,MAAM;AAEtC,OAAK,MAAMC,cAAcJ,UAAU;GACjC,MAAMK,YAAYD,WAAWE;AAE7B,OAAID,UACFE,QAAOC,OAAON,YAAY,GAAGG,UAAUI,WAAWJ,UAAUK,OAAO,CAAC;;AAIxEX,UAAQG,aAAaA;;;;;;ACJzB,IAAawB,iCAAb,MAAwE;CACtE,AAASC,WAA2C;EAClDC,IAAIZ,YAAYW,UAAU;EAC1BE;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACXC,YAAY;GACZC,SAAS;GACTC,aAAa;GACbC,MAAM;GACP;EACDC,SAAS,CACP;GACEC,UAAUxB,SAASyB;GACnBC,UAAU9B,eAAe+B;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUxB,SAAS6B;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA2CpC,gBAAgBqC,OAAO,IAAIzB,iCAAiC,EAAE;EAChH0B,SAASC,YAAgC;GACvC,MAAM,EAAEC,eAAeD;AAEvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAI7B,OACVkC,WAAWjB,WACXiB,WAAWhB,YACXgB,WAAWf,SACXe,WAAWd,aACXc,WAAWb,KACb,EACD;;EAEHe,UAAUH,YAAgC;AACxCA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AC7CJ,IAAae,uCAAb,MAA8E;CAC5E,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,sBACR;EACDC,SAAS,CACP;GACEC,UAAUf,SAASgB;GACnBC;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASC,WAAiD1B,gBAAgB2B,OAAO;EAC/EC,SAASC,YAAsC;AAC7CA,WAAQC,WAAW,EACjBN,QAAQ,IAAIjB,cAAa,EAC1B;;EAEHwB,UAAUF,YAAsC;AAC9CA,WAAQC,WAAW;;EAEtB,CAAC;;;;;ACzBJ,IAAae,gCAAb,MAAuE;CACrE,AAASC,WAA6C;EACpDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,OAAO;GACPC,KAAK;GACLC,KAAK;GACN;EACDC,SAAS,CACP;GACEC,UAAUpB,SAASqB;GACnBC;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASC,WAA0C7B,gBAAgB8B,OAA0B;EAC3FC,UAAUC,SAA4B;AACpC,UAAOA,QAAQd,KAAKE,UAAUa,UAAaD,QAAQd,KAAKE,UAAU;;EAEpEc,OAAOF,SAA4B;AAEjCA,WAAQG,WAAW,EAAER,YADFtB,MAAM2B,QAAQd,KAAKE,MACjBO,EAAQ;;EAE/BS,QAAQJ,SAA4B;AAClCA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC9BJ,IAAagB,oCAAb,MAA2E;CACzE,AAASC,WAAiD;EACxDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACZ;EACDC,SAAS,CACP;GACEC,UAAUnB,SAASoB;GACnBC,UAAUxB,eAAeyB;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUnB,SAASwB;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA8C9B,gBAAgB+B,OAAO,IAAIpB,iCAAiC,EAAE;EACnHqB,SAASC,YAAmC;GAC1C,MAAM,EAAEC,eAAeD;AACvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAIxB,UAAU6B,WAAWb,UAAS,EAC3C;;EAEHe,UAAUH,YAAmC;AAC3CA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AChCJ,IAAagB,iCAAb,MAAwE;CACtE,AAASC,WAA2C;EAClDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACXC,YAAY;GACZC,SAAS;GACTC,aAAa;GACbC,MAAM;GACP;EACDC,SAAS,CACP;GACEC,UAAUvB,SAASwB;GACnBC,UAAU5B,eAAe6B;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUvB,SAAS4B;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA2ClC,gBAAgBmC,OAAO,IAAIxB,iCAAiC,EAAE;EAChHyB,SAASC,YAAgC;GACvC,MAAM,EAAEC,eAAeD;AACvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAI5B,OACViC,WAAWjB,WACXiB,WAAWhB,YACXgB,WAAWf,SACXe,WAAWd,aACXc,WAAWb,KACb,EACD;;EAEHe,UAAUH,YAAgC;AACxCA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AC1CJ,IAAagB,sCAAb,MAA6E;CAC3E,AAASC,WAA8C;EACrDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACXC,YAAY;GACZC,SAAS;GACTC,QAAQ;GACRC,MAAM;GACNC,MAAM;GACP;EACDC,SAAS,CACP;GACEC,UAAUxB,SAASyB;GACnBC,UAAU7B,eAAe8B;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUxB,SAAS6B;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAgDnC,gBAAgBoC,OAAO,IAAIzB,iCAAiC,EAAE;EACrH0B,SAASC,YAAqC;GAC5C,MAAM,EAAEC,eAAeD;AACvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAI7B,YACVkC,WAAWlB,WACXkB,WAAWjB,YACXiB,WAAWhB,SACXgB,WAAWf,QACXe,WAAWd,MACXc,WAAWb,KACb,EACD;;EAEHe,UAAUH,YAAqC;AAC7CA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AC5CJ,IAAagB,kCAAb,MAAyE;CACvE,AAASC,WAA+C;EACtDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACZ;EACDC,SAAS,CACP;GACEC,UAAUnB,SAASoB;GACnBC,UAAUxB,eAAeyB;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUnB,SAASwB;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA4C9B,gBAAgB+B,OAAO,IAAIpB,iCAAiC,EAAE;EACjHqB,SAASC,YAAiC;GACxC,MAAM,EAAEC,eAAeD;AACvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAIxB,QAAQ6B,WAAWb,UAAS,EACzC;;EAEHe,UAAUH,YAAiC;AACzCA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AChCJ,IAAagB,kCAAb,MAAyE;CACvE,AAASC,WAA+C;EACtDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACXC,cAAc;GACdC,UAAU;GACVC,MAAM;GACP;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC,UAAU3B,eAAe4B;GACzBC,YAAY;GACb,EACD;GACEJ,UAAUtB,SAAS2B;GACnBH;GACAE,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA4CjC,gBAAgBkC,OAAO,IAAIvB,iCAAiC,EAAE;EACjHwB,SAASC,YAAiC;GACxC,MAAM,EAAEC,eAAeD;AACvBA,WAAQE,WAAW,EACjBN,QAAQ,IAAI3B,QAAQgC,WAAWhB,WAAWgB,WAAWf,cAAce,WAAWd,UAAUc,WAAWb,KAAI,EACxG;;EAEHe,UAAUH,YAAiC;AACzCA,WAAQE,WAAW;;EAEtB,CAAC;;;;;ACrCJ,IAAaa,mCAAb,MAA0E;CACxE,AAASC,WAA2C;EAClDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPJ,UAAU;IAAEK,GAAG;IAAGC,GAAG;IAAGC,GAAG;IAAE;GAC9B;EACDC,SAAS,CACP;GACER,UAAUV,SAASmB;GACnBC;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASC,WAAW1B,gBAAgB2B,OAA4B;EAC9DC,UAAUC,SAA8B;AACtC,UAAOA,QAAQZ,KAAKH,aAAagB,UAAaD,QAAQZ,KAAKH,aAAa;;EAE1EiB,OAAOF,SAA8B;GACnC,MAAM,EAAEZ,SAASY;AAEjBA,WAAQG,WAAW,EACjBhB,WAAW,CAACC,KAAKH,SAAQ,EAC1B;;EAEHmB,QAAQJ,SAA8B;AACpCA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC/BJ,IAAac,kCAAb,MAAyE;CACvE,AAASC,WAAuC;EAC9CC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,QAAQ;IAAEC,GAAG;IAAGC,GAAG;IAAGC,GAAG;IAAG;GAC5BC,QAAQ;GACT;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASC,WAAW9B,gBAAgB+B,OAAgC;EAClEC,UAAUC,SAAkC;GAC1C,MAAM,EAAEb,QAAQI,WAAWS,QAAQf;AACnC,UAAOE,WAAWc,UAAaV,WAAWU;;EAE5CC,OAAOF,SAAkC;GACvC,MAAM,EAAEf,SAASe;GACjB,MAAM,EAAEb,QAAQI,WAAWN;GAE3B,MAAMD,YAA4B,EAAE;AAEpC,QAAK,IAAImB,IAAI,CAACZ,QAAQY,IAAIZ,QAAQY,IAChC,MAAK,IAAIC,IAAI,CAACb,QAAQa,IAAIb,QAAQa,IAChCpB,WAAUqB,KAAK;IAAEjB,GAAGD,OAAOC,IAAIe;IAAGd,GAAGF,OAAOE,IAAIe;IAAGd,GAAGH,OAAOG;IAAG,CAAC;AAIrEU,WAAQM,WAAW,EACjBtB,WACD;;EAEHuB,QAAQP,SAAkC;AACxCA,WAAQM,WAAW;;EAEtB,CAAC;;;;;ACrCJ,IAAaiB,iCAAb,MAAwE;CACtE,AAASC,WAAwC;EAC/CC,IAAIV,YAAYS,UAAU;EAC1BE;EACAE,OAAOjB,kBAAkBkB;EACzBC,MAAM;GACJC,OAAO;GACPC,SAAS;GACTC,aAAa;IACXC,OAAO;IACPC,QAAQ;IACT;GACDC,eAAe;IACbF,OAAO;IACPC,QAAQ;IACV;GACD;EACDE,SAAS,CACP;GACEC,UAAUpB,SAASqB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GAChBC,gBAAgB;GACjB,EACD;GACEL,UAAUpB,SAAS0B;GACnBJ;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASI,WAA+CpC,gBAAgBqC,OAAO;EAC7EC,UAAUC,SAA0C;AAClD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,SAASF,YAAoC;AAI3CA,WAAQG,WAAW,EAAE7B,QAHJ0B,QAAQC,mBACDE,UAAU7B,QAEL;;EAE/B8B,UAAUJ,YAAoC;AAC5CA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC9CJ,IAAakB,8BAAb,MAAqE;CACnE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,aACR;EACDC,SAAS,CACP;GACEC,UAAUnB,SAASoB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUnB,SAASwB;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAA4C9B,gBAAgB+B,OAAO;EAC1EC,UAAUC,SAAuC;AAC/C,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAoC;GAEzC,MAAMnB,SADWmB,QAAQC,mBACDE,UAAUtB;AAElC,OAAIA,OACF,KAAImB,QAAQG,UAAUtB,OACpBmB,SAAQG,SAAStB,OAAOuB,eAAevB;OAEvCmB,SAAQG,WAAW,EAAEtB,QAAQ,IAAIR,IAAIQ,OAAM,EAAG;;EAIpDwB,QAAQL,SAA8B;AACpCA,WAAQG,WAAW;;EAEtB,CAAC;;;;;ACzCJ,IAAakB,gCAAb,MAAuE;CACrE,AAASC,WAA6C;EACpDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,YAAY;GACZC,YAAY;GACb;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUtB,SAAS2B;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAWhC,gBAAgBiC,OAA8B;EAChEC,UAAUC,SAAyC;AACjD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAsC;GAE3C,MAAMrB,SADWqB,QAAQC,mBACDE,UAAUxB;AAElC,OAAIA,QAAQ;IACV,MAAMyB,cAAcJ,QAAQG,UAAUxB;AAEtC,QAAIyB,aAAa;AACfA,iBAAYC,eAAe1B;AAC3ByB,iBAAYhB,aAAaY,QAAQd,KAAKE;AACtCgB,iBAAYf,aAAaW,QAAQd,KAAKG;UAEtCW,SAAQG,WAAW,EACjBxB,QAAQ,IAAIT,MAAMS,QAAQqB,QAAQd,KAAKE,YAAYY,QAAQd,KAAKG,WAAU,EAC3E;;;EAIPiB,QAAQN,SAAgC;AACtCA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC/DJ,IAAYS,mBAAL;AACLC;AACAC;AACAC;AACAC;AACAC;;KACF;AAEA,MAAaC,wBAAwB;UACXX;UACAC;UACAC;eACKC;YACHC;CAC3B;;;;ACCD,IAAawB,kCAAb,MAAyE;CACvE,AAASC,WAA+C;EACtDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC;GACD;EACDE,SAAS,CACP;GACEC,UAAUvB,SAASwB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GAChBC,gBAAgB;GACjB,EACD;GACEL,UAAUvB,SAAS6B;GACnBJ;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASI,WAAWlC,gBAAgBmC,OAAgC;EAClEC,UAAUC,SAA2C;AACnD,UAAOA,QAAQC,oBAAkCC,WAAW;;EAE9DC,OAAOH,SAAwC;GAC7C,MAAMC,WAAWD,QAAQC;GAEzB,MAAMG,gBAAgB5B,sBAAsBwB,QAAQf,KAAKE;AAGzDa,WAAQK,WAAW,EAAE3B,YAFF0B,cAAcH,SAAS,GAAGI,UAAU3B,QAAQuB,SAAS,GAAGI,UAAU3B,OAEhEA,EAAQ;;EAE/B4B,QAAQN,SAAwC;AAC9CA,WAAQK,WAAW;;EAEtB,CAAC;;;;;ACxCJ,IAAakB,gCAAb,MAAuE;CACrE,AAASC,WAA6C;EACpDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,QAAQ,EAAA;GACT;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUtB,SAAS2B;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAWhC,gBAAgBiC,OAA8B;EAChEC,UAAUC,SAAyC;AACjD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAsC;GAE3C,MAAMpB,SADWoB,QAAQC,mBACDE,UAAUvB;AAElC,OAAIA,OAKFoB,SAAQG,WAAW,EAAEvB,QAAQwB,IAJXlC,MAChBU,QACAoB,QAAQb,KAAKE,OAAOgB,KAAKC,MAAM,IAAIlC,MAAMkC,EAAEC,OAAOD,EAAEE,OAAO,CAC7D,CAC6BJ,EAAO;;EAGxCK,QAAQT,SAAsC;AAC5CA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC1CJ,IAAaqB,mCAAb,MAA0E;CACxE,AAASC,WAAgD;EACvDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,UAAU;GACX;EACDC,SAAS,CACP;GACEC,UAAUpB,SAASqB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUpB,SAASyB;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAW9B,gBAAgB+B,OAAiC;EACnEC,UAAUC,SAA4C;AACpD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAyC;GAE9C,MAAMpB,SADWoB,QAAQC,mBACDE,UAAUvB;AAElC,OAAIoB,QAAQG,UAAUvB,OACpBoB,SAAQG,SAASvB,OAAOS,WAAWW,QAAQb,KAAKE;YACvCT,OAEToB,SAAQG,WAAW,EAAEvB,QAAQwB,IADFhC,SAASQ,QAAQoB,QAAQb,KAAKE,SAC5Be,EAAgB;;EAGjDC,QAAQL,SAAyC;AAC/CA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC1CJ,IAAaiB,iCAAb,MAAwE;CACtE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,gBACR;EACDC,SAAS,CACP;GACEC,UAAUlB,SAASmB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUlB,SAASuB;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAW7B,gBAAgB8B,OAA+B;EACjEC,UAAUC,SAA0C;AAClD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAuC;GAE5C,MAAMnB,SADWmB,QAAQC,mBACDE,UAAUtB;AAElC,OAAImB,QAAQG,UAAUtB,OACpBmB,SAAQG,SAAStB,OAAOuB,eAAevB;YAC9BA,OACTmB,SAAQG,WAAW,EAAEtB,QAAQ,IAAIP,OAAOO,OAAM,EAAG;;EAGrDwB,QAAQL,SAAuC;AAC7CA,WAAQG,WAAW;;EAEtB,CAAC;;;;;ACrCJ,IAAakB,oCAAb,MAA2E;CACzE,AAASC,WAAiD;EACxDC,IAAIb,YAAYY,UAAU;EAC1BE;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,eAAe;GACfC,aAAa;GACd;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUtB,SAAS2B;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAWjC,gBAAgBkC,OAAkC;EACpEC,UAAUC,SAA6C;AACrD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAA0C;GAE/C,MAAMtB,SADWsB,QAAQC,mBACDE,UAAUzB;AAElC,OAAIA,OAEFsB,SAAQG,WAAW,EAAEzB,QAAQ0B,IADD5B,qBAAqBE,QAAQsB,QAAQd,KAAKE,eAAeY,QAAQd,KAAKG,YACrEe,EAAiB;;EAGlDC,QAAQL,SAA0C;AAChDA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC1CJ,IAAaiB,oCAAb,MAA2E;CACzE,AAASC,WAAiD;EACxDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,OAAO;GACPC,MAAM;GACP;EACDC,SAAS,CACP;GACEC,UAAUrB,SAASsB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUrB,SAAS0B;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAW/B,gBAAgBgC,OAAkC;EACpEC,UAAUC,SAA6C;AACrD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAA0C;GAE/C,MAAMrB,SADWqB,QAAQC,mBACDE,UAAUxB;AAElC,OAAIqB,QAAQG,UAAUxB,QAAQ;AAC5BqB,YAAQG,SAASxB,OAAOyB,eAAezB;AACvCqB,YAAQG,SAASxB,OAAOS,QAAQY,QAAQd,KAAKE;AAC7CY,YAAQG,SAASxB,OAAOU,OAAOW,QAAQd,KAAKG;cACnCV,OAETqB,SAAQG,WAAW,EAAExB,QAAQ0B,IADDlC,UAAUQ,QAAQqB,QAAQd,KAAKE,OAAOY,QAAQd,KAAKG,KAClDgB,EAAiB;;EAGlDC,QAAQN,SAA0C;AAChDA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC5CJ,IAAakB,kCAAb,MAAyE;CACvE,AAASC,WAA+C;EACtDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,QAAQ,EAAA;GACT;EACDC,SAAS,CACP;GACEC,UAAUpB,SAASqB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUpB,SAASyB;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAW9B,gBAAgB+B,OAAgC;EAClEC,UAAUC,SAA2C;AACnD,UAAO,CAAC,CAACA,QAAQC;;EAEnBC,OAAOF,SAAwC;GAE7C,MAAMpB,SADWoB,QAAQC,mBACDE,UAAUvB;AAElC,OAAIA,OAEFoB,SAAQG,WAAW,EAAEvB,QAAQwB,IADThC,QAAQQ,QAAQoB,QAAQb,KAAKE,OACpBe,EAAS;;EAG1CC,QAAQL,SAAwC;AAC9CA,WAAQG,WAAW;;EAEtB,CAAC;;;;;AC1CJ,IAAac,iCAAb,MAAwE;CACtE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,gBACR;EACDC,SAAS,CACP;GACEC,UAAUhB,SAASiB;GACnBC;GACAC,YAAY;GACb,CAAA;EAEJ;;;;;ACHH,IAAakB,iCAAb,MAAwE;CACtE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,gBACR;EACDC,SAAS;GACP;IACEV,UAAUT,SAASoB;IACnBC;IACAC,YAAY;IACb;GACD;IACEb,UAAUT,SAASoB;IACnBC;IACAC,YAAY;IACZC,gBAAgB;IACjB;GACD;IACEd,UAAUT,SAASwB;IACnBH;IACAC,YAAY;IACb;GAAA;EAEJ;CAED,AAASI,WAA2C/B,gBAAgBgC,OAAO;EACzEC,SAASC,YAAY;GACnB,MAAMC,oBAAoBD,QAAQE;GAClC,MAAMC,iBAAiBH,QAAQE;AAE/B,OAAID,mBAAmBG,UAAUD,gBAAgBE,UAAUxB,QAAQ;IACjE,MAAM,EAAEA,WAAWsB,eAAeE;IAElC,MAAMT,QAA8B,EAAE;AAEtC,SAAK,MAAMU,SAASL,mBAAmB;KACrC,MAAM,EAAEM,cAAcD,MAAMD;AAC5B,UAAK,MAAMzB,YAAY2B,WAAW;MAChC,MAAMC,QAAQ3B,OAAO4B,SAAS7B,SAAS8B,GAAG9B,SAAS+B,GAAG/B,SAASgC,EAAE;AAEjEhB,YAAMiB,KAAK;OACTjC;OACA4B;OACD,CAAC;;;AAINR,YAAQK,WAAW,EACjBT,OACD;;;EAGLkB,UAAUd,YAAY;AACpBA,WAAQK,WAAW;;EAEtB,CAAC;;;;;AClEJ,IAAawB,kCAAb,MAAyE;CACvE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,gBACR;EACDC,SAAS,CACP;GACEC,UAAUjB,SAASkB;GACnBC;GACAC,YAAY;GACZC,gBAAgB;GACjB,EACD;GACEJ,UAAUjB,SAASsB;GACnBH;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASG,WAAgD5B,gBAAgB6B,OAAO;EAC9EC,YAAYC,YAAY;AAEtB,UAAO,CAAC,CADSA,QAAQC,mBACNC,UAAUrB,MAAMsB;;EAErCC,SAASJ,YAAY;GAEnB,MAAMnB,QADWmB,QAAQC,mBACDC,UAAUrB;GAElC,MAAMwB,OAAOC,KAAKC,KAAKD,KAAKE,KAAK3B,MAAMsB,OAAO,CAAC;GAE/C,MAAMM,SAAS5B,MAAM6B,SAASC,MAAM;IAACA,EAAEC,QAAQ;IAAKD,EAAEC,QAAQ;IAAKD,EAAEC,QAAQ;IAAK;IAAI,CAAC;GACvF,MAAMC,YAAY,IAAIC,WAAWT,OAAOA,OAAO,EAAE;AACjDQ,aAAUE,IAAIN,OAAO;AAErBT,WAAQE,WAAW;IACjBjB,aAAa4B;IACbG,oBAAoBX;IACpBY,oBAAoBZ;IACrB;;EAEHa,UAAUlB,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AChDJ,IAAa4B,oCAAb,MAA2E;CACzE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,mBACR;EACDC,SAAS,CACP;GACET,UAAUN,SAASgB;GACnBC;GACAC,YAAY;GACb,CAAA;EAEJ;;;;;ACTH,IAAaiB,gCAAb,MAAuE;CACrE,AAASC,WAAwC;EAC/CC;EACAE;EACAE,MAAM,EACJC,OAAO,eACR;EACDC,SAAS;GACP;IACEC,UAAUpB,SAASqB;IACnBC;IACAE,YAAY;IACZC,OAAO;IACPC;IACAC,SAAS;IACTC,gBAAgB;IAChBC,gBAAgB;IACjB;GACD;IACET,UAAUpB,SAASqB;IACnBC;IACAI;IACAC,SAAS;IACTH,YAAY;IACZC,OAAO;IACPG,gBAAgB;IACjB;GACD;IACER,UAAUpB,SAAS8B;IACnBR;IACAI;IACAF,YAAY;IACb;GAAA;EAEJ;CAED,AAASQ,WAAWrC,gBAAgBsC,OAA8B;EAChEC,YAAYC,YAAY;AACtB,UACEA,QAAQC,oBAA2CC,WAAW,KAAK,CAAC,CAACF,QAAQC;;EAGjFE,SAASH,YAAY;GACnB,MAAMI,kBAAkBJ,QAAQC;GAChC,MAAMI,kBAAkBL,QAAQC;AAEhC,OAAID,QAAQM,UAAUlB,QAAQ;AAC5BY,YAAQM,SAASlB,OAAOmB,gBAAgBF,gBAAgBC,SAASlB;AACjEY,YAAQM,SAASlB,OAAOoB,gBAAgBJ,gBAAgB,GAAGE,SAASlB;AACpEY,YAAQM,SAASlB,OAAOqB,gBAAgBL,gBAAgB,GAAGE,SAASlB;SAEpEY,SAAQM,WAAW,EACjBlB,QAAQ,IAAItB,MACVsC,gBAAgB,GAAGE,SAASlB,QAC5BgB,gBAAgB,GAAGE,SAASlB,QAC5BiB,gBAAgBC,SAASlB,OAC3B,EACD;;EAGLsB,UAAUV,YAAY;AACpBA,WAAQM,WAAW;;EAEtB,CAAC;;;;;AC9DJ,IAAaqB,iCAAb,MAAwE;CACtE,AAASC,WAA8C;EACrDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,aAAa;GACbC,YAAY;GACZC,YAAY;GACb;EACDC,SAAS;GACP;IACEC,UAAUxB,SAASyB;IACnBC;IACAE;IACAC,SAAS;IACTC,YAAY;IACZC,OAAO;IACPC,gBAAgB;IAChBC,gBAAgB;IACjB;GACD;IACET,UAAUxB,SAASyB;IACnBC;IACAE;IACAC,SAAS;IACTC,YAAY;IACZC,OAAO;IACPC,gBAAgB;IACjB;GACD;IACER,UAAUxB,SAASkC;IACnBR;IACAE;IACAE,YAAY;IACb;GAAA;EAEJ;CAED,AAASM,WAAWxC,gBAAgByC,OAA+B;EACjEC,YAAYC,YAAY;AACtB,UACEA,QAAQC,oBAA2CC,WAAW,KAAK,CAAC,CAACF,QAAQC;;EAGjFE,SAASH,YAAY;GACnB,MAAMI,kBAAkBJ,QAAQC;GAChC,MAAMI,kBAAkBL,QAAQC;AAEhC,OAAID,QAAQM,UAAUlB,QAAQ;AAC5BY,YAAQM,SAASlB,OAAOmB,gBAAgBF,gBAAgBC,SAASlB;AACjEY,YAAQM,SAASlB,OAAOoB,gBAAgBJ,gBAAgB,GAAGE,SAASlB;AACpEY,YAAQM,SAASlB,OAAOqB,gBAAgBL,gBAAgB,GAAGE,SAASlB;AACpEY,YAAQM,SAASlB,OAAOP,cAAcmB,QAAQrB,KAAKE;AACnDmB,YAAQM,SAASlB,OAAON,aAAakB,QAAQrB,KAAKG;AAClDkB,YAAQM,SAASlB,OAAOL,aAAaiB,QAAQrB,KAAKI;SAElDiB,SAAQM,WAAW,EACjBlB,QAAQ,IAAI1B,OACV0C,gBAAgB,GAAGE,SAASlB,QAC5BgB,gBAAgB,GAAGE,SAASlB,QAC5BiB,gBAAgBC,SAASlB,QACzBY,QAAQrB,KAAKE,aACbmB,QAAQrB,KAAKG,YACbkB,QAAQrB,KAAKI,WACf,EACD;;EAGL2B,UAAUV,YAAY;AACpBA,WAAQM,WAAW;;EAEtB,CAAC;;;;;ACvEJ,IAAawB,mCAAb,MAA0E;CACxE,AAASC,WAAoF;EAC3FE;EACAE;EACAE,MAAM,EACJC,OAAO,kBACR;EACDC,SAAS;GACP;IACEC,UAAUxB,SAASyB;IACnBC,YAAY;IACZC,OAAO;IACPC;IACAE;IACAC,SAAS;IACTC,gBAAgB;IACjB;GACD;IACER,UAAUxB,SAASyB;IACnBC,YAAY;IACZC,OAAO;IACPC;IACAE;IACAC,SAAS;IACTC,gBAAgB;IACjB;GACD;IACER,UAAUxB,SAASyB;IACnBC,YAAY;IACZC,OAAO;IACPC;IACAE;IACAC,SAAS;IACTC,gBAAgB;IACjB;GACD;IACER,UAAUxB,SAASyB;IACnBC,YAAY;IACZC,OAAO;IACPC;IACAE;IACAC,SAAS;IACTC,gBAAgB;IACjB;GACD;IACER,UAAUxB,SAASiC;IACnBL;IACAE;IACAJ,YAAY;IACb;GAAA;EAEJ;CAED,AAASS,WAAWxC,gBAAgByC,OAAiC;EACnEC,YAAYC,YAAY;AACtB,UACE,CAAC,CAACA,QAAQC,oBAA2CC,UAAUX,UAC/D,CAAC,CAACS,QAAQC,sBAAsCC,UAAUX,UAC1D,CAAC,CAACS,QAAQC,sBAAsCC,UAAUX,UAC1D,CAAC,CAACS,QAAQC,sBAAsCC,UAAUX;;EAG9DY,SAASH,YAAY;GACnB,MAAM5B,eAAe4B,QAAQC,mBAA0CC,SAASX;GAChF,MAAMlB,UAAU2B,QAAQC,qBAAqCC,SAASX;GACtE,MAAMjB,UAAU0B,QAAQC,qBAAqCC,SAASX;GACtE,MAAMhB,UAAUyB,QAAQC,qBAAqCC,SAASX;GAEtE,MAAMa,aAAa,CAAC,CAAChC,gBAAgB,CAAC,CAACC,WAAW,CAAC,CAACC,WAAW,CAAC,CAACC;AAEjE,OAAIyB,QAAQE,UAAUX,QACpB;QAAIa,YAAY;AACdJ,aAAQE,SAASX,OAAOnB,eAAeA;AACvC4B,aAAQE,SAASX,OAAOlB,UAAUA;AAClC2B,aAAQE,SAASX,OAAOjB,UAAUA;AAClC0B,aAAQE,SAASX,OAAOhB,UAAUA;;SAGpCyB,SAAQE,WAAW,EACjBX,QAAQ,IAAI5B,SAASS,cAAcC,SAASC,SAASC,QAAO,EAC7D;;EAGL8B,UAAUL,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;ACxFJ,IAAakB,sCAAb,MAA6E;CAC3E,AAASC,WAAmD;EAC1DC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,QAAQ;GACRC,QAAQ;GACRC,QAAQ;GACT;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,OAAO;GACPC,gBAAgB;GACjB,EACD;GACEL,UAAUtB,SAAS4B;GACnBJ;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASI,WAAWjC,gBAAgBkC,OAAoC;EACtEC,YAAYC,YAAY;AACtB,UAAO,CAAC,CAACA,QAAQC,oBAAkCC,UAAUzB;;EAE/D0B,SAASH,YAAY;GACnB,MAAMI,eAAeJ,QAAQC,mBAAiCC,SAASzB;GACvE,MAAM,EAAES,QAAQC,QAAQC,WAAWY,QAAQhB;AAE3C,OAAIgB,QAAQE,UAAUzB,QAAQ;AAC5BuB,YAAQE,SAASzB,OAAO2B,eAAeA;AACvCJ,YAAQE,SAASzB,OAAOS,SAASA;AACjCc,YAAQE,SAASzB,OAAOU,SAASA;AACjCa,YAAQE,SAASzB,OAAOW,SAASA;SAEjCY,SAAQE,WAAW,EACjBzB,QAAQ,IAAIR,YAAYmC,cAAclB,QAAQC,QAAQC,OAAM,EAC7D;;EAGLiB,UAAUL,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AChDJ,IAAakB,qCAAb,MAA4E;CAC1E,AAASC,WAAkD;EACzDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,QAAQ;GACRC,QAAQ;GACRC,QAAQ;GACT;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,OAAO;GACPC,gBAAgB;GACjB,EACD;GACEL,UAAUtB,SAAS4B;GACnBJ;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASI,WAAWjC,gBAAgBkC,OAAmC;EACrEC,YAAYC,YAAY;AACtB,UAAO,CAAC,CAACA,QAAQC,oBAAkCC,UAAUzB;;EAE/D0B,SAASH,YAAY;GACnB,MAAMI,eAAeJ,QAAQC,mBAAiCC,SAASzB;GACvE,MAAM,EAAES,QAAQC,QAAQC,WAAWY,QAAQhB;AAE3C,OAAIgB,QAAQE,UAAUzB,QAAQ;AAC5BuB,YAAQE,SAASzB,OAAO2B,eAAeA;AACvCJ,YAAQE,SAASzB,OAAOS,SAASA;AACjCc,YAAQE,SAASzB,OAAOU,SAASA;AACjCa,YAAQE,SAASzB,OAAOW,SAASA;SAEjCY,SAAQE,WAAW,EACjBzB,QAAQ,IAAIR,WAAWmC,cAAclB,QAAQC,QAAQC,OAAM,EAC5D;;EAGLiB,UAAUL,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AClDJ,IAAakB,yCAAb,MAAgF;CAC9E,AAASC,WAAsD;EAC7DC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,YAAY;GACZC,YAAY;GACZC,YAAY;GACb;EACDC,SAAS,CACP;GACEC,UAAUtB,SAASuB;GACnBC;GACAC,YAAY;GACZC,OAAO;GACPC,gBAAgB;GACjB,EACD;GACEL,UAAUtB,SAAS4B;GACnBJ;GACAC,YAAY;GACb,CAAA;EAEJ;CAED,AAASI,WAAWjC,gBAAgBkC,OAAuC;EACzEC,YAAYC,YAAY;AACtB,UAAO,CAAC,CAACA,QAAQC,oBAAkCC,UAAUzB;;EAE/D0B,SAASH,YAAY;GACnB,MAAMI,eAAeJ,QAAQC,mBAAiCC,SAASzB;GACvE,MAAM,EAAES,YAAYC,YAAYC,eAAeY,QAAQhB;AAEvD,OAAIgB,QAAQE,UAAUzB,QAAQ;AAC5BuB,YAAQE,SAASzB,OAAO2B,eAAeA;AACvCJ,YAAQE,SAASzB,OAAOS,aAAaA;AACrCc,YAAQE,SAASzB,OAAOU,aAAaA;AACrCa,YAAQE,SAASzB,OAAOW,aAAaA;SAErCY,SAAQE,WAAW,EACjBzB,QAAQ,IAAIR,eAAemC,cAAclB,YAAYC,YAAYC,WAAU,EAC5E;;EAGLiB,UAAUL,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;ACrCJ,IAAauB,qCAAb,MAA4E;CAC1E,AAASC,WAAkD;EACzDC;EACAE;EACAE,MAAM;GACJC,OAAO;GACPC,WAAW;GACXC,OAAO;GACPC,WAAW;GACXC,MAAM;GACP;EACDC,SAAS;GACP;IACEC,UAAU1B,SAAS2B;IACnBC;IACAC,YAAY;IACZC,OAAO;IACPC,gBAAgB;IACjB;GACD;IACEL,UAAU1B,SAAS2B;IACnBC,UAAUjC,eAAeiB;IACzBkB,OAAO;IACPD,YAAY;IACb;GACD;IACEH,UAAU1B,SAASgC;IACnBJ;IACAC,YAAY;IACb;GAAA;EAEJ;CAED,AAASI,WAAWvC,gBAAgBwC,OAAO,IAAIzB,iCAAiC,EAAE;EAChF0B,YAAYC,YAAY;AACtB,UAAO,CAAC,CAACA,QAAQC,oBAAkCC,UAAU3B;;EAE/D4B,SAASH,YAAwC;GAC/C,MAAM,EAAEI,eAAeJ;GACvB,MAAMC,WAAWD,QAAQC,mBAAiCC,SAAS3B;AAEnE,OAAIyB,QAAQE,UAAU3B,QAAQ;AAC5ByB,YAAQE,SAAS3B,OAAO8B,eAAeJ;AACvCD,YAAQE,SAAS3B,OAAOU,YAAYmB,WAAWnB;AAC/Ce,YAAQE,SAAS3B,OAAOW,QAAQkB,WAAWlB;AAC3Cc,YAAQE,SAAS3B,OAAOY,YAAYiB,WAAWjB;AAC/Ca,YAAQE,SAAS3B,OAAOa,OAAOgB,WAAWhB;SAE1CY,SAAQE,WAAW,EACjB3B,QAAQ,IAAIV,WAAWoC,UAAUG,WAAWnB,WAAWmB,WAAWlB,OAAOkB,WAAWjB,WAAWiB,WAAWhB,KAAI,EAC/G;;EAGLkB,UAAUN,YAAY;AACpBA,WAAQE,WAAW;;EAEtB,CAAC;;;;;AClBJ,IAAYqE,gBAAL;AACLC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;;KACF;AAEA,MAAaC,iBAAiB;mBACC9F;eACHS;WACJC;mBACOW;mBACAC;mBACAF;sBACGG;qBACJpB;mBACCF;yBACMC;sBACHE;mBACHC;yBACKC;oBACJC;oBACAC;qBACAK;kBACFD;gBACFD;sBACMM;kBACJH;qBACGC;mBACFC;uBACGE;oBACFC;kBACFK;mBACCC;qBACEC;yBACGC;wBACDC;4BACIC;uBACJC;CAClC;AAED,MAAaiE,qBAAqB;mBACH,IAAI3C,gCAAgC;mBACpC,IAAIrB,gCAAgC;yBAC9B,IAAIC,sCAAsC;sBAC7C,IAAIgB,mCAAmC;mBAC1C,IAAIG,gCAAgC;qBACrC,IAAIlB,+BAA+B;eACrC,IAAIM,kCAAkC;sBAChC,IAAIe,mCAAmC;WACjD,IAAId,iCAAiC;mBAC9B,IAAIa,iCAAiC;sBAClC,IAAInB,mCAAmC;mBAC1C,IAAIC,gCAAgC;yBAC/B,IAAIC,qCAAqC;oBAC7C,IAAIC,iCAAiC;oBACrC,IAAIC,iCAAiC;qBACrC,IAAIM,iCAAiC;kBACvC,IAAID,+BAA+B;gBACrC,IAAID,6BAA6B;kBAC/B,IAAIG,+BAA+B;qBAChC,IAAIC,kCAAkC;mBACxC,IAAIC,gCAAgC;uBACjC,IAAIE,mCAAmC;oBACzC,IAAIC,iCAAiC;kBACvC,IAAIK,+BAA+B;mBAClC,IAAIC,gCAAgC;qBAClC,IAAIC,kCAAkC;yBACnC,IAAIC,qCAAqC;wBAC1C,IAAIC,oCAAoC;4BACpC,IAAIC,wCAAwC;uBAChD,IAAIC,oCAAoC;mBAC5C,IAAIpB,gCAA+B;CACjE"}
|