opal-js_wrap-three 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +4 -4
  4. data/lib/opal/js_wrap/three/version.rb +1 -1
  5. data/lib-opal/js_wrap/three/WebGL.js +102 -0
  6. data/lib-opal/js_wrap/three/animation/AnimationClipCreator.js +116 -0
  7. data/lib-opal/js_wrap/three/animation/CCDIKSolver.js +436 -0
  8. data/lib-opal/js_wrap/three/animation/MMDAnimationHelper.js +941 -0
  9. data/lib-opal/js_wrap/three/animation/MMDPhysics.js +1183 -0
  10. data/lib-opal/js_wrap/three/cameras/CinematicCamera.js +204 -0
  11. data/lib-opal/js_wrap/three/controls/ArcballControls.js +2649 -0
  12. data/lib-opal/js_wrap/three/controls/DragControls.js +234 -0
  13. data/lib-opal/js_wrap/three/controls/FirstPersonControls.js +301 -0
  14. data/lib-opal/js_wrap/three/controls/FlyControls.js +357 -0
  15. data/lib-opal/js_wrap/three/controls/OrbitControls.js +908 -0
  16. data/lib-opal/js_wrap/three/controls/PointerLockControls.js +173 -0
  17. data/lib-opal/js_wrap/three/controls/TrackballControls.js +666 -0
  18. data/lib-opal/js_wrap/three/controls/TransformControls.js +1210 -0
  19. data/lib-opal/js_wrap/three/controls/experimental/CameraControls.js +860 -0
  20. data/lib-opal/js_wrap/three/csm/CSM.js +346 -0
  21. data/lib-opal/js_wrap/three/csm/CSMFrustum.js +123 -0
  22. data/lib-opal/js_wrap/three/csm/CSMHelper.js +197 -0
  23. data/lib-opal/js_wrap/three/csm/CSMShader.js +29 -0
  24. data/lib-opal/js_wrap/three/curves/CurveExtras.js +544 -0
  25. data/lib-opal/js_wrap/three/curves/NURBSCurve.js +122 -0
  26. data/lib-opal/js_wrap/three/curves/NURBSSurface.js +78 -0
  27. data/lib-opal/js_wrap/three/curves/NURBSUtils.js +413 -0
  28. data/lib-opal/js_wrap/three/deprecated/Geometry.js +1373 -0
  29. data/lib-opal/js_wrap/three/effects/AnaglyphEffect.js +113 -0
  30. data/lib-opal/js_wrap/three/effects/AsciiEffect.js +267 -0
  31. data/lib-opal/js_wrap/three/effects/OutlineEffect.js +400 -0
  32. data/lib-opal/js_wrap/three/effects/ParallaxBarrierEffect.js +90 -0
  33. data/lib-opal/js_wrap/three/effects/PeppersGhostEffect.js +160 -0
  34. data/lib-opal/js_wrap/three/effects/StereoEffect.js +63 -0
  35. data/lib-opal/js_wrap/three/environments/DebugEnvironment.js +107 -0
  36. data/lib-opal/js_wrap/three/environments/RoomEnvironment.js +166 -0
  37. data/lib-opal/js_wrap/three/exporters/ColladaExporter.js +442 -0
  38. data/lib-opal/js_wrap/three/exporters/DRACOExporter.js +205 -0
  39. data/lib-opal/js_wrap/three/exporters/GLTFExporter.js +2042 -0
  40. data/lib-opal/js_wrap/three/exporters/MMDExporter.js +189 -0
  41. data/lib-opal/js_wrap/three/exporters/OBJExporter.js +241 -0
  42. data/lib-opal/js_wrap/three/exporters/PLYExporter.js +370 -0
  43. data/lib-opal/js_wrap/three/exporters/STLExporter.js +186 -0
  44. data/lib-opal/js_wrap/three/exporters/USDZExporter.js +402 -0
  45. data/lib-opal/js_wrap/three/geometries/BoxLineGeometry.js +106 -0
  46. data/lib-opal/js_wrap/three/geometries/ConvexGeometry.js +88 -0
  47. data/lib-opal/js_wrap/three/geometries/DecalGeometry.js +302 -0
  48. data/lib-opal/js_wrap/three/geometries/LightningStrike.js +817 -0
  49. data/lib-opal/js_wrap/three/geometries/ParametricGeometries.js +280 -0
  50. data/lib-opal/js_wrap/three/geometries/ParametricGeometry.js +146 -0
  51. data/lib-opal/js_wrap/three/geometries/RoundedBoxGeometry.js +183 -0
  52. data/lib-opal/js_wrap/three/geometries/TeapotGeometry.js +352 -0
  53. data/lib-opal/js_wrap/three/geometries/TextGeometry.js +76 -0
  54. data/lib-opal/js_wrap/three/helpers/LightProbeHelper.js +95 -0
  55. data/lib-opal/js_wrap/three/helpers/PositionalAudioHelper.js +138 -0
  56. data/lib-opal/js_wrap/three/helpers/RectAreaLightHelper.js +115 -0
  57. data/lib-opal/js_wrap/three/helpers/VertexNormalsHelper.js +131 -0
  58. data/lib-opal/js_wrap/three/helpers/VertexTangentsHelper.js +118 -0
  59. data/lib-opal/js_wrap/three/interactive/HTMLMesh.js +307 -0
  60. data/lib-opal/js_wrap/three/interactive/InteractiveGroup.js +138 -0
  61. data/lib-opal/js_wrap/three/interactive/SelectionBox.js +264 -0
  62. data/lib-opal/js_wrap/three/interactive/SelectionHelper.js +88 -0
  63. data/lib-opal/js_wrap/three/libs/OimoPhysics/OimoPhysics.js +46059 -0
  64. data/lib-opal/js_wrap/three/libs/OimoPhysics/index.js +92 -0
  65. data/lib-opal/js_wrap/three/libs/chevrotain.module.min.js +6947 -0
  66. data/lib-opal/js_wrap/three/libs/ecsy.module.js +1999 -0
  67. data/lib-opal/js_wrap/three/libs/fflate.module.js +3002 -0
  68. data/lib-opal/js_wrap/three/libs/flow.module.js +3033 -0
  69. data/lib-opal/js_wrap/three/libs/ktx-parse.module.js +392 -0
  70. data/lib-opal/js_wrap/three/libs/lil-gui.module.min.js +821 -0
  71. data/lib-opal/js_wrap/three/libs/meshopt_decoder.module.js +136 -0
  72. data/lib-opal/js_wrap/three/libs/mmdparser.module.js +11022 -0
  73. data/lib-opal/js_wrap/three/libs/motion-controllers.module.js +589 -0
  74. data/lib-opal/js_wrap/three/libs/opentype.module.min.js +6132 -0
  75. data/lib-opal/js_wrap/three/libs/potpack.module.js +171 -0
  76. data/lib-opal/js_wrap/three/libs/rhino3dm/rhino3dm.js +6781 -0
  77. data/lib-opal/js_wrap/three/libs/rhino3dm/rhino3dm.module.js +6783 -0
  78. data/lib-opal/js_wrap/three/libs/stats.module.js +139 -0
  79. data/lib-opal/js_wrap/three/libs/tween.module.min.js +349 -0
  80. data/lib-opal/js_wrap/three/lights/LightProbeGenerator.js +233 -0
  81. data/lib-opal/js_wrap/three/lights/RectAreaLightUniformsLib.js +75 -0
  82. data/lib-opal/js_wrap/three/lines/Line2.js +66 -0
  83. data/lib-opal/js_wrap/three/lines/LineGeometry.js +122 -0
  84. data/lib-opal/js_wrap/three/lines/LineMaterial.js +227 -0
  85. data/lib-opal/js_wrap/three/lines/LineSegments2.js +312 -0
  86. data/lib-opal/js_wrap/three/lines/LineSegmentsGeometry.js +238 -0
  87. data/lib-opal/js_wrap/three/lines/Wireframe.js +98 -0
  88. data/lib-opal/js_wrap/three/lines/WireframeGeometry2.js +65 -0
  89. data/lib-opal/js_wrap/three/loaders/3DMLoader.js +1230 -0
  90. data/lib-opal/js_wrap/three/loaders/3MFLoader.js +1123 -0
  91. data/lib-opal/js_wrap/three/loaders/AMFLoader.js +445 -0
  92. data/lib-opal/js_wrap/three/loaders/BVHLoader.js +365 -0
  93. data/lib-opal/js_wrap/three/loaders/BasisTextureLoader.js +692 -0
  94. data/lib-opal/js_wrap/three/loaders/ColladaLoader.js +3046 -0
  95. data/lib-opal/js_wrap/three/loaders/DDSLoader.js +264 -0
  96. data/lib-opal/js_wrap/three/loaders/DRACOLoader.js +531 -0
  97. data/lib-opal/js_wrap/three/loaders/EXRLoader.js +1834 -0
  98. data/lib-opal/js_wrap/three/loaders/FBXLoader.js +3125 -0
  99. data/lib-opal/js_wrap/three/loaders/FontLoader.js +201 -0
  100. data/lib-opal/js_wrap/three/loaders/GCodeLoader.js +248 -0
  101. data/lib-opal/js_wrap/three/loaders/GLTFLoader.js +3334 -0
  102. data/lib-opal/js_wrap/three/loaders/HDRCubeTextureLoader.js +144 -0
  103. data/lib-opal/js_wrap/three/loaders/IFCLoader.js +2395 -0
  104. data/lib-opal/js_wrap/three/loaders/KMZLoader.js +142 -0
  105. data/lib-opal/js_wrap/three/loaders/KTX2Loader.js +535 -0
  106. data/lib-opal/js_wrap/three/loaders/KTXLoader.js +202 -0
  107. data/lib-opal/js_wrap/three/loaders/LDrawLoader.js +1737 -0
  108. data/lib-opal/js_wrap/three/loaders/LUT3dlLoader.js +163 -0
  109. data/lib-opal/js_wrap/three/loaders/LUTCubeLoader.js +171 -0
  110. data/lib-opal/js_wrap/three/loaders/LWOLoader.js +831 -0
  111. data/lib-opal/js_wrap/three/loaders/LogLuvLoader.js +713 -0
  112. data/lib-opal/js_wrap/three/loaders/LottieLoader.js +103 -0
  113. data/lib-opal/js_wrap/three/loaders/MD2Loader.js +258 -0
  114. data/lib-opal/js_wrap/three/loaders/MDDLoader.js +116 -0
  115. data/lib-opal/js_wrap/three/loaders/MMDLoader.js +1687 -0
  116. data/lib-opal/js_wrap/three/loaders/MTLLoader.js +465 -0
  117. data/lib-opal/js_wrap/three/loaders/NRRDLoader.js +554 -0
  118. data/lib-opal/js_wrap/three/loaders/NodeMaterialLoader.js +248 -0
  119. data/lib-opal/js_wrap/three/loaders/OBJLoader.js +673 -0
  120. data/lib-opal/js_wrap/three/loaders/PCDLoader.js +322 -0
  121. data/lib-opal/js_wrap/three/loaders/PDBLoader.js +318 -0
  122. data/lib-opal/js_wrap/three/loaders/PLYLoader.js +489 -0
  123. data/lib-opal/js_wrap/three/loaders/PRWMLoader.js +247 -0
  124. data/lib-opal/js_wrap/three/loaders/PVRLoader.js +240 -0
  125. data/lib-opal/js_wrap/three/loaders/RGBELoader.js +462 -0
  126. data/lib-opal/js_wrap/three/loaders/RGBMLoader.js +1169 -0
  127. data/lib-opal/js_wrap/three/loaders/STLLoader.js +345 -0
  128. data/lib-opal/js_wrap/three/loaders/SVGLoader.js +2162 -0
  129. data/lib-opal/js_wrap/three/loaders/TDSLoader.js +982 -0
  130. data/lib-opal/js_wrap/three/loaders/TGALoader.js +444 -0
  131. data/lib-opal/js_wrap/three/loaders/TTFLoader.js +210 -0
  132. data/lib-opal/js_wrap/three/loaders/TiltLoader.js +391 -0
  133. data/lib-opal/js_wrap/three/loaders/VOXLoader.js +272 -0
  134. data/lib-opal/js_wrap/three/loaders/VRMLLoader.js +2685 -0
  135. data/lib-opal/js_wrap/three/loaders/VRMLoader.js +103 -0
  136. data/lib-opal/js_wrap/three/loaders/VTKLoader.js +894 -0
  137. data/lib-opal/js_wrap/three/loaders/XYZLoader.js +136 -0
  138. data/lib-opal/js_wrap/three/loaders/ifc/web-ifc-api.js +60504 -0
  139. data/lib-opal/js_wrap/three/loaders/lwo/IFFParser.js +931 -0
  140. data/lib-opal/js_wrap/three/loaders/lwo/LWO2Parser.js +450 -0
  141. data/lib-opal/js_wrap/three/loaders/lwo/LWO3Parser.js +406 -0
  142. data/lib-opal/js_wrap/three/math/Capsule.js +133 -0
  143. data/lib-opal/js_wrap/three/math/ColorConverter.js +104 -0
  144. data/lib-opal/js_wrap/three/math/ConvexHull.js +924 -0
  145. data/lib-opal/js_wrap/three/math/ImprovedNoise.js +86 -0
  146. data/lib-opal/js_wrap/three/math/Lut.js +170 -0
  147. data/lib-opal/js_wrap/three/math/MeshSurfaceSampler.js +187 -0
  148. data/lib-opal/js_wrap/three/math/OBB.js +345 -0
  149. data/lib-opal/js_wrap/three/math/Octree.js +409 -0
  150. data/lib-opal/js_wrap/three/math/SimplexNoise.js +425 -0
  151. data/lib-opal/js_wrap/three/misc/ConvexObjectBreaker.js +447 -0
  152. data/lib-opal/js_wrap/three/misc/GPUComputationRenderer.js +322 -0
  153. data/lib-opal/js_wrap/three/misc/Gyroscope.js +94 -0
  154. data/lib-opal/js_wrap/three/misc/MD2Character.js +225 -0
  155. data/lib-opal/js_wrap/three/misc/MD2CharacterComplex.js +424 -0
  156. data/lib-opal/js_wrap/three/misc/MorphAnimMesh.js +109 -0
  157. data/lib-opal/js_wrap/three/misc/MorphBlendMesh.js +283 -0
  158. data/lib-opal/js_wrap/three/misc/ProgressiveLightMap.js +324 -0
  159. data/lib-opal/js_wrap/three/misc/RollerCoaster.js +489 -0
  160. data/lib-opal/js_wrap/three/misc/TubePainter.js +158 -0
  161. data/lib-opal/js_wrap/three/misc/Volume.js +427 -0
  162. data/lib-opal/js_wrap/three/misc/VolumeSlice.js +210 -0
  163. data/lib-opal/js_wrap/three/modifiers/CurveModifier.js +291 -0
  164. data/lib-opal/js_wrap/three/modifiers/EdgeSplitModifier.js +308 -0
  165. data/lib-opal/js_wrap/three/modifiers/SimplifyModifier.js +435 -0
  166. data/lib-opal/js_wrap/three/modifiers/TessellateModifier.js +264 -0
  167. data/lib-opal/js_wrap/three/node-editor/NodeEditor.js +402 -0
  168. data/lib-opal/js_wrap/three/node-editor/accessors/NormalEditor.js +80 -0
  169. data/lib-opal/js_wrap/three/node-editor/accessors/PositionEditor.js +80 -0
  170. data/lib-opal/js_wrap/three/node-editor/accessors/UVEditor.js +71 -0
  171. data/lib-opal/js_wrap/three/node-editor/display/BlendEditor.js +78 -0
  172. data/lib-opal/js_wrap/three/node-editor/inputs/ColorEditor.js +111 -0
  173. data/lib-opal/js_wrap/three/node-editor/inputs/FloatEditor.js +69 -0
  174. data/lib-opal/js_wrap/three/node-editor/inputs/SliderEditor.js +97 -0
  175. data/lib-opal/js_wrap/three/node-editor/inputs/Vector2Editor.js +73 -0
  176. data/lib-opal/js_wrap/three/node-editor/inputs/Vector3Editor.js +75 -0
  177. data/lib-opal/js_wrap/three/node-editor/inputs/Vector4Editor.js +77 -0
  178. data/lib-opal/js_wrap/three/node-editor/materials/StandardMaterialEditor.js +121 -0
  179. data/lib-opal/js_wrap/three/node-editor/math/DotEditor.js +76 -0
  180. data/lib-opal/js_wrap/three/node-editor/math/InvertEditor.js +80 -0
  181. data/lib-opal/js_wrap/three/node-editor/math/LimiterEditor.js +85 -0
  182. data/lib-opal/js_wrap/three/node-editor/math/NormalizeEditor.js +69 -0
  183. data/lib-opal/js_wrap/three/node-editor/math/OperatorEditor.js +91 -0
  184. data/lib-opal/js_wrap/three/node-editor/math/PowerEditor.js +73 -0
  185. data/lib-opal/js_wrap/three/node-editor/math/TrigonometryEditor.js +83 -0
  186. data/lib-opal/js_wrap/three/node-editor/procedural/CheckerEditor.js +69 -0
  187. data/lib-opal/js_wrap/three/node-editor/utils/OscillatorEditor.js +87 -0
  188. data/lib-opal/js_wrap/three/node-editor/utils/TimerEditor.js +89 -0
  189. data/lib-opal/js_wrap/three/nodes/Nodes.js +481 -0
  190. data/lib-opal/js_wrap/three/nodes/accessors/CameraNode.js +222 -0
  191. data/lib-opal/js_wrap/three/nodes/accessors/ColorsNode.js +99 -0
  192. data/lib-opal/js_wrap/three/nodes/accessors/LightNode.js +100 -0
  193. data/lib-opal/js_wrap/three/nodes/accessors/NormalNode.js +152 -0
  194. data/lib-opal/js_wrap/three/nodes/accessors/PositionNode.js +163 -0
  195. data/lib-opal/js_wrap/three/nodes/accessors/ReflectNode.js +161 -0
  196. data/lib-opal/js_wrap/three/nodes/accessors/ResolutionNode.js +99 -0
  197. data/lib-opal/js_wrap/three/nodes/accessors/ScreenUVNode.js +101 -0
  198. data/lib-opal/js_wrap/three/nodes/accessors/UVNode.js +105 -0
  199. data/lib-opal/js_wrap/three/nodes/core/AttributeNode.js +106 -0
  200. data/lib-opal/js_wrap/three/nodes/core/ConstNode.js +149 -0
  201. data/lib-opal/js_wrap/three/nodes/core/ExpressionNode.js +57 -0
  202. data/lib-opal/js_wrap/three/nodes/core/FunctionCallNode.js +138 -0
  203. data/lib-opal/js_wrap/three/nodes/core/FunctionNode.js +259 -0
  204. data/lib-opal/js_wrap/three/nodes/core/InputNode.js +124 -0
  205. data/lib-opal/js_wrap/three/nodes/core/Node.js +193 -0
  206. data/lib-opal/js_wrap/three/nodes/core/NodeBuilder.js +782 -0
  207. data/lib-opal/js_wrap/three/nodes/core/NodeFrame.js +69 -0
  208. data/lib-opal/js_wrap/three/nodes/core/NodeLib.js +56 -0
  209. data/lib-opal/js_wrap/three/nodes/core/NodeUniform.js +53 -0
  210. data/lib-opal/js_wrap/three/nodes/core/NodeUtils.js +60 -0
  211. data/lib-opal/js_wrap/three/nodes/core/StructNode.js +131 -0
  212. data/lib-opal/js_wrap/three/nodes/core/TempNode.js +160 -0
  213. data/lib-opal/js_wrap/three/nodes/core/VarNode.js +105 -0
  214. data/lib-opal/js_wrap/three/nodes/effects/BlurNode.js +160 -0
  215. data/lib-opal/js_wrap/three/nodes/effects/ColorAdjustmentNode.js +139 -0
  216. data/lib-opal/js_wrap/three/nodes/effects/LuminanceNode.js +106 -0
  217. data/lib-opal/js_wrap/three/nodes/inputs/BoolNode.js +95 -0
  218. data/lib-opal/js_wrap/three/nodes/inputs/ColorNode.js +99 -0
  219. data/lib-opal/js_wrap/three/nodes/inputs/CubeTextureNode.js +136 -0
  220. data/lib-opal/js_wrap/three/nodes/inputs/FloatNode.js +95 -0
  221. data/lib-opal/js_wrap/three/nodes/inputs/IntNode.js +95 -0
  222. data/lib-opal/js_wrap/three/nodes/inputs/Matrix3Node.js +102 -0
  223. data/lib-opal/js_wrap/three/nodes/inputs/Matrix4Node.js +102 -0
  224. data/lib-opal/js_wrap/three/nodes/inputs/PropertyNode.js +85 -0
  225. data/lib-opal/js_wrap/three/nodes/inputs/RTTNode.js +164 -0
  226. data/lib-opal/js_wrap/three/nodes/inputs/ReflectorNode.js +111 -0
  227. data/lib-opal/js_wrap/three/nodes/inputs/ScreenNode.js +69 -0
  228. data/lib-opal/js_wrap/three/nodes/inputs/TextureNode.js +140 -0
  229. data/lib-opal/js_wrap/three/nodes/inputs/Vector2Node.js +98 -0
  230. data/lib-opal/js_wrap/three/nodes/inputs/Vector3Node.js +99 -0
  231. data/lib-opal/js_wrap/three/nodes/inputs/Vector4Node.js +100 -0
  232. data/lib-opal/js_wrap/three/nodes/materials/BasicNodeMaterial.js +63 -0
  233. data/lib-opal/js_wrap/three/nodes/materials/MeshStandardNodeMaterial.js +63 -0
  234. data/lib-opal/js_wrap/three/nodes/materials/NodeMaterial.js +202 -0
  235. data/lib-opal/js_wrap/three/nodes/materials/PhongNodeMaterial.js +63 -0
  236. data/lib-opal/js_wrap/three/nodes/materials/SpriteNodeMaterial.js +63 -0
  237. data/lib-opal/js_wrap/three/nodes/materials/StandardNodeMaterial.js +63 -0
  238. data/lib-opal/js_wrap/three/nodes/materials/nodes/BasicNode.js +146 -0
  239. data/lib-opal/js_wrap/three/nodes/materials/nodes/MeshStandardNode.js +133 -0
  240. data/lib-opal/js_wrap/three/nodes/materials/nodes/PhongNode.js +273 -0
  241. data/lib-opal/js_wrap/three/nodes/materials/nodes/RawNode.js +101 -0
  242. data/lib-opal/js_wrap/three/nodes/materials/nodes/SpriteNode.js +176 -0
  243. data/lib-opal/js_wrap/three/nodes/materials/nodes/StandardNode.js +397 -0
  244. data/lib-opal/js_wrap/three/nodes/math/CondNode.js +151 -0
  245. data/lib-opal/js_wrap/three/nodes/math/MathNode.js +266 -0
  246. data/lib-opal/js_wrap/three/nodes/math/OperatorNode.js +120 -0
  247. data/lib-opal/js_wrap/three/nodes/misc/BumpMapNode.js +139 -0
  248. data/lib-opal/js_wrap/three/nodes/misc/NormalMapNode.js +122 -0
  249. data/lib-opal/js_wrap/three/nodes/misc/TextureCubeNode.js +107 -0
  250. data/lib-opal/js_wrap/three/nodes/misc/TextureCubeUVNode.js +191 -0
  251. data/lib-opal/js_wrap/three/nodes/postprocessing/NodePass.js +117 -0
  252. data/lib-opal/js_wrap/three/nodes/postprocessing/NodePostProcessing.js +128 -0
  253. data/lib-opal/js_wrap/three/nodes/procedural/CheckerNode.js +104 -0
  254. data/lib-opal/js_wrap/three/nodes/procedural/Fractal3DNode.js +121 -0
  255. data/lib-opal/js_wrap/three/nodes/procedural/Noise2DNode.js +115 -0
  256. data/lib-opal/js_wrap/three/nodes/procedural/Noise3DNode.js +112 -0
  257. data/lib-opal/js_wrap/three/nodes/utils/BypassNode.js +115 -0
  258. data/lib-opal/js_wrap/three/nodes/utils/ColorSpaceNode.js +214 -0
  259. data/lib-opal/js_wrap/three/nodes/utils/JoinNode.js +138 -0
  260. data/lib-opal/js_wrap/three/nodes/utils/MaxMIPLevelNode.js +88 -0
  261. data/lib-opal/js_wrap/three/nodes/utils/RemapNode.js +117 -0
  262. data/lib-opal/js_wrap/three/nodes/utils/SpecularMIPLevelNode.js +121 -0
  263. data/lib-opal/js_wrap/three/nodes/utils/SubSlotNode.js +112 -0
  264. data/lib-opal/js_wrap/three/nodes/utils/SwitchNode.js +129 -0
  265. data/lib-opal/js_wrap/three/nodes/utils/TimerNode.js +126 -0
  266. data/lib-opal/js_wrap/three/nodes/utils/UVTransformNode.js +104 -0
  267. data/lib-opal/js_wrap/three/nodes/utils/VelocityNode.js +181 -0
  268. data/lib-opal/js_wrap/three/objects/Lensflare.js +285 -0
  269. data/lib-opal/js_wrap/three/objects/LightningStorm.js +238 -0
  270. data/lib-opal/js_wrap/three/objects/MarchingCubes.js +667 -0
  271. data/lib-opal/js_wrap/three/objects/Reflector.js +205 -0
  272. data/lib-opal/js_wrap/three/objects/ReflectorForSSRPass.js +288 -0
  273. data/lib-opal/js_wrap/three/objects/ReflectorRTT.js +63 -0
  274. data/lib-opal/js_wrap/three/objects/Refractor.js +243 -0
  275. data/lib-opal/js_wrap/three/objects/ShadowMesh.js +100 -0
  276. data/lib-opal/js_wrap/three/objects/Sky.js +107 -0
  277. data/lib-opal/js_wrap/three/objects/Water.js +246 -0
  278. data/lib-opal/js_wrap/three/objects/Water2.js +238 -0
  279. data/lib-opal/js_wrap/three/offscreen/jank.js +51 -0
  280. data/lib-opal/js_wrap/three/offscreen/offscreen.js +24 -0
  281. data/lib-opal/js_wrap/three/offscreen/scene.js +99 -0
  282. data/lib-opal/js_wrap/three/physics/AmmoPhysics.js +266 -0
  283. data/lib-opal/js_wrap/three/physics/OimoPhysics.js +214 -0
  284. data/lib-opal/js_wrap/three/postprocessing/AdaptiveToneMappingPass.js +307 -0
  285. data/lib-opal/js_wrap/three/postprocessing/AfterimagePass.js +116 -0
  286. data/lib-opal/js_wrap/three/postprocessing/BloomPass.js +132 -0
  287. data/lib-opal/js_wrap/three/postprocessing/BokehPass.js +143 -0
  288. data/lib-opal/js_wrap/three/postprocessing/ClearPass.js +85 -0
  289. data/lib-opal/js_wrap/three/postprocessing/CubeTexturePass.js +104 -0
  290. data/lib-opal/js_wrap/three/postprocessing/DotScreenPass.js +90 -0
  291. data/lib-opal/js_wrap/three/postprocessing/EffectComposer.js +272 -0
  292. data/lib-opal/js_wrap/three/postprocessing/FilmPass.js +91 -0
  293. data/lib-opal/js_wrap/three/postprocessing/GlitchPass.js +140 -0
  294. data/lib-opal/js_wrap/three/postprocessing/HalftonePass.js +108 -0
  295. data/lib-opal/js_wrap/three/postprocessing/LUTPass.js +132 -0
  296. data/lib-opal/js_wrap/three/postprocessing/MaskPass.js +142 -0
  297. data/lib-opal/js_wrap/three/postprocessing/OutlinePass.js +480 -0
  298. data/lib-opal/js_wrap/three/postprocessing/Pass.js +101 -0
  299. data/lib-opal/js_wrap/three/postprocessing/RenderPass.js +109 -0
  300. data/lib-opal/js_wrap/three/postprocessing/SAOPass.js +384 -0
  301. data/lib-opal/js_wrap/three/postprocessing/SMAAPass.js +199 -0
  302. data/lib-opal/js_wrap/three/postprocessing/SSAARenderPass.js +186 -0
  303. data/lib-opal/js_wrap/three/postprocessing/SSAOPass.js +388 -0
  304. data/lib-opal/js_wrap/three/postprocessing/SSRPass.js +537 -0
  305. data/lib-opal/js_wrap/three/postprocessing/SSRrPass.js +481 -0
  306. data/lib-opal/js_wrap/three/postprocessing/SavePass.js +96 -0
  307. data/lib-opal/js_wrap/three/postprocessing/ShaderPass.js +98 -0
  308. data/lib-opal/js_wrap/three/postprocessing/TAARenderPass.js +159 -0
  309. data/lib-opal/js_wrap/three/postprocessing/TexturePass.js +91 -0
  310. data/lib-opal/js_wrap/three/postprocessing/UnrealBloomPass.js +335 -0
  311. data/lib-opal/js_wrap/three/renderers/CSS2DRenderer.js +213 -0
  312. data/lib-opal/js_wrap/three/renderers/CSS3DRenderer.js +277 -0
  313. data/lib-opal/js_wrap/three/renderers/Projector.js +733 -0
  314. data/lib-opal/js_wrap/three/renderers/SVGRenderer.js +470 -0
  315. data/lib-opal/js_wrap/three/renderers/nodes/Nodes.js +531 -0
  316. data/lib-opal/js_wrap/three/renderers/nodes/ShaderNode.js +386 -0
  317. data/lib-opal/js_wrap/three/renderers/nodes/accessors/CameraNode.js +114 -0
  318. data/lib-opal/js_wrap/three/renderers/nodes/accessors/MaterialNode.js +140 -0
  319. data/lib-opal/js_wrap/three/renderers/nodes/accessors/MaterialReferenceNode.js +79 -0
  320. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ModelNode.js +62 -0
  321. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ModelViewProjectionNode.js +80 -0
  322. data/lib-opal/js_wrap/three/renderers/nodes/accessors/NormalNode.js +113 -0
  323. data/lib-opal/js_wrap/three/renderers/nodes/accessors/Object3DNode.js +136 -0
  324. data/lib-opal/js_wrap/three/renderers/nodes/accessors/PointUVNode.js +70 -0
  325. data/lib-opal/js_wrap/three/renderers/nodes/accessors/PositionNode.js +117 -0
  326. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ReferenceNode.js +124 -0
  327. data/lib-opal/js_wrap/three/renderers/nodes/accessors/SkinningNode.js +129 -0
  328. data/lib-opal/js_wrap/three/renderers/nodes/accessors/UVNode.js +77 -0
  329. data/lib-opal/js_wrap/three/renderers/nodes/core/ArrayInputNode.js +74 -0
  330. data/lib-opal/js_wrap/three/renderers/nodes/core/AttributeNode.js +97 -0
  331. data/lib-opal/js_wrap/three/renderers/nodes/core/BypassNode.js +84 -0
  332. data/lib-opal/js_wrap/three/renderers/nodes/core/CodeNode.js +131 -0
  333. data/lib-opal/js_wrap/three/renderers/nodes/core/ContextNode.js +84 -0
  334. data/lib-opal/js_wrap/three/renderers/nodes/core/ExpressionNode.js +81 -0
  335. data/lib-opal/js_wrap/three/renderers/nodes/core/FunctionCallNode.js +123 -0
  336. data/lib-opal/js_wrap/three/renderers/nodes/core/FunctionNode.js +126 -0
  337. data/lib-opal/js_wrap/three/renderers/nodes/core/InputNode.js +103 -0
  338. data/lib-opal/js_wrap/three/renderers/nodes/core/Node.js +120 -0
  339. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeAttribute.js +37 -0
  340. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeBuilder.js +650 -0
  341. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeCode.js +42 -0
  342. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFrame.js +70 -0
  343. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFunction.js +55 -0
  344. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFunctionInput.js +44 -0
  345. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeKeywords.js +117 -0
  346. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeParser.js +46 -0
  347. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeUniform.js +55 -0
  348. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeVar.js +37 -0
  349. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeVary.js +37 -0
  350. data/lib-opal/js_wrap/three/renderers/nodes/core/PropertyNode.js +90 -0
  351. data/lib-opal/js_wrap/three/renderers/nodes/core/TempNode.js +89 -0
  352. data/lib-opal/js_wrap/three/renderers/nodes/core/VarNode.js +101 -0
  353. data/lib-opal/js_wrap/three/renderers/nodes/core/VaryNode.js +101 -0
  354. data/lib-opal/js_wrap/three/renderers/nodes/core/constants.js +42 -0
  355. data/lib-opal/js_wrap/three/renderers/nodes/display/ColorSpaceNode.js +165 -0
  356. data/lib-opal/js_wrap/three/renderers/nodes/display/NormalMapNode.js +120 -0
  357. data/lib-opal/js_wrap/three/renderers/nodes/functions/BSDFs.js +133 -0
  358. data/lib-opal/js_wrap/three/renderers/nodes/inputs/BufferNode.js +78 -0
  359. data/lib-opal/js_wrap/three/renderers/nodes/inputs/ColorNode.js +67 -0
  360. data/lib-opal/js_wrap/three/renderers/nodes/inputs/FloatNode.js +67 -0
  361. data/lib-opal/js_wrap/three/renderers/nodes/inputs/IntNode.js +67 -0
  362. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Matrix3Node.js +67 -0
  363. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Matrix4Node.js +67 -0
  364. data/lib-opal/js_wrap/three/renderers/nodes/inputs/TextureNode.js +120 -0
  365. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector2Node.js +67 -0
  366. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector3Node.js +67 -0
  367. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector4Node.js +67 -0
  368. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightContextNode.js +103 -0
  369. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightNode.js +115 -0
  370. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightsNode.js +117 -0
  371. data/lib-opal/js_wrap/three/renderers/nodes/materials/LineBasicNodeMaterial.js +82 -0
  372. data/lib-opal/js_wrap/three/renderers/nodes/materials/Materials.js +49 -0
  373. data/lib-opal/js_wrap/three/renderers/nodes/materials/MeshBasicNodeMaterial.js +82 -0
  374. data/lib-opal/js_wrap/three/renderers/nodes/materials/MeshStandardNodeMaterial.js +96 -0
  375. data/lib-opal/js_wrap/three/renderers/nodes/materials/PointsNodeMaterial.js +84 -0
  376. data/lib-opal/js_wrap/three/renderers/nodes/math/CondNode.js +98 -0
  377. data/lib-opal/js_wrap/three/renderers/nodes/math/MathNode.js +255 -0
  378. data/lib-opal/js_wrap/three/renderers/nodes/math/OperatorNode.js +163 -0
  379. data/lib-opal/js_wrap/three/renderers/nodes/parsers/GLSLNodeFunction.js +158 -0
  380. data/lib-opal/js_wrap/three/renderers/nodes/parsers/GLSLNodeParser.js +68 -0
  381. data/lib-opal/js_wrap/three/renderers/nodes/parsers/WGSLNodeFunction.js +126 -0
  382. data/lib-opal/js_wrap/three/renderers/nodes/parsers/WGSLNodeParser.js +68 -0
  383. data/lib-opal/js_wrap/three/renderers/nodes/procedural/CheckerNode.js +84 -0
  384. data/lib-opal/js_wrap/three/renderers/nodes/utils/ArrayElementNode.js +79 -0
  385. data/lib-opal/js_wrap/three/renderers/nodes/utils/ConvertNode.js +82 -0
  386. data/lib-opal/js_wrap/three/renderers/nodes/utils/JoinNode.js +88 -0
  387. data/lib-opal/js_wrap/three/renderers/nodes/utils/OscNode.js +105 -0
  388. data/lib-opal/js_wrap/three/renderers/nodes/utils/SplitNode.js +96 -0
  389. data/lib-opal/js_wrap/three/renderers/nodes/utils/SpriteSheetUVNode.js +98 -0
  390. data/lib-opal/js_wrap/three/renderers/nodes/utils/TimerNode.js +93 -0
  391. data/lib-opal/js_wrap/three/renderers/webgl/nodes/SlotNode.js +72 -0
  392. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLNodeBuilder.js +463 -0
  393. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLNodes.js +62 -0
  394. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLPhysicalContextNode.js +95 -0
  395. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPU.js +62 -0
  396. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUAttributes.js +118 -0
  397. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBackground.js +109 -0
  398. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBinding.js +52 -0
  399. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBindings.js +254 -0
  400. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBufferUtils.js +39 -0
  401. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUComputePipelines.js +82 -0
  402. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUGeometries.js +84 -0
  403. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUInfo.js +86 -0
  404. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUObjects.js +64 -0
  405. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUProgrammableStage.js +46 -0
  406. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUProperties.js +63 -0
  407. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderLists.js +180 -0
  408. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderPipeline.js +662 -0
  409. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderPipelines.js +275 -0
  410. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderer.js +883 -0
  411. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUSampledTexture.js +139 -0
  412. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUSampler.js +76 -0
  413. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUStorageBuffer.js +69 -0
  414. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextureRenderer.js +64 -0
  415. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextureUtils.js +125 -0
  416. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextures.js +681 -0
  417. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniform.js +237 -0
  418. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniformBuffer.js +90 -0
  419. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniformsGroup.js +294 -0
  420. data/lib-opal/js_wrap/three/renderers/webgpu/constants.js +263 -0
  421. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeBuilder.js +619 -0
  422. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +67 -0
  423. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeSampler.js +71 -0
  424. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeUniform.js +229 -0
  425. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +68 -0
  426. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodes.js +106 -0
  427. data/lib-opal/js_wrap/three/shaders/ACESFilmicToneMappingShader.js +45 -0
  428. data/lib-opal/js_wrap/three/shaders/AfterimageShader.js +46 -0
  429. data/lib-opal/js_wrap/three/shaders/BasicShader.js +34 -0
  430. data/lib-opal/js_wrap/three/shaders/BleachBypassShader.js +43 -0
  431. data/lib-opal/js_wrap/three/shaders/BlendShader.js +47 -0
  432. data/lib-opal/js_wrap/three/shaders/BokehShader.js +65 -0
  433. data/lib-opal/js_wrap/three/shaders/BokehShader2.js +125 -0
  434. data/lib-opal/js_wrap/three/shaders/BrightnessContrastShader.js +47 -0
  435. data/lib-opal/js_wrap/three/shaders/ColorCorrectionShader.js +47 -0
  436. data/lib-opal/js_wrap/three/shaders/ColorifyShader.js +41 -0
  437. data/lib-opal/js_wrap/three/shaders/ConvolutionShader.js +75 -0
  438. data/lib-opal/js_wrap/three/shaders/CopyShader.js +41 -0
  439. data/lib-opal/js_wrap/three/shaders/DOFMipMapShader.js +49 -0
  440. data/lib-opal/js_wrap/three/shaders/DepthLimitedBlurShader.js +95 -0
  441. data/lib-opal/js_wrap/three/shaders/DigitalGlitch.js +79 -0
  442. data/lib-opal/js_wrap/three/shaders/DotScreenShader.js +52 -0
  443. data/lib-opal/js_wrap/three/shaders/FXAAShader.js +78 -0
  444. data/lib-opal/js_wrap/three/shaders/FilmShader.js +69 -0
  445. data/lib-opal/js_wrap/three/shaders/FocusShader.js +52 -0
  446. data/lib-opal/js_wrap/three/shaders/FreiChenShader.js +44 -0
  447. data/lib-opal/js_wrap/three/shaders/GammaCorrectionShader.js +39 -0
  448. data/lib-opal/js_wrap/three/shaders/GodRaysShader.js +140 -0
  449. data/lib-opal/js_wrap/three/shaders/HalftoneShader.js +77 -0
  450. data/lib-opal/js_wrap/three/shaders/HorizontalBlurShader.js +47 -0
  451. data/lib-opal/js_wrap/three/shaders/HorizontalTiltShiftShader.js +49 -0
  452. data/lib-opal/js_wrap/three/shaders/HueSaturationShader.js +47 -0
  453. data/lib-opal/js_wrap/three/shaders/KaleidoShader.js +50 -0
  454. data/lib-opal/js_wrap/three/shaders/LuminosityHighPassShader.js +52 -0
  455. data/lib-opal/js_wrap/three/shaders/LuminosityShader.js +39 -0
  456. data/lib-opal/js_wrap/three/shaders/MMDToonShader.js +48 -0
  457. data/lib-opal/js_wrap/three/shaders/MirrorShader.js +44 -0
  458. data/lib-opal/js_wrap/three/shaders/NormalMapShader.js +48 -0
  459. data/lib-opal/js_wrap/three/shaders/PixelShader.js +44 -0
  460. data/lib-opal/js_wrap/three/shaders/RGBShiftShader.js +50 -0
  461. data/lib-opal/js_wrap/three/shaders/SAOShader.js +85 -0
  462. data/lib-opal/js_wrap/three/shaders/SMAAShader.js +95 -0
  463. data/lib-opal/js_wrap/three/shaders/SSAOShader.js +113 -0
  464. data/lib-opal/js_wrap/three/shaders/SSRShader.js +126 -0
  465. data/lib-opal/js_wrap/three/shaders/SSRrShader.js +106 -0
  466. data/lib-opal/js_wrap/three/shaders/SepiaShader.js +43 -0
  467. data/lib-opal/js_wrap/three/shaders/SobelOperatorShader.js +44 -0
  468. data/lib-opal/js_wrap/three/shaders/SubsurfaceScatteringShader.js +64 -0
  469. data/lib-opal/js_wrap/three/shaders/TechnicolorShader.js +41 -0
  470. data/lib-opal/js_wrap/three/shaders/ToneMapShader.js +53 -0
  471. data/lib-opal/js_wrap/three/shaders/ToonShader.js +148 -0
  472. data/lib-opal/js_wrap/three/shaders/TriangleBlurShader.js +47 -0
  473. data/lib-opal/js_wrap/three/shaders/UnpackDepthRGBAShader.js +42 -0
  474. data/lib-opal/js_wrap/three/shaders/VerticalBlurShader.js +47 -0
  475. data/lib-opal/js_wrap/three/shaders/VerticalTiltShiftShader.js +49 -0
  476. data/lib-opal/js_wrap/three/shaders/VignetteShader.js +46 -0
  477. data/lib-opal/js_wrap/three/shaders/VolumeShader.js +55 -0
  478. data/lib-opal/js_wrap/three/shaders/WaterRefractionShader.js +46 -0
  479. data/lib-opal/js_wrap/three/textures/FlakesTexture.js +61 -0
  480. data/lib-opal/js_wrap/three/utils/BufferGeometryUtils.js +683 -0
  481. data/lib-opal/js_wrap/three/utils/CameraUtils.js +97 -0
  482. data/lib-opal/js_wrap/three/utils/GPUStatsPanel.js +154 -0
  483. data/lib-opal/js_wrap/three/utils/GeometryCompressionUtils.js +468 -0
  484. data/lib-opal/js_wrap/three/utils/GeometryUtils.js +192 -0
  485. data/lib-opal/js_wrap/three/utils/PackedPhongMaterial.js +77 -0
  486. data/lib-opal/js_wrap/three/utils/RoughnessMipmapper.js +169 -0
  487. data/lib-opal/js_wrap/three/utils/SceneUtils.js +62 -0
  488. data/lib-opal/js_wrap/three/utils/ShadowMapViewer.js +182 -0
  489. data/lib-opal/js_wrap/three/utils/SkeletonUtils.js +400 -0
  490. data/lib-opal/js_wrap/three/utils/UVsDebug.js +132 -0
  491. data/lib-opal/js_wrap/three/utils/WorkerPool.js +130 -0
  492. data/lib-opal/js_wrap/three/webxr/ARButton.js +203 -0
  493. data/lib-opal/js_wrap/three/webxr/OculusHandModel.js +131 -0
  494. data/lib-opal/js_wrap/three/webxr/OculusHandPointerModel.js +328 -0
  495. data/lib-opal/js_wrap/three/webxr/Text2D.js +54 -0
  496. data/lib-opal/js_wrap/three/webxr/VRButton.js +181 -0
  497. data/lib-opal/js_wrap/three/webxr/XRControllerModelFactory.js +266 -0
  498. data/lib-opal/js_wrap/three/webxr/XREstimatedLight.js +221 -0
  499. data/lib-opal/js_wrap/three/webxr/XRHandMeshModel.js +93 -0
  500. data/lib-opal/js_wrap/three/webxr/XRHandModelFactory.js +127 -0
  501. data/lib-opal/js_wrap/three/webxr/XRHandPrimitiveModel.js +85 -0
  502. data/opal-js_wrap-three.gemspec +4 -4
  503. metadata +502 -5
