three-stdlib 2.15.0 → 2.15.2

Sign up to get free protection for your applications and to get access to all the features.
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;