three-stdlib 2.15.0 → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1222) hide show
  1. package/animation/AnimationClipCreator.js +32 -52
  2. package/animation/AnimationClipCreator.mjs +57 -0
  3. package/animation/CCDIKSolver.js +66 -161
  4. package/animation/CCDIKSolver.mjs +234 -0
  5. package/animation/MMDAnimationHelper.js +150 -341
  6. package/animation/MMDAnimationHelper.mjs +514 -0
  7. package/animation/MMDPhysics.js +154 -361
  8. package/animation/MMDPhysics.mjs +769 -0
  9. package/cameras/CinematicCamera.js +67 -77
  10. package/cameras/CinematicCamera.mjs +129 -0
  11. package/controls/ArcballControls.js +544 -1449
  12. package/controls/ArcballControls.mjs +1737 -0
  13. package/controls/DeviceOrientationControls.js +52 -97
  14. package/controls/DeviceOrientationControls.mjs +74 -0
  15. package/controls/DragControls.js +85 -187
  16. package/controls/DragControls.mjs +172 -0
  17. package/controls/FirstPersonControls.js +123 -193
  18. package/controls/FirstPersonControls.mjs +220 -0
  19. package/controls/FlyControls.js +82 -152
  20. package/controls/FlyControls.mjs +239 -0
  21. package/controls/OrbitControls.js +232 -481
  22. package/controls/OrbitControls.mjs +731 -0
  23. package/controls/PointerLockControls.js +63 -99
  24. package/controls/PointerLockControls.mjs +88 -0
  25. package/controls/TrackballControls.js +211 -383
  26. package/controls/TrackballControls.mjs +481 -0
  27. package/controls/TransformControls.js +575 -782
  28. package/controls/TransformControls.mjs +1068 -0
  29. package/controls/experimental/CameraControls.js +329 -609
  30. package/controls/experimental/CameraControls.mjs +673 -0
  31. package/csm/CSM.js +47 -108
  32. package/csm/CSM.mjs +244 -0
  33. package/csm/CSMFrustum.js +14 -29
  34. package/csm/CSMFrustum.mjs +75 -0
  35. package/csm/CSMHelper.js +20 -34
  36. package/csm/CSMHelper.mjs +114 -0
  37. package/csm/CSMShader.js +7 -11
  38. package/csm/CSMShader.mjs +251 -0
  39. package/curves/CurveExtras.js +73 -115
  40. package/curves/CurveExtras.mjs +224 -0
  41. package/curves/NURBSCurve.js +15 -43
  42. package/curves/NURBSCurve.mjs +35 -0
  43. package/curves/NURBSSurface.js +11 -27
  44. package/curves/NURBSSurface.mjs +28 -0
  45. package/curves/NURBSUtils.js +54 -203
  46. package/curves/NURBSUtils.mjs +226 -0
  47. package/deprecated/Geometry.js +191 -486
  48. package/deprecated/Geometry.mjs +966 -0
  49. package/effects/AnaglyphEffect.js +95 -60
  50. package/effects/AnaglyphEffect.mjs +120 -0
  51. package/effects/AsciiEffect.js +80 -110
  52. package/effects/AsciiEffect.mjs +173 -0
  53. package/effects/OutlineEffect.js +121 -204
  54. package/effects/OutlineEffect.mjs +295 -0
  55. package/effects/ParallaxBarrierEffect.js +39 -38
  56. package/effects/ParallaxBarrierEffect.mjs +64 -0
  57. package/effects/PeppersGhostEffect.js +19 -68
  58. package/effects/PeppersGhostEffect.mjs +85 -0
  59. package/effects/StereoEffect.js +12 -16
  60. package/effects/StereoEffect.mjs +32 -0
  61. package/environments/RoomEnvironment.js +52 -47
  62. package/environments/RoomEnvironment.mjs +78 -0
  63. package/exporters/ColladaExporter.js +115 -241
  64. package/exporters/ColladaExporter.mjs +299 -0
  65. package/exporters/DRACOExporter.js +67 -121
  66. package/exporters/DRACOExporter.mjs +132 -0
  67. package/exporters/GLTFExporter.js +463 -1014
  68. package/exporters/GLTFExporter.mjs +1381 -0
  69. package/exporters/MMDExporter.js +44 -102
  70. package/exporters/MMDExporter.mjs +102 -0
  71. package/exporters/OBJExporter.js +78 -140
  72. package/exporters/OBJExporter.mjs +166 -0
  73. package/exporters/PLYExporter.js +93 -154
  74. package/exporters/PLYExporter.mjs +278 -0
  75. package/exporters/STLExporter.js +30 -81
  76. package/exporters/STLExporter.mjs +129 -0
  77. package/exporters/USDZExporter.js +84 -144
  78. package/exporters/USDZExporter.mjs +328 -0
  79. package/geometries/BoxLineGeometry.js +7 -14
  80. package/geometries/BoxLineGeometry.mjs +45 -0
  81. package/geometries/ConvexGeometry.js +15 -24
  82. package/geometries/ConvexGeometry.mjs +29 -0
  83. package/geometries/DecalGeometry.js +108 -162
  84. package/geometries/DecalGeometry.mjs +184 -0
  85. package/geometries/LightningStrike.js +101 -294
  86. package/geometries/LightningStrike.mjs +547 -0
  87. package/geometries/ParametricGeometries.js +26 -76
  88. package/geometries/ParametricGeometries.mjs +129 -0
  89. package/geometries/ParametricGeometry.js +24 -48
  90. package/geometries/ParametricGeometry.mjs +63 -0
  91. package/geometries/RoundedBoxGeometry.js +33 -64
  92. package/geometries/RoundedBoxGeometry.mjs +91 -0
  93. package/geometries/TeapotGeometry.js +1434 -174
  94. package/geometries/TeapotGeometry.mjs +1557 -0
  95. package/geometries/TextGeometry.js +9 -17
  96. package/geometries/TextGeometry.mjs +23 -0
  97. package/helpers/LightProbeHelper.js +53 -21
  98. package/helpers/LightProbeHelper.mjs +72 -0
  99. package/helpers/PositionalAudioHelper.js +23 -30
  100. package/helpers/PositionalAudioHelper.mjs +68 -0
  101. package/helpers/RectAreaLightHelper.js +17 -33
  102. package/helpers/RectAreaLightHelper.mjs +44 -0
  103. package/helpers/VertexNormalsHelper.js +20 -41
  104. package/helpers/VertexNormalsHelper.mjs +54 -0
  105. package/helpers/VertexTangentsHelper.js +18 -36
  106. package/helpers/VertexTangentsHelper.mjs +45 -0
  107. package/index.d.ts +54 -0
  108. package/index.js +968 -333
  109. package/index.mjs +968 -0
  110. package/interactive/SelectionBox.js +31 -46
  111. package/interactive/SelectionBox.mjs +137 -0
  112. package/interactive/SelectionHelper.js +16 -21
  113. package/interactive/SelectionHelper.mjs +54 -0
  114. package/libs/MeshoptDecoder.js +147 -58
  115. package/libs/MeshoptDecoder.mjs +210 -0
  116. package/libs/MotionControllers.js +66 -208
  117. package/libs/MotionControllers.mjs +261 -0
  118. package/lights/LightProbeGenerator.js +40 -96
  119. package/lights/LightProbeGenerator.mjs +145 -0
  120. package/lights/RectAreaLightUniformsLib.js +32842 -9
  121. package/lights/RectAreaLightUniformsLib.mjs +32842 -0
  122. package/lines/Line2.js +9 -12
  123. package/lines/Line2.mjs +13 -0
  124. package/lines/LineGeometry.js +7 -19
  125. package/lines/LineGeometry.mjs +44 -0
  126. package/lines/LineMaterial.js +51 -89
  127. package/lines/LineMaterial.mjs +539 -0
  128. package/lines/LineSegments2.js +56 -165
  129. package/lines/LineSegments2.mjs +202 -0
  130. package/lines/LineSegmentsGeometry.js +29 -71
  131. package/lines/LineSegmentsGeometry.mjs +124 -0
  132. package/lines/Wireframe.js +15 -29
  133. package/lines/Wireframe.mjs +31 -0
  134. package/lines/WireframeGeometry2.js +8 -9
  135. package/lines/WireframeGeometry2.mjs +13 -0
  136. package/loaders/3DMLoader.js +234 -469
  137. package/loaders/3DMLoader.mjs +802 -0
  138. package/loaders/3MFLoader.js +340 -555
  139. package/loaders/3MFLoader.mjs +837 -0
  140. package/loaders/AMFLoader.js +114 -219
  141. package/loaders/AMFLoader.mjs +284 -0
  142. package/loaders/AssimpLoader.js +328 -725
  143. package/loaders/AssimpLoader.mjs +1396 -0
  144. package/loaders/BVHLoader.js +94 -200
  145. package/loaders/BVHLoader.mjs +207 -0
  146. package/loaders/BasisTextureLoader.js +229 -357
  147. package/loaders/BasisTextureLoader.mjs +474 -0
  148. package/loaders/ColladaLoader.js +932 -1522
  149. package/loaders/ColladaLoader.mjs +2403 -0
  150. package/loaders/DDSLoader.js +42 -108
  151. package/loaders/DDSLoader.mjs +148 -0
  152. package/loaders/DRACOLoader.js +103 -210
  153. package/loaders/DRACOLoader.mjs +340 -0
  154. package/loaders/EXRLoader.js +461 -809
  155. package/loaders/EXRLoader.mjs +1351 -0
  156. package/loaders/FBXLoader.js +842 -1397
  157. package/loaders/FBXLoader.mjs +2362 -0
  158. package/loaders/FontLoader.js +33 -66
  159. package/loaders/FontLoader.mjs +111 -0
  160. package/loaders/GCodeLoader.js +63 -111
  161. package/loaders/GCodeLoader.mjs +141 -0
  162. package/loaders/GLTFLoader.js +771 -1484
  163. package/loaders/GLTFLoader.mjs +2316 -0
  164. package/loaders/HDRCubeTextureLoader.js +45 -50
  165. package/loaders/HDRCubeTextureLoader.mjs +77 -0
  166. package/loaders/KMZLoader.js +42 -55
  167. package/loaders/KMZLoader.mjs +75 -0
  168. package/loaders/KTX2Loader.js +229 -362
  169. package/loaders/KTX2Loader.mjs +427 -0
  170. package/loaders/KTXLoader.js +37 -99
  171. package/loaders/KTXLoader.mjs +87 -0
  172. package/loaders/LDrawLoader.js +313 -746
  173. package/loaders/LDrawLoader.mjs +1409 -0
  174. package/loaders/LUT3dlLoader.js +50 -62
  175. package/loaders/LUT3dlLoader.mjs +100 -0
  176. package/loaders/LUTCubeLoader.js +45 -56
  177. package/loaders/LUTCubeLoader.mjs +104 -0
  178. package/loaders/LWOLoader.js +227 -339
  179. package/loaders/LWOLoader.mjs +625 -0
  180. package/loaders/LottieLoader.js +36 -38
  181. package/loaders/LottieLoader.mjs +47 -0
  182. package/loaders/MD2Loader.js +248 -91
  183. package/loaders/MD2Loader.mjs +359 -0
  184. package/loaders/MDDLoader.js +25 -45
  185. package/loaders/MDDLoader.mjs +58 -0
  186. package/loaders/MMDLoader.js +359 -795
  187. package/loaders/MMDLoader.mjs +998 -0
  188. package/loaders/MTLLoader.js +91 -201
  189. package/loaders/MTLLoader.mjs +280 -0
  190. package/loaders/NRRDLoader.js +182 -263
  191. package/loaders/NRRDLoader.mjs +401 -0
  192. package/loaders/NodeMaterialLoader.js +121 -14
  193. package/loaders/NodeMaterialLoader.mjs +146 -0
  194. package/loaders/OBJLoader.js +161 -283
  195. package/loaders/OBJLoader.mjs +487 -0
  196. package/loaders/PCDLoader.js +145 -164
  197. package/loaders/PCDLoader.mjs +248 -0
  198. package/loaders/PDBLoader.js +45 -63
  199. package/loaders/PDBLoader.mjs +246 -0
  200. package/loaders/PLYLoader.js +106 -203
  201. package/loaders/PLYLoader.mjs +317 -0
  202. package/loaders/PRWMLoader.js +73 -110
  203. package/loaders/PRWMLoader.mjs +160 -0
  204. package/loaders/PVRLoader.js +32 -93
  205. package/loaders/PVRLoader.mjs +131 -0
  206. package/loaders/RGBELoader.js +96 -233
  207. package/loaders/RGBELoader.mjs +244 -0
  208. package/loaders/RGBMLoader.js +344 -514
  209. package/loaders/RGBMLoader.mjs +998 -0
  210. package/loaders/STLLoader.js +59 -165
  211. package/loaders/STLLoader.mjs +190 -0
  212. package/loaders/SVGLoader.js +481 -851
  213. package/loaders/SVGLoader.mjs +1709 -0
  214. package/loaders/TDSLoader.js +137 -527
  215. package/loaders/TDSLoader.mjs +480 -0
  216. package/loaders/TGALoader.js +94 -205
  217. package/loaders/TGALoader.mjs +285 -0
  218. package/loaders/TTFLoader.js +58 -79
  219. package/loaders/TTFLoader.mjs +131 -0
  220. package/loaders/TiltLoader.js +129 -167
  221. package/loaders/TiltLoader.mjs +373 -0
  222. package/loaders/VOXLoader.js +320 -84
  223. package/loaders/VOXLoader.mjs +431 -0
  224. package/loaders/VRMLLoader.js +786 -1268
  225. package/loaders/VRMLLoader.mjs +2093 -0
  226. package/loaders/VRMLoader.js +23 -31
  227. package/loaders/VRMLoader.mjs +38 -0
  228. package/loaders/VTKLoader.js +219 -407
  229. package/loaders/VTKLoader.mjs +646 -0
  230. package/loaders/XLoader.js +1083 -1259
  231. package/loaders/XLoader.mjs +1258 -0
  232. package/loaders/XYZLoader.js +28 -34
  233. package/loaders/XYZLoader.mjs +60 -0
  234. package/loaders/lwo/IFFParser.js +238 -492
  235. package/loaders/lwo/IFFParser.mjs +697 -0
  236. package/loaders/lwo/LWO2Parser.js +176 -279
  237. package/loaders/lwo/LWO2Parser.mjs +327 -0
  238. package/loaders/lwo/LWO3Parser.js +160 -247
  239. package/loaders/lwo/LWO3Parser.mjs +298 -0
  240. package/math/Capsule.js +56 -43
  241. package/math/Capsule.mjs +100 -0
  242. package/math/ColorConverter.js +18 -32
  243. package/math/ColorConverter.mjs +51 -0
  244. package/math/ConvexHull.js +515 -739
  245. package/math/ConvexHull.mjs +574 -0
  246. package/math/ImprovedNoise.js +282 -32
  247. package/math/ImprovedNoise.mjs +302 -0
  248. package/math/Lut.js +51 -35
  249. package/math/Lut.mjs +135 -0
  250. package/math/MeshSurfaceSampler.js +25 -68
  251. package/math/MeshSurfaceSampler.mjs +107 -0
  252. package/math/OBB.js +91 -152
  253. package/math/OBB.mjs +235 -0
  254. package/math/Octree.js +76 -139
  255. package/math/Octree.mjs +278 -0
  256. package/math/SimplexNoise.js +217 -238
  257. package/math/SimplexNoise.mjs +425 -0
  258. package/misc/ConvexObjectBreaker.js +79 -185
  259. package/misc/ConvexObjectBreaker.mjs +292 -0
  260. package/misc/GPUComputationRenderer.js +69 -194
  261. package/misc/GPUComputationRenderer.mjs +171 -0
  262. package/misc/Gyroscope.js +16 -22
  263. package/misc/Gyroscope.mjs +35 -0
  264. package/misc/MD2Character.js +52 -74
  265. package/misc/MD2Character.mjs +162 -0
  266. package/misc/MD2CharacterComplex.js +112 -163
  267. package/misc/MD2CharacterComplex.mjs +328 -0
  268. package/misc/MorphAnimMesh.js +20 -28
  269. package/misc/MorphAnimMesh.mjs +40 -0
  270. package/misc/MorphBlendMesh.js +45 -69
  271. package/misc/MorphBlendMesh.mjs +179 -0
  272. package/misc/ProgressiveLightmap.js +70 -187
  273. package/misc/ProgressiveLightmap.mjs +166 -0
  274. package/misc/RollerCoaster.js +106 -135
  275. package/misc/RollerCoaster.mjs +346 -0
  276. package/misc/TubePainter.js +74 -92
  277. package/misc/TubePainter.mjs +123 -0
  278. package/misc/Volume.js +108 -270
  279. package/misc/Volume.mjs +244 -0
  280. package/misc/VolumeSlice.js +34 -122
  281. package/misc/VolumeSlice.mjs +106 -0
  282. package/misc/WebGL.js +37 -34
  283. package/misc/WebGL.mjs +74 -0
  284. package/modifiers/CurveModifier.js +46 -151
  285. package/modifiers/CurveModifier.mjs +182 -0
  286. package/modifiers/EdgeSplitModifier.js +46 -90
  287. package/modifiers/EdgeSplitModifier.mjs +162 -0
  288. package/modifiers/SimplifyModifier.js +77 -202
  289. package/modifiers/SimplifyModifier.mjs +282 -0
  290. package/modifiers/TessellateModifier.js +65 -90
  291. package/modifiers/TessellateModifier.mjs +206 -0
  292. package/nodes/Nodes.js +274 -140
  293. package/nodes/Nodes.mjs +400 -0
  294. package/nodes/ShaderNode.js +296 -196
  295. package/nodes/ShaderNode.mjs +408 -0
  296. package/nodes/accessors/BufferNode.js +4 -8
  297. package/nodes/accessors/BufferNode.mjs +15 -0
  298. package/nodes/accessors/CameraNode.js +20 -25
  299. package/nodes/accessors/CameraNode.mjs +44 -0
  300. package/nodes/accessors/CubeTextureNode.js +14 -26
  301. package/nodes/accessors/CubeTextureNode.mjs +42 -0
  302. package/nodes/accessors/MaterialNode.js +43 -53
  303. package/nodes/accessors/MaterialNode.mjs +71 -0
  304. package/nodes/accessors/MaterialReferenceNode.js +3 -6
  305. package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
  306. package/nodes/accessors/ModelNode.js +3 -5
  307. package/nodes/accessors/ModelNode.mjs +9 -0
  308. package/nodes/accessors/ModelViewProjectionNode.js +14 -13
  309. package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
  310. package/nodes/accessors/NormalNode.js +40 -39
  311. package/nodes/accessors/NormalNode.mjs +62 -0
  312. package/nodes/accessors/Object3DNode.js +40 -50
  313. package/nodes/accessors/Object3DNode.mjs +76 -0
  314. package/nodes/accessors/PointUVNode.js +5 -9
  315. package/nodes/accessors/PointUVNode.mjs +13 -0
  316. package/nodes/accessors/PositionNode.js +42 -41
  317. package/nodes/accessors/PositionNode.mjs +65 -0
  318. package/nodes/accessors/ReferenceNode.js +10 -17
  319. package/nodes/accessors/ReferenceNode.mjs +37 -0
  320. package/nodes/accessors/ReflectNode.js +23 -26
  321. package/nodes/accessors/ReflectNode.mjs +43 -0
  322. package/nodes/accessors/SkinningNode.js +46 -48
  323. package/nodes/accessors/SkinningNode.mjs +58 -0
  324. package/nodes/accessors/TextureNode.js +14 -29
  325. package/nodes/accessors/TextureNode.mjs +54 -0
  326. package/nodes/accessors/UVNode.js +5 -11
  327. package/nodes/accessors/UVNode.mjs +23 -0
  328. package/nodes/core/ArrayUniformNode.js +3 -7
  329. package/nodes/core/ArrayUniformNode.mjs +14 -0
  330. package/nodes/core/AttributeNode.js +5 -12
  331. package/nodes/core/AttributeNode.mjs +30 -0
  332. package/nodes/core/BypassNode.js +5 -12
  333. package/nodes/core/BypassNode.mjs +22 -0
  334. package/nodes/core/CodeNode.js +4 -12
  335. package/nodes/core/CodeNode.mjs +28 -0
  336. package/nodes/core/ConstNode.js +3 -7
  337. package/nodes/core/ConstNode.mjs +14 -0
  338. package/nodes/core/ContextNode.js +3 -8
  339. package/nodes/core/ContextNode.mjs +22 -0
  340. package/nodes/core/ExpressionNode.js +5 -9
  341. package/nodes/core/ExpressionNode.mjs +19 -0
  342. package/nodes/core/FunctionCallNode.js +6 -15
  343. package/nodes/core/FunctionCallNode.mjs +37 -0
  344. package/nodes/core/FunctionNode.js +10 -25
  345. package/nodes/core/FunctionNode.mjs +56 -0
  346. package/nodes/core/InputNode.js +12 -23
  347. package/nodes/core/InputNode.mjs +38 -0
  348. package/nodes/core/Node.js +35 -75
  349. package/nodes/core/Node.mjs +139 -0
  350. package/nodes/core/NodeAttribute.js +2 -4
  351. package/nodes/core/NodeAttribute.mjs +10 -0
  352. package/nodes/core/NodeBuilder.js +110 -224
  353. package/nodes/core/NodeBuilder.mjs +395 -0
  354. package/nodes/core/NodeCode.js +4 -7
  355. package/nodes/core/NodeCode.mjs +11 -0
  356. package/nodes/core/NodeFrame.js +9 -12
  357. package/nodes/core/NodeFrame.mjs +35 -0
  358. package/nodes/core/NodeFunctionInput.js +3 -5
  359. package/nodes/core/NodeFunctionInput.mjs +13 -0
  360. package/nodes/core/NodeKeywords.js +5 -16
  361. package/nodes/core/NodeKeywords.mjs +44 -0
  362. package/nodes/core/NodeUniform.js +3 -7
  363. package/nodes/core/NodeUniform.mjs +18 -0
  364. package/nodes/core/NodeUtils.js +39 -43
  365. package/nodes/core/NodeUtils.mjs +57 -0
  366. package/nodes/core/NodeVar.js +2 -4
  367. package/nodes/core/NodeVar.mjs +10 -0
  368. package/nodes/core/NodeVary.js +2 -4
  369. package/nodes/core/NodeVary.mjs +10 -0
  370. package/nodes/core/PropertyNode.js +4 -10
  371. package/nodes/core/PropertyNode.mjs +21 -0
  372. package/nodes/core/TempNode.js +5 -11
  373. package/nodes/core/TempNode.mjs +25 -0
  374. package/nodes/core/UniformNode.js +4 -10
  375. package/nodes/core/UniformNode.mjs +23 -0
  376. package/nodes/core/VarNode.js +3 -11
  377. package/nodes/core/VarNode.mjs +31 -0
  378. package/nodes/core/VaryNode.js +6 -15
  379. package/nodes/core/VaryNode.mjs +30 -0
  380. package/nodes/core/constants.js +20 -7
  381. package/nodes/core/constants.mjs +24 -0
  382. package/nodes/display/ColorSpaceNode.js +34 -38
  383. package/nodes/display/ColorSpaceNode.mjs +63 -0
  384. package/nodes/display/NormalMapNode.js +35 -53
  385. package/nodes/display/NormalMapNode.mjs +54 -0
  386. package/nodes/fog/FogNode.js +5 -9
  387. package/nodes/fog/FogNode.mjs +15 -0
  388. package/nodes/fog/FogRangeNode.js +5 -9
  389. package/nodes/fog/FogRangeNode.mjs +17 -0
  390. package/nodes/functions/BSDFs.js +61 -118
  391. package/nodes/functions/BSDFs.mjs +64 -0
  392. package/nodes/lights/LightContextNode.js +14 -23
  393. package/nodes/lights/LightContextNode.mjs +35 -0
  394. package/nodes/lights/LightNode.js +27 -31
  395. package/nodes/lights/LightNode.mjs +58 -0
  396. package/nodes/lights/LightsNode.js +9 -28
  397. package/nodes/lights/LightsNode.mjs +59 -0
  398. package/nodes/loaders/NodeLoader.js +27 -42
  399. package/nodes/loaders/NodeLoader.mjs +66 -0
  400. package/nodes/loaders/NodeMaterialLoader.js +4 -10
  401. package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
  402. package/nodes/loaders/NodeObjectLoader.js +9 -19
  403. package/nodes/loaders/NodeObjectLoader.mjs +40 -0
  404. package/nodes/materials/LineBasicNodeMaterial.js +5 -10
  405. package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
  406. package/nodes/materials/Materials.js +14 -17
  407. package/nodes/materials/Materials.mjs +28 -0
  408. package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
  409. package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
  410. package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
  411. package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
  412. package/nodes/materials/NodeMaterial.js +20 -36
  413. package/nodes/materials/NodeMaterial.mjs +64 -0
  414. package/nodes/materials/PointsNodeMaterial.js +5 -10
  415. package/nodes/materials/PointsNodeMaterial.mjs +30 -0
  416. package/nodes/math/CondNode.js +11 -23
  417. package/nodes/math/CondNode.mjs +38 -0
  418. package/nodes/math/MathNode.js +98 -142
  419. package/nodes/math/MathNode.mjs +163 -0
  420. package/nodes/math/OperatorNode.js +24 -46
  421. package/nodes/math/OperatorNode.mjs +103 -0
  422. package/nodes/procedural/CheckerNode.js +13 -19
  423. package/nodes/procedural/CheckerNode.mjs +21 -0
  424. package/nodes/utils/ArrayElementNode.js +4 -8
  425. package/nodes/utils/ArrayElementNode.mjs +19 -0
  426. package/nodes/utils/ConvertNode.js +3 -8
  427. package/nodes/utils/ConvertNode.mjs +25 -0
  428. package/nodes/utils/JoinNode.js +7 -11
  429. package/nodes/utils/JoinNode.mjs +26 -0
  430. package/nodes/utils/MatcapUVNode.js +8 -11
  431. package/nodes/utils/MatcapUVNode.mjs +16 -0
  432. package/nodes/utils/OscNode.js +27 -33
  433. package/nodes/utils/OscNode.mjs +50 -0
  434. package/nodes/utils/SplitNode.js +6 -20
  435. package/nodes/utils/SplitNode.mjs +45 -0
  436. package/nodes/utils/SpriteSheetUVNode.js +23 -23
  437. package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
  438. package/nodes/utils/TimerNode.js +20 -24
  439. package/nodes/utils/TimerNode.mjs +44 -0
  440. package/objects/GroundProjectedEnv.js +22 -37
  441. package/objects/GroundProjectedEnv.mjs +130 -0
  442. package/objects/Lensflare.js +86 -156
  443. package/objects/Lensflare.mjs +262 -0
  444. package/objects/LightningStorm.js +38 -102
  445. package/objects/LightningStorm.mjs +110 -0
  446. package/objects/MarchingCubes.js +150 -303
  447. package/objects/MarchingCubes.mjs +457 -0
  448. package/objects/Reflector.js +50 -72
  449. package/objects/Reflector.mjs +166 -0
  450. package/objects/ReflectorForSSRPass.js +80 -131
  451. package/objects/ReflectorForSSRPass.mjs +247 -0
  452. package/objects/ReflectorRTT.js +6 -7
  453. package/objects/ReflectorRTT.mjs +10 -0
  454. package/objects/Refractor.js +64 -106
  455. package/objects/Refractor.mjs +178 -0
  456. package/objects/ShadowMesh.js +8 -17
  457. package/objects/ShadowMesh.mjs +41 -0
  458. package/objects/Sky.js +119 -80
  459. package/objects/Sky.mjs +124 -0
  460. package/objects/Water.js +83 -127
  461. package/objects/Water.mjs +235 -0
  462. package/objects/Water2.js +72 -108
  463. package/objects/Water2.mjs +252 -0
  464. package/offscreen/jank.js +10 -14
  465. package/offscreen/jank.mjs +27 -0
  466. package/offscreen/offscreen.js +4 -5
  467. package/offscreen/offscreen.mjs +5 -0
  468. package/offscreen/scene.js +45 -48
  469. package/offscreen/scene.mjs +52 -0
  470. package/package.json +3 -3
  471. package/physics/AmmoPhysics.js +30 -71
  472. package/physics/AmmoPhysics.mjs +165 -0
  473. package/postprocessing/AdaptiveToneMappingPass.js +97 -123
  474. package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
  475. package/postprocessing/AfterimagePass.js +28 -49
  476. package/postprocessing/AfterimagePass.mjs +55 -0
  477. package/postprocessing/BloomPass.js +43 -69
  478. package/postprocessing/BloomPass.mjs +90 -0
  479. package/postprocessing/BokehPass.js +39 -69
  480. package/postprocessing/BokehPass.mjs +76 -0
  481. package/postprocessing/ClearPass.js +10 -25
  482. package/postprocessing/ClearPass.mjs +27 -0
  483. package/postprocessing/CubeTexturePass.js +28 -27
  484. package/postprocessing/CubeTexturePass.mjs +49 -0
  485. package/postprocessing/DotScreenPass.js +24 -32
  486. package/postprocessing/DotScreenPass.mjs +40 -0
  487. package/postprocessing/EffectComposer.js +39 -86
  488. package/postprocessing/EffectComposer.mjs +139 -0
  489. package/postprocessing/FilmPass.js +25 -30
  490. package/postprocessing/FilmPass.mjs +42 -0
  491. package/postprocessing/GlitchPass.js +38 -61
  492. package/postprocessing/GlitchPass.mjs +75 -0
  493. package/postprocessing/HalftonePass.js +19 -39
  494. package/postprocessing/HalftonePass.mjs +44 -0
  495. package/postprocessing/LUTPass.js +13 -38
  496. package/postprocessing/LUTPass.mjs +136 -0
  497. package/postprocessing/MaskPass.js +19 -38
  498. package/postprocessing/MaskPass.mjs +60 -0
  499. package/postprocessing/OutlinePass.js +135 -277
  500. package/postprocessing/OutlinePass.mjs +438 -0
  501. package/postprocessing/Pass.js +20 -44
  502. package/postprocessing/Pass.mjs +37 -0
  503. package/postprocessing/RenderPass.js +13 -36
  504. package/postprocessing/RenderPass.mjs +48 -0
  505. package/postprocessing/RenderPixelatedPass.js +44 -58
  506. package/postprocessing/RenderPixelatedPass.mjs +199 -0
  507. package/postprocessing/SAOPass.js +154 -189
  508. package/postprocessing/SAOPass.mjs +282 -0
  509. package/postprocessing/SMAAPass.js +64 -84
  510. package/postprocessing/SMAAPass.mjs +112 -0
  511. package/postprocessing/SSAARenderPass.js +121 -69
  512. package/postprocessing/SSAARenderPass.mjs +170 -0
  513. package/postprocessing/SSAOPass.js +123 -172
  514. package/postprocessing/SSAOPass.mjs +265 -0
  515. package/postprocessing/SSRPass.js +211 -280
  516. package/postprocessing/SSRPass.mjs +432 -0
  517. package/postprocessing/SavePass.js +20 -25
  518. package/postprocessing/SavePass.mjs +37 -0
  519. package/postprocessing/ShaderPass.js +14 -30
  520. package/postprocessing/ShaderPass.mjs +39 -0
  521. package/postprocessing/TAARenderPass.js +42 -61
  522. package/postprocessing/TAARenderPass.mjs +88 -0
  523. package/postprocessing/TexturePass.js +21 -22
  524. package/postprocessing/TexturePass.mjs +39 -0
  525. package/postprocessing/UnrealBloomPass.js +105 -213
  526. package/postprocessing/UnrealBloomPass.mjs +220 -0
  527. package/renderers/CSS2DRenderer.js +44 -56
  528. package/renderers/CSS2DRenderer.mjs +112 -0
  529. package/renderers/CSS3DRenderer.js +53 -86
  530. package/renderers/CSS3DRenderer.mjs +133 -0
  531. package/renderers/Projector.js +107 -274
  532. package/renderers/Projector.mjs +511 -0
  533. package/renderers/SVGRenderer.js +72 -182
  534. package/renderers/SVGRenderer.mjs +306 -0
  535. package/renderers/nodes/accessors/CameraNode.js +29 -40
  536. package/renderers/nodes/accessors/CameraNode.mjs +63 -0
  537. package/renderers/nodes/accessors/ModelNode.js +28 -37
  538. package/renderers/nodes/accessors/ModelNode.mjs +61 -0
  539. package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
  540. package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
  541. package/renderers/nodes/accessors/NormalNode.js +35 -45
  542. package/renderers/nodes/accessors/NormalNode.mjs +61 -0
  543. package/renderers/nodes/accessors/PositionNode.js +18 -19
  544. package/renderers/nodes/accessors/PositionNode.mjs +30 -0
  545. package/renderers/nodes/accessors/UVNode.js +5 -10
  546. package/renderers/nodes/accessors/UVNode.mjs +13 -0
  547. package/renderers/nodes/core/AttributeNode.js +5 -14
  548. package/renderers/nodes/core/AttributeNode.mjs +35 -0
  549. package/renderers/nodes/core/InputNode.js +4 -14
  550. package/renderers/nodes/core/InputNode.mjs +31 -0
  551. package/renderers/nodes/core/Node.js +7 -17
  552. package/renderers/nodes/core/Node.mjs +34 -0
  553. package/renderers/nodes/core/NodeAttribute.js +3 -6
  554. package/renderers/nodes/core/NodeAttribute.mjs +10 -0
  555. package/renderers/nodes/core/NodeBuilder.js +87 -154
  556. package/renderers/nodes/core/NodeBuilder.mjs +243 -0
  557. package/renderers/nodes/core/NodeFrame.js +9 -12
  558. package/renderers/nodes/core/NodeFrame.mjs +35 -0
  559. package/renderers/nodes/core/NodeSlot.js +2 -3
  560. package/renderers/nodes/core/NodeSlot.mjs +10 -0
  561. package/renderers/nodes/core/NodeUniform.js +4 -9
  562. package/renderers/nodes/core/NodeUniform.mjs +18 -0
  563. package/renderers/nodes/core/NodeVary.js +4 -7
  564. package/renderers/nodes/core/NodeVary.mjs +11 -0
  565. package/renderers/nodes/core/VaryNode.js +6 -12
  566. package/renderers/nodes/core/VaryNode.mjs +22 -0
  567. package/renderers/nodes/core/constants.js +16 -13
  568. package/renderers/nodes/core/constants.mjs +22 -0
  569. package/renderers/nodes/inputs/ColorNode.js +5 -11
  570. package/renderers/nodes/inputs/ColorNode.mjs +11 -0
  571. package/renderers/nodes/inputs/FloatNode.js +5 -11
  572. package/renderers/nodes/inputs/FloatNode.mjs +11 -0
  573. package/renderers/nodes/inputs/Matrix3Node.js +7 -13
  574. package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
  575. package/renderers/nodes/inputs/Matrix4Node.js +7 -13
  576. package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
  577. package/renderers/nodes/inputs/TextureNode.js +7 -15
  578. package/renderers/nodes/inputs/TextureNode.mjs +20 -0
  579. package/renderers/nodes/inputs/Vector2Node.js +5 -11
  580. package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
  581. package/renderers/nodes/inputs/Vector3Node.js +7 -13
  582. package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
  583. package/renderers/nodes/inputs/Vector4Node.js +7 -13
  584. package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
  585. package/renderers/nodes/math/MathNode.js +20 -30
  586. package/renderers/nodes/math/MathNode.mjs +55 -0
  587. package/renderers/nodes/math/OperatorNode.js +4 -20
  588. package/renderers/nodes/math/OperatorNode.mjs +42 -0
  589. package/renderers/nodes/utils/SwitchNode.js +4 -9
  590. package/renderers/nodes/utils/SwitchNode.mjs +20 -0
  591. package/renderers/nodes/utils/TimerNode.js +5 -10
  592. package/renderers/nodes/utils/TimerNode.mjs +14 -0
  593. package/renderers/webgpu/WebGPU.js +14 -16
  594. package/renderers/webgpu/WebGPU.mjs +24 -0
  595. package/renderers/webgpu/WebGPUAttributes.js +16 -23
  596. package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
  597. package/renderers/webgpu/WebGPUBackground.js +13 -30
  598. package/renderers/webgpu/WebGPUBackground.mjs +61 -0
  599. package/renderers/webgpu/WebGPUBinding.js +4 -7
  600. package/renderers/webgpu/WebGPUBinding.mjs +14 -0
  601. package/renderers/webgpu/WebGPUBindings.js +21 -57
  602. package/renderers/webgpu/WebGPUBindings.mjs +155 -0
  603. package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
  604. package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
  605. package/renderers/webgpu/WebGPUGeometries.js +5 -15
  606. package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
  607. package/renderers/webgpu/WebGPUInfo.js +3 -8
  608. package/renderers/webgpu/WebGPUInfo.mjs +46 -0
  609. package/renderers/webgpu/WebGPUObjects.js +5 -10
  610. package/renderers/webgpu/WebGPUObjects.mjs +25 -0
  611. package/renderers/webgpu/WebGPUProperties.js +5 -11
  612. package/renderers/webgpu/WebGPUProperties.mjs +22 -0
  613. package/renderers/webgpu/WebGPURenderLists.js +20 -36
  614. package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
  615. package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
  616. package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
  617. package/renderers/webgpu/WebGPURenderer.js +124 -262
  618. package/renderers/webgpu/WebGPURenderer.mjs +574 -0
  619. package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
  620. package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
  621. package/renderers/webgpu/WebGPUSampler.js +7 -12
  622. package/renderers/webgpu/WebGPUSampler.mjs +15 -0
  623. package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
  624. package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
  625. package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
  626. package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
  627. package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
  628. package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
  629. package/renderers/webgpu/WebGPUTextures.js +186 -333
  630. package/renderers/webgpu/WebGPUTextures.mjs +484 -0
  631. package/renderers/webgpu/WebGPUUniform.js +25 -51
  632. package/renderers/webgpu/WebGPUUniform.mjs +81 -0
  633. package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
  634. package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
  635. package/renderers/webgpu/constants.js +190 -181
  636. package/renderers/webgpu/constants.mjs +230 -0
  637. package/renderers/webgpu/nodes/ShaderLib.js +2 -2
  638. package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
  639. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
  640. package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
  641. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
  642. package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
  643. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
  644. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
  645. package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
  646. package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
  647. package/shaders/ACESFilmicToneMappingShader.js +44 -24
  648. package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
  649. package/shaders/AfterimageShader.js +28 -18
  650. package/shaders/AfterimageShader.mjs +32 -0
  651. package/shaders/BasicShader.js +9 -7
  652. package/shaders/BasicShader.mjs +12 -0
  653. package/shaders/BleachBypassShader.js +31 -15
  654. package/shaders/BleachBypassShader.mjs +35 -0
  655. package/shaders/BlendShader.js +26 -19
  656. package/shaders/BlendShader.mjs +30 -0
  657. package/shaders/BokehShader.js +98 -36
  658. package/shaders/BokehShader.mjs +106 -0
  659. package/shaders/BokehShader2.js +261 -90
  660. package/shaders/BokehShader2.mjs +269 -0
  661. package/shaders/BrightnessContrastShader.js +28 -19
  662. package/shaders/BrightnessContrastShader.mjs +32 -0
  663. package/shaders/ColorCorrectionShader.js +26 -22
  664. package/shaders/ColorCorrectionShader.mjs +30 -0
  665. package/shaders/ColorifyShader.js +24 -16
  666. package/shaders/ColorifyShader.mjs +28 -0
  667. package/shaders/ConvolutionShader.js +40 -36
  668. package/shaders/ConvolutionShader.mjs +55 -0
  669. package/shaders/CopyShader.js +21 -13
  670. package/shaders/CopyShader.mjs +25 -0
  671. package/shaders/DOFMipMapShader.js +28 -21
  672. package/shaders/DOFMipMapShader.mjs +32 -0
  673. package/shaders/DepthLimitedBlurShader.js +85 -40
  674. package/shaders/DepthLimitedBlurShader.mjs +114 -0
  675. package/shaders/DigitalGlitch.js +74 -46
  676. package/shaders/DigitalGlitch.mjs +78 -0
  677. package/shaders/DotScreenShader.js +35 -27
  678. package/shaders/DotScreenShader.mjs +39 -0
  679. package/shaders/FXAAShader.js +1094 -19
  680. package/shaders/FXAAShader.mjs +1098 -0
  681. package/shaders/FilmShader.js +38 -52
  682. package/shaders/FilmShader.mjs +42 -0
  683. package/shaders/FocusShader.js +51 -24
  684. package/shaders/FocusShader.mjs +55 -0
  685. package/shaders/FreiChenShader.js +57 -24
  686. package/shaders/FreiChenShader.mjs +61 -0
  687. package/shaders/FresnelShader.js +43 -22
  688. package/shaders/FresnelShader.mjs +47 -0
  689. package/shaders/GammaCorrectionShader.js +19 -11
  690. package/shaders/GammaCorrectionShader.mjs +23 -0
  691. package/shaders/GodRaysShader.js +103 -94
  692. package/shaders/GodRaysShader.mjs +146 -0
  693. package/shaders/HalftoneShader.js +208 -65
  694. package/shaders/HalftoneShader.mjs +212 -0
  695. package/shaders/HorizontalBlurShader.js +7 -23
  696. package/shaders/HorizontalBlurShader.mjs +43 -0
  697. package/shaders/HorizontalTiltShiftShader.js +33 -21
  698. package/shaders/HorizontalTiltShiftShader.mjs +37 -0
  699. package/shaders/HueSaturationShader.js +37 -21
  700. package/shaders/HueSaturationShader.mjs +41 -0
  701. package/shaders/KaleidoShader.js +30 -22
  702. package/shaders/KaleidoShader.mjs +34 -0
  703. package/shaders/LuminosityHighPassShader.js +33 -27
  704. package/shaders/LuminosityHighPassShader.mjs +37 -0
  705. package/shaders/LuminosityShader.js +21 -11
  706. package/shaders/LuminosityShader.mjs +25 -0
  707. package/shaders/MirrorShader.js +31 -16
  708. package/shaders/MirrorShader.mjs +35 -0
  709. package/shaders/NormalMapShader.js +27 -23
  710. package/shaders/NormalMapShader.mjs +31 -0
  711. package/shaders/ParallaxShader.js +107 -48
  712. package/shaders/ParallaxShader.mjs +113 -0
  713. package/shaders/PixelShader.js +24 -16
  714. package/shaders/PixelShader.mjs +28 -0
  715. package/shaders/RGBShiftShader.js +26 -22
  716. package/shaders/RGBShiftShader.mjs +30 -0
  717. package/shaders/SAOShader.js +132 -48
  718. package/shaders/SAOShader.mjs +144 -0
  719. package/shaders/SMAAShader.js +256 -135
  720. package/shaders/SMAAShader.mjs +272 -0
  721. package/shaders/SSAOShader.js +153 -81
  722. package/shaders/SSAOShader.mjs +172 -0
  723. package/shaders/SSRShader.js +32 -87
  724. package/shaders/SSRShader.mjs +324 -0
  725. package/shaders/SepiaShader.js +25 -15
  726. package/shaders/SepiaShader.mjs +29 -0
  727. package/shaders/SobelOperatorShader.js +40 -29
  728. package/shaders/SobelOperatorShader.mjs +44 -0
  729. package/shaders/SubsurfaceScatteringShader.js +53 -39
  730. package/shaders/SubsurfaceScatteringShader.mjs +59 -0
  731. package/shaders/TechnicolorShader.js +20 -13
  732. package/shaders/TechnicolorShader.mjs +24 -0
  733. package/shaders/ToneMapShader.js +44 -28
  734. package/shaders/ToneMapShader.mjs +48 -0
  735. package/shaders/ToonShader.js +172 -96
  736. package/shaders/ToonShader.mjs +188 -0
  737. package/shaders/TriangleBlurShader.js +32 -23
  738. package/shaders/TriangleBlurShader.mjs +36 -0
  739. package/shaders/UnpackDepthRGBAShader.js +22 -14
  740. package/shaders/UnpackDepthRGBAShader.mjs +26 -0
  741. package/shaders/VerticalBlurShader.js +7 -23
  742. package/shaders/VerticalBlurShader.mjs +44 -0
  743. package/shaders/VerticalTiltShiftShader.js +33 -21
  744. package/shaders/VerticalTiltShiftShader.mjs +37 -0
  745. package/shaders/VignetteShader.js +24 -28
  746. package/shaders/VignetteShader.mjs +28 -0
  747. package/shaders/VolumeShader.js +174 -77
  748. package/shaders/VolumeShader.mjs +178 -0
  749. package/shaders/WaterRefractionShader.js +38 -6
  750. package/shaders/WaterRefractionShader.mjs +57 -0
  751. package/shaders/types.js +1 -1
  752. package/{custom.d.js → shaders/types.mjs} +0 -0
  753. package/textures/FlakesTexture.js +8 -10
  754. package/textures/FlakesTexture.mjs +30 -0
  755. package/types/helpers.js +3 -2
  756. package/types/helpers.mjs +4 -0
  757. package/utils/BufferGeometryUtils.js +251 -325
  758. package/utils/BufferGeometryUtils.mjs +570 -0
  759. package/utils/GeometryCompressionUtils.js +241 -239
  760. package/utils/GeometryCompressionUtils.mjs +547 -0
  761. package/utils/GeometryUtils.js +41 -94
  762. package/utils/GeometryUtils.mjs +108 -0
  763. package/utils/RoughnessMipmapper.js +38 -82
  764. package/utils/RoughnessMipmapper.mjs +213 -0
  765. package/utils/SceneUtils.js +15 -20
  766. package/utils/SceneUtils.mjs +36 -0
  767. package/utils/ShadowMapViewer.js +49 -95
  768. package/utils/ShadowMapViewer.mjs +114 -0
  769. package/utils/SkeletonUtils.js +74 -165
  770. package/utils/SkeletonUtils.mjs +292 -0
  771. package/utils/UVsDebug.js +32 -62
  772. package/utils/UVsDebug.mjs +85 -0
  773. package/utils/WorkerPool.js +13 -33
  774. package/utils/WorkerPool.mjs +62 -0
  775. package/webxr/ARButton.js +72 -98
  776. package/webxr/ARButton.mjs +119 -0
  777. package/webxr/OculusHandModel.js +18 -37
  778. package/webxr/OculusHandModel.mjs +71 -0
  779. package/webxr/OculusHandPointerModel.js +58 -80
  780. package/webxr/OculusHandPointerModel.mjs +207 -0
  781. package/webxr/Text2D.js +37 -19
  782. package/webxr/Text2D.mjs +31 -0
  783. package/webxr/VRButton.js +59 -90
  784. package/webxr/VRButton.mjs +105 -0
  785. package/webxr/XRControllerModelFactory.js +58 -116
  786. package/webxr/XRControllerModelFactory.mjs +146 -0
  787. package/webxr/XREstimatedLight.js +39 -66
  788. package/webxr/XREstimatedLight.mjs +126 -0
  789. package/webxr/XRHandMeshModel.js +40 -29
  790. package/webxr/XRHandMeshModel.mjs +73 -0
  791. package/webxr/XRHandModelFactory.js +28 -31
  792. package/webxr/XRHandModelFactory.mjs +61 -0
  793. package/webxr/XRHandPrimitiveModel.js +41 -27
  794. package/webxr/XRHandPrimitiveModel.mjs +68 -0
  795. package/BufferGeometryUtils-1a7a235c.js +0 -655
  796. package/BufferGeometryUtils-971dfde3.js +0 -1
  797. package/Nodes-4f766d71.js +0 -471
  798. package/Nodes-9aa16d74.js +0 -1
  799. package/animation/AnimationClipCreator.cjs.js +0 -1
  800. package/animation/CCDIKSolver.cjs.js +0 -1
  801. package/animation/MMDAnimationHelper.cjs.js +0 -1
  802. package/animation/MMDPhysics.cjs.js +0 -1
  803. package/cameras/CinematicCamera.cjs.js +0 -1
  804. package/controls/ArcballControls.cjs.js +0 -1
  805. package/controls/DeviceOrientationControls.cjs.js +0 -1
  806. package/controls/DragControls.cjs.js +0 -1
  807. package/controls/FirstPersonControls.cjs.js +0 -1
  808. package/controls/FlyControls.cjs.js +0 -1
  809. package/controls/OrbitControls.cjs.js +0 -1
  810. package/controls/PointerLockControls.cjs.js +0 -1
  811. package/controls/TrackballControls.cjs.js +0 -1
  812. package/controls/TransformControls.cjs.js +0 -1
  813. package/controls/experimental/CameraControls.cjs.js +0 -1
  814. package/csm/CSM.cjs.js +0 -1
  815. package/csm/CSMFrustum.cjs.js +0 -1
  816. package/csm/CSMHelper.cjs.js +0 -1
  817. package/csm/CSMShader.cjs.js +0 -1
  818. package/curves/CurveExtras.cjs.js +0 -1
  819. package/curves/NURBSCurve.cjs.js +0 -1
  820. package/curves/NURBSSurface.cjs.js +0 -1
  821. package/curves/NURBSUtils.cjs.js +0 -1
  822. package/custom.d.cjs.js +0 -1
  823. package/deprecated/Geometry.cjs.js +0 -1
  824. package/effects/AnaglyphEffect.cjs.js +0 -1
  825. package/effects/AsciiEffect.cjs.js +0 -1
  826. package/effects/OutlineEffect.cjs.js +0 -1
  827. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  828. package/effects/PeppersGhostEffect.cjs.js +0 -1
  829. package/effects/StereoEffect.cjs.js +0 -1
  830. package/environments/RoomEnvironment.cjs.js +0 -1
  831. package/exporters/ColladaExporter.cjs.js +0 -1
  832. package/exporters/DRACOExporter.cjs.js +0 -1
  833. package/exporters/GLTFExporter.cjs.js +0 -1
  834. package/exporters/MMDExporter.cjs.js +0 -1
  835. package/exporters/OBJExporter.cjs.js +0 -1
  836. package/exporters/PLYExporter.cjs.js +0 -1
  837. package/exporters/STLExporter.cjs.js +0 -1
  838. package/exporters/USDZExporter.cjs.js +0 -1
  839. package/geometries/BoxLineGeometry.cjs.js +0 -1
  840. package/geometries/ConvexGeometry.cjs.js +0 -1
  841. package/geometries/DecalGeometry.cjs.js +0 -1
  842. package/geometries/LightningStrike.cjs.js +0 -1
  843. package/geometries/ParametricGeometries.cjs.js +0 -1
  844. package/geometries/ParametricGeometry.cjs.js +0 -1
  845. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  846. package/geometries/TeapotGeometry.cjs.js +0 -1
  847. package/geometries/TextGeometry.cjs.js +0 -1
  848. package/helpers/LightProbeHelper.cjs.js +0 -1
  849. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  850. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  851. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  852. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  853. package/index.cjs.js +0 -1
  854. package/interactive/InteractiveGroup.cjs.js +0 -1
  855. package/interactive/InteractiveGroup.d.ts +0 -5
  856. package/interactive/InteractiveGroup.js +0 -87
  857. package/interactive/SelectionBox.cjs.js +0 -1
  858. package/interactive/SelectionHelper.cjs.js +0 -1
  859. package/libs/MeshoptDecoder.cjs.js +0 -1
  860. package/libs/MotionControllers.cjs.js +0 -1
  861. package/lights/LightProbeGenerator.cjs.js +0 -1
  862. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  863. package/lines/Line2.cjs.js +0 -1
  864. package/lines/LineGeometry.cjs.js +0 -1
  865. package/lines/LineMaterial.cjs.js +0 -1
  866. package/lines/LineSegments2.cjs.js +0 -1
  867. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  868. package/lines/Wireframe.cjs.js +0 -1
  869. package/lines/WireframeGeometry2.cjs.js +0 -1
  870. package/loaders/3DMLoader.cjs.js +0 -1
  871. package/loaders/3MFLoader.cjs.js +0 -1
  872. package/loaders/AMFLoader.cjs.js +0 -1
  873. package/loaders/AssimpLoader.cjs.js +0 -1
  874. package/loaders/BVHLoader.cjs.js +0 -1
  875. package/loaders/BasisTextureLoader.cjs.js +0 -1
  876. package/loaders/ColladaLoader.cjs.js +0 -1
  877. package/loaders/DDSLoader.cjs.js +0 -1
  878. package/loaders/DRACOLoader.cjs.js +0 -1
  879. package/loaders/EXRLoader.cjs.js +0 -1
  880. package/loaders/FBXLoader.cjs.js +0 -1
  881. package/loaders/FontLoader.cjs.js +0 -1
  882. package/loaders/GCodeLoader.cjs.js +0 -1
  883. package/loaders/GLTFLoader.cjs.js +0 -1
  884. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  885. package/loaders/KMZLoader.cjs.js +0 -1
  886. package/loaders/KTX2Loader.cjs.js +0 -1
  887. package/loaders/KTXLoader.cjs.js +0 -1
  888. package/loaders/LDrawLoader.cjs.js +0 -1
  889. package/loaders/LUT3dlLoader.cjs.js +0 -1
  890. package/loaders/LUTCubeLoader.cjs.js +0 -1
  891. package/loaders/LWOLoader.cjs.js +0 -1
  892. package/loaders/LottieLoader.cjs.js +0 -1
  893. package/loaders/MD2Loader.cjs.js +0 -1
  894. package/loaders/MDDLoader.cjs.js +0 -1
  895. package/loaders/MMDLoader.cjs.js +0 -1
  896. package/loaders/MTLLoader.cjs.js +0 -1
  897. package/loaders/NRRDLoader.cjs.js +0 -1
  898. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  899. package/loaders/OBJLoader.cjs.js +0 -1
  900. package/loaders/PCDLoader.cjs.js +0 -1
  901. package/loaders/PDBLoader.cjs.js +0 -1
  902. package/loaders/PLYLoader.cjs.js +0 -1
  903. package/loaders/PRWMLoader.cjs.js +0 -1
  904. package/loaders/PVRLoader.cjs.js +0 -1
  905. package/loaders/RGBELoader.cjs.js +0 -1
  906. package/loaders/RGBMLoader.cjs.js +0 -1
  907. package/loaders/STLLoader.cjs.js +0 -1
  908. package/loaders/SVGLoader.cjs.js +0 -1
  909. package/loaders/TDSLoader.cjs.js +0 -1
  910. package/loaders/TGALoader.cjs.js +0 -1
  911. package/loaders/TTFLoader.cjs.js +0 -1
  912. package/loaders/TiltLoader.cjs.js +0 -1
  913. package/loaders/VOXLoader.cjs.js +0 -1
  914. package/loaders/VRMLLoader.cjs.js +0 -1
  915. package/loaders/VRMLoader.cjs.js +0 -1
  916. package/loaders/VTKLoader.cjs.js +0 -1
  917. package/loaders/XLoader.cjs.js +0 -1
  918. package/loaders/XYZLoader.cjs.js +0 -1
  919. package/loaders/lwo/IFFParser.cjs.js +0 -1
  920. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  921. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  922. package/math/Capsule.cjs.js +0 -1
  923. package/math/ColorConverter.cjs.js +0 -1
  924. package/math/ConvexHull.cjs.js +0 -1
  925. package/math/ImprovedNoise.cjs.js +0 -1
  926. package/math/Lut.cjs.js +0 -1
  927. package/math/MeshSurfaceSampler.cjs.js +0 -1
  928. package/math/OBB.cjs.js +0 -1
  929. package/math/Octree.cjs.js +0 -1
  930. package/math/SimplexNoise.cjs.js +0 -1
  931. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  932. package/misc/GPUComputationRenderer.cjs.js +0 -1
  933. package/misc/Gyroscope.cjs.js +0 -1
  934. package/misc/MD2Character.cjs.js +0 -1
  935. package/misc/MD2CharacterComplex.cjs.js +0 -1
  936. package/misc/MorphAnimMesh.cjs.js +0 -1
  937. package/misc/MorphBlendMesh.cjs.js +0 -1
  938. package/misc/ProgressiveLightmap.cjs.js +0 -1
  939. package/misc/RollerCoaster.cjs.js +0 -1
  940. package/misc/TubePainter.cjs.js +0 -1
  941. package/misc/Volume.cjs.js +0 -1
  942. package/misc/VolumeSlice.cjs.js +0 -1
  943. package/misc/WebGL.cjs.js +0 -1
  944. package/modifiers/CurveModifier.cjs.js +0 -1
  945. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  946. package/modifiers/SimplifyModifier.cjs.js +0 -1
  947. package/modifiers/TessellateModifier.cjs.js +0 -1
  948. package/nodes/Nodes.cjs.js +0 -1
  949. package/nodes/ShaderNode.cjs.js +0 -1
  950. package/nodes/accessors/BufferNode.cjs.js +0 -1
  951. package/nodes/accessors/CameraNode.cjs.js +0 -1
  952. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  953. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  954. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  955. package/nodes/accessors/ModelNode.cjs.js +0 -1
  956. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  957. package/nodes/accessors/NormalNode.cjs.js +0 -1
  958. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  959. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  960. package/nodes/accessors/PositionNode.cjs.js +0 -1
  961. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  962. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  963. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  964. package/nodes/accessors/TextureNode.cjs.js +0 -1
  965. package/nodes/accessors/UVNode.cjs.js +0 -1
  966. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  967. package/nodes/core/AttributeNode.cjs.js +0 -1
  968. package/nodes/core/BypassNode.cjs.js +0 -1
  969. package/nodes/core/CodeNode.cjs.js +0 -1
  970. package/nodes/core/ConstNode.cjs.js +0 -1
  971. package/nodes/core/ContextNode.cjs.js +0 -1
  972. package/nodes/core/ExpressionNode.cjs.js +0 -1
  973. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  974. package/nodes/core/FunctionNode.cjs.js +0 -1
  975. package/nodes/core/InputNode.cjs.js +0 -1
  976. package/nodes/core/Node.cjs.js +0 -1
  977. package/nodes/core/NodeAttribute.cjs.js +0 -1
  978. package/nodes/core/NodeBuilder.cjs.js +0 -1
  979. package/nodes/core/NodeCode.cjs.js +0 -1
  980. package/nodes/core/NodeFrame.cjs.js +0 -1
  981. package/nodes/core/NodeFunction.cjs.js +0 -1
  982. package/nodes/core/NodeFunction.js +0 -17
  983. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  984. package/nodes/core/NodeKeywords.cjs.js +0 -1
  985. package/nodes/core/NodeParser.cjs.js +0 -1
  986. package/nodes/core/NodeParser.js +0 -8
  987. package/nodes/core/NodeUniform.cjs.js +0 -1
  988. package/nodes/core/NodeUtils.cjs.js +0 -1
  989. package/nodes/core/NodeVar.cjs.js +0 -1
  990. package/nodes/core/NodeVary.cjs.js +0 -1
  991. package/nodes/core/PropertyNode.cjs.js +0 -1
  992. package/nodes/core/TempNode.cjs.js +0 -1
  993. package/nodes/core/UniformNode.cjs.js +0 -1
  994. package/nodes/core/VarNode.cjs.js +0 -1
  995. package/nodes/core/VaryNode.cjs.js +0 -1
  996. package/nodes/core/constants.cjs.js +0 -1
  997. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  998. package/nodes/display/NormalMapNode.cjs.js +0 -1
  999. package/nodes/fog/FogNode.cjs.js +0 -1
  1000. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  1001. package/nodes/functions/BSDFs.cjs.js +0 -1
  1002. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  1003. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  1004. package/nodes/lights/LightContextNode.cjs.js +0 -1
  1005. package/nodes/lights/LightNode.cjs.js +0 -1
  1006. package/nodes/lights/LightsNode.cjs.js +0 -1
  1007. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  1008. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  1009. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  1010. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  1011. package/nodes/materials/Materials.cjs.js +0 -1
  1012. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  1013. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  1014. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  1015. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  1016. package/nodes/math/CondNode.cjs.js +0 -1
  1017. package/nodes/math/MathNode.cjs.js +0 -1
  1018. package/nodes/math/OperatorNode.cjs.js +0 -1
  1019. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  1020. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  1021. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  1022. package/nodes/parsers/GLSLNodeParser.js +0 -13
  1023. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  1024. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  1025. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  1026. package/nodes/parsers/WGSLNodeParser.js +0 -13
  1027. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  1028. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  1029. package/nodes/utils/ConvertNode.cjs.js +0 -1
  1030. package/nodes/utils/JoinNode.cjs.js +0 -1
  1031. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  1032. package/nodes/utils/OscNode.cjs.js +0 -1
  1033. package/nodes/utils/SplitNode.cjs.js +0 -1
  1034. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  1035. package/nodes/utils/TimerNode.cjs.js +0 -1
  1036. package/objects/GroundProjectedEnv.cjs.js +0 -1
  1037. package/objects/Lensflare.cjs.js +0 -1
  1038. package/objects/LightningStorm.cjs.js +0 -1
  1039. package/objects/MarchingCubes.cjs.js +0 -1
  1040. package/objects/Reflector.cjs.js +0 -1
  1041. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  1042. package/objects/ReflectorRTT.cjs.js +0 -1
  1043. package/objects/Refractor.cjs.js +0 -1
  1044. package/objects/ShadowMesh.cjs.js +0 -1
  1045. package/objects/Sky.cjs.js +0 -1
  1046. package/objects/Water.cjs.js +0 -1
  1047. package/objects/Water2.cjs.js +0 -1
  1048. package/offscreen/jank.cjs.js +0 -1
  1049. package/offscreen/offscreen.cjs.js +0 -1
  1050. package/offscreen/scene.cjs.js +0 -1
  1051. package/physics/AmmoPhysics.cjs.js +0 -1
  1052. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  1053. package/postprocessing/AfterimagePass.cjs.js +0 -1
  1054. package/postprocessing/BloomPass.cjs.js +0 -1
  1055. package/postprocessing/BokehPass.cjs.js +0 -1
  1056. package/postprocessing/ClearPass.cjs.js +0 -1
  1057. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  1058. package/postprocessing/DotScreenPass.cjs.js +0 -1
  1059. package/postprocessing/EffectComposer.cjs.js +0 -1
  1060. package/postprocessing/FilmPass.cjs.js +0 -1
  1061. package/postprocessing/GlitchPass.cjs.js +0 -1
  1062. package/postprocessing/HalftonePass.cjs.js +0 -1
  1063. package/postprocessing/LUTPass.cjs.js +0 -1
  1064. package/postprocessing/MaskPass.cjs.js +0 -1
  1065. package/postprocessing/OutlinePass.cjs.js +0 -1
  1066. package/postprocessing/Pass.cjs.js +0 -1
  1067. package/postprocessing/RenderPass.cjs.js +0 -1
  1068. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  1069. package/postprocessing/SAOPass.cjs.js +0 -1
  1070. package/postprocessing/SMAAPass.cjs.js +0 -1
  1071. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  1072. package/postprocessing/SSAOPass.cjs.js +0 -1
  1073. package/postprocessing/SSRPass.cjs.js +0 -1
  1074. package/postprocessing/SavePass.cjs.js +0 -1
  1075. package/postprocessing/ShaderPass.cjs.js +0 -1
  1076. package/postprocessing/TAARenderPass.cjs.js +0 -1
  1077. package/postprocessing/TexturePass.cjs.js +0 -1
  1078. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  1079. package/renderers/CSS2DRenderer.cjs.js +0 -1
  1080. package/renderers/CSS3DRenderer.cjs.js +0 -1
  1081. package/renderers/Projector.cjs.js +0 -1
  1082. package/renderers/SVGRenderer.cjs.js +0 -1
  1083. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  1084. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  1085. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  1086. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  1087. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  1088. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  1089. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  1090. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  1091. package/renderers/nodes/core/Node.cjs.js +0 -1
  1092. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  1093. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  1094. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  1095. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  1096. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  1097. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  1098. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  1099. package/renderers/nodes/core/constants.cjs.js +0 -1
  1100. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  1101. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  1102. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  1103. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  1104. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  1105. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  1106. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  1107. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  1108. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  1109. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  1110. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  1111. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  1112. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  1113. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  1114. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  1115. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  1116. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  1117. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  1118. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  1119. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  1120. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  1121. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  1122. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  1123. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  1124. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  1125. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  1126. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  1127. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  1128. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  1129. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  1130. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  1131. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  1132. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  1133. package/renderers/webgpu/constants.cjs.js +0 -1
  1134. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  1135. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  1136. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  1137. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  1138. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  1139. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  1140. package/shaders/AfterimageShader.cjs.js +0 -1
  1141. package/shaders/BasicShader.cjs.js +0 -1
  1142. package/shaders/BleachBypassShader.cjs.js +0 -1
  1143. package/shaders/BlendShader.cjs.js +0 -1
  1144. package/shaders/BokehShader.cjs.js +0 -1
  1145. package/shaders/BokehShader2.cjs.js +0 -1
  1146. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  1147. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  1148. package/shaders/ColorifyShader.cjs.js +0 -1
  1149. package/shaders/ConvolutionShader.cjs.js +0 -1
  1150. package/shaders/CopyShader.cjs.js +0 -1
  1151. package/shaders/DOFMipMapShader.cjs.js +0 -1
  1152. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  1153. package/shaders/DigitalGlitch.cjs.js +0 -1
  1154. package/shaders/DotScreenShader.cjs.js +0 -1
  1155. package/shaders/FXAAShader.cjs.js +0 -1
  1156. package/shaders/FilmShader.cjs.js +0 -1
  1157. package/shaders/FocusShader.cjs.js +0 -1
  1158. package/shaders/FreiChenShader.cjs.js +0 -1
  1159. package/shaders/FresnelShader.cjs.js +0 -1
  1160. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  1161. package/shaders/GodRaysShader.cjs.js +0 -1
  1162. package/shaders/HalftoneShader.cjs.js +0 -1
  1163. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  1164. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  1165. package/shaders/HueSaturationShader.cjs.js +0 -1
  1166. package/shaders/KaleidoShader.cjs.js +0 -1
  1167. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  1168. package/shaders/LuminosityShader.cjs.js +0 -1
  1169. package/shaders/MirrorShader.cjs.js +0 -1
  1170. package/shaders/NormalMapShader.cjs.js +0 -1
  1171. package/shaders/ParallaxShader.cjs.js +0 -1
  1172. package/shaders/PixelShader.cjs.js +0 -1
  1173. package/shaders/RGBShiftShader.cjs.js +0 -1
  1174. package/shaders/SAOShader.cjs.js +0 -1
  1175. package/shaders/SMAAShader.cjs.js +0 -1
  1176. package/shaders/SSAOShader.cjs.js +0 -1
  1177. package/shaders/SSRShader.cjs.js +0 -1
  1178. package/shaders/SepiaShader.cjs.js +0 -1
  1179. package/shaders/SobelOperatorShader.cjs.js +0 -1
  1180. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  1181. package/shaders/TechnicolorShader.cjs.js +0 -1
  1182. package/shaders/ToneMapShader.cjs.js +0 -1
  1183. package/shaders/ToonShader.cjs.js +0 -1
  1184. package/shaders/TriangleBlurShader.cjs.js +0 -1
  1185. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1186. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1187. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1188. package/shaders/VignetteShader.cjs.js +0 -1
  1189. package/shaders/VolumeShader.cjs.js +0 -1
  1190. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1191. package/shaders/index.cjs.js +0 -1
  1192. package/shaders/index.d.ts +0 -54
  1193. package/shaders/index.js +0 -53
  1194. package/shaders/types.cjs.js +0 -1
  1195. package/textures/FlakesTexture.cjs.js +0 -1
  1196. package/types/helpers.cjs.js +0 -1
  1197. package/types/shared.cjs.js +0 -1
  1198. package/types/shared.js +0 -1
  1199. package/types/utils.cjs.js +0 -1
  1200. package/types/utils.js +0 -1
  1201. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1202. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1203. package/utils/GeometryUtils.cjs.js +0 -1
  1204. package/utils/LDrawUtils.cjs.js +0 -1
  1205. package/utils/LDrawUtils.d.ts +0 -5
  1206. package/utils/LDrawUtils.js +0 -144
  1207. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1208. package/utils/SceneUtils.cjs.js +0 -1
  1209. package/utils/ShadowMapViewer.cjs.js +0 -1
  1210. package/utils/SkeletonUtils.cjs.js +0 -1
  1211. package/utils/UVsDebug.cjs.js +0 -1
  1212. package/utils/WorkerPool.cjs.js +0 -1
  1213. package/webxr/ARButton.cjs.js +0 -1
  1214. package/webxr/OculusHandModel.cjs.js +0 -1
  1215. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1216. package/webxr/Text2D.cjs.js +0 -1
  1217. package/webxr/VRButton.cjs.js +0 -1
  1218. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1219. package/webxr/XREstimatedLight.cjs.js +0 -1
  1220. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1221. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1222. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
