@playdrop/playdrop-cli 0.3.1-build.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1315) hide show
  1. package/README.md +24 -0
  2. package/bin/playdrop +3 -0
  3. package/bin/playdrop-cli +2 -0
  4. package/config/client-meta.json +45 -0
  5. package/dist/apiClient.d.ts +9 -0
  6. package/dist/apiClient.js +21 -0
  7. package/dist/apps/build.d.ts +24 -0
  8. package/dist/apps/build.js +561 -0
  9. package/dist/apps/index.d.ts +15 -0
  10. package/dist/apps/index.js +23 -0
  11. package/dist/apps/upload.d.ts +19 -0
  12. package/dist/apps/upload.js +114 -0
  13. package/dist/apps/validate.d.ts +3 -0
  14. package/dist/apps/validate.js +75 -0
  15. package/dist/catalogue-utils.d.ts +24 -0
  16. package/dist/catalogue-utils.js +121 -0
  17. package/dist/catalogue.d.ts +262 -0
  18. package/dist/catalogue.js +1289 -0
  19. package/dist/clientInfo.d.ts +6 -0
  20. package/dist/clientInfo.js +51 -0
  21. package/dist/commandContext.d.ts +15 -0
  22. package/dist/commandContext.js +40 -0
  23. package/dist/commands/asset-packs.d.ts +27 -0
  24. package/dist/commands/asset-packs.js +508 -0
  25. package/dist/commands/assets.d.ts +35 -0
  26. package/dist/commands/assets.js +668 -0
  27. package/dist/commands/build.d.ts +1 -0
  28. package/dist/commands/build.js +56 -0
  29. package/dist/commands/capture.d.ts +11 -0
  30. package/dist/commands/capture.js +681 -0
  31. package/dist/commands/create.d.ts +6 -0
  32. package/dist/commands/create.js +1174 -0
  33. package/dist/commands/detail.d.ts +5 -0
  34. package/dist/commands/detail.js +320 -0
  35. package/dist/commands/dev.d.ts +1 -0
  36. package/dist/commands/dev.js +281 -0
  37. package/dist/commands/devServer.d.ts +18 -0
  38. package/dist/commands/devServer.js +122 -0
  39. package/dist/commands/devShared.d.ts +24 -0
  40. package/dist/commands/devShared.js +213 -0
  41. package/dist/commands/documentation.d.ts +1 -0
  42. package/dist/commands/documentation.js +152 -0
  43. package/dist/commands/feedback.d.ts +16 -0
  44. package/dist/commands/feedback.js +323 -0
  45. package/dist/commands/format.d.ts +1 -0
  46. package/dist/commands/format.js +65 -0
  47. package/dist/commands/generation.d.ts +33 -0
  48. package/dist/commands/generation.js +509 -0
  49. package/dist/commands/init.d.ts +13 -0
  50. package/dist/commands/init.js +300 -0
  51. package/dist/commands/list.d.ts +7 -0
  52. package/dist/commands/list.js +347 -0
  53. package/dist/commands/login.d.ts +10 -0
  54. package/dist/commands/login.js +117 -0
  55. package/dist/commands/logout.d.ts +1 -0
  56. package/dist/commands/logout.js +8 -0
  57. package/dist/commands/migrateCatalogueV2.d.ts +1 -0
  58. package/dist/commands/migrateCatalogueV2.js +142 -0
  59. package/dist/commands/upgrade.d.ts +1 -0
  60. package/dist/commands/upgrade.js +28 -0
  61. package/dist/commands/upload.d.ts +4 -0
  62. package/dist/commands/upload.js +651 -0
  63. package/dist/commands/validate.d.ts +1 -0
  64. package/dist/commands/validate.js +53 -0
  65. package/dist/commands/versions.d.ts +17 -0
  66. package/dist/commands/versions.js +384 -0
  67. package/dist/commands/whoami.d.ts +1 -0
  68. package/dist/commands/whoami.js +72 -0
  69. package/dist/config.d.ts +10 -0
  70. package/dist/config.js +41 -0
  71. package/dist/environment.d.ts +11 -0
  72. package/dist/environment.js +66 -0
  73. package/dist/http.d.ts +6 -0
  74. package/dist/http.js +49 -0
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.js +700 -0
  77. package/dist/messages.d.ts +12 -0
  78. package/dist/messages.js +65 -0
  79. package/dist/playwright.d.ts +10 -0
  80. package/dist/playwright.js +100 -0
  81. package/dist/proxyFetch.d.ts +14 -0
  82. package/dist/proxyFetch.js +203 -0
  83. package/dist/taskSelection.d.ts +16 -0
  84. package/dist/taskSelection.js +205 -0
  85. package/dist/taskUtils.d.ts +4 -0
  86. package/dist/taskUtils.js +35 -0
  87. package/dist/uploadLog.d.ts +15 -0
  88. package/dist/uploadLog.js +118 -0
  89. package/node_modules/@playdrop/ai-client/dist/index.d.ts +377 -0
  90. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -0
  91. package/node_modules/@playdrop/ai-client/dist/index.js +318 -0
  92. package/node_modules/@playdrop/ai-client/package.json +21 -0
  93. package/node_modules/@playdrop/api-client/dist/client.d.ts +299 -0
  94. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -0
  95. package/node_modules/@playdrop/api-client/dist/client.js +1908 -0
  96. package/node_modules/@playdrop/api-client/dist/index.d.ts +177 -0
  97. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -0
  98. package/node_modules/@playdrop/api-client/dist/index.js +329 -0
  99. package/node_modules/@playdrop/api-client/package.json +32 -0
  100. package/node_modules/@playdrop/config/client-meta.json +45 -0
  101. package/node_modules/@playdrop/config/dist/src/constants.d.ts +9 -0
  102. package/node_modules/@playdrop/config/dist/src/constants.d.ts.map +1 -0
  103. package/node_modules/@playdrop/config/dist/src/constants.js +10 -0
  104. package/node_modules/@playdrop/config/dist/src/index.d.ts +13 -0
  105. package/node_modules/@playdrop/config/dist/src/index.d.ts.map +1 -0
  106. package/node_modules/@playdrop/config/dist/src/index.js +197 -0
  107. package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts +12 -0
  108. package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts.map +1 -0
  109. package/node_modules/@playdrop/config/dist/src/server/fastify.js +103 -0
  110. package/node_modules/@playdrop/config/dist/src/types.d.ts +59 -0
  111. package/node_modules/@playdrop/config/dist/src/types.d.ts.map +1 -0
  112. package/node_modules/@playdrop/config/dist/src/types.js +2 -0
  113. package/node_modules/@playdrop/config/dist/test/validateClientEnvironment.test.d.ts +2 -0
  114. package/node_modules/@playdrop/config/dist/test/validateClientEnvironment.test.d.ts.map +1 -0
  115. package/node_modules/@playdrop/config/dist/test/validateClientEnvironment.test.js +63 -0
  116. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -0
  117. package/node_modules/@playdrop/config/package.json +19 -0
  118. package/node_modules/@playdrop/entity-core/dist/src/entity-cleaner.d.ts +13 -0
  119. package/node_modules/@playdrop/entity-core/dist/src/entity-cleaner.js +146 -0
  120. package/node_modules/@playdrop/entity-core/dist/src/entity-cleaner.js.map +1 -0
  121. package/node_modules/@playdrop/entity-core/dist/src/entity-utils.d.ts +47 -0
  122. package/node_modules/@playdrop/entity-core/dist/src/entity-utils.js +328 -0
  123. package/node_modules/@playdrop/entity-core/dist/src/entity-utils.js.map +1 -0
  124. package/node_modules/@playdrop/entity-core/dist/src/format-utils.d.ts +3 -0
  125. package/node_modules/@playdrop/entity-core/dist/src/format-utils.js +38 -0
  126. package/node_modules/@playdrop/entity-core/dist/src/format-utils.js.map +1 -0
  127. package/node_modules/@playdrop/entity-core/dist/src/humanoid/geometry.d.ts +23 -0
  128. package/node_modules/@playdrop/entity-core/dist/src/humanoid/geometry.js +11 -0
  129. package/node_modules/@playdrop/entity-core/dist/src/humanoid/geometry.js.map +1 -0
  130. package/node_modules/@playdrop/entity-core/dist/src/humanoid/index.d.ts +4 -0
  131. package/node_modules/@playdrop/entity-core/dist/src/humanoid/index.js +21 -0
  132. package/node_modules/@playdrop/entity-core/dist/src/humanoid/index.js.map +1 -0
  133. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/common.d.ts +4 -0
  134. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/common.js +24 -0
  135. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/common.js.map +1 -0
  136. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/index.d.ts +3 -0
  137. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/index.js +20 -0
  138. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/index.js.map +1 -0
  139. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/textured-builder.d.ts +3 -0
  140. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/textured-builder.js +431 -0
  141. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/textured-builder.js.map +1 -0
  142. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/types.d.ts +6 -0
  143. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/types.js +3 -0
  144. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/types.js.map +1 -0
  145. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/voxel-builder.d.ts +3 -0
  146. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/voxel-builder.js +396 -0
  147. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r15/voxel-builder.js.map +1 -0
  148. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/builder.d.ts +12 -0
  149. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/builder.js +199 -0
  150. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/builder.js.map +1 -0
  151. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/index.d.ts +4 -0
  152. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/index.js +18 -0
  153. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/index.js.map +1 -0
  154. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/scanner.d.ts +43 -0
  155. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/scanner.js +142 -0
  156. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/scanner.js.map +1 -0
  157. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/artifacts.d.ts +26 -0
  158. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/artifacts.js +65 -0
  159. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/artifacts.js.map +1 -0
  160. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/face-map.d.ts +33 -0
  161. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/face-map.js +175 -0
  162. package/node_modules/@playdrop/entity-core/dist/src/humanoid/r6/textures/face-map.js.map +1 -0
  163. package/node_modules/@playdrop/entity-core/dist/src/humanoid/templates/humanoid_r15.json +1517 -0
  164. package/node_modules/@playdrop/entity-core/dist/src/humanoid/templates/humanoid_r6.json +61 -0
  165. package/node_modules/@playdrop/entity-core/dist/src/humanoid/templates/index.d.ts +10 -0
  166. package/node_modules/@playdrop/entity-core/dist/src/humanoid/templates/index.js +23 -0
  167. package/node_modules/@playdrop/entity-core/dist/src/humanoid/templates/index.js.map +1 -0
  168. package/node_modules/@playdrop/entity-core/dist/src/index.d.ts +19 -0
  169. package/node_modules/@playdrop/entity-core/dist/src/index.js +36 -0
  170. package/node_modules/@playdrop/entity-core/dist/src/index.js.map +1 -0
  171. package/node_modules/@playdrop/entity-core/dist/src/materials.d.ts +26 -0
  172. package/node_modules/@playdrop/entity-core/dist/src/materials.js +188 -0
  173. package/node_modules/@playdrop/entity-core/dist/src/materials.js.map +1 -0
  174. package/node_modules/@playdrop/entity-core/dist/src/palette_tools.d.ts +68 -0
  175. package/node_modules/@playdrop/entity-core/dist/src/palette_tools.js +491 -0
  176. package/node_modules/@playdrop/entity-core/dist/src/palette_tools.js.map +1 -0
  177. package/node_modules/@playdrop/entity-core/dist/src/serialization.d.ts +4 -0
  178. package/node_modules/@playdrop/entity-core/dist/src/serialization.js +382 -0
  179. package/node_modules/@playdrop/entity-core/dist/src/serialization.js.map +1 -0
  180. package/node_modules/@playdrop/entity-core/dist/src/textures.d.ts +29 -0
  181. package/node_modules/@playdrop/entity-core/dist/src/textures.js +214 -0
  182. package/node_modules/@playdrop/entity-core/dist/src/textures.js.map +1 -0
  183. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/infer-face.d.ts +9 -0
  184. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/infer-face.js +316 -0
  185. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/infer-face.js.map +1 -0
  186. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/layer-mode.d.ts +9 -0
  187. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/layer-mode.js +153 -0
  188. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/layer-mode.js.map +1 -0
  189. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/merge-overlay.d.ts +2 -0
  190. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/merge-overlay.js +121 -0
  191. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/merge-overlay.js.map +1 -0
  192. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/slice.d.ts +20 -0
  193. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/slice.js +398 -0
  194. package/node_modules/@playdrop/entity-core/dist/src/transforms/textured-boxes/slice.js.map +1 -0
  195. package/node_modules/@playdrop/entity-core/dist/src/transforms/upscale.d.ts +3 -0
  196. package/node_modules/@playdrop/entity-core/dist/src/transforms/upscale.js +210 -0
  197. package/node_modules/@playdrop/entity-core/dist/src/transforms/upscale.js.map +1 -0
  198. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/slice.d.ts +12 -0
  199. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/slice.js +81 -0
  200. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/slice.js.map +1 -0
  201. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/textured-to-voxel.d.ts +12 -0
  202. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/textured-to-voxel.js +323 -0
  203. package/node_modules/@playdrop/entity-core/dist/src/transforms/voxels/textured-to-voxel.js.map +1 -0
  204. package/node_modules/@playdrop/entity-core/dist/src/types.d.ts +168 -0
  205. package/node_modules/@playdrop/entity-core/dist/src/types.js +3 -0
  206. package/node_modules/@playdrop/entity-core/dist/src/types.js.map +1 -0
  207. package/node_modules/@playdrop/entity-core/dist/src/validation.d.ts +24 -0
  208. package/node_modules/@playdrop/entity-core/dist/src/validation.js +641 -0
  209. package/node_modules/@playdrop/entity-core/dist/src/validation.js.map +1 -0
  210. package/node_modules/@playdrop/entity-core/dist/src/voxels/greedy-mesher.d.ts +11 -0
  211. package/node_modules/@playdrop/entity-core/dist/src/voxels/greedy-mesher.js +135 -0
  212. package/node_modules/@playdrop/entity-core/dist/src/voxels/greedy-mesher.js.map +1 -0
  213. package/node_modules/@playdrop/entity-core/dist/src/voxels.d.ts +23 -0
  214. package/node_modules/@playdrop/entity-core/dist/src/voxels.js +57 -0
  215. package/node_modules/@playdrop/entity-core/dist/src/voxels.js.map +1 -0
  216. package/node_modules/@playdrop/entity-core/dist/test/entity-utils.test.d.ts +1 -0
  217. package/node_modules/@playdrop/entity-core/dist/test/entity-utils.test.js +92 -0
  218. package/node_modules/@playdrop/entity-core/dist/test/entity-utils.test.js.map +1 -0
  219. package/node_modules/@playdrop/entity-core/dist/test/greedy-mesher.test.d.ts +1 -0
  220. package/node_modules/@playdrop/entity-core/dist/test/greedy-mesher.test.js +48 -0
  221. package/node_modules/@playdrop/entity-core/dist/test/greedy-mesher.test.js.map +1 -0
  222. package/node_modules/@playdrop/entity-core/dist/test/humanoid/humanoid-builders.test.d.ts +1 -0
  223. package/node_modules/@playdrop/entity-core/dist/test/humanoid/humanoid-builders.test.js +270 -0
  224. package/node_modules/@playdrop/entity-core/dist/test/humanoid/humanoid-builders.test.js.map +1 -0
  225. package/node_modules/@playdrop/entity-core/dist/test/index.test.d.ts +1 -0
  226. package/node_modules/@playdrop/entity-core/dist/test/index.test.js +48 -0
  227. package/node_modules/@playdrop/entity-core/dist/test/index.test.js.map +1 -0
  228. package/node_modules/@playdrop/entity-core/dist/test/layer-mode.test.d.ts +1 -0
  229. package/node_modules/@playdrop/entity-core/dist/test/layer-mode.test.js +67 -0
  230. package/node_modules/@playdrop/entity-core/dist/test/layer-mode.test.js.map +1 -0
  231. package/node_modules/@playdrop/entity-core/dist/test/materials.test.d.ts +1 -0
  232. package/node_modules/@playdrop/entity-core/dist/test/materials.test.js +55 -0
  233. package/node_modules/@playdrop/entity-core/dist/test/materials.test.js.map +1 -0
  234. package/node_modules/@playdrop/entity-core/dist/test/palette-tools.test.d.ts +1 -0
  235. package/node_modules/@playdrop/entity-core/dist/test/palette-tools.test.js +124 -0
  236. package/node_modules/@playdrop/entity-core/dist/test/palette-tools.test.js.map +1 -0
  237. package/node_modules/@playdrop/entity-core/dist/test/serialization.test.d.ts +1 -0
  238. package/node_modules/@playdrop/entity-core/dist/test/serialization.test.js +35 -0
  239. package/node_modules/@playdrop/entity-core/dist/test/serialization.test.js.map +1 -0
  240. package/node_modules/@playdrop/entity-core/dist/test/textures.test.d.ts +1 -0
  241. package/node_modules/@playdrop/entity-core/dist/test/textures.test.js +120 -0
  242. package/node_modules/@playdrop/entity-core/dist/test/textures.test.js.map +1 -0
  243. package/node_modules/@playdrop/entity-core/dist/test/types.test.d.ts +1 -0
  244. package/node_modules/@playdrop/entity-core/dist/test/types.test.js +32 -0
  245. package/node_modules/@playdrop/entity-core/dist/test/types.test.js.map +1 -0
  246. package/node_modules/@playdrop/entity-core/dist/test/upscale.test.d.ts +1 -0
  247. package/node_modules/@playdrop/entity-core/dist/test/upscale.test.js +100 -0
  248. package/node_modules/@playdrop/entity-core/dist/test/upscale.test.js.map +1 -0
  249. package/node_modules/@playdrop/entity-core/dist/test/validation.test.d.ts +1 -0
  250. package/node_modules/@playdrop/entity-core/dist/test/validation.test.js +61 -0
  251. package/node_modules/@playdrop/entity-core/dist/test/validation.test.js.map +1 -0
  252. package/node_modules/@playdrop/entity-core/dist/test/voxels.test.d.ts +1 -0
  253. package/node_modules/@playdrop/entity-core/dist/test/voxels.test.js +51 -0
  254. package/node_modules/@playdrop/entity-core/dist/test/voxels.test.js.map +1 -0
  255. package/node_modules/@playdrop/entity-core/package.json +20 -0
  256. package/node_modules/@playdrop/entity-three/dist/src/animations.d.ts +4 -0
  257. package/node_modules/@playdrop/entity-three/dist/src/animations.js +70 -0
  258. package/node_modules/@playdrop/entity-three/dist/src/builders.d.ts +8 -0
  259. package/node_modules/@playdrop/entity-three/dist/src/builders.js +330 -0
  260. package/node_modules/@playdrop/entity-three/dist/src/context.d.ts +24 -0
  261. package/node_modules/@playdrop/entity-three/dist/src/context.js +32 -0
  262. package/node_modules/@playdrop/entity-three/dist/src/exporters/glb.d.ts +100 -0
  263. package/node_modules/@playdrop/entity-three/dist/src/exporters/glb.js +926 -0
  264. package/node_modules/@playdrop/entity-three/dist/src/exporters/image.d.ts +18 -0
  265. package/node_modules/@playdrop/entity-three/dist/src/exporters/image.js +288 -0
  266. package/node_modules/@playdrop/entity-three/dist/src/index.d.ts +17 -0
  267. package/node_modules/@playdrop/entity-three/dist/src/index.js +15 -0
  268. package/node_modules/@playdrop/entity-three/dist/src/instantiate.d.ts +40 -0
  269. package/node_modules/@playdrop/entity-three/dist/src/instantiate.js +70 -0
  270. package/node_modules/@playdrop/entity-three/dist/src/nodes.d.ts +8 -0
  271. package/node_modules/@playdrop/entity-three/dist/src/nodes.js +63 -0
  272. package/node_modules/@playdrop/entity-three/dist/src/overlays.d.ts +7 -0
  273. package/node_modules/@playdrop/entity-three/dist/src/overlays.js +97 -0
  274. package/node_modules/@playdrop/entity-three/dist/src/primitives.d.ts +4 -0
  275. package/node_modules/@playdrop/entity-three/dist/src/primitives.js +20 -0
  276. package/node_modules/@playdrop/entity-three/dist/src/scene.d.ts +3 -0
  277. package/node_modules/@playdrop/entity-three/dist/src/scene.js +144 -0
  278. package/node_modules/@playdrop/entity-three/dist/src/skinned-mesh.d.ts +29 -0
  279. package/node_modules/@playdrop/entity-three/dist/src/skinned-mesh.js +625 -0
  280. package/node_modules/@playdrop/entity-three/dist/src/texture-atlas.d.ts +13 -0
  281. package/node_modules/@playdrop/entity-three/dist/src/texture-atlas.js +107 -0
  282. package/node_modules/@playdrop/entity-three/dist/src/textures.d.ts +17 -0
  283. package/node_modules/@playdrop/entity-three/dist/src/textures.js +191 -0
  284. package/node_modules/@playdrop/entity-three/dist/src/types.d.ts +112 -0
  285. package/node_modules/@playdrop/entity-three/dist/src/types.js +1 -0
  286. package/node_modules/@playdrop/entity-three/dist/src/voxels/faces.d.ts +28 -0
  287. package/node_modules/@playdrop/entity-three/dist/src/voxels/faces.js +442 -0
  288. package/node_modules/@playdrop/entity-three/dist/src/voxels/mesher.d.ts +24 -0
  289. package/node_modules/@playdrop/entity-three/dist/src/voxels/mesher.js +88 -0
  290. package/node_modules/@playdrop/entity-three/dist/test/export-image.playwright.test.d.ts +1 -0
  291. package/node_modules/@playdrop/entity-three/dist/test/export-image.playwright.test.js +116 -0
  292. package/node_modules/@playdrop/entity-three/dist/test/fixtures/render-worker.d.ts +20 -0
  293. package/node_modules/@playdrop/entity-three/dist/test/fixtures/render-worker.js +63 -0
  294. package/node_modules/@playdrop/entity-three/dist/test/glb-skinned.test.d.ts +1 -0
  295. package/node_modules/@playdrop/entity-three/dist/test/glb-skinned.test.js +86 -0
  296. package/node_modules/@playdrop/entity-three/dist/test/index.test.d.ts +1 -0
  297. package/node_modules/@playdrop/entity-three/dist/test/index.test.js +8 -0
  298. package/node_modules/@playdrop/entity-three/dist/test/instantiate.test.d.ts +1 -0
  299. package/node_modules/@playdrop/entity-three/dist/test/instantiate.test.js +68 -0
  300. package/node_modules/@playdrop/entity-three/dist/test/overlays.test.d.ts +1 -0
  301. package/node_modules/@playdrop/entity-three/dist/test/overlays.test.js +20 -0
  302. package/node_modules/@playdrop/entity-three/dist/test/scene-filter.test.d.ts +1 -0
  303. package/node_modules/@playdrop/entity-three/dist/test/scene-filter.test.js +51 -0
  304. package/node_modules/@playdrop/entity-three/dist/test/scene-smoke.test.d.ts +1 -0
  305. package/node_modules/@playdrop/entity-three/dist/test/scene-smoke.test.js +63 -0
  306. package/node_modules/@playdrop/entity-three/dist/test/skinned-mesh.test.d.ts +1 -0
  307. package/node_modules/@playdrop/entity-three/dist/test/skinned-mesh.test.js +51 -0
  308. package/node_modules/@playdrop/entity-three/dist/test/textured-overlay.test.d.ts +1 -0
  309. package/node_modules/@playdrop/entity-three/dist/test/textured-overlay.test.js +116 -0
  310. package/node_modules/@playdrop/entity-three/dist/test/voxels.test.d.ts +1 -0
  311. package/node_modules/@playdrop/entity-three/dist/test/voxels.test.js +20 -0
  312. package/node_modules/@playdrop/entity-three/package.json +27 -0
  313. package/node_modules/@playdrop/types/dist/api.d.ts +647 -0
  314. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -0
  315. package/node_modules/@playdrop/types/dist/api.js +39 -0
  316. package/node_modules/@playdrop/types/dist/app.d.ts +35 -0
  317. package/node_modules/@playdrop/types/dist/app.d.ts.map +1 -0
  318. package/node_modules/@playdrop/types/dist/app.js +64 -0
  319. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +106 -0
  320. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -0
  321. package/node_modules/@playdrop/types/dist/asset-pack.js +4 -0
  322. package/node_modules/@playdrop/types/dist/asset.d.ts +188 -0
  323. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -0
  324. package/node_modules/@playdrop/types/dist/asset.js +100 -0
  325. package/node_modules/@playdrop/types/dist/ecs.d.ts +39 -0
  326. package/node_modules/@playdrop/types/dist/ecs.d.ts.map +1 -0
  327. package/node_modules/@playdrop/types/dist/ecs.js +93 -0
  328. package/node_modules/@playdrop/types/dist/engine-builtins.d.ts +17 -0
  329. package/node_modules/@playdrop/types/dist/engine-builtins.d.ts.map +1 -0
  330. package/node_modules/@playdrop/types/dist/engine-builtins.js +577 -0
  331. package/node_modules/@playdrop/types/dist/entity.d.ts +36 -0
  332. package/node_modules/@playdrop/types/dist/entity.d.ts.map +1 -0
  333. package/node_modules/@playdrop/types/dist/entity.js +40 -0
  334. package/node_modules/@playdrop/types/dist/graph.d.ts +34 -0
  335. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -0
  336. package/node_modules/@playdrop/types/dist/graph.js +8 -0
  337. package/node_modules/@playdrop/types/dist/index.d.ts +10 -0
  338. package/node_modules/@playdrop/types/dist/index.d.ts.map +1 -0
  339. package/node_modules/@playdrop/types/dist/index.js +14 -0
  340. package/node_modules/@playdrop/types/dist/profile-asset-semantics.d.ts +22 -0
  341. package/node_modules/@playdrop/types/dist/profile-asset-semantics.d.ts.map +1 -0
  342. package/node_modules/@playdrop/types/dist/profile-asset-semantics.js +105 -0
  343. package/node_modules/@playdrop/types/dist/realtime.d.ts +221 -0
  344. package/node_modules/@playdrop/types/dist/realtime.d.ts.map +1 -0
  345. package/node_modules/@playdrop/types/dist/realtime.js +7 -0
  346. package/node_modules/@playdrop/types/dist/version.d.ts +149 -0
  347. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -0
  348. package/node_modules/@playdrop/types/dist/version.js +76 -0
  349. package/node_modules/@playdrop/types/package.json +63 -0
  350. package/node_modules/three/LICENSE +21 -0
  351. package/node_modules/three/README.md +86 -0
  352. package/node_modules/three/build/three.cjs +53732 -0
  353. package/node_modules/three/build/three.module.js +53316 -0
  354. package/node_modules/three/build/three.module.min.js +6 -0
  355. package/node_modules/three/examples/fonts/LICENSE +13 -0
  356. package/node_modules/three/examples/fonts/README.md +11 -0
  357. package/node_modules/three/examples/fonts/droid/NOTICE +190 -0
  358. package/node_modules/three/examples/fonts/droid/README.txt +18 -0
  359. package/node_modules/three/examples/fonts/droid/droid_sans_bold.typeface.json +1 -0
  360. package/node_modules/three/examples/fonts/droid/droid_sans_mono_regular.typeface.json +1 -0
  361. package/node_modules/three/examples/fonts/droid/droid_sans_regular.typeface.json +1 -0
  362. package/node_modules/three/examples/fonts/droid/droid_serif_bold.typeface.json +1 -0
  363. package/node_modules/three/examples/fonts/droid/droid_serif_regular.typeface.json +1 -0
  364. package/node_modules/three/examples/fonts/gentilis_bold.typeface.json +1 -0
  365. package/node_modules/three/examples/fonts/gentilis_regular.typeface.json +1 -0
  366. package/node_modules/three/examples/fonts/helvetiker_bold.typeface.json +1 -0
  367. package/node_modules/three/examples/fonts/helvetiker_regular.typeface.json +1 -0
  368. package/node_modules/three/examples/fonts/optimer_bold.typeface.json +1 -0
  369. package/node_modules/three/examples/fonts/optimer_regular.typeface.json +1 -0
  370. package/node_modules/three/examples/fonts/ttf/README.md +9 -0
  371. package/node_modules/three/examples/fonts/ttf/kenpixel.ttf +0 -0
  372. package/node_modules/three/examples/jsm/Addons.js +295 -0
  373. package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +116 -0
  374. package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +482 -0
  375. package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +1207 -0
  376. package/node_modules/three/examples/jsm/animation/MMDPhysics.js +1406 -0
  377. package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +208 -0
  378. package/node_modules/three/examples/jsm/capabilities/WebGL.js +108 -0
  379. package/node_modules/three/examples/jsm/capabilities/WebGPU.js +57 -0
  380. package/node_modules/three/examples/jsm/controls/ArcballControls.js +3224 -0
  381. package/node_modules/three/examples/jsm/controls/DragControls.js +221 -0
  382. package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +325 -0
  383. package/node_modules/three/examples/jsm/controls/FlyControls.js +326 -0
  384. package/node_modules/three/examples/jsm/controls/MapControls.js +28 -0
  385. package/node_modules/three/examples/jsm/controls/OrbitControls.js +1506 -0
  386. package/node_modules/three/examples/jsm/controls/PointerLockControls.js +162 -0
  387. package/node_modules/three/examples/jsm/controls/TrackballControls.js +828 -0
  388. package/node_modules/three/examples/jsm/controls/TransformControls.js +1573 -0
  389. package/node_modules/three/examples/jsm/csm/CSM.js +384 -0
  390. package/node_modules/three/examples/jsm/csm/CSMFrustum.js +152 -0
  391. package/node_modules/three/examples/jsm/csm/CSMHelper.js +193 -0
  392. package/node_modules/three/examples/jsm/csm/CSMShader.js +295 -0
  393. package/node_modules/three/examples/jsm/curves/CurveExtras.js +422 -0
  394. package/node_modules/three/examples/jsm/curves/NURBSCurve.js +80 -0
  395. package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -0
  396. package/node_modules/three/examples/jsm/curves/NURBSUtils.js +542 -0
  397. package/node_modules/three/examples/jsm/curves/NURBSVolume.js +62 -0
  398. package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +154 -0
  399. package/node_modules/three/examples/jsm/effects/AsciiEffect.js +263 -0
  400. package/node_modules/three/examples/jsm/effects/OutlineEffect.js +539 -0
  401. package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +119 -0
  402. package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +153 -0
  403. package/node_modules/three/examples/jsm/effects/StereoEffect.js +55 -0
  404. package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +52 -0
  405. package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +148 -0
  406. package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +267 -0
  407. package/node_modules/three/examples/jsm/exporters/EXRExporter.js +579 -0
  408. package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3309 -0
  409. package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +292 -0
  410. package/node_modules/three/examples/jsm/exporters/MMDExporter.js +217 -0
  411. package/node_modules/three/examples/jsm/exporters/OBJExporter.js +284 -0
  412. package/node_modules/three/examples/jsm/exporters/PLYExporter.js +528 -0
  413. package/node_modules/three/examples/jsm/exporters/STLExporter.js +199 -0
  414. package/node_modules/three/examples/jsm/exporters/USDZExporter.js +720 -0
  415. package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +69 -0
  416. package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +53 -0
  417. package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +356 -0
  418. package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
  419. package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +254 -0
  420. package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +139 -0
  421. package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +155 -0
  422. package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
  423. package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +704 -0
  424. package/node_modules/three/examples/jsm/geometries/TextGeometry.js +57 -0
  425. package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +130 -0
  426. package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +73 -0
  427. package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +109 -0
  428. package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +85 -0
  429. package/node_modules/three/examples/jsm/helpers/TextureHelper.js +237 -0
  430. package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +96 -0
  431. package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +88 -0
  432. package/node_modules/three/examples/jsm/helpers/ViewHelper.js +333 -0
  433. package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +572 -0
  434. package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +116 -0
  435. package/node_modules/three/examples/jsm/interactive/SelectionBox.js +227 -0
  436. package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +104 -0
  437. package/node_modules/three/examples/jsm/libs/ammo.wasm.js +822 -0
  438. package/node_modules/three/examples/jsm/libs/ammo.wasm.wasm +0 -0
  439. package/node_modules/three/examples/jsm/libs/basis/README.md +46 -0
  440. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +21 -0
  441. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  442. package/node_modules/three/examples/jsm/libs/chevrotain.module.min.js +141 -0
  443. package/node_modules/three/examples/jsm/libs/draco/README.md +32 -0
  444. package/node_modules/three/examples/jsm/libs/draco/draco_decoder.js +34 -0
  445. package/node_modules/three/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  446. package/node_modules/three/examples/jsm/libs/draco/draco_encoder.js +33 -0
  447. package/node_modules/three/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  448. package/node_modules/three/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  449. package/node_modules/three/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  450. package/node_modules/three/examples/jsm/libs/draco/gltf/draco_encoder.js +33 -0
  451. package/node_modules/three/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  452. package/node_modules/three/examples/jsm/libs/ecsy.module.js +1792 -0
  453. package/node_modules/three/examples/jsm/libs/fflate.module.js +2474 -0
  454. package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -0
  455. package/node_modules/three/examples/jsm/libs/lil-gui.module.min.js +8 -0
  456. package/node_modules/three/examples/jsm/libs/lottie_canvas.module.js +14849 -0
  457. package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +178 -0
  458. package/node_modules/three/examples/jsm/libs/mikktspace.module.js +128 -0
  459. package/node_modules/three/examples/jsm/libs/mmdparser.module.js +11530 -0
  460. package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +397 -0
  461. package/node_modules/three/examples/jsm/libs/opentype.module.js +14506 -0
  462. package/node_modules/three/examples/jsm/libs/potpack.module.js +125 -0
  463. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +8743 -0
  464. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8749 -0
  465. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  466. package/node_modules/three/examples/jsm/libs/stats.module.js +167 -0
  467. package/node_modules/three/examples/jsm/libs/surfaceNet.js +201 -0
  468. package/node_modules/three/examples/jsm/libs/tween.module.js +858 -0
  469. package/node_modules/three/examples/jsm/libs/utif.module.js +1665 -0
  470. package/node_modules/three/examples/jsm/libs/zstddec.module.js +1 -0
  471. package/node_modules/three/examples/jsm/lights/IESSpotLight.js +25 -0
  472. package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +286 -0
  473. package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +79 -0
  474. package/node_modules/three/examples/jsm/lines/Line2.js +19 -0
  475. package/node_modules/three/examples/jsm/lines/LineGeometry.js +79 -0
  476. package/node_modules/three/examples/jsm/lines/LineMaterial.js +619 -0
  477. package/node_modules/three/examples/jsm/lines/LineSegments2.js +361 -0
  478. package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +241 -0
  479. package/node_modules/three/examples/jsm/lines/Wireframe.js +56 -0
  480. package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +24 -0
  481. package/node_modules/three/examples/jsm/loaders/3DMLoader.js +1772 -0
  482. package/node_modules/three/examples/jsm/loaders/3MFLoader.js +1478 -0
  483. package/node_modules/three/examples/jsm/loaders/AMFLoader.js +521 -0
  484. package/node_modules/three/examples/jsm/loaders/BVHLoader.js +437 -0
  485. package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +4116 -0
  486. package/node_modules/three/examples/jsm/loaders/DDSLoader.js +318 -0
  487. package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +613 -0
  488. package/node_modules/three/examples/jsm/loaders/EXRLoader.js +2309 -0
  489. package/node_modules/three/examples/jsm/loaders/FBXLoader.js +4314 -0
  490. package/node_modules/three/examples/jsm/loaders/FontLoader.js +183 -0
  491. package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +261 -0
  492. package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4663 -0
  493. package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +115 -0
  494. package/node_modules/three/examples/jsm/loaders/IESLoader.js +337 -0
  495. package/node_modules/three/examples/jsm/loaders/KMZLoader.js +130 -0
  496. package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +932 -0
  497. package/node_modules/three/examples/jsm/loaders/KTXLoader.js +176 -0
  498. package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +2470 -0
  499. package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +183 -0
  500. package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +167 -0
  501. package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +163 -0
  502. package/node_modules/three/examples/jsm/loaders/LWOLoader.js +1052 -0
  503. package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +606 -0
  504. package/node_modules/three/examples/jsm/loaders/LottieLoader.js +77 -0
  505. package/node_modules/three/examples/jsm/loaders/MD2Loader.js +399 -0
  506. package/node_modules/three/examples/jsm/loaders/MDDLoader.js +102 -0
  507. package/node_modules/three/examples/jsm/loaders/MMDLoader.js +2276 -0
  508. package/node_modules/three/examples/jsm/loaders/MTLLoader.js +567 -0
  509. package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +852 -0
  510. package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +686 -0
  511. package/node_modules/three/examples/jsm/loaders/OBJLoader.js +905 -0
  512. package/node_modules/three/examples/jsm/loaders/PCDLoader.js +467 -0
  513. package/node_modules/three/examples/jsm/loaders/PDBLoader.js +232 -0
  514. package/node_modules/three/examples/jsm/loaders/PLYLoader.js +771 -0
  515. package/node_modules/three/examples/jsm/loaders/PVRLoader.js +251 -0
  516. package/node_modules/three/examples/jsm/loaders/RGBELoader.js +450 -0
  517. package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +1065 -0
  518. package/node_modules/three/examples/jsm/loaders/STLLoader.js +410 -0
  519. package/node_modules/three/examples/jsm/loaders/SVGLoader.js +3173 -0
  520. package/node_modules/three/examples/jsm/loaders/TDSLoader.js +1124 -0
  521. package/node_modules/three/examples/jsm/loaders/TGALoader.js +517 -0
  522. package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +36 -0
  523. package/node_modules/three/examples/jsm/loaders/TTFLoader.js +214 -0
  524. package/node_modules/three/examples/jsm/loaders/TiltLoader.js +520 -0
  525. package/node_modules/three/examples/jsm/loaders/USDZLoader.js +822 -0
  526. package/node_modules/three/examples/jsm/loaders/VOXLoader.js +311 -0
  527. package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +3533 -0
  528. package/node_modules/three/examples/jsm/loaders/VTKLoader.js +1163 -0
  529. package/node_modules/three/examples/jsm/loaders/XYZLoader.js +106 -0
  530. package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +1214 -0
  531. package/node_modules/three/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  532. package/node_modules/three/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  533. package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +426 -0
  534. package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +144 -0
  535. package/node_modules/three/examples/jsm/math/Capsule.js +82 -0
  536. package/node_modules/three/examples/jsm/math/ColorConverter.js +36 -0
  537. package/node_modules/three/examples/jsm/math/ConvexHull.js +1271 -0
  538. package/node_modules/three/examples/jsm/math/ImprovedNoise.js +71 -0
  539. package/node_modules/three/examples/jsm/math/Lut.js +204 -0
  540. package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +250 -0
  541. package/node_modules/three/examples/jsm/math/OBB.js +423 -0
  542. package/node_modules/three/examples/jsm/math/Octree.js +540 -0
  543. package/node_modules/three/examples/jsm/math/SimplexNoise.js +444 -0
  544. package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +519 -0
  545. package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +446 -0
  546. package/node_modules/three/examples/jsm/misc/Gyroscope.js +66 -0
  547. package/node_modules/three/examples/jsm/misc/MD2Character.js +276 -0
  548. package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +576 -0
  549. package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +75 -0
  550. package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +322 -0
  551. package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +323 -0
  552. package/node_modules/three/examples/jsm/misc/RollerCoaster.js +566 -0
  553. package/node_modules/three/examples/jsm/misc/Timer.js +128 -0
  554. package/node_modules/three/examples/jsm/misc/TubePainter.js +202 -0
  555. package/node_modules/three/examples/jsm/misc/Volume.js +473 -0
  556. package/node_modules/three/examples/jsm/misc/VolumeSlice.js +229 -0
  557. package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +344 -0
  558. package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +279 -0
  559. package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +617 -0
  560. package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +307 -0
  561. package/node_modules/three/examples/jsm/nodes/Nodes.js +193 -0
  562. package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +89 -0
  563. package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +127 -0
  564. package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +30 -0
  565. package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +119 -0
  566. package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +61 -0
  567. package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +71 -0
  568. package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  569. package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +314 -0
  570. package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +51 -0
  571. package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +33 -0
  572. package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +39 -0
  573. package/node_modules/three/examples/jsm/nodes/accessors/MorphNode.js +245 -0
  574. package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +96 -0
  575. package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +150 -0
  576. package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +26 -0
  577. package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +104 -0
  578. package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +102 -0
  579. package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +35 -0
  580. package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +52 -0
  581. package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +103 -0
  582. package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +54 -0
  583. package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +103 -0
  584. package/node_modules/three/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  585. package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +367 -0
  586. package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  587. package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +82 -0
  588. package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +47 -0
  589. package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +29 -0
  590. package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +70 -0
  591. package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +78 -0
  592. package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  593. package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +96 -0
  594. package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +138 -0
  595. package/node_modules/three/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  596. package/node_modules/three/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  597. package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +26 -0
  598. package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +72 -0
  599. package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +108 -0
  600. package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +45 -0
  601. package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +49 -0
  602. package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +32 -0
  603. package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +61 -0
  604. package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +66 -0
  605. package/node_modules/three/examples/jsm/nodes/core/InputNode.js +83 -0
  606. package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +17 -0
  607. package/node_modules/three/examples/jsm/nodes/core/Node.js +483 -0
  608. package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +15 -0
  609. package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +1256 -0
  610. package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +26 -0
  611. package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +15 -0
  612. package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +143 -0
  613. package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +22 -0
  614. package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +17 -0
  615. package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +80 -0
  616. package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +11 -0
  617. package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +40 -0
  618. package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +210 -0
  619. package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +14 -0
  620. package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +17 -0
  621. package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +62 -0
  622. package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +33 -0
  623. package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +72 -0
  624. package/node_modules/three/examples/jsm/nodes/core/StackNode.js +89 -0
  625. package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +24 -0
  626. package/node_modules/three/examples/jsm/nodes/core/TempNode.js +58 -0
  627. package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +13 -0
  628. package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
  629. package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +80 -0
  630. package/node_modules/three/examples/jsm/nodes/core/VarNode.js +60 -0
  631. package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +65 -0
  632. package/node_modules/three/examples/jsm/nodes/core/constants.js +28 -0
  633. package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +148 -0
  634. package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +148 -0
  635. package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +99 -0
  636. package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +99 -0
  637. package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +99 -0
  638. package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +108 -0
  639. package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +27 -0
  640. package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +190 -0
  641. package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +108 -0
  642. package/node_modules/three/examples/jsm/nodes/display/PassNode.js +183 -0
  643. package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +32 -0
  644. package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +184 -0
  645. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +97 -0
  646. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +31 -0
  647. package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +134 -0
  648. package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +31 -0
  649. package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +75 -0
  650. package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  651. package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +38 -0
  652. package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +34 -0
  653. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +40 -0
  654. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  655. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +57 -0
  656. package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +30 -0
  657. package/node_modules/three/examples/jsm/nodes/functions/BSDF/D_GGX.js +23 -0
  658. package/node_modules/three/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  659. package/node_modules/three/examples/jsm/nodes/functions/BSDF/F_Schlick.js +16 -0
  660. package/node_modules/three/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +21 -0
  661. package/node_modules/three/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +28 -0
  662. package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +67 -0
  663. package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +393 -0
  664. package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +13 -0
  665. package/node_modules/three/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  666. package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +104 -0
  667. package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +85 -0
  668. package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +27 -0
  669. package/node_modules/three/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  670. package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +241 -0
  671. package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +40 -0
  672. package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +181 -0
  673. package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +55 -0
  674. package/node_modules/three/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  675. package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +57 -0
  676. package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  677. package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +66 -0
  678. package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +21 -0
  679. package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +188 -0
  680. package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +68 -0
  681. package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +89 -0
  682. package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +108 -0
  683. package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +59 -0
  684. package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  685. package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
  686. package/node_modules/three/examples/jsm/nodes/materials/Line2NodeMaterial.js +436 -0
  687. package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +28 -0
  688. package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
  689. package/node_modules/three/examples/jsm/nodes/materials/Materials.js +16 -0
  690. package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +28 -0
  691. package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
  692. package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +40 -0
  693. package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +65 -0
  694. package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +155 -0
  695. package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +84 -0
  696. package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +80 -0
  697. package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +570 -0
  698. package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +39 -0
  699. package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +90 -0
  700. package/node_modules/three/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  701. package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +68 -0
  702. package/node_modules/three/examples/jsm/nodes/materialx/lib/mx_hsv.js +130 -0
  703. package/node_modules/three/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -0
  704. package/node_modules/three/examples/jsm/nodes/materialx/lib/mx_transform_color.js +29 -0
  705. package/node_modules/three/examples/jsm/nodes/math/CondNode.js +86 -0
  706. package/node_modules/three/examples/jsm/nodes/math/HashNode.js +34 -0
  707. package/node_modules/three/examples/jsm/nodes/math/MathNode.js +371 -0
  708. package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +15 -0
  709. package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +274 -0
  710. package/node_modules/three/examples/jsm/nodes/math/TriNoise3D.js +71 -0
  711. package/node_modules/three/examples/jsm/nodes/parsers/GLSLNodeFunction.js +152 -0
  712. package/node_modules/three/examples/jsm/nodes/parsers/GLSLNodeParser.js +14 -0
  713. package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +42 -0
  714. package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +634 -0
  715. package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +41 -0
  716. package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +65 -0
  717. package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +27 -0
  718. package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +33 -0
  719. package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
  720. package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +61 -0
  721. package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +198 -0
  722. package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +30 -0
  723. package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +46 -0
  724. package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +81 -0
  725. package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +55 -0
  726. package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +227 -0
  727. package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +42 -0
  728. package/node_modules/three/examples/jsm/nodes/utils/RotateNode.js +68 -0
  729. package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +35 -0
  730. package/node_modules/three/examples/jsm/nodes/utils/SetNode.js +62 -0
  731. package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  732. package/node_modules/three/examples/jsm/nodes/utils/SplitNode.js +112 -0
  733. package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +41 -0
  734. package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +94 -0
  735. package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +62 -0
  736. package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +50 -0
  737. package/node_modules/three/examples/jsm/objects/InstancedPoints.js +21 -0
  738. package/node_modules/three/examples/jsm/objects/Lensflare.js +397 -0
  739. package/node_modules/three/examples/jsm/objects/MarchingCubes.js +1176 -0
  740. package/node_modules/three/examples/jsm/objects/QuadMesh.js +66 -0
  741. package/node_modules/three/examples/jsm/objects/Reflector.js +264 -0
  742. package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +352 -0
  743. package/node_modules/three/examples/jsm/objects/Refractor.js +327 -0
  744. package/node_modules/three/examples/jsm/objects/ShadowMesh.js +80 -0
  745. package/node_modules/three/examples/jsm/objects/Sky.js +219 -0
  746. package/node_modules/three/examples/jsm/objects/Water.js +333 -0
  747. package/node_modules/three/examples/jsm/objects/Water2.js +361 -0
  748. package/node_modules/three/examples/jsm/offscreen/jank.js +45 -0
  749. package/node_modules/three/examples/jsm/offscreen/offscreen.js +8 -0
  750. package/node_modules/three/examples/jsm/offscreen/scene.js +86 -0
  751. package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +306 -0
  752. package/node_modules/three/examples/jsm/physics/RapierPhysics.js +220 -0
  753. package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +104 -0
  754. package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +172 -0
  755. package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +141 -0
  756. package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +46 -0
  757. package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +85 -0
  758. package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +65 -0
  759. package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +231 -0
  760. package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +64 -0
  761. package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +582 -0
  762. package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +128 -0
  763. package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +79 -0
  764. package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +174 -0
  765. package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +104 -0
  766. package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +654 -0
  767. package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +95 -0
  768. package/node_modules/three/examples/jsm/postprocessing/Pass.js +95 -0
  769. package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +99 -0
  770. package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +235 -0
  771. package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +335 -0
  772. package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +199 -0
  773. package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +228 -0
  774. package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +420 -0
  775. package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +641 -0
  776. package/node_modules/three/examples/jsm/postprocessing/SavePass.js +79 -0
  777. package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +77 -0
  778. package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +188 -0
  779. package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +67 -0
  780. package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +415 -0
  781. package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +215 -0
  782. package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +329 -0
  783. package/node_modules/three/examples/jsm/renderers/Projector.js +918 -0
  784. package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +556 -0
  785. package/node_modules/three/examples/jsm/renderers/common/Animation.js +47 -0
  786. package/node_modules/three/examples/jsm/renderers/common/Attributes.js +75 -0
  787. package/node_modules/three/examples/jsm/renderers/common/Backend.js +195 -0
  788. package/node_modules/three/examples/jsm/renderers/common/Background.js +134 -0
  789. package/node_modules/three/examples/jsm/renderers/common/Binding.js +25 -0
  790. package/node_modules/three/examples/jsm/renderers/common/Bindings.js +173 -0
  791. package/node_modules/three/examples/jsm/renderers/common/Buffer.js +38 -0
  792. package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +33 -0
  793. package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +89 -0
  794. package/node_modules/three/examples/jsm/renderers/common/Color4.js +37 -0
  795. package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  796. package/node_modules/three/examples/jsm/renderers/common/Constants.js +14 -0
  797. package/node_modules/three/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  798. package/node_modules/three/examples/jsm/renderers/common/DataMap.js +54 -0
  799. package/node_modules/three/examples/jsm/renderers/common/Geometries.js +215 -0
  800. package/node_modules/three/examples/jsm/renderers/common/Info.js +107 -0
  801. package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +13 -0
  802. package/node_modules/three/examples/jsm/renderers/common/Pipelines.js +322 -0
  803. package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +25 -0
  804. package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +20 -0
  805. package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +41 -0
  806. package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +74 -0
  807. package/node_modules/three/examples/jsm/renderers/common/RenderList.js +186 -0
  808. package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +38 -0
  809. package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +178 -0
  810. package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +91 -0
  811. package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  812. package/node_modules/three/examples/jsm/renderers/common/Renderer.js +1247 -0
  813. package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +83 -0
  814. package/node_modules/three/examples/jsm/renderers/common/Sampler.js +18 -0
  815. package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  816. package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +17 -0
  817. package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +20 -0
  818. package/node_modules/three/examples/jsm/renderers/common/Textures.js +354 -0
  819. package/node_modules/three/examples/jsm/renderers/common/Uniform.js +140 -0
  820. package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  821. package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +299 -0
  822. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +44 -0
  823. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +49 -0
  824. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +15 -0
  825. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +135 -0
  826. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
  827. package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +495 -0
  828. package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +1362 -0
  829. package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +679 -0
  830. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +252 -0
  831. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
  832. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLConstants.js +11 -0
  833. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +36 -0
  834. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLState.js +738 -0
  835. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +647 -0
  836. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLUtils.js +284 -0
  837. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +320 -0
  838. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +26 -0
  839. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +794 -0
  840. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +51 -0
  841. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +1321 -0
  842. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +53 -0
  843. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +1103 -0
  844. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +104 -0
  845. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeParser.js +14 -0
  846. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +287 -0
  847. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +244 -0
  848. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +324 -0
  849. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +591 -0
  850. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
  851. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +1040 -0
  852. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +93 -0
  853. package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +89 -0
  854. package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +58 -0
  855. package/node_modules/three/examples/jsm/shaders/BasicShader.js +29 -0
  856. package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +62 -0
  857. package/node_modules/three/examples/jsm/shaders/BlendShader.js +49 -0
  858. package/node_modules/three/examples/jsm/shaders/BokehShader.js +145 -0
  859. package/node_modules/three/examples/jsm/shaders/BokehShader2.js +397 -0
  860. package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +56 -0
  861. package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +52 -0
  862. package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +51 -0
  863. package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +103 -0
  864. package/node_modules/three/examples/jsm/shaders/CopyShader.js +45 -0
  865. package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +56 -0
  866. package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +171 -0
  867. package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +101 -0
  868. package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +70 -0
  869. package/node_modules/three/examples/jsm/shaders/ExposureShader.js +44 -0
  870. package/node_modules/three/examples/jsm/shaders/FXAAShader.js +288 -0
  871. package/node_modules/three/examples/jsm/shaders/FilmShader.js +59 -0
  872. package/node_modules/three/examples/jsm/shaders/FocusShader.js +89 -0
  873. package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +96 -0
  874. package/node_modules/three/examples/jsm/shaders/GTAOShader.js +424 -0
  875. package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +43 -0
  876. package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +321 -0
  877. package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +312 -0
  878. package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +59 -0
  879. package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +63 -0
  880. package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +67 -0
  881. package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +58 -0
  882. package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +66 -0
  883. package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +48 -0
  884. package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +134 -0
  885. package/node_modules/three/examples/jsm/shaders/MirrorShader.js +56 -0
  886. package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +55 -0
  887. package/node_modules/three/examples/jsm/shaders/OutputShader.js +81 -0
  888. package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
  889. package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +54 -0
  890. package/node_modules/three/examples/jsm/shaders/SAOShader.js +179 -0
  891. package/node_modules/three/examples/jsm/shaders/SMAAShader.js +466 -0
  892. package/node_modules/three/examples/jsm/shaders/SSAOShader.js +300 -0
  893. package/node_modules/three/examples/jsm/shaders/SSRShader.js +370 -0
  894. package/node_modules/three/examples/jsm/shaders/SepiaShader.js +52 -0
  895. package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +92 -0
  896. package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +90 -0
  897. package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +45 -0
  898. package/node_modules/three/examples/jsm/shaders/ToonShader.js +326 -0
  899. package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +74 -0
  900. package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +47 -0
  901. package/node_modules/three/examples/jsm/shaders/VelocityShader.js +130 -0
  902. package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +59 -0
  903. package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +63 -0
  904. package/node_modules/three/examples/jsm/shaders/VignetteShader.js +51 -0
  905. package/node_modules/three/examples/jsm/shaders/VolumeShader.js +289 -0
  906. package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +95 -0
  907. package/node_modules/three/examples/jsm/textures/FlakesTexture.js +40 -0
  908. package/node_modules/three/examples/jsm/transpiler/AST.js +270 -0
  909. package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +941 -0
  910. package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
  911. package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +715 -0
  912. package/node_modules/three/examples/jsm/transpiler/Transpiler.js +18 -0
  913. package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +1371 -0
  914. package/node_modules/three/examples/jsm/utils/CameraUtils.js +73 -0
  915. package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +128 -0
  916. package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +639 -0
  917. package/node_modules/three/examples/jsm/utils/GeometryUtils.js +221 -0
  918. package/node_modules/three/examples/jsm/utils/LDrawUtils.js +202 -0
  919. package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +178 -0
  920. package/node_modules/three/examples/jsm/utils/SceneUtils.js +254 -0
  921. package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +210 -0
  922. package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +413 -0
  923. package/node_modules/three/examples/jsm/utils/SortUtils.js +160 -0
  924. package/node_modules/three/examples/jsm/utils/TextureUtils.js +98 -0
  925. package/node_modules/three/examples/jsm/utils/UVsDebug.js +165 -0
  926. package/node_modules/three/examples/jsm/utils/WorkerPool.js +102 -0
  927. package/node_modules/three/examples/jsm/webxr/ARButton.js +232 -0
  928. package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +109 -0
  929. package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +413 -0
  930. package/node_modules/three/examples/jsm/webxr/Text2D.js +38 -0
  931. package/node_modules/three/examples/jsm/webxr/VRButton.js +225 -0
  932. package/node_modules/three/examples/jsm/webxr/XRButton.js +224 -0
  933. package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +304 -0
  934. package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +223 -0
  935. package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +114 -0
  936. package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +105 -0
  937. package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +103 -0
  938. package/node_modules/three/examples/jsm/webxr/XRPlanes.js +100 -0
  939. package/node_modules/three/package.json +124 -0
  940. package/node_modules/three/src/Three.Legacy.js +1 -0
  941. package/node_modules/three/src/Three.js +184 -0
  942. package/node_modules/three/src/animation/AnimationAction.js +700 -0
  943. package/node_modules/three/src/animation/AnimationClip.js +473 -0
  944. package/node_modules/three/src/animation/AnimationMixer.js +770 -0
  945. package/node_modules/three/src/animation/AnimationObjectGroup.js +387 -0
  946. package/node_modules/three/src/animation/AnimationUtils.js +356 -0
  947. package/node_modules/three/src/animation/KeyframeTrack.js +462 -0
  948. package/node_modules/three/src/animation/PropertyBinding.js +719 -0
  949. package/node_modules/three/src/animation/PropertyMixer.js +318 -0
  950. package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +19 -0
  951. package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +15 -0
  952. package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +12 -0
  953. package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +23 -0
  954. package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +15 -0
  955. package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +12 -0
  956. package/node_modules/three/src/audio/Audio.js +400 -0
  957. package/node_modules/three/src/audio/AudioAnalyser.js +40 -0
  958. package/node_modules/three/src/audio/AudioContext.js +25 -0
  959. package/node_modules/three/src/audio/AudioListener.js +137 -0
  960. package/node_modules/three/src/audio/PositionalAudio.js +146 -0
  961. package/node_modules/three/src/cameras/ArrayCamera.js +17 -0
  962. package/node_modules/three/src/cameras/Camera.js +69 -0
  963. package/node_modules/three/src/cameras/CubeCamera.js +173 -0
  964. package/node_modules/three/src/cameras/OrthographicCamera.js +136 -0
  965. package/node_modules/three/src/cameras/PerspectiveCamera.js +268 -0
  966. package/node_modules/three/src/cameras/StereoCamera.js +100 -0
  967. package/node_modules/three/src/constants.js +216 -0
  968. package/node_modules/three/src/core/BufferAttribute.js +650 -0
  969. package/node_modules/three/src/core/BufferGeometry.js +1079 -0
  970. package/node_modules/three/src/core/Clock.js +74 -0
  971. package/node_modules/three/src/core/EventDispatcher.js +87 -0
  972. package/node_modules/three/src/core/GLBufferAttribute.js +60 -0
  973. package/node_modules/three/src/core/InstancedBufferAttribute.js +39 -0
  974. package/node_modules/three/src/core/InstancedBufferGeometry.js +40 -0
  975. package/node_modules/three/src/core/InstancedInterleavedBuffer.js +48 -0
  976. package/node_modules/three/src/core/InterleavedBuffer.js +166 -0
  977. package/node_modules/three/src/core/InterleavedBufferAttribute.js +351 -0
  978. package/node_modules/three/src/core/Layers.js +60 -0
  979. package/node_modules/three/src/core/Object3D.js +1008 -0
  980. package/node_modules/three/src/core/Raycaster.js +110 -0
  981. package/node_modules/three/src/core/RenderTarget.js +131 -0
  982. package/node_modules/three/src/core/Uniform.js +17 -0
  983. package/node_modules/three/src/core/UniformsGroup.js +98 -0
  984. package/node_modules/three/src/extras/DataUtils.js +176 -0
  985. package/node_modules/three/src/extras/Earcut.js +789 -0
  986. package/node_modules/three/src/extras/ImageUtils.js +129 -0
  987. package/node_modules/three/src/extras/PMREMGenerator.js +906 -0
  988. package/node_modules/three/src/extras/ShapeUtils.js +92 -0
  989. package/node_modules/three/src/extras/core/Curve.js +416 -0
  990. package/node_modules/three/src/extras/core/CurvePath.js +255 -0
  991. package/node_modules/three/src/extras/core/Interpolations.js +79 -0
  992. package/node_modules/three/src/extras/core/Path.js +196 -0
  993. package/node_modules/three/src/extras/core/Shape.js +102 -0
  994. package/node_modules/three/src/extras/core/ShapePath.js +291 -0
  995. package/node_modules/three/src/extras/curves/ArcCurve.js +17 -0
  996. package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +255 -0
  997. package/node_modules/three/src/extras/curves/CubicBezierCurve.js +78 -0
  998. package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +79 -0
  999. package/node_modules/three/src/extras/curves/Curves.js +10 -0
  1000. package/node_modules/three/src/extras/curves/EllipseCurve.js +156 -0
  1001. package/node_modules/three/src/extras/curves/LineCurve.js +92 -0
  1002. package/node_modules/three/src/extras/curves/LineCurve3.js +92 -0
  1003. package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +74 -0
  1004. package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +75 -0
  1005. package/node_modules/three/src/extras/curves/SplineCurve.js +97 -0
  1006. package/node_modules/three/src/geometries/BoxGeometry.js +180 -0
  1007. package/node_modules/three/src/geometries/CapsuleGeometry.js +33 -0
  1008. package/node_modules/three/src/geometries/CircleGeometry.js +101 -0
  1009. package/node_modules/three/src/geometries/ConeGeometry.js +31 -0
  1010. package/node_modules/three/src/geometries/CylinderGeometry.js +286 -0
  1011. package/node_modules/three/src/geometries/DodecahedronGeometry.js +66 -0
  1012. package/node_modules/three/src/geometries/EdgesGeometry.js +152 -0
  1013. package/node_modules/three/src/geometries/ExtrudeGeometry.js +814 -0
  1014. package/node_modules/three/src/geometries/Geometries.js +21 -0
  1015. package/node_modules/three/src/geometries/IcosahedronGeometry.js +42 -0
  1016. package/node_modules/three/src/geometries/LatheGeometry.js +189 -0
  1017. package/node_modules/three/src/geometries/OctahedronGeometry.js +37 -0
  1018. package/node_modules/three/src/geometries/PlaneGeometry.js +98 -0
  1019. package/node_modules/three/src/geometries/PolyhedronGeometry.js +319 -0
  1020. package/node_modules/three/src/geometries/RingGeometry.js +128 -0
  1021. package/node_modules/three/src/geometries/ShapeGeometry.js +195 -0
  1022. package/node_modules/three/src/geometries/SphereGeometry.js +137 -0
  1023. package/node_modules/three/src/geometries/TetrahedronGeometry.js +34 -0
  1024. package/node_modules/three/src/geometries/TorusGeometry.js +120 -0
  1025. package/node_modules/three/src/geometries/TorusKnotGeometry.js +167 -0
  1026. package/node_modules/three/src/geometries/TubeGeometry.js +203 -0
  1027. package/node_modules/three/src/geometries/WireframeGeometry.js +147 -0
  1028. package/node_modules/three/src/helpers/ArrowHelper.js +114 -0
  1029. package/node_modules/three/src/helpers/AxesHelper.js +68 -0
  1030. package/node_modules/three/src/helpers/Box3Helper.js +55 -0
  1031. package/node_modules/three/src/helpers/BoxHelper.js +113 -0
  1032. package/node_modules/three/src/helpers/CameraHelper.js +269 -0
  1033. package/node_modules/three/src/helpers/DirectionalLightHelper.js +93 -0
  1034. package/node_modules/three/src/helpers/GridHelper.js +56 -0
  1035. package/node_modules/three/src/helpers/HemisphereLightHelper.js +88 -0
  1036. package/node_modules/three/src/helpers/PlaneHelper.js +63 -0
  1037. package/node_modules/three/src/helpers/PointLightHelper.js +92 -0
  1038. package/node_modules/three/src/helpers/PolarGridHelper.js +96 -0
  1039. package/node_modules/three/src/helpers/SkeletonHelper.js +128 -0
  1040. package/node_modules/three/src/helpers/SpotLightHelper.js +94 -0
  1041. package/node_modules/three/src/lights/AmbientLight.js +17 -0
  1042. package/node_modules/three/src/lights/DirectionalLight.js +43 -0
  1043. package/node_modules/three/src/lights/DirectionalLightShadow.js +16 -0
  1044. package/node_modules/three/src/lights/HemisphereLight.js +34 -0
  1045. package/node_modules/three/src/lights/Light.js +58 -0
  1046. package/node_modules/three/src/lights/LightProbe.js +47 -0
  1047. package/node_modules/three/src/lights/LightShadow.js +147 -0
  1048. package/node_modules/three/src/lights/PointLight.js +57 -0
  1049. package/node_modules/three/src/lights/PointLightShadow.js +96 -0
  1050. package/node_modules/three/src/lights/RectAreaLight.js +56 -0
  1051. package/node_modules/three/src/lights/SpotLight.js +71 -0
  1052. package/node_modules/three/src/lights/SpotLightShadow.js +50 -0
  1053. package/node_modules/three/src/loaders/AnimationLoader.js +66 -0
  1054. package/node_modules/three/src/loaders/AudioLoader.js +66 -0
  1055. package/node_modules/three/src/loaders/BufferGeometryLoader.js +217 -0
  1056. package/node_modules/three/src/loaders/Cache.js +42 -0
  1057. package/node_modules/three/src/loaders/CompressedTextureLoader.js +134 -0
  1058. package/node_modules/three/src/loaders/CubeTextureLoader.js +58 -0
  1059. package/node_modules/three/src/loaders/DataTextureLoader.js +135 -0
  1060. package/node_modules/three/src/loaders/FileLoader.js +284 -0
  1061. package/node_modules/three/src/loaders/ImageBitmapLoader.js +123 -0
  1062. package/node_modules/three/src/loaders/ImageLoader.js +91 -0
  1063. package/node_modules/three/src/loaders/Loader.js +72 -0
  1064. package/node_modules/three/src/loaders/LoaderUtils.js +75 -0
  1065. package/node_modules/three/src/loaders/LoadingManager.js +142 -0
  1066. package/node_modules/three/src/loaders/MaterialLoader.js +372 -0
  1067. package/node_modules/three/src/loaders/ObjectLoader.js +1148 -0
  1068. package/node_modules/three/src/loaders/TextureLoader.js +41 -0
  1069. package/node_modules/three/src/materials/LineBasicMaterial.js +49 -0
  1070. package/node_modules/three/src/materials/LineDashedMaterial.js +35 -0
  1071. package/node_modules/three/src/materials/Material.js +522 -0
  1072. package/node_modules/three/src/materials/Materials.js +39 -0
  1073. package/node_modules/three/src/materials/MeshBasicMaterial.js +81 -0
  1074. package/node_modules/three/src/materials/MeshDepthMaterial.js +54 -0
  1075. package/node_modules/three/src/materials/MeshDistanceMaterial.js +43 -0
  1076. package/node_modules/three/src/materials/MeshLambertMaterial.js +116 -0
  1077. package/node_modules/three/src/materials/MeshMatcapMaterial.js +81 -0
  1078. package/node_modules/three/src/materials/MeshNormalMaterial.js +61 -0
  1079. package/node_modules/three/src/materials/MeshPhongMaterial.js +120 -0
  1080. package/node_modules/three/src/materials/MeshPhysicalMaterial.js +224 -0
  1081. package/node_modules/three/src/materials/MeshStandardMaterial.js +124 -0
  1082. package/node_modules/three/src/materials/MeshToonMaterial.js +102 -0
  1083. package/node_modules/three/src/materials/PointsMaterial.js +50 -0
  1084. package/node_modules/three/src/materials/RawShaderMaterial.js +17 -0
  1085. package/node_modules/three/src/materials/ShaderMaterial.js +189 -0
  1086. package/node_modules/three/src/materials/ShadowMaterial.js +37 -0
  1087. package/node_modules/three/src/materials/SpriteMaterial.js +54 -0
  1088. package/node_modules/three/src/math/Box2.js +204 -0
  1089. package/node_modules/three/src/math/Box3.js +534 -0
  1090. package/node_modules/three/src/math/Color.js +623 -0
  1091. package/node_modules/three/src/math/ColorManagement.js +139 -0
  1092. package/node_modules/three/src/math/Cylindrical.js +61 -0
  1093. package/node_modules/three/src/math/Euler.js +315 -0
  1094. package/node_modules/three/src/math/Frustum.js +186 -0
  1095. package/node_modules/three/src/math/Interpolant.js +241 -0
  1096. package/node_modules/three/src/math/Line3.js +115 -0
  1097. package/node_modules/three/src/math/MathUtils.js +363 -0
  1098. package/node_modules/three/src/math/Matrix3.js +388 -0
  1099. package/node_modules/three/src/math/Matrix4.js +915 -0
  1100. package/node_modules/three/src/math/Plane.js +205 -0
  1101. package/node_modules/three/src/math/Quaternion.js +685 -0
  1102. package/node_modules/three/src/math/Ray.js +493 -0
  1103. package/node_modules/three/src/math/Sphere.js +245 -0
  1104. package/node_modules/three/src/math/Spherical.js +86 -0
  1105. package/node_modules/three/src/math/SphericalHarmonics3.js +243 -0
  1106. package/node_modules/three/src/math/Triangle.js +311 -0
  1107. package/node_modules/three/src/math/Vector2.js +480 -0
  1108. package/node_modules/three/src/math/Vector3.js +724 -0
  1109. package/node_modules/three/src/math/Vector4.js +644 -0
  1110. package/node_modules/three/src/math/interpolants/CubicInterpolant.js +150 -0
  1111. package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +26 -0
  1112. package/node_modules/three/src/math/interpolants/LinearInterpolant.js +38 -0
  1113. package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +39 -0
  1114. package/node_modules/three/src/objects/BatchedMesh.js +1019 -0
  1115. package/node_modules/three/src/objects/Bone.js +17 -0
  1116. package/node_modules/three/src/objects/Group.js +17 -0
  1117. package/node_modules/three/src/objects/InstancedMesh.js +214 -0
  1118. package/node_modules/three/src/objects/LOD.js +214 -0
  1119. package/node_modules/three/src/objects/Line.js +222 -0
  1120. package/node_modules/three/src/objects/LineLoop.js +17 -0
  1121. package/node_modules/three/src/objects/LineSegments.js +55 -0
  1122. package/node_modules/three/src/objects/Mesh.js +429 -0
  1123. package/node_modules/three/src/objects/Points.js +166 -0
  1124. package/node_modules/three/src/objects/Skeleton.js +277 -0
  1125. package/node_modules/three/src/objects/SkinnedMesh.js +257 -0
  1126. package/node_modules/three/src/objects/Sprite.js +181 -0
  1127. package/node_modules/three/src/renderers/WebGL1Renderer.js +7 -0
  1128. package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +22 -0
  1129. package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +22 -0
  1130. package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +155 -0
  1131. package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +82 -0
  1132. package/node_modules/three/src/renderers/WebGLRenderTarget.js +15 -0
  1133. package/node_modules/three/src/renderers/WebGLRenderer.js +2610 -0
  1134. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  1135. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  1136. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  1137. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  1138. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -0
  1139. package/node_modules/three/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  1140. package/node_modules/three/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -0
  1141. package/node_modules/three/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  1142. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
  1143. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  1144. package/node_modules/three/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -0
  1145. package/node_modules/three/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  1146. package/node_modules/three/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -0
  1147. package/node_modules/three/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -0
  1148. package/node_modules/three/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  1149. package/node_modules/three/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -0
  1150. package/node_modules/three/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  1151. package/node_modules/three/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -0
  1152. package/node_modules/three/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  1153. package/node_modules/three/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  1154. package/node_modules/three/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  1155. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +11 -0
  1156. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +11 -0
  1157. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +11 -0
  1158. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +23 -0
  1159. package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -0
  1160. package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +44 -0
  1161. package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +147 -0
  1162. package/node_modules/three/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +186 -0
  1163. package/node_modules/three/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  1164. package/node_modules/three/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1165. package/node_modules/three/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +63 -0
  1166. package/node_modules/three/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1167. package/node_modules/three/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1168. package/node_modules/three/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1169. package/node_modules/three/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1170. package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +9 -0
  1171. package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1172. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +14 -0
  1173. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +62 -0
  1174. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1175. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1176. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +69 -0
  1177. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1178. package/node_modules/three/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1179. package/node_modules/three/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1180. package/node_modules/three/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1181. package/node_modules/three/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1182. package/node_modules/three/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1183. package/node_modules/three/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -0
  1184. package/node_modules/three/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1185. package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +10 -0
  1186. package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1187. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +202 -0
  1188. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +13 -0
  1189. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +40 -0
  1190. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  1191. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  1192. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +228 -0
  1193. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  1194. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -0
  1195. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +151 -0
  1196. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +562 -0
  1197. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  1198. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -0
  1199. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  1200. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  1201. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +16 -0
  1202. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +22 -0
  1203. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  1204. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  1205. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -0
  1206. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -0
  1207. package/node_modules/three/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  1208. package/node_modules/three/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  1209. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  1210. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +27 -0
  1211. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +38 -0
  1212. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +36 -0
  1213. package/node_modules/three/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -0
  1214. package/node_modules/three/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +33 -0
  1215. package/node_modules/three/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  1216. package/node_modules/three/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  1217. package/node_modules/three/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +14 -0
  1218. package/node_modules/three/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  1219. package/node_modules/three/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -0
  1220. package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +68 -0
  1221. package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +8 -0
  1222. package/node_modules/three/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -0
  1223. package/node_modules/three/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  1224. package/node_modules/three/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  1225. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +314 -0
  1226. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +68 -0
  1227. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +68 -0
  1228. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +66 -0
  1229. package/node_modules/three/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  1230. package/node_modules/three/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -0
  1231. package/node_modules/three/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  1232. package/node_modules/three/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  1233. package/node_modules/three/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  1234. package/node_modules/three/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  1235. package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  1236. package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +169 -0
  1237. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  1238. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +201 -0
  1239. package/node_modules/three/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +119 -0
  1240. package/node_modules/three/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +145 -0
  1241. package/node_modules/three/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +122 -0
  1242. package/node_modules/three/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -0
  1243. package/node_modules/three/src/renderers/shaders/ShaderChunk.js +270 -0
  1244. package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +40 -0
  1245. package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  1246. package/node_modules/three/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -0
  1247. package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +95 -0
  1248. package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +76 -0
  1249. package/node_modules/three/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  1250. package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +75 -0
  1251. package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +115 -0
  1252. package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +124 -0
  1253. package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +111 -0
  1254. package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +86 -0
  1255. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +126 -0
  1256. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +224 -0
  1257. package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +118 -0
  1258. package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +86 -0
  1259. package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +57 -0
  1260. package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +81 -0
  1261. package/node_modules/three/src/renderers/shaders/ShaderLib/vsm.glsl.js +53 -0
  1262. package/node_modules/three/src/renderers/shaders/ShaderLib.js +359 -0
  1263. package/node_modules/three/src/renderers/shaders/UniformsLib.js +230 -0
  1264. package/node_modules/three/src/renderers/shaders/UniformsUtils.js +104 -0
  1265. package/node_modules/three/src/renderers/webgl/WebGLAnimation.js +53 -0
  1266. package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +229 -0
  1267. package/node_modules/three/src/renderers/webgl/WebGLBackground.js +239 -0
  1268. package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +631 -0
  1269. package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +92 -0
  1270. package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +120 -0
  1271. package/node_modules/three/src/renderers/webgl/WebGLClipping.js +171 -0
  1272. package/node_modules/three/src/renderers/webgl/WebGLCubeMaps.js +99 -0
  1273. package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +130 -0
  1274. package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +97 -0
  1275. package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +211 -0
  1276. package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +102 -0
  1277. package/node_modules/three/src/renderers/webgl/WebGLInfo.js +71 -0
  1278. package/node_modules/three/src/renderers/webgl/WebGLLights.js +590 -0
  1279. package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +567 -0
  1280. package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +300 -0
  1281. package/node_modules/three/src/renderers/webgl/WebGLObjects.js +92 -0
  1282. package/node_modules/three/src/renderers/webgl/WebGLProgram.js +1109 -0
  1283. package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +661 -0
  1284. package/node_modules/three/src/renderers/webgl/WebGLProperties.js +48 -0
  1285. package/node_modules/three/src/renderers/webgl/WebGLRenderLists.js +238 -0
  1286. package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +107 -0
  1287. package/node_modules/three/src/renderers/webgl/WebGLShader.js +12 -0
  1288. package/node_modules/three/src/renderers/webgl/WebGLShaderCache.js +124 -0
  1289. package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +424 -0
  1290. package/node_modules/three/src/renderers/webgl/WebGLState.js +1328 -0
  1291. package/node_modules/three/src/renderers/webgl/WebGLTextures.js +2183 -0
  1292. package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +1156 -0
  1293. package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +392 -0
  1294. package/node_modules/three/src/renderers/webgl/WebGLUtils.js +283 -0
  1295. package/node_modules/three/src/renderers/webxr/WebXRController.js +343 -0
  1296. package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +105 -0
  1297. package/node_modules/three/src/renderers/webxr/WebXRManager.js +824 -0
  1298. package/node_modules/three/src/scenes/Fog.js +38 -0
  1299. package/node_modules/three/src/scenes/FogExp2.js +35 -0
  1300. package/node_modules/three/src/scenes/Scene.js +63 -0
  1301. package/node_modules/three/src/textures/CanvasTexture.js +17 -0
  1302. package/node_modules/three/src/textures/CompressedArrayTexture.js +18 -0
  1303. package/node_modules/three/src/textures/CompressedCubeTexture.js +19 -0
  1304. package/node_modules/three/src/textures/CompressedTexture.js +28 -0
  1305. package/node_modules/three/src/textures/CubeTexture.js +33 -0
  1306. package/node_modules/three/src/textures/Data3DTexture.js +35 -0
  1307. package/node_modules/three/src/textures/DataArrayTexture.js +27 -0
  1308. package/node_modules/three/src/textures/DataTexture.js +22 -0
  1309. package/node_modules/three/src/textures/DepthTexture.js +58 -0
  1310. package/node_modules/three/src/textures/FramebufferTexture.js +23 -0
  1311. package/node_modules/three/src/textures/Source.js +128 -0
  1312. package/node_modules/three/src/textures/Texture.js +338 -0
  1313. package/node_modules/three/src/textures/VideoTexture.js +55 -0
  1314. package/node_modules/three/src/utils.js +91 -0
  1315. package/package.json +63 -0