@@ -0,0 +1,3033 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["exports"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(exports);
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(mod.exports);
11
+ global.flowModule = mod.exports;
12
+ }
13
+ })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) {
14
+ "use strict";
15
+
16
+ Object.defineProperty(_exports, "__esModule", {
17
+ value: true
18
+ });
19
+ _exports.Utils = _exports.ToggleInput = _exports.TitleElement = _exports.TextInput = _exports.StringInput = _exports.SliderInput = _exports.Serializer = _exports.SelectInput = _exports.REVISION = _exports.PanelNode = _exports.ObjectNode = _exports.NumberInput = _exports.Node = _exports.Menu = _exports.Loader = _exports.LabelElement = _exports.Input = _exports.Element = _exports.DraggableElement = _exports.ContextMenu = _exports.ColorInput = _exports.CircleMenu = _exports.Canvas = _exports.ButtonInput = void 0;
20
+
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+
25
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
+
27
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
28
+
29
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
30
+
31
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
32
+
33
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
34
+
35
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
36
+
37
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
+
39
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
40
+
41
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
42
+
43
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
44
+
45
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
46
+
47
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
48
+
49
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
50
+
51
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
52
+
53
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
54
+
55
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } Object.defineProperty(subClass, "prototype", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
56
+
57
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
58
+
59
+ function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
60
+
61
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
62
+
63
+ function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
64
+
65
+ function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
66
+
67
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
68
+
69
+ function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
70
+
71
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
72
+
73
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
74
+
75
+ /**
76
+ * https://github.com/sunag/flow
77
+ */
78
+ function __flow__addCSS(css) {
79
+ try {
80
+ var style = document.createElement('style');
81
+ style.setAttribute('type', 'text/css');
82
+ style.innerHTML = css;
83
+ document.head.appendChild(style);
84
+ } catch (e) {}
85
+ }
86
+
87
+ __flow__addCSS("f-canvas,f-canvas canvas { position: absolute; top: 0; left: 0; margin: 0; padding: 0; width: 100%; height: 100%; -webkit-touch-callout: none; }f-canvas { overflow: auto; cursor: grab;}f-canvas canvas.front { z-index: 10;}body.dragging f-canvas,body.connecting f-canvas { overflow: hidden !important;}body.dragging *:not(.drag) { pointer-events: none !important;}f-canvas.grabbing * { cursor: grabbing; user-select: none;}f-canvas canvas { position: fixed; overflow: hidden; pointer-events: none;}f-canvas::-webkit-scrollbar { width: 8px; height: 8px;}f-canvas::-webkit-scrollbar-thumb:hover{ background: #014fc5;}f-canvas::-webkit-scrollbar-track { background: #363636;}f-canvas::-webkit-scrollbar-thumb { background-color: #666666; border-radius: 10px; border: 0;}f-canvas f-content,f-canvas f-area { position: absolute; display: block;}f-node { position: absolute; margin: 0; padding: 0; user-select: none; width: 320px; z-index: 1; cursor: auto; filter: drop-shadow(0 0 10px #00000061); backdrop-filter: blur(4px);}f-node.selected { z-index: 2;}f-node.selected,f-canvas.dragging-rio f-node:hover,f-canvas.dragging-lio f-node:hover { filter: drop-shadow(0 0 10px #00000061) drop-shadow(0 0 8px #4444dd);}f-node.closed f-element:not(:first-child) { display: none;}f-node.center { top: 50%; left: 50%; transform: translate( -50%, -50% );}f-node.top-right { top: 0; right: 0;}f-node.top-center { top: 0; left: 50%; transform: translateX( -50% );}f-node.top-left { top: 0; left: 0;}f-node { transition: filter 0.2s ease;}@keyframes f-open { 0% { transform: scale(.5); filter: blur(30px); } 100% { transform: scale(1); filter: unset }}f-node { animation: .2s f-open 1 alternate ease-out;}f-menu,f-menu button,f-element,f-element input,f-element select,f-element button,f-element textarea { font-family: 'Open Sans', sans-serif; font-size: 13px; text-transform: capitalize; color: #eeeeee; outline: solid 0px #000; letter-spacing: .2px; margin: 0; padding: 0; border: 0; user-select: none; -webkit-tap-highlight-color: transparent; transition: background 0.2s ease;}f-element input { transition: background 0.1s ease;}f-element input,f-element select,f-element button,f-element textarea { background-color: #242427;}f-element { position: relative; width: calc( 100% - 14px ); background: rgba(45, 45, 48, 0.95); pointer-events: auto; border-bottom: 2px solid #232323; display: flex; padding-left: 7px; padding-right: 7px; padding-top: 2px; padding-bottom: 2px;}f-element { height: 24px;}f-element input { margin-top: 2px; margin-bottom: 2px; box-shadow: inset 0px 1px 1px rgb(0 0 0 / 20%), 0px 1px 0px rgb(255 255 255 / 5%); margin-left: 2px; margin-right: 2px; width: 100%; padding-left: 4px; padding-right: 4px;}f-element input.number { cursor: col-resize;}f-element input:focus[type='text'], f-element input:focus[type='range'], f-element input:focus[type='color'] { background: rgba( 0, 0, 0, 0.6 ); outline: solid 1px rgba( 0, 80, 200, 0.98 );}f-element input[type='color'] { appearance: none; padding: 0; margin-left: 2px; margin-right: 2px; height: calc( 100% - 4px ); margin-top: 2px; border: none; }f-element input[type='color']::-webkit-color-swatch-wrapper { padding: 2px;}f-element input[type='color']::-webkit-color-swatch { border: none; cursor: alias;}f-element input[type='range'] { appearance: none; width: 100%; overflow: hidden; padding: 0; cursor: ew-resize;}f-element input[type='range']::-webkit-slider-runnable-track { appearance: none; height: 10px; color: #13bba4; margin: 0;}f-element input[type='range']::-webkit-slider-thumb { appearance: none; width: 0; background: #434343; box-shadow: -500px 0 0 500px rgba( 0, 120, 255, 0.98 ); border-radius: 50%; border: 0 !important;}f-element input[type='range']::-webkit-slider-runnable-track { margin-left: -4px; margin-right: -5px;}f-element input[type='checkbox'] { appearance: none; cursor: pointer;}f-element input[type='checkbox'].toggle { height: 20px; width: 45px; border-radius: 16px; display: inline-block; position: relative; margin: 0; margin-top: 2px; background: linear-gradient( 0deg, #292929 0%, #0a0a0ac2 100% ); transition: all 0.2s ease;}f-element input[type='checkbox'].toggle:after { content: \"\"; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: white; box-shadow: 0 1px 2px rgba(44, 44, 44, 0.2); transition: all 0.2s cubic-bezier(0.5, 0.1, 0.75, 1.35);}f-element input[type='checkbox'].toggle:checked { background: linear-gradient( 0deg, #0177fb 0%, #0177fb 100% );}f-element input[type='checkbox'].toggle:checked:after { transform: translatex(25px);}f-element.auto-height { display: table;}f-element textarea { width: calc( 100% - 18px ); padding-top: 1px; padding-bottom: 3px; padding-left: 3px; padding-right: 8px; margin-top: 2px; margin-left: 2px; height: calc( 100% - 8px ); max-height: 300px; border-radius: 2px; resize: none; box-shadow: inset 0px 1px 1px rgb(0 0 0 / 20%), 0px 1px 0px rgb(255 255 255 / 5%);}f-element.auto-height textarea { resize: auto;}f-element select { width: 100%; margin-top: 2px; margin-bottom: 2px; margin-left: 2px; margin-right: 2px; padding-left: 5px; cursor: pointer; box-shadow: inset 0px 1px 1px rgb(0 0 0 / 20%), 0px 1px 0px rgb(255 255 255 / 5%);}f-element f-toolbar { position: absolute; display: flex; top: 0; width: 100%; height: 100%; align-content: space-around;}f-element.output-right f-toolbar { right: 7px; float: right; justify-content: end;}f-element f-toolbar { margin-top: auto; margin-bottom: auto; margin-left: 3px; margin-right: 3px; font-size: 18px; line-height: 18px;}f-element f-toolbar button { opacity: .7; cursor: pointer; font-size: 14px; width: unset; height: unset; border-radius: unset; border: unset; outline: 0; background-color: unset; box-shadow: unset;}f-element f-toolbar button:hover,f-element f-toolbar button:active { opacity: 1; border: 0; background-color: unset;}f-element input.range-value { width: 60px; text-align: center;}f-menu.context button,f-element button { width: 100%; height: calc( 100% - 4px ); margin-left: 2px; margin-right: 2px; margin-top: 2px; border-radius: 3px; cursor: pointer;}f-element button { box-shadow: inset 1px 1px 1px 0 rgb(255 255 255 / 17%), inset -2px -2px 2px 0 rgb(0 0 0 / 26%);}f-element button:hover { color: #fff; background-color: #2a2a2a;}f-element button:active { border: 1px solid rgba( 0, 120, 255, 0.98 );}f-element f-inputs,f-element f-subinputs { display: flex; width: 100%;}f-element f-inputs { left: 100px; top: 50%; transform: translateY(-50%); position: absolute; width: calc( 100% - 106px ); height: calc( 100% - 4px ); z-index: 1;}f-element f-label,f-element span { margin: auto; text-shadow: 1px 1px 0px #0007;}f-element f-label { padding-left: 4px; white-space: nowrap; position: absolute; top: 50%; transform: translateY(-50%); width: calc( 100% - 20px );}f-element.right f-label { text-align: right;}f-element f-label i { float: left; font-size: 18px; margin-right: 6px;}f-element f-label.center { width: 100%; text-align: center; display: block;}f-element.title { height: 29px; background-color: #3a3a3ab0; background-color: #3b3b43ed; cursor: all-scroll; border-top-left-radius: 6px; border-top-right-radius: 6px;}f-element.blue { background-color: #014fc5;}f-element.red { background-color: #bd0b0b;}f-element.green { background-color: #148d05;}f-element.yellow { background-color: #d6b100;}f-element.title.left { text-align: left; display: inline-grid; justify-content: start;}f-element.title span { text-align: center; font-size: 15px; padding-top: 2px;}f-element.title i { font-size: 18px; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); opacity: .5;}f-element.output-right.title i { left: 10px; right: unset;}f-element.title.left span { text-align: left;}f-element f-io { border: 2px solid #dadada; width: 7px; height: 7px; position: absolute; background: #242427; border-radius: 8px; float: left; left: -7px; top: calc( 50% - 5px ); cursor: alias; box-shadow: 0 0 3px 2px #0000005e; z-index: 1;}f-element f-io.connect,f-canvas.dragging-rio f-element:hover f-io.lio,f-canvas.dragging-lio f-element:hover f-io.rio { border: 2px solid #0177fb; zoom: 1.4;}f-node.io-connect f-io:not(.connect) { border: 2px solid #dadada !important; zoom: 1 !important;}f-element f-io.rio { float: right; right: -7px; left: unset;}f-element f-disconnect { position: absolute; left: -35px; top: 50%; font-size: 22px; transform: translateY( -50% ); filter: drop-shadow(0 0 5px #000); text-shadow: 0px 0px 5px black; cursor: pointer;}f-element.output-right f-disconnect { right: -35px; left: unset;}f-element f-disconnect:hover { color: #ff3300;}f-element textarea::-webkit-scrollbar { width: 6px;}f-element textarea::-webkit-scrollbar-track { background: #111; } f-element textarea::-webkit-scrollbar-thumb { background: #0177fb; }f-element textarea::-webkit-scrollbar-thumb:hover { background: #1187ff; }f-element.small { height: 18px;}f-element.large { height: 36px;}body.connecting f-node:not(.io-connect) f-element:hover,f-element.select { background-color: rgba(61, 70, 82, 0.98);}f-tooltip { pointer-events: none;}f-tooltip { position: absolute; left: 0; top: 0; background: rgba(0,0,0,.8); backdrop-filter: blur(4px); font-size: 14px; padding: 7px; border-radius: 10px; top: 50%; transform: translateY(-50%); visibility: hidden; pointer-events: none; opacity: 0; transition: all 0.3s ease; z-index: 150; white-space: nowrap;}f-menu.context { position: absolute; width: 170px; padding: 2px; margin: 0; background: #17171794; z-index: 110; font-size: 12px; border-radius: 6px; backdrop-filter: blur(6px); border: 1px solid #7e7e7e45; box-shadow: 3px 3px 6px rgba(0,0,0,.2); transition: opacity 0.2s ease, transform 0.1s ease;}f-menu.context.hidden { visibility: hidden; opacity: 0;}f-menu.context f-item { display: block; position: relative; margin: 0; padding: 0; white-space: nowrap;}f-menu.context f-item.submenu::after { content: \"\"; position: absolute; right: 6px; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); border: 5px solid transparent; border-left-color: #808080;}f-menu.context f-item:hover > f-menu,f-menu.context f-item.active > f-menu { visibility: unset; transform: unset; opacity: unset;}f-menu.context f-menu { top: 0px; left: calc( 100% - 4px );}f-menu.context f-item button { overflow: visible; display: block; width: calc( 100% - 6px ); text-align: left; cursor: pointer; white-space: nowrap; padding: 6px 8px; border-radius: 3px; background: #2d2d32; border: 0; color: #ddd; margin: 3px; text-shadow: 1px 1px 0px #0007;}f-menu.context f-item button i { float: left; font-size: 16px;}f-menu.context f-item button span { margin-left: 6px;}f-menu.context f-item:hover > button,f-menu.context f-item.active > button { color: #fff; background: #313136;}f-menu.context f-item button:active { outline: solid 1px rgba( 0, 80, 200, 0.98 );}f-menu.context f-item f-tooltip { margin-left: 120px;}f-menu.circle { position: absolute; left: 30px; top: 30px; z-index: 100;}f-menu.circle f-item { display: flex; justify-content: end; align-content: space-around; margin-bottom: 12px;}f-menu.circle f-item button { width: 50px; height: 50px; font-size: 26px; background: #17171794; border-radius: 50%; backdrop-filter: blur(6px); border: 1px solid #7e7e7e45; line-height: 100%; cursor: pointer; box-shadow: 3px 3px 6px rgba(0,0,0,.2);}f-menu.circle f-item f-tooltip { margin-left: 50px;}.f-rounded f-node f-element,.f-rounded f-node f-element.title.left { border-radius: 10px 5px 10px 5px;}.f-rounded f-node f-element input, .f-rounded f-node f-element select,.f-rounded f-node f-element button,.f-rounded f-node f-element textarea,.f-rounded f-node f-element input[type='checkbox'].toggle,.f-rounded f-node f-element input[type='checkbox'].toggle:after { border-radius: 20px 10px;}.f-rounded f-node f-element input { padding-left: 7px; padding-right: 7px;}.f-rounded f-menu.context,.f-rounded f-menu.context f-item button { border-radius: 20px 10px;}@media (hover: hover) and (pointer: fine) { f-element f-io:hover { border: 2px solid #0177fb; zoom: 1.4; } f-menu.circle f-item button:hover { background-color: #2a2a2a; } f-menu.circle f-item button:hover > f-tooltip, f-menu.context f-item button:hover > f-tooltip { visibility: visible; transform: translate(10px, -50%); opacity: 1; } f-menu.circle f-item button:focus > f-tooltip, f-menu.context f-item button:focus > f-tooltip { visibility: hidden; opacity: 0; }}f-canvas { will-change: top, left;}f-node { will-change: transform !important;}");
88
+
89
+ var REVISION = '1';
90
+ _exports.REVISION = REVISION;
91
+ var _id = 0;
92
+
93
+ var Serializer = /*#__PURE__*/function (_EventTarget) {
94
+ _inherits(Serializer, _EventTarget);
95
+
96
+ var _super = _createSuper(Serializer);
97
+
98
+ function Serializer() {
99
+ var _this;
100
+
101
+ _classCallCheck(this, Serializer);
102
+
103
+ _this = _super.call(this);
104
+ _this._id = _id++;
105
+ _this._serializable = true;
106
+ return _this;
107
+ }
108
+
109
+ _createClass(Serializer, [{
110
+ key: "id",
111
+ get: function get() {
112
+ return this._id;
113
+ }
114
+ }, {
115
+ key: "setSerializable",
116
+ value: function setSerializable(value) {
117
+ this._serializable = value;
118
+ return this;
119
+ }
120
+ }, {
121
+ key: "getSerializable",
122
+ value: function getSerializable() {
123
+ return this._serializable;
124
+ }
125
+ }, {
126
+ key: "serialize",
127
+ value: function
128
+ /*data*/
129
+ serialize() {
130
+ console.warn('Serializer: Abstract function.');
131
+ }
132
+ }, {
133
+ key: "deserialize",
134
+ value: function
135
+ /*data*/
136
+ deserialize() {
137
+ console.warn('Serializer: Abstract function.');
138
+ }
139
+ }, {
140
+ key: "toJSON",
141
+ value: function toJSON() {
142
+ var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
143
+ var object = null;
144
+ var id = this.id;
145
+
146
+ if (data !== null) {
147
+ var objects = data.objects;
148
+ object = objects[id];
149
+
150
+ if (object === undefined) {
151
+ object = {
152
+ objects: objects
153
+ };
154
+ this.serialize(object);
155
+ delete object.objects;
156
+ objects[id] = object;
157
+ }
158
+ } else {
159
+ object = {
160
+ objects: {}
161
+ };
162
+ this.serialize(object);
163
+ }
164
+
165
+ object.id = id;
166
+ object.type = this.constructor.name;
167
+ return object;
168
+ }
169
+ }]);
170
+
171
+ return Serializer;
172
+ }( /*#__PURE__*/_wrapNativeSuper(EventTarget));
173
+
174
+ _exports.Serializer = Serializer;
175
+
176
+ var draggableDOM = function draggableDOM(dom) {
177
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
178
+ var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'dragging';
179
+ var dragData = null;
180
+
181
+ var getZoom = function getZoom() {
182
+ var zoomDOM = dom;
183
+
184
+ while (zoomDOM && zoomDOM !== document) {
185
+ var zoom = zoomDOM.style.zoom;
186
+
187
+ if (zoom) {
188
+ return Number(zoom);
189
+ }
190
+
191
+ zoomDOM = zoomDOM.parentNode;
192
+ }
193
+
194
+ return 1;
195
+ };
196
+
197
+ var onMouseDown = function onMouseDown(e) {
198
+ var event = e.touches ? e.touches[0] : e;
199
+ e.stopImmediatePropagation();
200
+ dragData = {
201
+ client: {
202
+ x: event.clientX,
203
+ y: event.clientY
204
+ },
205
+ delta: {
206
+ x: 0,
207
+ y: 0
208
+ },
209
+ start: {
210
+ x: dom.offsetLeft,
211
+ y: dom.offsetTop
212
+ },
213
+ dragging: false,
214
+ isTouch: !!e.touches
215
+ };
216
+ window.addEventListener('mousemove', onGlobalMouseMove);
217
+ window.addEventListener('mouseup', onGlobalMouseUp);
218
+ window.addEventListener('touchmove', onGlobalMouseMove);
219
+ window.addEventListener('touchend', onGlobalMouseUp);
220
+ };
221
+
222
+ var onGlobalMouseMove = function onGlobalMouseMove(e) {
223
+ var _dragData = dragData,
224
+ start = _dragData.start,
225
+ delta = _dragData.delta,
226
+ client = _dragData.client;
227
+ var event = e.touches ? e.touches[0] : e;
228
+ var zoom = getZoom();
229
+ delta.x = (event.clientX - client.x) / zoom;
230
+ delta.y = (event.clientY - client.y) / zoom;
231
+ dragData.x = start.x + delta.x;
232
+ dragData.y = start.y + delta.y;
233
+
234
+ if (dragData.dragging === true) {
235
+ if (callback !== null) {
236
+ callback(dragData);
237
+ } else {
238
+ dom.style.cssText += "; left: ".concat(dragData.x, "px; top: ").concat(dragData.y, "px;");
239
+ }
240
+
241
+ e.stopImmediatePropagation();
242
+ } else {
243
+ if (Math.abs(delta.x) > 2 || Math.abs(delta.y) > 2) {
244
+ dragData.dragging = true;
245
+ dom.classList.add('drag');
246
+ if (className) document.body.classList.add(className);
247
+ e.stopImmediatePropagation();
248
+ }
249
+ }
250
+ };
251
+
252
+ var onGlobalMouseUp = function onGlobalMouseUp(e) {
253
+ e.stopImmediatePropagation();
254
+ dom.classList.remove('drag');
255
+ if (className) document.body.classList.remove(className);
256
+ window.removeEventListener('mousemove', onGlobalMouseMove);
257
+ window.removeEventListener('mouseup', onGlobalMouseUp);
258
+ window.removeEventListener('touchmove', onGlobalMouseMove);
259
+ window.removeEventListener('touchend', onGlobalMouseUp);
260
+
261
+ if (callback === null) {
262
+ dom.removeEventListener('mousedown', onMouseDown);
263
+ dom.removeEventListener('touchstart', onMouseDown);
264
+ }
265
+
266
+ dragData.dragging = false;
267
+
268
+ if (callback !== null) {
269
+ callback(dragData);
270
+ }
271
+ };
272
+
273
+ if (dom instanceof Event) {
274
+ var e = dom;
275
+ dom = e.target;
276
+ onMouseDown(e);
277
+ } else {
278
+ dom.addEventListener('mousedown', onMouseDown);
279
+ dom.addEventListener('touchstart', onMouseDown);
280
+ }
281
+ };
282
+
283
+ var dispatchEventList = function dispatchEventList(list) {
284
+ for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
285
+ params[_key - 1] = arguments[_key];
286
+ }
287
+
288
+ var _iterator = _createForOfIteratorHelper(list),
289
+ _step;
290
+
291
+ try {
292
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
293
+ var callback = _step.value;
294
+ callback.apply(void 0, params);
295
+ }
296
+ } catch (err) {
297
+ _iterator.e(err);
298
+ } finally {
299
+ _iterator.f();
300
+ }
301
+ };
302
+
303
+ var toPX = function toPX(val) {
304
+ if (isNaN(val) === false) {
305
+ val = "".concat(val, "px");
306
+ }
307
+
308
+ return val;
309
+ };
310
+
311
+ var toHex = function toHex(val) {
312
+ if (isNaN(val) === false) {
313
+ val = "#".concat(val.toString(16).padStart(6, '0'));
314
+ }
315
+
316
+ return val;
317
+ };
318
+
319
+ var Utils = /*#__PURE__*/Object.freeze({
320
+ __proto__: null,
321
+ draggableDOM: draggableDOM,
322
+ dispatchEventList: dispatchEventList,
323
+ toPX: toPX,
324
+ toHex: toHex
325
+ });
326
+ _exports.Utils = Utils;
327
+
328
+ var Link = /*#__PURE__*/function () {
329
+ function Link() {
330
+ var inputElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
331
+ var outputElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
332
+
333
+ _classCallCheck(this, Link);
334
+
335
+ this.inputElement = inputElement;
336
+ this.outputElement = outputElement;
337
+ }
338
+
339
+ _createClass(Link, [{
340
+ key: "lioElement",
341
+ get: function get() {
342
+ if (Link.InputDirection === 'left') {
343
+ return this.outputElement;
344
+ } else {
345
+ return this.inputElement;
346
+ }
347
+ }
348
+ }, {
349
+ key: "rioElement",
350
+ get: function get() {
351
+ if (Link.InputDirection === 'left') {
352
+ return this.inputElement;
353
+ } else {
354
+ return this.outputElement;
355
+ }
356
+ }
357
+ }]);
358
+
359
+ return Link;
360
+ }(); //Link.InputDirection = 'right';
361
+
362
+
363
+ Link.InputDirection = 'left';
364
+ var selected = null;
365
+
366
+ var Element = /*#__PURE__*/function (_Serializer) {
367
+ _inherits(Element, _Serializer);
368
+
369
+ var _super2 = _createSuper(Element);
370
+
371
+ function Element() {
372
+ var _this2;
373
+
374
+ var draggable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
375
+
376
+ _classCallCheck(this, Element);
377
+
378
+ _this2 = _super2.call(this);
379
+ var dom = document.createElement('f-element');
380
+ dom.element = _assertThisInitialized(_this2);
381
+
382
+ var onSelect = function onSelect(e) {
383
+ var element = _assertThisInitialized(_this2);
384
+
385
+ if (e.changedTouches && e.changedTouches.length > 0) {
386
+ var touch = e.changedTouches[0];
387
+ var overDOM = document.elementFromPoint(touch.clientX, touch.clientY);
388
+
389
+ while (overDOM && (!overDOM.element || !overDOM.element.isElement)) {
390
+ overDOM = overDOM.parentNode;
391
+ }
392
+
393
+ element = overDOM ? overDOM.element : null;
394
+ }
395
+
396
+ selected = element;
397
+ };
398
+
399
+ if (draggable === false) {
400
+ dom.ontouchstart = dom.onmousedown = function (e) {
401
+ e.stopPropagation();
402
+ };
403
+ }
404
+
405
+ dom.addEventListener('mouseup', onSelect, true);
406
+ dom.addEventListener('touchend', onSelect);
407
+ _this2.inputs = [];
408
+ _this2.links = [];
409
+ _this2.dom = dom;
410
+ _this2.lioLength = 0;
411
+ _this2.rioLength = 0;
412
+ _this2.events = {
413
+ 'connect': [],
414
+ 'connectChildren': []
415
+ };
416
+ _this2.node = null;
417
+ _this2.style = '';
418
+ _this2.extra = null;
419
+ _this2.visible = true;
420
+ _this2.inputsDOM = dom;
421
+ _this2.disconnectDOM = null;
422
+ _this2.lioDOM = _this2._createIO('lio');
423
+ _this2.rioDOM = _this2._createIO('rio');
424
+
425
+ _this2.dom.classList.add("output-".concat(Link.InputDirection));
426
+
427
+ _this2.dom.appendChild(_this2.lioDOM);
428
+
429
+ _this2.dom.appendChild(_this2.rioDOM);
430
+
431
+ _this2.addEventListener('connect', function () {
432
+ dispatchEventList(_this2.events.connect, _assertThisInitialized(_this2));
433
+ });
434
+
435
+ _this2.addEventListener('connectChildren', function () {
436
+ dispatchEventList(_this2.events.connectChildren, _assertThisInitialized(_this2));
437
+ });
438
+
439
+ return _this2;
440
+ }
441
+
442
+ _createClass(Element, [{
443
+ key: "onConnect",
444
+ value: function onConnect(callback) {
445
+ var childrens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
446
+ this.events.connect.push(callback);
447
+
448
+ if (childrens) {
449
+ this.events.connectChildren.push(callback);
450
+ }
451
+
452
+ return this;
453
+ }
454
+ }, {
455
+ key: "setExtra",
456
+ value: function setExtra(value) {
457
+ this.extra = value;
458
+ return this;
459
+ }
460
+ }, {
461
+ key: "getExtra",
462
+ value: function getExtra() {
463
+ return this.extra;
464
+ }
465
+ }, {
466
+ key: "setVisible",
467
+ value: function setVisible(value) {
468
+ this.visible = value;
469
+ this.dom.style.display = value ? '' : 'none';
470
+ return this;
471
+ }
472
+ }, {
473
+ key: "getVisible",
474
+ value: function getVisible() {
475
+ return this.visible;
476
+ }
477
+ }, {
478
+ key: "setStyle",
479
+ value: function setStyle(style) {
480
+ var dom = this.dom;
481
+ if (this.style) dom.classList.remove(this.style);
482
+ if (style) dom.classList.add(style);
483
+ this.style = style;
484
+ return this;
485
+ }
486
+ }, {
487
+ key: "setInput",
488
+ value: function setInput(length) {
489
+ if (Link.InputDirection === 'left') {
490
+ return this.setLIO(length);
491
+ } else {
492
+ return this.setRIO(length);
493
+ }
494
+ }
495
+ }, {
496
+ key: "setOutput",
497
+ value: function setOutput(length) {
498
+ if (Link.InputDirection === 'left') {
499
+ return this.setRIO(length);
500
+ } else {
501
+ return this.setLIO(length);
502
+ }
503
+ }
504
+ }, {
505
+ key: "inputLength",
506
+ get: function get() {
507
+ if (Link.InputDirection === 'left') {
508
+ return this.lioLength;
509
+ } else {
510
+ return this.rioLength;
511
+ }
512
+ }
513
+ }, {
514
+ key: "outputLength",
515
+ get: function get() {
516
+ if (Link.InputDirection === 'left') {
517
+ return this.rioLength;
518
+ } else {
519
+ return this.lioLength;
520
+ }
521
+ }
522
+ }, {
523
+ key: "setLIO",
524
+ value: function setLIO(length) {
525
+ this.lioLength = length;
526
+ this.lioDOM.style.visibility = length > 0 ? '' : 'hidden';
527
+ return this;
528
+ }
529
+ }, {
530
+ key: "setRIO",
531
+ value: function setRIO(length) {
532
+ this.rioLength = length;
533
+ this.rioDOM.style.visibility = length > 0 ? '' : 'hidden';
534
+ return this;
535
+ }
536
+ }, {
537
+ key: "add",
538
+ value: function add(input) {
539
+ this.inputs.push(input);
540
+ input.element = this;
541
+ this.inputsDOM.appendChild(input.dom);
542
+ return this;
543
+ }
544
+ }, {
545
+ key: "setHeight",
546
+ value: function setHeight(val) {
547
+ this.dom.style.height = toPX(val);
548
+ return this;
549
+ }
550
+ }, {
551
+ key: "getHeight",
552
+ value: function getHeight() {
553
+ return this.dom.style.height;
554
+ }
555
+ }, {
556
+ key: "connect",
557
+ value: function connect() {
558
+ var _this3 = this;
559
+
560
+ var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
561
+
562
+ if (this.disconnectDOM !== null) {
563
+ // remove the current input
564
+ this.disconnectDOM.dispatchEvent(new Event('disconnect'));
565
+ }
566
+
567
+ if (element !== null) {
568
+ var link = new Link(this, element);
569
+ this.links.push(link);
570
+
571
+ if (this.disconnectDOM === null) {
572
+ this.disconnectDOM = document.createElement('f-disconnect');
573
+ this.disconnectDOM.innerText = '✖';
574
+ this.dom.appendChild(this.disconnectDOM);
575
+
576
+ var onDisconnect = function onDisconnect() {
577
+ _this3.links = [];
578
+
579
+ _this3.dom.removeChild(_this3.disconnectDOM);
580
+
581
+ _this3.disconnectDOM.removeEventListener('mousedown', onClick, true);
582
+
583
+ _this3.disconnectDOM.removeEventListener('touchstart', onClick, true);
584
+
585
+ _this3.disconnectDOM.removeEventListener('disconnect', onDisconnect, true);
586
+
587
+ element.removeEventListener('connect', onConnect);
588
+ element.removeEventListener('connectChildren', onConnect);
589
+ element.removeEventListener('nodeConnect', onConnect);
590
+ element.removeEventListener('nodeConnectChildren', onConnect);
591
+ element.removeEventListener('dispose', onDispose);
592
+ _this3.disconnectDOM = null;
593
+ };
594
+
595
+ var onConnect = function onConnect(e) {
596
+ _this3.dispatchEvent(new Event('connectChildren'));
597
+ };
598
+
599
+ var onDispose = function onDispose() {
600
+ _this3.connect();
601
+ };
602
+
603
+ var onClick = function onClick(e) {
604
+ e.stopPropagation();
605
+
606
+ _this3.connect();
607
+ };
608
+
609
+ this.disconnectDOM.addEventListener('mousedown', onClick, true);
610
+ this.disconnectDOM.addEventListener('touchstart', onClick, true);
611
+ this.disconnectDOM.addEventListener('disconnect', onDisconnect, true);
612
+ element.addEventListener('connect', onConnect);
613
+ element.addEventListener('connectChildren', onConnect);
614
+ element.addEventListener('nodeConnect', onConnect);
615
+ element.addEventListener('nodeConnectChildren', onConnect);
616
+ element.addEventListener('dispose', onDispose);
617
+ }
618
+ }
619
+
620
+ this.dispatchEvent(new Event('connect'));
621
+ return this;
622
+ }
623
+ }, {
624
+ key: "dispose",
625
+ value: function dispose() {
626
+ this.dispatchEvent(new Event('dispose'));
627
+ }
628
+ }, {
629
+ key: "serialize",
630
+ value: function serialize(data) {
631
+ var height = this.getHeight();
632
+ var inputs = [];
633
+ var links = [];
634
+
635
+ var _iterator2 = _createForOfIteratorHelper(this.inputs),
636
+ _step2;
637
+
638
+ try {
639
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
640
+ var input = _step2.value;
641
+ inputs.push(input.toJSON(data).id);
642
+ }
643
+ } catch (err) {
644
+ _iterator2.e(err);
645
+ } finally {
646
+ _iterator2.f();
647
+ }
648
+
649
+ var _iterator3 = _createForOfIteratorHelper(this.links),
650
+ _step3;
651
+
652
+ try {
653
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
654
+ var link = _step3.value;
655
+
656
+ if (link.inputElement !== null && link.outputElement !== null) {
657
+ links.push(link.outputElement.toJSON(data).id);
658
+ }
659
+ }
660
+ } catch (err) {
661
+ _iterator3.e(err);
662
+ } finally {
663
+ _iterator3.f();
664
+ }
665
+
666
+ if (this.inputLength > 0) data.inputLength = this.inputLength;
667
+ if (this.outputLength > 0) data.outputLength = this.outputLength;
668
+ if (inputs.length > 0) data.inputs = inputs;
669
+ if (links.length > 0) data.links = links;
670
+
671
+ if (this.style !== '') {
672
+ data.style = this.style;
673
+ }
674
+
675
+ if (height !== '') {
676
+ data.height = height;
677
+ }
678
+ }
679
+ }, {
680
+ key: "deserialize",
681
+ value: function deserialize(data) {
682
+ if (data.inputLength !== undefined) this.setInput(data.inputLength);
683
+ if (data.outputLength !== undefined) this.setOutput(data.outputLength);
684
+
685
+ if (data.inputs !== undefined) {
686
+ var inputs = this.inputs;
687
+
688
+ if (inputs.length > 0) {
689
+ var index = 0;
690
+
691
+ var _iterator4 = _createForOfIteratorHelper(data.inputs),
692
+ _step4;
693
+
694
+ try {
695
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
696
+ var id = _step4.value;
697
+ data.objects[id] = inputs[index++];
698
+ }
699
+ } catch (err) {
700
+ _iterator4.e(err);
701
+ } finally {
702
+ _iterator4.f();
703
+ }
704
+ } else {
705
+ var _iterator5 = _createForOfIteratorHelper(data.inputs),
706
+ _step5;
707
+
708
+ try {
709
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
710
+ var _id2 = _step5.value;
711
+ this.add(data.objects[_id2]);
712
+ }
713
+ } catch (err) {
714
+ _iterator5.e(err);
715
+ } finally {
716
+ _iterator5.f();
717
+ }
718
+ }
719
+ }
720
+
721
+ if (data.links !== undefined) {
722
+ var _iterator6 = _createForOfIteratorHelper(data.links),
723
+ _step6;
724
+
725
+ try {
726
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
727
+ var _id3 = _step6.value;
728
+ this.connect(data.objects[_id3]);
729
+ }
730
+ } catch (err) {
731
+ _iterator6.e(err);
732
+ } finally {
733
+ _iterator6.f();
734
+ }
735
+ }
736
+
737
+ if (data.style !== undefined) {
738
+ this.setStyle(data.style);
739
+ }
740
+
741
+ if (data.height !== undefined) {
742
+ this.setHeight(data.height);
743
+ }
744
+ }
745
+ }, {
746
+ key: "linkedExtra",
747
+ get: function get() {
748
+ var linkedElement = this.linkedElement;
749
+ return linkedElement ? linkedElement.getExtra() : null;
750
+ }
751
+ }, {
752
+ key: "linkedElement",
753
+ get: function get() {
754
+ var link = this.link;
755
+ return link ? link.outputElement : null;
756
+ }
757
+ }, {
758
+ key: "link",
759
+ get: function get() {
760
+ return this.links[0];
761
+ }
762
+ }, {
763
+ key: "_createIO",
764
+ value: function _createIO(type) {
765
+ var _this4 = this;
766
+
767
+ var dom = this.dom;
768
+ var ioDOM = document.createElement('f-io');
769
+ ioDOM.style.visibility = 'hidden';
770
+ ioDOM.className = type;
771
+
772
+ var onConnectEvent = function onConnectEvent(e) {
773
+ e.preventDefault();
774
+ e.stopPropagation();
775
+ selected = null;
776
+ var nodeDOM = _this4.node.dom;
777
+ nodeDOM.classList.add('io-connect');
778
+ ioDOM.classList.add('connect');
779
+ dom.classList.add('select');
780
+ var defaultOutput = Link.InputDirection === 'left' ? 'lio' : 'rio';
781
+ var link = type === defaultOutput ? new Link(_this4) : new Link(null, _this4);
782
+
783
+ _this4.links.push(link);
784
+
785
+ draggableDOM(e, function (data) {
786
+ if (data.dragging === false) {
787
+ nodeDOM.classList.remove('io-connect');
788
+ ioDOM.classList.remove('connect');
789
+ dom.classList.remove('select');
790
+
791
+ _this4.links.splice(_this4.links.indexOf(link), 1);
792
+
793
+ if (selected !== null) {
794
+ if (type === defaultOutput) {
795
+ link.outputElement = selected;
796
+ } else {
797
+ link.inputElement = selected;
798
+ } // check if is an is circular link
799
+
800
+
801
+ if (link.outputElement.node.isCircular(link.inputElement.node)) {
802
+ return;
803
+ } //
804
+
805
+
806
+ if (link.inputElement.inputLength > 0 && link.outputElement.outputLength > 0) {
807
+ link.inputElement.connect(link.outputElement);
808
+ }
809
+ }
810
+ }
811
+ }, 'connecting');
812
+ };
813
+
814
+ ioDOM.addEventListener('mousedown', onConnectEvent, true);
815
+ ioDOM.addEventListener('touchstart', onConnectEvent, true);
816
+ return ioDOM;
817
+ }
818
+ }]);
819
+
820
+ return Element;
821
+ }(Serializer);
822
+
823
+ _exports.Element = Element;
824
+ Element.prototype.isElement = true;
825
+
826
+ var Input = /*#__PURE__*/function (_Serializer2) {
827
+ _inherits(Input, _Serializer2);
828
+
829
+ var _super3 = _createSuper(Input);
830
+
831
+ function Input(dom) {
832
+ var _this5;
833
+
834
+ _classCallCheck(this, Input);
835
+
836
+ _this5 = _super3.call(this);
837
+ _this5.dom = dom;
838
+ _this5.element = null;
839
+ _this5.extra = null;
840
+ _this5.events = {
841
+ 'change': [],
842
+ 'click': []
843
+ };
844
+
845
+ _this5.addEventListener('change', function () {
846
+ dispatchEventList(_this5.events.change, _assertThisInitialized(_this5));
847
+ });
848
+
849
+ _this5.addEventListener('click', function () {
850
+ dispatchEventList(_this5.events.click, _assertThisInitialized(_this5));
851
+ });
852
+
853
+ return _this5;
854
+ }
855
+
856
+ _createClass(Input, [{
857
+ key: "setExtra",
858
+ value: function setExtra(value) {
859
+ this.extra = value;
860
+ return this;
861
+ }
862
+ }, {
863
+ key: "getExtra",
864
+ value: function getExtra() {
865
+ return this.extra;
866
+ }
867
+ }, {
868
+ key: "setToolTip",
869
+ value: function setToolTip(text) {
870
+ var div = document.createElement('f-tooltip');
871
+ div.innerText = text;
872
+ this.dom.appendChild(div);
873
+ return this;
874
+ }
875
+ }, {
876
+ key: "onChange",
877
+ value: function onChange(callback) {
878
+ this.events.change.push(callback);
879
+ return this;
880
+ }
881
+ }, {
882
+ key: "onClick",
883
+ value: function onClick(callback) {
884
+ this.events.click.push(callback);
885
+ return this;
886
+ }
887
+ }, {
888
+ key: "setValue",
889
+ value: function setValue(value) {
890
+ var dispatch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
891
+ this.dom.value = value;
892
+ if (dispatch) this.dispatchEvent(new Event('change'));
893
+ return this;
894
+ }
895
+ }, {
896
+ key: "getValue",
897
+ value: function getValue() {
898
+ return this.dom.value;
899
+ }
900
+ }, {
901
+ key: "serialize",
902
+ value: function serialize(data) {
903
+ data.value = this.getValue();
904
+ }
905
+ }, {
906
+ key: "deserialize",
907
+ value: function deserialize(data) {
908
+ this.setValue(data.value);
909
+ }
910
+ }]);
911
+
912
+ return Input;
913
+ }(Serializer);
914
+
915
+ _exports.Input = Input;
916
+ Input.prototype.isInput = true;
917
+
918
+ var Node = /*#__PURE__*/function (_Serializer3) {
919
+ _inherits(Node, _Serializer3);
920
+
921
+ var _super4 = _createSuper(Node);
922
+
923
+ function Node() {
924
+ var _this6;
925
+
926
+ _classCallCheck(this, Node);
927
+
928
+ _this6 = _super4.call(this);
929
+ var dom = document.createElement('f-node');
930
+
931
+ var onDown = function onDown() {
932
+ var canvas = _this6.canvas;
933
+
934
+ if (canvas !== null) {
935
+ canvas.select(_assertThisInitialized(_this6));
936
+ }
937
+ };
938
+
939
+ dom.addEventListener('mousedown', onDown, true);
940
+ dom.addEventListener('touchstart', onDown, true);
941
+
942
+ _this6._onConnect = function (e) {
943
+ var target = e.target;
944
+
945
+ var _iterator7 = _createForOfIteratorHelper(_this6.elements),
946
+ _step7;
947
+
948
+ try {
949
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
950
+ var element = _step7.value;
951
+
952
+ if (element !== target) {
953
+ element.dispatchEvent(new Event('nodeConnect'));
954
+ }
955
+ }
956
+ } catch (err) {
957
+ _iterator7.e(err);
958
+ } finally {
959
+ _iterator7.f();
960
+ }
961
+ };
962
+
963
+ _this6._onConnectChildren = function (e) {
964
+ var target = e.target;
965
+
966
+ var _iterator8 = _createForOfIteratorHelper(_this6.elements),
967
+ _step8;
968
+
969
+ try {
970
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
971
+ var element = _step8.value;
972
+
973
+ if (element !== target) {
974
+ element.dispatchEvent(new Event('nodeConnectChildren'));
975
+ }
976
+ }
977
+ } catch (err) {
978
+ _iterator8.e(err);
979
+ } finally {
980
+ _iterator8.f();
981
+ }
982
+ };
983
+
984
+ _this6.dom = dom;
985
+ _this6.style = '';
986
+ _this6.canvas = null;
987
+ _this6.elements = [];
988
+ _this6.events = {
989
+ 'focus': [],
990
+ 'blur': []
991
+ };
992
+
993
+ _this6.setPosition(0, 0);
994
+
995
+ return _this6;
996
+ }
997
+
998
+ _createClass(Node, [{
999
+ key: "onFocus",
1000
+ value: function onFocus(callback) {
1001
+ this.events.focus.push(callback);
1002
+ return this;
1003
+ }
1004
+ }, {
1005
+ key: "onBlur",
1006
+ value: function onBlur(callback) {
1007
+ this.events.blur.push(callback);
1008
+ return this;
1009
+ }
1010
+ }, {
1011
+ key: "setStyle",
1012
+ value: function setStyle(style) {
1013
+ var dom = this.dom;
1014
+ if (this.style) dom.classList.remove(this.style);
1015
+ if (style) dom.classList.add(style);
1016
+ this.style = style;
1017
+ return this;
1018
+ }
1019
+ }, {
1020
+ key: "setPosition",
1021
+ value: function setPosition(x, y) {
1022
+ var dom = this.dom;
1023
+ dom.style.left = toPX(x);
1024
+ dom.style.top = toPX(y);
1025
+ return this;
1026
+ }
1027
+ }, {
1028
+ key: "getPosition",
1029
+ value: function getPosition() {
1030
+ var dom = this.dom;
1031
+ return {
1032
+ x: parseInt(dom.style.left),
1033
+ y: parseInt(dom.style.top)
1034
+ };
1035
+ }
1036
+ }, {
1037
+ key: "setWidth",
1038
+ value: function setWidth(val) {
1039
+ this.dom.style.width = toPX(val);
1040
+ return this;
1041
+ }
1042
+ }, {
1043
+ key: "getWidth",
1044
+ value: function getWidth() {
1045
+ return this.dom.style.width;
1046
+ }
1047
+ }, {
1048
+ key: "add",
1049
+ value: function add(element) {
1050
+ this.elements.push(element);
1051
+ element.node = this;
1052
+ element.addEventListener('connect', this._onConnect);
1053
+ element.addEventListener('connectChildren', this._onConnectChildren);
1054
+ this.dom.appendChild(element.dom);
1055
+ return this;
1056
+ }
1057
+ }, {
1058
+ key: "remove",
1059
+ value: function remove(element) {
1060
+ this.elements.splice(this.elements.indexOf(element), 1);
1061
+ element.node = null;
1062
+ element.removeEventListener('connect', this._onConnect);
1063
+ element.removeEventListener('connectChildren', this._onConnectChildren);
1064
+ this.dom.removeChild(element.dom);
1065
+ return this;
1066
+ }
1067
+ }, {
1068
+ key: "dispose",
1069
+ value: function dispose() {
1070
+ var canvas = this.canvas;
1071
+ if (canvas !== null) canvas.remove(this);
1072
+
1073
+ var _iterator9 = _createForOfIteratorHelper(this.elements),
1074
+ _step9;
1075
+
1076
+ try {
1077
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
1078
+ var element = _step9.value;
1079
+ element.dispose();
1080
+ }
1081
+ } catch (err) {
1082
+ _iterator9.e(err);
1083
+ } finally {
1084
+ _iterator9.f();
1085
+ }
1086
+
1087
+ this.dispatchEvent(new Event('dispose'));
1088
+ }
1089
+ }, {
1090
+ key: "isCircular",
1091
+ value: function isCircular(node) {
1092
+ if (node === this) return true;
1093
+ var links = this.getLinks();
1094
+
1095
+ var _iterator10 = _createForOfIteratorHelper(links),
1096
+ _step10;
1097
+
1098
+ try {
1099
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
1100
+ var link = _step10.value;
1101
+
1102
+ if (link.outputElement.node.isCircular(node)) {
1103
+ return true;
1104
+ }
1105
+ }
1106
+ } catch (err) {
1107
+ _iterator10.e(err);
1108
+ } finally {
1109
+ _iterator10.f();
1110
+ }
1111
+
1112
+ return false;
1113
+ }
1114
+ }, {
1115
+ key: "getLinks",
1116
+ value: function getLinks() {
1117
+ var links = [];
1118
+
1119
+ var _iterator11 = _createForOfIteratorHelper(this.elements),
1120
+ _step11;
1121
+
1122
+ try {
1123
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
1124
+ var element = _step11.value;
1125
+ links.push.apply(links, _toConsumableArray(element.links));
1126
+ }
1127
+ } catch (err) {
1128
+ _iterator11.e(err);
1129
+ } finally {
1130
+ _iterator11.f();
1131
+ }
1132
+
1133
+ return links;
1134
+ }
1135
+ }, {
1136
+ key: "serialize",
1137
+ value: function serialize(data) {
1138
+ var _this$getPosition = this.getPosition(),
1139
+ x = _this$getPosition.x,
1140
+ y = _this$getPosition.y,
1141
+ style = _this$getPosition.style;
1142
+
1143
+ var elements = [];
1144
+
1145
+ var _iterator12 = _createForOfIteratorHelper(this.elements),
1146
+ _step12;
1147
+
1148
+ try {
1149
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
1150
+ var element = _step12.value;
1151
+ elements.push(element.toJSON(data).id);
1152
+ }
1153
+ } catch (err) {
1154
+ _iterator12.e(err);
1155
+ } finally {
1156
+ _iterator12.f();
1157
+ }
1158
+
1159
+ data.x = x;
1160
+ data.y = y;
1161
+ data.width = this.getWidth();
1162
+ data.elements = elements;
1163
+
1164
+ if (style !== '') {
1165
+ data.style = style;
1166
+ }
1167
+ }
1168
+ }, {
1169
+ key: "deserialize",
1170
+ value: function deserialize(data) {
1171
+ this.setPosition(data.x, data.y);
1172
+ this.setWidth(data.width);
1173
+
1174
+ if (data.style !== undefined) {
1175
+ this.setStyle(data.style);
1176
+ }
1177
+
1178
+ var elements = this.elements;
1179
+
1180
+ if (elements.length > 0) {
1181
+ var index = 0;
1182
+
1183
+ var _iterator13 = _createForOfIteratorHelper(data.elements),
1184
+ _step13;
1185
+
1186
+ try {
1187
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
1188
+ var id = _step13.value;
1189
+ data.objects[id] = elements[index++];
1190
+ }
1191
+ } catch (err) {
1192
+ _iterator13.e(err);
1193
+ } finally {
1194
+ _iterator13.f();
1195
+ }
1196
+ } else {
1197
+ var _iterator14 = _createForOfIteratorHelper(data.elements),
1198
+ _step14;
1199
+
1200
+ try {
1201
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
1202
+ var _id4 = _step14.value;
1203
+ this.add(data.objects[_id4]);
1204
+ }
1205
+ } catch (err) {
1206
+ _iterator14.e(err);
1207
+ } finally {
1208
+ _iterator14.f();
1209
+ }
1210
+ }
1211
+ }
1212
+ }]);
1213
+
1214
+ return Node;
1215
+ }(Serializer);
1216
+
1217
+ _exports.Node = Node;
1218
+ Node.prototype.isNode = true;
1219
+
1220
+ var drawLine = function drawLine(p1x, p1y, p2x, p2y, invert, size, color, ctx) {
1221
+ var offset = 100 * (invert ? -1 : 1);
1222
+ ctx.beginPath();
1223
+ ctx.moveTo(p1x, p1y);
1224
+ ctx.bezierCurveTo(p1x + offset, p1y, p2x - offset, p2y, p2x, p2y);
1225
+ ctx.lineWidth = size;
1226
+ ctx.strokeStyle = color;
1227
+ ctx.stroke();
1228
+ };
1229
+
1230
+ var colors = ['#ff4444', '#44ff44', '#4444ff'];
1231
+
1232
+ var Canvas = /*#__PURE__*/function (_Serializer4) {
1233
+ _inherits(Canvas, _Serializer4);
1234
+
1235
+ var _super5 = _createSuper(Canvas);
1236
+
1237
+ function Canvas() {
1238
+ var _this7;
1239
+
1240
+ _classCallCheck(this, Canvas);
1241
+
1242
+ _this7 = _super5.call(this);
1243
+ var dom = document.createElement('f-canvas');
1244
+ var contentDOM = document.createElement('f-content');
1245
+ var areaDOM = document.createElement('f-area');
1246
+ var canvas = document.createElement('canvas');
1247
+ var frontCanvas = document.createElement('canvas');
1248
+ var context = canvas.getContext('2d');
1249
+ var frontContext = frontCanvas.getContext('2d');
1250
+ _this7.dom = dom;
1251
+ _this7.contentDOM = contentDOM;
1252
+ _this7.areaDOM = areaDOM;
1253
+ _this7.canvas = canvas;
1254
+ _this7.frontCanvas = frontCanvas;
1255
+ _this7.context = context;
1256
+ _this7.frontContext = frontContext;
1257
+ _this7.width = 10000;
1258
+ _this7.height = 10000;
1259
+ _this7.clientX = 0;
1260
+ _this7.clientY = 0;
1261
+ _this7.relativeClientX = 0;
1262
+ _this7.relativeClientY = 0;
1263
+ _this7.zoom = 1;
1264
+ _this7.nodes = [];
1265
+ _this7.selected = null;
1266
+ _this7.updating = false;
1267
+ frontCanvas.className = 'front';
1268
+ contentDOM.style.left = toPX(_this7.centerX);
1269
+ contentDOM.style.top = toPX(_this7.centerY);
1270
+ areaDOM.style.width = "calc( 100% + ".concat(_this7.width, "px )");
1271
+ areaDOM.style.height = "calc( 100% + ".concat(_this7.height, "px )");
1272
+ dom.appendChild(canvas);
1273
+ dom.appendChild(frontCanvas);
1274
+ dom.appendChild(contentDOM);
1275
+ dom.appendChild(areaDOM);
1276
+ /*
1277
+ let zoomTouchData = null;
1278
+ const onZoomStart = () => {
1279
+ zoomTouchData = null;
1280
+ };
1281
+ */
1282
+
1283
+ var onZoom = function onZoom(e) {
1284
+ if (e.touches) {
1285
+ if (e.touches.length === 2) {
1286
+ e.preventDefault();
1287
+ e.stopImmediatePropagation();
1288
+ /*
1289
+ const clientX = ( e.touches[ 0 ].clientX + e.touches[ 1 ].clientX ) / 2;
1290
+ const clientY = ( e.touches[ 0 ].clientY + e.touches[ 1 ].clientY ) / 2;
1291
+ const distance = Math.hypot(
1292
+ e.touches[ 0 ].clientX - e.touches[ 1 ].clientX,
1293
+ e.touches[ 0 ].clientY - e.touches[ 1 ].clientY
1294
+ );
1295
+ if ( zoomTouchData === null ) {
1296
+ zoomTouchData = {
1297
+ distance
1298
+ };
1299
+ }
1300
+ const delta = ( zoomTouchData.distance - distance );
1301
+ zoomTouchData.distance = distance;
1302
+ let zoom = Math.min( Math.max( this.zoom - delta * .01, .5 ), 1.2 );
1303
+ if ( zoom < .52 ) zoom = .5;
1304
+ else if ( zoom > .98 ) zoom = 1;
1305
+ contentDOM.style.left = toPX( this.centerX / zoom );
1306
+ contentDOM.style.top = toPX( this.centerY / zoom );
1307
+ contentDOM.style.zoom = this.zoom = zoom;
1308
+ */
1309
+ }
1310
+ } else {
1311
+ e.preventDefault();
1312
+ e.stopImmediatePropagation();
1313
+ /*
1314
+ const delta = e.deltaY / 100;
1315
+ const zoom = Math.min( Math.max( this.zoom - delta * .1, .5 ), 1 );
1316
+ contentDOM.style.left = toPX( this.centerX / zoom );
1317
+ contentDOM.style.top = toPX( this.centerY / zoom );
1318
+ contentDOM.style.zoom = this.zoom = zoom;
1319
+ */
1320
+ }
1321
+ };
1322
+
1323
+ dom.addEventListener('wheel', onZoom);
1324
+ dom.addEventListener('touchmove', onZoom); //dom.addEventListener( 'touchstart', onZoomStart );
1325
+
1326
+ draggableDOM(dom, function (data) {
1327
+ var delta = data.delta,
1328
+ isTouch = data.isTouch;
1329
+
1330
+ if (!isTouch) {
1331
+ if (data.scrollTop === undefined) {
1332
+ data.scrollLeft = dom.scrollLeft;
1333
+ data.scrollTop = dom.scrollTop;
1334
+ }
1335
+
1336
+ dom.scrollLeft = data.scrollLeft - delta.x;
1337
+ dom.scrollTop = data.scrollTop - delta.y;
1338
+ }
1339
+
1340
+ if (data.dragging) {
1341
+ dom.classList.add('grabbing');
1342
+ } else {
1343
+ dom.classList.remove('grabbing');
1344
+ }
1345
+ }, 'dragging-canvas');
1346
+
1347
+ _this7._onMoveEvent = function (e) {
1348
+ var event = e.touches ? e.touches[0] : e;
1349
+
1350
+ var _assertThisInitialize = _assertThisInitialized(_this7),
1351
+ zoom = _assertThisInitialize.zoom,
1352
+ rect = _assertThisInitialize.rect;
1353
+
1354
+ _this7.clientX = event.clientX;
1355
+ _this7.clientY = event.clientY;
1356
+ _this7.relativeClientX = (dom.scrollLeft - _this7.centerX + event.clientX - rect.left) / zoom;
1357
+ _this7.relativeClientY = (dom.scrollTop - _this7.centerY + event.clientY - rect.top) / zoom;
1358
+ };
1359
+
1360
+ _this7._onContentLoaded = function () {
1361
+ _this7.centralize();
1362
+ };
1363
+
1364
+ _this7._onUpdate = function () {
1365
+ _this7.update();
1366
+ };
1367
+
1368
+ _this7.start();
1369
+
1370
+ return _this7;
1371
+ }
1372
+
1373
+ _createClass(Canvas, [{
1374
+ key: "rect",
1375
+ get: function get() {
1376
+ return this.dom.getBoundingClientRect();
1377
+ }
1378
+ }, {
1379
+ key: "relativeX",
1380
+ get: function get() {
1381
+ return this.dom.scrollLeft - this.centerX;
1382
+ }
1383
+ }, {
1384
+ key: "relativeY",
1385
+ get: function get() {
1386
+ return this.dom.scrollTop - this.centerY;
1387
+ }
1388
+ }, {
1389
+ key: "centerX",
1390
+ get: function get() {
1391
+ return this.width / 2;
1392
+ }
1393
+ }, {
1394
+ key: "centerY",
1395
+ get: function get() {
1396
+ return this.height / 2;
1397
+ }
1398
+ }, {
1399
+ key: "start",
1400
+ value: function start() {
1401
+ this.updating = true;
1402
+ document.addEventListener('wheel', this._onMoveEvent, true);
1403
+ document.addEventListener('mousedown', this._onMoveEvent, true);
1404
+ document.addEventListener('touchstart', this._onMoveEvent, true);
1405
+ document.addEventListener('mousemove', this._onMoveEvent, true);
1406
+ document.addEventListener('touchmove', this._onMoveEvent, true);
1407
+ document.addEventListener('DOMContentLoaded', this._onContentLoaded);
1408
+ requestAnimationFrame(this._onUpdate);
1409
+ }
1410
+ }, {
1411
+ key: "stop",
1412
+ value: function stop() {
1413
+ this.updating = false;
1414
+ document.removeEventListener('wheel', this._onMoveEvent, true);
1415
+ document.removeEventListener('mousedown', this._onMoveEvent, true);
1416
+ document.removeEventListener('touchstart', this._onMoveEvent, true);
1417
+ document.removeEventListener('mousemove', this._onMoveEvent, true);
1418
+ document.removeEventListener('touchmove', this._onMoveEvent, true);
1419
+ document.removeEventListener('DOMContentLoaded', this._onContentLoaded);
1420
+ }
1421
+ }, {
1422
+ key: "add",
1423
+ value: function add(node) {
1424
+ this.nodes.push(node);
1425
+ node.canvas = this;
1426
+ this.contentDOM.appendChild(node.dom);
1427
+ return this;
1428
+ }
1429
+ }, {
1430
+ key: "remove",
1431
+ value: function remove(node) {
1432
+ if (node === this.selected) {
1433
+ this.select();
1434
+ }
1435
+
1436
+ this.unlink(node);
1437
+ var nodes = this.nodes;
1438
+ nodes.splice(nodes.indexOf(node), 1);
1439
+ node.canvas = null;
1440
+ this.contentDOM.removeChild(node.dom);
1441
+ return this;
1442
+ }
1443
+ }, {
1444
+ key: "clear",
1445
+ value: function clear() {
1446
+ var nodes = this.nodes;
1447
+
1448
+ while (nodes.length > 0) {
1449
+ this.remove(nodes[0]);
1450
+ }
1451
+
1452
+ return this;
1453
+ }
1454
+ }, {
1455
+ key: "unlink",
1456
+ value: function unlink(node) {
1457
+ var links = this.getLinks();
1458
+
1459
+ var _iterator15 = _createForOfIteratorHelper(links),
1460
+ _step15;
1461
+
1462
+ try {
1463
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
1464
+ var link = _step15.value;
1465
+
1466
+ if (link.outputElement && link.outputElement.node === node) {
1467
+ link.inputElement.connect();
1468
+ }
1469
+ }
1470
+ } catch (err) {
1471
+ _iterator15.e(err);
1472
+ } finally {
1473
+ _iterator15.f();
1474
+ }
1475
+ }
1476
+ }, {
1477
+ key: "getLinks",
1478
+ value: function getLinks() {
1479
+ var links = [];
1480
+
1481
+ var _iterator16 = _createForOfIteratorHelper(this.nodes),
1482
+ _step16;
1483
+
1484
+ try {
1485
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
1486
+ var node = _step16.value;
1487
+ links.push.apply(links, _toConsumableArray(node.getLinks()));
1488
+ }
1489
+ } catch (err) {
1490
+ _iterator16.e(err);
1491
+ } finally {
1492
+ _iterator16.f();
1493
+ }
1494
+
1495
+ return links;
1496
+ }
1497
+ }, {
1498
+ key: "centralize",
1499
+ value: function centralize() {
1500
+ this.dom.scroll(this.centerX, this.centerY);
1501
+ return this;
1502
+ }
1503
+ }, {
1504
+ key: "select",
1505
+ value: function select() {
1506
+ var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1507
+ if (node === this.selected) return;
1508
+ var previousNode = this.selected;
1509
+
1510
+ if (previousNode !== null) {
1511
+ previousNode.dom.classList.remove('selected');
1512
+ this.selected = null;
1513
+ dispatchEventList(previousNode.events.blur, previousNode);
1514
+ }
1515
+
1516
+ if (node !== null) {
1517
+ node.dom.classList.add('selected');
1518
+ this.selected = node;
1519
+ dispatchEventList(node.events.focus, node);
1520
+ }
1521
+ }
1522
+ }, {
1523
+ key: "update",
1524
+ value: function update() {
1525
+ if (this.updating === false) return;
1526
+ requestAnimationFrame(this._onUpdate);
1527
+ var dom = this.dom,
1528
+ zoom = this.zoom,
1529
+ canvas = this.canvas,
1530
+ frontCanvas = this.frontCanvas,
1531
+ frontContext = this.frontContext,
1532
+ context = this.context;
1533
+ var width = window.innerWidth;
1534
+ var height = window.innerHeight;
1535
+ var domRect = this.rect;
1536
+
1537
+ if (canvas.width !== width || canvas.height !== height) {
1538
+ canvas.width = width;
1539
+ canvas.height = height;
1540
+ frontCanvas.width = width;
1541
+ frontCanvas.height = height;
1542
+ }
1543
+
1544
+ context.clearRect(0, 0, width, height);
1545
+ frontContext.clearRect(0, 0, width, height);
1546
+ context.globalCompositeOperation = 'lighter';
1547
+ frontContext.globalCompositeOperation = 'source-over';
1548
+ var links = this.getLinks();
1549
+ var aPos = {
1550
+ x: 0,
1551
+ y: 0
1552
+ };
1553
+ var bPos = {
1554
+ x: 0,
1555
+ y: 0
1556
+ };
1557
+ var offsetIORadius = 10;
1558
+ var dragging = '';
1559
+
1560
+ var _iterator17 = _createForOfIteratorHelper(links),
1561
+ _step17;
1562
+
1563
+ try {
1564
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
1565
+ var link = _step17.value;
1566
+ var lioElement = link.lioElement,
1567
+ rioElement = link.rioElement;
1568
+ var draggingLink = '';
1569
+ var length = 0;
1570
+
1571
+ if (lioElement !== null) {
1572
+ var rect = lioElement.dom.getBoundingClientRect();
1573
+ length = Math.max(length, lioElement.rioLength);
1574
+ aPos.x = rect.x + rect.width;
1575
+ aPos.y = rect.y + rect.height / 2;
1576
+ } else {
1577
+ aPos.x = this.clientX;
1578
+ aPos.y = this.clientY;
1579
+ draggingLink = 'lio';
1580
+ }
1581
+
1582
+ if (rioElement !== null) {
1583
+ var _rect = rioElement.dom.getBoundingClientRect();
1584
+
1585
+ length = Math.max(length, rioElement.lioLength);
1586
+ bPos.x = _rect.x;
1587
+ bPos.y = _rect.y + _rect.height / 2;
1588
+ } else {
1589
+ bPos.x = this.clientX;
1590
+ bPos.y = this.clientY;
1591
+ draggingLink = 'rio';
1592
+ }
1593
+
1594
+ dragging = dragging || draggingLink;
1595
+ var drawContext = draggingLink ? frontContext : context;
1596
+
1597
+ if (draggingLink || length === 1) {
1598
+ if (draggingLink === 'rio') {
1599
+ aPos.x += offsetIORadius;
1600
+ bPos.x /= zoom;
1601
+ bPos.y /= zoom;
1602
+ } else if (draggingLink === 'lio') {
1603
+ bPos.x -= offsetIORadius;
1604
+ aPos.x /= zoom;
1605
+ aPos.y /= zoom;
1606
+ }
1607
+
1608
+ drawLine(aPos.x * zoom, aPos.y * zoom, bPos.x * zoom, bPos.y * zoom, false, 2, '#ffffff', drawContext);
1609
+ } else {
1610
+ length = Math.min(length, 4);
1611
+
1612
+ for (var i = 0; i < length; i++) {
1613
+ var color = colors[i] || '#ffffff';
1614
+ var marginY = 4;
1615
+ var rioLength = Math.min(lioElement.rioLength, length);
1616
+ var lioLength = Math.min(rioElement.lioLength, length);
1617
+ var aCenterY = rioLength * marginY * .5 - marginY / 2;
1618
+ var bCenterY = lioLength * marginY * .5 - marginY / 2;
1619
+ var aIndex = Math.min(i, rioLength - 1);
1620
+ var bIndex = Math.min(i, lioLength - 1);
1621
+ var aPosY = aIndex * marginY;
1622
+ var bPosY = bIndex * marginY;
1623
+ drawLine(aPos.x * zoom, (aPos.y + aPosY - aCenterY) * zoom, bPos.x * zoom, (bPos.y + bPosY - bCenterY) * zoom, false, 2, color, drawContext);
1624
+ }
1625
+ }
1626
+ }
1627
+ } catch (err) {
1628
+ _iterator17.e(err);
1629
+ } finally {
1630
+ _iterator17.f();
1631
+ }
1632
+
1633
+ context.globalCompositeOperation = 'destination-in';
1634
+ context.fillRect(domRect.x, domRect.y, domRect.width, domRect.height);
1635
+
1636
+ if (dragging !== '') {
1637
+ dom.classList.add('dragging-' + dragging);
1638
+ } else {
1639
+ dom.classList.remove('dragging-lio');
1640
+ dom.classList.remove('dragging-rio');
1641
+ }
1642
+ }
1643
+ }, {
1644
+ key: "serialize",
1645
+ value: function serialize(data) {
1646
+ var nodes = [];
1647
+
1648
+ var _iterator18 = _createForOfIteratorHelper(this.nodes),
1649
+ _step18;
1650
+
1651
+ try {
1652
+ for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
1653
+ var node = _step18.value;
1654
+ nodes.push(node.toJSON(data).id);
1655
+ }
1656
+ } catch (err) {
1657
+ _iterator18.e(err);
1658
+ } finally {
1659
+ _iterator18.f();
1660
+ }
1661
+
1662
+ data.nodes = nodes;
1663
+ }
1664
+ }, {
1665
+ key: "deserialize",
1666
+ value: function deserialize(data) {
1667
+ var _iterator19 = _createForOfIteratorHelper(data.nodes),
1668
+ _step19;
1669
+
1670
+ try {
1671
+ for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
1672
+ var id = _step19.value;
1673
+ this.add(data.objects[id]);
1674
+ }
1675
+ } catch (err) {
1676
+ _iterator19.e(err);
1677
+ } finally {
1678
+ _iterator19.f();
1679
+ }
1680
+ }
1681
+ }]);
1682
+
1683
+ return Canvas;
1684
+ }(Serializer);
1685
+
1686
+ _exports.Canvas = Canvas;
1687
+
1688
+ var ButtonInput = /*#__PURE__*/function (_Input) {
1689
+ _inherits(ButtonInput, _Input);
1690
+
1691
+ var _super6 = _createSuper(ButtonInput);
1692
+
1693
+ function ButtonInput() {
1694
+ var _this8;
1695
+
1696
+ var innterText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1697
+
1698
+ _classCallCheck(this, ButtonInput);
1699
+
1700
+ var dom = document.createElement('button');
1701
+ var spanDOM = document.createElement('span');
1702
+ dom.appendChild(spanDOM);
1703
+ var iconDOM = document.createElement('i');
1704
+ dom.appendChild(iconDOM);
1705
+ _this8 = _super6.call(this, dom);
1706
+ _this8.spanDOM = spanDOM;
1707
+ _this8.iconDOM = iconDOM;
1708
+ spanDOM.innerText = innterText;
1709
+
1710
+ dom.onmouseover = function () {
1711
+ _this8.dispatchEvent(new Event('mouseover'));
1712
+ };
1713
+
1714
+ dom.onclick = dom.ontouchstart = function (e) {
1715
+ e.preventDefault();
1716
+ e.stopPropagation();
1717
+
1718
+ _this8.dispatchEvent(new Event('click'));
1719
+ };
1720
+
1721
+ return _this8;
1722
+ }
1723
+
1724
+ _createClass(ButtonInput, [{
1725
+ key: "setIcon",
1726
+ value: function setIcon(className) {
1727
+ this.iconDOM.className = className;
1728
+ return this;
1729
+ }
1730
+ }, {
1731
+ key: "setValue",
1732
+ value: function setValue(val) {
1733
+ this.spanDOM.innerText = val;
1734
+ return this;
1735
+ }
1736
+ }, {
1737
+ key: "getValue",
1738
+ value: function getValue() {
1739
+ return this.spanDOM.innerText;
1740
+ }
1741
+ }]);
1742
+
1743
+ return ButtonInput;
1744
+ }(Input);
1745
+
1746
+ _exports.ButtonInput = ButtonInput;
1747
+
1748
+ var DraggableElement = /*#__PURE__*/function (_Element) {
1749
+ _inherits(DraggableElement, _Element);
1750
+
1751
+ var _super7 = _createSuper(DraggableElement);
1752
+
1753
+ function DraggableElement() {
1754
+ var _this9;
1755
+
1756
+ var draggable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
1757
+
1758
+ _classCallCheck(this, DraggableElement);
1759
+
1760
+ _this9 = _super7.call(this, true);
1761
+ _this9.draggable = draggable;
1762
+
1763
+ var onDrag = function onDrag(e) {
1764
+ e.preventDefault();
1765
+
1766
+ if (_this9.draggable === true) {
1767
+ draggableDOM(_this9.node.dom);
1768
+ }
1769
+ };
1770
+
1771
+ var _assertThisInitialize2 = _assertThisInitialized(_this9),
1772
+ dom = _assertThisInitialize2.dom;
1773
+
1774
+ dom.addEventListener('mousedown', onDrag, true);
1775
+ dom.addEventListener('touchstart', onDrag, true);
1776
+ return _this9;
1777
+ }
1778
+
1779
+ return _createClass(DraggableElement);
1780
+ }(Element);
1781
+
1782
+ _exports.DraggableElement = DraggableElement;
1783
+
1784
+ var TitleElement = /*#__PURE__*/function (_DraggableElement) {
1785
+ _inherits(TitleElement, _DraggableElement);
1786
+
1787
+ var _super8 = _createSuper(TitleElement);
1788
+
1789
+ function TitleElement(title) {
1790
+ var _this10;
1791
+
1792
+ var draggable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1793
+
1794
+ _classCallCheck(this, TitleElement);
1795
+
1796
+ _this10 = _super8.call(this, draggable);
1797
+
1798
+ var _assertThisInitialize3 = _assertThisInitialized(_this10),
1799
+ dom = _assertThisInitialize3.dom;
1800
+
1801
+ dom.className = 'title';
1802
+ var spanDOM = document.createElement('span');
1803
+ spanDOM.innerText = title;
1804
+ var iconDOM = document.createElement('i');
1805
+ var toolbarDOM = document.createElement('f-toolbar');
1806
+ _this10.buttons = [];
1807
+ _this10.spanDOM = spanDOM;
1808
+ _this10.iconDOM = iconDOM;
1809
+ _this10.toolbarDOM = toolbarDOM;
1810
+ dom.appendChild(spanDOM);
1811
+ dom.appendChild(iconDOM);
1812
+ dom.appendChild(toolbarDOM);
1813
+ return _this10;
1814
+ }
1815
+
1816
+ _createClass(TitleElement, [{
1817
+ key: "setIcon",
1818
+ value: function setIcon(value) {
1819
+ this.iconDOM.className = value;
1820
+ return this;
1821
+ }
1822
+ }, {
1823
+ key: "getIcon",
1824
+ value: function getIcon() {
1825
+ return this.iconDOM.className;
1826
+ }
1827
+ }, {
1828
+ key: "setTitle",
1829
+ value: function setTitle(value) {
1830
+ this.spanDOM.innerText = value;
1831
+ return this;
1832
+ }
1833
+ }, {
1834
+ key: "getTitle",
1835
+ value: function getTitle() {
1836
+ return this.spanDOM.innerText;
1837
+ }
1838
+ }, {
1839
+ key: "addButton",
1840
+ value: function addButton(button) {
1841
+ this.buttons.push(button);
1842
+ this.toolbarDOM.appendChild(button.dom);
1843
+ return this;
1844
+ }
1845
+ }, {
1846
+ key: "serialize",
1847
+ value: function serialize(data) {
1848
+ _get(_getPrototypeOf(TitleElement.prototype), "serialize", this).call(this, data);
1849
+
1850
+ var title = this.getTitle();
1851
+ var icon = this.getIcon();
1852
+ data.title = title;
1853
+
1854
+ if (icon !== '') {
1855
+ data.icon = icon;
1856
+ }
1857
+ }
1858
+ }, {
1859
+ key: "deserialize",
1860
+ value: function deserialize(data) {
1861
+ _get(_getPrototypeOf(TitleElement.prototype), "deserialize", this).call(this, data);
1862
+
1863
+ this.setTitle(data.title);
1864
+
1865
+ if (data.icon !== undefined) {
1866
+ this.setIcon(data.icon);
1867
+ }
1868
+ }
1869
+ }]);
1870
+
1871
+ return TitleElement;
1872
+ }(DraggableElement);
1873
+
1874
+ _exports.TitleElement = TitleElement;
1875
+
1876
+ var ObjectNode = /*#__PURE__*/function (_Node) {
1877
+ _inherits(ObjectNode, _Node);
1878
+
1879
+ var _super9 = _createSuper(ObjectNode);
1880
+
1881
+ function ObjectNode(name, inputLength) {
1882
+ var _this11;
1883
+
1884
+ var extra = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1885
+ var width = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300;
1886
+
1887
+ _classCallCheck(this, ObjectNode);
1888
+
1889
+ _this11 = _super9.call(this);
1890
+
1891
+ _this11.setWidth(width);
1892
+
1893
+ var title = new TitleElement(name).setExtra(extra).setOutput(inputLength);
1894
+ var closeButton = new ButtonInput('✖').onClick(function () {
1895
+ _this11.dispose();
1896
+ });
1897
+ title.addButton(closeButton);
1898
+
1899
+ _this11.add(title);
1900
+
1901
+ _this11.title = title;
1902
+ _this11.closeButton = closeButton;
1903
+ return _this11;
1904
+ }
1905
+
1906
+ _createClass(ObjectNode, [{
1907
+ key: "setExtra",
1908
+ value: function setExtra(value) {
1909
+ this.title.setExtra(value);
1910
+ return this;
1911
+ }
1912
+ }, {
1913
+ key: "getExtra",
1914
+ value: function getExtra(value) {
1915
+ return this.title.getExtra();
1916
+ }
1917
+ }, {
1918
+ key: "invalidate",
1919
+ value: function invalidate() {
1920
+ this.title.dispatchEvent(new Event('connect'));
1921
+ }
1922
+ }]);
1923
+
1924
+ return ObjectNode;
1925
+ }(Node);
1926
+
1927
+ _exports.ObjectNode = ObjectNode;
1928
+ var ENTER_KEY$1 = 13;
1929
+
1930
+ var StringInput = /*#__PURE__*/function (_Input2) {
1931
+ _inherits(StringInput, _Input2);
1932
+
1933
+ var _super10 = _createSuper(StringInput);
1934
+
1935
+ function StringInput() {
1936
+ var _this12;
1937
+
1938
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1939
+
1940
+ _classCallCheck(this, StringInput);
1941
+
1942
+ var dom = document.createElement('input');
1943
+ _this12 = _super10.call(this, dom);
1944
+ dom.type = 'text';
1945
+ dom.value = value;
1946
+ dom.spellcheck = false;
1947
+ dom.autocomplete = 'off';
1948
+
1949
+ dom.onblur = function () {
1950
+ _this12.dispatchEvent(new Event('blur'));
1951
+ };
1952
+
1953
+ dom.onchange = function () {
1954
+ _this12.dispatchEvent(new Event('change'));
1955
+ };
1956
+
1957
+ dom.onkeyup = function (e) {
1958
+ if (e.keyCode === ENTER_KEY$1) {
1959
+ e.target.blur();
1960
+ }
1961
+
1962
+ e.stopPropagation();
1963
+
1964
+ _this12.dispatchEvent(new Event('change'));
1965
+ };
1966
+
1967
+ return _this12;
1968
+ }
1969
+
1970
+ return _createClass(StringInput);
1971
+ }(Input);
1972
+
1973
+ _exports.StringInput = StringInput;
1974
+ var ENTER_KEY = 13;
1975
+
1976
+ var NumberInput = /*#__PURE__*/function (_Input3) {
1977
+ _inherits(NumberInput, _Input3);
1978
+
1979
+ var _super11 = _createSuper(NumberInput);
1980
+
1981
+ function NumberInput() {
1982
+ var _this13;
1983
+
1984
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
1985
+ var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -Infinity;
1986
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;
1987
+ var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : .01;
1988
+
1989
+ _classCallCheck(this, NumberInput);
1990
+
1991
+ var dom = document.createElement('input');
1992
+ _this13 = _super11.call(this, dom);
1993
+ _this13.min = min;
1994
+ _this13.max = max;
1995
+ _this13.step = step;
1996
+ _this13.integer = false;
1997
+ dom.type = 'text';
1998
+ dom.className = 'number';
1999
+ dom.value = _this13._getString(value);
2000
+ dom.spellcheck = false;
2001
+ dom.autocomplete = 'off';
2002
+
2003
+ dom.ondragstart = dom.oncontextmenu = function (e) {
2004
+ e.preventDefault();
2005
+ e.stopPropagation();
2006
+ };
2007
+
2008
+ dom.onfocus = dom.onclick = function () {
2009
+ dom.select();
2010
+ };
2011
+
2012
+ dom.onblur = function () {
2013
+ _this13.dispatchEvent(new Event('blur'));
2014
+ };
2015
+
2016
+ dom.onchange = function () {
2017
+ _this13.dispatchEvent(new Event('change'));
2018
+ };
2019
+
2020
+ dom.onkeydown = function (e) {
2021
+ if (e.key.length === 1 && /\d|\./.test(e.key) !== true) {
2022
+ return false;
2023
+ }
2024
+
2025
+ if (e.keyCode === ENTER_KEY) {
2026
+ e.target.blur();
2027
+ }
2028
+
2029
+ e.stopPropagation();
2030
+ };
2031
+
2032
+ draggableDOM(dom, function (data) {
2033
+ var delta = data.delta;
2034
+
2035
+ if (data.value === undefined) {
2036
+ data.value = _this13.getValue();
2037
+ }
2038
+
2039
+ var diff = delta.x - delta.y;
2040
+ var value = data.value + diff * _this13.step;
2041
+ _this13.dom.value = _this13._getString(value.toFixed(_this13.precision));
2042
+
2043
+ _this13.dispatchEvent(new Event('change'));
2044
+ });
2045
+ return _this13;
2046
+ }
2047
+
2048
+ _createClass(NumberInput, [{
2049
+ key: "setRange",
2050
+ value: function setRange(min, max, step) {
2051
+ this.min = min;
2052
+ this.max = max;
2053
+ this.step = step;
2054
+ this.dispatchEvent(new Event('range'));
2055
+ return this.setValue(this.getValue());
2056
+ }
2057
+ }, {
2058
+ key: "precision",
2059
+ get: function get() {
2060
+ if (this.integer === true) return 0;
2061
+ var fract = this.step % 1;
2062
+ return fract !== 0 ? fract.toString().split('.')[1].length : 1;
2063
+ }
2064
+ }, {
2065
+ key: "setValue",
2066
+ value: function setValue(val) {
2067
+ var dispatch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2068
+ return _get(_getPrototypeOf(NumberInput.prototype), "setValue", this).call(this, this._getString(val), dispatch);
2069
+ }
2070
+ }, {
2071
+ key: "getValue",
2072
+ value: function getValue() {
2073
+ return Number(this.dom.value);
2074
+ }
2075
+ }, {
2076
+ key: "serialize",
2077
+ value: function serialize(data) {
2078
+ var min = this.min,
2079
+ max = this.max;
2080
+
2081
+ if (min !== -Infinity && max !== Infinity) {
2082
+ data.min = this.min;
2083
+ data.max = this.max;
2084
+ data.step = this.step;
2085
+ }
2086
+
2087
+ _get(_getPrototypeOf(NumberInput.prototype), "serialize", this).call(this, data);
2088
+ }
2089
+ }, {
2090
+ key: "deserialize",
2091
+ value: function deserialize(data) {
2092
+ if (data.min !== undefined) {
2093
+ var min = this.min,
2094
+ max = this.max,
2095
+ step = this.step;
2096
+ this.setRange(min, max, step);
2097
+ }
2098
+
2099
+ _get(_getPrototypeOf(NumberInput.prototype), "deserialize", this).call(this, data);
2100
+ }
2101
+ }, {
2102
+ key: "_getString",
2103
+ value: function _getString(value) {
2104
+ var num = Math.min(Math.max(Number(value), this.min), this.max);
2105
+
2106
+ if (this.integer === true) {
2107
+ return Math.floor(num);
2108
+ } else {
2109
+ return num + (num % 1 ? '' : '.0');
2110
+ }
2111
+ }
2112
+ }]);
2113
+
2114
+ return NumberInput;
2115
+ }(Input);
2116
+
2117
+ _exports.NumberInput = NumberInput;
2118
+
2119
+ var getStep = function getStep(min, max) {
2120
+ var sensibility = .001;
2121
+ return (max - min) * sensibility;
2122
+ };
2123
+
2124
+ var SliderInput = /*#__PURE__*/function (_Input4) {
2125
+ _inherits(SliderInput, _Input4);
2126
+
2127
+ var _super12 = _createSuper(SliderInput);
2128
+
2129
+ function SliderInput() {
2130
+ var _this14;
2131
+
2132
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
2133
+ var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2134
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
2135
+
2136
+ _classCallCheck(this, SliderInput);
2137
+
2138
+ var dom = document.createElement('f-subinputs');
2139
+ _this14 = _super12.call(this, dom);
2140
+ value = Math.min(Math.max(value, min), max);
2141
+ var step = getStep(min, max);
2142
+ var rangeDOM = document.createElement('input');
2143
+ rangeDOM.type = 'range';
2144
+ rangeDOM.min = min;
2145
+ rangeDOM.max = max;
2146
+ rangeDOM.step = step;
2147
+ rangeDOM.value = value;
2148
+ var field = new NumberInput(value, min, max, step);
2149
+ field.dom.className = 'range-value';
2150
+ field.onChange(function () {
2151
+ rangeDOM.value = field.getValue();
2152
+ });
2153
+ field.addEventListener('range', function () {
2154
+ rangeDOM.min = field.min;
2155
+ rangeDOM.max = field.max;
2156
+ rangeDOM.step = field.step;
2157
+ rangeDOM.value = field.getValue();
2158
+ });
2159
+ dom.appendChild(rangeDOM);
2160
+ dom.appendChild(field.dom);
2161
+ _this14.rangeDOM = rangeDOM;
2162
+ _this14.field = field;
2163
+
2164
+ var updateRangeValue = function updateRangeValue() {
2165
+ var value = Number(rangeDOM.value);
2166
+
2167
+ if (value !== _this14.max && value + _this14.step >= _this14.max) {
2168
+ // fix not end range fraction
2169
+ rangeDOM.value = value = _this14.max;
2170
+ }
2171
+
2172
+ _this14.field.setValue(value);
2173
+ };
2174
+
2175
+ draggableDOM(rangeDOM, function () {
2176
+ updateRangeValue();
2177
+
2178
+ _this14.dispatchEvent(new Event('change'));
2179
+ }, '');
2180
+ return _this14;
2181
+ }
2182
+
2183
+ _createClass(SliderInput, [{
2184
+ key: "min",
2185
+ get: function get() {
2186
+ return this.field.min;
2187
+ }
2188
+ }, {
2189
+ key: "max",
2190
+ get: function get() {
2191
+ return this.field.max;
2192
+ }
2193
+ }, {
2194
+ key: "step",
2195
+ get: function get() {
2196
+ return this.field.step;
2197
+ }
2198
+ }, {
2199
+ key: "setRange",
2200
+ value: function setRange(min, max) {
2201
+ this.field.setRange(min, max, getStep(min, max));
2202
+ this.dispatchEvent(new Event('range'));
2203
+ this.dispatchEvent(new Event('change'));
2204
+ return this;
2205
+ }
2206
+ }, {
2207
+ key: "setValue",
2208
+ value: function setValue(val) {
2209
+ var dispatch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2210
+ this.field.setValue(val);
2211
+ this.rangeDOM.value = val;
2212
+ if (dispatch) this.dispatchEvent(new Event('change'));
2213
+ return this;
2214
+ }
2215
+ }, {
2216
+ key: "getValue",
2217
+ value: function getValue() {
2218
+ return this.field.getValue();
2219
+ }
2220
+ }, {
2221
+ key: "serialize",
2222
+ value: function serialize(data) {
2223
+ data.min = this.min;
2224
+ data.max = this.max;
2225
+
2226
+ _get(_getPrototypeOf(SliderInput.prototype), "serialize", this).call(this, data);
2227
+ }
2228
+ }, {
2229
+ key: "deserialize",
2230
+ value: function deserialize(data) {
2231
+ var min = data.min,
2232
+ max = data.max;
2233
+ this.setRange(min, max);
2234
+
2235
+ _get(_getPrototypeOf(SliderInput.prototype), "deserialize", this).call(this, data);
2236
+ }
2237
+ }]);
2238
+
2239
+ return SliderInput;
2240
+ }(Input);
2241
+
2242
+ _exports.SliderInput = SliderInput;
2243
+
2244
+ var ColorInput = /*#__PURE__*/function (_Input5) {
2245
+ _inherits(ColorInput, _Input5);
2246
+
2247
+ var _super13 = _createSuper(ColorInput);
2248
+
2249
+ function ColorInput() {
2250
+ var _this15;
2251
+
2252
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0x0099ff;
2253
+
2254
+ _classCallCheck(this, ColorInput);
2255
+
2256
+ var dom = document.createElement('input');
2257
+ _this15 = _super13.call(this, dom);
2258
+ dom.type = 'color';
2259
+ dom.value = toHex(value);
2260
+
2261
+ dom.oninput = function () {
2262
+ _this15.dispatchEvent(new Event('change'));
2263
+ };
2264
+
2265
+ return _this15;
2266
+ }
2267
+
2268
+ _createClass(ColorInput, [{
2269
+ key: "setValue",
2270
+ value: function setValue(value) {
2271
+ var dispatch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2272
+ return _get(_getPrototypeOf(ColorInput.prototype), "setValue", this).call(this, toHex(value), dispatch);
2273
+ }
2274
+ }, {
2275
+ key: "getValue",
2276
+ value: function getValue() {
2277
+ return parseInt(_get(_getPrototypeOf(ColorInput.prototype), "getValue", this).call(this).substr(1), 16);
2278
+ }
2279
+ }]);
2280
+
2281
+ return ColorInput;
2282
+ }(Input);
2283
+
2284
+ _exports.ColorInput = ColorInput;
2285
+
2286
+ var TextInput = /*#__PURE__*/function (_Input6) {
2287
+ _inherits(TextInput, _Input6);
2288
+
2289
+ var _super14 = _createSuper(TextInput);
2290
+
2291
+ function TextInput() {
2292
+ var _this16;
2293
+
2294
+ var innerText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
2295
+
2296
+ _classCallCheck(this, TextInput);
2297
+
2298
+ var dom = document.createElement('textarea');
2299
+ _this16 = _super14.call(this, dom);
2300
+ dom.innerText = innerText;
2301
+ return _this16;
2302
+ }
2303
+
2304
+ _createClass(TextInput, [{
2305
+ key: "setValue",
2306
+ value: function setValue(val) {
2307
+ this.dom.innerText = val;
2308
+ return this;
2309
+ }
2310
+ }, {
2311
+ key: "getValue",
2312
+ value: function getValue() {
2313
+ return this.dom.innerText;
2314
+ }
2315
+ }]);
2316
+
2317
+ return TextInput;
2318
+ }(Input);
2319
+
2320
+ _exports.TextInput = TextInput;
2321
+
2322
+ var LabelElement = /*#__PURE__*/function (_Element2) {
2323
+ _inherits(LabelElement, _Element2);
2324
+
2325
+ var _super15 = _createSuper(LabelElement);
2326
+
2327
+ function LabelElement() {
2328
+ var _this17;
2329
+
2330
+ var label = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
2331
+ var align = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
2332
+
2333
+ _classCallCheck(this, LabelElement);
2334
+
2335
+ _this17 = _super15.call(this);
2336
+ _this17.labelDOM = document.createElement('f-label');
2337
+ _this17.inputsDOM = document.createElement('f-inputs');
2338
+ var spanDOM = document.createElement('span');
2339
+ var iconDOM = document.createElement('i');
2340
+ _this17.spanDOM = spanDOM;
2341
+ _this17.iconDOM = iconDOM;
2342
+
2343
+ _this17.labelDOM.appendChild(_this17.spanDOM);
2344
+
2345
+ _this17.labelDOM.appendChild(_this17.iconDOM);
2346
+
2347
+ _this17.dom.appendChild(_this17.labelDOM);
2348
+
2349
+ _this17.dom.appendChild(_this17.inputsDOM);
2350
+
2351
+ _this17.setLabel(label);
2352
+
2353
+ _this17.setAlign(align);
2354
+
2355
+ return _this17;
2356
+ }
2357
+
2358
+ _createClass(LabelElement, [{
2359
+ key: "setIcon",
2360
+ value: function setIcon(value) {
2361
+ this.iconDOM.className = value;
2362
+ return this;
2363
+ }
2364
+ }, {
2365
+ key: "getIcon",
2366
+ value: function getIcon() {
2367
+ return this.iconDOM.className;
2368
+ }
2369
+ }, {
2370
+ key: "setAlign",
2371
+ value: function setAlign(align) {
2372
+ this.labelDOM.className = align;
2373
+ }
2374
+ }, {
2375
+ key: "setLabel",
2376
+ value: function setLabel(val) {
2377
+ this.spanDOM.innerText = val;
2378
+ }
2379
+ }, {
2380
+ key: "getLabel",
2381
+ value: function getLabel() {
2382
+ return this.spanDOM.innerText;
2383
+ }
2384
+ }, {
2385
+ key: "serialize",
2386
+ value: function serialize(data) {
2387
+ _get(_getPrototypeOf(LabelElement.prototype), "serialize", this).call(this, data);
2388
+
2389
+ var label = this.getLabel();
2390
+ var icon = this.getIcon();
2391
+ data.label = label;
2392
+
2393
+ if (icon !== '') {
2394
+ data.icon = icon;
2395
+ }
2396
+ }
2397
+ }, {
2398
+ key: "deserialize",
2399
+ value: function deserialize(data) {
2400
+ _get(_getPrototypeOf(LabelElement.prototype), "deserialize", this).call(this, data);
2401
+
2402
+ this.setLabel(data.label);
2403
+
2404
+ if (data.icon !== undefined) {
2405
+ this.setIcon(data.icon);
2406
+ }
2407
+ }
2408
+ }]);
2409
+
2410
+ return LabelElement;
2411
+ }(Element);
2412
+
2413
+ _exports.LabelElement = LabelElement;
2414
+
2415
+ var PanelNode = /*#__PURE__*/function (_Node2) {
2416
+ _inherits(PanelNode, _Node2);
2417
+
2418
+ var _super16 = _createSuper(PanelNode);
2419
+
2420
+ function PanelNode() {
2421
+ var _this18;
2422
+
2423
+ var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Panel';
2424
+ var align = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top-right';
2425
+
2426
+ _classCallCheck(this, PanelNode);
2427
+
2428
+ _this18 = _super16.call(this);
2429
+ var titleElement = new TitleElement(title);
2430
+
2431
+ _this18.add(titleElement);
2432
+
2433
+ var collapseButton = new ButtonInput('🗕');
2434
+ collapseButton.onClick(function () {
2435
+ _this18.setCollapse(!_this18.collapsed);
2436
+ });
2437
+ titleElement.addButton(collapseButton);
2438
+ _this18.collapseButton = collapseButton;
2439
+ _this18.titleElement = titleElement;
2440
+ _this18.align = align;
2441
+ _this18.collapsed = false;
2442
+
2443
+ _this18.setAlign(align);
2444
+
2445
+ _this18.setStyle('rouded');
2446
+
2447
+ return _this18;
2448
+ }
2449
+
2450
+ _createClass(PanelNode, [{
2451
+ key: "setCollapse",
2452
+ value: function setCollapse(value) {
2453
+ var cssClass = 'closed';
2454
+ this.dom.classList.remove(cssClass);
2455
+ this.collapsed = value;
2456
+ this.collapseButton.value = value ? '🗖' : '🗕';
2457
+
2458
+ if (value === true) {
2459
+ this.dom.classList.add(cssClass);
2460
+ }
2461
+
2462
+ return this;
2463
+ }
2464
+ }, {
2465
+ key: "setAlign",
2466
+ value: function setAlign(align) {
2467
+ if (this.align) this.dom.classList.remove(this.align);
2468
+ this.dom.classList.add(align);
2469
+ this.align = align;
2470
+ return this;
2471
+ }
2472
+ }, {
2473
+ key: "addInput",
2474
+ value: function addInput(inputClass, object, property) {
2475
+ var value = object[property];
2476
+
2477
+ for (var _len2 = arguments.length, params = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
2478
+ params[_key2 - 3] = arguments[_key2];
2479
+ }
2480
+
2481
+ var input = _construct(inputClass, [value].concat(params));
2482
+
2483
+ input.onChange(function () {
2484
+ object[property] = input.value;
2485
+ });
2486
+ this.add(new LabelElement(property).add(input));
2487
+ return input;
2488
+ }
2489
+ }, {
2490
+ key: "addSlider",
2491
+ value: function addSlider(object, property, min, max) {
2492
+ return this.addInput(SliderInput, object, property, min, max);
2493
+ }
2494
+ }, {
2495
+ key: "addNumber",
2496
+ value: function addNumber(object, property) {
2497
+ return this.addInput(NumberInput, object, property);
2498
+ }
2499
+ }, {
2500
+ key: "addColor",
2501
+ value: function addColor(object, property) {
2502
+ return this.addInput(ColorInput, object, property);
2503
+ }
2504
+ }, {
2505
+ key: "addString",
2506
+ value: function addString(object, property) {
2507
+ return this.addInput(StringInput, object, property);
2508
+ }
2509
+ }, {
2510
+ key: "addText",
2511
+ value: function addText(object, property) {
2512
+ var input = this.addInput(TextInput, object, property);
2513
+ input.element.setHeight(70);
2514
+ return input;
2515
+ }
2516
+ }, {
2517
+ key: "addButton",
2518
+ value: function addButton(name) {
2519
+ var input = new ButtonInput(name);
2520
+ this.add(new Element().setHeight(34).add(input));
2521
+ return input;
2522
+ }
2523
+ }]);
2524
+
2525
+ return PanelNode;
2526
+ }(Node);
2527
+
2528
+ _exports.PanelNode = PanelNode;
2529
+
2530
+ var Menu = /*#__PURE__*/function (_EventTarget2) {
2531
+ _inherits(Menu, _EventTarget2);
2532
+
2533
+ var _super17 = _createSuper(Menu);
2534
+
2535
+ function Menu(className) {
2536
+ var _this19;
2537
+
2538
+ var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2539
+
2540
+ _classCallCheck(this, Menu);
2541
+
2542
+ _this19 = _super17.call(this);
2543
+ var dom = document.createElement('f-menu');
2544
+ dom.className = className + ' hidden';
2545
+ _this19.dom = dom;
2546
+ _this19.visible = false;
2547
+ _this19.subMenus = new WeakMap();
2548
+ _this19.domButtons = new WeakMap();
2549
+ _this19.events = {
2550
+ 'context': []
2551
+ };
2552
+
2553
+ _this19.addEventListener('context', function () {
2554
+ dispatchEventList(_this19.events.context, _assertThisInitialized(_this19));
2555
+ });
2556
+
2557
+ _this19._lastButtonClick = null;
2558
+
2559
+ _this19._onButtonClick = function () {
2560
+ var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2561
+ var button = e ? e.target : null;
2562
+
2563
+ if (_this19._lastButtonClick) {
2564
+ _this19._lastButtonClick.dom.parentElement.classList.remove('active');
2565
+ }
2566
+
2567
+ _this19._lastButtonClick = button;
2568
+
2569
+ if (button) {
2570
+ if (_this19.subMenus.has(button)) {
2571
+ _this19.subMenus.get(button)._onButtonClick();
2572
+ }
2573
+
2574
+ button.dom.parentElement.classList.add('active');
2575
+ }
2576
+ };
2577
+
2578
+ _this19._onButtonMouseOver = function (e) {
2579
+ var button = e.target;
2580
+
2581
+ if (_this19.subMenus.has(button) && _this19._lastButtonClick !== button) {
2582
+ _this19._onButtonClick();
2583
+ }
2584
+ };
2585
+
2586
+ _this19.setTarget(target);
2587
+
2588
+ return _this19;
2589
+ }
2590
+
2591
+ _createClass(Menu, [{
2592
+ key: "onContext",
2593
+ value: function onContext(callback) {
2594
+ this.events.context.push(callback);
2595
+ return this;
2596
+ }
2597
+ }, {
2598
+ key: "show",
2599
+ value: function show() {
2600
+ var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2601
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2602
+
2603
+ this._onButtonClick();
2604
+
2605
+ if (x !== null && y !== null) {
2606
+ this.setPosition(x, y);
2607
+ }
2608
+
2609
+ this.dom.classList.remove('hidden');
2610
+ this.visible = true;
2611
+ this.dispatchEvent(new Event('show'));
2612
+ return this;
2613
+ }
2614
+ }, {
2615
+ key: "hide",
2616
+ value: function hide() {
2617
+ this.dom.classList.add('hidden');
2618
+ this.dispatchEvent(new Event('hide'));
2619
+ this.visible = false;
2620
+ }
2621
+ }, {
2622
+ key: "setTarget",
2623
+ value: function setTarget() {
2624
+ var _this20 = this;
2625
+
2626
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2627
+
2628
+ if (target !== null) {
2629
+ var onContextMenu = function onContextMenu(e) {
2630
+ e.preventDefault();
2631
+ if (e.pointerType !== 'mouse' || e.pageX === 0 && e.pageY === 0) return;
2632
+
2633
+ var rect = _this20.target.getBoundingClientRect();
2634
+
2635
+ _this20.dispatchEvent(new Event('context'));
2636
+
2637
+ _this20.show(e.pageX - rect.left, e.pageY - rect.top);
2638
+ };
2639
+
2640
+ var onDown = function onDown(e) {
2641
+ if (_this20.visible === true && e.target.closest('f-menu') === null) {
2642
+ _this20.hide();
2643
+ }
2644
+ };
2645
+
2646
+ this.target = target;
2647
+ target.addEventListener('mousedown', onDown, true);
2648
+ target.addEventListener('touchstart', onDown, true);
2649
+ target.addEventListener('contextmenu', onContextMenu, false);
2650
+ target.appendChild(this.dom);
2651
+ }
2652
+
2653
+ return this;
2654
+ }
2655
+ }, {
2656
+ key: "add",
2657
+ value: function add(button) {
2658
+ var submenu = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2659
+ var liDOM = document.createElement('f-item');
2660
+
2661
+ if (submenu !== null) {
2662
+ liDOM.classList.add('submenu');
2663
+ liDOM.appendChild(submenu.dom);
2664
+ this.subMenus.set(button, submenu);
2665
+ }
2666
+
2667
+ liDOM.appendChild(button.dom);
2668
+ button.addEventListener('click', this._onButtonClick);
2669
+ button.addEventListener('mouseover', this._onButtonMouseOver);
2670
+ this.dom.appendChild(liDOM);
2671
+ this.domButtons.set(liDOM, button);
2672
+ return this;
2673
+ }
2674
+ }, {
2675
+ key: "setPosition",
2676
+ value: function setPosition(x, y) {
2677
+ var dom = this.dom;
2678
+ dom.style.left = toPX(x);
2679
+ dom.style.top = toPX(y);
2680
+ return this;
2681
+ }
2682
+ }]);
2683
+
2684
+ return Menu;
2685
+ }( /*#__PURE__*/_wrapNativeSuper(EventTarget));
2686
+
2687
+ _exports.Menu = Menu;
2688
+ var lastContext = null;
2689
+
2690
+ var ContextMenu = /*#__PURE__*/function (_Menu) {
2691
+ _inherits(ContextMenu, _Menu);
2692
+
2693
+ var _super18 = _createSuper(ContextMenu);
2694
+
2695
+ function ContextMenu() {
2696
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2697
+
2698
+ _classCallCheck(this, ContextMenu);
2699
+
2700
+ return _super18.call(this, 'context', target);
2701
+ }
2702
+
2703
+ _createClass(ContextMenu, [{
2704
+ key: "show",
2705
+ value: function show(x, y) {
2706
+ if (lastContext !== null) {
2707
+ lastContext.hide();
2708
+ }
2709
+
2710
+ lastContext = this;
2711
+ return _get(_getPrototypeOf(ContextMenu.prototype), "show", this).call(this, x, y);
2712
+ }
2713
+ }, {
2714
+ key: "hide",
2715
+ value: function hide() {
2716
+ if (lastContext === this) {
2717
+ lastContext = null;
2718
+ }
2719
+
2720
+ return _get(_getPrototypeOf(ContextMenu.prototype), "hide", this).call(this);
2721
+ }
2722
+ }]);
2723
+
2724
+ return ContextMenu;
2725
+ }(Menu);
2726
+
2727
+ _exports.ContextMenu = ContextMenu;
2728
+
2729
+ var CircleMenu = /*#__PURE__*/function (_Menu2) {
2730
+ _inherits(CircleMenu, _Menu2);
2731
+
2732
+ var _super19 = _createSuper(CircleMenu);
2733
+
2734
+ function CircleMenu() {
2735
+ var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2736
+
2737
+ _classCallCheck(this, CircleMenu);
2738
+
2739
+ return _super19.call(this, 'circle', target);
2740
+ }
2741
+
2742
+ return _createClass(CircleMenu);
2743
+ }(Menu);
2744
+
2745
+ _exports.CircleMenu = CircleMenu;
2746
+
2747
+ var SelectInput = /*#__PURE__*/function (_Input7) {
2748
+ _inherits(SelectInput, _Input7);
2749
+
2750
+ var _super20 = _createSuper(SelectInput);
2751
+
2752
+ function SelectInput() {
2753
+ var _this21;
2754
+
2755
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2756
+
2757
+ _classCallCheck(this, SelectInput);
2758
+
2759
+ var dom = document.createElement('select');
2760
+ _this21 = _super20.call(this, dom);
2761
+
2762
+ dom.onchange = function () {
2763
+ _this21.dispatchEvent(new Event('change'));
2764
+ };
2765
+
2766
+ _this21.setOptions(options);
2767
+
2768
+ return _this21;
2769
+ }
2770
+
2771
+ _createClass(SelectInput, [{
2772
+ key: "setOptions",
2773
+ value: function setOptions(options) {
2774
+ var dom = this.dom;
2775
+ this.options = options;
2776
+ dom.innerHTML = '';
2777
+
2778
+ for (var index = 0; index < options.length; index++) {
2779
+ var opt = options[index];
2780
+
2781
+ if (typeof opt === 'string') {
2782
+ opt = {
2783
+ name: opt,
2784
+ value: index
2785
+ };
2786
+ }
2787
+
2788
+ var option = document.createElement('option');
2789
+ option.innerText = opt.name;
2790
+ option.value = opt.value;
2791
+ dom.appendChild(option);
2792
+ }
2793
+
2794
+ return this;
2795
+ }
2796
+ }, {
2797
+ key: "getOptions",
2798
+ value: function getOptions() {
2799
+ return this._options;
2800
+ }
2801
+ }, {
2802
+ key: "serialize",
2803
+ value: function serialize(data) {
2804
+ data.options = _toConsumableArray(this.options);
2805
+
2806
+ _get(_getPrototypeOf(SelectInput.prototype), "serialize", this).call(this, data);
2807
+ }
2808
+ }, {
2809
+ key: "deserialize",
2810
+ value: function deserialize(data) {
2811
+ var currentOptions = this.options;
2812
+
2813
+ if (currentOptions.length > 0) {
2814
+ this.setOptions(data.options);
2815
+ }
2816
+
2817
+ _get(_getPrototypeOf(SelectInput.prototype), "deserialize", this).call(this, data);
2818
+ }
2819
+ }]);
2820
+
2821
+ return SelectInput;
2822
+ }(Input);
2823
+
2824
+ _exports.SelectInput = SelectInput;
2825
+
2826
+ var ToggleInput = /*#__PURE__*/function (_Input8) {
2827
+ _inherits(ToggleInput, _Input8);
2828
+
2829
+ var _super21 = _createSuper(ToggleInput);
2830
+
2831
+ function ToggleInput() {
2832
+ var _this22;
2833
+
2834
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2835
+
2836
+ _classCallCheck(this, ToggleInput);
2837
+
2838
+ var dom = document.createElement('input');
2839
+ _this22 = _super21.call(this, dom);
2840
+ dom.type = 'checkbox';
2841
+ dom.className = 'toggle';
2842
+ dom.checked = value;
2843
+ return _this22;
2844
+ }
2845
+
2846
+ _createClass(ToggleInput, [{
2847
+ key: "setValue",
2848
+ value: function setValue(val) {
2849
+ this.dom.checked = val;
2850
+ this.dispatchEvent(new Event('change'));
2851
+ return this;
2852
+ }
2853
+ }, {
2854
+ key: "getValue",
2855
+ value: function getValue() {
2856
+ return this.dom.checked;
2857
+ }
2858
+ }]);
2859
+
2860
+ return ToggleInput;
2861
+ }(Input);
2862
+
2863
+ _exports.ToggleInput = ToggleInput;
2864
+ var Flow = /*#__PURE__*/Object.freeze({
2865
+ __proto__: null,
2866
+ Element: Element,
2867
+ Input: Input,
2868
+ Node: Node,
2869
+ Canvas: Canvas,
2870
+ Serializer: Serializer,
2871
+ ObjectNode: ObjectNode,
2872
+ PanelNode: PanelNode,
2873
+ Menu: Menu,
2874
+ ContextMenu: ContextMenu,
2875
+ CircleMenu: CircleMenu,
2876
+ DraggableElement: DraggableElement,
2877
+ LabelElement: LabelElement,
2878
+ TitleElement: TitleElement,
2879
+ ButtonInput: ButtonInput,
2880
+ ColorInput: ColorInput,
2881
+ NumberInput: NumberInput,
2882
+ SelectInput: SelectInput,
2883
+ SliderInput: SliderInput,
2884
+ StringInput: StringInput,
2885
+ TextInput: TextInput,
2886
+ ToggleInput: ToggleInput
2887
+ });
2888
+
2889
+ var Loader = /*#__PURE__*/function (_EventTarget3) {
2890
+ _inherits(Loader, _EventTarget3);
2891
+
2892
+ var _super22 = _createSuper(Loader);
2893
+
2894
+ function Loader() {
2895
+ var _this23;
2896
+
2897
+ var parseType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Loader.DEFAULT;
2898
+
2899
+ _classCallCheck(this, Loader);
2900
+
2901
+ _this23 = _super22.call(this);
2902
+ _this23.parseType = parseType;
2903
+ _this23.events = {
2904
+ 'load': []
2905
+ };
2906
+ return _this23;
2907
+ }
2908
+
2909
+ _createClass(Loader, [{
2910
+ key: "setParseType",
2911
+ value: function setParseType(type) {
2912
+ this.parseType = type;
2913
+ return this;
2914
+ }
2915
+ }, {
2916
+ key: "getParseType",
2917
+ value: function getParseType() {
2918
+ return this.parseType;
2919
+ }
2920
+ }, {
2921
+ key: "onLoad",
2922
+ value: function onLoad(callback) {
2923
+ this.events.load.push(callback);
2924
+ return this;
2925
+ }
2926
+ }, {
2927
+ key: "load",
2928
+ value: function () {
2929
+ var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url) {
2930
+ var _this24 = this;
2931
+
2932
+ var lib,
2933
+ _args = arguments;
2934
+ return regeneratorRuntime.wrap(function _callee$(_context) {
2935
+ while (1) {
2936
+ switch (_context.prev = _context.next) {
2937
+ case 0:
2938
+ lib = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
2939
+ _context.next = 3;
2940
+ return fetch(url).then(function (response) {
2941
+ return response.json();
2942
+ }).then(function (result) {
2943
+ _this24.data = _this24.parse(result, lib);
2944
+ dispatchEventList(_this24.events.load, _this24);
2945
+ return _this24.data;
2946
+ }).catch(function (err) {
2947
+ console.error('Loader:', err);
2948
+ });
2949
+
2950
+ case 3:
2951
+ return _context.abrupt("return", _context.sent);
2952
+
2953
+ case 4:
2954
+ case "end":
2955
+ return _context.stop();
2956
+ }
2957
+ }
2958
+ }, _callee);
2959
+ }));
2960
+
2961
+ function load(_x) {
2962
+ return _load.apply(this, arguments);
2963
+ }
2964
+
2965
+ return load;
2966
+ }()
2967
+ }, {
2968
+ key: "parse",
2969
+ value: function parse(json) {
2970
+ var lib = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2971
+ json = this._parseObjects(json, lib);
2972
+ var parseType = this.parseType;
2973
+
2974
+ if (parseType === Loader.DEFAULT) {
2975
+ var flowObj = new Flow[json.type]();
2976
+
2977
+ if (flowObj.getSerializable()) {
2978
+ flowObj.deserialize(json);
2979
+ }
2980
+
2981
+ return flowObj;
2982
+ } else if (parseType === Loader.OBJECTS) {
2983
+ return json;
2984
+ }
2985
+ }
2986
+ }, {
2987
+ key: "_parseObjects",
2988
+ value: function _parseObjects(json) {
2989
+ var lib = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2990
+ json = _objectSpread({}, json);
2991
+ var objects = {};
2992
+
2993
+ for (var id in json.objects) {
2994
+ var obj = json.objects[id];
2995
+ obj.objects = objects;
2996
+ var Class = lib && lib[obj.type] ? lib[obj.type] : Flow[obj.type];
2997
+ objects[id] = new Class();
2998
+ }
2999
+
3000
+ var ref = new WeakMap();
3001
+
3002
+ var deserializePass = function deserializePass() {
3003
+ var prop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
3004
+
3005
+ for (var _id5 in json.objects) {
3006
+ var newObject = objects[_id5];
3007
+
3008
+ if (ref.has(newObject) === false && (prop === null || newObject[prop] === true)) {
3009
+ ref.set(newObject, true);
3010
+
3011
+ if (newObject.getSerializable()) {
3012
+ newObject.deserialize(json.objects[_id5]);
3013
+ }
3014
+ }
3015
+ }
3016
+ };
3017
+
3018
+ deserializePass('isNode');
3019
+ deserializePass('isElement');
3020
+ deserializePass('isInput');
3021
+ deserializePass();
3022
+ json.objects = objects;
3023
+ return json;
3024
+ }
3025
+ }]);
3026
+
3027
+ return Loader;
3028
+ }( /*#__PURE__*/_wrapNativeSuper(EventTarget));
3029
+
3030
+ _exports.Loader = Loader;
3031
+ Loader.DEFAULT = 'default';
3032
+ Loader.OBJECTS = 'objects';
3033
+ });