@@ -1,134 +1,113 @@
1
- import { Loader, FileLoader, Matrix3, Vector2, Vector3, ShapeUtils, Box2, Shape, Path, BufferGeometry, Float32BufferAttribute, ShapePath } from 'three';
2
-
3
- class SVGLoader extends Loader {
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
4
+ class SVGLoader extends THREE.Loader {
4
5
  constructor(manager) {
5
- super(manager); // Default dots per inch
6
-
7
- this.defaultDPI = 90; // Accepted units: 'mm', 'cm', 'in', 'pt', 'pc', 'px'
8
-
9
- this.defaultUnit = 'px';
6
+ super(manager);
7
+ this.defaultDPI = 90;
8
+ this.defaultUnit = "px";
10
9
  }
11
-
12
10
  load(url, onLoad, onProgress, onError) {
13
11
  const scope = this;
14
- const loader = new FileLoader(scope.manager);
12
+ const loader = new THREE.FileLoader(scope.manager);
15
13
  loader.setPath(scope.path);
16
14
  loader.setRequestHeader(scope.requestHeader);
17
15
  loader.setWithCredentials(scope.withCredentials);
18
- loader.load(url, function (text) {
19
- try {
20
- onLoad(scope.parse(text));
21
- } catch (e) {
22
- if (onError) {
23
- onError(e);
24
- } else {
25
- console.error(e);
16
+ loader.load(
17
+ url,
18
+ function(text) {
19
+ try {
20
+ onLoad(scope.parse(text));
21
+ } catch (e) {
22
+ if (onError) {
23
+ onError(e);
24
+ } else {
25
+ console.error(e);
26
+ }
27
+ scope.manager.itemError(url);
26
28
  }
27
-
28
- scope.manager.itemError(url);
29
- }
30
- }, onProgress, onError);
29
+ },
30
+ onProgress,
31
+ onError
32
+ );
31
33
  }
32
-
33
34
  parse(text) {
34
35
  const scope = this;
35
-
36
36
  function parseNode(node, style) {
37
- if (node.nodeType !== 1) return;
37
+ if (node.nodeType !== 1)
38
+ return;
38
39
  const transform = getNodeTransform(node);
39
40
  let traverseChildNodes = true;
40
41
  let path = null;
41
-
42
42
  switch (node.nodeName) {
43
- case 'svg':
43
+ case "svg":
44
44
  break;
45
-
46
- case 'style':
45
+ case "style":
47
46
  parseCSSStylesheet(node);
48
47
  break;
49
-
50
- case 'g':
48
+ case "g":
51
49
  style = parseStyle(node, style);
52
50
  break;
53
-
54
- case 'path':
51
+ case "path":
55
52
  style = parseStyle(node, style);
56
- if (node.hasAttribute('d')) path = parsePathNode(node);
53
+ if (node.hasAttribute("d"))
54
+ path = parsePathNode(node);
57
55
  break;
58
-
59
- case 'rect':
56
+ case "rect":
60
57
  style = parseStyle(node, style);
61
58
  path = parseRectNode(node);
62
59
  break;
63
-
64
- case 'polygon':
60
+ case "polygon":
65
61
  style = parseStyle(node, style);
66
62
  path = parsePolygonNode(node);
67
63
  break;
68
-
69
- case 'polyline':
64
+ case "polyline":
70
65
  style = parseStyle(node, style);
71
66
  path = parsePolylineNode(node);
72
67
  break;
73
-
74
- case 'circle':
68
+ case "circle":
75
69
  style = parseStyle(node, style);
76
70
  path = parseCircleNode(node);
77
71
  break;
78
-
79
- case 'ellipse':
72
+ case "ellipse":
80
73
  style = parseStyle(node, style);
81
74
  path = parseEllipseNode(node);
82
75
  break;
83
-
84
- case 'line':
76
+ case "line":
85
77
  style = parseStyle(node, style);
86
78
  path = parseLineNode(node);
87
79
  break;
88
-
89
- case 'defs':
80
+ case "defs":
90
81
  traverseChildNodes = false;
91
82
  break;
92
-
93
- case 'use':
83
+ case "use":
94
84
  style = parseStyle(node, style);
95
85
  const usedNodeId = node.href.baseVal.substring(1);
96
86
  const usedNode = node.viewportElement.getElementById(usedNodeId);
97
-
98
87
  if (usedNode) {
99
88
  parseNode(usedNode, style);
100
89
  } else {
101
90
  console.warn("SVGLoader: 'use node' references non-existent node id: " + usedNodeId);
102
91
  }
103
-
104
92
  break;
105
-
93
+ default:
106
94
  }
107
-
108
95
  if (path) {
109
- if (style.fill !== undefined && style.fill !== 'none') {
96
+ if (style.fill !== void 0 && style.fill !== "none") {
110
97
  path.color.setStyle(style.fill);
111
98
  }
112
-
113
99
  transformPath(path, currentTransform);
114
100
  paths.push(path);
115
- path.userData = {
116
- node: node,
117
- style: style
118
- };
101
+ path.userData = { node, style };
119
102
  }
120
-
121
103
  if (traverseChildNodes) {
122
104
  const nodes = node.childNodes;
123
-
124
105
  for (let i = 0; i < nodes.length; i++) {
125
106
  parseNode(nodes[i], style);
126
107
  }
127
108
  }
128
-
129
109
  if (transform) {
130
110
  transformStack.pop();
131
-
132
111
  if (transformStack.length > 0) {
133
112
  currentTransform.copy(transformStack[transformStack.length - 1]);
134
113
  } else {
@@ -136,136 +115,127 @@ class SVGLoader extends Loader {
136
115
  }
137
116
  }
138
117
  }
139
-
140
118
  function parsePathNode(node) {
141
- const path = new ShapePath();
142
- const point = new Vector2();
143
- const control = new Vector2();
144
- const firstPoint = new Vector2();
119
+ const path = new THREE.ShapePath();
120
+ const point = new THREE.Vector2();
121
+ const control = new THREE.Vector2();
122
+ const firstPoint = new THREE.Vector2();
145
123
  let isFirstPoint = true;
146
124
  let doSetFirstPoint = false;
147
- const d = node.getAttribute('d'); // console.log( d );
148
-
125
+ const d = node.getAttribute("d");
149
126
  const commands = d.match(/[a-df-z][^a-df-z]*/gi);
150
-
151
127
  for (let i = 0, l = commands.length; i < l; i++) {
152
128
  const command = commands[i];
153
129
  const type = command.charAt(0);
154
- const data = command.substr(1).trim();
155
-
130
+ const data2 = command.substr(1).trim();
156
131
  if (isFirstPoint === true) {
157
132
  doSetFirstPoint = true;
158
133
  isFirstPoint = false;
159
134
  }
160
-
161
135
  let numbers;
162
-
163
136
  switch (type) {
164
- case 'M':
165
- numbers = parseFloats(data);
166
-
137
+ case "M":
138
+ numbers = parseFloats(data2);
167
139
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
168
140
  point.x = numbers[j + 0];
169
141
  point.y = numbers[j + 1];
170
142
  control.x = point.x;
171
143
  control.y = point.y;
172
-
173
144
  if (j === 0) {
174
145
  path.moveTo(point.x, point.y);
175
146
  } else {
176
147
  path.lineTo(point.x, point.y);
177
148
  }
178
-
179
- if (j === 0) firstPoint.copy(point);
149
+ if (j === 0)
150
+ firstPoint.copy(point);
180
151
  }
181
-
182
152
  break;
183
-
184
- case 'H':
185
- numbers = parseFloats(data);
186
-
153
+ case "H":
154
+ numbers = parseFloats(data2);
187
155
  for (let j = 0, jl = numbers.length; j < jl; j++) {
188
156
  point.x = numbers[j];
189
157
  control.x = point.x;
190
158
  control.y = point.y;
191
159
  path.lineTo(point.x, point.y);
192
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
160
+ if (j === 0 && doSetFirstPoint === true)
161
+ firstPoint.copy(point);
193
162
  }
194
-
195
163
  break;
196
-
197
- case 'V':
198
- numbers = parseFloats(data);
199
-
164
+ case "V":
165
+ numbers = parseFloats(data2);
200
166
  for (let j = 0, jl = numbers.length; j < jl; j++) {
201
167
  point.y = numbers[j];
202
168
  control.x = point.x;
203
169
  control.y = point.y;
204
170
  path.lineTo(point.x, point.y);
205
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
171
+ if (j === 0 && doSetFirstPoint === true)
172
+ firstPoint.copy(point);
206
173
  }
207
-
208
174
  break;
209
-
210
- case 'L':
211
- numbers = parseFloats(data);
212
-
175
+ case "L":
176
+ numbers = parseFloats(data2);
213
177
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
214
178
  point.x = numbers[j + 0];
215
179
  point.y = numbers[j + 1];
216
180
  control.x = point.x;
217
181
  control.y = point.y;
218
182
  path.lineTo(point.x, point.y);
219
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
183
+ if (j === 0 && doSetFirstPoint === true)
184
+ firstPoint.copy(point);
220
185
  }
221
-
222
186
  break;
223
-
224
- case 'C':
225
- numbers = parseFloats(data);
226
-
187
+ case "C":
188
+ numbers = parseFloats(data2);
227
189
  for (let j = 0, jl = numbers.length; j < jl; j += 6) {
228
- path.bezierCurveTo(numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], numbers[j + 5]);
190
+ path.bezierCurveTo(
191
+ numbers[j + 0],
192
+ numbers[j + 1],
193
+ numbers[j + 2],
194
+ numbers[j + 3],
195
+ numbers[j + 4],
196
+ numbers[j + 5]
197
+ );
229
198
  control.x = numbers[j + 2];
230
199
  control.y = numbers[j + 3];
231
200
  point.x = numbers[j + 4];
232
201
  point.y = numbers[j + 5];
233
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
202
+ if (j === 0 && doSetFirstPoint === true)
203
+ firstPoint.copy(point);
234
204
  }
235
-
236
205
  break;
237
-
238
- case 'S':
239
- numbers = parseFloats(data);
240
-
206
+ case "S":
207
+ numbers = parseFloats(data2);
241
208
  for (let j = 0, jl = numbers.length; j < jl; j += 4) {
242
- path.bezierCurveTo(getReflection(point.x, control.x), getReflection(point.y, control.y), numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3]);
209
+ path.bezierCurveTo(
210
+ getReflection(point.x, control.x),
211
+ getReflection(point.y, control.y),
212
+ numbers[j + 0],
213
+ numbers[j + 1],
214
+ numbers[j + 2],
215
+ numbers[j + 3]
216
+ );
243
217
  control.x = numbers[j + 0];
244
218
  control.y = numbers[j + 1];
245
219
  point.x = numbers[j + 2];
246
220
  point.y = numbers[j + 3];
247
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
221
+ if (j === 0 && doSetFirstPoint === true)
222
+ firstPoint.copy(point);
248
223
  }
249
-
250
224
  break;
251
-
252
- case 'Q':
253
- numbers = parseFloats(data);
254
-
225
+ case "Q":
226
+ numbers = parseFloats(data2);
255
227
  for (let j = 0, jl = numbers.length; j < jl; j += 4) {
256
228
  path.quadraticCurveTo(numbers[j + 0], numbers[j + 1], numbers[j + 2], numbers[j + 3]);
257
229
  control.x = numbers[j + 0];
258
230
  control.y = numbers[j + 1];
259
231
  point.x = numbers[j + 2];
260
232
  point.y = numbers[j + 3];
261
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
233
+ if (j === 0 && doSetFirstPoint === true)
234
+ firstPoint.copy(point);
262
235
  }
263
-
264
236
  break;
265
-
266
- case 'T':
267
- numbers = parseFloats(data);
268
-
237
+ case "T":
238
+ numbers = parseFloats(data2);
269
239
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
270
240
  const rx = getReflection(point.x, control.x);
271
241
  const ry = getReflection(point.y, control.y);
@@ -274,133 +244,141 @@ class SVGLoader extends Loader {
274
244
  control.y = ry;
275
245
  point.x = numbers[j + 0];
276
246
  point.y = numbers[j + 1];
277
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
247
+ if (j === 0 && doSetFirstPoint === true)
248
+ firstPoint.copy(point);
278
249
  }
279
-
280
250
  break;
281
-
282
- case 'A':
283
- numbers = parseFloats(data, [3, 4], 7);
284
-
251
+ case "A":
252
+ numbers = parseFloats(data2, [3, 4], 7);
285
253
  for (let j = 0, jl = numbers.length; j < jl; j += 7) {
286
- // skip command if start point == end point
287
- if (numbers[j + 5] == point.x && numbers[j + 6] == point.y) continue;
254
+ if (numbers[j + 5] == point.x && numbers[j + 6] == point.y)
255
+ continue;
288
256
  const start = point.clone();
289
257
  point.x = numbers[j + 5];
290
258
  point.y = numbers[j + 6];
291
259
  control.x = point.x;
292
260
  control.y = point.y;
293
- parseArcCommand(path, numbers[j], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], start, point);
294
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
261
+ parseArcCommand(
262
+ path,
263
+ numbers[j],
264
+ numbers[j + 1],
265
+ numbers[j + 2],
266
+ numbers[j + 3],
267
+ numbers[j + 4],
268
+ start,
269
+ point
270
+ );
271
+ if (j === 0 && doSetFirstPoint === true)
272
+ firstPoint.copy(point);
295
273
  }
296
-
297
274
  break;
298
-
299
- case 'm':
300
- numbers = parseFloats(data);
301
-
275
+ case "m":
276
+ numbers = parseFloats(data2);
302
277
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
303
278
  point.x += numbers[j + 0];
304
279
  point.y += numbers[j + 1];
305
280
  control.x = point.x;
306
281
  control.y = point.y;
307
-
308
282
  if (j === 0) {
309
283
  path.moveTo(point.x, point.y);
310
284
  } else {
311
285
  path.lineTo(point.x, point.y);
312
286
  }
313
-
314
- if (j === 0) firstPoint.copy(point);
287
+ if (j === 0)
288
+ firstPoint.copy(point);
315
289
  }
316
-
317
290
  break;
318
-
319
- case 'h':
320
- numbers = parseFloats(data);
321
-
291
+ case "h":
292
+ numbers = parseFloats(data2);
322
293
  for (let j = 0, jl = numbers.length; j < jl; j++) {
323
294
  point.x += numbers[j];
324
295
  control.x = point.x;
325
296
  control.y = point.y;
326
297
  path.lineTo(point.x, point.y);
327
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
298
+ if (j === 0 && doSetFirstPoint === true)
299
+ firstPoint.copy(point);
328
300
  }
329
-
330
301
  break;
331
-
332
- case 'v':
333
- numbers = parseFloats(data);
334
-
302
+ case "v":
303
+ numbers = parseFloats(data2);
335
304
  for (let j = 0, jl = numbers.length; j < jl; j++) {
336
305
  point.y += numbers[j];
337
306
  control.x = point.x;
338
307
  control.y = point.y;
339
308
  path.lineTo(point.x, point.y);
340
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
309
+ if (j === 0 && doSetFirstPoint === true)
310
+ firstPoint.copy(point);
341
311
  }
342
-
343
312
  break;
344
-
345
- case 'l':
346
- numbers = parseFloats(data);
347
-
313
+ case "l":
314
+ numbers = parseFloats(data2);
348
315
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
349
316
  point.x += numbers[j + 0];
350
317
  point.y += numbers[j + 1];
351
318
  control.x = point.x;
352
319
  control.y = point.y;
353
320
  path.lineTo(point.x, point.y);
354
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
321
+ if (j === 0 && doSetFirstPoint === true)
322
+ firstPoint.copy(point);
355
323
  }
356
-
357
324
  break;
358
-
359
- case 'c':
360
- numbers = parseFloats(data);
361
-
325
+ case "c":
326
+ numbers = parseFloats(data2);
362
327
  for (let j = 0, jl = numbers.length; j < jl; j += 6) {
363
- path.bezierCurveTo(point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3], point.x + numbers[j + 4], point.y + numbers[j + 5]);
328
+ path.bezierCurveTo(
329
+ point.x + numbers[j + 0],
330
+ point.y + numbers[j + 1],
331
+ point.x + numbers[j + 2],
332
+ point.y + numbers[j + 3],
333
+ point.x + numbers[j + 4],
334
+ point.y + numbers[j + 5]
335
+ );
364
336
  control.x = point.x + numbers[j + 2];
365
337
  control.y = point.y + numbers[j + 3];
366
338
  point.x += numbers[j + 4];
367
339
  point.y += numbers[j + 5];
368
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
340
+ if (j === 0 && doSetFirstPoint === true)
341
+ firstPoint.copy(point);
369
342
  }
370
-
371
343
  break;
372
-
373
- case 's':
374
- numbers = parseFloats(data);
375
-
344
+ case "s":
345
+ numbers = parseFloats(data2);
376
346
  for (let j = 0, jl = numbers.length; j < jl; j += 4) {
377
- path.bezierCurveTo(getReflection(point.x, control.x), getReflection(point.y, control.y), point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3]);
347
+ path.bezierCurveTo(
348
+ getReflection(point.x, control.x),
349
+ getReflection(point.y, control.y),
350
+ point.x + numbers[j + 0],
351
+ point.y + numbers[j + 1],
352
+ point.x + numbers[j + 2],
353
+ point.y + numbers[j + 3]
354
+ );
378
355
  control.x = point.x + numbers[j + 0];
379
356
  control.y = point.y + numbers[j + 1];
380
357
  point.x += numbers[j + 2];
381
358
  point.y += numbers[j + 3];
382
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
359
+ if (j === 0 && doSetFirstPoint === true)
360
+ firstPoint.copy(point);
383
361
  }