@@ -0,0 +1,3173 @@
1
+ import {
2
+ Box2,
3
+ BufferGeometry,
4
+ FileLoader,
5
+ Float32BufferAttribute,
6
+ Loader,
7
+ Matrix3,
8
+ Path,
9
+ Shape,
10
+ ShapePath,
11
+ ShapeUtils,
12
+ SRGBColorSpace,
13
+ Vector2,
14
+ Vector3
15
+ } from 'three';
16
+
17
+ const COLOR_SPACE_SVG = SRGBColorSpace;
18
+
19
+ class SVGLoader extends Loader {
20
+
21
+ constructor( manager ) {
22
+
23
+ super( manager );
24
+
25
+ // Default dots per inch
26
+ this.defaultDPI = 90;
27
+
28
+ // Accepted units: 'mm', 'cm', 'in', 'pt', 'pc', 'px'
29
+ this.defaultUnit = 'px';
30
+
31
+ }
32
+
33
+ load( url, onLoad, onProgress, onError ) {
34
+
35
+ const scope = this;
36
+
37
+ const loader = new FileLoader( scope.manager );
38
+ loader.setPath( scope.path );
39
+ loader.setRequestHeader( scope.requestHeader );
40
+ loader.setWithCredentials( scope.withCredentials );
41
+ loader.load( url, function ( text ) {
42
+
43
+ try {
44
+
45
+ onLoad( scope.parse( text ) );
46
+
47
+ } catch ( e ) {
48
+
49
+ if ( onError ) {
50
+
51
+ onError( e );
52
+
53
+ } else {
54
+
55
+ console.error( e );
56
+
57
+ }
58
+
59
+ scope.manager.itemError( url );
60
+
61
+ }
62
+
63
+ }, onProgress, onError );
64
+
65
+ }
66
+
67
+ parse( text ) {
68
+
69
+ const scope = this;
70
+
71
+ function parseNode( node, style ) {
72
+
73
+ if ( node.nodeType !== 1 ) return;
74
+
75
+ const transform = getNodeTransform( node );
76
+
77
+ let isDefsNode = false;
78
+
79
+ let path = null;
80
+
81
+ switch ( node.nodeName ) {
82
+
83
+ case 'svg':
84
+ style = parseStyle( node, style );
85
+ break;
86
+
87
+ case 'style':
88
+ parseCSSStylesheet( node );
89
+ break;
90
+
91
+ case 'g':
92
+ style = parseStyle( node, style );
93
+ break;
94
+
95
+ case 'path':
96
+ style = parseStyle( node, style );
97
+ if ( node.hasAttribute( 'd' ) ) path = parsePathNode( node );
98
+ break;
99
+
100
+ case 'rect':
101
+ style = parseStyle( node, style );
102
+ path = parseRectNode( node );
103
+ break;
104
+
105
+ case 'polygon':
106
+ style = parseStyle( node, style );
107
+ path = parsePolygonNode( node );
108
+ break;
109
+
110
+ case 'polyline':
111
+ style = parseStyle( node, style );
112
+ path = parsePolylineNode( node );
113
+ break;
114
+
115
+ case 'circle':
116
+ style = parseStyle( node, style );
117
+ path = parseCircleNode( node );
118
+ break;
119
+
120
+ case 'ellipse':
121
+ style = parseStyle( node, style );
122
+ path = parseEllipseNode( node );
123
+ break;
124
+
125
+ case 'line':
126
+ style = parseStyle( node, style );
127
+ path = parseLineNode( node );
128
+ break;
129
+
130
+ case 'defs':
131
+ isDefsNode = true;
132
+ break;
133
+
134
+ case 'use':
135
+ style = parseStyle( node, style );
136
+
137
+ const href = node.getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ) || '';
138
+ const usedNodeId = href.substring( 1 );
139
+ const usedNode = node.viewportElement.getElementById( usedNodeId );
140
+ if ( usedNode ) {
141
+
142
+ parseNode( usedNode, style );
143
+
144
+ } else {
145
+
146
+ console.warn( 'SVGLoader: \'use node\' references non-existent node id: ' + usedNodeId );
147
+
148
+ }
149
+
150
+ break;
151
+
152
+ default:
153
+ // console.log( node );
154
+
155
+ }
156
+
157
+ if ( path ) {
158
+
159
+ if ( style.fill !== undefined && style.fill !== 'none' ) {
160
+
161
+ path.color.setStyle( style.fill, COLOR_SPACE_SVG );
162
+
163
+ }
164
+
165
+ transformPath( path, currentTransform );
166
+
167
+ paths.push( path );
168
+
169
+ path.userData = { node: node, style: style };
170
+
171
+ }
172
+
173
+ const childNodes = node.childNodes;
174
+
175
+ for ( let i = 0; i < childNodes.length; i ++ ) {
176
+
177
+ const node = childNodes[ i ];
178
+
179
+ if ( isDefsNode && node.nodeName !== 'style' && node.nodeName !== 'defs' ) {
180
+
181
+ // Ignore everything in defs except CSS style definitions
182
+ // and nested defs, because it is OK by the standard to have
183
+ // <style/> there.
184
+ continue;
185
+
186
+ }
187
+
188
+ parseNode( node, style );
189
+
190
+ }
191
+
192
+
193
+ if ( transform ) {
194
+
195
+ transformStack.pop();
196
+
197
+ if ( transformStack.length > 0 ) {
198
+
199
+ currentTransform.copy( transformStack[ transformStack.length - 1 ] );
200
+
201
+ } else {
202
+
203
+ currentTransform.identity();
204
+
205
+ }
206
+
207
+ }
208
+
209
+ }
210
+
211
+ function parsePathNode( node ) {
212
+
213
+ const path = new ShapePath();
214
+
215
+ const point = new Vector2();
216
+ const control = new Vector2();
217
+
218
+ const firstPoint = new Vector2();
219
+ let isFirstPoint = true;
220
+ let doSetFirstPoint = false;
221
+
222
+ const d = node.getAttribute( 'd' );
223
+
224
+ if ( d === '' || d === 'none' ) return null;
225
+
226
+ // console.log( d );
227
+
228
+ const commands = d.match( /[a-df-z][^a-df-z]*/ig );
229
+
230
+ for ( let i = 0, l = commands.length; i < l; i ++ ) {
231
+
232
+ const command = commands[ i ];
233
+
234
+ const type = command.charAt( 0 );
235
+ const data = command.slice( 1 ).trim();
236
+
237
+ if ( isFirstPoint === true ) {
238
+
239
+ doSetFirstPoint = true;
240
+ isFirstPoint = false;
241
+
242
+ }
243
+
244
+ let numbers;
245
+
246
+ switch ( type ) {
247
+
248
+ case 'M':
249
+ numbers = parseFloats( data );
250
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
251
+
252
+ point.x = numbers[ j + 0 ];
253
+ point.y = numbers[ j + 1 ];
254
+ control.x = point.x;
255
+ control.y = point.y;
256
+
257
+ if ( j === 0 ) {
258
+
259
+ path.moveTo( point.x, point.y );
260
+
261
+ } else {
262
+
263
+ path.lineTo( point.x, point.y );
264
+
265
+ }
266
+
267
+ if ( j === 0 ) firstPoint.copy( point );
268
+
269
+ }
270
+
271
+ break;
272
+
273
+ case 'H':
274
+ numbers = parseFloats( data );
275
+
276
+ for ( let j = 0, jl = numbers.length; j < jl; j ++ ) {
277
+
278
+ point.x = numbers[ j ];
279
+ control.x = point.x;
280
+ control.y = point.y;
281
+ path.lineTo( point.x, point.y );
282
+
283
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
284
+
285
+ }
286
+
287
+ break;
288
+
289
+ case 'V':
290
+ numbers = parseFloats( data );
291
+
292
+ for ( let j = 0, jl = numbers.length; j < jl; j ++ ) {
293
+
294
+ point.y = numbers[ j ];
295
+ control.x = point.x;
296
+ control.y = point.y;
297
+ path.lineTo( point.x, point.y );
298
+
299
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
300
+
301
+ }
302
+
303
+ break;
304
+
305
+ case 'L':
306
+ numbers = parseFloats( data );
307
+
308
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
309
+
310
+ point.x = numbers[ j + 0 ];
311
+ point.y = numbers[ j + 1 ];
312
+ control.x = point.x;
313
+ control.y = point.y;
314
+ path.lineTo( point.x, point.y );
315
+
316
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
317
+
318
+ }
319
+
320
+ break;
321
+
322
+ case 'C':
323
+ numbers = parseFloats( data );
324
+
325
+ for ( let j = 0, jl = numbers.length; j < jl; j += 6 ) {
326
+
327
+ path.bezierCurveTo(
328
+ numbers[ j + 0 ],
329
+ numbers[ j + 1 ],
330
+ numbers[ j + 2 ],
331
+ numbers[ j + 3 ],
332
+ numbers[ j + 4 ],
333
+ numbers[ j + 5 ]
334
+ );
335
+ control.x = numbers[ j + 2 ];
336
+ control.y = numbers[ j + 3 ];
337
+ point.x = numbers[ j + 4 ];
338
+ point.y = numbers[ j + 5 ];
339
+
340
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
341
+
342
+ }
343
+
344
+ break;
345
+
346
+ case 'S':
347
+ numbers = parseFloats( data );
348
+
349
+ for ( let j = 0, jl = numbers.length; j < jl; j += 4 ) {
350
+
351
+ path.bezierCurveTo(
352
+ getReflection( point.x, control.x ),
353
+ getReflection( point.y, control.y ),
354
+ numbers[ j + 0 ],
355
+ numbers[ j + 1 ],
356
+ numbers[ j + 2 ],
357
+ numbers[ j + 3 ]
358
+ );
359
+ control.x = numbers[ j + 0 ];
360
+ control.y = numbers[ j + 1 ];
361
+ point.x = numbers[ j + 2 ];
362
+ point.y = numbers[ j + 3 ];
363
+
364
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
365
+
366
+ }
367
+
368
+ break;
369
+
370
+ case 'Q':
371
+ numbers = parseFloats( data );
372
+
373
+ for ( let j = 0, jl = numbers.length; j < jl; j += 4 ) {
374
+
375
+ path.quadraticCurveTo(
376
+ numbers[ j + 0 ],
377
+ numbers[ j + 1 ],
378
+ numbers[ j + 2 ],
379
+ numbers[ j + 3 ]
380
+ );
381
+ control.x = numbers[ j + 0 ];
382
+ control.y = numbers[ j + 1 ];
383
+ point.x = numbers[ j + 2 ];
384
+ point.y = numbers[ j + 3 ];
385
+
386
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
387
+
388
+ }
389
+
390
+ break;
391
+
392
+ case 'T':
393
+ numbers = parseFloats( data );
394
+
395
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
396
+
397
+ const rx = getReflection( point.x, control.x );
398
+ const ry = getReflection( point.y, control.y );
399
+ path.quadraticCurveTo(
400
+ rx,
401
+ ry,
402
+ numbers[ j + 0 ],
403
+ numbers[ j + 1 ]
404
+ );
405
+ control.x = rx;
406
+ control.y = ry;
407
+ point.x = numbers[ j + 0 ];
408
+ point.y = numbers[ j + 1 ];
409
+
410
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
411
+
412
+ }
413
+
414
+ break;
415
+
416
+ case 'A':
417
+ numbers = parseFloats( data, [ 3, 4 ], 7 );
418
+
419
+ for ( let j = 0, jl = numbers.length; j < jl; j += 7 ) {
420
+
421
+ // skip command if start point == end point
422
+ if ( numbers[ j + 5 ] == point.x && numbers[ j + 6 ] == point.y ) continue;
423
+
424
+ const start = point.clone();
425
+ point.x = numbers[ j + 5 ];
426
+ point.y = numbers[ j + 6 ];
427
+ control.x = point.x;
428
+ control.y = point.y;
429
+ parseArcCommand(
430
+ path, numbers[ j ], numbers[ j + 1 ], numbers[ j + 2 ], numbers[ j + 3 ], numbers[ j + 4 ], start, point
431
+ );
432
+
433
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
434
+
435
+ }
436
+
437
+ break;
438
+
439
+ case 'm':
440
+ numbers = parseFloats( data );
441
+
442
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
443
+
444
+ point.x += numbers[ j + 0 ];
445
+ point.y += numbers[ j + 1 ];
446
+ control.x = point.x;
447
+ control.y = point.y;
448
+
449
+ if ( j === 0 ) {
450
+
451
+ path.moveTo( point.x, point.y );
452
+
453
+ } else {
454
+
455
+ path.lineTo( point.x, point.y );
456
+
457
+ }
458
+
459
+ if ( j === 0 ) firstPoint.copy( point );
460
+
461
+ }
462
+
463
+ break;
464
+
465
+ case 'h':
466
+ numbers = parseFloats( data );
467
+
468
+ for ( let j = 0, jl = numbers.length; j < jl; j ++ ) {
469
+
470
+ point.x += numbers[ j ];
471
+ control.x = point.x;
472
+ control.y = point.y;
473
+ path.lineTo( point.x, point.y );
474
+
475
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
476
+
477
+ }
478
+
479
+ break;
480
+
481
+ case 'v':
482
+ numbers = parseFloats( data );
483
+
484
+ for ( let j = 0, jl = numbers.length; j < jl; j ++ ) {
485
+
486
+ point.y += numbers[ j ];
487
+ control.x = point.x;
488
+ control.y = point.y;
489
+ path.lineTo( point.x, point.y );
490
+
491
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
492
+
493
+ }
494
+
495
+ break;
496
+
497
+ case 'l':
498
+ numbers = parseFloats( data );
499
+
500
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
501
+
502
+ point.x += numbers[ j + 0 ];
503
+ point.y += numbers[ j + 1 ];
504
+ control.x = point.x;
505
+ control.y = point.y;
506
+ path.lineTo( point.x, point.y );
507
+
508
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
509
+
510
+ }
511
+
512
+ break;
513
+
514
+ case 'c':
515
+ numbers = parseFloats( data );
516
+
517
+ for ( let j = 0, jl = numbers.length; j < jl; j += 6 ) {
518
+
519
+ path.bezierCurveTo(
520
+ point.x + numbers[ j + 0 ],
521
+ point.y + numbers[ j + 1 ],
522
+ point.x + numbers[ j + 2 ],
523
+ point.y + numbers[ j + 3 ],
524
+ point.x + numbers[ j + 4 ],
525
+ point.y + numbers[ j + 5 ]
526
+ );
527
+ control.x = point.x + numbers[ j + 2 ];
528
+ control.y = point.y + numbers[ j + 3 ];
529
+ point.x += numbers[ j + 4 ];
530
+ point.y += numbers[ j + 5 ];
531
+
532
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
533
+
534
+ }
535
+
536
+ break;
537
+
538
+ case 's':
539
+ numbers = parseFloats( data );
540
+
541
+ for ( let j = 0, jl = numbers.length; j < jl; j += 4 ) {
542
+
543
+ path.bezierCurveTo(
544
+ getReflection( point.x, control.x ),
545
+ getReflection( point.y, control.y ),
546
+ point.x + numbers[ j + 0 ],
547
+ point.y + numbers[ j + 1 ],
548
+ point.x + numbers[ j + 2 ],
549
+ point.y + numbers[ j + 3 ]
550
+ );
551
+ control.x = point.x + numbers[ j + 0 ];
552
+ control.y = point.y + numbers[ j + 1 ];
553
+ point.x += numbers[ j + 2 ];
554
+ point.y += numbers[ j + 3 ];
555
+
556
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
557
+
558
+ }
559
+
560
+ break;
561
+
562
+ case 'q':
563
+ numbers = parseFloats( data );
564
+
565
+ for ( let j = 0, jl = numbers.length; j < jl; j += 4 ) {
566
+
567
+ path.quadraticCurveTo(
568
+ point.x + numbers[ j + 0 ],
569
+ point.y + numbers[ j + 1 ],
570
+ point.x + numbers[ j + 2 ],
571
+ point.y + numbers[ j + 3 ]
572
+ );
573
+ control.x = point.x + numbers[ j + 0 ];
574
+ control.y = point.y + numbers[ j + 1 ];
575
+ point.x += numbers[ j + 2 ];
576
+ point.y += numbers[ j + 3 ];
577
+
578
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
579
+
580
+ }
581
+
582
+ break;
583
+
584
+ case 't':
585
+ numbers = parseFloats( data );
586
+
587
+ for ( let j = 0, jl = numbers.length; j < jl; j += 2 ) {
588
+
589
+ const rx = getReflection( point.x, control.x );
590
+ const ry = getReflection( point.y, control.y );
591
+ path.quadraticCurveTo(
592
+ rx,
593
+ ry,
594
+ point.x + numbers[ j + 0 ],
595
+ point.y + numbers[ j + 1 ]
596
+ );
597
+ control.x = rx;
598
+ control.y = ry;
599
+ point.x = point.x + numbers[ j + 0 ];
600
+ point.y = point.y + numbers[ j + 1 ];
601
+
602
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
603
+
604
+ }
605
+
606
+ break;
607
+
608
+ case 'a':
609
+ numbers = parseFloats( data, [ 3, 4 ], 7 );
610
+
611
+ for ( let j = 0, jl = numbers.length; j < jl; j += 7 ) {
612
+
613
+ // skip command if no displacement
614
+ if ( numbers[ j + 5 ] == 0 && numbers[ j + 6 ] == 0 ) continue;
615
+
616
+ const start = point.clone();
617
+ point.x += numbers[ j + 5 ];
618
+ point.y += numbers[ j + 6 ];
619
+ control.x = point.x;
620
+ control.y = point.y;
621
+ parseArcCommand(
622
+ path, numbers[ j ], numbers[ j + 1 ], numbers[ j + 2 ], numbers[ j + 3 ], numbers[ j + 4 ], start, point
623
+ );
624
+
625
+ if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
626
+
627
+ }
628
+
629
+ break;
630
+
631
+ case 'Z':
632
+ case 'z':
633
+ path.currentPath.autoClose = true;
634
+
635
+ if ( path.currentPath.curves.length > 0 ) {
636
+
637
+ // Reset point to beginning of Path
638
+ point.copy( firstPoint );
639
+ path.currentPath.currentPoint.copy( point );
640
+ isFirstPoint = true;
641
+
642
+ }
643
+
644
+ break;
645
+
646
+ default:
647
+ console.warn( command );
648
+
649
+ }
650
+
651
+ // console.log( type, parseFloats( data ), parseFloats( data ).length )
652
+
653
+ doSetFirstPoint = false;
654
+
655
+ }
656
+
657
+ return path;
658
+
659
+ }
660
+
661
+ function parseCSSStylesheet( node ) {
662
+
663
+ if ( ! node.sheet || ! node.sheet.cssRules || ! node.sheet.cssRules.length ) return;
664
+
665
+ for ( let i = 0; i < node.sheet.cssRules.length; i ++ ) {
666
+
667
+ const stylesheet = node.sheet.cssRules[ i ];
668
+
669
+ if ( stylesheet.type !== 1 ) continue;
670
+
671
+ const selectorList = stylesheet.selectorText
672
+ .split( /,/gm )
673
+ .filter( Boolean )
674
+ .map( i => i.trim() );
675
+
676
+ for ( let j = 0; j < selectorList.length; j ++ ) {
677
+
678
+ // Remove empty rules
679
+ const definitions = Object.fromEntries(
680
+ Object.entries( stylesheet.style ).filter( ( [ , v ] ) => v !== '' )
681
+ );
682
+
683
+ stylesheets[ selectorList[ j ] ] = Object.assign(
684
+ stylesheets[ selectorList[ j ] ] || {},
685
+ definitions
686
+ );
687
+
688
+ }
689
+
690
+ }
691
+
692
+ }
693
+
694
+ /**
695
+ * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
696
+ * https://mortoray.com/2017/02/16/rendering-an-svg-elliptical-arc-as-bezier-curves/ Appendix: Endpoint to center arc conversion
697
+ * From
698
+ * rx ry x-axis-rotation large-arc-flag sweep-flag x y
699
+ * To
700
+ * aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation
701
+ */
702
+
703
+ function parseArcCommand( path, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, start, end ) {
704
+
705
+ if ( rx == 0 || ry == 0 ) {
706
+
707
+ // draw a line if either of the radii == 0
708
+ path.lineTo( end.x, end.y );
709
+ return;
710
+
711
+ }
712
+
713
+ x_axis_rotation = x_axis_rotation * Math.PI / 180;
714
+
715
+ // Ensure radii are positive
716
+ rx = Math.abs( rx );
717
+ ry = Math.abs( ry );
718
+
719
+ // Compute (x1', y1')
720
+ const dx2 = ( start.x - end.x ) / 2.0;
721
+ const dy2 = ( start.y - end.y ) / 2.0;
722
+ const x1p = Math.cos( x_axis_rotation ) * dx2 + Math.sin( x_axis_rotation ) * dy2;
723
+ const y1p = - Math.sin( x_axis_rotation ) * dx2 + Math.cos( x_axis_rotation ) * dy2;
724
+
725
+ // Compute (cx', cy')
726
+ let rxs = rx * rx;
727
+ let rys = ry * ry;
728
+ const x1ps = x1p * x1p;
729
+ const y1ps = y1p * y1p;
730
+
731
+ // Ensure radii are large enough
732
+ const cr = x1ps / rxs + y1ps / rys;
733
+
734
+ if ( cr > 1 ) {
735
+
736
+ // scale up rx,ry equally so cr == 1
737
+ const s = Math.sqrt( cr );
738
+ rx = s * rx;
739
+ ry = s * ry;
740
+ rxs = rx * rx;
741
+ rys = ry * ry;
742
+
743
+ }
744
+
745
+ const dq = ( rxs * y1ps + rys * x1ps );
746
+ const pq = ( rxs * rys - dq ) / dq;
747
+ let q = Math.sqrt( Math.max( 0, pq ) );
748
+ if ( large_arc_flag === sweep_flag ) q = - q;
749
+ const cxp = q * rx * y1p / ry;
750
+ const cyp = - q * ry * x1p / rx;
751
+
752
+ // Step 3: Compute (cx, cy) from (cx', cy')
753
+ const cx = Math.cos( x_axis_rotation ) * cxp - Math.sin( x_axis_rotation ) * cyp + ( start.x + end.x ) / 2;
754
+ const cy = Math.sin( x_axis_rotation ) * cxp + Math.cos( x_axis_rotation ) * cyp + ( start.y + end.y ) / 2;
755
+
756
+ // Step 4: Compute θ1 and Δθ
757
+ const theta = svgAngle( 1, 0, ( x1p - cxp ) / rx, ( y1p - cyp ) / ry );
758
+ const delta = svgAngle( ( x1p - cxp ) / rx, ( y1p - cyp ) / ry, ( - x1p - cxp ) / rx, ( - y1p - cyp ) / ry ) % ( Math.PI * 2 );
759
+
760
+ path.currentPath.absellipse( cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation );
761
+
762
+ }
763
+
764
+ function svgAngle( ux, uy, vx, vy ) {
765
+
766
+ const dot = ux * vx + uy * vy;
767
+ const len = Math.sqrt( ux * ux + uy * uy ) * Math.sqrt( vx * vx + vy * vy );
768
+ let ang = Math.acos( Math.max( - 1, Math.min( 1, dot / len ) ) ); // floating point precision, slightly over values appear
769
+ if ( ( ux * vy - uy * vx ) < 0 ) ang = - ang;
770
+ return ang;
771
+
772
+ }
773
+
774
+ /*
775
+ * According to https://www.w3.org/TR/SVG/shapes.html#RectElementRXAttribute
776
+ * rounded corner should be rendered to elliptical arc, but bezier curve does the job well enough
777
+ */
778
+ function parseRectNode( node ) {
779
+
780
+ const x = parseFloatWithUnits( node.getAttribute( 'x' ) || 0 );
781
+ const y = parseFloatWithUnits( node.getAttribute( 'y' ) || 0 );
782
+ const rx = parseFloatWithUnits( node.getAttribute( 'rx' ) || node.getAttribute( 'ry' ) || 0 );
783
+ const ry = parseFloatWithUnits( node.getAttribute( 'ry' ) || node.getAttribute( 'rx' ) || 0 );
784
+ const w = parseFloatWithUnits( node.getAttribute( 'width' ) );
785
+ const h = parseFloatWithUnits( node.getAttribute( 'height' ) );
786
+
787
+ // Ellipse arc to Bezier approximation Coefficient (Inversed). See:
788
+ // https://spencermortensen.com/articles/bezier-circle/
789
+ const bci = 1 - 0.551915024494;
790
+
791
+ const path = new ShapePath();
792
+
793
+ // top left
794
+ path.moveTo( x + rx, y );
795
+
796
+ // top right
797
+ path.lineTo( x + w - rx, y );
798
+ if ( rx !== 0 || ry !== 0 ) {
799
+
800
+ path.bezierCurveTo(
801
+ x + w - rx * bci,
802
+ y,
803
+ x + w,
804
+ y + ry * bci,
805
+ x + w,
806
+ y + ry
807
+ );
808
+
809
+ }
810
+
811
+ // bottom right
812
+ path.lineTo( x + w, y + h - ry );
813
+ if ( rx !== 0 || ry !== 0 ) {
814
+
815
+ path.bezierCurveTo(
816
+ x + w,
817
+ y + h - ry * bci,
818
+ x + w - rx * bci,
819
+ y + h,
820
+ x + w - rx,
821
+ y + h
822
+ );
823
+
824
+ }
825
+
826
+ // bottom left
827
+ path.lineTo( x + rx, y + h );
828
+ if ( rx !== 0 || ry !== 0 ) {
829
+
830
+ path.bezierCurveTo(
831
+ x + rx * bci,
832
+ y + h,
833
+ x,
834
+ y + h - ry * bci,
835
+ x,
836
+ y + h - ry
837
+ );
838
+
839
+ }
840
+
841
+ // back to top left
842
+ path.lineTo( x, y + ry );
843
+ if ( rx !== 0 || ry !== 0 ) {
844
+
845
+ path.bezierCurveTo( x, y + ry * bci, x + rx * bci, y, x + rx, y );
846
+
847
+ }
848
+
849
+ return path;
850
+
851
+ }
852
+
853
+ function parsePolygonNode( node ) {
854
+
855
+ function iterator( match, a, b ) {
856
+
857
+ const x = parseFloatWithUnits( a );
858
+ const y = parseFloatWithUnits( b );
859
+
860
+ if ( index === 0 ) {
861
+
862
+ path.moveTo( x, y );
863
+
864
+ } else {
865
+
866
+ path.lineTo( x, y );
867
+
868
+ }
869
+
870
+ index ++;
871
+
872
+ }
873
+
874
+ const regex = /([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;
875
+
876
+ const path = new ShapePath();
877
+
878
+ let index = 0;
879
+
880
+ node.getAttribute( 'points' ).replace( regex, iterator );
881
+
882
+ path.currentPath.autoClose = true;
883
+
884
+ return path;
885
+
886
+ }
887
+
888
+ function parsePolylineNode( node ) {
889
+
890
+ function iterator( match, a, b ) {
891
+
892
+ const x = parseFloatWithUnits( a );
893
+ const y = parseFloatWithUnits( b );
894
+
895
+ if ( index === 0 ) {
896
+
897
+ path.moveTo( x, y );
898
+
899
+ } else {
900
+
901
+ path.lineTo( x, y );
902
+
903
+ }
904
+
905
+ index ++;
906
+
907
+ }
908
+
909
+ const regex = /([+-]?\d*\.?\d+(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;
910
+
911
+ const path = new ShapePath();
912
+
913
+ let index = 0;
914
+
915
+ node.getAttribute( 'points' ).replace( regex, iterator );
916
+
917
+ path.currentPath.autoClose = false;
918
+
919
+ return path;
920
+
921
+ }
922
+
923
+ function parseCircleNode( node ) {
924
+
925
+ const x = parseFloatWithUnits( node.getAttribute( 'cx' ) || 0 );
926
+ const y = parseFloatWithUnits( node.getAttribute( 'cy' ) || 0 );
927
+ const r = parseFloatWithUnits( node.getAttribute( 'r' ) || 0 );
928
+
929
+ const subpath = new Path();
930
+ subpath.absarc( x, y, r, 0, Math.PI * 2 );
931
+
932
+ const path = new ShapePath();
933
+ path.subPaths.push( subpath );
934
+
935
+ return path;
936
+
937
+ }
938
+
939
+ function parseEllipseNode( node ) {
940
+
941
+ const x = parseFloatWithUnits( node.getAttribute( 'cx' ) || 0 );
942
+ const y = parseFloatWithUnits( node.getAttribute( 'cy' ) || 0 );
943
+ const rx = parseFloatWithUnits( node.getAttribute( 'rx' ) || 0 );
944
+ const ry = parseFloatWithUnits( node.getAttribute( 'ry' ) || 0 );
945
+
946
+ const subpath = new Path();
947
+ subpath.absellipse( x, y, rx, ry, 0, Math.PI * 2 );
948
+
949
+ const path = new ShapePath();
950
+ path.subPaths.push( subpath );
951
+
952
+ return path;
953
+
954
+ }
955
+
956
+ function parseLineNode( node ) {
957
+
958
+ const x1 = parseFloatWithUnits( node.getAttribute( 'x1' ) || 0 );
959
+ const y1 = parseFloatWithUnits( node.getAttribute( 'y1' ) || 0 );
960
+ const x2 = parseFloatWithUnits( node.getAttribute( 'x2' ) || 0 );
961
+ const y2 = parseFloatWithUnits( node.getAttribute( 'y2' ) || 0 );
962
+
963
+ const path = new ShapePath();
964
+ path.moveTo( x1, y1 );
965
+ path.lineTo( x2, y2 );
966
+ path.currentPath.autoClose = false;
967
+
968
+ return path;
969
+
970
+ }
971
+
972
+ //
973
+
974
+ function parseStyle( node, style ) {
975
+
976
+ style = Object.assign( {}, style ); // clone style
977
+
978
+ let stylesheetStyles = {};
979
+
980
+ if ( node.hasAttribute( 'class' ) ) {
981
+
982
+ const classSelectors = node.getAttribute( 'class' )
983
+ .split( /\s/ )
984
+ .filter( Boolean )
985
+ .map( i => i.trim() );
986
+
987
+ for ( let i = 0; i < classSelectors.length; i ++ ) {
988
+
989
+ stylesheetStyles = Object.assign( stylesheetStyles, stylesheets[ '.' + classSelectors[ i ] ] );
990
+
991
+ }
992
+
993
+ }
994
+
995
+ if ( node.hasAttribute( 'id' ) ) {
996
+
997
+ stylesheetStyles = Object.assign( stylesheetStyles, stylesheets[ '#' + node.getAttribute( 'id' ) ] );
998
+
999
+ }
1000
+
1001
+ function addStyle( svgName, jsName, adjustFunction ) {
1002
+
1003
+ if ( adjustFunction === undefined ) adjustFunction = function copy( v ) {
1004
+
1005
+ if ( v.startsWith( 'url' ) ) console.warn( 'SVGLoader: url access in attributes is not implemented.' );
1006
+
1007
+ return v;
1008
+
1009
+ };
1010
+
1011
+ if ( node.hasAttribute( svgName ) ) style[ jsName ] = adjustFunction( node.getAttribute( svgName ) );
1012
+ if ( stylesheetStyles[ svgName ] ) style[ jsName ] = adjustFunction( stylesheetStyles[ svgName ] );
1013
+ if ( node.style && node.style[ svgName ] !== '' ) style[ jsName ] = adjustFunction( node.style[ svgName ] );
1014
+
1015
+ }
1016
+
1017
+ function clamp( v ) {
1018
+
1019
+ return Math.max( 0, Math.min( 1, parseFloatWithUnits( v ) ) );
1020
+
1021
+ }
1022
+
1023
+ function positive( v ) {
1024
+
1025
+ return Math.max( 0, parseFloatWithUnits( v ) );
1026
+
1027
+ }
1028
+
1029
+ addStyle( 'fill', 'fill' );
1030
+ addStyle( 'fill-opacity', 'fillOpacity', clamp );
1031
+ addStyle( 'fill-rule', 'fillRule' );
1032
+ addStyle( 'opacity', 'opacity', clamp );
1033
+ addStyle( 'stroke', 'stroke' );
1034
+ addStyle( 'stroke-opacity', 'strokeOpacity', clamp );
1035
+ addStyle( 'stroke-width', 'strokeWidth', positive );
1036
+ addStyle( 'stroke-linejoin', 'strokeLineJoin' );
1037
+ addStyle( 'stroke-linecap', 'strokeLineCap' );
1038
+ addStyle( 'stroke-miterlimit', 'strokeMiterLimit', positive );
1039
+ addStyle( 'visibility', 'visibility' );
1040
+
1041
+ return style;
1042
+
1043
+ }
1044
+
1045
+ // http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
1046
+
1047
+ function getReflection( a, b ) {
1048
+
1049
+ return a - ( b - a );
1050
+
1051
+ }
1052
+
1053
+ // from https://github.com/ppvg/svg-numbers (MIT License)
1054
+
1055
+ function parseFloats( input, flags, stride ) {
1056
+
1057
+ if ( typeof input !== 'string' ) {
1058
+
1059
+ throw new TypeError( 'Invalid input: ' + typeof input );
1060
+
1061
+ }
1062
+
1063
+ // Character groups
1064
+ const RE = {
1065
+ SEPARATOR: /[ \t\r\n\,.\-+]/,
1066
+ WHITESPACE: /[ \t\r\n]/,
1067
+ DIGIT: /[\d]/,
1068
+ SIGN: /[-+]/,
1069
+ POINT: /\./,
1070
+ COMMA: /,/,
1071
+ EXP: /e/i,
1072
+ FLAGS: /[01]/
1073
+ };
1074
+
1075
+ // States
1076
+ const SEP = 0;
1077
+ const INT = 1;
1078
+ const FLOAT = 2;
1079
+ const EXP = 3;
1080
+
1081
+ let state = SEP;
1082
+ let seenComma = true;
1083
+ let number = '', exponent = '';
1084
+ const result = [];
1085
+
1086
+ function throwSyntaxError( current, i, partial ) {
1087
+
1088
+ const error = new SyntaxError( 'Unexpected character "' + current + '" at index ' + i + '.' );
1089
+ error.partial = partial;
1090
+ throw error;
1091
+
1092
+ }
1093
+
1094
+ function newNumber() {
1095
+
1096
+ if ( number !== '' ) {
1097
+
1098
+ if ( exponent === '' ) result.push( Number( number ) );
1099
+ else result.push( Number( number ) * Math.pow( 10, Number( exponent ) ) );
1100
+
1101
+ }
1102
+
1103
+ number = '';
1104
+ exponent = '';
1105
+
1106
+ }
1107
+
1108
+ let current;
1109
+ const length = input.length;
1110
+
1111
+ for ( let i = 0; i < length; i ++ ) {
1112
+
1113
+ current = input[ i ];
1114
+
1115
+ // check for flags
1116
+ if ( Array.isArray( flags ) && flags.includes( result.length % stride ) && RE.FLAGS.test( current ) ) {
1117
+
1118
+ state = INT;
1119
+ number = current;
1120
+ newNumber();
1121
+ continue;
1122
+
1123
+ }
1124
+
1125
+ // parse until next number
1126
+ if ( state === SEP ) {
1127
+
1128
+ // eat whitespace
1129
+ if ( RE.WHITESPACE.test( current ) ) {
1130
+
1131
+ continue;
1132
+
1133
+ }
1134
+
1135
+ // start new number
1136
+ if ( RE.DIGIT.test( current ) || RE.SIGN.test( current ) ) {
1137
+
1138
+ state = INT;
1139
+ number = current;
1140
+ continue;
1141
+
1142
+ }
1143
+
1144
+ if ( RE.POINT.test( current ) ) {
1145
+
1146
+ state = FLOAT;
1147
+ number = current;
1148
+ continue;
1149
+
1150
+ }
1151
+
1152
+ // throw on double commas (e.g. "1, , 2")
1153
+ if ( RE.COMMA.test( current ) ) {
1154
+
1155
+ if ( seenComma ) {
1156
+
1157
+ throwSyntaxError( current, i, result );
1158
+
1159
+ }
1160
+
1161
+ seenComma = true;
1162
+
1163
+ }
1164
+
1165
+ }
1166
+
1167
+ // parse integer part
1168
+ if ( state === INT ) {
1169
+
1170
+ if ( RE.DIGIT.test( current ) ) {
1171
+
1172
+ number += current;
1173
+ continue;
1174
+
1175
+ }
1176
+
1177
+ if ( RE.POINT.test( current ) ) {
1178
+
1179
+ number += current;
1180
+ state = FLOAT;
1181
+ continue;
1182
+
1183
+ }
1184
+
1185
+ if ( RE.EXP.test( current ) ) {
1186
+
1187
+ state = EXP;
1188
+ continue;
1189
+
1190
+ }
1191
+
1192
+ // throw on double signs ("-+1"), but not on sign as separator ("-1-2")
1193
+ if ( RE.SIGN.test( current )
1194
+ && number.length === 1
1195
+ && RE.SIGN.test( number[ 0 ] ) ) {
1196
+
1197
+ throwSyntaxError( current, i, result );
1198
+
1199
+ }
1200
+
1201
+ }
1202
+
1203
+ // parse decimal part
1204
+ if ( state === FLOAT ) {
1205
+
1206
+ if ( RE.DIGIT.test( current ) ) {
1207
+
1208
+ number += current;
1209
+ continue;
1210
+
1211
+ }
1212
+
1213
+ if ( RE.EXP.test( current ) ) {
1214
+
1215
+ state = EXP;
1216
+ continue;
1217
+
1218
+ }
1219
+
1220
+ // throw on double decimal points (e.g. "1..2")
1221
+ if ( RE.POINT.test( current ) && number[ number.length - 1 ] === '.' ) {
1222
+
1223
+ throwSyntaxError( current, i, result );
1224
+
1225
+ }
1226
+
1227
+ }
1228
+
1229
+ // parse exponent part
1230
+ if ( state === EXP ) {
1231
+
1232
+ if ( RE.DIGIT.test( current ) ) {
1233
+
1234
+ exponent += current;
1235
+ continue;
1236
+
1237
+ }
1238
+
1239
+ if ( RE.SIGN.test( current ) ) {
1240
+
1241
+ if ( exponent === '' ) {
1242
+
1243
+ exponent += current;
1244
+ continue;
1245
+
1246
+ }
1247
+
1248
+ if ( exponent.length === 1 && RE.SIGN.test( exponent ) ) {
1249
+
1250
+ throwSyntaxError( current, i, result );
1251
+
1252
+ }
1253
+
1254
+ }
1255
+
1256
+ }
1257
+
1258
+
1259
+ // end of number
1260
+ if ( RE.WHITESPACE.test( current ) ) {
1261
+
1262
+ newNumber();
1263
+ state = SEP;
1264
+ seenComma = false;
1265
+
1266
+ } else if ( RE.COMMA.test( current ) ) {
1267
+
1268
+ newNumber();
1269
+ state = SEP;
1270
+ seenComma = true;
1271
+
1272
+ } else if ( RE.SIGN.test( current ) ) {
1273
+
1274
+ newNumber();
1275
+ state = INT;
1276
+ number = current;
1277
+
1278
+ } else if ( RE.POINT.test( current ) ) {
1279
+
1280
+ newNumber();
1281
+ state = FLOAT;
1282
+ number = current;
1283
+
1284
+ } else {
1285
+
1286
+ throwSyntaxError( current, i, result );
1287
+
1288
+ }
1289
+
1290
+ }
1291
+
1292
+ // add the last number found (if any)
1293
+ newNumber();
1294
+
1295
+ return result;
1296
+
1297
+ }
1298
+
1299
+ // Units
1300
+
1301
+ const units = [ 'mm', 'cm', 'in', 'pt', 'pc', 'px' ];
1302
+
1303
+ // Conversion: [ fromUnit ][ toUnit ] (-1 means dpi dependent)
1304
+ const unitConversion = {
1305
+
1306
+ 'mm': {
1307
+ 'mm': 1,
1308
+ 'cm': 0.1,
1309
+ 'in': 1 / 25.4,
1310
+ 'pt': 72 / 25.4,
1311
+ 'pc': 6 / 25.4,
1312
+ 'px': - 1
1313
+ },
1314
+ 'cm': {
1315
+ 'mm': 10,
1316
+ 'cm': 1,
1317
+ 'in': 1 / 2.54,
1318
+ 'pt': 72 / 2.54,
1319
+ 'pc': 6 / 2.54,
1320
+ 'px': - 1
1321
+ },
1322
+ 'in': {
1323
+ 'mm': 25.4,
1324
+ 'cm': 2.54,
1325
+ 'in': 1,
1326
+ 'pt': 72,
1327
+ 'pc': 6,
1328
+ 'px': - 1
1329
+ },
1330
+ 'pt': {
1331
+ 'mm': 25.4 / 72,
1332
+ 'cm': 2.54 / 72,
1333
+ 'in': 1 / 72,
1334
+ 'pt': 1,
1335
+ 'pc': 6 / 72,
1336
+ 'px': - 1
1337
+ },
1338
+ 'pc': {
1339
+ 'mm': 25.4 / 6,
1340
+ 'cm': 2.54 / 6,
1341
+ 'in': 1 / 6,
1342
+ 'pt': 72 / 6,
1343
+ 'pc': 1,
1344
+ 'px': - 1
1345
+ },
1346
+ 'px': {
1347
+ 'px': 1
1348
+ }
1349
+
1350
+ };
1351
+
1352
+ function parseFloatWithUnits( string ) {
1353
+
1354
+ let theUnit = 'px';
1355
+
1356
+ if ( typeof string === 'string' || string instanceof String ) {
1357
+
1358
+ for ( let i = 0, n = units.length; i < n; i ++ ) {
1359
+
1360
+ const u = units[ i ];
1361
+
1362
+ if ( string.endsWith( u ) ) {
1363
+
1364
+ theUnit = u;
1365
+ string = string.substring( 0, string.length - u.length );
1366
+ break;
1367
+
1368
+ }
1369
+
1370
+ }
1371
+
1372
+ }
1373
+
1374
+ let scale = undefined;
1375
+
1376
+ if ( theUnit === 'px' && scope.defaultUnit !== 'px' ) {
1377
+
1378
+ // Conversion scale from pixels to inches, then to default units
1379
+
1380
+ scale = unitConversion[ 'in' ][ scope.defaultUnit ] / scope.defaultDPI;
1381
+
1382
+ } else {
1383
+
1384
+ scale = unitConversion[ theUnit ][ scope.defaultUnit ];
1385
+
1386
+ if ( scale < 0 ) {
1387
+
1388
+ // Conversion scale to pixels
1389
+
1390
+ scale = unitConversion[ theUnit ][ 'in' ] * scope.defaultDPI;
1391
+
1392
+ }
1393
+
1394
+ }
1395
+
1396
+ return scale * parseFloat( string );
1397
+
1398
+ }
1399
+
1400
+ // Transforms
1401
+
1402
+ function getNodeTransform( node ) {
1403
+
1404
+ if ( ! ( node.hasAttribute( 'transform' ) || ( node.nodeName === 'use' && ( node.hasAttribute( 'x' ) || node.hasAttribute( 'y' ) ) ) ) ) {
1405
+
1406
+ return null;
1407
+
1408
+ }
1409
+
1410
+ const transform = parseNodeTransform( node );
1411
+
1412
+ if ( transformStack.length > 0 ) {
1413
+
1414
+ transform.premultiply( transformStack[ transformStack.length - 1 ] );
1415
+
1416
+ }
1417
+
1418
+ currentTransform.copy( transform );
1419
+ transformStack.push( transform );
1420
+
1421
+ return transform;
1422
+
1423
+ }
1424
+
1425
+ function parseNodeTransform( node ) {
1426
+
1427
+ const transform = new Matrix3();
1428
+ const currentTransform = tempTransform0;
1429
+
1430
+ if ( node.nodeName === 'use' && ( node.hasAttribute( 'x' ) || node.hasAttribute( 'y' ) ) ) {
1431
+
1432
+ const tx = parseFloatWithUnits( node.getAttribute( 'x' ) );
1433
+ const ty = parseFloatWithUnits( node.getAttribute( 'y' ) );
1434
+
1435
+ transform.translate( tx, ty );
1436
+
1437
+ }
1438
+
1439
+ if ( node.hasAttribute( 'transform' ) ) {
1440
+
1441
+ const transformsTexts = node.getAttribute( 'transform' ).split( ')' );
1442
+
1443
+ for ( let tIndex = transformsTexts.length - 1; tIndex >= 0; tIndex -- ) {
1444
+
1445
+ const transformText = transformsTexts[ tIndex ].trim();
1446
+
1447
+ if ( transformText === '' ) continue;
1448
+
1449
+ const openParPos = transformText.indexOf( '(' );
1450
+ const closeParPos = transformText.length;
1451
+
1452
+ if ( openParPos > 0 && openParPos < closeParPos ) {
1453
+
1454
+ const transformType = transformText.slice( 0, openParPos );
1455
+
1456
+ const array = parseFloats( transformText.slice( openParPos + 1 ) );
1457
+
1458
+ currentTransform.identity();
1459
+
1460
+ switch ( transformType ) {
1461
+
1462
+ case 'translate':
1463
+
1464
+ if ( array.length >= 1 ) {
1465
+
1466
+ const tx = array[ 0 ];
1467
+ let ty = 0;
1468
+
1469
+ if ( array.length >= 2 ) {
1470
+
1471
+ ty = array[ 1 ];
1472
+
1473
+ }
1474
+
1475
+ currentTransform.translate( tx, ty );
1476
+
1477
+ }
1478
+
1479
+ break;
1480
+
1481
+ case 'rotate':
1482
+
1483
+ if ( array.length >= 1 ) {
1484
+
1485
+ let angle = 0;
1486
+ let cx = 0;
1487
+ let cy = 0;
1488
+
1489
+ // Angle
1490
+ angle = array[ 0 ] * Math.PI / 180;
1491
+
1492
+ if ( array.length >= 3 ) {
1493
+
1494
+ // Center x, y
1495
+ cx = array[ 1 ];
1496
+ cy = array[ 2 ];
1497
+
1498
+ }
1499
+
1500
+ // Rotate around center (cx, cy)
1501
+ tempTransform1.makeTranslation( - cx, - cy );
1502
+ tempTransform2.makeRotation( angle );
1503
+ tempTransform3.multiplyMatrices( tempTransform2, tempTransform1 );
1504
+ tempTransform1.makeTranslation( cx, cy );
1505
+ currentTransform.multiplyMatrices( tempTransform1, tempTransform3 );
1506
+
1507
+ }
1508
+
1509
+ break;
1510
+
1511
+ case 'scale':
1512
+
1513
+ if ( array.length >= 1 ) {
1514
+
1515
+ const scaleX = array[ 0 ];
1516
+ let scaleY = scaleX;
1517
+
1518
+ if ( array.length >= 2 ) {
1519
+
1520
+ scaleY = array[ 1 ];
1521
+
1522
+ }
1523
+
1524
+ currentTransform.scale( scaleX, scaleY );
1525
+
1526
+ }
1527
+
1528
+ break;
1529
+
1530
+ case 'skewX':
1531
+
1532
+ if ( array.length === 1 ) {
1533
+
1534
+ currentTransform.set(
1535
+ 1, Math.tan( array[ 0 ] * Math.PI / 180 ), 0,
1536
+ 0, 1, 0,
1537
+ 0, 0, 1
1538
+ );
1539
+
1540
+ }
1541
+
1542
+ break;
1543
+
1544
+ case 'skewY':
1545
+
1546
+ if ( array.length === 1 ) {
1547
+
1548
+ currentTransform.set(
1549
+ 1, 0, 0,
1550
+ Math.tan( array[ 0 ] * Math.PI / 180 ), 1, 0,
1551
+ 0, 0, 1
1552
+ );
1553
+
1554
+ }
1555
+
1556
+ break;
1557
+
1558
+ case 'matrix':
1559
+
1560
+ if ( array.length === 6 ) {
1561
+
1562
+ currentTransform.set(
1563
+ array[ 0 ], array[ 2 ], array[ 4 ],
1564
+ array[ 1 ], array[ 3 ], array[ 5 ],
1565
+ 0, 0, 1
1566
+ );
1567
+
1568
+ }
1569
+
1570
+ break;
1571
+
1572
+ }
1573
+
1574
+ }
1575
+
1576
+ transform.premultiply( currentTransform );
1577
+
1578
+ }
1579
+
1580
+ }
1581
+
1582
+ return transform;
1583
+
1584
+ }
1585
+
1586
+ function transformPath( path, m ) {
1587
+
1588
+ function transfVec2( v2 ) {
1589
+
1590
+ tempV3.set( v2.x, v2.y, 1 ).applyMatrix3( m );
1591
+
1592
+ v2.set( tempV3.x, tempV3.y );
1593
+
1594
+ }
1595
+
1596
+ function transfEllipseGeneric( curve ) {
1597
+
1598
+ // For math description see:
1599
+ // https://math.stackexchange.com/questions/4544164
1600
+
1601
+ const a = curve.xRadius;
1602
+ const b = curve.yRadius;
1603
+
1604
+ const cosTheta = Math.cos( curve.aRotation );
1605
+ const sinTheta = Math.sin( curve.aRotation );
1606
+
1607
+ const v1 = new Vector3( a * cosTheta, a * sinTheta, 0 );
1608
+ const v2 = new Vector3( - b * sinTheta, b * cosTheta, 0 );
1609
+
1610
+ const f1 = v1.applyMatrix3( m );
1611
+ const f2 = v2.applyMatrix3( m );
1612
+
1613
+ const mF = tempTransform0.set(
1614
+ f1.x, f2.x, 0,
1615
+ f1.y, f2.y, 0,
1616
+ 0, 0, 1,
1617
+ );
1618
+
1619
+ const mFInv = tempTransform1.copy( mF ).invert();
1620
+ const mFInvT = tempTransform2.copy( mFInv ).transpose();
1621
+ const mQ = mFInvT.multiply( mFInv );
1622
+ const mQe = mQ.elements;
1623
+
1624
+ const ed = eigenDecomposition( mQe[ 0 ], mQe[ 1 ], mQe[ 4 ] );
1625
+ const rt1sqrt = Math.sqrt( ed.rt1 );
1626
+ const rt2sqrt = Math.sqrt( ed.rt2 );
1627
+
1628
+ curve.xRadius = 1 / rt1sqrt;
1629
+ curve.yRadius = 1 / rt2sqrt;
1630
+ curve.aRotation = Math.atan2( ed.sn, ed.cs );
1631
+
1632
+ const isFullEllipse =
1633
+ ( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
1634
+
1635
+ // Do not touch angles of a full ellipse because after transformation they
1636
+ // would converge to a sinle value effectively removing the whole curve
1637
+
1638
+ if ( ! isFullEllipse ) {
1639
+
1640
+ const mDsqrt = tempTransform1.set(
1641
+ rt1sqrt, 0, 0,
1642
+ 0, rt2sqrt, 0,
1643
+ 0, 0, 1,
1644
+ );
1645
+
1646
+ const mRT = tempTransform2.set(
1647
+ ed.cs, ed.sn, 0,
1648
+ - ed.sn, ed.cs, 0,
1649
+ 0, 0, 1,
1650
+ );
1651
+
1652
+ const mDRF = mDsqrt.multiply( mRT ).multiply( mF );
1653
+
1654
+ const transformAngle = phi => {
1655
+
1656
+ const { x: cosR, y: sinR } =
1657
+ new Vector3( Math.cos( phi ), Math.sin( phi ), 0 ).applyMatrix3( mDRF );
1658
+
1659
+ return Math.atan2( sinR, cosR );
1660
+
1661
+ };
1662
+
1663
+ curve.aStartAngle = transformAngle( curve.aStartAngle );
1664
+ curve.aEndAngle = transformAngle( curve.aEndAngle );
1665
+
1666
+ if ( isTransformFlipped( m ) ) {
1667
+
1668
+ curve.aClockwise = ! curve.aClockwise;
1669
+
1670
+ }
1671
+
1672
+ }
1673
+
1674
+ }
1675
+
1676
+ function transfEllipseNoSkew( curve ) {
1677
+
1678
+ // Faster shortcut if no skew is applied
1679
+ // (e.g, a euclidean transform of a group containing the ellipse)
1680
+
1681
+ const sx = getTransformScaleX( m );
1682
+ const sy = getTransformScaleY( m );
1683
+
1684
+ curve.xRadius *= sx;
1685
+ curve.yRadius *= sy;
1686
+
1687
+ // Extract rotation angle from the matrix of form:
1688
+ //
1689
+ // | cosθ sx -sinθ sy |
1690
+ // | sinθ sx cosθ sy |
1691
+ //
1692
+ // Remembering that tanθ = sinθ / cosθ; and that
1693
+ // `sx`, `sy`, or both might be zero.
1694
+ const theta =
1695
+ sx > Number.EPSILON
1696
+ ? Math.atan2( m.elements[ 1 ], m.elements[ 0 ] )
1697
+ : Math.atan2( - m.elements[ 3 ], m.elements[ 4 ] );
1698
+
1699
+ curve.aRotation += theta;
1700
+
1701
+ if ( isTransformFlipped( m ) ) {
1702
+
1703
+ curve.aStartAngle *= - 1;
1704
+ curve.aEndAngle *= - 1;
1705
+ curve.aClockwise = ! curve.aClockwise;
1706
+
1707
+ }
1708
+
1709
+ }
1710
+
1711
+ const subPaths = path.subPaths;
1712
+
1713
+ for ( let i = 0, n = subPaths.length; i < n; i ++ ) {
1714
+
1715
+ const subPath = subPaths[ i ];
1716
+ const curves = subPath.curves;
1717
+
1718
+ for ( let j = 0; j < curves.length; j ++ ) {
1719
+
1720
+ const curve = curves[ j ];
1721
+
1722
+ if ( curve.isLineCurve ) {
1723
+
1724
+ transfVec2( curve.v1 );
1725
+ transfVec2( curve.v2 );
1726
+
1727
+ } else if ( curve.isCubicBezierCurve ) {
1728
+
1729
+ transfVec2( curve.v0 );
1730
+ transfVec2( curve.v1 );
1731
+ transfVec2( curve.v2 );
1732
+ transfVec2( curve.v3 );
1733
+
1734
+ } else if ( curve.isQuadraticBezierCurve ) {
1735
+
1736
+ transfVec2( curve.v0 );
1737
+ transfVec2( curve.v1 );
1738
+ transfVec2( curve.v2 );
1739
+
1740
+ } else if ( curve.isEllipseCurve ) {
1741
+
1742
+ // Transform ellipse center point
1743
+
1744
+ tempV2.set( curve.aX, curve.aY );
1745
+ transfVec2( tempV2 );
1746
+ curve.aX = tempV2.x;
1747
+ curve.aY = tempV2.y;
1748
+
1749
+ // Transform ellipse shape parameters
1750
+
1751
+ if ( isTransformSkewed( m ) ) {
1752
+
1753
+ transfEllipseGeneric( curve );
1754
+
1755
+ } else {
1756
+
1757
+ transfEllipseNoSkew( curve );
1758
+
1759
+ }
1760
+
1761
+ }
1762
+
1763
+ }
1764
+
1765
+ }
1766
+
1767
+ }
1768
+
1769
+ function isTransformFlipped( m ) {
1770
+
1771
+ const te = m.elements;
1772
+ return te[ 0 ] * te[ 4 ] - te[ 1 ] * te[ 3 ] < 0;
1773
+
1774
+ }
1775
+
1776
+ function isTransformSkewed( m ) {
1777
+
1778
+ const te = m.elements;
1779
+ const basisDot = te[ 0 ] * te[ 3 ] + te[ 1 ] * te[ 4 ];
1780
+
1781
+ // Shortcut for trivial rotations and transformations
1782
+ if ( basisDot === 0 ) return false;
1783
+
1784
+ const sx = getTransformScaleX( m );
1785
+ const sy = getTransformScaleY( m );
1786
+
1787
+ return Math.abs( basisDot / ( sx * sy ) ) > Number.EPSILON;
1788
+
1789
+ }
1790
+
1791
+ function getTransformScaleX( m ) {
1792
+
1793
+ const te = m.elements;
1794
+ return Math.sqrt( te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] );
1795
+
1796
+ }
1797
+
1798
+ function getTransformScaleY( m ) {
1799
+
1800
+ const te = m.elements;
1801
+ return Math.sqrt( te[ 3 ] * te[ 3 ] + te[ 4 ] * te[ 4 ] );
1802
+
1803
+ }
1804
+
1805
+ // Calculates the eigensystem of a real symmetric 2x2 matrix
1806
+ // [ A B ]
1807
+ // [ B C ]
1808
+ // in the form
1809
+ // [ A B ] = [ cs -sn ] [ rt1 0 ] [ cs sn ]
1810
+ // [ B C ] [ sn cs ] [ 0 rt2 ] [ -sn cs ]
1811
+ // where rt1 >= rt2.
1812
+ //
1813
+ // Adapted from: https://www.mpi-hd.mpg.de/personalhomes/globes/3x3/index.html
1814
+ // -> Algorithms for real symmetric matrices -> Analytical (2x2 symmetric)
1815
+ function eigenDecomposition( A, B, C ) {
1816
+
1817
+ let rt1, rt2, cs, sn, t;
1818
+ const sm = A + C;
1819
+ const df = A - C;
1820
+ const rt = Math.sqrt( df * df + 4 * B * B );
1821
+
1822
+ if ( sm > 0 ) {
1823
+
1824
+ rt1 = 0.5 * ( sm + rt );
1825
+ t = 1 / rt1;
1826
+ rt2 = A * t * C - B * t * B;
1827
+
1828
+ } else if ( sm < 0 ) {
1829
+
1830
+ rt2 = 0.5 * ( sm - rt );
1831
+
1832
+ } else {
1833
+
1834
+ // This case needs to be treated separately to avoid div by 0
1835
+
1836
+ rt1 = 0.5 * rt;
1837
+ rt2 = - 0.5 * rt;
1838
+
1839
+ }
1840
+
1841
+ // Calculate eigenvectors
1842
+
1843
+ if ( df > 0 ) {
1844
+
1845
+ cs = df + rt;
1846
+
1847
+ } else {
1848
+
1849
+ cs = df - rt;
1850
+
1851
+ }
1852
+
1853
+ if ( Math.abs( cs ) > 2 * Math.abs( B ) ) {
1854
+
1855
+ t = - 2 * B / cs;
1856
+ sn = 1 / Math.sqrt( 1 + t * t );
1857
+ cs = t * sn;
1858
+
1859
+ } else if ( Math.abs( B ) === 0 ) {
1860
+
1861
+ cs = 1;
1862
+ sn = 0;
1863
+
1864
+ } else {
1865
+
1866
+ t = - 0.5 * cs / B;
1867
+ cs = 1 / Math.sqrt( 1 + t * t );
1868
+ sn = t * cs;
1869
+
1870
+ }
1871
+
1872
+ if ( df > 0 ) {
1873
+
1874
+ t = cs;
1875
+ cs = - sn;
1876
+ sn = t;
1877
+
1878
+ }
1879
+
1880
+ return { rt1, rt2, cs, sn };
1881
+
1882
+ }
1883
+
1884
+ //
1885
+
1886
+ const paths = [];
1887
+ const stylesheets = {};
1888
+
1889
+ const transformStack = [];
1890
+
1891
+ const tempTransform0 = new Matrix3();
1892
+ const tempTransform1 = new Matrix3();
1893
+ const tempTransform2 = new Matrix3();
1894
+ const tempTransform3 = new Matrix3();
1895
+ const tempV2 = new Vector2();
1896
+ const tempV3 = new Vector3();
1897
+
1898
+ const currentTransform = new Matrix3();
1899
+
1900
+ const xml = new DOMParser().parseFromString( text, 'image/svg+xml' ); // application/xml
1901
+
1902
+ parseNode( xml.documentElement, {
1903
+ fill: '#000',
1904
+ fillOpacity: 1,
1905
+ strokeOpacity: 1,
1906
+ strokeWidth: 1,
1907
+ strokeLineJoin: 'miter',
1908
+ strokeLineCap: 'butt',
1909
+ strokeMiterLimit: 4
1910
+ } );
1911
+
1912
+ const data = { paths: paths, xml: xml.documentElement };
1913
+
1914
+ // console.log( paths );
1915
+ return data;
1916
+
1917
+ }
1918
+
1919
+ static createShapes( shapePath ) {
1920
+
1921
+ // Param shapePath: a shapepath as returned by the parse function of this class
1922
+ // Returns Shape object
1923
+
1924
+ const BIGNUMBER = 999999999;
1925
+
1926
+ const IntersectionLocationType = {
1927
+ ORIGIN: 0,
1928
+ DESTINATION: 1,
1929
+ BETWEEN: 2,
1930
+ LEFT: 3,
1931
+ RIGHT: 4,
1932
+ BEHIND: 5,
1933
+ BEYOND: 6
1934
+ };
1935
+
1936
+ const classifyResult = {
1937
+ loc: IntersectionLocationType.ORIGIN,
1938
+ t: 0
1939
+ };
1940
+
1941
+ function findEdgeIntersection( a0, a1, b0, b1 ) {
1942
+
1943
+ const x1 = a0.x;
1944
+ const x2 = a1.x;
1945
+ const x3 = b0.x;
1946
+ const x4 = b1.x;
1947
+ const y1 = a0.y;
1948
+ const y2 = a1.y;
1949
+ const y3 = b0.y;
1950
+ const y4 = b1.y;
1951
+ const nom1 = ( x4 - x3 ) * ( y1 - y3 ) - ( y4 - y3 ) * ( x1 - x3 );
1952
+ const nom2 = ( x2 - x1 ) * ( y1 - y3 ) - ( y2 - y1 ) * ( x1 - x3 );
1953
+ const denom = ( y4 - y3 ) * ( x2 - x1 ) - ( x4 - x3 ) * ( y2 - y1 );
1954
+ const t1 = nom1 / denom;
1955
+ const t2 = nom2 / denom;
1956
+
1957
+ if ( ( ( denom === 0 ) && ( nom1 !== 0 ) ) || ( t1 <= 0 ) || ( t1 >= 1 ) || ( t2 < 0 ) || ( t2 > 1 ) ) {
1958
+
1959
+ //1. lines are parallel or edges don't intersect
1960
+
1961
+ return null;
1962
+
1963
+ } else if ( ( nom1 === 0 ) && ( denom === 0 ) ) {
1964
+
1965
+ //2. lines are colinear
1966
+
1967
+ //check if endpoints of edge2 (b0-b1) lies on edge1 (a0-a1)
1968
+ for ( let i = 0; i < 2; i ++ ) {
1969
+
1970
+ classifyPoint( i === 0 ? b0 : b1, a0, a1 );
1971
+ //find position of this endpoints relatively to edge1
1972
+ if ( classifyResult.loc == IntersectionLocationType.ORIGIN ) {
1973
+
1974
+ const point = ( i === 0 ? b0 : b1 );
1975
+ return { x: point.x, y: point.y, t: classifyResult.t };
1976
+
1977
+ } else if ( classifyResult.loc == IntersectionLocationType.BETWEEN ) {
1978
+
1979
+ const x = + ( ( x1 + classifyResult.t * ( x2 - x1 ) ).toPrecision( 10 ) );
1980
+ const y = + ( ( y1 + classifyResult.t * ( y2 - y1 ) ).toPrecision( 10 ) );
1981
+ return { x: x, y: y, t: classifyResult.t, };
1982
+
1983
+ }
1984
+
1985
+ }
1986
+
1987
+ return null;
1988
+
1989
+ } else {
1990
+
1991
+ //3. edges intersect
1992
+
1993
+ for ( let i = 0; i < 2; i ++ ) {
1994
+
1995
+ classifyPoint( i === 0 ? b0 : b1, a0, a1 );
1996
+
1997
+ if ( classifyResult.loc == IntersectionLocationType.ORIGIN ) {
1998
+
1999
+ const point = ( i === 0 ? b0 : b1 );
2000
+ return { x: point.x, y: point.y, t: classifyResult.t };
2001
+
2002
+ }
2003
+
2004
+ }
2005
+
2006
+ const x = + ( ( x1 + t1 * ( x2 - x1 ) ).toPrecision( 10 ) );
2007
+ const y = + ( ( y1 + t1 * ( y2 - y1 ) ).toPrecision( 10 ) );
2008
+ return { x: x, y: y, t: t1 };
2009
+
2010
+ }
2011
+
2012
+ }
2013
+
2014
+ function classifyPoint( p, edgeStart, edgeEnd ) {
2015
+
2016
+ const ax = edgeEnd.x - edgeStart.x;
2017
+ const ay = edgeEnd.y - edgeStart.y;
2018
+ const bx = p.x - edgeStart.x;
2019
+ const by = p.y - edgeStart.y;
2020
+ const sa = ax * by - bx * ay;
2021
+
2022
+ if ( ( p.x === edgeStart.x ) && ( p.y === edgeStart.y ) ) {
2023
+
2024
+ classifyResult.loc = IntersectionLocationType.ORIGIN;
2025
+ classifyResult.t = 0;
2026
+ return;
2027
+
2028
+ }
2029
+
2030
+ if ( ( p.x === edgeEnd.x ) && ( p.y === edgeEnd.y ) ) {
2031
+
2032
+ classifyResult.loc = IntersectionLocationType.DESTINATION;
2033
+ classifyResult.t = 1;
2034
+ return;
2035
+
2036
+ }
2037
+
2038
+ if ( sa < - Number.EPSILON ) {
2039
+
2040
+ classifyResult.loc = IntersectionLocationType.LEFT;
2041
+ return;
2042
+
2043
+ }
2044
+
2045
+ if ( sa > Number.EPSILON ) {
2046
+
2047
+ classifyResult.loc = IntersectionLocationType.RIGHT;
2048
+ return;
2049
+
2050
+
2051
+ }
2052
+
2053
+ if ( ( ( ax * bx ) < 0 ) || ( ( ay * by ) < 0 ) ) {
2054
+
2055
+ classifyResult.loc = IntersectionLocationType.BEHIND;
2056
+ return;
2057
+
2058
+ }
2059
+
2060
+ if ( ( Math.sqrt( ax * ax + ay * ay ) ) < ( Math.sqrt( bx * bx + by * by ) ) ) {
2061
+
2062
+ classifyResult.loc = IntersectionLocationType.BEYOND;
2063
+ return;
2064
+
2065
+ }
2066
+
2067
+ let t;
2068
+
2069
+ if ( ax !== 0 ) {
2070
+
2071
+ t = bx / ax;
2072
+
2073
+ } else {
2074
+
2075
+ t = by / ay;
2076
+
2077
+ }
2078
+
2079
+ classifyResult.loc = IntersectionLocationType.BETWEEN;
2080
+ classifyResult.t = t;
2081
+
2082
+ }
2083
+
2084
+ function getIntersections( path1, path2 ) {
2085
+
2086
+ const intersectionsRaw = [];
2087
+ const intersections = [];
2088
+
2089
+ for ( let index = 1; index < path1.length; index ++ ) {
2090
+
2091
+ const path1EdgeStart = path1[ index - 1 ];
2092
+ const path1EdgeEnd = path1[ index ];
2093
+
2094
+ for ( let index2 = 1; index2 < path2.length; index2 ++ ) {
2095
+
2096
+ const path2EdgeStart = path2[ index2 - 1 ];
2097
+ const path2EdgeEnd = path2[ index2 ];
2098
+
2099
+ const intersection = findEdgeIntersection( path1EdgeStart, path1EdgeEnd, path2EdgeStart, path2EdgeEnd );
2100
+
2101
+ if ( intersection !== null && intersectionsRaw.find( i => i.t <= intersection.t + Number.EPSILON && i.t >= intersection.t - Number.EPSILON ) === undefined ) {
2102
+
2103
+ intersectionsRaw.push( intersection );
2104
+ intersections.push( new Vector2( intersection.x, intersection.y ) );
2105
+
2106
+ }
2107
+
2108
+ }
2109
+
2110
+ }
2111
+
2112
+ return intersections;
2113
+
2114
+ }
2115
+
2116
+ function getScanlineIntersections( scanline, boundingBox, paths ) {
2117
+
2118
+ const center = new Vector2();
2119
+ boundingBox.getCenter( center );
2120
+
2121
+ const allIntersections = [];
2122
+
2123
+ paths.forEach( path => {
2124
+
2125
+ // check if the center of the bounding box is in the bounding box of the paths.
2126
+ // this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
2127
+ // if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
2128
+ if ( path.boundingBox.containsPoint( center ) ) {
2129
+
2130
+ const intersections = getIntersections( scanline, path.points );
2131
+
2132
+ intersections.forEach( p => {
2133
+
2134
+ allIntersections.push( { identifier: path.identifier, isCW: path.isCW, point: p } );
2135
+
2136
+ } );
2137
+
2138
+ }
2139
+
2140
+ } );
2141
+
2142
+ allIntersections.sort( ( i1, i2 ) => {
2143
+
2144
+ return i1.point.x - i2.point.x;
2145
+
2146
+ } );
2147
+
2148
+ return allIntersections;
2149
+
2150
+ }
2151
+
2152
+ function isHoleTo( simplePath, allPaths, scanlineMinX, scanlineMaxX, _fillRule ) {
2153
+
2154
+ if ( _fillRule === null || _fillRule === undefined || _fillRule === '' ) {
2155
+
2156
+ _fillRule = 'nonzero';
2157
+
2158
+ }
2159
+
2160
+ const centerBoundingBox = new Vector2();
2161
+ simplePath.boundingBox.getCenter( centerBoundingBox );
2162
+
2163
+ const scanline = [ new Vector2( scanlineMinX, centerBoundingBox.y ), new Vector2( scanlineMaxX, centerBoundingBox.y ) ];
2164
+
2165
+ const scanlineIntersections = getScanlineIntersections( scanline, simplePath.boundingBox, allPaths );
2166
+
2167
+ scanlineIntersections.sort( ( i1, i2 ) => {
2168
+
2169
+ return i1.point.x - i2.point.x;
2170
+
2171
+ } );
2172
+
2173
+ const baseIntersections = [];
2174
+ const otherIntersections = [];
2175
+
2176
+ scanlineIntersections.forEach( i => {
2177
+
2178
+ if ( i.identifier === simplePath.identifier ) {
2179
+
2180
+ baseIntersections.push( i );
2181
+
2182
+ } else {
2183
+
2184
+ otherIntersections.push( i );
2185
+
2186
+ }
2187
+
2188
+ } );
2189
+
2190
+ const firstXOfPath = baseIntersections[ 0 ].point.x;
2191
+
2192
+ // build up the path hierarchy
2193
+ const stack = [];
2194
+ let i = 0;
2195
+
2196
+ while ( i < otherIntersections.length && otherIntersections[ i ].point.x < firstXOfPath ) {
2197
+
2198
+ if ( stack.length > 0 && stack[ stack.length - 1 ] === otherIntersections[ i ].identifier ) {
2199
+
2200
+ stack.pop();
2201
+
2202
+ } else {
2203
+
2204
+ stack.push( otherIntersections[ i ].identifier );
2205
+
2206
+ }
2207
+
2208
+ i ++;
2209
+
2210
+ }
2211
+
2212
+ stack.push( simplePath.identifier );
2213
+
2214
+ if ( _fillRule === 'evenodd' ) {
2215
+
2216
+ const isHole = stack.length % 2 === 0 ? true : false;
2217
+ const isHoleFor = stack[ stack.length - 2 ];
2218
+
2219
+ return { identifier: simplePath.identifier, isHole: isHole, for: isHoleFor };
2220
+
2221
+ } else if ( _fillRule === 'nonzero' ) {
2222
+
2223
+ // check if path is a hole by counting the amount of paths with alternating rotations it has to cross.
2224
+ let isHole = true;
2225
+ let isHoleFor = null;
2226
+ let lastCWValue = null;
2227
+
2228
+ for ( let i = 0; i < stack.length; i ++ ) {
2229
+
2230
+ const identifier = stack[ i ];
2231
+ if ( isHole ) {
2232
+
2233
+ lastCWValue = allPaths[ identifier ].isCW;
2234
+ isHole = false;
2235
+ isHoleFor = identifier;
2236
+
2237
+ } else if ( lastCWValue !== allPaths[ identifier ].isCW ) {
2238
+
2239
+ lastCWValue = allPaths[ identifier ].isCW;
2240
+ isHole = true;
2241
+
2242
+ }
2243
+
2244
+ }
2245
+
2246
+ return { identifier: simplePath.identifier, isHole: isHole, for: isHoleFor };
2247
+
2248
+ } else {
2249
+
2250
+ console.warn( 'fill-rule: "' + _fillRule + '" is currently not implemented.' );
2251
+
2252
+ }
2253
+
2254
+ }
2255
+
2256
+ // check for self intersecting paths
2257
+ // TODO
2258
+
2259
+ // check intersecting paths
2260
+ // TODO
2261
+
2262
+ // prepare paths for hole detection
2263
+ let scanlineMinX = BIGNUMBER;
2264
+ let scanlineMaxX = - BIGNUMBER;
2265
+
2266
+ let simplePaths = shapePath.subPaths.map( p => {
2267
+
2268
+ const points = p.getPoints();
2269
+ let maxY = - BIGNUMBER;
2270
+ let minY = BIGNUMBER;
2271
+ let maxX = - BIGNUMBER;
2272
+ let minX = BIGNUMBER;
2273
+
2274
+ //points.forEach(p => p.y *= -1);
2275
+
2276
+ for ( let i = 0; i < points.length; i ++ ) {
2277
+
2278
+ const p = points[ i ];
2279
+
2280
+ if ( p.y > maxY ) {
2281
+
2282
+ maxY = p.y;
2283
+
2284
+ }
2285
+
2286
+ if ( p.y < minY ) {
2287
+
2288
+ minY = p.y;
2289
+
2290
+ }
2291
+
2292
+ if ( p.x > maxX ) {
2293
+
2294
+ maxX = p.x;
2295
+
2296
+ }
2297
+
2298
+ if ( p.x < minX ) {
2299
+
2300
+ minX = p.x;
2301
+
2302
+ }
2303
+
2304
+ }
2305
+
2306
+ //
2307
+ if ( scanlineMaxX <= maxX ) {
2308
+
2309
+ scanlineMaxX = maxX + 1;
2310
+
2311
+ }
2312
+
2313
+ if ( scanlineMinX >= minX ) {
2314
+
2315
+ scanlineMinX = minX - 1;
2316
+
2317
+ }
2318
+
2319
+ return { curves: p.curves, points: points, isCW: ShapeUtils.isClockWise( points ), identifier: - 1, boundingBox: new Box2( new Vector2( minX, minY ), new Vector2( maxX, maxY ) ) };
2320
+
2321
+ } );
2322
+
2323
+ simplePaths = simplePaths.filter( sp => sp.points.length > 1 );
2324
+
2325
+ for ( let identifier = 0; identifier < simplePaths.length; identifier ++ ) {
2326
+
2327
+ simplePaths[ identifier ].identifier = identifier;
2328
+
2329
+ }
2330
+
2331
+ // check if path is solid or a hole
2332
+ const isAHole = simplePaths.map( p => isHoleTo( p, simplePaths, scanlineMinX, scanlineMaxX, ( shapePath.userData ? shapePath.userData.style.fillRule : undefined ) ) );
2333
+
2334
+
2335
+ const shapesToReturn = [];
2336
+ simplePaths.forEach( p => {
2337
+
2338
+ const amIAHole = isAHole[ p.identifier ];
2339
+
2340
+ if ( ! amIAHole.isHole ) {
2341
+
2342
+ const shape = new Shape();
2343
+ shape.curves = p.curves;
2344
+ const holes = isAHole.filter( h => h.isHole && h.for === p.identifier );
2345
+ holes.forEach( h => {
2346
+
2347
+ const hole = simplePaths[ h.identifier ];
2348
+ const path = new Path();
2349
+ path.curves = hole.curves;
2350
+ shape.holes.push( path );
2351
+
2352
+ } );
2353
+ shapesToReturn.push( shape );
2354
+
2355
+ }
2356
+
2357
+ } );
2358
+
2359
+ return shapesToReturn;
2360
+
2361
+ }
2362
+
2363
+ static getStrokeStyle( width, color, lineJoin, lineCap, miterLimit ) {
2364
+
2365
+ // Param width: Stroke width
2366
+ // Param color: As returned by THREE.Color.getStyle()
2367
+ // Param lineJoin: One of "round", "bevel", "miter" or "miter-limit"
2368
+ // Param lineCap: One of "round", "square" or "butt"
2369
+ // Param miterLimit: Maximum join length, in multiples of the "width" parameter (join is truncated if it exceeds that distance)
2370
+ // Returns style object
2371
+
2372
+ width = width !== undefined ? width : 1;
2373
+ color = color !== undefined ? color : '#000';
2374
+ lineJoin = lineJoin !== undefined ? lineJoin : 'miter';
2375
+ lineCap = lineCap !== undefined ? lineCap : 'butt';
2376
+ miterLimit = miterLimit !== undefined ? miterLimit : 4;
2377
+
2378
+ return {
2379
+ strokeColor: color,
2380
+ strokeWidth: width,
2381
+ strokeLineJoin: lineJoin,
2382
+ strokeLineCap: lineCap,
2383
+ strokeMiterLimit: miterLimit
2384
+ };
2385
+
2386
+ }
2387
+
2388
+ static pointsToStroke( points, style, arcDivisions, minDistance ) {
2389
+
2390
+ // Generates a stroke with some width around the given path.
2391
+ // The path can be open or closed (last point equals to first point)
2392
+ // Param points: Array of Vector2D (the path). Minimum 2 points.
2393
+ // Param style: Object with SVG properties as returned by SVGLoader.getStrokeStyle(), or SVGLoader.parse() in the path.userData.style object
2394
+ // Params arcDivisions: Arc divisions for round joins and endcaps. (Optional)
2395
+ // Param minDistance: Points closer to this distance will be merged. (Optional)
2396
+ // Returns BufferGeometry with stroke triangles (In plane z = 0). UV coordinates are generated ('u' along path. 'v' across it, from left to right)
2397
+
2398
+ const vertices = [];
2399
+ const normals = [];
2400
+ const uvs = [];
2401
+
2402
+ if ( SVGLoader.pointsToStrokeWithBuffers( points, style, arcDivisions, minDistance, vertices, normals, uvs ) === 0 ) {
2403
+
2404
+ return null;
2405
+
2406
+ }
2407
+
2408
+ const geometry = new BufferGeometry();
2409
+ geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
2410
+ geometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );
2411
+ geometry.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );
2412
+
2413
+ return geometry;
2414
+
2415
+ }
2416
+
2417
+ static pointsToStrokeWithBuffers( points, style, arcDivisions, minDistance, vertices, normals, uvs, vertexOffset ) {
2418
+
2419
+ // This function can be called to update existing arrays or buffers.
2420
+ // Accepts same parameters as pointsToStroke, plus the buffers and optional offset.
2421
+ // Param vertexOffset: Offset vertices to start writing in the buffers (3 elements/vertex for vertices and normals, and 2 elements/vertex for uvs)
2422
+ // Returns number of written vertices / normals / uvs pairs
2423
+ // if 'vertices' parameter is undefined no triangles will be generated, but the returned vertices count will still be valid (useful to preallocate the buffers)
2424
+ // 'normals' and 'uvs' buffers are optional
2425
+
2426
+ const tempV2_1 = new Vector2();
2427
+ const tempV2_2 = new Vector2();
2428
+ const tempV2_3 = new Vector2();
2429
+ const tempV2_4 = new Vector2();
2430
+ const tempV2_5 = new Vector2();
2431
+ const tempV2_6 = new Vector2();
2432
+ const tempV2_7 = new Vector2();
2433
+ const lastPointL = new Vector2();
2434
+ const lastPointR = new Vector2();
2435
+ const point0L = new Vector2();
2436
+ const point0R = new Vector2();
2437
+ const currentPointL = new Vector2();
2438
+ const currentPointR = new Vector2();
2439
+ const nextPointL = new Vector2();
2440
+ const nextPointR = new Vector2();
2441
+ const innerPoint = new Vector2();
2442
+ const outerPoint = new Vector2();
2443
+
2444
+ arcDivisions = arcDivisions !== undefined ? arcDivisions : 12;
2445
+ minDistance = minDistance !== undefined ? minDistance : 0.001;
2446
+ vertexOffset = vertexOffset !== undefined ? vertexOffset : 0;
2447
+
2448
+ // First ensure there are no duplicated points
2449
+ points = removeDuplicatedPoints( points );
2450
+
2451
+ const numPoints = points.length;
2452
+
2453
+ if ( numPoints < 2 ) return 0;
2454
+
2455
+ const isClosed = points[ 0 ].equals( points[ numPoints - 1 ] );
2456
+
2457
+ let currentPoint;
2458
+ let previousPoint = points[ 0 ];
2459
+ let nextPoint;
2460
+
2461
+ const strokeWidth2 = style.strokeWidth / 2;
2462
+
2463
+ const deltaU = 1 / ( numPoints - 1 );
2464
+ let u0 = 0, u1;
2465
+
2466
+ let innerSideModified;
2467
+ let joinIsOnLeftSide;
2468
+ let isMiter;
2469
+ let initialJoinIsOnLeftSide = false;
2470
+
2471
+ let numVertices = 0;
2472
+ let currentCoordinate = vertexOffset * 3;
2473
+ let currentCoordinateUV = vertexOffset * 2;
2474
+
2475
+ // Get initial left and right stroke points
2476
+ getNormal( points[ 0 ], points[ 1 ], tempV2_1 ).multiplyScalar( strokeWidth2 );
2477
+ lastPointL.copy( points[ 0 ] ).sub( tempV2_1 );
2478
+ lastPointR.copy( points[ 0 ] ).add( tempV2_1 );
2479
+ point0L.copy( lastPointL );
2480
+ point0R.copy( lastPointR );
2481
+
2482
+ for ( let iPoint = 1; iPoint < numPoints; iPoint ++ ) {
2483
+
2484
+ currentPoint = points[ iPoint ];
2485
+
2486
+ // Get next point
2487
+ if ( iPoint === numPoints - 1 ) {
2488
+
2489
+ if ( isClosed ) {
2490
+
2491
+ // Skip duplicated initial point
2492
+ nextPoint = points[ 1 ];
2493
+
2494
+ } else nextPoint = undefined;
2495
+
2496
+ } else {
2497
+
2498
+ nextPoint = points[ iPoint + 1 ];
2499
+
2500
+ }
2501
+
2502
+ // Normal of previous segment in tempV2_1
2503
+ const normal1 = tempV2_1;
2504
+ getNormal( previousPoint, currentPoint, normal1 );
2505
+
2506
+ tempV2_3.copy( normal1 ).multiplyScalar( strokeWidth2 );
2507
+ currentPointL.copy( currentPoint ).sub( tempV2_3 );
2508
+ currentPointR.copy( currentPoint ).add( tempV2_3 );
2509
+
2510
+ u1 = u0 + deltaU;
2511
+
2512
+ innerSideModified = false;
2513
+
2514
+ if ( nextPoint !== undefined ) {
2515
+
2516
+ // Normal of next segment in tempV2_2
2517
+ getNormal( currentPoint, nextPoint, tempV2_2 );
2518
+
2519
+ tempV2_3.copy( tempV2_2 ).multiplyScalar( strokeWidth2 );
2520
+ nextPointL.copy( currentPoint ).sub( tempV2_3 );
2521
+ nextPointR.copy( currentPoint ).add( tempV2_3 );
2522
+
2523
+ joinIsOnLeftSide = true;
2524
+ tempV2_3.subVectors( nextPoint, previousPoint );
2525
+ if ( normal1.dot( tempV2_3 ) < 0 ) {
2526
+
2527
+ joinIsOnLeftSide = false;
2528
+
2529
+ }
2530
+
2531
+ if ( iPoint === 1 ) initialJoinIsOnLeftSide = joinIsOnLeftSide;
2532
+
2533
+ tempV2_3.subVectors( nextPoint, currentPoint );
2534
+ tempV2_3.normalize();
2535
+ const dot = Math.abs( normal1.dot( tempV2_3 ) );
2536
+
2537
+ // If path is straight, don't create join
2538
+ if ( dot > Number.EPSILON ) {
2539
+
2540
+ // Compute inner and outer segment intersections
2541
+ const miterSide = strokeWidth2 / dot;
2542
+ tempV2_3.multiplyScalar( - miterSide );
2543
+ tempV2_4.subVectors( currentPoint, previousPoint );
2544
+ tempV2_5.copy( tempV2_4 ).setLength( miterSide ).add( tempV2_3 );
2545
+ innerPoint.copy( tempV2_5 ).negate();
2546
+ const miterLength2 = tempV2_5.length();
2547
+ const segmentLengthPrev = tempV2_4.length();
2548
+ tempV2_4.divideScalar( segmentLengthPrev );
2549
+ tempV2_6.subVectors( nextPoint, currentPoint );
2550
+ const segmentLengthNext = tempV2_6.length();
2551
+ tempV2_6.divideScalar( segmentLengthNext );
2552
+ // Check that previous and next segments doesn't overlap with the innerPoint of intersection
2553
+ if ( tempV2_4.dot( innerPoint ) < segmentLengthPrev && tempV2_6.dot( innerPoint ) < segmentLengthNext ) {
2554
+
2555
+ innerSideModified = true;
2556
+
2557
+ }
2558
+
2559
+ outerPoint.copy( tempV2_5 ).add( currentPoint );
2560
+ innerPoint.add( currentPoint );
2561
+
2562
+ isMiter = false;
2563
+
2564
+ if ( innerSideModified ) {
2565
+
2566
+ if ( joinIsOnLeftSide ) {
2567
+
2568
+ nextPointR.copy( innerPoint );
2569
+ currentPointR.copy( innerPoint );
2570
+
2571
+ } else {
2572
+
2573
+ nextPointL.copy( innerPoint );
2574
+ currentPointL.copy( innerPoint );
2575
+
2576
+ }
2577
+
2578
+ } else {
2579
+
2580
+ // The segment triangles are generated here if there was overlapping
2581
+
2582
+ makeSegmentTriangles();
2583
+
2584
+ }
2585
+
2586
+ switch ( style.strokeLineJoin ) {
2587
+
2588
+ case 'bevel':
2589
+
2590
+ makeSegmentWithBevelJoin( joinIsOnLeftSide, innerSideModified, u1 );
2591
+
2592
+ break;
2593
+
2594
+ case 'round':
2595
+
2596
+ // Segment triangles
2597
+
2598
+ createSegmentTrianglesWithMiddleSection( joinIsOnLeftSide, innerSideModified );
2599
+
2600
+ // Join triangles
2601
+
2602
+ if ( joinIsOnLeftSide ) {
2603
+
2604
+ makeCircularSector( currentPoint, currentPointL, nextPointL, u1, 0 );
2605
+
2606
+ } else {
2607
+
2608
+ makeCircularSector( currentPoint, nextPointR, currentPointR, u1, 1 );
2609
+
2610
+ }
2611
+
2612
+ break;
2613
+
2614
+ case 'miter':
2615
+ case 'miter-clip':
2616
+ default:
2617
+
2618
+ const miterFraction = ( strokeWidth2 * style.strokeMiterLimit ) / miterLength2;
2619
+
2620
+ if ( miterFraction < 1 ) {
2621
+
2622
+ // The join miter length exceeds the miter limit
2623
+
2624
+ if ( style.strokeLineJoin !== 'miter-clip' ) {
2625
+
2626
+ makeSegmentWithBevelJoin( joinIsOnLeftSide, innerSideModified, u1 );
2627
+ break;
2628
+
2629
+ } else {
2630
+
2631
+ // Segment triangles
2632
+
2633
+ createSegmentTrianglesWithMiddleSection( joinIsOnLeftSide, innerSideModified );
2634
+
2635
+ // Miter-clip join triangles
2636
+
2637
+ if ( joinIsOnLeftSide ) {
2638
+
2639
+ tempV2_6.subVectors( outerPoint, currentPointL ).multiplyScalar( miterFraction ).add( currentPointL );
2640
+ tempV2_7.subVectors( outerPoint, nextPointL ).multiplyScalar( miterFraction ).add( nextPointL );
2641
+
2642
+ addVertex( currentPointL, u1, 0 );
2643
+ addVertex( tempV2_6, u1, 0 );
2644
+ addVertex( currentPoint, u1, 0.5 );
2645
+
2646
+ addVertex( currentPoint, u1, 0.5 );
2647
+ addVertex( tempV2_6, u1, 0 );
2648
+ addVertex( tempV2_7, u1, 0 );
2649
+
2650
+ addVertex( currentPoint, u1, 0.5 );
2651
+ addVertex( tempV2_7, u1, 0 );
2652
+ addVertex( nextPointL, u1, 0 );
2653
+
2654
+ } else {
2655
+
2656
+ tempV2_6.subVectors( outerPoint, currentPointR ).multiplyScalar( miterFraction ).add( currentPointR );
2657
+ tempV2_7.subVectors( outerPoint, nextPointR ).multiplyScalar( miterFraction ).add( nextPointR );
2658
+
2659
+ addVertex( currentPointR, u1, 1 );
2660
+ addVertex( tempV2_6, u1, 1 );
2661
+ addVertex( currentPoint, u1, 0.5 );
2662
+
2663
+ addVertex( currentPoint, u1, 0.5 );
2664
+ addVertex( tempV2_6, u1, 1 );
2665
+ addVertex( tempV2_7, u1, 1 );
2666
+
2667
+ addVertex( currentPoint, u1, 0.5 );
2668
+ addVertex( tempV2_7, u1, 1 );
2669
+ addVertex( nextPointR, u1, 1 );
2670
+
2671
+ }
2672
+
2673
+ }
2674
+
2675
+ } else {
2676
+
2677
+ // Miter join segment triangles
2678
+
2679
+ if ( innerSideModified ) {
2680
+
2681
+ // Optimized segment + join triangles
2682
+
2683
+ if ( joinIsOnLeftSide ) {
2684
+
2685
+ addVertex( lastPointR, u0, 1 );
2686
+ addVertex( lastPointL, u0, 0 );
2687
+ addVertex( outerPoint, u1, 0 );
2688
+
2689
+ addVertex( lastPointR, u0, 1 );
2690
+ addVertex( outerPoint, u1, 0 );
2691
+ addVertex( innerPoint, u1, 1 );
2692
+
2693
+ } else {
2694
+
2695
+ addVertex( lastPointR, u0, 1 );
2696
+ addVertex( lastPointL, u0, 0 );
2697
+ addVertex( outerPoint, u1, 1 );
2698
+
2699
+ addVertex( lastPointL, u0, 0 );
2700
+ addVertex( innerPoint, u1, 0 );
2701
+ addVertex( outerPoint, u1, 1 );
2702
+
2703
+ }
2704
+
2705
+
2706
+ if ( joinIsOnLeftSide ) {
2707
+
2708
+ nextPointL.copy( outerPoint );
2709
+
2710
+ } else {
2711
+
2712
+ nextPointR.copy( outerPoint );
2713
+
2714
+ }
2715
+
2716
+
2717
+ } else {
2718
+
2719
+ // Add extra miter join triangles
2720
+
2721
+ if ( joinIsOnLeftSide ) {
2722
+
2723
+ addVertex( currentPointL, u1, 0 );
2724
+ addVertex( outerPoint, u1, 0 );
2725
+ addVertex( currentPoint, u1, 0.5 );
2726
+
2727
+ addVertex( currentPoint, u1, 0.5 );
2728
+ addVertex( outerPoint, u1, 0 );
2729
+ addVertex( nextPointL, u1, 0 );
2730
+
2731
+ } else {
2732
+
2733
+ addVertex( currentPointR, u1, 1 );
2734
+ addVertex( outerPoint, u1, 1 );
2735
+ addVertex( currentPoint, u1, 0.5 );
2736
+
2737
+ addVertex( currentPoint, u1, 0.5 );
2738
+ addVertex( outerPoint, u1, 1 );
2739
+ addVertex( nextPointR, u1, 1 );
2740
+
2741
+ }
2742
+
2743
+ }
2744
+
2745
+ isMiter = true;
2746
+
2747
+ }
2748
+
2749
+ break;
2750
+
2751
+ }
2752
+
2753
+ } else {
2754
+
2755
+ // The segment triangles are generated here when two consecutive points are collinear
2756
+
2757
+ makeSegmentTriangles();
2758
+
2759
+ }
2760
+
2761
+ } else {
2762
+
2763
+ // The segment triangles are generated here if it is the ending segment
2764
+
2765
+ makeSegmentTriangles();
2766
+
2767
+ }
2768
+
2769
+ if ( ! isClosed && iPoint === numPoints - 1 ) {
2770
+
2771
+ // Start line endcap
2772
+ addCapGeometry( points[ 0 ], point0L, point0R, joinIsOnLeftSide, true, u0 );
2773
+
2774
+ }
2775
+
2776
+ // Increment loop variables
2777
+
2778
+ u0 = u1;
2779
+
2780
+ previousPoint = currentPoint;
2781
+
2782
+ lastPointL.copy( nextPointL );
2783
+ lastPointR.copy( nextPointR );
2784
+
2785
+ }
2786
+
2787
+ if ( ! isClosed ) {
2788
+
2789
+ // Ending line endcap
2790
+ addCapGeometry( currentPoint, currentPointL, currentPointR, joinIsOnLeftSide, false, u1 );
2791
+
2792
+ } else if ( innerSideModified && vertices ) {
2793
+
2794
+ // Modify path first segment vertices to adjust to the segments inner and outer intersections
2795
+
2796
+ let lastOuter = outerPoint;
2797
+ let lastInner = innerPoint;
2798
+
2799
+ if ( initialJoinIsOnLeftSide !== joinIsOnLeftSide ) {
2800
+
2801
+ lastOuter = innerPoint;
2802
+ lastInner = outerPoint;
2803
+
2804
+ }
2805
+
2806
+ if ( joinIsOnLeftSide ) {
2807
+
2808
+ if ( isMiter || initialJoinIsOnLeftSide ) {
2809
+
2810
+ lastInner.toArray( vertices, 0 * 3 );
2811
+ lastInner.toArray( vertices, 3 * 3 );
2812
+
2813
+ if ( isMiter ) {
2814
+
2815
+ lastOuter.toArray( vertices, 1 * 3 );
2816
+
2817
+ }
2818
+
2819
+ }
2820
+
2821
+ } else {
2822
+
2823
+ if ( isMiter || ! initialJoinIsOnLeftSide ) {
2824
+
2825
+ lastInner.toArray( vertices, 1 * 3 );
2826
+ lastInner.toArray( vertices, 3 * 3 );
2827
+
2828
+ if ( isMiter ) {
2829
+
2830
+ lastOuter.toArray( vertices, 0 * 3 );
2831
+
2832
+ }
2833
+
2834
+ }
2835
+
2836
+ }
2837
+
2838
+ }
2839
+
2840
+ return numVertices;
2841
+
2842
+ // -- End of algorithm
2843
+
2844
+ // -- Functions
2845
+
2846
+ function getNormal( p1, p2, result ) {
2847
+
2848
+ result.subVectors( p2, p1 );
2849
+ return result.set( - result.y, result.x ).normalize();
2850
+
2851
+ }
2852
+
2853
+ function addVertex( position, u, v ) {
2854
+
2855
+ if ( vertices ) {
2856
+
2857
+ vertices[ currentCoordinate ] = position.x;
2858
+ vertices[ currentCoordinate + 1 ] = position.y;
2859
+ vertices[ currentCoordinate + 2 ] = 0;
2860
+
2861
+ if ( normals ) {
2862
+
2863
+ normals[ currentCoordinate ] = 0;
2864
+ normals[ currentCoordinate + 1 ] = 0;
2865
+ normals[ currentCoordinate + 2 ] = 1;
2866
+
2867
+ }
2868
+
2869
+ currentCoordinate += 3;
2870
+
2871
+ if ( uvs ) {
2872
+
2873
+ uvs[ currentCoordinateUV ] = u;
2874
+ uvs[ currentCoordinateUV + 1 ] = v;
2875
+
2876
+ currentCoordinateUV += 2;
2877
+
2878
+ }
2879
+
2880
+ }
2881
+
2882
+ numVertices += 3;
2883
+
2884
+ }
2885
+
2886
+ function makeCircularSector( center, p1, p2, u, v ) {
2887
+
2888
+ // param p1, p2: Points in the circle arc.
2889
+ // p1 and p2 are in clockwise direction.
2890
+
2891
+ tempV2_1.copy( p1 ).sub( center ).normalize();
2892
+ tempV2_2.copy( p2 ).sub( center ).normalize();
2893
+
2894
+ let angle = Math.PI;
2895
+ const dot = tempV2_1.dot( tempV2_2 );
2896
+ if ( Math.abs( dot ) < 1 ) angle = Math.abs( Math.acos( dot ) );
2897
+
2898
+ angle /= arcDivisions;
2899
+
2900
+ tempV2_3.copy( p1 );
2901
+
2902
+ for ( let i = 0, il = arcDivisions - 1; i < il; i ++ ) {
2903
+
2904
+ tempV2_4.copy( tempV2_3 ).rotateAround( center, angle );
2905
+
2906
+ addVertex( tempV2_3, u, v );
2907
+ addVertex( tempV2_4, u, v );
2908
+ addVertex( center, u, 0.5 );
2909
+
2910
+ tempV2_3.copy( tempV2_4 );
2911
+
2912
+ }
2913
+
2914
+ addVertex( tempV2_4, u, v );
2915
+ addVertex( p2, u, v );
2916
+ addVertex( center, u, 0.5 );
2917
+
2918
+ }
2919
+
2920
+ function makeSegmentTriangles() {
2921
+
2922
+ addVertex( lastPointR, u0, 1 );
2923
+ addVertex( lastPointL, u0, 0 );
2924
+ addVertex( currentPointL, u1, 0 );
2925
+
2926
+ addVertex( lastPointR, u0, 1 );
2927
+ addVertex( currentPointL, u1, 0 );
2928
+ addVertex( currentPointR, u1, 1 );
2929
+
2930
+ }
2931
+
2932
+ function makeSegmentWithBevelJoin( joinIsOnLeftSide, innerSideModified, u ) {
2933
+
2934
+ if ( innerSideModified ) {
2935
+
2936
+ // Optimized segment + bevel triangles
2937
+
2938
+ if ( joinIsOnLeftSide ) {
2939
+
2940
+ // Path segments triangles
2941
+
2942
+ addVertex( lastPointR, u0, 1 );
2943
+ addVertex( lastPointL, u0, 0 );
2944
+ addVertex( currentPointL, u1, 0 );
2945
+
2946
+ addVertex( lastPointR, u0, 1 );
2947
+ addVertex( currentPointL, u1, 0 );
2948
+ addVertex( innerPoint, u1, 1 );
2949
+
2950
+ // Bevel join triangle
2951
+
2952
+ addVertex( currentPointL, u, 0 );
2953
+ addVertex( nextPointL, u, 0 );
2954
+ addVertex( innerPoint, u, 0.5 );
2955
+
2956
+ } else {
2957
+
2958
+ // Path segments triangles
2959
+
2960
+ addVertex( lastPointR, u0, 1 );
2961
+ addVertex( lastPointL, u0, 0 );
2962
+ addVertex( currentPointR, u1, 1 );
2963
+
2964
+ addVertex( lastPointL, u0, 0 );
2965
+ addVertex( innerPoint, u1, 0 );
2966
+ addVertex( currentPointR, u1, 1 );
2967
+
2968
+ // Bevel join triangle
2969
+
2970
+ addVertex( currentPointR, u, 1 );
2971
+ addVertex( innerPoint, u, 0 );
2972
+ addVertex( nextPointR, u, 1 );
2973
+
2974
+ }
2975
+
2976
+ } else {
2977
+
2978
+ // Bevel join triangle. The segment triangles are done in the main loop
2979
+
2980
+ if ( joinIsOnLeftSide ) {
2981
+
2982
+ addVertex( currentPointL, u, 0 );
2983
+ addVertex( nextPointL, u, 0 );
2984
+ addVertex( currentPoint, u, 0.5 );
2985
+
2986
+ } else {
2987
+
2988
+ addVertex( currentPointR, u, 1 );
2989
+ addVertex( nextPointR, u, 0 );
2990
+ addVertex( currentPoint, u, 0.5 );
2991
+
2992
+ }
2993
+
2994
+ }
2995
+
2996
+ }
2997
+
2998
+ function createSegmentTrianglesWithMiddleSection( joinIsOnLeftSide, innerSideModified ) {
2999
+
3000
+ if ( innerSideModified ) {
3001
+
3002
+ if ( joinIsOnLeftSide ) {
3003
+
3004
+ addVertex( lastPointR, u0, 1 );
3005
+ addVertex( lastPointL, u0, 0 );
3006
+ addVertex( currentPointL, u1, 0 );
3007
+
3008
+ addVertex( lastPointR, u0, 1 );
3009
+ addVertex( currentPointL, u1, 0 );
3010
+ addVertex( innerPoint, u1, 1 );
3011
+
3012
+ addVertex( currentPointL, u0, 0 );
3013
+ addVertex( currentPoint, u1, 0.5 );
3014
+ addVertex( innerPoint, u1, 1 );
3015
+
3016
+ addVertex( currentPoint, u1, 0.5 );
3017
+ addVertex( nextPointL, u0, 0 );
3018
+ addVertex( innerPoint, u1, 1 );
3019
+
3020
+ } else {
3021
+
3022
+ addVertex( lastPointR, u0, 1 );
3023
+ addVertex( lastPointL, u0, 0 );
3024
+ addVertex( currentPointR, u1, 1 );
3025
+
3026
+ addVertex( lastPointL, u0, 0 );
3027
+ addVertex( innerPoint, u1, 0 );
3028
+ addVertex( currentPointR, u1, 1 );
3029
+
3030
+ addVertex( currentPointR, u0, 1 );
3031
+ addVertex( innerPoint, u1, 0 );
3032
+ addVertex( currentPoint, u1, 0.5 );
3033
+
3034
+ addVertex( currentPoint, u1, 0.5 );
3035
+ addVertex( innerPoint, u1, 0 );
3036
+ addVertex( nextPointR, u0, 1 );
3037
+
3038
+ }
3039
+
3040
+ }
3041
+
3042
+ }
3043
+
3044
+ function addCapGeometry( center, p1, p2, joinIsOnLeftSide, start, u ) {
3045
+
3046
+ // param center: End point of the path
3047
+ // param p1, p2: Left and right cap points
3048
+
3049
+ switch ( style.strokeLineCap ) {
3050
+
3051
+ case 'round':
3052
+
3053
+ if ( start ) {
3054
+
3055
+ makeCircularSector( center, p2, p1, u, 0.5 );
3056
+
3057
+ } else {
3058
+
3059
+ makeCircularSector( center, p1, p2, u, 0.5 );
3060
+
3061
+ }
3062
+
3063
+ break;
3064
+
3065
+ case 'square':
3066
+
3067
+ if ( start ) {
3068
+
3069
+ tempV2_1.subVectors( p1, center );
3070
+ tempV2_2.set( tempV2_1.y, - tempV2_1.x );
3071
+
3072
+ tempV2_3.addVectors( tempV2_1, tempV2_2 ).add( center );
3073
+ tempV2_4.subVectors( tempV2_2, tempV2_1 ).add( center );
3074
+
3075
+ // Modify already existing vertices
3076
+ if ( joinIsOnLeftSide ) {
3077
+
3078
+ tempV2_3.toArray( vertices, 1 * 3 );
3079
+ tempV2_4.toArray( vertices, 0 * 3 );
3080
+ tempV2_4.toArray( vertices, 3 * 3 );
3081
+
3082
+ } else {
3083
+
3084
+ tempV2_3.toArray( vertices, 1 * 3 );
3085
+ // using tempV2_4 to update 3rd vertex if the uv.y of 3rd vertex is 1
3086
+ uvs[ 3 * 2 + 1 ] === 1 ? tempV2_4.toArray( vertices, 3 * 3 ) : tempV2_3.toArray( vertices, 3 * 3 );
3087
+ tempV2_4.toArray( vertices, 0 * 3 );
3088
+
3089
+ }
3090
+
3091
+ } else {
3092
+
3093
+ tempV2_1.subVectors( p2, center );
3094
+ tempV2_2.set( tempV2_1.y, - tempV2_1.x );
3095
+
3096
+ tempV2_3.addVectors( tempV2_1, tempV2_2 ).add( center );
3097
+ tempV2_4.subVectors( tempV2_2, tempV2_1 ).add( center );
3098
+
3099
+ const vl = vertices.length;
3100
+
3101
+ // Modify already existing vertices
3102
+ if ( joinIsOnLeftSide ) {
3103
+
3104
+ tempV2_3.toArray( vertices, vl - 1 * 3 );
3105
+ tempV2_4.toArray( vertices, vl - 2 * 3 );
3106
+ tempV2_4.toArray( vertices, vl - 4 * 3 );
3107
+
3108
+ } else {
3109
+
3110
+ tempV2_4.toArray( vertices, vl - 2 * 3 );
3111
+ tempV2_3.toArray( vertices, vl - 1 * 3 );
3112
+ tempV2_4.toArray( vertices, vl - 4 * 3 );
3113
+
3114
+ }
3115
+
3116
+ }
3117
+
3118
+ break;
3119
+
3120
+ case 'butt':
3121
+ default:
3122
+
3123
+ // Nothing to do here
3124
+ break;
3125
+
3126
+ }
3127
+
3128
+ }
3129
+
3130
+ function removeDuplicatedPoints( points ) {
3131
+
3132
+ // Creates a new array if necessary with duplicated points removed.
3133
+ // This does not remove duplicated initial and ending points of a closed path.
3134
+
3135
+ let dupPoints = false;
3136
+ for ( let i = 1, n = points.length - 1; i < n; i ++ ) {
3137
+
3138
+ if ( points[ i ].distanceTo( points[ i + 1 ] ) < minDistance ) {
3139
+
3140
+ dupPoints = true;
3141
+ break;
3142
+
3143
+ }
3144
+
3145
+ }
3146
+
3147
+ if ( ! dupPoints ) return points;
3148
+
3149
+ const newPoints = [];
3150
+ newPoints.push( points[ 0 ] );
3151
+
3152
+ for ( let i = 1, n = points.length - 1; i < n; i ++ ) {
3153
+
3154
+ if ( points[ i ].distanceTo( points[ i + 1 ] ) >= minDistance ) {
3155
+
3156
+ newPoints.push( points[ i ] );
3157
+
3158
+ }
3159
+
3160
+ }
3161
+
3162
+ newPoints.push( points[ points.length - 1 ] );
3163
+
3164
+ return newPoints;
3165
+
3166
+ }
3167
+
3168
+ }
3169
+
3170
+
3171
+ }
3172
+
3173
+ export { SVGLoader };