384
-
385
362
  break;
386
-
387
- case 'q':
388
- numbers = parseFloats(data);
389
-
363
+ case "q":
364
+ numbers = parseFloats(data2);
390
365
  for (let j = 0, jl = numbers.length; j < jl; j += 4) {
391
- path.quadraticCurveTo(point.x + numbers[j + 0], point.y + numbers[j + 1], point.x + numbers[j + 2], point.y + numbers[j + 3]);
366
+ path.quadraticCurveTo(
367
+ point.x + numbers[j + 0],
368
+ point.y + numbers[j + 1],
369
+ point.x + numbers[j + 2],
370
+ point.y + numbers[j + 3]
371
+ );
392
372
  control.x = point.x + numbers[j + 0];
393
373
  control.y = point.y + numbers[j + 1];
394
374
  point.x += numbers[j + 2];
395
375
  point.y += numbers[j + 3];
396
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
376
+ if (j === 0 && doSetFirstPoint === true)
377
+ firstPoint.copy(point);
397
378
  }
398
-
399
379
  break;
400
-
401
- case 't':
402
- numbers = parseFloats(data);
403
-
380
+ case "t":
381
+ numbers = parseFloats(data2);
404
382
  for (let j = 0, jl = numbers.length; j < jl; j += 2) {
405
383
  const rx = getReflection(point.x, control.x);
406
384
  const ry = getReflection(point.y, control.y);
@@ -409,325 +387,257 @@ class SVGLoader extends Loader {
409
387
  control.y = ry;
410
388
  point.x = point.x + numbers[j + 0];
411
389
  point.y = point.y + numbers[j + 1];
412
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
390
+ if (j === 0 && doSetFirstPoint === true)
391
+ firstPoint.copy(point);
413
392
  }
414
-
415
393
  break;
416
-
417
- case 'a':
418
- numbers = parseFloats(data, [3, 4], 7);
419
-
394
+ case "a":
395
+ numbers = parseFloats(data2, [3, 4], 7);
420
396
  for (let j = 0, jl = numbers.length; j < jl; j += 7) {
421
- // skip command if no displacement
422
- if (numbers[j + 5] == 0 && numbers[j + 6] == 0) continue;
397
+ if (numbers[j + 5] == 0 && numbers[j + 6] == 0)
398
+ continue;
423
399
  const start = point.clone();
424
400
  point.x += numbers[j + 5];
425
401
  point.y += numbers[j + 6];
426
402
  control.x = point.x;
427
403
  control.y = point.y;
428
- parseArcCommand(path, numbers[j], numbers[j + 1], numbers[j + 2], numbers[j + 3], numbers[j + 4], start, point);
429
- if (j === 0 && doSetFirstPoint === true) firstPoint.copy(point);
404
+ parseArcCommand(
405
+ path,
406
+ numbers[j],
407
+ numbers[j + 1],
408
+ numbers[j + 2],
409
+ numbers[j + 3],
410
+ numbers[j + 4],
411
+ start,
412
+ point
413
+ );
414
+ if (j === 0 && doSetFirstPoint === true)
415
+ firstPoint.copy(point);
430
416
  }
431
-
432
417
  break;
433
-
434
- case 'Z':
435
- case 'z':
418
+ case "Z":
419
+ case "z":
436
420
  path.currentPath.autoClose = true;
437
-
438
421
  if (path.currentPath.curves.length > 0) {
439
- // Reset point to beginning of Path
440
422
  point.copy(firstPoint);
441
423
  path.currentPath.currentPoint.copy(point);
442
424
  isFirstPoint = true;
443
425
  }
444
-
445
426
  break;
446
-
447
427
  default:
448
428
  console.warn(command);
449
- } // console.log( type, parseFloats( data ), parseFloats( data ).length )
450
-
451
-
429
+ }
452
430
  doSetFirstPoint = false;
453
431
  }
454
-
455
432
  return path;
456
433
  }
457
-
458
434
  function parseCSSStylesheet(node) {
459
- if (!node.sheet || !node.sheet.cssRules || !node.sheet.cssRules.length) return;
460
-
435
+ if (!node.sheet || !node.sheet.cssRules || !node.sheet.cssRules.length)
436
+ return;
461
437
  for (let i = 0; i < node.sheet.cssRules.length; i++) {
462
438
  const stylesheet = node.sheet.cssRules[i];
463
- if (stylesheet.type !== 1) continue;
464
- const selectorList = stylesheet.selectorText.split(/,/gm).filter(Boolean).map(i => i.trim());
465
-
439
+ if (stylesheet.type !== 1)
440
+ continue;
441
+ const selectorList = stylesheet.selectorText.split(/,/gm).filter(Boolean).map((i2) => i2.trim());
466
442
  for (let j = 0; j < selectorList.length; j++) {
467
443
  stylesheets[selectorList[j]] = Object.assign(stylesheets[selectorList[j]] || {}, stylesheet.style);
468
444
  }
469
445
  }
470
446
  }
471
- /**
472
- * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
473
- * https://mortoray.com/2017/02/16/rendering-an-svg-elliptical-arc-as-bezier-curves/ Appendix: Endpoint to center arc conversion
474
- * From
475
- * rx ry x-axis-rotation large-arc-flag sweep-flag x y
476
- * To
477
- * aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation
478
- */
479
-
480
-
481
447
  function parseArcCommand(path, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, start, end) {
482
448
  if (rx == 0 || ry == 0) {
483
- // draw a line if either of the radii == 0
484
449
  path.lineTo(end.x, end.y);
485
450
  return;
486
451
  }
487
-
488
- x_axis_rotation = x_axis_rotation * Math.PI / 180; // Ensure radii are positive
489
-
452
+ x_axis_rotation = x_axis_rotation * Math.PI / 180;
490
453
  rx = Math.abs(rx);
491
- ry = Math.abs(ry); // Compute (x1', y1')
492
-
493
- const dx2 = (start.x - end.x) / 2.0;
494
- const dy2 = (start.y - end.y) / 2.0;
454
+ ry = Math.abs(ry);
455
+ const dx2 = (start.x - end.x) / 2;
456
+ const dy2 = (start.y - end.y) / 2;
495
457
  const x1p = Math.cos(x_axis_rotation) * dx2 + Math.sin(x_axis_rotation) * dy2;
496
- const y1p = -Math.sin(x_axis_rotation) * dx2 + Math.cos(x_axis_rotation) * dy2; // Compute (cx', cy')
497
-
458
+ const y1p = -Math.sin(x_axis_rotation) * dx2 + Math.cos(x_axis_rotation) * dy2;
498
459
  let rxs = rx * rx;
499
460
  let rys = ry * ry;
500
461
  const x1ps = x1p * x1p;
501
- const y1ps = y1p * y1p; // Ensure radii are large enough
502
-
462
+ const y1ps = y1p * y1p;
503
463
  const cr = x1ps / rxs + y1ps / rys;
504
-
505
464
  if (cr > 1) {
506
- // scale up rx,ry equally so cr == 1
507
465
  const s = Math.sqrt(cr);
508
466
  rx = s * rx;
509
467
  ry = s * ry;
510
468
  rxs = rx * rx;
511
469
  rys = ry * ry;
512
470
  }
513
-
514
471
  const dq = rxs * y1ps + rys * x1ps;
515
472
  const pq = (rxs * rys - dq) / dq;
516
473
  let q = Math.sqrt(Math.max(0, pq));
517
- if (large_arc_flag === sweep_flag) q = -q;
474
+ if (large_arc_flag === sweep_flag)
475
+ q = -q;
518
476
  const cxp = q * rx * y1p / ry;
519
- const cyp = -q * ry * x1p / rx; // Step 3: Compute (cx, cy) from (cx', cy')
520
-
477
+ const cyp = -q * ry * x1p / rx;
521
478
  const cx = Math.cos(x_axis_rotation) * cxp - Math.sin(x_axis_rotation) * cyp + (start.x + end.x) / 2;
522
- const cy = Math.sin(x_axis_rotation) * cxp + Math.cos(x_axis_rotation) * cyp + (start.y + end.y) / 2; // Step 4: Compute θ1 and Δθ
523
-
479
+ const cy = Math.sin(x_axis_rotation) * cxp + Math.cos(x_axis_rotation) * cyp + (start.y + end.y) / 2;
524
480
  const theta = svgAngle(1, 0, (x1p - cxp) / rx, (y1p - cyp) / ry);
525
481
  const delta = svgAngle((x1p - cxp) / rx, (y1p - cyp) / ry, (-x1p - cxp) / rx, (-y1p - cyp) / ry) % (Math.PI * 2);
526
482
  path.currentPath.absellipse(cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation);
527
483
  }
528
-
529
484
  function svgAngle(ux, uy, vx, vy) {
530
485
  const dot = ux * vx + uy * vy;
531
486
  const len = Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy);
532
- let ang = Math.acos(Math.max(-1, Math.min(1, dot / len))); // floating point precision, slightly over values appear
533
-
534
- if (ux * vy - uy * vx < 0) ang = -ang;
487
+ let ang = Math.acos(Math.max(-1, Math.min(1, dot / len)));
488
+ if (ux * vy - uy * vx < 0)
489
+ ang = -ang;
535
490
  return ang;
536
491
  }
537
- /*
538
- * According to https://www.w3.org/TR/SVG/shapes.html#RectElementRXAttribute
539
- * rounded corner should be rendered to elliptical arc, but bezier curve does the job well enough
540
- */
541
-
542
-
543
492
  function parseRectNode(node) {
544
- const x = parseFloatWithUnits(node.getAttribute('x') || 0);
545
- const y = parseFloatWithUnits(node.getAttribute('y') || 0);
546
- const rx = parseFloatWithUnits(node.getAttribute('rx') || node.getAttribute('ry') || 0);
547
- const ry = parseFloatWithUnits(node.getAttribute('ry') || node.getAttribute('rx') || 0);
548
- const w = parseFloatWithUnits(node.getAttribute('width'));
549
- const h = parseFloatWithUnits(node.getAttribute('height')); // Ellipse arc to Bezier approximation Coefficient (Inversed). See:
550
- // https://spencermortensen.com/articles/bezier-circle/
551
-
493
+ const x = parseFloatWithUnits(node.getAttribute("x") || 0);
494
+ const y = parseFloatWithUnits(node.getAttribute("y") || 0);
495
+ const rx = parseFloatWithUnits(node.getAttribute("rx") || node.getAttribute("ry") || 0);
496
+ const ry = parseFloatWithUnits(node.getAttribute("ry") || node.getAttribute("rx") || 0);
497
+ const w = parseFloatWithUnits(node.getAttribute("width"));
498
+ const h = parseFloatWithUnits(node.getAttribute("height"));
552
499
  const bci = 1 - 0.551915024494;
553
- const path = new ShapePath(); // top left
554
-
555
- path.moveTo(x + rx, y); // top right
556
-
500
+ const path = new THREE.ShapePath();
501
+ path.moveTo(x + rx, y);
557
502
  path.lineTo(x + w - rx, y);
558
-
559
503
  if (rx !== 0 || ry !== 0) {
560
504
  path.bezierCurveTo(x + w - rx * bci, y, x + w, y + ry * bci, x + w, y + ry);
561
- } // bottom right
562
-
563
-
505
+ }
564
506
  path.lineTo(x + w, y + h - ry);
565
-
566
507
  if (rx !== 0 || ry !== 0) {
567
508
  path.bezierCurveTo(x + w, y + h - ry * bci, x + w - rx * bci, y + h, x + w - rx, y + h);
568
- } // bottom left
569
-
570
-
509
+ }
571
510
  path.lineTo(x + rx, y + h);
572
-
573
511
  if (rx !== 0 || ry !== 0) {
574
512
  path.bezierCurveTo(x + rx * bci, y + h, x, y + h - ry * bci, x, y + h - ry);
575
- } // back to top left
576
-
577
-
513
+ }
578
514
  path.lineTo(x, y + ry);
579
-
580
515
  if (rx !== 0 || ry !== 0) {
581
516
  path.bezierCurveTo(x, y + ry * bci, x + rx * bci, y, x + rx, y);
582
517
  }
583
-
584
518
  return path;
585
519
  }
586
-
587
520
  function parsePolygonNode(node) {
588
521
  function iterator(match, a, b) {
589
522
  const x = parseFloatWithUnits(a);
590
523
  const y = parseFloatWithUnits(b);
591
-
592
524
  if (index === 0) {
593
525
  path.moveTo(x, y);
594
526
  } else {
595
527
  path.lineTo(x, y);
596
528
  }
597
-
598
529
  index++;
599
530
  }
600
-
601
531
  const regex = /(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g;
602
- const path = new ShapePath();
532
+ const path = new THREE.ShapePath();
603
533
  let index = 0;
604
- node.getAttribute('points').replace(regex, iterator);
534
+ node.getAttribute("points").replace(regex, iterator);
605
535
  path.currentPath.autoClose = true;
606
536
  return path;
607
537
  }
608
-
609
538
  function parsePolylineNode(node) {
610
539
  function iterator(match, a, b) {
611
540
  const x = parseFloatWithUnits(a);
612
541
  const y = parseFloatWithUnits(b);
613
-
614
542
  if (index === 0) {
615
543
  path.moveTo(x, y);
616
544
  } else {
617
545
  path.lineTo(x, y);
618
546
  }
619
-
620
547
  index++;
621
548
  }
622
-
623
549
  const regex = /(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g;
624
- const path = new ShapePath();
550
+ const path = new THREE.ShapePath();
625
551
  let index = 0;
626
- node.getAttribute('points').replace(regex, iterator);
552
+ node.getAttribute("points").replace(regex, iterator);
627
553
  path.currentPath.autoClose = false;
628
554
  return path;
629
555
  }
630
-
631
556
  function parseCircleNode(node) {
632
- const x = parseFloatWithUnits(node.getAttribute('cx') || 0);
633
- const y = parseFloatWithUnits(node.getAttribute('cy') || 0);
634
- const r = parseFloatWithUnits(node.getAttribute('r') || 0);
635
- const subpath = new Path();
557
+ const x = parseFloatWithUnits(node.getAttribute("cx") || 0);
558
+ const y = parseFloatWithUnits(node.getAttribute("cy") || 0);
559
+ const r = parseFloatWithUnits(node.getAttribute("r") || 0);
560
+ const subpath = new THREE.Path();
636
561
  subpath.absarc(x, y, r, 0, Math.PI * 2);
637
- const path = new ShapePath();
562
+ const path = new THREE.ShapePath();
638
563
  path.subPaths.push(subpath);
639
564
  return path;
640
565
  }
641
-
642
566
  function parseEllipseNode(node) {
643
- const x = parseFloatWithUnits(node.getAttribute('cx') || 0);
644
- const y = parseFloatWithUnits(node.getAttribute('cy') || 0);
645
- const rx = parseFloatWithUnits(node.getAttribute('rx') || 0);
646
- const ry = parseFloatWithUnits(node.getAttribute('ry') || 0);
647
- const subpath = new Path();
567
+ const x = parseFloatWithUnits(node.getAttribute("cx") || 0);
568
+ const y = parseFloatWithUnits(node.getAttribute("cy") || 0);
569
+ const rx = parseFloatWithUnits(node.getAttribute("rx") || 0);
570
+ const ry = parseFloatWithUnits(node.getAttribute("ry") || 0);
571
+ const subpath = new THREE.Path();
648
572
  subpath.absellipse(x, y, rx, ry, 0, Math.PI * 2);
649
- const path = new ShapePath();
573
+ const path = new THREE.ShapePath();
650
574
  path.subPaths.push(subpath);
651
575
  return path;
652
576
  }
653
-
654
577
  function parseLineNode(node) {
655
- const x1 = parseFloatWithUnits(node.getAttribute('x1') || 0);
656
- const y1 = parseFloatWithUnits(node.getAttribute('y1') || 0);
657
- const x2 = parseFloatWithUnits(node.getAttribute('x2') || 0);
658
- const y2 = parseFloatWithUnits(node.getAttribute('y2') || 0);
659
- const path = new ShapePath();
578
+ const x1 = parseFloatWithUnits(node.getAttribute("x1") || 0);
579
+ const y1 = parseFloatWithUnits(node.getAttribute("y1") || 0);
580
+ const x2 = parseFloatWithUnits(node.getAttribute("x2") || 0);
581
+ const y2 = parseFloatWithUnits(node.getAttribute("y2") || 0);
582
+ const path = new THREE.ShapePath();
660
583
  path.moveTo(x1, y1);
661
584
  path.lineTo(x2, y2);
662
585
  path.currentPath.autoClose = false;
663
586
  return path;
664
- } //
665
-
666
-
587
+ }
667
588
  function parseStyle(node, style) {
668
- style = Object.assign({}, style); // clone style
669
-
589
+ style = Object.assign({}, style);
670
590
  let stylesheetStyles = {};
671
-
672
- if (node.hasAttribute('class')) {
673
- const classSelectors = node.getAttribute('class').split(/\s/).filter(Boolean).map(i => i.trim());
674
-
591
+ if (node.hasAttribute("class")) {
592
+ const classSelectors = node.getAttribute("class").split(/\s/).filter(Boolean).map((i) => i.trim());
675
593
  for (let i = 0; i < classSelectors.length; i++) {
676
- stylesheetStyles = Object.assign(stylesheetStyles, stylesheets['.' + classSelectors[i]]);
594
+ stylesheetStyles = Object.assign(stylesheetStyles, stylesheets["." + classSelectors[i]]);
677
595
  }
678
596
  }
679
-
680
- if (node.hasAttribute('id')) {
681
- stylesheetStyles = Object.assign(stylesheetStyles, stylesheets['#' + node.getAttribute('id')]);
597
+ if (node.hasAttribute("id")) {
598
+ stylesheetStyles = Object.assign(stylesheetStyles, stylesheets["#" + node.getAttribute("id")]);
682
599
  }
683
-
684
600
  function addStyle(svgName, jsName, adjustFunction) {
685
- if (adjustFunction === undefined) {
601
+ if (adjustFunction === void 0) {
686
602
  adjustFunction = function copy(v) {
687
- if (v.startsWith('url')) console.warn('SVGLoader: url access in attributes is not implemented.');
603
+ if (v.startsWith("url"))
604
+ console.warn("SVGLoader: url access in attributes is not implemented.");
688
605
  return v;
689
606
  };
690
607
  }
691
-
692
- if (node.hasAttribute(svgName)) style[jsName] = adjustFunction(node.getAttribute(svgName));
693
- if (stylesheetStyles[svgName]) style[jsName] = adjustFunction(stylesheetStyles[svgName]);
694
- if (node.style && node.style[svgName] !== '') style[jsName] = adjustFunction(node.style[svgName]);
608
+ if (node.hasAttribute(svgName))
609
+ style[jsName] = adjustFunction(node.getAttribute(svgName));
610
+ if (stylesheetStyles[svgName])
611
+ style[jsName] = adjustFunction(stylesheetStyles[svgName]);
612
+ if (node.style && node.style[svgName] !== "")
613
+ style[jsName] = adjustFunction(node.style[svgName]);
695
614
  }
696
-
697
615
  function clamp(v) {
698
616
  return Math.max(0, Math.min(1, parseFloatWithUnits(v)));
699
617
  }
700
-
701
618
  function positive(v) {
702
619
  return Math.max(0, parseFloatWithUnits(v));
703
620
  }
704
-
705
- addStyle('fill', 'fill');
706
- addStyle('fill-opacity', 'fillOpacity', clamp);
707
- addStyle('fill-rule', 'fillRule');
708
- addStyle('opacity', 'opacity', clamp);
709
- addStyle('stroke', 'stroke');
710
- addStyle('stroke-opacity', 'strokeOpacity', clamp);
711
- addStyle('stroke-width', 'strokeWidth', positive);
712
- addStyle('stroke-linejoin', 'strokeLineJoin');
713
- addStyle('stroke-linecap', 'strokeLineCap');
714
- addStyle('stroke-miterlimit', 'strokeMiterLimit', positive);
715
- addStyle('visibility', 'visibility');
621
+ addStyle("fill", "fill");
622
+ addStyle("fill-opacity", "fillOpacity", clamp);
623
+ addStyle("fill-rule", "fillRule");
624
+ addStyle("opacity", "opacity", clamp);
625
+ addStyle("stroke", "stroke");
626
+ addStyle("stroke-opacity", "strokeOpacity", clamp);
627
+ addStyle("stroke-width", "strokeWidth", positive);
628
+ addStyle("stroke-linejoin", "strokeLineJoin");
629
+ addStyle("stroke-linecap", "strokeLineCap");
630
+ addStyle("stroke-miterlimit", "strokeMiterLimit", positive);
631
+ addStyle("visibility", "visibility");
716
632
  return style;
717
- } // http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
718
-
719
-
633
+ }
720
634
  function getReflection(a, b) {
721
635
  return a - (b - a);
722
- } // from https://github.com/ppvg/svg-numbers (MIT License)
723
-
724
-
636
+ }
725
637
  function parseFloats(input, flags, stride) {
726
- if (typeof input !== 'string') {
727
- throw new TypeError('Invalid input: ' + typeof input);
728
- } // Character groups
729
-
730
-
638
+ if (typeof input !== "string") {
639
+ throw new TypeError("Invalid input: " + typeof input);
640
+ }
731
641
  const RE = {
732
642
  SEPARATOR: /[ \t\r\n\,.\-+]/,
733
643
  WHITESPACE: /[ \t\r\n]/,
@@ -737,138 +647,107 @@ class SVGLoader extends Loader {
737
647
  COMMA: /,/,
738
648
  EXP: /e/i,
739
649
  FLAGS: /[01]/
740
- }; // States
741
-
650
+ };
742
651
  const SEP = 0;
743
652
  const INT = 1;
744
653
  const FLOAT = 2;
745
654
  const EXP = 3;
746
655
  let state = SEP;
747
656
  let seenComma = true;
748
- let number = '',
749
- exponent = '';
657
+ let number = "", exponent = "";
750
658
  const result = [];
751
-
752
- function throwSyntaxError(current, i, partial) {
753
- const error = new SyntaxError('Unexpected character "' + current + '" at index ' + i + '.');
659
+ function throwSyntaxError(current2, i, partial) {
660
+ const error = new SyntaxError('Unexpected character "' + current2 + '" at index ' + i + ".");
754
661
  error.partial = partial;
755
662
  throw error;
756
663
  }
757
-
758
664
  function newNumber() {
759
- if (number !== '') {
760
- if (exponent === '') result.push(Number(number));else result.push(Number(number) * Math.pow(10, Number(exponent)));
665
+ if (number !== "") {
666
+ if (exponent === "")
667
+ result.push(Number(number));
668
+ else
669
+ result.push(Number(number) * Math.pow(10, Number(exponent)));
761
670
  }
762
-
763
- number = '';
764
- exponent = '';
671
+ number = "";
672
+ exponent = "";
765
673
  }
766
-
767
674
  let current;
768
675
  const length = input.length;
769
-
770
676
  for (let i = 0; i < length; i++) {
771
- current = input[i]; // check for flags
772
-
677
+ current = input[i];
773
678
  if (Array.isArray(flags) && flags.includes(result.length % stride) && RE.FLAGS.test(current)) {
774
679
  state = INT;
775
680
  number = current;
776
681
  newNumber();
777
682
  continue;
778
- } // parse until next number
779
-
780
-
683
+ }
781
684
  if (state === SEP) {
782
- // eat whitespace
783
685
  if (RE.WHITESPACE.test(current)) {
784
686
  continue;
785
- } // start new number
786
-
787
-
687
+ }
788
688
  if (RE.DIGIT.test(current) || RE.SIGN.test(current)) {
789
689
  state = INT;
790
690
  number = current;
791
691
  continue;
792
692
  }
793
-
794
693
  if (RE.POINT.test(current)) {
795
694
  state = FLOAT;
796
695
  number = current;
797
696
  continue;
798
- } // throw on double commas (e.g. "1, , 2")
799
-
800
-
697
+ }
801
698
  if (RE.COMMA.test(current)) {
802
699
  if (seenComma) {
803
700
  throwSyntaxError(current, i, result);
804
701
  }
805
-
806
702
  seenComma = true;
807
703
  }
808
- } // parse integer part
809
-
810
-
704
+ }
811
705
  if (state === INT) {
812
706
  if (RE.DIGIT.test(current)) {
813
707
  number += current;
814
708
  continue;
815
709
  }
816
-
817
710
  if (RE.POINT.test(current)) {
818
711
  number += current;
819
712
  state = FLOAT;
820
713
  continue;
821
714
  }
822
-
823
715
  if (RE.EXP.test(current)) {
824
716
  state = EXP;
825
717
  continue;
826
- } // throw on double signs ("-+1"), but not on sign as separator ("-1-2")
827
-
828
-
718
+ }
829
719
  if (RE.SIGN.test(current) && number.length === 1 && RE.SIGN.test(number[0])) {
830
720
  throwSyntaxError(current, i, result);
831
721
  }
832
- } // parse decimal part
833
-
834
-
722
+ }
835
723
  if (state === FLOAT) {
836
724
  if (RE.DIGIT.test(current)) {
837
725
  number += current;
838
726
  continue;
839
727
  }
840
-
841
728
  if (RE.EXP.test(current)) {
842
729
  state = EXP;
843
730
  continue;
844
- } // throw on double decimal points (e.g. "1..2")
845
-
846
-
847
- if (RE.POINT.test(current) && number[number.length - 1] === '.') {
731
+ }
732
+ if (RE.POINT.test(current) && number[number.length - 1] === ".") {
848
733
  throwSyntaxError(current, i, result);
849
734
  }
850
- } // parse exponent part
851
-
852
-
735
+ }
853
736
  if (state === EXP) {
854
737
  if (RE.DIGIT.test(current)) {
855
738
  exponent += current;
856
739
  continue;
857
740
  }
858
-
859
741
  if (RE.SIGN.test(current)) {
860
- if (exponent === '') {
742
+ if (exponent === "") {
861
743
  exponent += current;
862
744
  continue;
863
745
  }
864
-
865
746
  if (exponent.length === 1 && RE.SIGN.test(exponent)) {
866
747
  throwSyntaxError(current, i, result);
867
748
  }
868
749
  }
869
- } // end of number
870
-
871
-
750
+ }
872
751
  if (RE.WHITESPACE.test(current)) {
873
752
  newNumber();
874
753
  state = SEP;
@@ -888,16 +767,11 @@ class SVGLoader extends Loader {
888
767
  } else {
889
768
  throwSyntaxError(current, i, result);
890
769
  }
891
- } // add the last number found (if any)
892
-
893
-
770
+ }
894
771
  newNumber();
895
772
  return result;
896
- } // Units
897
-
898
-
899
- const units = ['mm', 'cm', 'in', 'pt', 'pc', 'px']; // Conversion: [ fromUnit ][ toUnit ] (-1 means dpi dependent)
900
-
773
+ }
774
+ const units = ["mm", "cm", "in", "pt", "pc", "px"];
901
775
  const unitConversion = {
902
776
  mm: {
903
777
  mm: 1,
@@ -943,14 +817,11 @@ class SVGLoader extends Loader {
943
817
  px: 1
944
818
  }
945
819
  };
946
-
947
820
  function parseFloatWithUnits(string) {
948
- let theUnit = 'px';
949
-
950
- if (typeof string === 'string' || string instanceof String) {
821
+ let theUnit = "px";
822
+ if (typeof string === "string" || string instanceof String) {
951
823
  for (let i = 0, n = units.length; i < n; i++) {
952
824
  const u = units[i];
953
-
954
825
  if (string.endsWith(u)) {
955
826
  theUnit = u;
956
827
  string = string.substring(0, string.length - u.length);
@@ -958,164 +829,121 @@ class SVGLoader extends Loader {
958
829
  }
959
830
  }
960
831
  }
961
-
962
- let scale = undefined;
963
-
964
- if (theUnit === 'px' && scope.defaultUnit !== 'px') {
965
- // Conversion scale from pixels to inches, then to default units
966
- scale = unitConversion['in'][scope.defaultUnit] / scope.defaultDPI;
832
+ let scale = void 0;
833
+ if (theUnit === "px" && scope.defaultUnit !== "px") {
834
+ scale = unitConversion["in"][scope.defaultUnit] / scope.defaultDPI;
967
835
  } else {
968
836
  scale = unitConversion[theUnit][scope.defaultUnit];
969
-
970
837
  if (scale < 0) {
971
- // Conversion scale to pixels
972
- scale = unitConversion[theUnit]['in'] * scope.defaultDPI;
838
+ scale = unitConversion[theUnit]["in"] * scope.defaultDPI;
973
839
  }
974
840
  }
975
-
976
841
  return scale * parseFloat(string);
977
- } // Transforms
978
-
979
-
842
+ }
980
843
  function getNodeTransform(node) {
981
- if (!(node.hasAttribute('transform') || node.nodeName === 'use' && (node.hasAttribute('x') || node.hasAttribute('y')))) {
844
+ if (!(node.hasAttribute("transform") || node.nodeName === "use" && (node.hasAttribute("x") || node.hasAttribute("y")))) {
982
845
  return null;
983
846
  }
984
-
985
847
  const transform = parseNodeTransform(node);
986
-
987
848
  if (transformStack.length > 0) {
988
849
  transform.premultiply(transformStack[transformStack.length - 1]);
989
850
  }
990
-
991
851
  currentTransform.copy(transform);
992
852
  transformStack.push(transform);
993
853
  return transform;
994
854
  }
995
-
996
855
  function parseNodeTransform(node) {
997
- const transform = new Matrix3();
998
- const currentTransform = tempTransform0;
999
-
1000
- if (node.nodeName === 'use' && (node.hasAttribute('x') || node.hasAttribute('y'))) {
1001
- const tx = parseFloatWithUnits(node.getAttribute('x'));
1002
- const ty = parseFloatWithUnits(node.getAttribute('y'));
856
+ const transform = new THREE.Matrix3();
857
+ const currentTransform2 = tempTransform0;
858
+ if (node.nodeName === "use" && (node.hasAttribute("x") || node.hasAttribute("y"))) {
859
+ const tx = parseFloatWithUnits(node.getAttribute("x"));
860
+ const ty = parseFloatWithUnits(node.getAttribute("y"));
1003
861
  transform.translate(tx, ty);
1004
862
  }
1005
-
1006
- if (node.hasAttribute('transform')) {
1007
- const transformsTexts = node.getAttribute('transform').split(')');
1008
-
863
+ if (node.hasAttribute("transform")) {
864
+ const transformsTexts = node.getAttribute("transform").split(")");
1009
865
  for (let tIndex = transformsTexts.length - 1; tIndex >= 0; tIndex--) {
1010
866
  const transformText = transformsTexts[tIndex].trim();
1011
- if (transformText === '') continue;
1012
- const openParPos = transformText.indexOf('(');
867
+ if (transformText === "")
868
+ continue;
869
+ const openParPos = transformText.indexOf("(");
1013
870
  const closeParPos = transformText.length;
1014
-
1015
871
  if (openParPos > 0 && openParPos < closeParPos) {
1016
872
  const transformType = transformText.substr(0, openParPos);
1017
873
  const array = parseFloats(transformText.substr(openParPos + 1, closeParPos - openParPos - 1));
1018
- currentTransform.identity();
1019
-
874
+ currentTransform2.identity();
1020
875
  switch (transformType) {
1021
- case 'translate':
876
+ case "translate":
1022
877
  if (array.length >= 1) {
1023
878
  const tx = array[0];
1024
879
  let ty = tx;
1025
-
1026
880
  if (array.length >= 2) {
1027
881
  ty = array[1];
1028
882
  }
1029
-
1030
- currentTransform.translate(tx, ty);
883
+ currentTransform2.translate(tx, ty);
1031
884
  }
1032
-
1033
885
  break;
1034
-
1035
- case 'rotate':
886
+ case "rotate":
1036
887
  if (array.length >= 1) {
1037
888
  let angle = 0;
1038
889
  let cx = 0;
1039
- let cy = 0; // Angle
1040
-
890
+ let cy = 0;
1041
891
  angle = -array[0] * Math.PI / 180;
1042
-
1043
892
  if (array.length >= 3) {
1044
- // Center x, y
1045
893
  cx = array[1];
1046
894
  cy = array[2];
1047
- } // Rotate around center (cx, cy)
1048
-
1049
-
895
+ }
1050
896
  tempTransform1.identity().translate(-cx, -cy);
1051
897
  tempTransform2.identity().rotate(angle);
1052
898
  tempTransform3.multiplyMatrices(tempTransform2, tempTransform1);
1053
899
  tempTransform1.identity().translate(cx, cy);
1054
- currentTransform.multiplyMatrices(tempTransform1, tempTransform3);
900
+ currentTransform2.multiplyMatrices(tempTransform1, tempTransform3);
1055
901
  }
1056
-
1057
902
  break;
1058
-
1059
- case 'scale':
903
+ case "scale":
1060
904
  if (array.length >= 1) {
1061
905
  const scaleX = array[0];
1062
906
  let scaleY = scaleX;
1063
-
1064
907
  if (array.length >= 2) {
1065
908
  scaleY = array[1];
1066
909
  }
1067
-
1068
- currentTransform.scale(scaleX, scaleY);
910
+ currentTransform2.scale(scaleX, scaleY);
1069
911
  }
1070
-
1071
912
  break;
1072
-
1073
- case 'skewX':
913
+ case "skewX":
1074
914
  if (array.length === 1) {
1075
- currentTransform.set(1, Math.tan(array[0] * Math.PI / 180), 0, 0, 1, 0, 0, 0, 1);
915
+ currentTransform2.set(1, Math.tan(array[0] * Math.PI / 180), 0, 0, 1, 0, 0, 0, 1);
1076
916
  }
1077
-
1078
917
  break;
1079
-
1080
- case 'skewY':
918
+ case "skewY":
1081
919
  if (array.length === 1) {
1082
- currentTransform.set(1, 0, 0, Math.tan(array[0] * Math.PI / 180), 1, 0, 0, 0, 1);
920
+ currentTransform2.set(1, 0, 0, Math.tan(array[0] * Math.PI / 180), 1, 0, 0, 0, 1);
1083
921
  }
1084
-
1085
922
  break;
1086
-
1087
- case 'matrix':
923
+ case "matrix":
1088
924
  if (array.length === 6) {
1089
- currentTransform.set(array[0], array[2], array[4], array[1], array[3], array[5], 0, 0, 1);
925
+ currentTransform2.set(array[0], array[2], array[4], array[1], array[3], array[5], 0, 0, 1);
1090
926
  }
1091
-
1092
927
  break;
1093
928
  }
1094
929
  }
1095
-
1096
- transform.premultiply(currentTransform);
930
+ transform.premultiply(currentTransform2);
1097
931
  }
1098
932
  }
1099
-
1100
933
  return transform;
1101
934
  }
1102
-
1103
935
  function transformPath(path, m) {
1104
936
  function transfVec2(v2) {
1105
937
  tempV3.set(v2.x, v2.y, 1).applyMatrix3(m);
1106
938
  v2.set(tempV3.x, tempV3.y);
1107
939
  }
1108
-
1109
940
  const isRotated = isTransformRotated(m);
1110
941
  const subPaths = path.subPaths;
1111
-
1112
942
  for (let i = 0, n = subPaths.length; i < n; i++) {
1113
943
  const subPath = subPaths[i];
1114
944
  const curves = subPath.curves;
1115
-
1116
945
  for (let j = 0; j < curves.length; j++) {
1117
946
  const curve = curves[j];
1118
-
1119
947
  if (curve.isLineCurve) {
1120
948
  transfVec2(curve.v1);
1121
949
  transfVec2(curve.v2);
@@ -1130,9 +958,8 @@ class SVGLoader extends Loader {
1130
958
  transfVec2(curve.v2);
1131
959
  } else if (curve.isEllipseCurve) {
1132
960
  if (isRotated) {
1133
- console.warn('SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.');
961
+ console.warn("SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.");
1134
962
  }
1135
-
1136
963
  tempV2.set(curve.aX, curve.aY);
1137
964
  transfVec2(tempV2);
1138
965
  curve.aX = tempV2.x;
@@ -1143,54 +970,41 @@ class SVGLoader extends Loader {
1143
970
  }
1144
971
  }
1145
972
  }
1146
-
1147
973
  function isTransformRotated(m) {
1148
974
  return m.elements[1] !== 0 || m.elements[3] !== 0;
1149
975
  }
1150
-
1151
976
  function getTransformScaleX(m) {
1152
977
  const te = m.elements;
1153
978
  return Math.sqrt(te[0] * te[0] + te[1] * te[1]);
1154
979
  }
1155
-
1156
980
  function getTransformScaleY(m) {
1157
981
  const te = m.elements;
1158
982
  return Math.sqrt(te[3] * te[3] + te[4] * te[4]);
1159
- } //
1160
-
1161
-
983
+ }
1162
984
  const paths = [];
1163
985
  const stylesheets = {};
1164
986
  const transformStack = [];
1165
- const tempTransform0 = new Matrix3();
1166
- const tempTransform1 = new Matrix3();
1167
- const tempTransform2 = new Matrix3();
1168
- const tempTransform3 = new Matrix3();
1169
- const tempV2 = new Vector2();
1170
- const tempV3 = new Vector3();
1171
- const currentTransform = new Matrix3();
1172
- const xml = new DOMParser().parseFromString(text, 'image/svg+xml'); // application/xml
1173
-
987
+ const tempTransform0 = new THREE.Matrix3();
988
+ const tempTransform1 = new THREE.Matrix3();
989
+ const tempTransform2 = new THREE.Matrix3();
990
+ const tempTransform3 = new THREE.Matrix3();
991
+ const tempV2 = new THREE.Vector2();
992
+ const tempV3 = new THREE.Vector3();
993
+ const currentTransform = new THREE.Matrix3();
994
+ const xml = new DOMParser().parseFromString(text, "image/svg+xml");
1174
995
  parseNode(xml.documentElement, {
1175
- fill: '#000',
996
+ fill: "#000",
1176
997
  fillOpacity: 1,
1177
998
  strokeOpacity: 1,
1178
999
  strokeWidth: 1,
1179
- strokeLineJoin: 'miter',
1180
- strokeLineCap: 'butt',
1000
+ strokeLineJoin: "miter",
1001
+ strokeLineCap: "butt",
1181
1002
  strokeMiterLimit: 4
1182
1003
  });
1183
- const data = {
1184
- paths: paths,
1185
- xml: xml.documentElement
1186
- }; // console.log( paths );
1187
-
1004
+ const data = { paths, xml: xml.documentElement };
1188
1005
  return data;
1189
1006
  }
1190
-
1191
1007
  static createShapes(shapePath) {
1192
- // Param shapePath: a shapepath as returned by the parse function of this class
1193
- // Returns Shape object
1194
1008
  const BIGNUMBER = 999999999;
1195
1009
  const IntersectionLocationType = {
1196
1010
  ORIGIN: 0,
@@ -1205,7 +1019,6 @@ class SVGLoader extends Loader {
1205
1019
  loc: IntersectionLocationType.ORIGIN,
1206
1020
  t: 0
1207
1021
  };
1208
-
1209
1022
  function findEdgeIntersection(a0, a1, b0, b1) {
1210
1023
  const x1 = a0.x;
1211
1024
  const x2 = a1.x;
@@ -1220,150 +1033,104 @@ class SVGLoader extends Loader {
1220
1033
  const denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);
1221
1034
  const t1 = nom1 / denom;
1222
1035
  const t2 = nom2 / denom;
1223
-
1224
1036
  if (denom === 0 && nom1 !== 0 || t1 <= 0 || t1 >= 1 || t2 < 0 || t2 > 1) {
1225
- //1. lines are parallel or edges don't intersect
1226
1037
  return null;
1227
1038
  } else if (nom1 === 0 && denom === 0) {
1228
- //2. lines are colinear
1229
- //check if endpoints of edge2 (b0-b1) lies on edge1 (a0-a1)
1230
1039
  for (let i = 0; i < 2; i++) {
1231
- classifyPoint(i === 0 ? b0 : b1, a0, a1); //find position of this endpoints relatively to edge1
1232
-
1040
+ classifyPoint(i === 0 ? b0 : b1, a0, a1);
1233
1041
  if (classifyResult.loc == IntersectionLocationType.ORIGIN) {
1234
1042
  const point = i === 0 ? b0 : b1;
1235
- return {
1236
- x: point.x,
1237
- y: point.y,
1238
- t: classifyResult.t
1239
- };
1043
+ return { x: point.x, y: point.y, t: classifyResult.t };
1240
1044
  } else if (classifyResult.loc == IntersectionLocationType.BETWEEN) {
1241
1045
  const x = +(x1 + classifyResult.t * (x2 - x1)).toPrecision(10);
1242
1046
  const y = +(y1 + classifyResult.t * (y2 - y1)).toPrecision(10);
1243
- return {
1244
- x: x,
1245
- y: y,
1246
- t: classifyResult.t
1247
- };
1047
+ return { x, y, t: classifyResult.t };
1248
1048
  }
1249
1049
  }
1250
-
1251
1050
  return null;
1252
1051
  } else {
1253
- //3. edges intersect
1254
1052
  for (let i = 0; i < 2; i++) {
1255
1053
  classifyPoint(i === 0 ? b0 : b1, a0, a1);
1256
-
1257
1054
  if (classifyResult.loc == IntersectionLocationType.ORIGIN) {
1258
1055
  const point = i === 0 ? b0 : b1;
1259
- return {
1260
- x: point.x,
1261
- y: point.y,
1262
- t: classifyResult.t
1263
- };
1056
+ return { x: point.x, y: point.y, t: classifyResult.t };
1264
1057
  }
1265
1058
  }
1266
-
1267
1059
  const x = +(x1 + t1 * (x2 - x1)).toPrecision(10);
1268
1060
  const y = +(y1 + t1 * (y2 - y1)).toPrecision(10);
1269
- return {
1270
- x: x,
1271
- y: y,
1272
- t: t1
1273
- };
1061
+ return { x, y, t: t1 };
1274
1062
  }
1275
1063
  }
1276
-
1277
1064
  function classifyPoint(p, edgeStart, edgeEnd) {
1278
1065
  const ax = edgeEnd.x - edgeStart.x;
1279
1066
  const ay = edgeEnd.y - edgeStart.y;
1280
1067
  const bx = p.x - edgeStart.x;
1281
1068
  const by = p.y - edgeStart.y;
1282
1069
  const sa = ax * by - bx * ay;
1283
-
1284
1070
  if (p.x === edgeStart.x && p.y === edgeStart.y) {
1285
1071
  classifyResult.loc = IntersectionLocationType.ORIGIN;
1286
1072
  classifyResult.t = 0;
1287
1073
  return;
1288
1074
  }
1289
-
1290
1075
  if (p.x === edgeEnd.x && p.y === edgeEnd.y) {
1291
1076
  classifyResult.loc = IntersectionLocationType.DESTINATION;
1292
1077
  classifyResult.t = 1;
1293
1078
  return;
1294
1079
  }
1295
-
1296
1080
  if (sa < -Number.EPSILON) {
1297
1081
  classifyResult.loc = IntersectionLocationType.LEFT;
1298
1082
  return;
1299
1083
  }
1300
-
1301
1084
  if (sa > Number.EPSILON) {
1302
1085
  classifyResult.loc = IntersectionLocationType.RIGHT;
1303
1086
  return;
1304
1087
  }
1305
-
1306
1088
  if (ax * bx < 0 || ay * by < 0) {
1307
1089
  classifyResult.loc = IntersectionLocationType.BEHIND;
1308
1090
  return;
1309
1091
  }
1310
-
1311
1092
  if (Math.sqrt(ax * ax + ay * ay) < Math.sqrt(bx * bx + by * by)) {
1312
1093
  classifyResult.loc = IntersectionLocationType.BEYOND;
1313
1094
  return;
1314
1095
  }
1315
-
1316
1096
  let t;
1317
-
1318
1097
  if (ax !== 0) {
1319
1098
  t = bx / ax;
1320
1099
  } else {
1321
1100
  t = by / ay;
1322
1101
  }
1323
-
1324
1102
  classifyResult.loc = IntersectionLocationType.BETWEEN;
1325
1103
  classifyResult.t = t;
1326
1104
  }
1327
-
1328
1105
  function getIntersections(path1, path2) {
1329
1106
  const intersectionsRaw = [];
1330
1107
  const intersections = [];
1331
-
1332
1108
  for (let index = 1; index < path1.length; index++) {
1333
1109
  const path1EdgeStart = path1[index - 1];
1334
1110
  const path1EdgeEnd = path1[index];
1335
-
1336
1111
  for (let index2 = 1; index2 < path2.length; index2++) {
1337
1112
  const path2EdgeStart = path2[index2 - 1];
1338
1113
  const path2EdgeEnd = path2[index2];
1339
1114
  const intersection = findEdgeIntersection(path1EdgeStart, path1EdgeEnd, path2EdgeStart, path2EdgeEnd);
1340
-
1341
- if (intersection !== null && intersectionsRaw.find(i => i.t <= intersection.t + Number.EPSILON && i.t >= intersection.t - Number.EPSILON) === undefined) {
1115
+ if (intersection !== null && intersectionsRaw.find(
1116
+ (i) => i.t <= intersection.t + Number.EPSILON && i.t >= intersection.t - Number.EPSILON
1117
+ ) === void 0) {
1342
1118
  intersectionsRaw.push(intersection);
1343
- intersections.push(new Vector2(intersection.x, intersection.y));
1119
+ intersections.push(new THREE.Vector2(intersection.x, intersection.y));
1344
1120
  }
1345
1121
  }
1346
1122
  }
1347
-
1348
1123
  return intersections;
1349
1124
  }
1350
-
1351
1125
  function getScanlineIntersections(scanline, boundingBox, paths) {
1352
- const center = new Vector2();
1126
+ const center = new THREE.Vector2();
1353
1127
  boundingBox.getCenter(center);
1354
1128
  const allIntersections = [];
1355
- paths.forEach(path => {
1356
- // check if the center of the bounding box is in the bounding box of the paths.
1357
- // this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
1358
- // if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
1129
+ paths.forEach((path) => {
1359
1130
  if (path.boundingBox.containsPoint(center)) {
1360
1131
  const intersections = getIntersections(scanline, path.points);
1361
- intersections.forEach(p => {
1362
- allIntersections.push({
1363
- identifier: path.identifier,
1364
- isCW: path.isCW,
1365
- point: p
1366
- });
1132
+ intersections.forEach((p) => {
1133
+ allIntersections.push({ identifier: path.identifier, isCW: path.isCW, point: p });
1367
1134
  });
1368
1135
  }
1369
1136
  });
@@ -1372,148 +1139,114 @@ class SVGLoader extends Loader {
1372
1139
  });
1373
1140
  return allIntersections;
1374
1141
  }
1375
-
1376
- function isHoleTo(simplePath, allPaths, scanlineMinX, scanlineMaxX, _fillRule) {
1377
- if (_fillRule === null || _fillRule === undefined || _fillRule === '') {
1378
- _fillRule = 'nonzero';
1142
+ function isHoleTo(simplePath, allPaths, scanlineMinX2, scanlineMaxX2, _fillRule) {
1143
+ if (_fillRule === null || _fillRule === void 0 || _fillRule === "") {
1144
+ _fillRule = "nonzero";
1379
1145
  }
1380
-
1381
- const centerBoundingBox = new Vector2();
1146
+ const centerBoundingBox = new THREE.Vector2();
1382
1147
  simplePath.boundingBox.getCenter(centerBoundingBox);
1383
- const scanline = [new Vector2(scanlineMinX, centerBoundingBox.y), new Vector2(scanlineMaxX, centerBoundingBox.y)];
1148
+ const scanline = [new THREE.Vector2(scanlineMinX2, centerBoundingBox.y), new THREE.Vector2(scanlineMaxX2, centerBoundingBox.y)];
1384
1149
  const scanlineIntersections = getScanlineIntersections(scanline, simplePath.boundingBox, allPaths);
1385
1150
  scanlineIntersections.sort((i1, i2) => {
1386
1151
  return i1.point.x - i2.point.x;
1387
1152
  });
1388
1153
  const baseIntersections = [];
1389
1154
  const otherIntersections = [];
1390
- scanlineIntersections.forEach(i => {
1391
- if (i.identifier === simplePath.identifier) {
1392
- baseIntersections.push(i);
1155
+ scanlineIntersections.forEach((i2) => {
1156
+ if (i2.identifier === simplePath.identifier) {
1157
+ baseIntersections.push(i2);
1393
1158
  } else {
1394
- otherIntersections.push(i);
1159
+ otherIntersections.push(i2);
1395
1160
  }
1396
1161
  });
1397
- const firstXOfPath = baseIntersections[0].point.x; // build up the path hierarchy
1398
-
1162
+ const firstXOfPath = baseIntersections[0].point.x;
1399
1163
  const stack = [];
1400
1164
  let i = 0;
1401
-
1402
1165
  while (i < otherIntersections.length && otherIntersections[i].point.x < firstXOfPath) {
1403
1166
  if (stack.length > 0 && stack[stack.length - 1] === otherIntersections[i].identifier) {
1404
1167
  stack.pop();
1405
1168
  } else {
1406
1169
  stack.push(otherIntersections[i].identifier);
1407
1170
  }
1408
-
1409
1171
  i++;
1410
1172
  }
1411
-
1412
1173
  stack.push(simplePath.identifier);
1413
-
1414
- if (_fillRule === 'evenodd') {
1174
+ if (_fillRule === "evenodd") {
1415
1175
  const isHole = stack.length % 2 === 0 ? true : false;
1416
1176
  const isHoleFor = stack[stack.length - 2];
1417
- return {
1418
- identifier: simplePath.identifier,
1419
- isHole: isHole,
1420
- for: isHoleFor
1421
- };
1422
- } else if (_fillRule === 'nonzero') {
1423
- // check if path is a hole by counting the amount of paths with alternating rotations it has to cross.
1177
+ return { identifier: simplePath.identifier, isHole, for: isHoleFor };
1178
+ } else if (_fillRule === "nonzero") {
1424
1179
  let isHole = true;
1425
1180
  let isHoleFor = null;
1426
1181
  let lastCWValue = null;
1427
-
1428
- for (let i = 0; i < stack.length; i++) {
1429
- const identifier = stack[i];
1430
-
1182
+ for (let i2 = 0; i2 < stack.length; i2++) {
1183
+ const identifier2 = stack[i2];
1431
1184
  if (isHole) {
1432
- lastCWValue = allPaths[identifier].isCW;
1185
+ lastCWValue = allPaths[identifier2].isCW;
1433
1186
  isHole = false;
1434
- isHoleFor = identifier;
1435
- } else if (lastCWValue !== allPaths[identifier].isCW) {
1436
- lastCWValue = allPaths[identifier].isCW;
1187
+ isHoleFor = identifier2;
1188
+ } else if (lastCWValue !== allPaths[identifier2].isCW) {
1189
+ lastCWValue = allPaths[identifier2].isCW;
1437
1190
  isHole = true;
1438
1191
  }
1439
1192
  }
1440
-
1441
- return {
1442
- identifier: simplePath.identifier,
1443
- isHole: isHole,
1444
- for: isHoleFor
1445
- };
1193
+ return { identifier: simplePath.identifier, isHole, for: isHoleFor };
1446
1194
  } else {
1447
1195
  console.warn('fill-rule: "' + _fillRule + '" is currently not implemented.');
1448
1196
  }
1449
- } // check for self intersecting paths
1450
- // TODO
1451
- // check intersecting paths
1452
- // TODO
1453
- // prepare paths for hole detection
1454
-
1455
-
1197
+ }
1456
1198
  let identifier = 0;
1457
1199
  let scanlineMinX = BIGNUMBER;
1458
1200
  let scanlineMaxX = -BIGNUMBER;
1459
- let simplePaths = shapePath.subPaths.map(p => {
1201
+ let simplePaths = shapePath.subPaths.map((p) => {
1460
1202
  const points = p.getPoints();
1461
1203
  let maxY = -BIGNUMBER;
1462
1204
  let minY = BIGNUMBER;
1463
1205
  let maxX = -BIGNUMBER;
1464
- let minX = BIGNUMBER; //points.forEach(p => p.y *= -1);
1465
-
1206
+ let minX = BIGNUMBER;
1466
1207
  for (let i = 0; i < points.length; i++) {
1467
- const p = points[i];
1468
-
1469
- if (p.y > maxY) {
1470
- maxY = p.y;
1208
+ const p2 = points[i];
1209
+ if (p2.y > maxY) {
1210
+ maxY = p2.y;
1471
1211
  }
1472
-
1473
- if (p.y < minY) {
1474
- minY = p.y;
1212
+ if (p2.y < minY) {
1213
+ minY = p2.y;
1475
1214
  }
1476
-
1477
- if (p.x > maxX) {
1478
- maxX = p.x;
1215
+ if (p2.x > maxX) {
1216
+ maxX = p2.x;
1479
1217
  }
1480
-
1481
- if (p.x < minX) {
1482
- minX = p.x;
1218
+ if (p2.x < minX) {
1219
+ minX = p2.x;
1483
1220
  }
1484
- } //
1485
-
1486
-
1221
+ }
1487
1222
  if (scanlineMaxX <= maxX) {
1488
1223
  scanlineMaxX = maxX + 1;
1489
1224
  }
1490
-
1491
1225
  if (scanlineMinX >= minX) {
1492
1226
  scanlineMinX = minX - 1;
1493
1227
  }
1494
-
1495
1228
  return {
1496
1229
  curves: p.curves,
1497
- points: points,
1498
- isCW: ShapeUtils.isClockWise(points),
1230
+ points,
1231
+ isCW: THREE.ShapeUtils.isClockWise(points),
1499
1232
  identifier: identifier++,
1500
- boundingBox: new Box2(new Vector2(minX, minY), new Vector2(maxX, maxY))
1233
+ boundingBox: new THREE.Box2(new THREE.Vector2(minX, minY), new THREE.Vector2(maxX, maxY))
1501
1234
  };
1502
1235
  });
1503
- simplePaths = simplePaths.filter(sp => sp.points.length > 1); // check if path is solid or a hole
1504
-
1505
- const isAHole = simplePaths.map(p => isHoleTo(p, simplePaths, scanlineMinX, scanlineMaxX, shapePath.userData.style.fillRule));
1236
+ simplePaths = simplePaths.filter((sp) => sp.points.length > 1);
1237
+ const isAHole = simplePaths.map(
1238
+ (p) => isHoleTo(p, simplePaths, scanlineMinX, scanlineMaxX, shapePath.userData.style.fillRule)
1239
+ );
1506
1240
  const shapesToReturn = [];
1507
- simplePaths.forEach(p => {
1241
+ simplePaths.forEach((p) => {
1508
1242
  const amIAHole = isAHole[p.identifier];
1509
-
1510
1243
  if (!amIAHole.isHole) {
1511
- const shape = new Shape();
1244
+ const shape = new THREE.Shape();
1512
1245
  shape.curves = p.curves;
1513
- const holes = isAHole.filter(h => h.isHole && h.for === p.identifier);
1514
- holes.forEach(h => {
1246
+ const holes = isAHole.filter((h) => h.isHole && h.for === p.identifier);
1247
+ holes.forEach((h) => {
1515
1248
  const hole = simplePaths[h.identifier];
1516
- const path = new Path();
1249
+ const path = new THREE.Path();
1517
1250
  path.curves = hole.curves;
1518
1251
  shape.holes.push(path);
1519
1252
  });
@@ -1522,19 +1255,12 @@ class SVGLoader extends Loader {
1522
1255
  });
1523
1256
  return shapesToReturn;
1524
1257
  }
1525
-
1526
1258
  static getStrokeStyle(width, color, lineJoin, lineCap, miterLimit) {
1527
- // Param width: Stroke width
1528
- // Param color: As returned by THREE.Color.getStyle()
1529
- // Param lineJoin: One of "round", "bevel", "miter" or "miter-limit"
1530
- // Param lineCap: One of "round", "square" or "butt"
1531
- // Param miterLimit: Maximum join length, in multiples of the "width" parameter (join is truncated if it exceeds that distance)
1532
- // Returns style object
1533
- width = width !== undefined ? width : 1;
1534
- color = color !== undefined ? color : '#000';
1535
- lineJoin = lineJoin !== undefined ? lineJoin : 'miter';
1536
- lineCap = lineCap !== undefined ? lineCap : 'butt';
1537
- miterLimit = miterLimit !== undefined ? miterLimit : 4;
1259
+ width = width !== void 0 ? width : 1;
1260
+ color = color !== void 0 ? color : "#000";
1261
+ lineJoin = lineJoin !== void 0 ? lineJoin : "miter";
1262
+ lineCap = lineCap !== void 0 ? lineCap : "butt";
1263
+ miterLimit = miterLimit !== void 0 ? miterLimit : 4;
1538
1264
  return {
1539
1265
  strokeColor: color,
1540
1266
  strokeWidth: width,
@@ -1543,98 +1269,74 @@ class SVGLoader extends Loader {
1543
1269
  strokeMiterLimit: miterLimit
1544
1270
  };
1545
1271
  }
1546
-
1547
1272
  static pointsToStroke(points, style, arcDivisions, minDistance) {
1548
- // Generates a stroke with some witdh around the given path.
1549
- // The path can be open or closed (last point equals to first point)
1550
- // Param points: Array of Vector2D (the path). Minimum 2 points.
1551
- // Param style: Object with SVG properties as returned by SVGLoader.getStrokeStyle(), or SVGLoader.parse() in the path.userData.style object
1552
- // Params arcDivisions: Arc divisions for round joins and endcaps. (Optional)
1553
- // Param minDistance: Points closer to this distance will be merged. (Optional)
1554
- // Returns BufferGeometry with stroke triangles (In plane z = 0). UV coordinates are generated ('u' along path. 'v' across it, from left to right)
1555
1273
  const vertices = [];
1556
1274
  const normals = [];
1557
1275
  const uvs = [];
1558
-
1559
1276
  if (SVGLoader.pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs) === 0) {
1560
1277
  return null;
1561
1278
  }
1562
-
1563
- const geometry = new BufferGeometry();
1564
- geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
1565
- geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
1566
- geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
1279
+ const geometry = new THREE.BufferGeometry();
1280
+ geometry.setAttribute("position", new THREE.Float32BufferAttribute(vertices, 3));
1281
+ geometry.setAttribute("normal", new THREE.Float32BufferAttribute(normals, 3));
1282
+ geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uvs, 2));
1567
1283
  return geometry;
1568
1284
  }
1569
-
1570
1285
  static pointsToStrokeWithBuffers(points, style, arcDivisions, minDistance, vertices, normals, uvs, vertexOffset) {
1571
- // This function can be called to update existing arrays or buffers.
1572
- // Accepts same parameters as pointsToStroke, plus the buffers and optional offset.
1573
- // Param vertexOffset: Offset vertices to start writing in the buffers (3 elements/vertex for vertices and normals, and 2 elements/vertex for uvs)
1574
- // Returns number of written vertices / normals / uvs pairs
1575
- // if 'vertices' parameter is undefined no triangles will be generated, but the returned vertices count will still be valid (useful to preallocate the buffers)
1576
- // 'normals' and 'uvs' buffers are optional
1577
- const tempV2_1 = new Vector2();
1578
- const tempV2_2 = new Vector2();
1579
- const tempV2_3 = new Vector2();
1580
- const tempV2_4 = new Vector2();
1581
- const tempV2_5 = new Vector2();
1582
- const tempV2_6 = new Vector2();
1583
- const tempV2_7 = new Vector2();
1584
- const lastPointL = new Vector2();
1585
- const lastPointR = new Vector2();
1586
- const point0L = new Vector2();
1587
- const point0R = new Vector2();
1588
- const currentPointL = new Vector2();
1589
- const currentPointR = new Vector2();
1590
- const nextPointL = new Vector2();
1591
- const nextPointR = new Vector2();
1592
- const innerPoint = new Vector2();
1593
- const outerPoint = new Vector2();
1594
- arcDivisions = arcDivisions !== undefined ? arcDivisions : 12;
1595
- minDistance = minDistance !== undefined ? minDistance : 0.001;
1596
- vertexOffset = vertexOffset !== undefined ? vertexOffset : 0; // First ensure there are no duplicated points
1597
-
1286
+ const tempV2_1 = new THREE.Vector2();
1287
+ const tempV2_2 = new THREE.Vector2();
1288
+ const tempV2_3 = new THREE.Vector2();
1289
+ const tempV2_4 = new THREE.Vector2();
1290
+ const tempV2_5 = new THREE.Vector2();
1291
+ const tempV2_6 = new THREE.Vector2();
1292
+ const tempV2_7 = new THREE.Vector2();
1293
+ const lastPointL = new THREE.Vector2();
1294
+ const lastPointR = new THREE.Vector2();
1295
+ const point0L = new THREE.Vector2();
1296
+ const point0R = new THREE.Vector2();
1297
+ const currentPointL = new THREE.Vector2();
1298
+ const currentPointR = new THREE.Vector2();
1299
+ const nextPointL = new THREE.Vector2();
1300
+ const nextPointR = new THREE.Vector2();
1301
+ const innerPoint = new THREE.Vector2();
1302
+ const outerPoint = new THREE.Vector2();
1303
+ arcDivisions = arcDivisions !== void 0 ? arcDivisions : 12;
1304
+ minDistance = minDistance !== void 0 ? minDistance : 1e-3;
1305
+ vertexOffset = vertexOffset !== void 0 ? vertexOffset : 0;
1598
1306
  points = removeDuplicatedPoints(points);
1599
1307
  const numPoints = points.length;
1600
- if (numPoints < 2) return 0;
1308
+ if (numPoints < 2)
1309
+ return 0;
1601
1310
  const isClosed = points[0].equals(points[numPoints - 1]);
1602
1311
  let currentPoint;
1603
1312
  let previousPoint = points[0];
1604
1313
  let nextPoint;
1605
1314
  const strokeWidth2 = style.strokeWidth / 2;
1606
1315
  const deltaU = 1 / (numPoints - 1);
1607
- let u0 = 0,
1608
- u1;
1316
+ let u0 = 0, u1;
1609
1317
  let innerSideModified;
1610
1318
  let joinIsOnLeftSide;
1611
1319
  let isMiter;
1612
1320
  let initialJoinIsOnLeftSide = false;
1613
1321
  let numVertices = 0;
1614
1322
  let currentCoordinate = vertexOffset * 3;
1615
- let currentCoordinateUV = vertexOffset * 2; // Get initial left and right stroke points
1616
-
1323
+ let currentCoordinateUV = vertexOffset * 2;
1617
1324
  getNormal(points[0], points[1], tempV2_1).multiplyScalar(strokeWidth2);
1618
1325
  lastPointL.copy(points[0]).sub(tempV2_1);
1619
1326
  lastPointR.copy(points[0]).add(tempV2_1);
1620
1327
  point0L.copy(lastPointL);
1621
1328
  point0R.copy(lastPointR);
1622
-
1623
1329
  for (let iPoint = 1; iPoint < numPoints; iPoint++) {
1624
- currentPoint = points[iPoint]; // Get next point
1625
-
1330
+ currentPoint = points[iPoint];
1626
1331
  if (iPoint === numPoints - 1) {
1627
1332
  if (isClosed) {
1628
- // Skip duplicated initial point
1629
1333
  nextPoint = points[1];
1630
1334
  } else {
1631
- nextPoint = undefined;
1335
+ nextPoint = void 0;
1632
1336
  }
1633
1337
  } else {
1634
1338
  nextPoint = points[iPoint + 1];
1635
- } // Normal of previous segment in tempV2_1
1636
-
1637
-
1339
+ }
1638
1340
  const normal1 = tempV2_1;
1639
1341
  getNormal(previousPoint, currentPoint, normal1);
1640
1342
  tempV2_3.copy(normal1).multiplyScalar(strokeWidth2);
@@ -1642,27 +1344,22 @@ class SVGLoader extends Loader {
1642
1344
  currentPointR.copy(currentPoint).add(tempV2_3);
1643
1345
  u1 = u0 + deltaU;
1644
1346
  innerSideModified = false;
1645
-
1646
- if (nextPoint !== undefined) {
1647
- // Normal of next segment in tempV2_2
1347
+ if (nextPoint !== void 0) {
1648
1348
  getNormal(currentPoint, nextPoint, tempV2_2);
1649
1349
  tempV2_3.copy(tempV2_2).multiplyScalar(strokeWidth2);
1650
1350
  nextPointL.copy(currentPoint).sub(tempV2_3);
1651
1351
  nextPointR.copy(currentPoint).add(tempV2_3);
1652
1352
  joinIsOnLeftSide = true;
1653
1353
  tempV2_3.subVectors(nextPoint, previousPoint);
1654
-
1655
1354
  if (normal1.dot(tempV2_3) < 0) {
1656
1355
  joinIsOnLeftSide = false;
1657
1356
  }
1658
-
1659
- if (iPoint === 1) initialJoinIsOnLeftSide = joinIsOnLeftSide;
1357
+ if (iPoint === 1)
1358
+ initialJoinIsOnLeftSide = joinIsOnLeftSide;
1660
1359
  tempV2_3.subVectors(nextPoint, currentPoint);
1661
1360
  tempV2_3.normalize();
1662
- const dot = Math.abs(normal1.dot(tempV2_3)); // If path is straight, don't create join
1663
-
1361
+ const dot = Math.abs(normal1.dot(tempV2_3));
1664
1362
  if (dot !== 0) {
1665
- // Compute inner and outer segment intersections
1666
1363
  const miterSide = strokeWidth2 / dot;
1667
1364
  tempV2_3.multiplyScalar(-miterSide);
1668
1365
  tempV2_4.subVectors(currentPoint, previousPoint);
@@ -1673,16 +1370,13 @@ class SVGLoader extends Loader {
1673
1370
  tempV2_4.divideScalar(segmentLengthPrev);
1674
1371
  tempV2_6.subVectors(nextPoint, currentPoint);
1675
1372
  const segmentLengthNext = tempV2_6.length();
1676
- tempV2_6.divideScalar(segmentLengthNext); // Check that previous and next segments doesn't overlap with the innerPoint of intersection
1677
-
1373
+ tempV2_6.divideScalar(segmentLengthNext);
1678
1374
  if (tempV2_4.dot(innerPoint) < segmentLengthPrev && tempV2_6.dot(innerPoint) < segmentLengthNext) {
1679
1375
  innerSideModified = true;
1680
1376
  }
1681
-
1682
1377
  outerPoint.copy(tempV2_5).add(currentPoint);
1683
1378
  innerPoint.add(currentPoint);
1684
1379
  isMiter = false;
1685
-
1686
1380
  if (innerSideModified) {
1687
1381
  if (joinIsOnLeftSide) {
1688
1382
  nextPointR.copy(innerPoint);
@@ -1692,41 +1386,30 @@ class SVGLoader extends Loader {
1692
1386
  currentPointL.copy(innerPoint);
1693
1387
  }
1694
1388
  } else {
1695
- // The segment triangles are generated here if there was overlapping
1696
1389
  makeSegmentTriangles();
1697
1390
  }
1698
-
1699
1391
  switch (style.strokeLineJoin) {
1700
- case 'bevel':
1392
+ case "bevel":
1701
1393
  makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1);
1702
1394
  break;
1703
-
1704
- case 'round':
1705
- // Segment triangles
1706
- createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); // Join triangles
1707
-
1395
+ case "round":
1396
+ createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified);
1708
1397
  if (joinIsOnLeftSide) {
1709
1398
  makeCircularSector(currentPoint, currentPointL, nextPointL, u1, 0);
1710
1399
  } else {
1711
1400
  makeCircularSector(currentPoint, nextPointR, currentPointR, u1, 1);
1712
1401
  }
1713
-
1714
1402
  break;
1715
-
1716
- case 'miter':
1717
- case 'miter-clip':
1403
+ case "miter":
1404
+ case "miter-clip":
1718
1405
  default:
1719
1406
  const miterFraction = strokeWidth2 * style.strokeMiterLimit / miterLength2;
1720
-
1721
1407
  if (miterFraction < 1) {
1722
- // The join miter length exceeds the miter limit
1723
- if (style.strokeLineJoin !== 'miter-clip') {
1408
+ if (style.strokeLineJoin !== "miter-clip") {
1724
1409
  makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u1);
1725
1410
  break;
1726
1411
  } else {
1727
- // Segment triangles
1728
- createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified); // Miter-clip join triangles
1729
-
1412
+ createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified);
1730
1413
  if (joinIsOnLeftSide) {
1731
1414
  tempV2_6.subVectors(outerPoint, currentPointL).multiplyScalar(miterFraction).add(currentPointL);
1732
1415
  tempV2_7.subVectors(outerPoint, nextPointL).multiplyScalar(miterFraction).add(nextPointL);
@@ -1754,9 +1437,7 @@ class SVGLoader extends Loader {
1754
1437
  }
1755
1438
  }
1756
1439
  } else {
1757
- // Miter join segment triangles
1758
1440
  if (innerSideModified) {
1759
- // Optimized segment + join triangles
1760
1441
  if (joinIsOnLeftSide) {
1761
1442
  addVertex(lastPointR, u0, 1);
1762
1443
  addVertex(lastPointL, u0, 0);
@@ -1772,14 +1453,12 @@ class SVGLoader extends Loader {
1772
1453
  addVertex(innerPoint, u1, 0);
1773
1454
  addVertex(outerPoint, u1, 1);
1774
1455
  }
1775
-
1776
1456
  if (joinIsOnLeftSide) {
1777
1457
  nextPointL.copy(outerPoint);
1778
1458
  } else {
1779
1459
  nextPointR.copy(outerPoint);
1780
1460
  }
1781
1461
  } else {
1782
- // Add extra miter join triangles
1783
1462
  if (joinIsOnLeftSide) {
1784
1463
  addVertex(currentPointL, u1, 0);
1785
1464
  addVertex(outerPoint, u1, 0);
@@ -1796,51 +1475,37 @@ class SVGLoader extends Loader {
1796
1475
  addVertex(nextPointR, u1, 1);
1797
1476
  }
1798
1477
  }
1799
-
1800
1478
  isMiter = true;
1801
1479
  }
1802
-
1803
1480
  break;
1804
1481
  }
1805
1482
  } else {
1806
- // The segment triangles are generated here when two consecutive points are collinear
1807
1483
  makeSegmentTriangles();
1808
1484
  }
1809
1485
  } else {
1810
- // The segment triangles are generated here if it is the ending segment
1811
1486
  makeSegmentTriangles();
1812
1487
  }
1813
-
1814
1488
  if (!isClosed && iPoint === numPoints - 1) {
1815
- // Start line endcap
1816
1489
  addCapGeometry(points[0], point0L, point0R, joinIsOnLeftSide, true, u0);
1817
- } // Increment loop variables
1818
-
1819
-
1490
+ }
1820
1491
  u0 = u1;
1821
1492
  previousPoint = currentPoint;
1822
1493
  lastPointL.copy(nextPointL);
1823
1494
  lastPointR.copy(nextPointR);
1824
1495
  }
1825
-
1826
1496
  if (!isClosed) {
1827
- // Ending line endcap
1828
1497
  addCapGeometry(currentPoint, currentPointL, currentPointR, joinIsOnLeftSide, false, u1);
1829
1498
  } else if (innerSideModified && vertices) {
1830
- // Modify path first segment vertices to adjust to the segments inner and outer intersections
1831
1499
  let lastOuter = outerPoint;
1832
1500
  let lastInner = innerPoint;
1833
-
1834
1501
  if (initialJoinIsOnLeftSide !== joinIsOnLeftSide) {
1835
1502
  lastOuter = innerPoint;
1836
1503
  lastInner = outerPoint;
1837
1504
  }
1838
-
1839
1505
  if (joinIsOnLeftSide) {
1840
1506
  if (isMiter || initialJoinIsOnLeftSide) {
1841
1507
  lastInner.toArray(vertices, 0 * 3);
1842
1508
  lastInner.toArray(vertices, 3 * 3);
1843
-
1844
1509
  if (isMiter) {
1845
1510
  lastOuter.toArray(vertices, 1 * 3);
1846
1511
  }
@@ -1849,57 +1514,45 @@ class SVGLoader extends Loader {
1849
1514
  if (isMiter || !initialJoinIsOnLeftSide) {
1850
1515
  lastInner.toArray(vertices, 1 * 3);
1851
1516
  lastInner.toArray(vertices, 3 * 3);
1852
-
1853
1517
  if (isMiter) {
1854
1518
  lastOuter.toArray(vertices, 0 * 3);
1855
1519
  }
1856
1520
  }
1857
1521
  }
1858
1522
  }
1859
-
1860
- return numVertices; // -- End of algorithm
1861
- // -- Functions
1862
-
1523
+ return numVertices;
1863
1524
  function getNormal(p1, p2, result) {
1864
1525
  result.subVectors(p2, p1);
1865
1526
  return result.set(-result.y, result.x).normalize();
1866
1527
  }
1867
-
1868
1528
  function addVertex(position, u, v) {
1869
1529
  if (vertices) {
1870
1530
  vertices[currentCoordinate] = position.x;
1871
1531
  vertices[currentCoordinate + 1] = position.y;
1872
1532
  vertices[currentCoordinate + 2] = 0;
1873
-
1874
1533
  if (normals) {
1875
1534
  normals[currentCoordinate] = 0;
1876
1535
  normals[currentCoordinate + 1] = 0;
1877
1536
  normals[currentCoordinate + 2] = 1;
1878
1537
  }
1879
-
1880
1538
  currentCoordinate += 3;
1881
-
1882
1539
  if (uvs) {
1883
1540
  uvs[currentCoordinateUV] = u;
1884
1541
  uvs[currentCoordinateUV + 1] = v;
1885
1542
  currentCoordinateUV += 2;
1886
1543
  }
1887
1544
  }
1888
-
1889
1545
  numVertices += 3;
1890
1546
  }
1891
-
1892
1547
  function makeCircularSector(center, p1, p2, u, v) {
1893
- // param p1, p2: Points in the circle arc.
1894
- // p1 and p2 are in clockwise direction.
1895
1548
  tempV2_1.copy(p1).sub(center).normalize();
1896
1549
  tempV2_2.copy(p2).sub(center).normalize();
1897
1550
  let angle = Math.PI;
1898
1551
  const dot = tempV2_1.dot(tempV2_2);
1899
- if (Math.abs(dot) < 1) angle = Math.abs(Math.acos(dot));
1552
+ if (Math.abs(dot) < 1)
1553
+ angle = Math.abs(Math.acos(dot));
1900
1554
  angle /= arcDivisions;
1901
1555
  tempV2_3.copy(p1);
1902
-
1903
1556
  for (let i = 0, il = arcDivisions - 1; i < il; i++) {
1904
1557
  tempV2_4.copy(tempV2_3).rotateAround(center, angle);
1905
1558
  addVertex(tempV2_3, u, v);
@@ -1907,12 +1560,10 @@ class SVGLoader extends Loader {
1907
1560
  addVertex(center, u, 0.5);
1908
1561
  tempV2_3.copy(tempV2_4);
1909
1562
  }
1910
-
1911
1563
  addVertex(tempV2_4, u, v);
1912
1564
  addVertex(p2, u, v);
1913
1565
  addVertex(center, u, 0.5);
1914
1566
  }
1915
-
1916
1567
  function makeSegmentTriangles() {
1917
1568
  addVertex(lastPointR, u0, 1);
1918
1569
  addVertex(lastPointL, u0, 0);
@@ -1921,38 +1572,31 @@ class SVGLoader extends Loader {
1921
1572
  addVertex(currentPointL, u1, 1);
1922
1573
  addVertex(currentPointR, u1, 0);
1923
1574
  }
1924
-
1925
- function makeSegmentWithBevelJoin(joinIsOnLeftSide, innerSideModified, u) {
1926
- if (innerSideModified) {
1927
- // Optimized segment + bevel triangles
1928
- if (joinIsOnLeftSide) {
1929
- // Path segments triangles
1575
+ function makeSegmentWithBevelJoin(joinIsOnLeftSide2, innerSideModified2, u) {
1576
+ if (innerSideModified2) {
1577
+ if (joinIsOnLeftSide2) {
1930
1578
  addVertex(lastPointR, u0, 1);
1931
1579
  addVertex(lastPointL, u0, 0);
1932
1580
  addVertex(currentPointL, u1, 0);
1933
1581
  addVertex(lastPointR, u0, 1);
1934
1582
  addVertex(currentPointL, u1, 0);
1935
- addVertex(innerPoint, u1, 1); // Bevel join triangle
1936
-
1583
+ addVertex(innerPoint, u1, 1);
1937
1584
  addVertex(currentPointL, u, 0);
1938
1585
  addVertex(nextPointL, u, 0);
1939
1586
  addVertex(innerPoint, u, 0.5);
1940
1587
  } else {
1941
- // Path segments triangles
1942
1588
  addVertex(lastPointR, u0, 1);
1943
1589
  addVertex(lastPointL, u0, 0);
1944
1590
  addVertex(currentPointR, u1, 1);
1945
1591
  addVertex(lastPointL, u0, 0);
1946
1592
  addVertex(innerPoint, u1, 0);
1947
- addVertex(currentPointR, u1, 1); // Bevel join triangle
1948
-
1593
+ addVertex(currentPointR, u1, 1);
1949
1594
  addVertex(currentPointR, u, 1);
1950
1595
  addVertex(nextPointR, u, 0);
1951
1596
  addVertex(innerPoint, u, 0.5);
1952
1597
  }
1953
1598
  } else {
1954
- // Bevel join triangle. The segment triangles are done in the main loop
1955
- if (joinIsOnLeftSide) {
1599
+ if (joinIsOnLeftSide2) {
1956
1600
  addVertex(currentPointL, u, 0);
1957
1601
  addVertex(nextPointL, u, 0);
1958
1602
  addVertex(currentPoint, u, 0.5);
@@ -1963,10 +1607,9 @@ class SVGLoader extends Loader {
1963
1607
  }
1964
1608
  }
1965
1609
  }
1966
-
1967
- function createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide, innerSideModified) {
1968
- if (innerSideModified) {
1969
- if (joinIsOnLeftSide) {
1610
+ function createSegmentTrianglesWithMiddleSection(joinIsOnLeftSide2, innerSideModified2) {
1611
+ if (innerSideModified2) {
1612
+ if (joinIsOnLeftSide2) {
1970
1613
  addVertex(lastPointR, u0, 1);
1971
1614
  addVertex(lastPointL, u0, 0);
1972
1615
  addVertex(currentPointL, u1, 0);
@@ -1995,28 +1638,22 @@ class SVGLoader extends Loader {
1995
1638
  }
1996
1639
  }
1997
1640
  }
1998
-
1999
- function addCapGeometry(center, p1, p2, joinIsOnLeftSide, start, u) {
2000
- // param center: End point of the path
2001
- // param p1, p2: Left and right cap points
1641
+ function addCapGeometry(center, p1, p2, joinIsOnLeftSide2, start, u) {
2002
1642
  switch (style.strokeLineCap) {
2003
- case 'round':
1643
+ case "round":
2004
1644
  if (start) {
2005
1645
  makeCircularSector(center, p2, p1, u, 0.5);
2006
1646
  } else {
2007
1647
  makeCircularSector(center, p1, p2, u, 0.5);
2008
1648
  }
2009
-
2010
1649
  break;
2011
-
2012
- case 'square':
1650
+ case "square":
2013
1651
  if (start) {
2014
1652
  tempV2_1.subVectors(p1, center);
2015
1653
  tempV2_2.set(tempV2_1.y, -tempV2_1.x);
2016
1654
  tempV2_3.addVectors(tempV2_1, tempV2_2).add(center);
2017
- tempV2_4.subVectors(tempV2_2, tempV2_1).add(center); // Modify already existing vertices
2018
-
2019
- if (joinIsOnLeftSide) {
1655
+ tempV2_4.subVectors(tempV2_2, tempV2_1).add(center);
1656
+ if (joinIsOnLeftSide2) {
2020
1657
  tempV2_3.toArray(vertices, 1 * 3);
2021
1658
  tempV2_4.toArray(vertices, 0 * 3);
2022
1659
  tempV2_4.toArray(vertices, 3 * 3);
@@ -2030,9 +1667,8 @@ class SVGLoader extends Loader {
2030
1667
  tempV2_2.set(tempV2_1.y, -tempV2_1.x);
2031
1668
  tempV2_3.addVectors(tempV2_1, tempV2_2).add(center);
2032
1669
  tempV2_4.subVectors(tempV2_2, tempV2_1).add(center);
2033
- const vl = vertices.length; // Modify already existing vertices
2034
-
2035
- if (joinIsOnLeftSide) {
1670
+ const vl = vertices.length;
1671
+ if (joinIsOnLeftSide2) {
2036
1672
  tempV2_3.toArray(vertices, vl - 1 * 3);
2037
1673
  tempV2_4.toArray(vertices, vl - 2 * 3);
2038
1674
  tempV2_4.toArray(vertices, vl - 4 * 3);
@@ -2042,38 +1678,32 @@ class SVGLoader extends Loader {
2042
1678
  tempV2_4.toArray(vertices, vl - 4 * 3);
2043
1679
  }
2044
1680
  }
2045
-
1681
+ break;
1682
+ case "butt":
1683
+ default:
2046
1684
  break;
2047
1685
  }
2048
1686
  }
2049
-
2050
- function removeDuplicatedPoints(points) {
2051
- // Creates a new array if necessary with duplicated points removed.
2052
- // This does not remove duplicated initial and ending points of a closed path.
1687
+ function removeDuplicatedPoints(points2) {
2053
1688
  let dupPoints = false;
2054
-
2055
- for (let i = 1, n = points.length - 1; i < n; i++) {
2056
- if (points[i].distanceTo(points[i + 1]) < minDistance) {
1689
+ for (let i = 1, n = points2.length - 1; i < n; i++) {
1690
+ if (points2[i].distanceTo(points2[i + 1]) < minDistance) {
2057
1691
  dupPoints = true;
2058
1692
  break;
2059
1693
  }
2060
1694
  }
2061
-
2062
- if (!dupPoints) return points;
1695
+ if (!dupPoints)
1696
+ return points2;
2063
1697
  const newPoints = [];
2064
- newPoints.push(points[0]);
2065
-
2066
- for (let i = 1, n = points.length - 1; i < n; i++) {
2067
- if (points[i].distanceTo(points[i + 1]) >= minDistance) {
2068
- newPoints.push(points[i]);
1698
+ newPoints.push(points2[0]);
1699
+ for (let i = 1, n = points2.length - 1; i < n; i++) {
1700
+ if (points2[i].distanceTo(points2[i + 1]) >= minDistance) {
1701
+ newPoints.push(points2[i]);
2069
1702
  }
2070
1703
  }
2071
-
2072
- newPoints.push(points[points.length - 1]);
1704
+ newPoints.push(points2[points2.length - 1]);
2073
1705
  return newPoints;
2074
1706
  }
2075
1707
  }
2076
-
2077
1708
  }
2078
-
2079
- export { SVGLoader };
1709
+ exports.SVGLoader = SVGLoader;