@realsee/five-webgpu 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (386) hide show
  1. package/_virtual/_rolldown/runtime.js +3 -3
  2. package/docs/assets/hierarchy.js +1 -1
  3. package/docs/assets/navigation.js +1 -1
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  6. package/docs/classes/index.BoundingMesh.html +1 -1
  7. package/docs/classes/index.Camera.html +1 -1
  8. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  9. package/docs/classes/index.Five.html +65 -64
  10. package/docs/classes/index.FivePass.html +1 -1
  11. package/docs/classes/index.FiveRenderer.html +4 -4
  12. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  13. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  14. package/docs/classes/index.FlowingLight3DPass.html +1 -1
  15. package/docs/classes/index.GaussianBlurPass.html +1 -1
  16. package/docs/classes/index.InternalWebGPURenderer.html +4 -4
  17. package/docs/classes/index.Model.html +1 -1
  18. package/docs/classes/index.ModelScene.html +1 -1
  19. package/docs/classes/index.NetworkSubscribe.html +1 -1
  20. package/docs/classes/index.PBMCustomNode.html +1 -1
  21. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +1 -1
  22. package/docs/classes/index.PBMGaussianSplattingObject.html +1 -1
  23. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +1 -1
  24. package/docs/classes/index.PBMGroup.html +1 -1
  25. package/docs/classes/index.PBMMesh.html +1 -1
  26. package/docs/classes/index.PBMMeshBasicMaterial.html +1 -1
  27. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +1 -1
  28. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +1 -1
  29. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +1 -1
  30. package/docs/classes/index.PBMMeshPhongMaterial.html +1 -1
  31. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +1 -1
  32. package/docs/classes/index.PBMMeshPhysicalMaterial.html +1 -1
  33. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +1 -1
  34. package/docs/classes/index.PBMPanoFilter.html +1 -1
  35. package/docs/classes/index.PBMPointCloud.html +1 -1
  36. package/docs/classes/index.PBMPointCloudMaterial.html +1 -1
  37. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  38. package/docs/classes/index.PBMUpdateable.html +1 -1
  39. package/docs/classes/index.PanoCircleMesh.html +9 -5
  40. package/docs/classes/index.PanoCircleMeshCustom.html +9 -5
  41. package/docs/classes/index.PanoCircleMeshSolid.html +9 -5
  42. package/docs/classes/index.Parameter.html +1 -1
  43. package/docs/classes/index.Scene.html +1 -1
  44. package/docs/classes/index.Subscribe.html +1 -1
  45. package/docs/classes/index.Tile3D.html +1 -1
  46. package/docs/classes/index.TileNode.html +1 -1
  47. package/docs/classes/index.TrajectoryNode.html +1 -1
  48. package/docs/classes/index.Work.html +15 -22
  49. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  50. package/docs/functions/index.createWorks.html +1 -1
  51. package/docs/functions/index.parseWork.html +1 -1
  52. package/docs/hierarchy.html +1 -1
  53. package/docs/interfaces/index.AddableObject.html +1 -1
  54. package/docs/interfaces/index.AjaxOptions.html +1 -1
  55. package/docs/interfaces/index.BaseEvent.html +1 -1
  56. package/docs/interfaces/index.Clock.html +1 -1
  57. package/docs/interfaces/index.EventCallback.html +3 -3
  58. package/docs/interfaces/index.GestureEvent.html +1 -1
  59. package/docs/interfaces/index.IPBMMaterial.html +1 -1
  60. package/docs/interfaces/index.ImageOptions.html +1 -1
  61. package/docs/interfaces/index.IntersectEvent.html +1 -1
  62. package/docs/interfaces/index.IntersectMesh.html +1 -1
  63. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  64. package/docs/interfaces/index.Intersection.html +1 -1
  65. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  66. package/docs/interfaces/index.LooseWorkPanorama.html +2 -2
  67. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +8 -8
  68. package/docs/interfaces/index.ModeChangeEvent.html +1 -1
  69. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  70. package/docs/interfaces/index.ModelEvent.html +1 -1
  71. package/docs/interfaces/index.ModelSceneEvent.html +1 -1
  72. package/docs/interfaces/index.ModelTileEvent.html +1 -1
  73. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  74. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  75. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  76. package/docs/interfaces/index.NetworkOptions.html +1 -1
  77. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  78. package/docs/interfaces/index.NetworkResourceEvent.html +1 -1
  79. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  80. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  81. package/docs/interfaces/index.ObjectEvent.html +1 -1
  82. package/docs/interfaces/index.PanoCircleMeshInterface.html +8 -4
  83. package/docs/interfaces/index.PanoCircleMeshOptions.html +2 -2
  84. package/docs/interfaces/index.PanoCircleMeshSolidOptions.html +2 -2
  85. package/docs/interfaces/index.PanoEvent.html +1 -1
  86. package/docs/interfaces/index.PanoPrepareEvent.html +1 -1
  87. package/docs/interfaces/index.PanoTextureEvent.html +1 -1
  88. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +1 -1
  89. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  90. package/docs/interfaces/index.ParameterMaterialValue.html +1 -1
  91. package/docs/interfaces/index.ParameterTilesetValue.html +1 -1
  92. package/docs/interfaces/index.ParameterValue.html +1 -1
  93. package/docs/interfaces/index.Pose.html +1 -1
  94. package/docs/interfaces/index.RenderEvent.html +1 -1
  95. package/docs/interfaces/index.ResolvedParameterValue.html +1 -1
  96. package/docs/interfaces/index.State.html +1 -1
  97. package/docs/interfaces/index.StateEvent.html +1 -1
  98. package/docs/interfaces/index.TextureOptions.html +1 -1
  99. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  100. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +1 -1
  101. package/docs/interfaces/index.ViewLayer.html +1 -1
  102. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +2 -2
  103. package/docs/interfaces/index.WorkCubeImage.html +2 -2
  104. package/docs/interfaces/index.WorkImage.html +5 -5
  105. package/docs/interfaces/index.WorkInitial.html +8 -8
  106. package/docs/interfaces/index.WorkInitialJson.html +2 -2
  107. package/docs/interfaces/index.WorkJson.html +2 -4
  108. package/docs/interfaces/index.WorkModel.html +8 -8
  109. package/docs/interfaces/index.WorkModelJson.html +2 -2
  110. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  111. package/docs/interfaces/index.WorkModelLayerJson.html +2 -2
  112. package/docs/interfaces/index.WorkObserver.html +23 -23
  113. package/docs/interfaces/index.WorkObserverJson.html +2 -2
  114. package/docs/interfaces/index.WorkPanoramaJson.html +2 -2
  115. package/docs/interfaces/index.WorkPanoramasJson.html +2 -2
  116. package/docs/interfaces/index.WorkTile.html +5 -5
  117. package/docs/interfaces/index.WorkVideo.html +4 -4
  118. package/docs/interfaces/index.WorksEvent.html +1 -1
  119. package/docs/interfaces/index.XRControllerEvent.html +1 -1
  120. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  121. package/docs/interfaces/index.XRPanoramaControllerCustomInitArgs.html +1 -1
  122. package/docs/interfaces/index.XRSessionEvent.html +1 -1
  123. package/docs/modules/index.html +1 -1
  124. package/docs/types/index.LegacyEventType.html +3 -3
  125. package/docs/types/index.OutputTextureDataType.html +1 -1
  126. package/docs/types/index.ParseOptions.html +8 -8
  127. package/docs/types/index.PointCloudTransparencyMode.html +2 -0
  128. package/docs/types/index.Works.html +1 -1
  129. package/docs/variables/index.loadAt3d.html +2 -0
  130. package/docs/variables/index.loadDome.html +2 -0
  131. package/docs/variables/index.loadDomez.html +2 -0
  132. package/docs/variables/index.loadGltf.html +2 -0
  133. package/docs/variables/index.loadPbm.html +2 -0
  134. package/docs/variables/index.loadPly.html +2 -0
  135. package/five/application/five.d.ts +3 -2
  136. package/five/chunks/at3d.js +338 -0
  137. package/five/chunks/at3d.mjs +338 -0
  138. package/five/chunks/dome.js +338 -0
  139. package/five/chunks/dome.mjs +338 -0
  140. package/five/chunks/domez.js +338 -0
  141. package/five/chunks/domez.mjs +338 -0
  142. package/five/chunks/fbx.js +338 -0
  143. package/five/chunks/fbx.mjs +338 -0
  144. package/five/chunks/fflate.js +338 -0
  145. package/five/chunks/fflate.mjs +338 -0
  146. package/five/chunks/glTF-helpers.js +804 -0
  147. package/five/chunks/glTF-helpers.mjs +804 -0
  148. package/five/chunks/gltf.js +338 -0
  149. package/five/chunks/gltf.mjs +338 -0
  150. package/five/chunks/imageBitmap.js +338 -0
  151. package/five/chunks/imageBitmap.mjs +338 -0
  152. package/five/chunks/imageSupport.js +338 -0
  153. package/five/chunks/imageSupport.mjs +338 -0
  154. package/five/chunks/lzma.js +383 -0
  155. package/five/chunks/lzma.mjs +383 -0
  156. package/five/chunks/memoryUsage.js +339 -0
  157. package/five/chunks/memoryUsage.mjs +339 -0
  158. package/five/chunks/minimal.js +338 -0
  159. package/five/chunks/minimal.mjs +338 -0
  160. package/five/chunks/pbm.js +338 -0
  161. package/five/chunks/pbm.mjs +338 -0
  162. package/five/chunks/pbmGaussianSplattingObject.js +338 -0
  163. package/five/chunks/pbmGaussianSplattingObject.mjs +338 -0
  164. package/five/chunks/pbmMeshMaterial.js +338 -0
  165. package/five/chunks/pbmMeshMaterial.mjs +338 -0
  166. package/five/chunks/pick.js +338 -0
  167. package/five/chunks/pick.mjs +338 -0
  168. package/five/chunks/ply.js +339 -0
  169. package/five/chunks/ply.mjs +339 -0
  170. package/five/chunks/spz.js +364 -0
  171. package/five/chunks/spz.mjs +364 -0
  172. package/five/controllers/panorama.d.ts +6 -0
  173. package/five/core/webglBlendEquationFix.d.ts +41 -0
  174. package/five/index.d.ts +0 -1
  175. package/five/index.js +49 -626
  176. package/five/index.mjs +229 -32052
  177. package/five/meshes/panoCircleMesh.d.ts +1 -0
  178. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  179. package/five/meshes/panoCircleMeshSolid.d.ts +1 -0
  180. package/five/meshes/panoSphereMesh.d.ts +1 -0
  181. package/five/model/index.d.ts +18 -6
  182. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz.d.ts +1 -1
  183. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz_2.d.ts +1 -1
  184. package/five/model/loaders/spz.d.ts +1 -2
  185. package/five/model/loaders/spz.worker.d.ts +37 -0
  186. package/five/renderer/five-renderer.d.ts +1 -1
  187. package/five/renderer/index.d.ts +1 -1
  188. package/five/renderer/postprocessing/passes/pass.js +3 -3
  189. package/five/renderer/postprocessing/passes/pass.mjs +3 -3
  190. package/five/renderer/tools/full-screen-quad.js +3 -3
  191. package/five/renderer/tools/full-screen-quad.mjs +3 -3
  192. package/five/texture/initTexture.d.ts +8 -0
  193. package/five/texture/videoTextureBridge.d.ts +124 -15
  194. package/five/thirdparty/sha256.d.ts +149 -0
  195. package/five/types/panoCircleMeshInterface.d.ts +6 -0
  196. package/five/utils/calculateThreeMouse.js +3 -3
  197. package/five/utils/calculateThreeMouse.mjs +3 -3
  198. package/five/utils/distance.js +3 -3
  199. package/five/utils/distance.mjs +3 -3
  200. package/five/utils/isNil.js +3 -3
  201. package/five/utils/isNil.mjs +3 -3
  202. package/five/utils/memoryUsage.d.ts +1 -1
  203. package/five/utils/uuid.js +3 -3
  204. package/five/utils/uuid.mjs +3 -3
  205. package/five/work/looseWorkType.d.ts +2 -2
  206. package/five/work/work.d.ts +1 -8
  207. package/five/work/workJsonType.d.ts +2 -4
  208. package/gltf-loader/index.js +3 -3
  209. package/gltf-loader/index.mjs +3 -50
  210. package/line/index.js +3 -3
  211. package/line/index.mjs +3 -88
  212. package/package.json +1 -1
  213. package/plugins/BackgroundPlugin/Controller.js +4 -4
  214. package/plugins/BackgroundPlugin/Controller.mjs +4 -4
  215. package/plugins/BackgroundPlugin/index.js +3 -3
  216. package/plugins/BackgroundPlugin/index.mjs +3 -3
  217. package/plugins/BasePlugin/index.js +3 -3
  218. package/plugins/BasePlugin/index.mjs +3 -3
  219. package/plugins/CSS2DPlugin/Controller.js +3 -3
  220. package/plugins/CSS2DPlugin/Controller.mjs +3 -3
  221. package/plugins/CSS2DPlugin/index.js +3 -3
  222. package/plugins/CSS2DPlugin/index.mjs +3 -3
  223. package/plugins/CSS2DPlugin/style.css_raw.js +4 -4
  224. package/plugins/CSS2DPlugin/style.css_raw.mjs +4 -4
  225. package/plugins/CSS3DPlugin/Controller.js +3 -3
  226. package/plugins/CSS3DPlugin/Controller.mjs +3 -3
  227. package/plugins/CSS3DPlugin/index.js +3 -3
  228. package/plugins/CSS3DPlugin/index.mjs +3 -3
  229. package/plugins/CSS3DPlugin/style.css_raw.js +4 -4
  230. package/plugins/CSS3DPlugin/style.css_raw.mjs +4 -4
  231. package/plugins/FloorplanPlugin/Controller.js +3 -3
  232. package/plugins/FloorplanPlugin/Controller.mjs +3 -3
  233. package/plugins/FloorplanPlugin/index.js +3 -3
  234. package/plugins/FloorplanPlugin/index.mjs +3 -3
  235. package/plugins/FloorplanPlugin/render/assets.js +3 -3
  236. package/plugins/FloorplanPlugin/render/assets.mjs +3 -3
  237. package/plugins/FloorplanPlugin/render/index.js +3 -3
  238. package/plugins/FloorplanPlugin/render/index.mjs +3 -3
  239. package/plugins/FloorplanPlugin/render/isPointInPolygon.js +3 -3
  240. package/plugins/FloorplanPlugin/render/isPointInPolygon.mjs +3 -3
  241. package/plugins/FloorplanPlugin/render/renderFloor.js +3 -3
  242. package/plugins/FloorplanPlugin/render/renderFloor.mjs +3 -3
  243. package/plugins/FloorplanPlugin/render/roomLabelVisibility.js +3 -3
  244. package/plugins/FloorplanPlugin/render/roomLabelVisibility.mjs +3 -3
  245. package/plugins/FloorplanPlugin/render/style.css_raw.js +4 -4
  246. package/plugins/FloorplanPlugin/render/style.css_raw.mjs +4 -4
  247. package/plugins/FloorplanPlugin/utils/changeMode.js +3 -3
  248. package/plugins/FloorplanPlugin/utils/changeMode.mjs +3 -3
  249. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.js +3 -3
  250. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.mjs +3 -3
  251. package/plugins/FloorplanPlugin/utils/correctFiveState.js +3 -3
  252. package/plugins/FloorplanPlugin/utils/correctFiveState.mjs +3 -3
  253. package/plugins/FloorplanPlugin/utils/equal.js +3 -3
  254. package/plugins/FloorplanPlugin/utils/equal.mjs +3 -3
  255. package/plugins/FloorplanPlugin/utils/filter.js +3 -3
  256. package/plugins/FloorplanPlugin/utils/filter.mjs +3 -3
  257. package/plugins/FloorplanPlugin/utils/fiveModelLoad.js +3 -3
  258. package/plugins/FloorplanPlugin/utils/fiveModelLoad.mjs +3 -3
  259. package/plugins/FloorplanPlugin/utils/formatData.js +3 -3
  260. package/plugins/FloorplanPlugin/utils/formatData.mjs +3 -3
  261. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.js +3 -3
  262. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.mjs +3 -3
  263. package/plugins/FloorplanPlugin/utils/formatPosition.js +3 -3
  264. package/plugins/FloorplanPlugin/utils/formatPosition.mjs +3 -3
  265. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.js +3 -3
  266. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.mjs +3 -3
  267. package/plugins/FloorplanPlugin/utils/getPxmm.js +3 -3
  268. package/plugins/FloorplanPlugin/utils/getPxmm.mjs +3 -3
  269. package/plugins/FloorplanPlugin/utils/isTruelyObject.js +3 -3
  270. package/plugins/FloorplanPlugin/utils/isTruelyObject.mjs +3 -3
  271. package/plugins/FloorplanPlugin/utils/nearlyEqual.js +3 -3
  272. package/plugins/FloorplanPlugin/utils/nearlyEqual.mjs +3 -3
  273. package/plugins/FloorplanPlugin/utils/polylabel.js +3 -3
  274. package/plugins/FloorplanPlugin/utils/polylabel.mjs +3 -3
  275. package/plugins/FloorplanPlugin/utils/to.js +3 -3
  276. package/plugins/FloorplanPlugin/utils/to.mjs +3 -3
  277. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.js +3 -3
  278. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.mjs +3 -3
  279. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.js +3 -3
  280. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.mjs +3 -3
  281. package/plugins/Object3DHelperPlugin/Controller.js +3 -3
  282. package/plugins/Object3DHelperPlugin/Controller.mjs +3 -3
  283. package/plugins/Object3DHelperPlugin/Controllers/BaseController.js +3 -3
  284. package/plugins/Object3DHelperPlugin/Controllers/BaseController.mjs +3 -3
  285. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.js +3 -3
  286. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.mjs +3 -3
  287. package/plugins/Object3DHelperPlugin/Controllers/MoveController.js +3 -3
  288. package/plugins/Object3DHelperPlugin/Controllers/MoveController.mjs +3 -3
  289. package/plugins/Object3DHelperPlugin/Controllers/RotateController.js +3 -3
  290. package/plugins/Object3DHelperPlugin/Controllers/RotateController.mjs +3 -3
  291. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.js +3 -3
  292. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.mjs +3 -3
  293. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.js +3 -3
  294. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.mjs +3 -3
  295. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.js +3 -3
  296. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.mjs +3 -3
  297. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.js +3 -3
  298. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.mjs +3 -3
  299. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.js +3 -3
  300. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.mjs +3 -3
  301. package/plugins/Object3DHelperPlugin/constant.js +3 -3
  302. package/plugins/Object3DHelperPlugin/constant.mjs +3 -3
  303. package/plugins/Object3DHelperPlugin/index.js +3 -3
  304. package/plugins/Object3DHelperPlugin/index.mjs +3 -3
  305. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.js +3 -3
  306. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.mjs +3 -3
  307. package/plugins/Object3DHelperPlugin/utils/CenterHandle.js +3 -3
  308. package/plugins/Object3DHelperPlugin/utils/CenterHandle.mjs +3 -3
  309. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.js +3 -3
  310. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.mjs +3 -3
  311. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.js +3 -3
  312. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.mjs +3 -3
  313. package/plugins/Object3DHelperPlugin/utils/cameraHooks.js +3 -3
  314. package/plugins/Object3DHelperPlugin/utils/cameraHooks.mjs +3 -3
  315. package/plugins/Object3DHelperPlugin/utils/direction.js +3 -3
  316. package/plugins/Object3DHelperPlugin/utils/direction.mjs +3 -3
  317. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.js +3 -3
  318. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.mjs +3 -3
  319. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.js +3 -3
  320. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.mjs +3 -3
  321. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.js +3 -3
  322. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.mjs +3 -3
  323. package/plugins/Object3DHelperPlugin/utils/solidGuide.js +3 -3
  324. package/plugins/Object3DHelperPlugin/utils/solidGuide.mjs +3 -3
  325. package/plugins/Object3DHelperPlugin/utils/tipsDom.js +3 -3
  326. package/plugins/Object3DHelperPlugin/utils/tipsDom.mjs +3 -3
  327. package/plugins/PanoAnimePlugin/Controller.js +3 -3
  328. package/plugins/PanoAnimePlugin/Controller.mjs +3 -3
  329. package/plugins/PanoAnimePlugin/index.js +3 -3
  330. package/plugins/PanoAnimePlugin/index.mjs +3 -3
  331. package/plugins/WordPassPlugin/Controller.js +3 -3
  332. package/plugins/WordPassPlugin/Controller.mjs +3 -3
  333. package/plugins/WordPassPlugin/hersheyFont.js +3 -3
  334. package/plugins/WordPassPlugin/hersheyFont.mjs +3 -3
  335. package/plugins/WordPassPlugin/index.js +3 -3
  336. package/plugins/WordPassPlugin/index.mjs +3 -3
  337. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.js +4 -4
  338. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.mjs +4 -4
  339. package/plugins/WordPassPlugin/word-pass.js +3 -3
  340. package/plugins/WordPassPlugin/word-pass.mjs +3 -3
  341. package/plugins/index.js +3 -3
  342. package/plugins/index.mjs +3 -3
  343. package/plugins/thirdParty/CSS2DRenderer.js +3 -3
  344. package/plugins/thirdParty/CSS2DRenderer.mjs +3 -3
  345. package/plugins/thirdParty/CSS3DRenderer.js +3 -3
  346. package/plugins/thirdParty/CSS3DRenderer.mjs +3 -3
  347. package/plugins/thirdParty/doctorstrange-model.js +75 -75
  348. package/plugins/thirdParty/doctorstrange-model.mjs +75 -75
  349. package/plugins/thirdParty/domevents.js +3 -3
  350. package/plugins/thirdParty/domevents.mjs +3 -3
  351. package/plugins/utils/absoluteUrl.js +3 -3
  352. package/plugins/utils/absoluteUrl.mjs +3 -3
  353. package/plugins/utils/calculatePath.js +3 -3
  354. package/plugins/utils/calculatePath.mjs +3 -3
  355. package/plugins/utils/clamp.js +3 -3
  356. package/plugins/utils/clamp.mjs +3 -3
  357. package/plugins/utils/uuid.js +3 -3
  358. package/plugins/utils/uuid.mjs +3 -3
  359. package/react/hooks/useFiveModelReadyState.d.ts +1 -1
  360. package/react/index.js +3 -3
  361. package/react/index.mjs +3 -644
  362. package/sticker/index.js +13 -4
  363. package/sticker/index.mjs +43 -260
  364. package/umd/five-gltf-loader.js +3 -3
  365. package/umd/five-line.js +3 -3
  366. package/umd/five-plugins.js +4 -4
  367. package/umd/five-react.js +2 -2
  368. package/umd/five-sticker.js +13 -4
  369. package/umd/five-vfx.js +2 -2
  370. package/umd/five.js +152 -190
  371. package/vfx/index.js +3 -3
  372. package/vfx/index.mjs +3 -486
  373. package/work-downloader/index.js +3 -3
  374. package/work-downloader/index.mjs +3 -315
  375. package/docs/functions/index.loadAt3d.html +0 -1
  376. package/docs/functions/index.loadDome.html +0 -1
  377. package/docs/functions/index.loadDomez.html +0 -1
  378. package/docs/functions/index.loadGltf.html +0 -1
  379. package/docs/functions/index.loadPbm.html +0 -1
  380. package/docs/functions/index.loadPly.html +0 -10
  381. package/five/certificates/hardware.d.ts +0 -1
  382. package/five/thirdparty/jsrsasign.d.ts +0 -753
  383. package/five/work/_ALLOW_HOST.d.ts +0 -2
  384. package/five/work/keychain.d.ts +0 -5
  385. package/five/work/verify.d.ts +0 -7
  386. package/five/work/workVerify.d.ts +0 -2
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/30
5
- * Version: 1.0.0-alpha.13
4
+ * Generated: 2026/11/4
5
+ * Version: 1.0.0-alpha.15
6
6
  * License:
7
7
  * Realsee SDK License Agreement
8
8
 
@@ -1148,5 +1148,5 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
1148
1148
  </g>
1149
1149
  </g>
1150
1150
  </g>
1151
- `,svgWidth:80,svgHeight:160,svgContentHeight:320}],hA=function(e){function t(e,n,r,i){var a,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,c=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;VE(this,t),a=BE(this,t);var l=mA[n];return a.line=e,a.start=r,a.startIndex=c,a.type=n,a.length=i||(l?l.width:0),a.subLength=l&&l.subWidth?l.subWidth:null,a.rotateX=o,a.rotateY=s,a.entrance=null,a.noAnalysis=!1,a.height=null,a.subHeight=l&&l.subHeight?l.subHeight:null,a.offsetY=null,a.leftR=null,a.rightR=null,a}return YE(t,e),WE(t,[{key:`model`,value:function(){var e=mA[this.type];return ok({},e,{originWidth:e.width,originHeight:e.height,width:this.length,height:e.ratio?this.length*e.ratio:this.line?this.line.getThickness()/e.strokeWidth:0})}},{key:`startPointAt`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.line.align){var r=[void 0,1,0][this.line.align],i=rD(xk(this.line.getThickness()/2,[t,n])[r],2);t=i[0],n=i[1]}if(this.startIndex===1){var a=[n,t];t=a[0],n=a[1]}var o=this.start/$(t,n);return isNaN(o)&&(o=0),{x:t.x+(n.x-t.x)*o,y:t.y+(n.y-t.y)*o}}},{key:`startPointDrawAt`,value:function(){var e=rD(this.line.edgeLine(),2),t=e[0],n=e[1],r={x:t[0].x/2+n[0].x/2,y:t[0].y/2+n[0].y/2},i={x:t[1].x/2+n[1].x/2,y:t[1].y/2+n[1].y/2};return vk(this.startPointAt(),[r,i])}},{key:`endPointAt`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.line.align){var r=[void 0,1,0][this.line.align],i=rD(xk(this.line.getThickness()/2,[t,n])[r],2);t=i[0],n=i[1]}if(this.startIndex===1){var a=[n,t];t=a[0],n=a[1]}var o=(this.start+this.length)/$(t,n);return isNaN(o)&&(o=0),{x:t.x+(n.x-t.x)*o,y:t.y+(n.y-t.y)*o}}},{key:`endPointDrawAt`,value:function(){var e=rD(this.line.edgeLine(),2),t=e[0],n=e[1],r={x:t[0].x/2+n[0].x/2,y:t[0].y/2+n[0].y/2},i={x:t[1].x/2+n[1].x/2,y:t[1].y/2+n[1].y/2};return vk(this.endPointAt(),[r,i])}},{key:`rad`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.startIndex===1){var r=[n,t];t=r[0],n=r[1]}return Math.atan2(n.y-t.y,n.x-t.x)}},{key:`towardsRadWithArea`,value:function(e){return this.line.towardsRadWithArea(e)}},{key:`_checkItem`,value:function(e,t){var n=[];return e.forEach(function(e){var r=e.startPointAt(),i=e.endPointAt();if(Ek(r,t)){var a=$(t[0],r);n.push({distance:a,point:r})}if(Ek(i,t)){var o=$(t[0],i);n.push({distance:o,point:i})}}),n}},{key:`limitePointRange`,value:function(){var e=this,t=this.line,n=t.edgePoints(!0),r=t.items.filter(function(t){return t.id!==e.id}),i=rD(n.map(function(e){return t.closestPointOnLine(e)}),6),a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d={x:a.x/2+c.x/2,y:a.y/2+c.y/2},f=this.startPointAt(),p=this.endPointAt(),m={x:f.x/2+p.x/2,y:f.y/2+p.y/2},h=$(d,o)>$(d,u)?u:o,g=this._checkItem(r,[m,h]);g.length>0&&(g.sort(function(e,t){return e.distance-t.distance}),h=g[0].point);var _=$(d,s)>$(d,l)?l:s,v=this._checkItem(r,[m,_]);return v.length>0&&(v.sort(function(e,t){return e.distance-t.distance}),_=v[0].point),this.startIndex===1?[_,h]:[h,_]}}])}(Yk);hA.displayName=`LineItem`,hA.prototype.displayName=`LineItem`,hA.propTypes={line:[`object`,`null`],start:`number`,startIndex:`number`,type:`number`,length:`number`,rotateX:`boolean`,rotateY:`boolean`,entrance:[`number`,`null`],noAnalysis:`boolean`,height:[`number`,`null`],offsetY:[`number`,`null`],subLength:[`number`,`null`],leftR:[`number`,`null`],rightR:[`number`,`null`],subHeight:[`number`,`null`]},hA.storeTypes={type:`value`,line:`id`,startIndex:`value`,start:`value`,length:`value`,rotateX:`value`,rotateY:`value`,entrance:`value`,noAnalysis:`value`,height:`value`,offsetY:`value`,subLength:`value`,leftR:`value`,rightR:`value`,subHeight:`value`,startPointAt:function(e){return e.startPointAt()},endPointAt:function(e){return e.endPointAt()},is:function(e){return e.model().is}},hA.lineItemModels=mA;var gA={0:{type:0,description:`车-2`,href:`resource/items/{{ theme }}/car_2.png`,width:4200,height:1800,tag:`其他`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},1:{type:1,description:`车-1`,href:`resource/items/{{ theme }}/car_1.png`,width:1900,height:4300,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},2:{type:2,description:`中厨-1`,href:`resource/items/{{ theme }}/kitchen_1.png`,width:3158,height:1400,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},3:{type:3,description:`8人餐桌`,href:`resource/items/{{ theme }}/table_for_8.png`,width:3240,height:1800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},4:{type:4,description:`衣柜-1`,href:`resource/items/{{ theme }}/wardrobe_1.png`,width:1820,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},5:{type:5,description:`浴缸-2`,href:`resource/items/{{ theme }}/bathtub_2.png`,width:1500,height:694,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},6:{type:6,description:`衣柜-3`,href:`resource/items/{{ theme }}/wardrobe_3.png`,width:2830,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},7:{type:7,description:`植物-4`,href:`resource/items/{{ theme }}/plant_4.png`,width:700,height:628,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},8:{type:8,description:`植物-1`,href:`resource/items/{{ theme }}/plant_1.png`,width:700,height:565,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},9:{type:9,description:`植物-6`,href:`resource/items/{{ theme }}/plant_6.png`,width:800,height:758,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},10:{type:10,description:`书桌-1`,href:`resource/items/{{ theme }}/desk_1.png`,width:1200,height:930,tag:`书房`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},11:{type:11,description:`瓶艺-1`,href:`resource/items/{{ theme }}/bottle_art_1.png`,width:530,height:520,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},12:{type:12,description:`衣柜-2`,href:`resource/items/{{ theme }}/wardrobe_2.png`,width:2310,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},13:{type:13,description:`植物-2`,href:`resource/items/{{ theme }}/plant_2.png`,width:600,height:600,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},14:{type:14,description:`西厨-1`,href:`resource/items/{{ theme }}/western_kitchen_1.png`,width:2180,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},15:{type:15,description:`西厨-2`,href:`resource/items/{{ theme }}/western_kitchen_2.png`,width:1480,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},16:{type:16,description:`浴缸-1`,href:`resource/items/{{ theme }}/bathtub_1.png`,width:1500,height:956,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},17:{type:17,description:`植物-3`,href:`resource/items/{{ theme }}/plant_3.png`,width:700,height:639,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},18:{type:18,description:`书桌-2`,href:`resource/items/{{ theme }}/desk_2.png`,width:2200,height:2470,tag:`书房`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},19:{type:19,description:`吧台`,href:`resource/items/{{ theme }}/bar_counter.png`,width:1800,height:1130,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},20:{type:20,description:`书柜-短`,href:`resource/items/{{ theme }}/bookcase_short.png`,width:1460,height:350,tag:`书房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},21:{type:21,description:`鞋柜-长`,href:`resource/items/{{ theme }}/shoe_cabinet_long.png`,width:2059,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},22:{type:22,description:`鞋柜-短`,href:`resource/items/{{ theme }}/shoe_cabinet_short.png`,width:1308,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},23:{type:23,description:`中厨-2`,href:`resource/items/{{ theme }}/kitchen_2.png`,width:2020,height:650,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},24:{type:24,description:`椅子`,href:`resource/items/{{ theme }}/chair.png`,width:1050,height:950,tag:`客厅`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},25:{type:25,description:`秋千`,href:`resource/items/{{ theme }}/swing.png`,width:1600,height:1370,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},26:{type:26,description:`茶几`,href:`resource/items/{{ theme }}/tea_table.png`,width:1090,height:800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},27:{type:27,description:`庭院`,href:`resource/items/{{ theme }}/courtyard.png`,width:2100,height:3020,tag:`其他`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},28:{type:28,description:`躺椅`,href:`resource/items/{{ theme }}/deck_chair.png`,width:900,height:1850,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},29:{type:29,description:`钢琴`,href:`resource/items/{{ theme }}/piano.png`,width:1900,height:2260,tag:`其他`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},30:{type:30,description:`音响`,href:`resource/items/{{ theme }}/sound.png`,width:2500,height:550,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},31:{type:31,description:`马桶`,href:`resource/items/{{ theme }}/flush_toilet.png`,width:450,height:750,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},32:{type:32,description:`植物-5`,href:`resource/items/{{ theme }}/plant_5.png`,width:544,height:600,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},33:{type:33,description:`书柜-长`,href:`resource/items/{{ theme }}/bookcase_long.png`,width:2040,height:350,tag:`书房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},34:{type:34,description:`燃气灶-1`,href:`resource/items/{{ theme }}/gas_stove_1.png`,width:820,height:450,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},35:{type:35,description:`洗脸池-单`,href:`resource/items/{{ theme }}/wash_basin_single.png`,width:1150,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},36:{type:36,description:`洗手池-单`,href:`resource/items/{{ theme }}/sink_single.png`,width:1200,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},37:{type:37,description:`双人床-4`,href:`resource/items/{{ theme }}/double_4.png`,width:2743,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},38:{type:38,description:`电视柜-短`,href:`resource/items/{{ theme }}/tv_cabinet_short.png`,width:1580,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},39:{type:39,description:`储物柜-1`,href:`resource/items/{{ theme }}/locker_1.png`,width:1400,height:600,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},40:{type:40,description:`双人床-3`,href:`resource/items/{{ theme }}/double_3.png`,width:2791,height:2300,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},41:{type:41,description:`双人床-2`,href:`resource/items/{{ theme }}/double_2.png`,width:2791,height:2300,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},42:{type:42,description:`洗手池-双`,href:`resource/items/{{ theme }}/sink_double.png`,width:2777,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},43:{type:43,description:`洗脸池-双`,href:`resource/items/{{ theme }}/wash_basin_double.png`,width:2550,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},44:{type:44,description:`双人床(无床头柜)-1`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_1.png`,width:1914,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},45:{type:45,description:`电视柜-长`,href:`resource/items/{{ theme }}/tv_cabinet_long.png`,width:2040,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},46:{type:46,description:`洽谈桌组合`,href:`resource/items/{{ theme }}/negotiation_table_combination.png`,width:2830,height:950,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},47:{type:47,description:`哑铃架`,href:`resource/items/{{ theme }}/dumbbell_rack.png`,width:900,height:650,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},48:{type:48,description:`沙发组合-1`,href:`resource/items/{{ theme }}/sofa_combination_1.png`,width:4e3,height:2792,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},49:{type:49,description:`游泳池-2`,href:`resource/items/{{ theme }}/swimming_pool_2.png`,width:7680,height:3800,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},50:{type:50,description:`美人榻`,href:`resource/items/{{ theme }}/beauty_couch.png`,width:1600,height:520,tag:`卧室`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},51:{type:51,description:`单人床(无床头柜)`,href:`resource/items/{{ theme }}/single_bed_without_bedside_table.png`,width:1200,height:2120,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},52:{type:52,description:`沙发组合-2`,href:`resource/items/{{ theme }}/sofa_combination_2.png`,width:2e3,height:2054,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},53:{type:53,description:`跑步机`,href:`resource/items/{{ theme }}/treadmill.png`,width:2120,height:950,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},54:{type:54,description:`储物柜-3`,href:`resource/items/{{ theme }}/lockers_3.png`,width:2400,height:1360,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},55:{type:55,description:`洗菜池-1`,href:`resource/items/{{ theme }}/vegetable_washing_pool_1.png`,width:760,height:470,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},56:{type:56,description:`组合沙发-4`,href:`resource/items/{{ theme }}/combination_sofa_4.png`,width:1800,height:1595,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},57:{type:57,description:`台球桌`,href:`resource/items/{{ theme }}/pool_table.png`,width:2540,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},58:{type:58,description:`置物台-1`,href:`resource/items/{{ theme }}/shelf_1.png`,width:1632,height:560,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},59:{type:59,description:`储物柜-2`,href:`resource/items/{{ theme }}/locker_2.png`,width:2640,height:600,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},60:{type:60,description:`户外桌椅`,href:`resource/items/{{ theme }}/outdoor_tables_and_chairs.png`,width:3e3,height:2800,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},61:{type:61,description:`洗衣机-1`,href:`resource/items/{{ theme }}/washing_machine_1.png`,width:850,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},62:{type:62,description:`双人床-1`,href:`resource/items/{{ theme }}/double_1.png`,width:2851,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},63:{type:63,description:`六人餐桌`,href:`resource/items/{{ theme }}/table_for_six.png`,width:2230,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},64:{type:64,description:`洽谈沙发椅`,href:`resource/items/{{ theme }}/sofa_chair.png`,width:1e3,height:950,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},65:{type:65,description:`三人沙发`,href:`resource/items/{{ theme }}/three_seat_sofa.png`,width:2670,height:950,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},66:{type:66,description:`会客桌`,href:`resource/items/{{ theme }}/reception_table.png`,width:1800,height:1800,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},67:{type:67,description:`健身机`,href:`resource/items/{{ theme }}/fitness_machine.png`,width:2200,height:800,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},68:{type:68,description:`沙发组合-3`,href:`resource/items/{{ theme }}/sofa_combination_3.png`,width:2670,height:2330,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},69:{type:69,description:`双开冰箱`,href:`resource/items/{{ theme }}/double_refrigerator.png`,width:720,height:600,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},70:{type:70,description:`车库工具箱`,href:`resource/items/{{ theme }}/garage_toolbox.png`,width:1280,height:500,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},71:{type:71,description:`储物柜-4`,href:`resource/items/{{ theme }}/locker_4.png`,width:2440,height:2440,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},72:{type:72,description:`临时餐台`,href:`resource/items/{{ theme }}/temporary_dining_table.png`,width:1e3,height:1500,tag:`厨房`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},73:{type:73,description:`置物台-2`,href:`resource/items/{{ theme }}/shelf_2.png`,width:1590,height:600,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},74:{type:74,description:`四人餐桌`,href:`resource/items/{{ theme }}/table_for_four.png`,width:1700,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},75:{type:75,description:`洽谈桌`,href:`resource/items/{{ theme }}/negotiating_table.png`,width:950,height:950,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},76:{type:76,description:`游泳池-1`,href:`resource/items/{{ theme }}/swimming_pool_1.png`,width:4300,height:5340,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},77:{type:77,description:`毛巾凳`,href:`resource/items/{{ theme }}/towel_stool.png`,width:800,height:500,tag:`卫生间`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},78:{type:78,description:`电梯`,href:`resource/items/{{ theme }}/lift.png`,width:2e3,height:2e3,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},79:{type:79,description:`AC`,href:`resource/items/{{ theme }}/ac.png`,width:850,height:320,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},80:{type:80,description:`二人餐桌`,href:`resource/items/{{ theme }}/table_for_two.png`,width:780,height:1500,tag:`客厅`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},81:{type:81,description:`双人床(无床头柜)-2`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_2.png`,width:1500,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},82:{type:82,description:`双人床(无床头柜)-3`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_3.png`,width:1800,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},83:{type:83,description:`床头柜`,href:`resource/items/{{ theme }}/bedstand.png`,width:500,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},84:{type:84,description:`单开门冰箱`,href:`resource/items/{{ theme }}/refrigerator.png`,width:650,height:670,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},85:{type:85,description:`沙发组合-5`,href:`resource/items/{{ theme }}/sofa_combination_5.png`,width:1598,height:1418,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},86:{type:86,description:`沙发组合-6`,href:`resource/items/{{ theme }}/sofa_combination_6.png`,width:2680,height:1790,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},87:{type:87,description:`四人餐桌-1`,href:`resource/items/{{ theme }}/table_for_four_1.png`,width:1600,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},88:{type:88,description:`小单人沙发`,href:`resource/items/{{ theme }}/chair_2.png`,width:460,height:416,tag:`客厅`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},89:{type:89,description:`小洗手池`,href:`resource/items/{{ theme }}/sink_small.png`,width:600,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},90:{type:90,description:`小厨`,href:`resource/items/{{ theme }}/kitchen_small.png`,width:740,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},91:{type:91,description:`小衣柜`,href:`resource/items/{{ theme }}/wardrobe_small.png`,width:910,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},92:{type:92,description:`淋浴房`,href:`resource/items/{{ theme }}/shower.png`,width:650,height:670,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},93:{type:93,description:`鞋柜-1`,href:`resource/items/{{ theme }}/shoe_cabinet_1.png`,width:900,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},94:{type:94,description:`鞋柜-2`,href:`resource/items/{{ theme }}/shoe_cabinet_2.png`,width:1500,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},95:{type:95,description:`鞋柜-3`,href:`resource/items/{{ theme }}/shoe_cabinet_3.png`,width:2e3,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},96:{type:96,description:`电视柜-1`,href:`resource/items/{{ theme }}/tv_cabinet_1.png`,width:1500,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},97:{type:97,description:`电视柜-2`,href:`resource/items/{{ theme }}/tv_cabinet_2.png`,width:2040,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},98:{type:98,description:`电视柜-3`,href:`resource/items/{{ theme }}/tv_cabinet_3.png`,width:3e3,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},99:{type:99,description:`餐边柜-1`,href:`resource/items/{{ theme }}/sideboard_1.png`,width:900,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},100:{type:100,description:`餐边柜-2`,href:`resource/items/{{ theme }}/sideboard_2.png`,width:1500,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},101:{type:101,description:`餐边柜-3`,href:`resource/items/{{ theme }}/sideboard_3.png`,width:2e3,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},102:{type:102,description:`燃气灶-2`,href:`resource/items/{{ theme }}/gas_stove_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},103:{type:103,description:`洗菜池-2`,href:`resource/items/{{ theme }}/vegetable_washing_pool_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},104:{type:104,description:`橱柜-1`,href:`resource/items/{{ theme }}/kitchen_cabinet_1.png`,width:550,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},105:{type:105,description:`橱柜-2`,href:`resource/items/{{ theme }}/kitchen_cabinet_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},106:{type:106,description:`花洒`,href:`resource/items/{{ theme }}/shower_head.png`,width:260,height:200,tag:`卫生间`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},107:{type:107,description:`淋浴屏`,href:`resource/items/{{ theme }}/shower_panel.png`,width:1500,height:100,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},108:{type:108,description:`洗衣机-2`,href:`resource/items/{{ theme }}/washing_machine_2.png`,width:600,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},109:{type:109,description:`双人床-5`,href:`resource/items/{{ theme }}/double_5.png`,width:1500,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},110:{type:110,description:`双人床-6`,href:`resource/items/{{ theme }}/double_6.png`,width:1800,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},111:{type:111,description:`双人床-7`,href:`resource/items/{{ theme }}/double_7.png`,width:2e3,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},112:{type:112,description:`双人床-8`,href:`resource/items/{{ theme }}/double_8.png`,width:2300,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},113:{type:113,description:`梳妆台`,href:`resource/items/{{ theme }}/dressing_table.png`,width:1200,height:900,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},114:{type:114,description:`儿童床-1`,href:`resource/items/{{ theme }}/children_bed_1.png`,width:1400,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},115:{type:115,description:`儿童床-2`,href:`resource/items/{{ theme }}/children_bed_2.png`,width:1700,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},116:{type:116,description:`儿童床-3`,href:`resource/items/{{ theme }}/children_bed_3.png`,width:2e3,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},117:{type:117,description:`儿童书桌-1`,href:`resource/items/{{ theme }}/children_desk_1.png`,width:1e3,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},118:{type:118,description:`儿童书桌-2`,href:`resource/items/{{ theme }}/children_desk_2.png`,width:1200,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},119:{type:119,description:`儿童书桌-3`,href:`resource/items/{{ theme }}/children_desk_3.png`,width:1500,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},120:{type:120,description:`儿童活动区域-1`,href:`resource/items/{{ theme }}/children_carpet_1.png`,width:600,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},121:{type:121,description:`儿童活动区域-2`,href:`resource/items/{{ theme }}/children_carpet_2.png`,width:1200,height:1200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},122:{type:122,description:`儿童活动区域-3`,href:`resource/items/{{ theme }}/children_carpet_3.png`,width:1800,height:1800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},123:{type:123,description:`茶榻组合-1`,href:`resource/items/{{ theme }}/tea_table_combination_1.png`,width:2e3,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},124:{type:124,description:`茶榻组合-2`,href:`resource/items/{{ theme }}/tea_table_combination_2.png`,width:2500,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},125:{type:125,description:`茶榻组合-3`,href:`resource/items/{{ theme }}/tea_table_combination_3.png`,width:3e3,height:1800,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},126:{type:126,description:`儿童衣柜-1`,href:`resource/items/{{ theme }}/children_wardrobe_1.png`,width:900,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},127:{type:127,description:`儿童衣柜-2`,href:`resource/items/{{ theme }}/children_wardrobe_2.png`,width:1200,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},128:{type:128,description:`儿童衣柜-3`,href:`resource/items/{{ theme }}/children_wardrobe_3.png`,width:1500,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},129:{type:129,description:`儿童书柜-1`,href:`resource/items/{{ theme }}/children_bookcase_1.png`,width:800,height:450,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},130:{type:130,description:`儿童书柜-2`,href:`resource/items/{{ theme }}/children_bookcase_2.png`,width:1200,height:450,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},131:{type:131,description:`折行双跑楼梯`,href:`resource/items/{{ theme }}/folding_double_running_stairs.png`,width:3e3,height:3e3,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},132:{type:132,description:`平行双跑楼梯`,href:`resource/items/{{ theme }}/parallel_double_running_stairs.png`,width:2500,height:3600,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},133:{type:133,description:`折行三跑楼梯`,href:`resource/items/{{ theme }}/folding_treble_running_stairs.png`,width:4300,height:2700,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},134:{type:134,description:`手枪`,href:`resource/items/{{ theme }}/pistol.png`,width:500,height:500,tag:`物证痕迹`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},135:{type:135,description:`血迹`,href:`resource/items/{{ theme }}/bloodstain.png`,width:500,height:500,tag:`物证痕迹`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},136:{type:136,description:`手印`,href:`resource/items/{{ theme }}/handprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},137:{type:137,description:`足迹`,href:`resource/items/{{ theme }}/footprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},138:{type:138,description:`车轮轨迹`,href:`resource/items/{{ theme }}/wheelprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},139:{type:139,description:`弹头`,href:`resource/items/{{ theme }}/bullet.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},140:{type:140,description:`弹壳`,href:`resource/items/{{ theme }}/shell.png`,width:500,height:500,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},141:{type:141,description:`尸体`,href:`resource/items/{{ theme }}/corpse.png`,width:1500,height:1500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},142:{type:142,description:`空气净化器`,href:`resource/items/{{ theme }}/airscrubber.png`,width:580,height:380,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},143:{type:143,description:`吹风机`,href:`resource/items/{{ theme }}/airblower.png`,width:640,height:600,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},144:{type:144,description:`除湿器`,href:`resource/items/{{ theme }}/dehumidifier.png`,width:480,height:430,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},145:{type:145,description:`冰柜`,href:`resource/items/{{ theme }}/freezer.png`,width:800,height:460,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},146:{type:146,description:`架子`,href:`resource/items/{{ theme }}/shelf.png`,width:1e3,height:380,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},147:{type:147,description:`杂物`,href:`resource/items/{{ theme }}/sundries.png`,width:800,height:800,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},148:{type:148,description:`L型沙发`,href:`resource/items/{{ theme }}/L_sofa.png`,width:3500,height:1800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},149:{type:149,description:`书桌3`,href:`resource/items/{{ theme }}/desk_3.png`,width:1200,height:680,tag:`书房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},150:{type:150,description:`会议桌-1`,href:`resource/items/{{ theme }}/conference_table_1.png`,width:1600,height:1100,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},151:{type:151,description:`衣架`,href:`resource/items/{{ theme }}/coat_hanger.png`,width:1200,height:400,tag:`卧室`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},152:{type:152,description:`上下铺`,href:`resource/items/{{ theme }}/bunk_beds.png`,width:2e3,height:1040,tag:`卧室`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},153:{type:153,description:`蹲坑`,href:`resource/items/{{ theme }}/squatting.png`,width:600,height:480,tag:`卫生间`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},154:{type:154,description:`男尸`,href:`resource/items/{{ theme }}/male_corpse.png`,width:1600,height:800,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},155:{type:155,description:`女尸`,href:`resource/items/{{ theme }}/female_corpse.png`,width:1500,height:800,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},156:{type:156,description:`擦蹭状血迹`,href:`resource/items/{{ theme }}/rub-like-bookd-stains.png`,width:1200,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},157:{type:157,description:`擦拭物`,href:`resource/items/{{ theme }}/wipes.png`,width:300,height:60,tag:`物证痕迹`,direction:3,keywords:[`default`],themes:[`realsee`],label:!1},158:{type:158,description:`纸团`,href:`resource/items/{{ theme }}/paper_ball.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},159:{type:159,description:`未整理的被子`,href:`resource/items/{{ theme }}/unarranged_quilts.png`,width:800,height:500,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},160:{type:160,description:`手机`,href:`resource/items/{{ theme }}/mobile_phone.png`,width:400,height:280,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},161:{type:161,description:`菜刀`,href:`resource/items/{{ theme }}/kitchen_knife.png`,width:500,height:220,tag:`物证痕迹`,direction:3,keywords:[`default`],themes:[`realsee`],label:!1},162:{type:162,description:`矩形`,href:`resource/items/{{ theme }}/rectangle.png`,width:900,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0,svgWidth:90,svgHeight:60,svg:`<rect x=".75" y=".75" width="88.5" height="58.5" rx="4" fill="#FFF" stroke="#3D404E" fill-rule="evenodd" vector-effect="non-scaling-stroke"/>`},163:{type:163,description:`圆形`,href:`resource/items/{{ theme }}/circle.png`,width:600,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},164:{type:164,description:`三角形`,href:`resource/items/{{ theme }}/triangle.png`,width:600,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},165:{type:165,description:`五角星形`,href:`resource/items/{{ theme }}/five_pointedstar.png`,width:800,height:800,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},166:{type:166,description:`会议桌-2`,href:`resource/items/{{ theme }}/conference_table_2.png`,width:2800,height:1800,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},167:{type:167,description:`餐椅`,href:`resource/items/{{ theme }}/dining_chair.png`,width:500,height:580,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},168:{type:168,description:`转椅-1`,href:`resource/items/{{ theme }}/rotating_chair_1.png`,width:500,height:580,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},169:{type:169,description:`转椅-2`,href:`resource/items/{{ theme }}/rotating_chair_2.png`,width:640,height:640,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},170:{type:170,description:`长方形茶几`,href:`resource/items/{{ theme }}/rectangular_coffee_table.png`,width:1090,height:800,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},171:{type:171,description:`抽油烟机`,href:`resource/items/{{ theme }}/smoke_lampblack_machine.png`,width:1200,height:800,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},172:{type:172,description:`电话机`,href:`resource/items/{{ theme }}/telephone.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},173:{type:173,description:`对讲机`,href:`resource/items/{{ theme }}/walkie_talkie.png`,width:240,height:540,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},174:{type:174,description:`花盆`,href:`resource/items/{{ theme }}/flower_pot.png`,width:500,height:500,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},175:{type:175,description:`剪刀`,href:`resource/items/{{ theme }}/scissors.png`,width:500,height:460,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},176:{type:176,description:`角柜`,href:`resource/items/{{ theme }}/corner_cabinet.png`,width:1e3,height:1e3,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},177:{type:177,description:`口杯`,href:`resource/items/{{ theme }}/mouth_cup.png`,width:500,height:400,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},178:{type:178,description:`盘子`,href:`resource/items/{{ theme }}/plate.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},179:{type:179,description:`勺子`,href:`resource/items/{{ theme }}/spoon.png`,width:600,height:180,tag:`日常用品`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},180:{type:180,description:`手提包`,href:`resource/items/{{ theme }}/handbag.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},181:{type:181,description:`双人沙发`,href:`resource/items/{{ theme }}/double_sofa.png`,width:1600,height:850,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},182:{type:182,description:`藤椅`,href:`resource/items/{{ theme }}/cane_chair.png`,width:640,height:640,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},183:{type:183,description:`拖把`,href:`resource/items/{{ theme }}/mop.png`,width:490,height:1e3,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},184:{type:184,description:`卫生纸`,href:`resource/items/{{ theme }}/toilet_paper.png`,width:280,height:300,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},185:{type:185,description:`烟盒`,href:`resource/items/{{ theme }}/cigarette_case.png`,width:220,height:300,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},186:{type:186,description:`烟头`,href:`resource/items/{{ theme }}/cigarette_butt.png`,width:280,height:220,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},187:{type:187,description:`鱼缸`,href:`resource/items/{{ theme }}/fish_tank.png`,width:1e3,height:500,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},188:{type:188,description:`笔记本电脑`,href:`resource/items/{{ theme }}/notebook_computer.png`,width:500,height:500,tag:`日常用品`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},189:{type:189,description:`微波炉`,href:`resource/items/{{ theme }}/microwave_oven.png`,width:600,height:400,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},190:{type:190,description:`断口`,href:`resource/items/{{ theme }}/fracture.png`,width:1200,height:300,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},191:{type:191,description:`遗物堆`,href:`resource/items/{{ theme }}/relic_pile.png`,width:800,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},192:{type:192,description:`衣物`,href:`resource/items/{{ theme }}/clothing.png`,width:830,height:810,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},193:{type:193,description:`浴巾`,href:`resource/items/{{ theme }}/bath_towel.png`,width:420,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},194:{type:194,description:`水渍`,href:`resource/items/{{ theme }}/water_stains.png`,width:1070,height:600,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},195:{type:195,description:`螺丝刀`,href:`resource/items/{{ theme }}/bolt_driver.png`,width:300,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},196:{type:196,description:`凉鞋`,href:`resource/items/{{ theme }}/sandals.png`,width:430,height:460,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},197:{type:197,description:`水果刀`,href:`resource/items/{{ theme }}/fruit_knife.png`,width:300,height:260,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},198:{type:198,description:`匕首`,href:`resource/items/{{ theme }}/dragger.png`,width:400,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},199:{type:199,description:`玻璃弹孔`,href:`resource/items/{{ theme }}/glass_bullet_hole.png`,width:1160,height:1e3,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},200:{type:200,description:`电视`,href:`resource/items/{{ theme }}/tv.png`,width:1120,height:160,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},201:{type:201,description:`单向楼梯`,href:`resource/items/{{ theme }}/stairs.png`,width:1400,height:3600,tag:`楼梯`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},202:{type:202,description:`电脑`,href:`resource/items/{{ theme }}/computer.png`,width:700,height:120,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},203:{type:203,description:`工具`,href:`resource/items/{{ theme }}/tool.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},204:{type:204,description:`特殊`,href:`resource/items/{{ theme }}/special.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},205:{type:205,description:`生物`,href:`resource/items/{{ theme }}/biology.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},206:{type:206,description:`毒化`,href:`resource/items/{{ theme }}/poison.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},207:{type:207,description:`理化`,href:`resource/items/{{ theme }}/physics&chemistry.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},208:{type:208,description:`文检`,href:`resource/items/{{ theme }}/document.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},209:{type:209,description:`电子`,href:`resource/items/{{ theme }}/electronic.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},210:{type:210,description:`人像`,href:`resource/items/{{ theme }}/portrait.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},211:{type:211,description:`提取物品`,href:`resource/items/{{ theme }}/extract_items.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},212:{type:212,description:`左脚足迹`,href:`resource/items/{{ theme }}/footprint_l.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},213:{type:213,description:`右脚足迹`,href:`resource/items/{{ theme }}/footprint_r.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},214:{type:214,description:`电动车`,href:`resource/items/{{ theme }}/electric_car.png`,width:480,height:1320,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},215:{type:215,description:`自行车`,href:`resource/items/{{ theme }}/bike.png`,width:380,height:1480,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},216:{type:216,description:`摩托车`,href:`resource/items/{{ theme }}/motorcycle.png`,width:500,height:1780,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},217:{type:217,description:`越野车`,href:`resource/items/{{ theme }}/off_road_vehicle.png`,width:1700,height:4360,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},218:{type:218,description:`卡车`,href:`resource/items/{{ theme }}/truck.png`,width:1880,height:6800,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},219:{type:219,description:`客车`,href:`resource/items/{{ theme }}/bus.png`,width:3160,height:8e3,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},220:{type:220,description:`叉车`,href:`resource/items/{{ theme }}/forklift.png`,width:940,height:2720,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},221:{type:221,description:`拖拉机`,href:`resource/items/{{ theme }}/tractor.png`,width:1740,height:3060,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},222:{type:222,description:`调压箱(柜)`,href:`resource/items/{{ theme }}/a-s.png`,width:1e3,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},223:{type:223,description:`皮膜表小超`,href:`resource/items/{{ theme }}/a-d.png`,width:300,height:240,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},224:{type:224,description:`气体探测器`,href:`resource/items/{{ theme }}/a-f.png`,width:340,height:200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},225:{type:225,description:`报警控制器`,href:`resource/items/{{ theme }}/a-g.png`,width:450,height:270,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},226:{type:226,description:`球阀(螺纹)`,href:`resource/items/{{ theme }}/a-h.png`,width:500,height:250,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},227:{type:227,description:`球阀(法兰)`,href:`resource/items/{{ theme }}/a-j.png`,width:710,height:350,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},228:{type:228,description:`单气火嘴`,href:`resource/items/{{ theme }}/a-k.png`,width:320,height:160,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},229:{type:229,description:`三门蒸箱`,href:`resource/items/{{ theme }}/a-l.png`,width:900,height:850,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},230:{type:230,description:`电磁阀`,href:`resource/items/{{ theme }}/a-q.png`,width:510,height:450,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},231:{type:231,description:`压力表`,href:`resource/items/{{ theme }}/a-w.png`,width:300,height:300,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},232:{type:232,description:`PE球阀`,href:`resource/items/{{ theme }}/a-e.png`,width:300,height:300,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},233:{type:233,description:`家用燃气灶`,href:`resource/items/{{ theme }}/a-r.png`,width:600,height:400,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},234:{type:234,description:`双眼大锅灶`,href:`resource/items/{{ theme }}/a-t.png`,width:2200,height:1200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},235:{type:235,description:`单眼大锅灶`,href:`resource/items/{{ theme }}/a-y.png`,width:1200,height:1200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},236:{type:236,description:`四眼强力灶`,href:`resource/items/{{ theme }}/a-u.png`,width:900,height:500,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},237:{type:237,description:`单眼强力灶`,href:`resource/items/{{ theme }}/a-i.png`,width:460,height:460,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},238:{type:238,description:`双眼蒸灶`,href:`resource/items/{{ theme }}/a-o.png`,width:1500,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},239:{type:239,description:`单眼蒸灶`,href:`resource/items/{{ theme }}/a-p.png`,width:1e3,height:1e3,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},240:{type:240,description:`四眼煲仔炉`,href:`resource/items/{{ theme }}/q-w.png`,width:800,height:750,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},241:{type:241,description:`八眼煲仔炉`,href:`resource/items/{{ theme }}/q-e.png`,width:1450,height:750,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},242:{type:242,description:`六眼煲仔炉`,href:`resource/items/{{ theme }}/q-r.png`,width:1100,height:850,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},243:{type:243,description:`双眼矮汤炉`,href:`resource/items/{{ theme }}/q-t.png`,width:1200,height:650,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},244:{type:244,description:`单眼矮汤炉`,href:`resource/items/{{ theme }}/q-y.png`,width:700,height:700,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},245:{type:245,description:`单门蒸饭车`,href:`resource/items/{{ theme }}/q-u.png`,width:600,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},246:{type:246,description:`双门蒸饭车`,href:`resource/items/{{ theme }}/q-i.png`,width:520,height:550,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},247:{type:247,description:`右手手印`,href:`resource/items/{{ theme }}/right_handprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},248:{type:248,description:`指纹`,href:`resource/items/{{ theme }}/fingerprint.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},249:{type:249,description:`血指纹`,href:`resource/items/{{ theme }}/bloody_fingerprint.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},250:{type:250,description:`手套`,href:`resource/items/{{ theme }}/glove.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},251:{type:251,description:`血手套`,href:`resource/items/{{ theme }}/bloody_glove.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},252:{type:252,description:`赤足印`,href:`resource/items/{{ theme }}/barefoot_print.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},253:{type:253,description:`水脚印`,href:`resource/items/{{ theme }}/water_footprint.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},254:{type:254,description:`血脚印`,href:`resource/items/{{ theme }}/bloody_footprint.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},255:{type:255,description:`残缺鞋掌印`,href:`resource/items/{{ theme }}/shoe_sole_print.png`,width:220,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},256:{type:256,description:`残缺鞋跟印`,href:`resource/items/{{ theme }}/heel_print.png`,width:220,height:200,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},257:{type:257,description:`狗蹄印`,href:`resource/items/{{ theme }}/dog_hoof_print.png`,width:300,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},258:{type:258,description:`流淌血迹`,href:`resource/items/{{ theme }}/flowing_blood.png`,width:760,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},259:{type:259,description:`行进血迹`,href:`resource/items/{{ theme }}/traveling_blood.png`,width:610,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},260:{type:260,description:`滴落血迹`,href:`resource/items/{{ theme }}/dripping_blood.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},261:{type:261,description:`喷溅血迹`,href:`resource/items/{{ theme }}/splashing_blood.png`,width:800,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},262:{type:262,description:`血泊`,href:`resource/items/{{ theme }}/pond_of_blood.png`,width:810,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1}},_A=function(e){function t(e,n){var r;return VE(this,t),r=BE(this,t),r.x=e,r.y=n,r.notes=``,r.comment=``,r.textWriteMode=`horizontal`,r.locked=!1,r.width=1,r.height=1,r.rotateZ=0,r.rotateX=!1,r.rotateY=!1,r.area=null,r}return YE(t,e),WE(t,[{key:`getPointAt`,value:function(){var e=this.x,t=this.y,n=this.rotateZ/180*Math.PI,r=this.width/2,i=this.height/2;return[{x:e-r,y:t+i},{x:e+r,y:t+i},{x:e+r,y:t-i},{x:e-r,y:t-i}].map(function(r){return Ok(r,{x:e,y:t},n)})}},{key:`getAreaId`,value:function(){var e=this.canvas.areas,t=null,n=GE(e),r;try{for(n.s();!(r=n.n()).done;){var i=r.value;if(i.isPointInArea({x:this.x,y:this.y})){t=i.id;break}}}catch(e){n.e(e)}finally{n.f()}return t}}])}(Yk);_A.displayName=_A.prototype.displayName=`Item`,_A.propTypes={x:`number`,y:`number`,notes:`string`,comment:`string`,textWriteMode:`string`,locked:`boolean`,width:`number`,height:`number`,rotateZ:`number`,rotateX:`boolean`,rotateY:`boolean`},_A.storeTypes={x:`value`,y:`value`,notes:`value`,comment:`value`,textWriteMode:`value`,locked:`value`,width:`value`,height:`value`,rotateZ:`value`,rotateX:`value`,rotateY:`value`,area:function(e){return e.getAreaId()}};var vA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(VE(this,t),r=BE(this,t,[e,n]),ok(r,{type:0},i),i.width===void 0||i.height===void 0){var a=gA[r.type];r.width=a.width,r.height=a.height}return r}return YE(t,e),WE(t)}(_A);vA.displayName=vA.prototype.displayName=`Item-SimpleItem`,vA.propTypes=ok({type:[`number`,`string`]},_A.propTypes),vA.storeTypes=ok({type:`value`},_A.storeTypes),vA.types=gA;var yA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);yA.displayName=yA.prototype.displayName=`Item-StairsItem`,yA.propTypes=ok({},_A.propTypes),yA.storeTypes=ok({},_A.storeTypes),yA.defaultSize={width:1e3,height:1e3};var bA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,{range:.8},i),r}return YE(t,e),WE(t)}(_A);bA.displayName=bA.prototype.displayName=`Item-CircularStairsItem`,bA.propTypes=ok({range:`number`},_A.propTypes),bA.storeTypes=ok({range:`value`},_A.storeTypes),bA.defaultSize={width:2e3,height:2e3};var xA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);xA.displayName=`Item-PillarItem`,xA.prototype.displayName=`Item-PillarItem`,xA.propTypes=ok({},_A.propTypes),xA.storeTypes=ok({},_A.storeTypes),xA.defaultSize={width:600,height:600};var SA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,{depth:300},i),r}return YE(t,e),WE(t,[{key:`redraw`,value:function(){var e=this,t={x:this.x,y:this.y},n=rD(this.canvas.areas.filter(function(t){return t.isPointInArea(e)}),1)[0];if(n){var r=n.innerPath(),i=this.width<this.height?`height`:`width`,a,o;i===`width`?(a=Math.cos(this.rotateZ/180*Math.PI)*this.width/2,o=-Math.sin(this.rotateZ/180*Math.PI)*this.width/2):(a=Math.sin(this.rotateZ/180*Math.PI)*this.height/2,o=Math.cos(this.rotateZ/180*Math.PI)*this.height/2);for(var s=[{x:t.x+a,y:t.y+o},{x:t.x-a,y:t.y-o}],c=[],l=0;l<r.length-1;l++){var u=[r[l],r[l+1]],d=Ck(s,u,!1);d&&bk(d,u)<.01&&c.push(d)}c.push(t),c.sort(function(e,t){var n=Math.abs(a)>.01?`x`:`y`;return e[n]-t[n]});var f=c.indexOf(t),p=c[f-1],m=c[f+1];if(p&&m){var h=kk([p,m]);t.x=h.x,t.y=h.y,this.set(i,$(p,m))}}this.set(`x`,t.x),this.set(`y`,t.y)}}])}(_A);SA.displayName=`Item-BeamItem`,SA.prototype.displayName=`Item-BeamItem`,SA.propTypes=ok({depth:`number`},_A.propTypes),SA.storeTypes=ok({depth:`value`},_A.storeTypes),SA.defaultSize={width:1500,height:240};var CA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);CA.displayName=`Item-FlueItem`,CA.prototype.displayName=`Item-FlueItem`,CA.propTypes=ok({},_A.propTypes),CA.storeTypes=ok({},_A.storeTypes),CA.defaultSize={width:450,height:300};var wA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);wA.displayName=`Item-DrainItem`,wA.prototype.displayName=`Item-DrainItem`,wA.propTypes=ok({},_A.propTypes),wA.storeTypes=ok({},_A.storeTypes),wA.defaultSize={width:110,height:110};var TA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);TA.displayName=`Item-HeatingPipeItem`,TA.prototype.displayName=`Item-HeatingPipeItem`,TA.propTypes=ok({},_A.propTypes),TA.storeTypes=ok({},_A.storeTypes),TA.defaultSize={width:216,height:100};var EA=function(e){function t(e,n,r){var i,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return VE(this,t),i=BE(this,t),i.x=e,i.y=n,i.locked=!1,i.fontSize=a.fontSize||300,i.content=r||``,i.rotate=a.rotate||0,i.scale=a.scale||1,i.color=a.color||`#000000`,i.borderType=a.borderType||0,i.notes=a.notes||``,i.offsetX=0,i.offsetY=0,i.offsetEnable=!1,i}return YE(t,e),WE(t)}(Yk);EA.displayName=EA.prototype.displayName=`Text`,EA.propTypes={x:`number`,y:`number`,locked:`boolean`,fontSize:`number`,rotate:`number`,scale:`number`,content:`string`,color:`string`,borderType:`number`,notes:`string`,offsetX:`number`,offsetY:`number`,offsetEnable:`boolean`},EA.storeTypes={x:`value`,y:`value`,locked:`value`,fontSize:`value`,content:`value`,rotate:`value`,scale:`value`,color:`value`,borderType:`value`,notes:`value`,offsetX:`value`,offsetY:`value`,offsetEnable:`value`};function DA(e,t){for(var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:e.length-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:kA;r>n;){if(r-n>600){var a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1);DA(e,t,Math.max(n,Math.floor(t-o*c/a+l)),Math.min(r,Math.floor(t+(a-o)*c/a+l)),i)}var u=e[t],d=n,f=r;for(OA(e,n,t),i(e[r],u)>0&&OA(e,n,r);d<f;){for(OA(e,d,f),d++,f--;i(e[d],u)<0;)d++;for(;i(e[f],u)>0;)f--}i(e[n],u)===0?OA(e,n,f):(f++,OA(e,f,r)),f<=t&&(n=f+1),t<=f&&(r=f-1)}}function OA(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function kA(e,t){return e<t?-1:+(e>t)}var AA=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:9;VE(this,e),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}return WE(e,[{key:`all`,value:function(){return this._all(this.data,[])}},{key:`search`,value:function(e){var t=this.data,n=[];if(!HA(e,t))return n;for(var r=this.toBBox,i=[];t;){for(var a=0;a<t.children.length;a++){var o=t.children[a],s=t.leaf?r(o):o;HA(e,s)&&(t.leaf?n.push(o):VA(e,s)?this._all(o,n):i.push(o))}t=i.pop()}return n}},{key:`collides`,value:function(e){var t=this.data;if(!HA(e,t))return!1;for(var n=[];t;){for(var r=0;r<t.children.length;r++){var i=t.children[r],a=t.leaf?this.toBBox(i):i;if(HA(e,a)){if(t.leaf||VA(e,a))return!0;n.push(i)}}t=n.pop()}return!1}},{key:`load`,value:function(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(var t=0;t<e.length;t++)this.insert(e[t]);return this}var n=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}return this}},{key:`insert`,value:function(e){return e&&this._insert(e,this.data.height-1),this}},{key:`clear`,value:function(){return this.data=UA([]),this}},{key:`remove`,value:function(e,t){if(!e)return this;for(var n=this.data,r=this.toBBox(e),i=[],a=[],o,s,c;n||i.length;){if(n||(n=i.pop(),s=i[i.length-1],o=a.pop(),c=!0),n.leaf){var l=jA(e,n.children,t);if(l!==-1)return n.children.splice(l,1),i.push(n),this._condense(i),this}!c&&!n.leaf&&VA(n,r)?(i.push(n),a.push(o),o=0,s=n,n=n.children[0]):s?(o++,n=s.children[o],c=!1):n=null}return this}},{key:`toBBox`,value:function(e){return e}},{key:`compareMinX`,value:function(e,t){return e.minX-t.minX}},{key:`compareMinY`,value:function(e,t){return e.minY-t.minY}},{key:`toJSON`,value:function(){return this.data}},{key:`fromJSON`,value:function(e){return this.data=e,this}},{key:`_all`,value:function(e,t){for(var n=[];e;)e.leaf?t.push.apply(t,oD(e.children)):n.push.apply(n,oD(e.children)),e=n.pop();return t}},{key:`_build`,value:function(e,t,n,r){var i=n-t+1,a=this._maxEntries,o;if(i<=a)return o=UA(e.slice(t,n+1)),MA(o,this.toBBox),o;r||(r=Math.ceil(Math.log(i)/Math.log(a)),a=Math.ceil(i/Math.pow(a,r-1))),o=UA([]),o.leaf=!1,o.height=r;var s=Math.ceil(i/a),c=s*Math.ceil(Math.sqrt(a));WA(e,t,n,c,this.compareMinX);for(var l=t;l<=n;l+=c){var u=Math.min(l+c-1,n);WA(e,l,u,s,this.compareMinY);for(var d=l;d<=u;d+=s){var f=Math.min(d+s-1,u);o.children.push(this._build(e,d,f,r-1))}}return MA(o,this.toBBox),o}},{key:`_chooseSubtree`,value:function(e,t,n,r){for(;r.push(t),!(t.leaf||r.length-1===n);){for(var i=1/0,a=1/0,o=void 0,s=0;s<t.children.length;s++){var c=t.children[s],l=LA(c),u=zA(e,c)-l;u<a?(a=u,i=l<i?l:i,o=c):u===a&&l<i&&(i=l,o=c)}t=o||t.children[0]}return t}},{key:`_insert`,value:function(e,t,n){var r=n?e:this.toBBox(e),i=[],a=this._chooseSubtree(r,this.data,t,i);for(a.children.push(e),PA(a,r);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(r,i,t)}},{key:`_split`,value:function(e,t){var n=e[t],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var a=this._chooseSplitIndex(n,i,r),o=UA(n.children.splice(a,n.children.length-a));o.height=n.height,o.leaf=n.leaf,MA(n,this.toBBox),MA(o,this.toBBox),t?e[t-1].children.push(o):this._splitRoot(n,o)}},{key:`_splitRoot`,value:function(e,t){this.data=UA([e,t]),this.data.height=e.height+1,this.data.leaf=!1,MA(this.data,this.toBBox)}},{key:`_chooseSplitIndex`,value:function(e,t,n){for(var r,i=1/0,a=1/0,o=t;o<=n-t;o++){var s=NA(e,0,o,this.toBBox),c=NA(e,o,n,this.toBBox),l=BA(s,c),u=LA(s)+LA(c);l<i?(i=l,r=o,a=u<a?u:a):l===i&&u<a&&(a=u,r=o)}return r||n-t}},{key:`_chooseSplitAxis`,value:function(e,t,n){var r=e.leaf?this.compareMinX:FA,i=e.leaf?this.compareMinY:IA;this._allDistMargin(e,t,n,r)<this._allDistMargin(e,t,n,i)&&e.children.sort(r)}},{key:`_allDistMargin`,value:function(e,t,n,r){e.children.sort(r);for(var i=this.toBBox,a=NA(e,0,t,i),o=NA(e,n-t,n,i),s=RA(a)+RA(o),c=t;c<n-t;c++){var l=e.children[c];PA(a,e.leaf?i(l):l),s+=RA(a)}for(var u=n-t-1;u>=t;u--){var d=e.children[u];PA(o,e.leaf?i(d):d),s+=RA(o)}return s}},{key:`_adjustParentBBoxes`,value:function(e,t,n){for(var r=n;r>=0;r--)PA(t[r],e)}},{key:`_condense`,value:function(e){for(var t=e.length-1,n;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children,n.splice(n.indexOf(e[t]),1)):this.clear():MA(e[t],this.toBBox)}}])}();function jA(e,t,n){if(!n)return t.indexOf(e);for(var r=0;r<t.length;r++)if(n(e,t[r]))return r;return-1}function MA(e,t){NA(e,0,e.children.length,t,e)}function NA(e,t,n,r,i){i||(i=UA(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var a=t;a<n;a++){var o=e.children[a];PA(i,e.leaf?r(o):o)}return i}function PA(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function FA(e,t){return e.minX-t.minX}function IA(e,t){return e.minY-t.minY}function LA(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function RA(e){return e.maxX-e.minX+(e.maxY-e.minY)}function zA(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function BA(e,t){var n=Math.max(e.minX,t.minX),r=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),a=Math.min(e.maxY,t.maxY);return Math.max(0,i-n)*Math.max(0,a-r)}function VA(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function HA(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function UA(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function WA(e,t,n,r,i){for(var a=[t,n];a.length;)if(n=a.pop(),t=a.pop(),!(n-t<=r)){var o=t+Math.ceil((n-t)/r/2)*r;DA(e,o,t,n,i),a.push(t,o,o,n)}}function GA(e){return{minX:Math.min(e.points[0].x,e.points[1].x),minY:Math.min(e.points[0].y,e.points[1].y),maxX:Math.max(e.points[0].x,e.points[1].x),maxY:Math.max(e.points[0].y,e.points[1].y),line:e}}function KA(e,t){return e===t.length-1?0:e+1}function qA(e,t){var n=t.points;return hk(e,n[0])?n[1]:n[0]}var JA={_getArea:function(){var e=[],t={},n={},r={},i=this.points.map(function(e){return{x:e.x,y:e.y,id:e.id}});this.points.forEach(function(e,t){var n=i[t];n.lines=e.lines.map(function(e){return{id:e.id,type:e.type,points:e.points.map(function(e){return i.find(function(t){return t.id===e.id})})}})});for(var a=rD(i.reduce(function(e,t){return t.lines=t.lines.filter(function(e){return!(e.type===7||e.type===8)}),e[+(t.lines.length<2)].push(t),e},[[],[]]),2),o=a[0],s=a[1],c=function(){var e=s.pop(),t=e.lines[0];if(!t)return 0;var n=qA(e,t),r=o.findIndex(function(e){return e.id===n.id});if(r===-1)return 0;var i=n.lines.findIndex(function(t){return!!t.points.find(function(t){return t.id===e.id})});n.lines.splice(i,1),n.lines.length<2&&(o.splice(r,1),s.push(n))};s.length>0;)c();o.forEach(function(e){r[e.id]=[],e.lines.length&&(t[e.id]=[],n[e.id]=[],e.lines.forEach(function(r){var i=qA(e,r);t[e.id].push(i.id),n[e.id].push(i.id)}))});var l=[],u=null,d=null;function f(){if(l.length>1)u=l[l.length-2],d=l[l.length-1];else{if(l.length===0){if(!t||!Object.keys(t).length)return!1;l.push(u=Object.keys(t)[0])}if(l.length===1){if(u=l[l.length-1],!t[u]||!t[u].length)return l.pop(),f();l.push(d=t[u].shift()),t[u].length||delete t[u]}}return!0}for(;Object.keys(t).length&&f();){if(!t[d]){l.pop();continue}var p=n[d].indexOf(u),m=KA(p,n[d]);if(p===m){l.pop();continue}var h=n[d][m],g=t[d].indexOf(h);if(g===-1){n[d].splice(m,1),n[d].length||l.pop();continue}var _=t[d].splice(g,1)[0];t[d].length||delete t[d],_===u?t[d].length?(n[d].splice(m,1),n[d].length||l.pop()):l.pop():l.indexOf(_)===-1?l.push(_):(e.push(l.slice(l.indexOf(_))),l.splice(l.indexOf(_)+1))}return e},_check:function(){this.checkLine(),this.checkPoint(),this.checkArea(),this.checkLineItem(),this.checkProperty()},_mergeLineWhenCheck:function(){for(var e=this,t=oD(this.points),n=!1,r=function(){var r=t[i];if(r.lines.length!==2||r.lines[0].type!==r.lines[1].type||r.lines[0].curve||r.lines[1].curve||r.lines[0].thicknessComputed!==r.lines[1].thicknessComputed)return 0;var a=rD(r.lines.map(function(e){return _k.apply(void 0,oD(e.points))}),2),o=a[0],s=a[1];if(gk(o,s)){var c=rD(r.lines.map(function(e){return e.points.filter(function(e){return e.id!==r.id})[0]}),2),l=c[0],u=c[1];if(l.x>u.x||l.y<u.y){var d=[u,l];l=d[0],u=d[1]}var f=e.newLineWithPoints(l,u),p=rD(r.lines,2),m=p[0],h=p[1];m.items.map(function(e){var t=e.startIndex;e.set(`line`,f),hk(m.points[t],[l,u][t])||e.set(`start`,e.start+$.apply(void 0,oD(h.points))),f.set(`items`,f.items.concat(e))}),h.items.map(function(e){var t=e.startIndex;e.set(`line`,f),hk(h.points[t],[l,u][t])||e.set(`start`,e.start+$.apply(void 0,oD(m.points))),f.set(`items`,f.items.concat(e))}),r.lines[0].thickness&&f.set(`thickness`,r.lines[0].thickness),m.set(`items`,[]),h.set(`items`,[]),e.removePoint(r),n=!0}},i=0;i<t.length;i++)r();return this._check(),n},check:function(){var e=this;if(this.emit(`beforeCheck`),this.lines.forEach(function(t){e.lineItems.forEach(function(n){n.line.id===t.id&&t.items.every(function(e){return e.id!==n.id})&&t.items.push(e.getAnyById(n.id))})}),this.mergeLineWhenCheck)for(var t=0;this._mergeLineWhenCheck()&&!(t++>5););else this._check();this.emit(`check`)},checkPoint:function(){if(this.points.length<=1){this.removeAllModels();return}for(var e=[],t=0,n=this.points.length;t<n;t++){var r=this.points[t],i=!1;if(r.lines.length===0){this.removePoint(r),t--,n--;continue}var a=GE(e),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(hk(s,r)){var c=GE(r.lines),l;try{for(c.s();!(l=c.n()).done;){var u=l.value,d=u.points;d[d[0]===r?0:1]=s,d[0]===d[1]?(this.removeLine(u),s.lines.length===0&&(sk(s,this.points),t--,n--,i=!0)):(u.set(`points`,d),s.set(`lines`,s.lines.concat(u)))}}catch(e){c.e(e)}finally{c.f()}sk(r,this.points),t--,n--,i=!0;break}}}catch(e){a.e(e)}finally{a.f()}i||e.push(r)}e.length=0},checkLine:function(){var e=this;if(this.lines.forEach(function(t){if(t.points[0]===t.points[1]){e.removeLine(t);return}if(t.curve){var n=GE(t.items),r;try{for(n.s();!(r=n.n()).done;){var i=r.value;e.removeLineItem(i)}}catch(e){n.e(e)}finally{n.f()}t.set(`items`,[])}}),this.lines.length>1){var t=function(e){var t=GA(e);i.set(e,t),r.insert(t)},n=function(e){var t=i.get(e);t&&(r.remove(t),i.delete(e))},r=new AA,i=new WeakMap;this.lines.forEach(function(e){return t(e)});for(var a=function(r,i){for(var a=r.points,o=i.points,s=0,c=[r,i];s<c.length;s++){var l=c[s];if(hk(l.points[0],l.points[1]))return e.removeLine(l),n(l),!1}var u=[hk(a[0],o[0])&&hk(a[1],o[1]),hk(a[0],o[1])&&hk(a[1],o[0])];if(u[0]||u[1]){var d=GE(i.items),f;try{for(d.s();!(f=d.n()).done;){var p=f.value;u[0]===!1&&p.set(`startIndex`,+(p.startIndex===0)),p.set(`line`,r)}}catch(e){d.e(e)}finally{d.f()}return e.removeLine(i),n(i),!1}var m=_k(a[0],a[1]),h=_k(o[0],o[1]),g=hk(a[0],o[0])?_k(a[1],o[0]):_k(a[0],o[0]),_=Math.abs(Math.atan(m))<Math.PI/4?`x`:`y`;if(gk(m,h)&&gk(h,g)&&((a[0][_]-o[0][_])*(a[1][_]-o[0][_])<0||(a[0][_]-o[1][_])*(a[1][_]-o[1][_])<0||(o[0][_]-a[0][_])*(o[1][_]-a[0][_])<0||(o[0][_]-a[1][_])*(o[1][_]-a[1][_])<0)){var v=a.concat(o).sort(function(e,t){return e[_]-t[_]}),y=[].concat(r.items,i.items);y=y.map(function(e){return{startPointAt:e.startPointAt(),endPointAt:e.endPointAt(),lineItem:e,received:!1}});var b=[];return v.forEach(function(n,a){var o=v[a+1];if(o){var s=e.newLine(n,o);t(s);for(var c=function(){var e=u[l],t={type:e.type,thickness:e.thickness,height:e.height,curve:e.curve,isLoadBearing:e.isLoadBearing,isSplitArea:e.isSplitArea};if(s.points.every(function(t){return Ek(t,e.points)}))return Object.assign(s,t),1},l=0,u=[i,r];l<u.length&&!c();l++);b.push(s)}}),e.removeLine(i),e.removeLine(r),n(i),n(r),y.forEach(function(t){var n=t.startPointAt,r=t.endPointAt,i=t.lineItem;b.forEach(function(a){if(!t.received&&a.isPointOnLine(n)&&a.isPointOnLine(r)){var o=rD(a.points,2),s=o[0],c=o[1],l=s.distanceFromPoint(n);s.distanceFromPoint(r)>l?(i.set(`startIndex`,0),i.set(`start`,l)):(i.set(`startIndex`,1),i.set(`start`,c.distanceFromPoint(n))),a.set(`items`,a.items.concat(i)),i.set(`line`,a),e.lineItems.push(i),t.received=!0}})}),!1}var x=Ck(a,o,!0),S=x&&(hk(x,a[0])||hk(x,a[1]))&&(hk(x,o[0])||hk(x,o[1]));if(x&&!S){var C=[].concat(r.items,i.items);C=C.map(function(e){return{startPointAt:e.startPointAt(),endPointAt:e.endPointAt(),lineItem:e,received:!1}});for(var ee=[],te=0,ne=[r,i];te<ne.length;te++){var w=ne[te];e.newPoint(x.x,x.y);var re={type:w.type,thickness:w.thickness,height:w.height,curve:w.curve,isLoadBearing:w.isLoadBearing,isSplitArea:w.isSplitArea};hk(x,w.points[0])||hk(x,w.points[1])||(ee.push(Object.assign(e.newLine(x,w.points[0]),re),Object.assign(e.newLine(x,w.points[1]),re)),e.removeLine(w),n(w))}return ee.forEach(function(e){return t(e)}),C.forEach(function(t){var n=t.startPointAt,r=t.endPointAt,i=t.lineItem;ee.forEach(function(a){if(!t.received&&a.isPointOnLine(n)&&a.isPointOnLine(r)){var o=rD(a.points,2),s=o[0],c=o[1],l=s.distanceFromPoint(n);s.distanceFromPoint(r)>l?(i.set(`startIndex`,0),i.set(`start`,l)):(i.set(`startIndex`,1),i.set(`start`,c.distanceFromPoint(n))),a.set(`items`,a.items.concat(i)),i.set(`line`,a),e.lineItems.push(i),t.received=!0}})}),!1}},o=!1,s=new Set,c=0;!o&&c<1e3;){o=!0;var l=GE(this.lines),u;try{outer:for(l.s();!(u=l.n()).done;){var d=u.value;if(!s.has(d.id)){var f=GE(r.search(i.get(d)).map(function(e){return e.line})),p;try{for(f.s();!(p=f.n()).done;){var m=p.value;if(m!==d&&!s.has(d.id)&&a(d,m)===!1){o=!1,c++;break outer}}}catch(e){f.e(e)}finally{f.f()}s.add(d.id)}}}catch(e){l.e(e)}finally{l.f()}}}this.lines.forEach(function(e){var t=e.points,n=!1;Math.abs(t[0].x-t[1].x)>.01?t[0].x>t[1].x&&(e.points=[t[1],t[0]],n=!0):t[0].y<t[1].y&&(e.points=[t[1],t[0]],n=!0),n&&(e.align===1?e.align=2:e.align===2&&(e.align=1),e.curve=-e.curve,e.items.forEach(function(t){t.start=e.length()-t.start-t.length,t.rotateX=!t.rotateX,t.rotateY=!t.rotateY}))})},checkArea:function(){var e=this;if(this.points.length!==0){this.points.forEach(function(e){return e.sortLinesClickWise()});var t;try{t=this._getArea()}catch(e){console.log(e),t=[]}var n=[];t.forEach(function(t){var r=t.map(function(t){return e.getPointById(t)});Pk(r)&&n.push(r)});var r=this.areas.slice();return this.areas.length=0,r.forEach(function(t,i){var a={};t.points.forEach(function(e){return a[e.id]=!0});var o=rD(uk(n,function(e){return e.filter(function(e){return a[e.id]===!0}).length}),2),s=o[0];o[1]>2&&(t.set(`points`,s),e.areas.push(t),sk(s,n),r[i]=void 0)}),n.forEach(function(t){return e.newArea(t)}),this.sortAreas(),r.forEach(function(e){e&&(e.set(`points`,[]),delete e.canvas)}),t}},checkLineItem:function(){var e=this;this.lineItems.slice().forEach(function(t){t.line||e.removeLineItem(t)}),this.lines.forEach(function(e){e.items.forEach(function(t){return t.set(`line`,e)})});var t=[];this.lineItems.forEach(function(e){var n=e.line.points[e.startIndex],r=e.line,i=rD(e.limitePointRange(),2),a=i[0],o=i[1],s=$(a,o);if(Math.round(s)<Math.round(r.getThickness())){t.push(e);return}$(o,n)<e.start+e.length&&(s>=e.length?e.set(`start`,$(o,n)-e.length):(e.set(`start`,$(n,a)),e.set(`length`,s)))}),t.forEach(function(t){e.removeLineItem(t)})},checkProperty:function(){var e=this,t;try{t=this._getArea()}catch(e){t=[]}this.lines.forEach(function(e){e.set(`edgeComputed`,!1),e.set(`thicknessComputed`,120),e.set(`offsetComputed`,0)}),t.forEach(function(t){var n=t.map(function(t){return e.getPointById(t)});Pk(n)||n.forEach(function(t,r){var i=n[r+1]||n[0],a=e.getLineByPoints(t,i);if(a){a.set(`edgeComputed`,!0),a.set(`thicknessComputed`,240);var o=a.points[1],s=a.points[0];t===o&&i===s?a.set(`offsetComputed`,a.thicknessComputed/2-60):a.set(`offsetComputed`,-a.thicknessComputed/2+60)}})}),this.lines.map(function(e){e.points,e.thickness!==null&&e.set(`thicknessComputed`,e.thickness),e.offset!==void 0&&e.offset!==null&&e.set(`offsetComputed`,e.offset)})}},YA=[`points`,`lines`,`areas`,`lineItems`,`items`,`texts`],XA={Point:Qk,Line:$k,Area:iA,LineItem:hA,"Item-SimpleItem":vA,"Item-StairsItem":yA,"Item-CircularStairsItem":bA,"Item-PillarItem":xA,"Item-BeamItem":SA,"Item-FlueItem":CA,"Item-DrainItem":wA,"Item-HeatingPipeItem":TA,Text:EA};function ZA(e,t){return ik(e.constructor.storeTypes,function(n,r){if(nk(n)===`function`)return t.skipCalculation?void 0:n(e);switch(n){case`value`:return rk(e[r]);case`idArray`:return e[r].map(function(e){return e.id});case`id`:return e[r].id;default:return}})}function QA(e,t,n){ik(e.constructor.storeTypes,function(r,i){var a=function(t){var n=e.constructor.propTypes[i];return n?[].concat(n).some(function(e){return nk(t)===e}):!0},o;switch(r){case`value`:o=t[i];break;case`idArray`:o=t[i].map(function(e){return n[e]}).filter(function(e){return!!e});break;case`id`:o=n[t[i]];break;default:return}a(o)&&(e[i]=o),e.check&&e.check(t)})}var $A={save:function(e){var t=this,n={};return YA.forEach(function(r){n[r]=t[r].map(function(n){return ok(ZA(n,e||t.constructor.saveOptions),{displayName:n.constructor.displayName,id:n.id})})}),n.info=ok({},this.info),n.templates=this.templates,n},load:function(e){var t=this;this.removeAllModels(),this.sizeCache={},this.areaRelationCache={},this.info=ok({},e.info),this.info.height=this.info.height||0,this.info.subheight=this.info.subheight||0,this.info.description=this.info.description||``,this.info.tags=this.info.tags||[],this.info.ruleType=this.info.ruleType||0,this.templates=e.templates;var n={};YA.forEach(function(r){t[r]=(e[r]||[]).filter(function(e){var t=e.displayName;return Object.keys(XA).includes(t)}).map(function(e){var r=e.id,i=e.displayName;return ok(n[r]=new XA[i],{id:r,canvas:t})})}),YA.forEach(function(t){(e[t]||[]).filter(function(e){var t=e.displayName;return Object.keys(XA).includes(t)}).forEach(function(e){QA(n[e.id],e,n)})}),this.sortAreas(),this.emit(`canvas_loaded`)},copy:function(e){e=JSON.parse(JSON.stringify(e));var t={},n=function(e){return t[e]=t[e]||lk()};return YA.forEach(function(t){e[t].forEach(function(e){var t=XA[e.displayName].storeTypes;e.id=n(e.id),ik(t,function(t,r){switch(t){case`idArray`:e[r]=e[r].map(function(e){return n(e)});break;case`id`:e[r]=n(e[r]);break}})})}),e}},ej=`0.0.3`,tj=function(e){function t(){var e;return VE(this,t),e=BE(this,t),e.app={getEntrenceLineItemTowardsRadAndNorthRad:function(){return[]}},e.info={},e.templates={},e.points=[],e.lines=[],e.areas=[],e.lineItems=[],e.items=[],e.texts=[],e.tolerance=300,e.vrData={},e.property={},e.sizeCache={},e.areaRelationCache={},e}return YE(t,e),WE(t,[{key:`setInfo`,value:function(e,t){this.info[e]=t,this.emit(`canvasUpdateInfo`)}},{key:`getAnyById`,value:function(e){return this.getPointById(e)||this.getLineById(e)||this.getAreaById(e)||this.getLineItemById(e)||this.getItemById(e)||this.getTextById(e)}},{key:`newPoint`,value:function(e,t){var n=new Qk(e,t);return this.points.push(n),n.canvas=this,n}},{key:`removePoint`,value:function(e){var t=this;e.lines.forEach(function(e){return t.removeLine(e)}),e.set(`lines`,[]),sk(e,this.points),delete e.canvas}},{key:`getPointById`,value:function(e){var t=GE(this.points),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newLine`,value:function(e,t){var n=this.newPoint(e.x,e.y),r=this.newPoint(t.x,t.y);return this.newLineWithPoints(n,r)}},{key:`newLineWithPoints`,value:function(e,t){var n=new $k(e,t);return e.lines.push(n),t.lines.push(n),this.lines.push(n),n.canvas=this,n}},{key:`removeLine`,value:function(e){var t=this;e.items.forEach(function(e){t.removeLineItem(e)}),e.points[0].removeLine(e),e.points[1].removeLine(e),e.set(`points`,[]),sk(e,this.lines),delete e.canvas}},{key:`getLineById`,value:function(e){var t=GE(this.lines),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`getLineByPoints`,value:function(e,t){return this.lines.find(function(n){return n.points[0]===e&&n.points[1]===t||n.points[1]===e&&n.points[0]===t})}},{key:`getLineByPointIds`,value:function(e,t){return this.lines.find(function(n){return n.points[0].id===e&&n.points[1].id===t||n.points[1].id===e&&n.points[0].id===t})}},{key:`newLineItem`,value:function(e,t,n,r,i,a,o){var s=new hA(e,t,n,r,i,a,o);return e.items.push(s),this.lineItems.push(s),s.canvas=this,s}},{key:`removeLineItem`,value:function(e){var t=e.line;t&&t.set(`items`,t.items.filter(function(t){return t!==e})),e.set(`line`,null),sk(e,this.lineItems),delete e.canvas}},{key:`getLineItemById`,value:function(e){var t=GE(this.lineItems),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newItem`,value:function(e,t,n,r){var i;switch(n){case`Item-StairsItem`:i=new yA(e,t,r);break;case`Item-CircularStairsItem`:i=new bA(e,t,r);break;case`Item-PillarItem`:i=new xA(e,t,r);break;case`Item-BeamItem`:i=new SA(e,t,r);break;case`Item-FlueItem`:i=new CA(e,t,r);break;case`Item-DrainItem`:i=new wA(e,t,r);break;case`Item-HeatingPipeItem`:i=new TA(e,t,r);break;default:i=new vA(e,t,r);break}return this.items.push(i),i.canvas=this,i}},{key:`removeItem`,value:function(e){sk(e,this.items),delete e.canvas}},{key:`getItemById`,value:function(e){var t=GE(this.items),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newArea`,value:function(e){var t=new iA(e);return this.property.fontScale&&(t.labelScale=this.property.fontScale),t.canvas=this,this.areas.push(t),t}},{key:`getAreaById`,value:function(e){var t=GE(this.areas),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newText`,value:function(e,t,n,r){var i=new EA(e,t,n,r);return this.property.fontScale&&(i.scale=this.property.fontScale),this.texts.push(i),i.canvas=this,i}},{key:`removeText`,value:function(e){sk(e,this.texts),delete e.canvas}},{key:`getTextById`,value:function(e){var t=GE(this.texts),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`sortAreas`,value:function(){var e=this.areas.reduce(function(e,t){var n=t.computeBounding(),r=n.width,i=n.height;return e[t.id]=r*i,e},{});this.areas.sort(function(t,n){return e[n.id]-e[t.id]})}},{key:`getAreasSize`,value:function(e){var t=this.lines.reduce(function(e,t){return e+Math.abs(t.curve)},0),n=0,r=GE(this.items),i;try{for(r.s();!(i=r.n()).done;){var a=i.value;if(a.displayName===`Item-PillarItem`){var o=GE(a.getPointAt()),s;try{for(o.s();!(s=o.n()).done;){var c=s.value;n=n*31+Math.round(c.x)|0,n=n*17+Math.round(c.y)|0}}catch(e){o.e(e)}finally{o.f()}}}}catch(e){r.e(e)}finally{r.f()}var l=t*65537+n,u={},d=GE(this.areas),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=Lk(p.points)*31+l|0,h=p.id+String(Number(e)),g=void 0,_=this.sizeCache[h];_&&_.hash===m&&(g=_.size),g||(g=p.size(e,!0),this.sizeCache[h]={size:g,hash:m}),u[p.id]={originSize:g,cutSize:g}}}catch(e){d.e(e)}finally{d.f()}for(var v=this.areas.length-1;v>0;v--)for(var y=this.areas[v],b=v-1;b>=0;b--){var x=this.areas[b];if(u[x.id].cutSize>u[y.id].originSize){var S=x.id+`-`+y.id,C=this.areaRelationCache[S];if((!C||C.outsidePointsHash!==Lk(x.points)||C.insidePointsHash!==Lk(y.points))&&(C={outsidePointsHash:Lk(x.points),insidePointsHash:Lk(y.points),inArea:x.isAreaInArea(y)},this.areaRelationCache[S]=C),C.inArea){u[x.id].cutSize-=u[y.id].originSize;break}}}return u}},{key:`removeAllModels`,value:function(){this.points.forEach(function(e){e.lines=[],delete e.canvas}),this.lines.forEach(function(e){e.points=[],e.items=[],delete e.canvas}),this.areas.forEach(function(e){e.points=[],delete e.canvas}),this.lineItems.forEach(function(e){e.line=null,delete e.canvas}),this.points.length=this.lines.length=this.areas.length=this.lineItems.length=this.texts.length=0}},{key:`closestPointAtCrossLine`,value:function(e,t,n){var r=bk(e,t);if(!(r<=this.tolerance)){var i=t.find(function(t){return hk(e,n)});if(i){var a=xk(r,[n,i]),o=[a[0][0],a[1][0]];if(!(bk(e,o)>this.tolerance))return vk(e,o)}}}},{key:`closestPointAtPointMode`,value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:$O,r=isNaN(t.tolerance)?this.tolerance:t.tolerance;typeof t.toleranceByZoom==`function`&&(r=t.toleranceByZoom(r));var i=[],a=[];this.points.forEach(function(e){t.exceptPoint&&t.exceptPoint.some(function(t){return t===e})||i.push({x:e.x,y:e.y})}),this.lines.forEach(function(e){t.exceptLine&&t.exceptLine.some(function(t){return t===e})||e.points.length<2||a.push([{x:e.points[0].x,y:e.points[0].y},{x:e.points[1].x,y:e.points[1].y}])}),t.points&&(i=i.concat(t.points)),t.lines&&(a=a.concat(t.lines)),t.useInnerLine&&t.currentArea&&(a=Fk(t.currentArea.innerPath(!1,!1)));var o=rD(dk(i,function(t){return $(e,t)}),2),s=o[0];if(o[1]<r)return n(`point`,s),s;var c=rD(dk(a,function(t){return bk(e,t)}),2),l=c[0];if(c[1]<r){n(`line`,l);var u=vk(e,l),d=Math.abs(_k.apply(void 0,oD(l)));if(gk(d,0)){var f=rD(dk(i,function(t){return Math.abs(e.x-t.x)}),2),p=f[0];f[1]<r&&(u.x=p.x)}else if(gk(d,1/0)){var m=rD(dk(i,function(t){return Math.abs(e.y-t.y)}),2),h=m[0];m[1]<r&&(u.y=h.y)}return u}if(!t.noExtension&&t.checkVertical&&t.startPoint){var g=this.points.find(function(e){return hk(e,t.startPoint)}),_=this.lines.reduce(function(e,t){var n=t.points.findIndex(function(e){return g===e});return n!==-1&&(e.push(t.points),e.push([t.points[n],Ok(t.points[n^1],t.points[n],Math.PI/2)])),e},[]);if(_.length>0){var v=_.reduce(function(t,n){var r=yk(e,n),i=$(r,e);return i<t.dis?{point:r,dis:i}:t},{point:e,dis:1/0});if(v.dis<r)return n(`vertical`,[t.startPoint,v.point]),v.point}}return ok({noMath:!0},ik(e,function(e,a){var o=rD(dk(i,function(t){return Math.abs(e-t[a])}),2),s=o[0],c=o[1];return!t.noExtension&&c<r?(n(`line-`+a,s),s[a]):Math.round(e)}))}},{key:`moveTo`,value:function(e,t){var n=kk(this.points),r=e-n.x,i=t-n.y;this.points.forEach(function(e){e.set(`x`,e.x+r),e.set(`y`,e.y+i)}),this.items.forEach(function(e){e.set(`x`,e.x+r),e.set(`y`,e.y+i)})}},{key:`moveBy`,value:function(e,t){this.points.forEach(function(n){n.set(`x`,n.x+e),n.set(`y`,n.y+t)}),this.items.forEach(function(n){n.set(`x`,n.x+e),n.set(`y`,n.y+t)})}},{key:`rotate`,value:function(e){if(this.points.length!==0){var t=kk(this.points),n=function(e){return Math.round(e*1e3)/1e3},r=function(n,r){var i={x:r.x+n.x,y:r.y+n.y},a=Ok(r,t,e),o=Ok(i,t,e);return{x:o.x-a.x,y:o.y-a.y}},i={},a={};this.areas.forEach(function(e){var t=kk(e.points);i[e.id]=r({x:e.labelX,y:e.labelY},t),e.subType&&(a[e.id]=r({x:e.subLabelX,y:e.subLabelY},t))}),this.points.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y;r.set(`x`,n(a)),r.set(`y`,n(o))}),this.items.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y;r.set(`x`,n(a)),r.set(`y`,n(o)),r.set(`rotateZ`,r.rotateZ+=e/Math.PI*180)}),this.areas.forEach(function(e){e.set(`labelX`,n(i[e.id].x)),e.set(`labelY`,n(i[e.id].y)),a[e.id]&&(e.set(`subLabelX`,n(a[e.id].x)),e.set(`subLabelY`,n(a[e.id].y)))}),this.texts.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y,s=Ok({x:r.offsetX,y:r.offsetY},{x:0,y:0},e),c=s.x,l=s.y;r.set(`x`,n(a)),r.set(`y`,n(o)),r.set(`offsetX`,n(c)),r.set(`offsetY`,n(l))}),this.check()}}},{key:`mirrorX`,value:function(){var e=kk(this.points);this.points.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2)}),this.lines.forEach(function(e){switch(e.align){case 1:e.set(`align`,2);break;case 2:e.set(`align`,1);break}}),this.items.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2),t.set(`rotateX`,!t.rotateX),t.set(`rotateZ`,-t.rotateZ)}),this.lineItems.forEach(function(e){e.set(`rotateX`,!e.rotateX)}),this.areas.forEach(function(e){e.set(`labelY`,-e.labelY)}),this.texts.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2),t.set(`offsetY`,-t.offsetY)}),this.check()}},{key:`mirrorY`,value:function(){var e=kk(this.points);this.points.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2)}),this.lines.forEach(function(e){switch(e.align){case 1:e.set(`align`,2);break;case 2:e.set(`align`,1);break}}),this.items.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2),t.set(`rotateY`,!t.rotateY),t.set(`rotateZ`,-t.rotateZ)}),this.lineItems.forEach(function(e){e.set(`rotateX`,!e.rotateX)}),this.areas.forEach(function(e){e.set(`labelX`,-e.labelX)}),this.texts.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2),t.set(`offsetX`,-t.offsetX)}),this.check()}},{key:`recommendRules`,value:function(){var e=kk(this.points),t=GE(this.points),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(!r.lines.some(function(e){return e.edgeComputed})){r.set(`rules`,`0000`);continue}var i=[0,0,0,0];r.x>e.x?i[1]=1:i[3]=1,r.y>e.y?i[0]=1:i[2]=1,r.set(`rules`,i.join(``))}}catch(e){t.e(e)}finally{t.f()}}},{key:`clean`,value:function(){var e=this;this.points.slice().forEach(function(t){return e.removePoint(t)}),this.items.length=0,this.check()}}])}(Jk);tj.displayName=tj.prototype.displayName=`Canvas`,ok(tj.prototype,JA,$A),tj.defaultFloorplan=function(){return JSON.parse(JSON.stringify({info:{height:0,subheight:0,description:``,tags:[],ruleType:1,itemSortRule:0},templates:{areaLabelName:`{{ customizedName || name }}{{ nameIndex }}`},points:[],lines:[],lineItems:[],items:[],areas:[]}))},tj.defaultMetaData={version:ej,doctorStrangeVersion:dD,structure:`101200000001`,floorplans:[],vrData:{origin:{left:37500,top:37500}},canvasSize:{width:75e3,height:75e3},property:{fontScale:1,sourceType:0}},tj.structures=[{text:`平层`,value:`101200000001`},{text:`跃层`,value:`101200000002`},{text:`复式`,value:`101200000003`},{text:`错层`,value:`101200000004`},{text:`Loft`,value:`101200000005`}],tj.tags=[{text:`阁楼`,value:`1`},{text:`斜角楼顶`,value:`2`},{text:`顶层露台`,value:`3`},{text:`地下室`,value:`4`}],tj.saveOptions={skipCalculation:!1};var nj=class{constructor(e,t,n,r){this.x=e,this.y=t,this.h=n,this.d=ij(e,t,r),this.max=this.d+this.h*Math.SQRT2}};function rj(e,t=1){let n=0,r=0,i=0,a=0;for(let t=0;t<e[0].length;t++){let o=e[0][t];(!t||o[0]<n)&&(n=o[0]),(!t||o[1]<r)&&(r=o[1]),(!t||o[0]>i)&&(i=o[0]),(!t||o[1]>a)&&(a=o[1])}let o=i-n,s=a-r,c=Math.min(o,s),l=c/2;if(c===0)return[n,r];let u=[];for(let t=n;t<i;t+=c)for(let n=r;n<a;n+=c)u.push(new nj(t+l,n+l,l,e));let d=aj(e),f=new nj(n+o/2,r+s/2,0,e);for(f.d>d.d&&(d=f);u.length;){u.sort((e,t)=>e.max-t.max);let n=u.pop();n.d>d.d&&(d=n),!(n.max-d.d<=t)&&(l=n.h/2,u.push(new nj(n.x-l,n.y-l,l,e)),u.push(new nj(n.x+l,n.y-l,l,e)),u.push(new nj(n.x-l,n.y+l,l,e)),u.push(new nj(n.x+l,n.y+l,l,e)))}return[d.x,d.y]}function ij(e,t,n){let r=!1,i=1/0;for(let a=0;a<n.length;a++){let o=n[a];for(let n=0,a=o.length,s=a-1;n<a;s=n++){let a=o[n],c=o[s];a[1]>t!=c[1]>t&&e<(c[0]-a[0])*(t-a[1])/(c[1]-a[1])+a[0]&&(r=!r),i=Math.min(i,oj(e,t,a,c))}}return(r?1:-1)*Math.sqrt(i)}function aj(e){let t=0,n=0,r=0,i=e[0];for(let e=0,a=i.length,o=a-1;e<a;o=e++){let a=i[e],s=i[o],c=a[0]*s[1]-s[0]*a[1];n+=(a[0]+s[0])*c,r+=(a[1]+s[1])*c,t+=c*3}return t===0?new nj(i[0][0],i[0][1],0,e):new nj(n/t,r/t,0,e)}function oj(e,t,n,r){let i=n[0],a=n[1],o=r[0]-i,s=r[1]-a;if(o!==0||s!==0){let n=((e-i)*o+(t-a)*s)/(o*o+s*s);n>1?(i=r[0],a=r[1]):n>0&&(i+=o*n,a+=s*n)}return o=e-i,s=t-a,o*o+s*s}var sj=500;function cj(e,t={}){let{observers:n=[],locate:r=`zh-CN`,outlines:i=[]}=t;if(!e||e.floorplans.length===0)return null;let a=e.floorplans.map(e=>{let t=new tj;return t.load(e),t}),o=pj(a,e.vrData),s=e=>mj(e,o);return{outlines:i,computed_data:{floor_datas:lj(a,e,n,o,r),bounding:o,entrance:hj(a,s),observers:gj(a,e.vrData,n,s)}}}function lj(e,t,n,r,i){return e.map((e,a)=>{let o=e.areas.map(t=>{let n=uj(e,t),a=dj(n),o={position:a,position_in_image:mj(a,r)};return{id:t.id,size:e.info.ruleType===1?t.size(!1):t.size(),name:t.labelName(i),customized_name:t.customizedName||void 0,path:n,room_type:t.roomType(),floor_type:t.floorType(),room_label:o,observer_indexs:[],dimension:fj(t,a)}}),s=e.areas,c=0;return n.filter(e=>e.floor_index===a).forEach(e=>{let n=_j(e,t.vrData),r=-1;for(let e=c;e<s.length&&r===-1;e++)s[e].isPointInArea(n)&&(r=e);for(let e=c;e>=0&&r===-1;e--)s[e].isPointInArea(n)&&(r=e);r!==-1&&(c=r,o[r].observer_indexs.push(e.index))}),{floor_name:t.floorplans[a].name,floor_index:a,is_has_wall:e.lines.length>0,rules:vj(e),rooms:o}})}function uj(e,t){let n=[],r=t.points[0];return t.points.concat(r).reduce((t,r)=>{n.push(t);let i=e.getLineByPoints(t,r);if(!i)return r;if(i.curve){let e=i.curveCenterPoint(),a=i.curveR(),o=Math.abs(a-FE(e,r)*i.length()/Math.abs(i.curve)/4),s=[i.curveCenterPoint.call({curve:o,points:[t,e]}),i.curveCenterPoint.call({curve:-o,points:[t,e]})].sort((e,t)=>FE(t,r)-FE(e,r))[0],c=[i.curveCenterPoint.call({curve:o,points:[e,r]}),i.curveCenterPoint.call({curve:-o,points:[e,r]})].sort((e,n)=>FE(n,t)-FE(e,t))[0];n.push(s,e,c)}if(!i.isEdge()||i.items.length===0)return r;let a=i.items.filter(e=>e.type===7||e.type===11);return a.length===0||a.forEach(e=>{let r=e.startPointAt(),i=e.endPointAt();FE(r,t)>FE(i,t)&&([r,i]=[i,r]);let[a,o]=bj(700,[r,i])[0];n.push(r,a,o,i)}),r},r),n.map(({x:e,y:t})=>({x:e,y:t}))}function dj(e){let[t,n]=rj([e.map(({x:e,y:t})=>[Math.trunc(e),Math.trunc(t)])],1);return{x:t,y:n}}function fj(e,t){let n=e.innerPath();if(n.length===0)return;let r=1/0,i=-1/0,a=1/0,o=-1/0;n.forEach(e=>{r=Math.min(r,e.x),i=Math.max(i,e.x),a=Math.min(a,e.y),o=Math.max(o,e.y)});let s=i-r,c=o-a,l=Math.round(t.x),u=Math.round(t.y);return{width:s,height:c,vertical:[{x:l,y:a},{x:l,y:o}],horizontal:[{x:r,y:u},{x:i,y:u}]}}function pj(e,t){let n=1e3,r={min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0},origin:{x:0,y:0}};function i({x:e,y:t}){r.min.x=Math.min(e,r.min.x),r.min.y=Math.min(t,r.min.y),r.max.x=Math.max(e,r.max.x),r.max.y=Math.max(t,r.max.y)}return e.forEach(e=>{e.points.forEach(e=>i(e)),e.lines.forEach(e=>{e.curve!==0&&i(e.curveCenterPoint())})}),r.min.x-=n,r.min.y-=n,r.max.x+=n,r.max.y+=n,r.origin.x=t.origin.left,r.origin.y=t.origin.top,r}function mj(e,t){let n=t.max.x-t.min.x,r=t.max.y-t.min.y;return{x:n===0?0:(e.x-t.min.x)/n,y:r===0?0:(t.max.y-e.y)/r}}function hj(e,t){let n=e.map(e=>e.lineItems).reduce((e,t)=>e.concat(t),[]).find(e=>e.entrance!==null);if(!n)return null;let r=n.canvas,i=r.areas.find(e=>n.line.points.every(t=>e.points.indexOf(t)>=0));if(!i)return null;let a=Sj([n.startPointAt(),n.endPointAt()]),o=n.towardsRadWithArea(i)+n.entrance/180*Math.PI;return{position_in_image:t(a),north_rad:o,room_id:i.id,floor_index:e.findIndex(e=>e===r)}}function gj(e,t,n,r){return n.filter(t=>e[t.floor_index]).map(e=>({floor_index:e.floor_index,position_in_image:r(_j(e,t))}))}function _j(e,t){return{x:e.position[0]*1e3+t.origin.left,y:-e.position[2]*1e3+t.origin.top}}function vj(e){let t=[],n=[],r=[],i=[];for(let a of e.lines){if(!a.edgeComputed||!a.points.length)continue;let o=e.areas.find(e=>a.points.every(t=>e.points.includes(t)));if(!o)continue;let s=a.edgePoints(!0),c=o.innerPath(!0,!1),[l,u]=s.filter(e=>c.some(t=>yj(t,e)));if(!l||!u)continue;let d={x:l.x|0,y:l.y|0},f={x:u.x|0,y:u.y|0},p=a.towardsRadWithArea(o),m=Math.cos(p),h=Math.sin(p);Math.abs(d.y-f.y)>sj&&(m<0?i.push([d,f].sort((e,t)=>e.y-t.y)):m>0&&n.push([d,f].sort((e,t)=>e.y-t.y))),Math.abs(d.x-f.x)>sj&&(h<0?r.push([d,f].sort((e,t)=>e.x-t.x)):h>0&&t.push([d,f].sort((e,t)=>e.x-t.x)))}return{top:t,right:n,bottom:r,left:i}}function yj(e,t){return e.x===t.x&&e.y===t.y}function bj(e,t){let n=xj(t[1],t[0]),r,i;Math.abs(n)===1/0?(i=0,r=e):(i=Math.sqrt(e*e/(n*n+1)),r=i/-(1/n));let a=[[{x:t[0].x-r,y:t[0].y-i},{x:t[1].x-r,y:t[1].y-i}],[{x:t[0].x+r,y:t[0].y+i},{x:t[1].x+r,y:t[1].y+i}]];return t[1].x-t[0].x<0?a:t[1].x-t[0].x>0||t[1].y-t[0].y<0?a.reverse():a}function xj(e,t){return(e.y-t.y)/(e.x-t.x)}function Sj(e){let t=Math.min(...e.map(e=>e.x)),n=Math.max(...e.map(e=>e.x)),r=Math.min(...e.map(e=>e.y)),i=Math.max(...e.map(e=>e.y));return{x:(t+n)/2,y:(r+i)/2}}var Cj=(e,t)=>new PE(e,t),wj=class{constructor(e,t,n,r,i){this.R=e,this.Q=t,this.A=n,this.B=r,this.C=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{let n=this.A*this.x+this.B*t,r=this.A*this.cov*this.A+this.R,i=r*this.C*(1/(this.C*r*this.C+this.Q));this.x=n+i*(e-this.C*n),this.cov=r-i*this.C*r}return this.x}},Tj=class extends o.Controller{updateState(e,t){let n=this.state;this.state=Object.assign(Object.assign({},this.state),e),this.hooks.emit(`stateChange`,{state:this.state,prevState:n,userAction:t})}constructor(e,t){var n,r,i;super(e),this.boundingAABB=null,this.cancelAnimation=null,this.boundsSet=!1,this.keyframes=[],this.five=e,this.state={enabled:!0,visible:!0},this.duration=(n=t==null?void 0:t.duration)==null?5e3:n,this.curveHeight=(r=t==null?void 0:t.curveHeight)==null?1.5:r,this.pointDuration=(i=t==null?void 0:t.pointDuration)==null?3e3:i}load(){return r(this,void 0,void 0,function*(){})}enable(e){var t;if(this.state.enabled)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!0},n)}disable(e){var t;if(this.state.enabled===!1)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!1},n)}dispose(){this.disable(),this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null);try{let e=this.findRenderMesh();e&&(e.material.aggregationEnabled=!1,e.material.aggregationProgress=1)}catch(e){}}extractKeyframes(e){let t=[];if(!e.content.data)throw Error(`轨迹数据未加载`);let n=e.content.data.positionArray,r=n.length/3,i=.01,a=.1,o=new wj(i,a,1,0,1),s=new wj(i,a,1,0,1),c=new wj(i,a,1,0,1),l=new Float32Array(r);for(let e=0;e<r;e++)if(e===0)l[e]=0;else{let t=new D(n[(e-1)*3],n[(e-1)*3+1],n[(e-1)*3+2]);l[e]=new D(n[e*3],n[e*3+1],n[e*3+2]).distanceTo(t)+l[e-1]}for(let i=0;i<r;i++){let a=new D(0,0,0),u=0;for(let e=i-5;e<i+6;e++)e>=0&&e<r&&(a.add(new D(n[e*3],n[e*3+1],n[e*3+2])),u++);a.divideScalar(u).applyMatrix4(e.transform);let d=o.filter(a.x),f=s.filter(a.y),p=c.filter(a.z);t.push({position:new D(d,f,p),location:l[i]})}return t}computeAABB2D(e){let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let a of e)a.position.x<t&&(t=a.position.x),a.position.x>n&&(n=a.position.x),a.position.z<r&&(r=a.position.z),a.position.z>i&&(i=a.position.z);return{min:new at(t,r),max:new at(n,i)}}findClosestKeyframeToRay(e,t){let n=1/0,r=t[0].position.clone(),i=new D;for(let a of t){e.closestPointToPoint(a.position,i);let t=i.distanceTo(a.position);t<n&&(n=t,r=a.position.clone())}return r}isInitAnimationEnabled(){return this.five.modelScene.parameter.resolveValue(`enableGaussianSplattingInitAnimation`)===!0}findRenderMesh(){let e=null;if(this.five.scene.traverse(t=>{if(e)return;let n=t,r=n.material;r&&r.isPBMGaussianSplattingMaterial&&(e=n)}),!e)throw Error(`未找到 GaussianSplatting 渲染网格`);return e}loadTrajectoryDataIfNeeded(e){return r(this,void 0,void 0,function*(){var n,r,i,a,o,s,c,l;if((n=e.content)!=null&&n.data)return;if(((r=e.content)==null?void 0:r.loadState)===`LOADING`){yield new Promise(n=>{let r=t.AnimationFrameLoop.shared.add(()=>{var t;let i=(t=e.content)==null?void 0:t.loadState;(i===`READY`||i===`FAILED`||i===`UNLOADED`)&&(r(),n())})});return}let u=(i=this.five.model.viewLayers)==null?void 0:i[0],d=u==null?void 0:u.fetcher,f=u==null?void 0:u.search,p=(a=e.content)==null?void 0:a.uri;if(!d||!p)return;let m=f?p.includes(`?`)?`${p}&${f.replace(/^\?/,``)}`:`${p}${f.startsWith(`?`)?f:`?${f}`}`:p;e.content.loadState=`LOADING`;try{let n=yield(0,t.loadPly)(m,{type:`geometry`,customPropertyMapping:{time:{itemType:`uint32`,itemNames:[`time_milisec`]}},fetcher:d}),r=n.scene,i=r.getAttribute(`position`),a=r.getAttribute(`time`),u=(o=i==null?void 0:i.array)==null?new Float32Array:o,f=(s=a==null?void 0:a.array)==null?new Uint32Array:s;e.content.data={uri:m,byteLength:(c=n.byteLength)==null?0:c,memoryUsage:(l=n.memoryUsage)==null?0:l,positionArray:u,timeArray:f,object:null},e.content.loadState=`READY`}catch(t){console.warn(`[GaussianSplattingEntranceAnimationPlugin] trajectory ply 加载失败,将使用 3DGS AABB 回退`,t),e.content.data=void 0,e.content.loadState=`FAILED`}})}computeGSSceneBounds(){let e=new Tn,t=new Tn;return this.five.scene.traverse(n=>{let r=n;(r==null?void 0:r.boundingBox)instanceof Tn&&!r.boundingBox.isEmpty()&&(t.copy(r.boundingBox),r.matrixWorld&&t.applyMatrix4(r.matrixWorld),e.union(t))}),e.isEmpty()?null:e}getCameraCurve(){return r(this,void 0,void 0,function*(){var e,t,n,r,i,a,o,s,c,l;let u=(r=(n=(t=(e=this.five.model.viewLayers)==null?void 0:e[0])==null?void 0:t.trajectories)==null?void 0:n[0])==null?(s=(o=(a=(i=this.five.model.viewLayers)==null?void 0:i[0])==null?void 0:a.scene)==null?void 0:o.trajectories)==null?void 0:s[0]:r,d=null,f=null;if(u&&(yield this.loadTrajectoryDataIfNeeded(u),(c=u.content)!=null&&c.data&&((l=u.content.data.positionArray)==null?void 0:l.length)>=6&&(d=this.extractKeyframes(u),d.length>=2?f=this.computeAABB2D(d):d=null)),!d||!f){let e=this.computeGSSceneBounds();if(!e)throw Error(`未找到可用于计算入场曲线的 3DGS 边界或轨迹`);f={min:new at(e.min.x,e.min.z),max:new at(e.max.x,e.max.z)};let t=(f.min.x+f.max.x)/2,n=(f.min.y+f.max.y)/2,r=(e.min.y+e.max.y)/2,i=Math.max(f.max.x-f.min.x,f.max.y-f.min.y)*.5;d=[];let a=0,o=null;for(let e=0;e<16;e++){let s=e/16*Math.PI*2,c=new D(t+Math.cos(s)*i,r,n+Math.sin(s)*i);o&&(a+=c.distanceTo(o)),d.push({position:c,location:a}),o=c}}this.keyframes=d,this.boundingAABB=f;let p=this.curveHeight,m=new D((f.min.x+f.max.x)/2,p,(f.min.y+f.max.y)/2),h=(f.max.x-f.min.x)/2,g=(f.max.y-f.min.y)/2,_=Math.sqrt(h*h+g*g),v=e=>{let t=new D().subVectors(e,m);return t.length()<.001&&t.set(1,0,0),m.clone().add(t.normalize().multiplyScalar(_))},y=new D(d[0].position.x,p,d[0].position.z),b=v(y),x=new D().subVectors(m,y).normalize(),S=new _r(y,x),C=new _r(m,new D(-x.z,0,x.x).normalize()),ee=this.findClosestKeyframeToRay(C,d),te=v(new D(ee.x,p,ee.z)),ne=this.findClosestKeyframeToRay(S,d);return new pi([b,te,v(new D(ne.x,p,ne.z))],!1,`centripetal`,.5)})}setBounding(e,t,n){let r=this.findRenderMesh();r.material.aggregationBoundsMin.copy(e),r.material.aggregationBoundsMax.copy(t),this.boundsSet=!0}setBounds(){if(!this.boundingAABB)throw Error(`请先调用 getCameraCurve 计算轨迹边界`);let e=this.boundingAABB,t=this.findRenderMesh(),n=new D(e.min.x,0,e.min.y),r=new D(e.max.x,3,e.max.y);t.material.aggregationBoundsMin.copy(n),t.material.aggregationBoundsMax.copy(r),this.boundsSet=!0}normalizedPointDuration(){let e=this.pointDuration;return e<=0?.01:Math.min(e<=1?e:e/this.duration,1)}resetToPointCloud(){return r(this,void 0,void 0,function*(){if(!this.isInitAnimationEnabled())return;this.boundingAABB||(yield this.getCameraCurve()),this.setBounds();let e=this.findRenderMesh().material;e.aggregationEnabled=!0,e.aggregationProgress=0,e.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0,this.five.modelSceneNeedsRender=!0})}startAggregation(){if(!this.isInitAnimationEnabled()){console.warn(`[GaussianSplattingEntranceAnimationPlugin] modelScene.enableGaussianSplattingInitAnimation 为 false,已跳过聚合动画`);return}if(!this.boundsSet)throw Error(`请先调用 setBounds 设置聚合边界`);let e=this.findRenderMesh().material;e.aggregationEnabled=!0,e.aggregationProgress=0,e.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0;let n=performance.now(),r=this.duration;this.cancelAnimation=t.AnimationFrameLoop.shared.add(()=>{let t=performance.now()-n,i=Math.min(t/r,1);e.aggregationProgress=i*i*(3-2*i),this.five.needsRender=!0,this.five.modelSceneNeedsRender=!0,i>=1&&(e.aggregationEnabled=!1,this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null))})}playEntrance(){return r(this,void 0,void 0,function*(){if(!this.isInitAnimationEnabled()){console.warn(`[GaussianSplattingEntranceAnimationPlugin] modelScene.enableGaussianSplattingInitAnimation 为 false,已跳过入场动画`);return}let e=yield this.getCameraCurve(),n=this.boundingAABB,r=new D((n.min.x+n.max.x)/2,this.curveHeight,(n.min.y+n.max.y)/2),i=e.getPointAt(0),a=new t.Camera(90).copy(this.five.camera);a.position.copy(i),a.lookAt(r),a.computePose(0),this.five.setState(Object.assign({},a.pose)),this.setBounds();let o=this.findRenderMesh().material;o.aggregationEnabled=!0,o.aggregationProgress=0,o.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0;let s=this.duration,c=performance.now();return new Promise(n=>{this.cancelAnimation=t.AnimationFrameLoop.shared.add(()=>{let t=performance.now()-c,i=Math.min(t/s,1),l=i*i*(3-2*i);o.aggregationProgress=l,this.five.modelSceneNeedsRender=!0;let u=e.getPointAt(l);a.position.copy(u),a.lookAt(r),a.computePose(0),this.five.setState(Object.assign({},a.pose)),this.five.needsRender=!0,i>=1&&(o.aggregationEnabled=!1,o.aggregationProgress=1,this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null),n())})})})}},Ej=(e,t)=>new Tj(e,t),Dj=class e{constructor(t){this._scene=new un,this._mesh=new Ar(e.geometry,t),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._scene,e.camera)}};Dj.camera=new Bi(-1,1,1,-1,0,1),Dj.geometry=(()=>{let e=new mi(2,2,1,1);for(let t=1;t<e.attributes.uv.array.length;t+=2)e.attributes.uv.array[t]=1-e.attributes.uv.array[t];return e})();var Oj=class{constructor(e){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=e==null?[]:e}setSize(e,t){}render(e,t,n,r,i){}dispose(){}};Oj.FullScreenQuad=Dj;function kj(){return((1+Math.random())*65536|0).toString(16).substring(1)}function Aj(){return(kj()+kj()+`-`+kj()+`-4`+kj().substr(0,3)+`-`+kj()+`-`+kj()+kj()+kj()).toLowerCase()}var jj=16767392,Mj=3,Nj=class extends Oj{constructor(e,t=ee){super(),this.uTime=0,this.words=[],this.lineMesh=null,this.lineMaterial=null,this.points=null,this.particleMaterial=null,this.particleGeometry=null,this.arrPosition=null,this.arrVelocity=null,this.arrAccel=null,this.arrColor=null,this.arrParams=null,this._tmpTip=new D,this.uTimeLine=Rw(0),this.uResolutionLine=Rw(new at(1,1)),this.uProjLine=Rw(new Ot),this.uViewLine=Rw(new Ot),this.uPixelRatioLine=Rw(1),this.uMaxDisplayBoost=Rw(1),this.uTimeParticle=Rw(0),this.uResolutionParticle=Rw(new at(1,1)),this.uProjParticle=Rw(new Ot),this.uViewParticle=Rw(new Ot),this.uBase=Lw(new wt),this.uEffect=Lw(new wt),this.camera=e,this.effectScene=new un,this.orthoCamera=new Bi(-1,1,1,-1,0,1),this.effectRenderTarget=new Et(Math.max(1,this.camera.resolution.x),Math.max(1,this.camera.resolution.y),{type:t,minFilter:x,magFilter:x,format:re}),this.blendMaterial=this.createBlendMaterial(),this.blendQuad=new Dj(this.blendMaterial)}setWords(e){return this.words=e.map(e=>{var t;return this._resolveWord(e,this.uTime+((t=e.startTime)==null?0:t)/1e3)}),this._rebuild(),this.words.map(e=>e.id)}addWord(...e){let t=e.map(e=>{var t;return this._resolveWord(e,this.uTime+((t=e.startTime)==null?0:t)/1e3)});return this.words.push(...t),this._rebuild(),t.map(e=>e.id)}hasWord(e){return this.words.some(t=>t.id===e)}removeWord(...e){let t=0;for(let n of e){let e=this.words.findIndex(e=>e.id===n);if(e===-1){console.warn(`WordPass: word "${n}" not found`);continue}this.words.splice(e,1),t++}return t>0&&this._rebuild(),t}setWord(e){var t;let{id:r}=e,i=n(e,[`id`]),a=this.words.findIndex(e=>e.id===r);if(a===-1){console.warn(`WordPass: word "${r}" not found`);return}let o=this.words[a],s=Object.assign(Object.assign(Object.assign({},o.source),i),{id:r}),c=i.startTime===void 0?o.wordStart:this.uTime+((t=i.startTime)==null?0:t)/1e3;this.words[a]=this._resolveWord(s,c),this._rebuild()}clearWords(){this.words=[],this._rebuild()}setMaxDisplayBoost(e){this.uMaxDisplayBoost.value=Math.max(e,1)}_resolveWord(e,t){let{color:n=new cn(jj),opacity:r=1,lineWidth:i=3,hdrIntensity:a=1,writeSpeed:o=4,minStrokeDuration:s=200,strokeGap:c=120,holdDuration:l=1500,fadeDuration:u=1200,loop:d=!0,restartPause:f=800,persist:p=!1,fireworks:m=!0,fireworksColor:h,particleCount:g=400,emissionRate:_=500,sparkSpeed:v=.6,particleSize:y=.012,particleLife:b=.8,gravity:x}=e,S=e.strokes.filter(e=>e.points.length>=2),C=[],ee=0,te=c/1e3;for(let e of S){let t=Math.max(e.totalLength/Math.max(o,1e-4),s/1e3);C.push({points:e.points,strokeLength:e.totalLength,writeStart:ee,writeDuration:t}),ee+=t+te}let ne=ee>0?ee-te:0,w=p?1e9:ne+l/1e3,re=p?1:u/1e3,ie=p?0:d?w+re+f/1e3:0;return{id:e.id||Aj(),source:Object.assign(Object.assign({},e),{id:e.id}),blocks:C,color:n.clone(),opacity:r,lineWidth:i,hdrIntensity:Math.max(a,1),wordStart:t,fadeStart:w,fadeDuration:re,cycleLength:ie,fireworks:m,sparkColor:h?h.clone():n.clone().lerp(new cn(16777215),.4),emissionRate:_,sparkSpeed:v,particleSize:y,particleLife:b,gravity:x?x.clone():new D(0,-.6,0),particleCount:m?Math.max(1,Math.floor(g)):0,particleOffset:0,particleCursor:0,emitAccum:C.map(()=>0)}}_rebuild(){this._buildLineMesh(),this._buildParticles()}createLineMaterial(){let e=Vw(`vec4`,`wpColor`),t=Vw(`float`,`wpSegLen`),n=Vw(`float`,`wpAccum`),r=Vw(`float`,`wpStrokeLen`),i=Vw(`float`,`wpDrawnLen`),a=Vw(`float`,`wpFade`),o=Vw(`vec2`,`wpStart`),s=Vw(`vec2`,`wpEnd`),c=Vw(`float`,`wpLineWidth`),l=Vw(`float`,`wpHdrBoost`),u=Vw(`vec2`,`wpNdc`),d=.001,f=(e,t)=>Sw(e,t),p=bw(()=>{let p=f(`instanceStart`,`vec3`),m=f(`instanceEnd`,`vec3`),h=f(`instanceColor`,`vec4`),g=f(`instanceData`,`vec4`),_=f(`instanceReveal`,`vec2`),v=f(`instanceTime`,`vec4`),y=Mw,b=g.x,x=g.y.mul(this.uPixelRatioLine),S=g.z,C=_.x,ee=_.y,te=v.x,ne=v.y,w=v.z,re=v.w;e.assign(h);let ie=Dw(m.sub(p));t.assign(ie),n.assign(b),r.assign(S),c.assign(x);let ae=this.uTimeLine.sub(te),oe=Pw(re.greaterThan(0),jw(kw(ae,0),re),ae),se=Cw(oe.sub(C).div(kw(ee,1e-4)),0,1).mul(S).toVar(),ce=Ew(1).toVar();xw(oe.greaterThanEqual(ne),()=>{ce.assign(Ew(1).sub(Cw(oe.sub(ne).div(kw(w,1e-4)),0,1)))}),xw(ae.lessThan(0),()=>{ce.assign(0),se.assign(0)}),a.assign(ce),i.assign(se);let le=g.w,ue=kw(Ow(kw(le,1.0001)),1e-4),de=Cw(Ow(kw(this.uMaxDisplayBoost,1)).div(ue),0,1);l.assign(Aw(1,le,de));let fe=this.uProjLine.mul(this.uViewLine).mul(Ww(p,1)).toVar(),pe=this.uProjLine.mul(this.uViewLine).mul(Ww(m,1)).toVar(),me=Ew(0).toVar(),he=fe.w.lessThan(d).toVar(),ge=pe.w.lessThan(d).toVar();xw(he.and(ge),()=>{me.assign(1)}),xw(he,()=>{let e=Ew(d).sub(fe.w).div(pe.w.sub(fe.w));fe.assign(Aw(fe,pe,e))}),xw(ge,()=>{let e=Ew(d).sub(pe.w).div(fe.w.sub(pe.w));pe.assign(Aw(pe,fe,e))});let _e=fe.xy.div(fe.w),ve=pe.xy.div(pe.w);o.assign(_e),s.assign(ve);let ye=_e.add(1).mul(.5).mul(this.uResolutionLine),be=ve.add(1).mul(.5).mul(this.uResolutionLine),xe=be.sub(ye),Se=Dw(xe),Ce=Pw(Se.greaterThan(1e-5),xe.div(kw(Se,1e-5)),Hw(1,0)),we=Hw(Ce.y.negate(),Ce.x),Te=y.y.add(.5),Ee=kw(x.mul(.5),.5).add(Mj),De=ye.sub(Ce.mul(Ee)),Oe=be.add(Ce.mul(Ee)),ke=we.mul(y.x).mul(2).mul(Ee),T=Aw(De,Oe,Te).add(ke).div(this.uResolutionLine).mul(2).sub(1);u.assign(T);let E=Aw(fe,pe,Te),Ae=kw(E.w,d);return Aw(Ww(T.mul(Ae),E.z,Ae),Ww(0,0,-2,1),me)}),m=bw(([e,t,n])=>{let r=e.sub(t),i=n.sub(t),a=Cw(ww(r,i).div(ww(i,i)),0,1);return Dw(r.sub(i.mul(a)))}),h=bw(()=>{let d=u,f=s.sub(o),p=kw(Dw(f),1e-6),h=f.div(p),g=Cw(ww(d.sub(o),h),0,p).div(p),_=n.add(g.mul(t)),v=i.lessThanEqual(1e-4).or(_.greaterThan(i)),y=Hw(this.uResolutionLine.x.div(this.uResolutionLine.y),1),b=m(d.mul(y),o.mul(y),s.mul(y)).mul(this.uResolutionLine.y).mul(.5),x=kw(c.mul(.5),.5),S=Ew(1).sub(Iw(x.sub(1),x.add(1),b)),C=x.add(Mj),ee=Cw(kw(b.sub(x),0).div(kw(C.sub(x),1e-4)),0,1),te=Nw(Ew(1).sub(ee),4).mul(.9),ne=Cw(S.add(te.mul(Ew(1).sub(S))),0,1),w=Tw(kw(i.sub(_),0).mul(-5).div(kw(r,1e-4))),re=Ew(1).sub(Iw(r.mul(.98),r,i)),ie=Ew(1).add(w.mul(.6).mul(re)),ae=ne.mul(e.a).mul(a),oe=Pw(v.not().and(ae.greaterThanEqual(.004)),ae,0);return Ww(e.rgb.mul(ie).mul(l).mul(oe),oe)}),g=new Gh;return g.vertexNode=p(),g.fragmentNode=h(),g.transparent=!0,g.depthTest=!1,g.depthWrite=!1,g.side=2,g.blending=5,g.blendEquation=104,g.blendSrc=201,g.blendDst=201,g}_buildLineMesh(){this._disposeLineMesh();let e=0;for(let t of this.words)for(let n of t.blocks)e+=n.points.length-1;if(e===0)return;let t=new mi(1,1,1,1),n=new Vi;n.index=t.index,n.attributes=t.attributes,n.instanceCount=e;let r=new Float32Array(e*3),i=new Float32Array(e*3),a=new Float32Array(e*4),o=new Float32Array(e*4),s=new Float32Array(e*2),c=new Float32Array(e*4),l=0;for(let e of this.words)for(let t of e.blocks){let n=0;for(let u=0;u<t.points.length-1;u++){let d=t.points[u],f=t.points[u+1],p=d.distanceTo(f),m=l*2,h=l*3,g=l*4;r[h+0]=d.x,r[h+1]=d.y,r[h+2]=d.z,i[h+0]=f.x,i[h+1]=f.y,i[h+2]=f.z,a[g+0]=e.color.r,a[g+1]=e.color.g,a[g+2]=e.color.b,a[g+3]=e.opacity,o[g+0]=n,o[g+1]=e.lineWidth,o[g+2]=t.strokeLength,o[g+3]=e.hdrIntensity,s[m+0]=t.writeStart,s[m+1]=t.writeDuration,c[g+0]=e.wordStart,c[g+1]=e.fadeStart,c[g+2]=e.fadeDuration,c[g+3]=e.cycleLength,n+=p,l++}}n.setAttribute(`instanceStart`,new Pr(r,3)),n.setAttribute(`instanceEnd`,new Pr(i,3)),n.setAttribute(`instanceColor`,new Pr(a,4)),n.setAttribute(`instanceData`,new Pr(o,4)),n.setAttribute(`instanceReveal`,new Pr(s,2)),n.setAttribute(`instanceTime`,new Pr(c,4)),this.lineMaterial=this.createLineMaterial(),this.lineMesh=new Ar(n,this.lineMaterial),this.lineMesh.frustumCulled=!1,this.effectScene.add(this.lineMesh)}createParticleMaterial(){let e=Vw(`vec4`,`wpSparkColor`),t=Vw(`float`,`wpSparkAlpha`),n=Vw(`vec2`,`wpSparkLocal`),r=.001,i=(e,t)=>Sw(e,t),a=bw(()=>{let a=i(`aPosition`,`vec3`),o=i(`aVelocity`,`vec3`),s=i(`aAccel`,`vec3`),c=i(`aColor`,`vec4`),l=i(`aParams`,`vec4`),u=l.x,d=l.y,f=l.z,p=l.w,m=Mw.xy;e.assign(c),n.assign(m);let h=this.uTimeParticle.sub(u),g=Ew(0).toVar();xw(d.lessThanEqual(0).or(h.lessThan(0)).or(h.greaterThan(d)),()=>{g.assign(1)});let _=h.div(kw(d,r)),v=a.add(o.mul(h)).add(s.mul(.5).mul(h).mul(h)),y=this.uProjParticle.mul(this.uViewParticle).mul(Ww(v,1)).toVar();xw(y.w.lessThanEqual(r),()=>{g.assign(1)});let b=kw(y.w,r),x=y.xy.div(b),S=this.uProjParticle.element(1).y,C=Ew(1).sub(_.mul(.7)),ee=kw(p.mul(S).mul(.5).mul(this.uResolutionParticle.y).div(b).mul(C),0),te=x.add(1).mul(.5).mul(this.uResolutionParticle).add(m.mul(ee)).div(this.uResolutionParticle).mul(2).sub(1),ne=Ew(.7).add(Ew(.3).mul(Fw(this.uTimeParticle.mul(30).add(f.mul(6.2831)))));return t.assign(Nw(Ew(1).sub(_),.8).mul(ne)),Aw(Ww(te.mul(b),y.z,b),Ww(0,0,-2,1),g)}),o=bw(()=>{let r=Iw(.5,0,Dw(n)),i=r.mul(r).mul(t).mul(e.a);return Ww(e.rgb,i)}),s=new Gh;return s.vertexNode=a(),s.fragmentNode=o(),s.transparent=!0,s.depthTest=!1,s.depthWrite=!1,s.blending=2,s}createBlendMaterial(){let e=new Gh,t=this.uBase.sample(zw()),n=this.uEffect.sample(zw());return e.fragmentNode=Ww(t.rgb.add(n.rgb),t.a),e.transparent=!1,e.depthTest=!1,e.depthWrite=!1,e}_buildParticles(){this._disposeParticles();let e=0;for(let t of this.words)t.particleOffset=e,t.particleCursor=0,e+=t.particleCount;if(e===0)return;this.arrPosition=new Float32Array(e*3),this.arrVelocity=new Float32Array(e*3),this.arrAccel=new Float32Array(e*3),this.arrColor=new Float32Array(e*4),this.arrParams=new Float32Array(e*4);let t=new mi(1,1,1,1),n=new Vi;n.index=t.index,n.attributes=t.attributes,n.instanceCount=e,n.setAttribute(`aPosition`,new Pr(this.arrPosition,3)),n.setAttribute(`aVelocity`,new Pr(this.arrVelocity,3)),n.setAttribute(`aAccel`,new Pr(this.arrAccel,3)),n.setAttribute(`aColor`,new Pr(this.arrColor,4)),n.setAttribute(`aParams`,new Pr(this.arrParams,4)),this.particleGeometry=n,this.particleMaterial=this.createParticleMaterial(),this.points=new Ar(n,this.particleMaterial),this.points.frustumCulled=!1,this.effectScene.add(this.points)}_samplePointAtLength(e,t,n){if(e.length===1||t<=0){n.copy(e[0]);return}let r=0;for(let i=0;i<e.length-1;i++){let a=e[i],o=e[i+1],s=a.distanceTo(o);if(!(s<=1e-9)){if(r+s>=t){n.lerpVectors(a,o,(t-r)/s);return}r+=s}}n.copy(e[e.length-1])}_emitParticle(e,t){if(!this.arrPosition)return;let n=e.particleOffset+e.particleCursor;e.particleCursor=(e.particleCursor+1)%e.particleCount;let r=n*3,i=n*4,a=Math.random()*Math.PI*2,o=Math.random(),s=Math.cos(a)*o,c=Math.sin(a)*o,l=.3+Math.random()*.7,u=e.sparkSpeed*(.4+Math.random()*.8);this.arrPosition[r+0]=t.x,this.arrPosition[r+1]=t.y,this.arrPosition[r+2]=t.z,this.arrVelocity[r+0]=s*u,this.arrVelocity[r+1]=l*u,this.arrVelocity[r+2]=c*u,this.arrAccel[r+0]=e.gravity.x,this.arrAccel[r+1]=e.gravity.y,this.arrAccel[r+2]=e.gravity.z;let d=.8+Math.random()*.5;this.arrColor[i+0]=e.sparkColor.r*d,this.arrColor[i+1]=e.sparkColor.g*d,this.arrColor[i+2]=e.sparkColor.b*d,this.arrColor[i+3]=1,this.arrParams[i+0]=this.uTime,this.arrParams[i+1]=e.particleLife*(.6+Math.random()*.8),this.arrParams[i+2]=Math.random(),this.arrParams[i+3]=e.particleSize*(.6+Math.random()*.9)}_emit(e){if(!this.particleGeometry)return;let t=!1;for(let n of this.words){if(!n.fireworks||n.particleCount===0)continue;let r=this.uTime-n.wordStart;if(r<0)continue;let i=n.cycleLength>0?r%n.cycleLength:r;for(let r=0;r<n.blocks.length;r++){let a=n.blocks[r],o=i-a.writeStart;if(o<0||o>a.writeDuration)continue;let s=o/a.writeDuration;this._samplePointAtLength(a.points,s*a.strokeLength,this._tmpTip),n.emitAccum[r]+=n.emissionRate*e;let c=Math.floor(n.emitAccum[r]);n.emitAccum[r]-=c,c=Math.min(c,n.particleCount);for(let e=0;e<c;e++)this._emitParticle(n,this._tmpTip),t=!0}}if(t){let e=this.particleGeometry;e.getAttribute(`aPosition`).needsUpdate=!0,e.getAttribute(`aVelocity`).needsUpdate=!0,e.getAttribute(`aAccel`).needsUpdate=!0,e.getAttribute(`aColor`).needsUpdate=!0,e.getAttribute(`aParams`).needsUpdate=!0}}render(e,t,n,r,i){let a=!!(this.lineMesh||this.points);a&&(this.uTime+=r==null?0:r,this._emit(r==null?0:r));let o=n.width,s=n.height;(this.effectRenderTarget.width!==o||this.effectRenderTarget.height!==s)&&this.effectRenderTarget.setSize(o,s);let c=e.getRenderTarget();if(e.setRenderTarget(this.effectRenderTarget),e.setClearColor(0,0),e.clear(),a){let t=this.camera.projectionMatrix,n=this.camera.matrixWorldInverse;this.lineMaterial&&(this.uTimeLine.value=this.uTime,this.uResolutionLine.value.set(o,s),this.uProjLine.value=t,this.uViewLine.value=n,this.uPixelRatioLine.value=this.camera.pixelRatio),this.particleMaterial&&(this.uTimeParticle.value=this.uTime,this.uResolutionParticle.value.set(o,s),this.uProjParticle.value=t,this.uViewParticle.value=n),e.render(this.effectScene,this.orthoCamera)}e.setRenderTarget(c),this.uBase.value=n.texture,this.uEffect.value=this.effectRenderTarget.texture,e.setRenderTarget(this.renderToScreen?null:t),this.blendQuad.render(e)}_disposeLineMesh(){this.lineMesh&&(this.effectScene.remove(this.lineMesh),this.lineMesh.geometry.dispose(),this.lineMesh=null),this.lineMaterial&&(this.lineMaterial.dispose(),this.lineMaterial=null)}_disposeParticles(){this.points&&(this.effectScene.remove(this.points),this.points=null),this.particleGeometry&&(this.particleGeometry.dispose(),this.particleGeometry=null),this.particleMaterial&&(this.particleMaterial.dispose(),this.particleMaterial=null),this.arrPosition=null,this.arrVelocity=null,this.arrAccel=null,this.arrColor=null,this.arrParams=null}dispose(){this._disposeLineMesh(),this._disposeParticles(),this.effectRenderTarget.dispose(),this.blendMaterial.dispose(),this.blendQuad.dispose()}},Pj={name:`Sans 1-stroke`,chars:[{d:`M5,1 L5,15 M5,20 L4,21 5,22 6,21 5,20`,o:5},{d:`M4,1 L4,8 M12,1 L12,8`,o:8},{d:`M11,-3 L4,29 M17,-3 L10,29 M4,10 L18,10 M3,16 L17,16`,o:11},{d:`M8,-3 L8,26 M12,-3 L12,26 M17,4 L15,2 12,1 8,1 5,2 3,4 3,6 4,8 5,9 7,10 13,12 15,13 16,14 17,16 17,19 15,21 12,22 8,22 5,21 3,19`,o:10},{d:`M21,1 L3,22 M8,1 L10,3 10,5 9,7 7,8 5,8 3,6 3,4 4,2 6,1 8,1 10,2 13,3 16,3 19,2 21,1 M17,15 L15,16 14,18 14,20 16,22 18,22 20,21 21,19 21,17 19,15 17,15`,o:12},{d:`M23,10 L23,9 22,8 21,8 20,9 19,11 17,16 15,19 13,21 11,22 7,22 5,21 4,20 3,18 3,16 4,14 5,13 12,9 13,8 14,6 14,4 13,2 11,1 9,2 8,4 8,6 9,9 11,12 16,19 18,21 20,22 22,22 23,21 23,20`,o:13},{d:`M5,3 L4,2 5,1 6,2 6,4 5,6 4,7`,o:5},{d:`M11,-3 L9,-1 7,2 5,6 4,11 4,15 5,20 7,24 9,27 11,29`,o:7},{d:`M3,-3 L5,-1 7,2 9,6 10,11 10,15 9,20 7,24 5,27 3,29`,o:7},{d:`M8,7 L8,19 M3,10 L13,16 M13,10 L3,16`,o:8},{d:`M13,4 L13,22 M4,13 L22,13`,o:13},{d:`M5,18 L4,19 3,18 4,17 5,18 5,20 3,22`,o:4},{d:`M4,13 L22,13`,o:13},{d:`M4,17 L3,18 4,19 5,18 4,17`,o:4},{d:`M20,-3 L2,29`,o:11},{d:`M9,1 L6,2 4,5 3,10 3,13 4,18 6,21 9,22 11,22 14,21 16,18 17,13 17,10 16,5 14,2 11,1 9,1`,o:10},{d:`M6,5 L8,4 11,1 11,22`,o:10},{d:`M4,6 L4,5 5,3 6,2 8,1 12,1 14,2 15,3 16,5 16,7 15,9 13,12 3,22 17,22`,o:10},{d:`M5,1 L16,1 10,9 13,9 15,10 16,11 17,14 17,16 16,19 14,21 11,22 8,22 5,21 4,20 3,18`,o:10},{d:`M13,1 L3,15 18,15 M13,1 L13,22`,o:10},{d:`M15,1 L5,1 4,10 5,9 8,8 11,8 14,9 16,11 17,14 17,16 16,19 14,21 11,22 8,22 5,21 4,20 3,18`,o:10},{d:`M16,4 L15,2 12,1 10,1 7,2 5,5 4,10 4,15 5,19 7,21 10,22 11,22 14,21 16,19 17,16 17,15 16,12 14,10 11,9 10,9 7,10 5,12 4,15`,o:10},{d:`M17,1 L7,22 M3,1 L17,1`,o:10},{d:`M8,1 L5,2 4,4 4,6 5,8 7,9 11,10 14,11 16,13 17,15 17,18 16,20 15,21 12,22 8,22 5,21 4,20 3,18 3,15 4,13 6,11 9,10 13,9 15,8 16,6 16,4 15,2 12,1 8,1`,o:10},{d:`M16,8 L15,11 13,13 10,14 9,14 6,13 4,11 3,8 3,7 4,4 6,2 9,1 10,1 13,2 15,4 16,8 16,13 15,18 13,21 10,22 8,22 5,21 4,19`,o:10},{d:`M4,10 L3,11 4,12 5,11 4,10 M4,17 L3,18 4,19 5,18 4,17`,o:4},{d:`M4,10 L3,11 4,12 5,11 4,10 M5,18 L4,19 3,18 4,17 5,18 5,20 3,22`,o:4},{d:`M20,4 L4,13 20,22`,o:12},{d:`M4,10 L22,10 M4,16 L22,16`,o:13},{d:`M4,4 L20,13 4,22`,o:12},{d:`M3,6 L3,5 4,3 5,2 7,1 11,1 13,2 14,3 15,5 15,7 14,9 13,10 9,12 9,15 M9,20 L8,21 9,22 10,21 9,20`,o:9},{d:`M18,9 L17,7 15,6 12,6 10,7 9,8 8,11 8,14 9,16 11,17 14,17 16,16 17,14 M12,6 L10,8 9,11 9,14 10,16 11,17 M18,6 L17,14 17,16 19,17 21,17 23,15 24,12 24,10 23,7 22,5 20,3 18,2 15,1 12,1 9,2 7,3 5,5 4,7 3,10 3,13 4,16 5,18 7,20 9,21 12,22 15,22 18,21 20,20 21,19 M19,6 L18,14 18,16 19,17`,o:14},{d:`M9,1 L1,22 M9,1 L17,22 M4,15 L14,15`,o:9},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,7 17,9 16,10 13,11 M4,11 L13,11 16,12 17,13 18,15 18,18 17,20 16,21 13,22 4,22`,o:10},{d:`M18,6 L17,4 15,2 13,1 9,1 7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17`,o:11},{d:`M4,1 L4,22 M4,1 L11,1 14,2 16,4 17,6 18,9 18,14 17,17 16,19 14,21 11,22 4,22`,o:10},{d:`M4,1 L4,22 M4,1 L17,1 M4,11 L12,11 M4,22 L17,22`,o:9},{d:`M4,1 L4,22 M4,1 L17,1 M4,11 L12,11`,o:8},{d:`M18,6 L17,4 15,2 13,1 9,1 7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 18,14 M13,14 L18,14`,o:11},{d:`M4,1 L4,22 M18,1 L18,22 M4,11 L18,11`,o:11},{d:`M4,1 L4,22`,o:4},{d:`M12,1 L12,17 11,20 10,21 8,22 6,22 4,21 3,20 2,17 2,15`,o:8},{d:`M4,1 L4,22 M18,1 L4,15 M9,10 L18,22`,o:10},{d:`M4,1 L4,22 M4,22 L16,22`,o:7},{d:`M4,1 L4,22 M4,1 L12,22 M20,1 L12,22 M20,1 L20,22`,o:12},{d:`M4,1 L4,22 M4,1 L18,22 M18,1 L18,22`,o:11},{d:`M9,1 L7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 19,14 19,9 18,6 17,4 15,2 13,1 9,1`,o:11},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,8 17,10 16,11 13,12 4,12`,o:10},{d:`M9,1 L7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 19,14 19,9 18,6 17,4 15,2 13,1 9,1 M12,18 L18,24`,o:11},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,7 17,9 16,10 13,11 4,11 M11,11 L18,22`,o:10},{d:`M17,4 L15,2 12,1 8,1 5,2 3,4 3,6 4,8 5,9 7,10 13,12 15,13 16,14 17,16 17,19 15,21 12,22 8,22 5,21 3,19`,o:10},{d:`M8,1 L8,22 M1,1 L15,1`,o:8},{d:`M4,1 L4,16 5,19 7,21 10,22 12,22 15,21 17,19 18,16 18,1`,o:11},{d:`M1,1 L9,22 M17,1 L9,22`,o:9},{d:`M2,1 L7,22 M12,1 L7,22 M12,1 L17,22 M22,1 L17,22`,o:12},{d:`M3,1 L17,22 M17,1 L3,22`,o:10},{d:`M1,1 L9,11 9,22 M17,1 L9,11`,o:9},{d:`M17,1 L3,22 M3,1 L17,1 M3,22 L17,22`,o:10},{d:`M4,-3 L4,29 M5,-3 L5,29 M4,-3 L11,-3 M4,29 L11,29`,o:7},{d:`M0,1 L14,25`,o:7},{d:`M9,-3 L9,29 M10,-3 L10,29 M3,-3 L10,-3 M3,29 L10,29`,o:7},{d:`M8,-1 L0,13 M8,-1 L16,13`,o:8},{d:`M0,29 L18,29`,o:9},{d:`M5,6 L3,8 3,10 4,11 5,10 4,9 3,10`,o:4},{d:`M15,8 L15,22 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,1 L4,22 M4,11 L6,9 8,8 11,8 13,9 15,11 16,14 16,16 15,19 13,21 11,22 8,22 6,21 4,19`,o:9},{d:`M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:9},{d:`M15,1 L15,22 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M3,14 L15,14 15,12 14,10 13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:9},{d:`M10,1 L8,1 6,2 5,5 5,22 M2,8 L9,8`,o:7},{d:`M15,8 L15,24 14,27 13,28 11,29 8,29 6,28 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,1 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22`,o:10},{d:`M3,1 L4,2 5,1 4,0 3,1 M4,8 L4,22`,o:4},{d:`M5,1 L6,2 7,1 6,0 5,1 M6,8 L6,25 5,28 3,29 1,29`,o:5},{d:`M4,1 L4,22 M14,8 L4,18 M8,14 L15,22`,o:8},{d:`M4,1 L4,22`,o:4},{d:`M4,8 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22 M15,12 L18,9 20,8 23,8 25,9 26,12 26,22`,o:15},{d:`M4,8 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22`,o:10},{d:`M8,8 L6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19 16,16 16,14 15,11 13,9 11,8 8,8`,o:10},{d:`M4,8 L4,29 M4,11 L6,9 8,8 11,8 13,9 15,11 16,14 16,16 15,19 13,21 11,22 8,22 6,21 4,19`,o:9},{d:`M15,8 L15,29 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,8 L4,22 M4,14 L5,11 7,9 9,8 12,8`,o:6},{d:`M14,11 L13,9 10,8 7,8 4,9 3,11 4,13 6,14 11,15 13,16 14,18 14,19 13,21 10,22 7,22 4,21 3,19`,o:9},{d:`M5,1 L5,18 6,21 8,22 10,22 M2,8 L9,8`,o:7},{d:`M4,8 L4,18 5,21 7,22 10,22 12,21 15,18 M15,8 L15,22`,o:10},{d:`M2,8 L8,22 M14,8 L8,22`,o:8},{d:`M3,8 L7,22 M11,8 L7,22 M11,8 L15,22 M19,8 L15,22`,o:11},{d:`M3,8 L14,22 M14,8 L3,22`,o:9},{d:`M2,8 L8,22 M14,8 L8,22 6,26 4,28 2,29 1,29`,o:8},{d:`M14,8 L3,22 M3,8 L14,8 M3,22 L14,22`,o:9},{d:`M9,-3 L7,-2 6,-1 5,1 5,3 6,5 7,6 8,8 8,10 6,12 M7,-2 L6,0 6,2 7,4 8,5 9,7 9,9 8,11 4,13 8,15 9,17 9,19 8,21 7,22 6,24 6,26 7,28 M6,14 L8,16 8,18 7,20 6,21 5,23 5,25 6,27 7,28 9,29`,o:7},{d:`M4,-3 L4,29`,o:4},{d:`M5,-3 L7,-2 8,-1 9,1 9,3 8,5 7,6 6,8 6,10 8,12 M7,-2 L8,0 8,2 7,4 6,5 5,7 5,9 6,11 10,13 6,15 5,17 5,19 6,21 7,22 8,24 8,26 7,28 M8,14 L6,16 6,18 7,20 8,21 9,23 9,25 8,27 7,28 5,29`,o:7},{d:`M3,16 L3,14 4,11 6,10 8,10 10,11 14,14 16,15 18,15 20,14 21,12 M3,14 L4,12 6,11 8,11 10,12 14,15 16,16 18,16 20,15 21,12 21,10`,o:12},{d:`M0,1 L0,22 1,22 1,1 2,1 2,22 3,22 3,1 4,1 4,22 5,22 5,1 6,1 6,22 7,22 7,1 8,1 8,22 9,22 9,1 10,1 10,22 11,22 11,1 12,1 12,22 13,22 13,1 14,1 14,22 15,22 15,1 16,1 16,22`,o:8}]},Fj=null;function Ij(e){let t=[],n=null;for(let r of e.trim().split(/\s+/)){let e=r,i=``;(e[0]===`M`||e[0]===`L`)&&(i=e[0],e=e.slice(1));let a=e.indexOf(`,`);if(a<0)continue;let o=parseFloat(e.slice(0,a)),s=parseFloat(e.slice(a+1));Number.isNaN(o)||Number.isNaN(s)||(i===`M`?(n=[[o,s]],t.push(n)):n?n.push([o,s]):(n=[[o,s]],t.push(n)))}return t}function Lj(e=Pj){if(Fj&&e===Pj)return Fj;if(!e||!Array.isArray(e.chars))return null;let t=e.chars.map(e=>({polylines:Ij(e.d||``),o:e.o})),n=1/0,r=-1/0,i=e=>{let i=t[e-33];if(!i)return!1;let a=!1;for(let e of i.polylines)for(let t of e)t[1]<n&&(n=t[1]),t[1]>r&&(r=t[1]),a=!0;return a};i(72)||i(69)||i(88)||i(73),(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)&&(n=4,r=21);let a=r-n,o=a*.14,s=new Map;for(let e=0;e<t.length;e++){let n=t[e],i=1/0,c=-1/0;for(let e of n.polylines)for(let t of e)t[0]<i&&(i=t[0]),t[0]>c&&(c=t[0]);let l=Number.isFinite(i),u=l?i:0,d=l?c-i:n.o,f=n.polylines.map(e=>e.map(([e,t])=>[(e-u)/a,(r-t)/a]));s.set(33+e,{polylines:f,advance:(d+o)/a})}return e===Pj&&(Fj=s),s}var Rj=1024,zj=`https://cdn.jsdelivr.net/npm/hanzi-writer-data@latest`;function Bj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}var Vj=new Map;function Hj(e,t,n){return r(this,void 0,void 0,function*(){var r;if(Vj.has(e))return Vj.get(e);let i=null;try{if(t)i=(r=yield t(e))==null?null:r;else if(typeof fetch<`u`){let t=yield fetch(`${n}/${encodeURIComponent(e)}.json`);t.ok&&(i=yield t.json())}}catch(e){i=null}return Vj.set(e,i),i})}function Uj(e){return r(this,arguments,void 0,function*(e,t={}){var n;let{size:r=1,letterSpacing:i=0,lineSpacing:a=1.4,normal:o,up:s,center:c=!0,position:l,smooth:u=!0,smoothSubdivisions:d=4,cdnBaseUrl:f=zj,charDataLoader:p,latinScale:m=.72}=t,h=Lj(),g=[],_=0,v=0;for(let t of Array.from(e)){if(t===`
1152
- `){_=0,v-=a;continue}if(t===` `){_+=.4+i;continue}let e=(n=t.codePointAt(0))==null?0:n;if(e>=33&&e<=126){let n=h==null?void 0:h.get(e);if(n){for(let e of n.polylines)e.length<2||g.push({pts:e.map(([e,t])=>new at(_+e*m,v+t*m)),mode:`corner`});_+=n.advance*m+i;continue}console.warn(`textToStrokeOrderStrokes: 无法生成字符 "${t}"(非浏览器环境或字形为空),按空格处理`),_+=.5*m+i;continue}let r=yield Hj(t,p,f);if(r&&r.medians&&r.medians.length){for(let e of r.medians)e.length<2||g.push({pts:e.map(([e,t])=>new at(_+e/Rj,v+t/Rj)),mode:`full`});_+=1+i}else console.warn(`textToStrokeOrderStrokes: 未找到 "${t}" 的笔画数据,按空格处理`),_+=1+i}if(g.length===0)return[];let y=1/0,b=1/0,x=-1/0,S=-1/0;for(let e of g)for(let t of e.pts)t.x<y&&(y=t.x),t.x>x&&(x=t.x),t.y<b&&(b=t.y),t.y>S&&(S=t.y);let C=c?(y+x)/2:0,ee=c?(b+S)/2:0,te=l==null?new D:l,ne=(o==null?new D(0,0,1):o).clone();ne.lengthSq()<1e-9&&ne.set(0,0,1),ne.normalize();let w;if(s){let e=s.clone().addScaledVector(ne,-s.dot(ne));e.lengthSq()>1e-9&&(w=e.normalize())}let re;if(w)re=new D().crossVectors(w,ne).normalize();else{let e=Math.abs(ne.y)>.99?new D(0,0,-1):new D(0,1,0);re=new D().crossVectors(e,ne).normalize(),w=new D().crossVectors(ne,re).normalize()}let ie=e=>new D().copy(te).addScaledVector(re,(e.x-C)*r).addScaledVector(w,(e.y-ee)*r);return g.map(e=>{let t=e.pts.map(ie);return u&&t.length>=2&&(t=e.mode===`corner`?Kj(t,d):Wj(t,d)),{points:t,totalLength:Bj(t)}})})}function Wj(e,t){return e.length<3?e:new pi(e,!1,`centripetal`).getPoints(Math.max(e.length*t,8))}var Gj=.2;function Kj(e,t){if(e.length<3)return e;let n=new Tn().setFromPoints(e),r=n.min.distanceTo(n.max),i=r>1e-9&&e[0].distanceTo(e[e.length-1])<r*.06,a=i?e.slice(0,-1):e,o=a.length;if(o<3)return e;let s=new D,c=new D,l=e=>{if(!i&&(e===0||e===o-1))return!0;let t=(e-1+o)%o,n=(e+1)%o;s.subVectors(a[e],a[t]),c.subVectors(a[n],a[e]);let r=s.length(),l=c.length();return r<1e-6||l<1e-6?!1:s.dot(c)/(r*l)<Gj},u=[];for(let e=0;e<o;e++)l(e)&&u.push(e);if(u.length===0)return new pi(a,i,`centripetal`).getPoints(Math.max(o*t,8));let d=(e,t)=>{let n=[],r=e;for(;n.push(a[r]),r!==t;)r=(r+1)%o;return n},f=u.length,p=i?f:f-1,m=[];for(let e=0;e<p;e++){let n=d(u[e],u[(e+1)%f]),r=n.length>=3?new pi(n,!1,`centripetal`).getPoints(Math.max((n.length-1)*t,2)):n;for(let t=0;t<r.length;t++)e>0&&t===0||m.push(r[t])}return m}var qj=class extends o.Controller{updateState(e,t){let n=this.state;this.state=Object.assign(Object.assign({},this.state),e),this.hooks.emit(`stateChange`,{state:this.state,prevState:n,userAction:t})}constructor(e,t){var n,r;super(e),this.dispose=()=>{this.disable(),this.wordPass.dispose()},this.five=e;let i={enabled:!1,visible:!0};this.state=Object.assign(i,t==null?void 0:t.initialState);let a=(r=(n=t==null?void 0:t.config)==null?void 0:n.outputType)==null?e.enableHDR?w:ee:r;this.wordPass=new Nj(e.camera,a),this.state.enabled&&this._enable()}load(){return r(this,void 0,void 0,function*(){})}_enable(){this.five.addPass(this.wordPass),this.wordPass.enabled=this.state.visible,this.five.needsRender=!0}_disable(){this.five.removePass(this.wordPass),this.wordPass.clearWords(),this.five.needsRender=!0}enable(e){var t;if(this.state.enabled)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!0},n),this._enable()}disable(e){var t;if(this.state.enabled===!1)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!1},n),this._disable()}setState(e,t={}){var n;let r=this.state,i=(n=t.userAction)==null?!0:n;this.updateState(e,i),e.enabled!==void 0&&r.enabled!==e.enabled&&(e.enabled?this._enable():this._disable()),e.visible!==void 0&&r.visible!==e.visible&&(this.wordPass.enabled=e.visible,this.five.needsRender=!0)}setWords(e){let t=this.wordPass.setWords(e);return this.five.needsRender=!0,t}addWord(...e){let t=this.wordPass.addWord(...e);return this.five.needsRender=!0,t}removeWord(...e){let t=this.wordPass.removeWord(...e);return this.five.needsRender=!0,t}setWord(e){this.wordPass.setWord(e),this.five.needsRender=!0}clearWords(){this.wordPass.clearWords(),this.five.needsRender=!0}hasWord(e){return this.wordPass.hasWord(e)}setMaxDisplayBoost(e){this.wordPass.setMaxDisplayBoost(e),this.five.needsRender=!0}writeText(e){return r(this,arguments,void 0,function*(e,t={}){let{size:r,letterSpacing:i,lineSpacing:a,normal:o,up:s,center:c,position:l,smooth:u,smoothSubdivisions:d,cdnBaseUrl:f,charDataLoader:p,latinScale:m}=t,h=n(t,[`size`,`letterSpacing`,`lineSpacing`,`normal`,`up`,`center`,`position`,`smooth`,`smoothSubdivisions`,`cdnBaseUrl`,`charDataLoader`,`latinScale`]),g=yield Uj(e,{size:r,letterSpacing:i,lineSpacing:a,normal:o,up:s,center:c,position:l,smooth:u,smoothSubdivisions:d,cdnBaseUrl:f,charDataLoader:p,latinScale:m});this.state.enabled||this.enable(),h.id!==void 0&&this.hasWord(h.id)&&this.removeWord(h.id);let[_]=this.addWord(Object.assign(Object.assign({},h),{strokes:g}));return _})}},Jj=(e,t)=>new qj(e,t);function Yj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}function Xj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}e.BackgroundPlugin=c,Object.defineProperty(e,"BasePlugin",{enumerable:!0,get:function(){return o}}),e.CSS2DPlugin=uT,e.CSS3DPlugin=xT,e.FloorplanPlugin=Cj,e.GaussianSplattingEntranceAnimationPlugin=Ej,e.Object3DHelperController=_w,e.Object3DHelperPlugin=vw,e.PanoAnimePlugin=Qw,e.WordPassPlugin=Jj,e.calculatePath2DLength=Xj,e.calculatePath3DLength=Yj,e.formatFloorplanJson=cj,e.loadHersheyFont=Lj,e.textToStrokeOrderStrokes=Uj});
1151
+ `,svgWidth:80,svgHeight:160,svgContentHeight:320}],hA=function(e){function t(e,n,r,i){var a,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,c=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;VE(this,t),a=BE(this,t);var l=mA[n];return a.line=e,a.start=r,a.startIndex=c,a.type=n,a.length=i||(l?l.width:0),a.subLength=l&&l.subWidth?l.subWidth:null,a.rotateX=o,a.rotateY=s,a.entrance=null,a.noAnalysis=!1,a.height=null,a.subHeight=l&&l.subHeight?l.subHeight:null,a.offsetY=null,a.leftR=null,a.rightR=null,a}return YE(t,e),WE(t,[{key:`model`,value:function(){var e=mA[this.type];return ok({},e,{originWidth:e.width,originHeight:e.height,width:this.length,height:e.ratio?this.length*e.ratio:this.line?this.line.getThickness()/e.strokeWidth:0})}},{key:`startPointAt`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.line.align){var r=[void 0,1,0][this.line.align],i=rD(xk(this.line.getThickness()/2,[t,n])[r],2);t=i[0],n=i[1]}if(this.startIndex===1){var a=[n,t];t=a[0],n=a[1]}var o=this.start/$(t,n);return isNaN(o)&&(o=0),{x:t.x+(n.x-t.x)*o,y:t.y+(n.y-t.y)*o}}},{key:`startPointDrawAt`,value:function(){var e=rD(this.line.edgeLine(),2),t=e[0],n=e[1],r={x:t[0].x/2+n[0].x/2,y:t[0].y/2+n[0].y/2},i={x:t[1].x/2+n[1].x/2,y:t[1].y/2+n[1].y/2};return vk(this.startPointAt(),[r,i])}},{key:`endPointAt`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.line.align){var r=[void 0,1,0][this.line.align],i=rD(xk(this.line.getThickness()/2,[t,n])[r],2);t=i[0],n=i[1]}if(this.startIndex===1){var a=[n,t];t=a[0],n=a[1]}var o=(this.start+this.length)/$(t,n);return isNaN(o)&&(o=0),{x:t.x+(n.x-t.x)*o,y:t.y+(n.y-t.y)*o}}},{key:`endPointDrawAt`,value:function(){var e=rD(this.line.edgeLine(),2),t=e[0],n=e[1],r={x:t[0].x/2+n[0].x/2,y:t[0].y/2+n[0].y/2},i={x:t[1].x/2+n[1].x/2,y:t[1].y/2+n[1].y/2};return vk(this.endPointAt(),[r,i])}},{key:`rad`,value:function(){var e=rD(this.line.points,2),t=e[0],n=e[1];if(this.startIndex===1){var r=[n,t];t=r[0],n=r[1]}return Math.atan2(n.y-t.y,n.x-t.x)}},{key:`towardsRadWithArea`,value:function(e){return this.line.towardsRadWithArea(e)}},{key:`_checkItem`,value:function(e,t){var n=[];return e.forEach(function(e){var r=e.startPointAt(),i=e.endPointAt();if(Ek(r,t)){var a=$(t[0],r);n.push({distance:a,point:r})}if(Ek(i,t)){var o=$(t[0],i);n.push({distance:o,point:i})}}),n}},{key:`limitePointRange`,value:function(){var e=this,t=this.line,n=t.edgePoints(!0),r=t.items.filter(function(t){return t.id!==e.id}),i=rD(n.map(function(e){return t.closestPointOnLine(e)}),6),a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d={x:a.x/2+c.x/2,y:a.y/2+c.y/2},f=this.startPointAt(),p=this.endPointAt(),m={x:f.x/2+p.x/2,y:f.y/2+p.y/2},h=$(d,o)>$(d,u)?u:o,g=this._checkItem(r,[m,h]);g.length>0&&(g.sort(function(e,t){return e.distance-t.distance}),h=g[0].point);var _=$(d,s)>$(d,l)?l:s,v=this._checkItem(r,[m,_]);return v.length>0&&(v.sort(function(e,t){return e.distance-t.distance}),_=v[0].point),this.startIndex===1?[_,h]:[h,_]}}])}(Yk);hA.displayName=`LineItem`,hA.prototype.displayName=`LineItem`,hA.propTypes={line:[`object`,`null`],start:`number`,startIndex:`number`,type:`number`,length:`number`,rotateX:`boolean`,rotateY:`boolean`,entrance:[`number`,`null`],noAnalysis:`boolean`,height:[`number`,`null`],offsetY:[`number`,`null`],subLength:[`number`,`null`],leftR:[`number`,`null`],rightR:[`number`,`null`],subHeight:[`number`,`null`]},hA.storeTypes={type:`value`,line:`id`,startIndex:`value`,start:`value`,length:`value`,rotateX:`value`,rotateY:`value`,entrance:`value`,noAnalysis:`value`,height:`value`,offsetY:`value`,subLength:`value`,leftR:`value`,rightR:`value`,subHeight:`value`,startPointAt:function(e){return e.startPointAt()},endPointAt:function(e){return e.endPointAt()},is:function(e){return e.model().is}},hA.lineItemModels=mA;var gA={0:{type:0,description:`车-2`,href:`resource/items/{{ theme }}/car_2.png`,width:4200,height:1800,tag:`其他`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},1:{type:1,description:`车-1`,href:`resource/items/{{ theme }}/car_1.png`,width:1900,height:4300,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},2:{type:2,description:`中厨-1`,href:`resource/items/{{ theme }}/kitchen_1.png`,width:3158,height:1400,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},3:{type:3,description:`8人餐桌`,href:`resource/items/{{ theme }}/table_for_8.png`,width:3240,height:1800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},4:{type:4,description:`衣柜-1`,href:`resource/items/{{ theme }}/wardrobe_1.png`,width:1820,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},5:{type:5,description:`浴缸-2`,href:`resource/items/{{ theme }}/bathtub_2.png`,width:1500,height:694,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},6:{type:6,description:`衣柜-3`,href:`resource/items/{{ theme }}/wardrobe_3.png`,width:2830,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},7:{type:7,description:`植物-4`,href:`resource/items/{{ theme }}/plant_4.png`,width:700,height:628,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},8:{type:8,description:`植物-1`,href:`resource/items/{{ theme }}/plant_1.png`,width:700,height:565,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},9:{type:9,description:`植物-6`,href:`resource/items/{{ theme }}/plant_6.png`,width:800,height:758,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},10:{type:10,description:`书桌-1`,href:`resource/items/{{ theme }}/desk_1.png`,width:1200,height:930,tag:`书房`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},11:{type:11,description:`瓶艺-1`,href:`resource/items/{{ theme }}/bottle_art_1.png`,width:530,height:520,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},12:{type:12,description:`衣柜-2`,href:`resource/items/{{ theme }}/wardrobe_2.png`,width:2310,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},13:{type:13,description:`植物-2`,href:`resource/items/{{ theme }}/plant_2.png`,width:600,height:600,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},14:{type:14,description:`西厨-1`,href:`resource/items/{{ theme }}/western_kitchen_1.png`,width:2180,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},15:{type:15,description:`西厨-2`,href:`resource/items/{{ theme }}/western_kitchen_2.png`,width:1480,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},16:{type:16,description:`浴缸-1`,href:`resource/items/{{ theme }}/bathtub_1.png`,width:1500,height:956,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},17:{type:17,description:`植物-3`,href:`resource/items/{{ theme }}/plant_3.png`,width:700,height:639,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},18:{type:18,description:`书桌-2`,href:`resource/items/{{ theme }}/desk_2.png`,width:2200,height:2470,tag:`书房`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},19:{type:19,description:`吧台`,href:`resource/items/{{ theme }}/bar_counter.png`,width:1800,height:1130,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},20:{type:20,description:`书柜-短`,href:`resource/items/{{ theme }}/bookcase_short.png`,width:1460,height:350,tag:`书房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},21:{type:21,description:`鞋柜-长`,href:`resource/items/{{ theme }}/shoe_cabinet_long.png`,width:2059,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},22:{type:22,description:`鞋柜-短`,href:`resource/items/{{ theme }}/shoe_cabinet_short.png`,width:1308,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},23:{type:23,description:`中厨-2`,href:`resource/items/{{ theme }}/kitchen_2.png`,width:2020,height:650,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},24:{type:24,description:`椅子`,href:`resource/items/{{ theme }}/chair.png`,width:1050,height:950,tag:`客厅`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},25:{type:25,description:`秋千`,href:`resource/items/{{ theme }}/swing.png`,width:1600,height:1370,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},26:{type:26,description:`茶几`,href:`resource/items/{{ theme }}/tea_table.png`,width:1090,height:800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},27:{type:27,description:`庭院`,href:`resource/items/{{ theme }}/courtyard.png`,width:2100,height:3020,tag:`其他`,direction:3,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},28:{type:28,description:`躺椅`,href:`resource/items/{{ theme }}/deck_chair.png`,width:900,height:1850,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},29:{type:29,description:`钢琴`,href:`resource/items/{{ theme }}/piano.png`,width:1900,height:2260,tag:`其他`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},30:{type:30,description:`音响`,href:`resource/items/{{ theme }}/sound.png`,width:2500,height:550,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},31:{type:31,description:`马桶`,href:`resource/items/{{ theme }}/flush_toilet.png`,width:450,height:750,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},32:{type:32,description:`植物-5`,href:`resource/items/{{ theme }}/plant_5.png`,width:544,height:600,tag:`装饰类`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},33:{type:33,description:`书柜-长`,href:`resource/items/{{ theme }}/bookcase_long.png`,width:2040,height:350,tag:`书房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},34:{type:34,description:`燃气灶-1`,href:`resource/items/{{ theme }}/gas_stove_1.png`,width:820,height:450,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},35:{type:35,description:`洗脸池-单`,href:`resource/items/{{ theme }}/wash_basin_single.png`,width:1150,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},36:{type:36,description:`洗手池-单`,href:`resource/items/{{ theme }}/sink_single.png`,width:1200,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},37:{type:37,description:`双人床-4`,href:`resource/items/{{ theme }}/double_4.png`,width:2743,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},38:{type:38,description:`电视柜-短`,href:`resource/items/{{ theme }}/tv_cabinet_short.png`,width:1580,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},39:{type:39,description:`储物柜-1`,href:`resource/items/{{ theme }}/locker_1.png`,width:1400,height:600,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},40:{type:40,description:`双人床-3`,href:`resource/items/{{ theme }}/double_3.png`,width:2791,height:2300,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},41:{type:41,description:`双人床-2`,href:`resource/items/{{ theme }}/double_2.png`,width:2791,height:2300,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},42:{type:42,description:`洗手池-双`,href:`resource/items/{{ theme }}/sink_double.png`,width:2777,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},43:{type:43,description:`洗脸池-双`,href:`resource/items/{{ theme }}/wash_basin_double.png`,width:2550,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},44:{type:44,description:`双人床(无床头柜)-1`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_1.png`,width:1914,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},45:{type:45,description:`电视柜-长`,href:`resource/items/{{ theme }}/tv_cabinet_long.png`,width:2040,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},46:{type:46,description:`洽谈桌组合`,href:`resource/items/{{ theme }}/negotiation_table_combination.png`,width:2830,height:950,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},47:{type:47,description:`哑铃架`,href:`resource/items/{{ theme }}/dumbbell_rack.png`,width:900,height:650,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},48:{type:48,description:`沙发组合-1`,href:`resource/items/{{ theme }}/sofa_combination_1.png`,width:4e3,height:2792,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},49:{type:49,description:`游泳池-2`,href:`resource/items/{{ theme }}/swimming_pool_2.png`,width:7680,height:3800,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},50:{type:50,description:`美人榻`,href:`resource/items/{{ theme }}/beauty_couch.png`,width:1600,height:520,tag:`卧室`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},51:{type:51,description:`单人床(无床头柜)`,href:`resource/items/{{ theme }}/single_bed_without_bedside_table.png`,width:1200,height:2120,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},52:{type:52,description:`沙发组合-2`,href:`resource/items/{{ theme }}/sofa_combination_2.png`,width:2e3,height:2054,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},53:{type:53,description:`跑步机`,href:`resource/items/{{ theme }}/treadmill.png`,width:2120,height:950,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},54:{type:54,description:`储物柜-3`,href:`resource/items/{{ theme }}/lockers_3.png`,width:2400,height:1360,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},55:{type:55,description:`洗菜池-1`,href:`resource/items/{{ theme }}/vegetable_washing_pool_1.png`,width:760,height:470,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},56:{type:56,description:`组合沙发-4`,href:`resource/items/{{ theme }}/combination_sofa_4.png`,width:1800,height:1595,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},57:{type:57,description:`台球桌`,href:`resource/items/{{ theme }}/pool_table.png`,width:2540,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},58:{type:58,description:`置物台-1`,href:`resource/items/{{ theme }}/shelf_1.png`,width:1632,height:560,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},59:{type:59,description:`储物柜-2`,href:`resource/items/{{ theme }}/locker_2.png`,width:2640,height:600,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},60:{type:60,description:`户外桌椅`,href:`resource/items/{{ theme }}/outdoor_tables_and_chairs.png`,width:3e3,height:2800,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},61:{type:61,description:`洗衣机-1`,href:`resource/items/{{ theme }}/washing_machine_1.png`,width:850,height:600,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},62:{type:62,description:`双人床-1`,href:`resource/items/{{ theme }}/double_1.png`,width:2851,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},63:{type:63,description:`六人餐桌`,href:`resource/items/{{ theme }}/table_for_six.png`,width:2230,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},64:{type:64,description:`洽谈沙发椅`,href:`resource/items/{{ theme }}/sofa_chair.png`,width:1e3,height:950,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},65:{type:65,description:`三人沙发`,href:`resource/items/{{ theme }}/three_seat_sofa.png`,width:2670,height:950,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},66:{type:66,description:`会客桌`,href:`resource/items/{{ theme }}/reception_table.png`,width:1800,height:1800,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},67:{type:67,description:`健身机`,href:`resource/items/{{ theme }}/fitness_machine.png`,width:2200,height:800,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},68:{type:68,description:`沙发组合-3`,href:`resource/items/{{ theme }}/sofa_combination_3.png`,width:2670,height:2330,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},69:{type:69,description:`双开冰箱`,href:`resource/items/{{ theme }}/double_refrigerator.png`,width:720,height:600,tag:`厨房`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},70:{type:70,description:`车库工具箱`,href:`resource/items/{{ theme }}/garage_toolbox.png`,width:1280,height:500,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},71:{type:71,description:`储物柜-4`,href:`resource/items/{{ theme }}/locker_4.png`,width:2440,height:2440,tag:`储物间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},72:{type:72,description:`临时餐台`,href:`resource/items/{{ theme }}/temporary_dining_table.png`,width:1e3,height:1500,tag:`厨房`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},73:{type:73,description:`置物台-2`,href:`resource/items/{{ theme }}/shelf_2.png`,width:1590,height:600,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},74:{type:74,description:`四人餐桌`,href:`resource/items/{{ theme }}/table_for_four.png`,width:1700,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},75:{type:75,description:`洽谈桌`,href:`resource/items/{{ theme }}/negotiating_table.png`,width:950,height:950,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},76:{type:76,description:`游泳池-1`,href:`resource/items/{{ theme }}/swimming_pool_1.png`,width:4300,height:5340,tag:`其他`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},77:{type:77,description:`毛巾凳`,href:`resource/items/{{ theme }}/towel_stool.png`,width:800,height:500,tag:`卫生间`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},78:{type:78,description:`电梯`,href:`resource/items/{{ theme }}/lift.png`,width:2e3,height:2e3,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},79:{type:79,description:`AC`,href:`resource/items/{{ theme }}/ac.png`,width:850,height:320,tag:`其他`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},80:{type:80,description:`二人餐桌`,href:`resource/items/{{ theme }}/table_for_two.png`,width:780,height:1500,tag:`客厅`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},81:{type:81,description:`双人床(无床头柜)-2`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_2.png`,width:1500,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},82:{type:82,description:`双人床(无床头柜)-3`,href:`resource/items/{{ theme }}/double_bed_without_bedside_table_3.png`,width:1800,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},83:{type:83,description:`床头柜`,href:`resource/items/{{ theme }}/bedstand.png`,width:500,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},84:{type:84,description:`单开门冰箱`,href:`resource/items/{{ theme }}/refrigerator.png`,width:650,height:670,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},85:{type:85,description:`沙发组合-5`,href:`resource/items/{{ theme }}/sofa_combination_5.png`,width:1598,height:1418,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},86:{type:86,description:`沙发组合-6`,href:`resource/items/{{ theme }}/sofa_combination_6.png`,width:2680,height:1790,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},87:{type:87,description:`四人餐桌-1`,href:`resource/items/{{ theme }}/table_for_four_1.png`,width:1600,height:1700,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},88:{type:88,description:`小单人沙发`,href:`resource/items/{{ theme }}/chair_2.png`,width:460,height:416,tag:`客厅`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},89:{type:89,description:`小洗手池`,href:`resource/items/{{ theme }}/sink_small.png`,width:600,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},90:{type:90,description:`小厨`,href:`resource/items/{{ theme }}/kitchen_small.png`,width:740,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},91:{type:91,description:`小衣柜`,href:`resource/items/{{ theme }}/wardrobe_small.png`,width:910,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},92:{type:92,description:`淋浴房`,href:`resource/items/{{ theme }}/shower.png`,width:650,height:670,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},93:{type:93,description:`鞋柜-1`,href:`resource/items/{{ theme }}/shoe_cabinet_1.png`,width:900,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},94:{type:94,description:`鞋柜-2`,href:`resource/items/{{ theme }}/shoe_cabinet_2.png`,width:1500,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},95:{type:95,description:`鞋柜-3`,href:`resource/items/{{ theme }}/shoe_cabinet_3.png`,width:2e3,height:400,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},96:{type:96,description:`电视柜-1`,href:`resource/items/{{ theme }}/tv_cabinet_1.png`,width:1500,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},97:{type:97,description:`电视柜-2`,href:`resource/items/{{ theme }}/tv_cabinet_2.png`,width:2040,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},98:{type:98,description:`电视柜-3`,href:`resource/items/{{ theme }}/tv_cabinet_3.png`,width:3e3,height:350,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},99:{type:99,description:`餐边柜-1`,href:`resource/items/{{ theme }}/sideboard_1.png`,width:900,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},100:{type:100,description:`餐边柜-2`,href:`resource/items/{{ theme }}/sideboard_2.png`,width:1500,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},101:{type:101,description:`餐边柜-3`,href:`resource/items/{{ theme }}/sideboard_3.png`,width:2e3,height:550,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},102:{type:102,description:`燃气灶-2`,href:`resource/items/{{ theme }}/gas_stove_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},103:{type:103,description:`洗菜池-2`,href:`resource/items/{{ theme }}/vegetable_washing_pool_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},104:{type:104,description:`橱柜-1`,href:`resource/items/{{ theme }}/kitchen_cabinet_1.png`,width:550,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},105:{type:105,description:`橱柜-2`,href:`resource/items/{{ theme }}/kitchen_cabinet_2.png`,width:900,height:550,tag:`厨房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},106:{type:106,description:`花洒`,href:`resource/items/{{ theme }}/shower_head.png`,width:260,height:200,tag:`卫生间`,direction:1,keywords:[`default`],themes:[`realsee`],label:!0},107:{type:107,description:`淋浴屏`,href:`resource/items/{{ theme }}/shower_panel.png`,width:1500,height:100,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},108:{type:108,description:`洗衣机-2`,href:`resource/items/{{ theme }}/washing_machine_2.png`,width:600,height:500,tag:`卫生间`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},109:{type:109,description:`双人床-5`,href:`resource/items/{{ theme }}/double_5.png`,width:1500,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},110:{type:110,description:`双人床-6`,href:`resource/items/{{ theme }}/double_6.png`,width:1800,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},111:{type:111,description:`双人床-7`,href:`resource/items/{{ theme }}/double_7.png`,width:2e3,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},112:{type:112,description:`双人床-8`,href:`resource/items/{{ theme }}/double_8.png`,width:2300,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},113:{type:113,description:`梳妆台`,href:`resource/items/{{ theme }}/dressing_table.png`,width:1200,height:900,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},114:{type:114,description:`儿童床-1`,href:`resource/items/{{ theme }}/children_bed_1.png`,width:1400,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},115:{type:115,description:`儿童床-2`,href:`resource/items/{{ theme }}/children_bed_2.png`,width:1700,height:2e3,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},116:{type:116,description:`儿童床-3`,href:`resource/items/{{ theme }}/children_bed_3.png`,width:2e3,height:2200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},117:{type:117,description:`儿童书桌-1`,href:`resource/items/{{ theme }}/children_desk_1.png`,width:1e3,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},118:{type:118,description:`儿童书桌-2`,href:`resource/items/{{ theme }}/children_desk_2.png`,width:1200,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},119:{type:119,description:`儿童书桌-3`,href:`resource/items/{{ theme }}/children_desk_3.png`,width:1500,height:800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},120:{type:120,description:`儿童活动区域-1`,href:`resource/items/{{ theme }}/children_carpet_1.png`,width:600,height:600,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},121:{type:121,description:`儿童活动区域-2`,href:`resource/items/{{ theme }}/children_carpet_2.png`,width:1200,height:1200,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},122:{type:122,description:`儿童活动区域-3`,href:`resource/items/{{ theme }}/children_carpet_3.png`,width:1800,height:1800,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},123:{type:123,description:`茶榻组合-1`,href:`resource/items/{{ theme }}/tea_table_combination_1.png`,width:2e3,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},124:{type:124,description:`茶榻组合-2`,href:`resource/items/{{ theme }}/tea_table_combination_2.png`,width:2500,height:1400,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},125:{type:125,description:`茶榻组合-3`,href:`resource/items/{{ theme }}/tea_table_combination_3.png`,width:3e3,height:1800,tag:`其他`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},126:{type:126,description:`儿童衣柜-1`,href:`resource/items/{{ theme }}/children_wardrobe_1.png`,width:900,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},127:{type:127,description:`儿童衣柜-2`,href:`resource/items/{{ theme }}/children_wardrobe_2.png`,width:1200,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},128:{type:128,description:`儿童衣柜-3`,href:`resource/items/{{ theme }}/children_wardrobe_3.png`,width:1500,height:500,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},129:{type:129,description:`儿童书柜-1`,href:`resource/items/{{ theme }}/children_bookcase_1.png`,width:800,height:450,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},130:{type:130,description:`儿童书柜-2`,href:`resource/items/{{ theme }}/children_bookcase_2.png`,width:1200,height:450,tag:`卧室`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},131:{type:131,description:`折行双跑楼梯`,href:`resource/items/{{ theme }}/folding_double_running_stairs.png`,width:3e3,height:3e3,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},132:{type:132,description:`平行双跑楼梯`,href:`resource/items/{{ theme }}/parallel_double_running_stairs.png`,width:2500,height:3600,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},133:{type:133,description:`折行三跑楼梯`,href:`resource/items/{{ theme }}/folding_treble_running_stairs.png`,width:4300,height:2700,tag:`楼梯`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!0},134:{type:134,description:`手枪`,href:`resource/items/{{ theme }}/pistol.png`,width:500,height:500,tag:`物证痕迹`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},135:{type:135,description:`血迹`,href:`resource/items/{{ theme }}/bloodstain.png`,width:500,height:500,tag:`物证痕迹`,direction:2,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},136:{type:136,description:`手印`,href:`resource/items/{{ theme }}/handprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},137:{type:137,description:`足迹`,href:`resource/items/{{ theme }}/footprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},138:{type:138,description:`车轮轨迹`,href:`resource/items/{{ theme }}/wheelprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},139:{type:139,description:`弹头`,href:`resource/items/{{ theme }}/bullet.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},140:{type:140,description:`弹壳`,href:`resource/items/{{ theme }}/shell.png`,width:500,height:500,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},141:{type:141,description:`尸体`,href:`resource/items/{{ theme }}/corpse.png`,width:1500,height:1500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`legacy`,`realsee`],label:!1},142:{type:142,description:`空气净化器`,href:`resource/items/{{ theme }}/airscrubber.png`,width:580,height:380,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},143:{type:143,description:`吹风机`,href:`resource/items/{{ theme }}/airblower.png`,width:640,height:600,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},144:{type:144,description:`除湿器`,href:`resource/items/{{ theme }}/dehumidifier.png`,width:480,height:430,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},145:{type:145,description:`冰柜`,href:`resource/items/{{ theme }}/freezer.png`,width:800,height:460,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},146:{type:146,description:`架子`,href:`resource/items/{{ theme }}/shelf.png`,width:1e3,height:380,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},147:{type:147,description:`杂物`,href:`resource/items/{{ theme }}/sundries.png`,width:800,height:800,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},148:{type:148,description:`L型沙发`,href:`resource/items/{{ theme }}/L_sofa.png`,width:3500,height:1800,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},149:{type:149,description:`书桌3`,href:`resource/items/{{ theme }}/desk_3.png`,width:1200,height:680,tag:`书房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},150:{type:150,description:`会议桌-1`,href:`resource/items/{{ theme }}/conference_table_1.png`,width:1600,height:1100,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},151:{type:151,description:`衣架`,href:`resource/items/{{ theme }}/coat_hanger.png`,width:1200,height:400,tag:`卧室`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},152:{type:152,description:`上下铺`,href:`resource/items/{{ theme }}/bunk_beds.png`,width:2e3,height:1040,tag:`卧室`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},153:{type:153,description:`蹲坑`,href:`resource/items/{{ theme }}/squatting.png`,width:600,height:480,tag:`卫生间`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},154:{type:154,description:`男尸`,href:`resource/items/{{ theme }}/male_corpse.png`,width:1600,height:800,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},155:{type:155,description:`女尸`,href:`resource/items/{{ theme }}/female_corpse.png`,width:1500,height:800,tag:`物证痕迹`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},156:{type:156,description:`擦蹭状血迹`,href:`resource/items/{{ theme }}/rub-like-bookd-stains.png`,width:1200,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},157:{type:157,description:`擦拭物`,href:`resource/items/{{ theme }}/wipes.png`,width:300,height:60,tag:`物证痕迹`,direction:3,keywords:[`default`],themes:[`realsee`],label:!1},158:{type:158,description:`纸团`,href:`resource/items/{{ theme }}/paper_ball.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},159:{type:159,description:`未整理的被子`,href:`resource/items/{{ theme }}/unarranged_quilts.png`,width:800,height:500,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},160:{type:160,description:`手机`,href:`resource/items/{{ theme }}/mobile_phone.png`,width:400,height:280,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},161:{type:161,description:`菜刀`,href:`resource/items/{{ theme }}/kitchen_knife.png`,width:500,height:220,tag:`物证痕迹`,direction:3,keywords:[`default`],themes:[`realsee`],label:!1},162:{type:162,description:`矩形`,href:`resource/items/{{ theme }}/rectangle.png`,width:900,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0,svgWidth:90,svgHeight:60,svg:`<rect x=".75" y=".75" width="88.5" height="58.5" rx="4" fill="#FFF" stroke="#3D404E" fill-rule="evenodd" vector-effect="non-scaling-stroke"/>`},163:{type:163,description:`圆形`,href:`resource/items/{{ theme }}/circle.png`,width:600,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},164:{type:164,description:`三角形`,href:`resource/items/{{ theme }}/triangle.png`,width:600,height:600,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},165:{type:165,description:`五角星形`,href:`resource/items/{{ theme }}/five_pointedstar.png`,width:800,height:800,tag:`自定义`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},166:{type:166,description:`会议桌-2`,href:`resource/items/{{ theme }}/conference_table_2.png`,width:2800,height:1800,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},167:{type:167,description:`餐椅`,href:`resource/items/{{ theme }}/dining_chair.png`,width:500,height:580,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},168:{type:168,description:`转椅-1`,href:`resource/items/{{ theme }}/rotating_chair_1.png`,width:500,height:580,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},169:{type:169,description:`转椅-2`,href:`resource/items/{{ theme }}/rotating_chair_2.png`,width:640,height:640,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},170:{type:170,description:`长方形茶几`,href:`resource/items/{{ theme }}/rectangular_coffee_table.png`,width:1090,height:800,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},171:{type:171,description:`抽油烟机`,href:`resource/items/{{ theme }}/smoke_lampblack_machine.png`,width:1200,height:800,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},172:{type:172,description:`电话机`,href:`resource/items/{{ theme }}/telephone.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},173:{type:173,description:`对讲机`,href:`resource/items/{{ theme }}/walkie_talkie.png`,width:240,height:540,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},174:{type:174,description:`花盆`,href:`resource/items/{{ theme }}/flower_pot.png`,width:500,height:500,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},175:{type:175,description:`剪刀`,href:`resource/items/{{ theme }}/scissors.png`,width:500,height:460,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},176:{type:176,description:`角柜`,href:`resource/items/{{ theme }}/corner_cabinet.png`,width:1e3,height:1e3,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},177:{type:177,description:`口杯`,href:`resource/items/{{ theme }}/mouth_cup.png`,width:500,height:400,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},178:{type:178,description:`盘子`,href:`resource/items/{{ theme }}/plate.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},179:{type:179,description:`勺子`,href:`resource/items/{{ theme }}/spoon.png`,width:600,height:180,tag:`日常用品`,direction:1,keywords:[`default`],themes:[`realsee`],label:!1},180:{type:180,description:`手提包`,href:`resource/items/{{ theme }}/handbag.png`,width:500,height:500,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},181:{type:181,description:`双人沙发`,href:`resource/items/{{ theme }}/double_sofa.png`,width:1600,height:850,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},182:{type:182,description:`藤椅`,href:`resource/items/{{ theme }}/cane_chair.png`,width:640,height:640,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!0},183:{type:183,description:`拖把`,href:`resource/items/{{ theme }}/mop.png`,width:490,height:1e3,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},184:{type:184,description:`卫生纸`,href:`resource/items/{{ theme }}/toilet_paper.png`,width:280,height:300,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},185:{type:185,description:`烟盒`,href:`resource/items/{{ theme }}/cigarette_case.png`,width:220,height:300,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},186:{type:186,description:`烟头`,href:`resource/items/{{ theme }}/cigarette_butt.png`,width:280,height:220,tag:`日常用品`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},187:{type:187,description:`鱼缸`,href:`resource/items/{{ theme }}/fish_tank.png`,width:1e3,height:500,tag:`客厅`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},188:{type:188,description:`笔记本电脑`,href:`resource/items/{{ theme }}/notebook_computer.png`,width:500,height:500,tag:`日常用品`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},189:{type:189,description:`微波炉`,href:`resource/items/{{ theme }}/microwave_oven.png`,width:600,height:400,tag:`厨房`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},190:{type:190,description:`断口`,href:`resource/items/{{ theme }}/fracture.png`,width:1200,height:300,tag:`其他`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},191:{type:191,description:`遗物堆`,href:`resource/items/{{ theme }}/relic_pile.png`,width:800,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},192:{type:192,description:`衣物`,href:`resource/items/{{ theme }}/clothing.png`,width:830,height:810,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},193:{type:193,description:`浴巾`,href:`resource/items/{{ theme }}/bath_towel.png`,width:420,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},194:{type:194,description:`水渍`,href:`resource/items/{{ theme }}/water_stains.png`,width:1070,height:600,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},195:{type:195,description:`螺丝刀`,href:`resource/items/{{ theme }}/bolt_driver.png`,width:300,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},196:{type:196,description:`凉鞋`,href:`resource/items/{{ theme }}/sandals.png`,width:430,height:460,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},197:{type:197,description:`水果刀`,href:`resource/items/{{ theme }}/fruit_knife.png`,width:300,height:260,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},198:{type:198,description:`匕首`,href:`resource/items/{{ theme }}/dragger.png`,width:400,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},199:{type:199,description:`玻璃弹孔`,href:`resource/items/{{ theme }}/glass_bullet_hole.png`,width:1160,height:1e3,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},200:{type:200,description:`电视`,href:`resource/items/{{ theme }}/tv.png`,width:1120,height:160,tag:`客厅`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},201:{type:201,description:`单向楼梯`,href:`resource/items/{{ theme }}/stairs.png`,width:1400,height:3600,tag:`楼梯`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},202:{type:202,description:`电脑`,href:`resource/items/{{ theme }}/computer.png`,width:700,height:120,tag:`书房`,direction:2,keywords:[`default`],themes:[`realsee`],label:!1},203:{type:203,description:`工具`,href:`resource/items/{{ theme }}/tool.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},204:{type:204,description:`特殊`,href:`resource/items/{{ theme }}/special.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},205:{type:205,description:`生物`,href:`resource/items/{{ theme }}/biology.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},206:{type:206,description:`毒化`,href:`resource/items/{{ theme }}/poison.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},207:{type:207,description:`理化`,href:`resource/items/{{ theme }}/physics&chemistry.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},208:{type:208,description:`文检`,href:`resource/items/{{ theme }}/document.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},209:{type:209,description:`电子`,href:`resource/items/{{ theme }}/electronic.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},210:{type:210,description:`人像`,href:`resource/items/{{ theme }}/portrait.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},211:{type:211,description:`提取物品`,href:`resource/items/{{ theme }}/extract_items.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},212:{type:212,description:`左脚足迹`,href:`resource/items/{{ theme }}/footprint_l.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},213:{type:213,description:`右脚足迹`,href:`resource/items/{{ theme }}/footprint_r.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},214:{type:214,description:`电动车`,href:`resource/items/{{ theme }}/electric_car.png`,width:480,height:1320,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},215:{type:215,description:`自行车`,href:`resource/items/{{ theme }}/bike.png`,width:380,height:1480,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},216:{type:216,description:`摩托车`,href:`resource/items/{{ theme }}/motorcycle.png`,width:500,height:1780,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},217:{type:217,description:`越野车`,href:`resource/items/{{ theme }}/off_road_vehicle.png`,width:1700,height:4360,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},218:{type:218,description:`卡车`,href:`resource/items/{{ theme }}/truck.png`,width:1880,height:6800,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},219:{type:219,description:`客车`,href:`resource/items/{{ theme }}/bus.png`,width:3160,height:8e3,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},220:{type:220,description:`叉车`,href:`resource/items/{{ theme }}/forklift.png`,width:940,height:2720,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},221:{type:221,description:`拖拉机`,href:`resource/items/{{ theme }}/tractor.png`,width:1740,height:3060,tag:`交通工具`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},222:{type:222,description:`调压箱(柜)`,href:`resource/items/{{ theme }}/a-s.png`,width:1e3,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},223:{type:223,description:`皮膜表小超`,href:`resource/items/{{ theme }}/a-d.png`,width:300,height:240,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},224:{type:224,description:`气体探测器`,href:`resource/items/{{ theme }}/a-f.png`,width:340,height:200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},225:{type:225,description:`报警控制器`,href:`resource/items/{{ theme }}/a-g.png`,width:450,height:270,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},226:{type:226,description:`球阀(螺纹)`,href:`resource/items/{{ theme }}/a-h.png`,width:500,height:250,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},227:{type:227,description:`球阀(法兰)`,href:`resource/items/{{ theme }}/a-j.png`,width:710,height:350,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},228:{type:228,description:`单气火嘴`,href:`resource/items/{{ theme }}/a-k.png`,width:320,height:160,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},229:{type:229,description:`三门蒸箱`,href:`resource/items/{{ theme }}/a-l.png`,width:900,height:850,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},230:{type:230,description:`电磁阀`,href:`resource/items/{{ theme }}/a-q.png`,width:510,height:450,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},231:{type:231,description:`压力表`,href:`resource/items/{{ theme }}/a-w.png`,width:300,height:300,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},232:{type:232,description:`PE球阀`,href:`resource/items/{{ theme }}/a-e.png`,width:300,height:300,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},233:{type:233,description:`家用燃气灶`,href:`resource/items/{{ theme }}/a-r.png`,width:600,height:400,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},234:{type:234,description:`双眼大锅灶`,href:`resource/items/{{ theme }}/a-t.png`,width:2200,height:1200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},235:{type:235,description:`单眼大锅灶`,href:`resource/items/{{ theme }}/a-y.png`,width:1200,height:1200,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},236:{type:236,description:`四眼强力灶`,href:`resource/items/{{ theme }}/a-u.png`,width:900,height:500,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},237:{type:237,description:`单眼强力灶`,href:`resource/items/{{ theme }}/a-i.png`,width:460,height:460,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},238:{type:238,description:`双眼蒸灶`,href:`resource/items/{{ theme }}/a-o.png`,width:1500,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},239:{type:239,description:`单眼蒸灶`,href:`resource/items/{{ theme }}/a-p.png`,width:1e3,height:1e3,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},240:{type:240,description:`四眼煲仔炉`,href:`resource/items/{{ theme }}/q-w.png`,width:800,height:750,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},241:{type:241,description:`八眼煲仔炉`,href:`resource/items/{{ theme }}/q-e.png`,width:1450,height:750,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},242:{type:242,description:`六眼煲仔炉`,href:`resource/items/{{ theme }}/q-r.png`,width:1100,height:850,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},243:{type:243,description:`双眼矮汤炉`,href:`resource/items/{{ theme }}/q-t.png`,width:1200,height:650,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},244:{type:244,description:`单眼矮汤炉`,href:`resource/items/{{ theme }}/q-y.png`,width:700,height:700,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},245:{type:245,description:`单门蒸饭车`,href:`resource/items/{{ theme }}/q-u.png`,width:600,height:800,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},246:{type:246,description:`双门蒸饭车`,href:`resource/items/{{ theme }}/q-i.png`,width:520,height:550,tag:`燃气`,direction:0,keywords:[`default`],themes:[`realsee`],label:!0},247:{type:247,description:`右手手印`,href:`resource/items/{{ theme }}/right_handprint.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},248:{type:248,description:`指纹`,href:`resource/items/{{ theme }}/fingerprint.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},249:{type:249,description:`血指纹`,href:`resource/items/{{ theme }}/bloody_fingerprint.png`,width:400,height:400,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},250:{type:250,description:`手套`,href:`resource/items/{{ theme }}/glove.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},251:{type:251,description:`血手套`,href:`resource/items/{{ theme }}/bloody_glove.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},252:{type:252,description:`赤足印`,href:`resource/items/{{ theme }}/barefoot_print.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},253:{type:253,description:`水脚印`,href:`resource/items/{{ theme }}/water_footprint.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},254:{type:254,description:`血脚印`,href:`resource/items/{{ theme }}/bloody_footprint.png`,width:220,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},255:{type:255,description:`残缺鞋掌印`,href:`resource/items/{{ theme }}/shoe_sole_print.png`,width:220,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},256:{type:256,description:`残缺鞋跟印`,href:`resource/items/{{ theme }}/heel_print.png`,width:220,height:200,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},257:{type:257,description:`狗蹄印`,href:`resource/items/{{ theme }}/dog_hoof_print.png`,width:300,height:300,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},258:{type:258,description:`流淌血迹`,href:`resource/items/{{ theme }}/flowing_blood.png`,width:760,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},259:{type:259,description:`行进血迹`,href:`resource/items/{{ theme }}/traveling_blood.png`,width:610,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},260:{type:260,description:`滴落血迹`,href:`resource/items/{{ theme }}/dripping_blood.png`,width:500,height:500,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},261:{type:261,description:`喷溅血迹`,href:`resource/items/{{ theme }}/splashing_blood.png`,width:800,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1},262:{type:262,description:`血泊`,href:`resource/items/{{ theme }}/pond_of_blood.png`,width:810,height:800,tag:`物证痕迹`,direction:0,keywords:[`default`],themes:[`realsee`],label:!1}},_A=function(e){function t(e,n){var r;return VE(this,t),r=BE(this,t),r.x=e,r.y=n,r.notes=``,r.comment=``,r.textWriteMode=`horizontal`,r.locked=!1,r.width=1,r.height=1,r.rotateZ=0,r.rotateX=!1,r.rotateY=!1,r.area=null,r}return YE(t,e),WE(t,[{key:`getPointAt`,value:function(){var e=this.x,t=this.y,n=this.rotateZ/180*Math.PI,r=this.width/2,i=this.height/2;return[{x:e-r,y:t+i},{x:e+r,y:t+i},{x:e+r,y:t-i},{x:e-r,y:t-i}].map(function(r){return Ok(r,{x:e,y:t},n)})}},{key:`getAreaId`,value:function(){var e=this.canvas.areas,t=null,n=GE(e),r;try{for(n.s();!(r=n.n()).done;){var i=r.value;if(i.isPointInArea({x:this.x,y:this.y})){t=i.id;break}}}catch(e){n.e(e)}finally{n.f()}return t}}])}(Yk);_A.displayName=_A.prototype.displayName=`Item`,_A.propTypes={x:`number`,y:`number`,notes:`string`,comment:`string`,textWriteMode:`string`,locked:`boolean`,width:`number`,height:`number`,rotateZ:`number`,rotateX:`boolean`,rotateY:`boolean`},_A.storeTypes={x:`value`,y:`value`,notes:`value`,comment:`value`,textWriteMode:`value`,locked:`value`,width:`value`,height:`value`,rotateZ:`value`,rotateX:`value`,rotateY:`value`,area:function(e){return e.getAreaId()}};var vA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(VE(this,t),r=BE(this,t,[e,n]),ok(r,{type:0},i),i.width===void 0||i.height===void 0){var a=gA[r.type];r.width=a.width,r.height=a.height}return r}return YE(t,e),WE(t)}(_A);vA.displayName=vA.prototype.displayName=`Item-SimpleItem`,vA.propTypes=ok({type:[`number`,`string`]},_A.propTypes),vA.storeTypes=ok({type:`value`},_A.storeTypes),vA.types=gA;var yA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);yA.displayName=yA.prototype.displayName=`Item-StairsItem`,yA.propTypes=ok({},_A.propTypes),yA.storeTypes=ok({},_A.storeTypes),yA.defaultSize={width:1e3,height:1e3};var bA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,{range:.8},i),r}return YE(t,e),WE(t)}(_A);bA.displayName=bA.prototype.displayName=`Item-CircularStairsItem`,bA.propTypes=ok({range:`number`},_A.propTypes),bA.storeTypes=ok({range:`value`},_A.storeTypes),bA.defaultSize={width:2e3,height:2e3};var xA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);xA.displayName=`Item-PillarItem`,xA.prototype.displayName=`Item-PillarItem`,xA.propTypes=ok({},_A.propTypes),xA.storeTypes=ok({},_A.storeTypes),xA.defaultSize={width:600,height:600};var SA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,{depth:300},i),r}return YE(t,e),WE(t,[{key:`redraw`,value:function(){var e=this,t={x:this.x,y:this.y},n=rD(this.canvas.areas.filter(function(t){return t.isPointInArea(e)}),1)[0];if(n){var r=n.innerPath(),i=this.width<this.height?`height`:`width`,a,o;i===`width`?(a=Math.cos(this.rotateZ/180*Math.PI)*this.width/2,o=-Math.sin(this.rotateZ/180*Math.PI)*this.width/2):(a=Math.sin(this.rotateZ/180*Math.PI)*this.height/2,o=Math.cos(this.rotateZ/180*Math.PI)*this.height/2);for(var s=[{x:t.x+a,y:t.y+o},{x:t.x-a,y:t.y-o}],c=[],l=0;l<r.length-1;l++){var u=[r[l],r[l+1]],d=Ck(s,u,!1);d&&bk(d,u)<.01&&c.push(d)}c.push(t),c.sort(function(e,t){var n=Math.abs(a)>.01?`x`:`y`;return e[n]-t[n]});var f=c.indexOf(t),p=c[f-1],m=c[f+1];if(p&&m){var h=kk([p,m]);t.x=h.x,t.y=h.y,this.set(i,$(p,m))}}this.set(`x`,t.x),this.set(`y`,t.y)}}])}(_A);SA.displayName=`Item-BeamItem`,SA.prototype.displayName=`Item-BeamItem`,SA.propTypes=ok({depth:`number`},_A.propTypes),SA.storeTypes=ok({depth:`value`},_A.storeTypes),SA.defaultSize={width:1500,height:240};var CA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);CA.displayName=`Item-FlueItem`,CA.prototype.displayName=`Item-FlueItem`,CA.propTypes=ok({},_A.propTypes),CA.storeTypes=ok({},_A.storeTypes),CA.defaultSize={width:450,height:300};var wA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);wA.displayName=`Item-DrainItem`,wA.prototype.displayName=`Item-DrainItem`,wA.propTypes=ok({},_A.propTypes),wA.storeTypes=ok({},_A.storeTypes),wA.defaultSize={width:110,height:110};var TA=function(e){function t(e,n){var r,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return VE(this,t),r=BE(this,t,[e,n]),ok(r,i),r}return YE(t,e),WE(t)}(_A);TA.displayName=`Item-HeatingPipeItem`,TA.prototype.displayName=`Item-HeatingPipeItem`,TA.propTypes=ok({},_A.propTypes),TA.storeTypes=ok({},_A.storeTypes),TA.defaultSize={width:216,height:100};var EA=function(e){function t(e,n,r){var i,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return VE(this,t),i=BE(this,t),i.x=e,i.y=n,i.locked=!1,i.fontSize=a.fontSize||300,i.content=r||``,i.rotate=a.rotate||0,i.scale=a.scale||1,i.color=a.color||`#000000`,i.borderType=a.borderType||0,i.notes=a.notes||``,i.offsetX=0,i.offsetY=0,i.offsetEnable=!1,i}return YE(t,e),WE(t)}(Yk);EA.displayName=EA.prototype.displayName=`Text`,EA.propTypes={x:`number`,y:`number`,locked:`boolean`,fontSize:`number`,rotate:`number`,scale:`number`,content:`string`,color:`string`,borderType:`number`,notes:`string`,offsetX:`number`,offsetY:`number`,offsetEnable:`boolean`},EA.storeTypes={x:`value`,y:`value`,locked:`value`,fontSize:`value`,content:`value`,rotate:`value`,scale:`value`,color:`value`,borderType:`value`,notes:`value`,offsetX:`value`,offsetY:`value`,offsetEnable:`value`};function DA(e,t){for(var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:e.length-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:kA;r>n;){if(r-n>600){var a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1);DA(e,t,Math.max(n,Math.floor(t-o*c/a+l)),Math.min(r,Math.floor(t+(a-o)*c/a+l)),i)}var u=e[t],d=n,f=r;for(OA(e,n,t),i(e[r],u)>0&&OA(e,n,r);d<f;){for(OA(e,d,f),d++,f--;i(e[d],u)<0;)d++;for(;i(e[f],u)>0;)f--}i(e[n],u)===0?OA(e,n,f):(f++,OA(e,f,r)),f<=t&&(n=f+1),t<=f&&(r=f-1)}}function OA(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function kA(e,t){return e<t?-1:+(e>t)}var AA=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:9;VE(this,e),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}return WE(e,[{key:`all`,value:function(){return this._all(this.data,[])}},{key:`search`,value:function(e){var t=this.data,n=[];if(!HA(e,t))return n;for(var r=this.toBBox,i=[];t;){for(var a=0;a<t.children.length;a++){var o=t.children[a],s=t.leaf?r(o):o;HA(e,s)&&(t.leaf?n.push(o):VA(e,s)?this._all(o,n):i.push(o))}t=i.pop()}return n}},{key:`collides`,value:function(e){var t=this.data;if(!HA(e,t))return!1;for(var n=[];t;){for(var r=0;r<t.children.length;r++){var i=t.children[r],a=t.leaf?this.toBBox(i):i;if(HA(e,a)){if(t.leaf||VA(e,a))return!0;n.push(i)}}t=n.pop()}return!1}},{key:`load`,value:function(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(var t=0;t<e.length;t++)this.insert(e[t]);return this}var n=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}return this}},{key:`insert`,value:function(e){return e&&this._insert(e,this.data.height-1),this}},{key:`clear`,value:function(){return this.data=UA([]),this}},{key:`remove`,value:function(e,t){if(!e)return this;for(var n=this.data,r=this.toBBox(e),i=[],a=[],o,s,c;n||i.length;){if(n||(n=i.pop(),s=i[i.length-1],o=a.pop(),c=!0),n.leaf){var l=jA(e,n.children,t);if(l!==-1)return n.children.splice(l,1),i.push(n),this._condense(i),this}!c&&!n.leaf&&VA(n,r)?(i.push(n),a.push(o),o=0,s=n,n=n.children[0]):s?(o++,n=s.children[o],c=!1):n=null}return this}},{key:`toBBox`,value:function(e){return e}},{key:`compareMinX`,value:function(e,t){return e.minX-t.minX}},{key:`compareMinY`,value:function(e,t){return e.minY-t.minY}},{key:`toJSON`,value:function(){return this.data}},{key:`fromJSON`,value:function(e){return this.data=e,this}},{key:`_all`,value:function(e,t){for(var n=[];e;)e.leaf?t.push.apply(t,oD(e.children)):n.push.apply(n,oD(e.children)),e=n.pop();return t}},{key:`_build`,value:function(e,t,n,r){var i=n-t+1,a=this._maxEntries,o;if(i<=a)return o=UA(e.slice(t,n+1)),MA(o,this.toBBox),o;r||(r=Math.ceil(Math.log(i)/Math.log(a)),a=Math.ceil(i/Math.pow(a,r-1))),o=UA([]),o.leaf=!1,o.height=r;var s=Math.ceil(i/a),c=s*Math.ceil(Math.sqrt(a));WA(e,t,n,c,this.compareMinX);for(var l=t;l<=n;l+=c){var u=Math.min(l+c-1,n);WA(e,l,u,s,this.compareMinY);for(var d=l;d<=u;d+=s){var f=Math.min(d+s-1,u);o.children.push(this._build(e,d,f,r-1))}}return MA(o,this.toBBox),o}},{key:`_chooseSubtree`,value:function(e,t,n,r){for(;r.push(t),!(t.leaf||r.length-1===n);){for(var i=1/0,a=1/0,o=void 0,s=0;s<t.children.length;s++){var c=t.children[s],l=LA(c),u=zA(e,c)-l;u<a?(a=u,i=l<i?l:i,o=c):u===a&&l<i&&(i=l,o=c)}t=o||t.children[0]}return t}},{key:`_insert`,value:function(e,t,n){var r=n?e:this.toBBox(e),i=[],a=this._chooseSubtree(r,this.data,t,i);for(a.children.push(e),PA(a,r);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(r,i,t)}},{key:`_split`,value:function(e,t){var n=e[t],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var a=this._chooseSplitIndex(n,i,r),o=UA(n.children.splice(a,n.children.length-a));o.height=n.height,o.leaf=n.leaf,MA(n,this.toBBox),MA(o,this.toBBox),t?e[t-1].children.push(o):this._splitRoot(n,o)}},{key:`_splitRoot`,value:function(e,t){this.data=UA([e,t]),this.data.height=e.height+1,this.data.leaf=!1,MA(this.data,this.toBBox)}},{key:`_chooseSplitIndex`,value:function(e,t,n){for(var r,i=1/0,a=1/0,o=t;o<=n-t;o++){var s=NA(e,0,o,this.toBBox),c=NA(e,o,n,this.toBBox),l=BA(s,c),u=LA(s)+LA(c);l<i?(i=l,r=o,a=u<a?u:a):l===i&&u<a&&(a=u,r=o)}return r||n-t}},{key:`_chooseSplitAxis`,value:function(e,t,n){var r=e.leaf?this.compareMinX:FA,i=e.leaf?this.compareMinY:IA;this._allDistMargin(e,t,n,r)<this._allDistMargin(e,t,n,i)&&e.children.sort(r)}},{key:`_allDistMargin`,value:function(e,t,n,r){e.children.sort(r);for(var i=this.toBBox,a=NA(e,0,t,i),o=NA(e,n-t,n,i),s=RA(a)+RA(o),c=t;c<n-t;c++){var l=e.children[c];PA(a,e.leaf?i(l):l),s+=RA(a)}for(var u=n-t-1;u>=t;u--){var d=e.children[u];PA(o,e.leaf?i(d):d),s+=RA(o)}return s}},{key:`_adjustParentBBoxes`,value:function(e,t,n){for(var r=n;r>=0;r--)PA(t[r],e)}},{key:`_condense`,value:function(e){for(var t=e.length-1,n;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children,n.splice(n.indexOf(e[t]),1)):this.clear():MA(e[t],this.toBBox)}}])}();function jA(e,t,n){if(!n)return t.indexOf(e);for(var r=0;r<t.length;r++)if(n(e,t[r]))return r;return-1}function MA(e,t){NA(e,0,e.children.length,t,e)}function NA(e,t,n,r,i){i||(i=UA(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var a=t;a<n;a++){var o=e.children[a];PA(i,e.leaf?r(o):o)}return i}function PA(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function FA(e,t){return e.minX-t.minX}function IA(e,t){return e.minY-t.minY}function LA(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function RA(e){return e.maxX-e.minX+(e.maxY-e.minY)}function zA(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function BA(e,t){var n=Math.max(e.minX,t.minX),r=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),a=Math.min(e.maxY,t.maxY);return Math.max(0,i-n)*Math.max(0,a-r)}function VA(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function HA(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function UA(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function WA(e,t,n,r,i){for(var a=[t,n];a.length;)if(n=a.pop(),t=a.pop(),!(n-t<=r)){var o=t+Math.ceil((n-t)/r/2)*r;DA(e,o,t,n,i),a.push(t,o,o,n)}}function GA(e){return{minX:Math.min(e.points[0].x,e.points[1].x),minY:Math.min(e.points[0].y,e.points[1].y),maxX:Math.max(e.points[0].x,e.points[1].x),maxY:Math.max(e.points[0].y,e.points[1].y),line:e}}function KA(e,t){return e===t.length-1?0:e+1}function qA(e,t){var n=t.points;return hk(e,n[0])?n[1]:n[0]}var JA={_getArea:function(){var e=[],t={},n={},r={},i=this.points.map(function(e){return{x:e.x,y:e.y,id:e.id}});this.points.forEach(function(e,t){var n=i[t];n.lines=e.lines.map(function(e){return{id:e.id,type:e.type,points:e.points.map(function(e){return i.find(function(t){return t.id===e.id})})}})});for(var a=rD(i.reduce(function(e,t){return t.lines=t.lines.filter(function(e){return!(e.type===7||e.type===8)}),e[+(t.lines.length<2)].push(t),e},[[],[]]),2),o=a[0],s=a[1],c=function(){var e=s.pop(),t=e.lines[0];if(!t)return 0;var n=qA(e,t),r=o.findIndex(function(e){return e.id===n.id});if(r===-1)return 0;var i=n.lines.findIndex(function(t){return!!t.points.find(function(t){return t.id===e.id})});n.lines.splice(i,1),n.lines.length<2&&(o.splice(r,1),s.push(n))};s.length>0;)c();o.forEach(function(e){r[e.id]=[],e.lines.length&&(t[e.id]=[],n[e.id]=[],e.lines.forEach(function(r){var i=qA(e,r);t[e.id].push(i.id),n[e.id].push(i.id)}))});var l=[],u=null,d=null;function f(){if(l.length>1)u=l[l.length-2],d=l[l.length-1];else{if(l.length===0){if(!t||!Object.keys(t).length)return!1;l.push(u=Object.keys(t)[0])}if(l.length===1){if(u=l[l.length-1],!t[u]||!t[u].length)return l.pop(),f();l.push(d=t[u].shift()),t[u].length||delete t[u]}}return!0}for(;Object.keys(t).length&&f();){if(!t[d]){l.pop();continue}var p=n[d].indexOf(u),m=KA(p,n[d]);if(p===m){l.pop();continue}var h=n[d][m],g=t[d].indexOf(h);if(g===-1){n[d].splice(m,1),n[d].length||l.pop();continue}var _=t[d].splice(g,1)[0];t[d].length||delete t[d],_===u?t[d].length?(n[d].splice(m,1),n[d].length||l.pop()):l.pop():l.indexOf(_)===-1?l.push(_):(e.push(l.slice(l.indexOf(_))),l.splice(l.indexOf(_)+1))}return e},_check:function(){this.checkLine(),this.checkPoint(),this.checkArea(),this.checkLineItem(),this.checkProperty()},_mergeLineWhenCheck:function(){for(var e=this,t=oD(this.points),n=!1,r=function(){var r=t[i];if(r.lines.length!==2||r.lines[0].type!==r.lines[1].type||r.lines[0].curve||r.lines[1].curve||r.lines[0].thicknessComputed!==r.lines[1].thicknessComputed)return 0;var a=rD(r.lines.map(function(e){return _k.apply(void 0,oD(e.points))}),2),o=a[0],s=a[1];if(gk(o,s)){var c=rD(r.lines.map(function(e){return e.points.filter(function(e){return e.id!==r.id})[0]}),2),l=c[0],u=c[1];if(l.x>u.x||l.y<u.y){var d=[u,l];l=d[0],u=d[1]}var f=e.newLineWithPoints(l,u),p=rD(r.lines,2),m=p[0],h=p[1];m.items.map(function(e){var t=e.startIndex;e.set(`line`,f),hk(m.points[t],[l,u][t])||e.set(`start`,e.start+$.apply(void 0,oD(h.points))),f.set(`items`,f.items.concat(e))}),h.items.map(function(e){var t=e.startIndex;e.set(`line`,f),hk(h.points[t],[l,u][t])||e.set(`start`,e.start+$.apply(void 0,oD(m.points))),f.set(`items`,f.items.concat(e))}),r.lines[0].thickness&&f.set(`thickness`,r.lines[0].thickness),m.set(`items`,[]),h.set(`items`,[]),e.removePoint(r),n=!0}},i=0;i<t.length;i++)r();return this._check(),n},check:function(){var e=this;if(this.emit(`beforeCheck`),this.lines.forEach(function(t){e.lineItems.forEach(function(n){n.line.id===t.id&&t.items.every(function(e){return e.id!==n.id})&&t.items.push(e.getAnyById(n.id))})}),this.mergeLineWhenCheck)for(var t=0;this._mergeLineWhenCheck()&&!(t++>5););else this._check();this.emit(`check`)},checkPoint:function(){if(this.points.length<=1){this.removeAllModels();return}for(var e=[],t=0,n=this.points.length;t<n;t++){var r=this.points[t],i=!1;if(r.lines.length===0){this.removePoint(r),t--,n--;continue}var a=GE(e),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(hk(s,r)){var c=GE(r.lines),l;try{for(c.s();!(l=c.n()).done;){var u=l.value,d=u.points;d[d[0]===r?0:1]=s,d[0]===d[1]?(this.removeLine(u),s.lines.length===0&&(sk(s,this.points),t--,n--,i=!0)):(u.set(`points`,d),s.set(`lines`,s.lines.concat(u)))}}catch(e){c.e(e)}finally{c.f()}sk(r,this.points),t--,n--,i=!0;break}}}catch(e){a.e(e)}finally{a.f()}i||e.push(r)}e.length=0},checkLine:function(){var e=this;if(this.lines.forEach(function(t){if(t.points[0]===t.points[1]){e.removeLine(t);return}if(t.curve){var n=GE(t.items),r;try{for(n.s();!(r=n.n()).done;){var i=r.value;e.removeLineItem(i)}}catch(e){n.e(e)}finally{n.f()}t.set(`items`,[])}}),this.lines.length>1){var t=function(e){var t=GA(e);i.set(e,t),r.insert(t)},n=function(e){var t=i.get(e);t&&(r.remove(t),i.delete(e))},r=new AA,i=new WeakMap;this.lines.forEach(function(e){return t(e)});for(var a=function(r,i){for(var a=r.points,o=i.points,s=0,c=[r,i];s<c.length;s++){var l=c[s];if(hk(l.points[0],l.points[1]))return e.removeLine(l),n(l),!1}var u=[hk(a[0],o[0])&&hk(a[1],o[1]),hk(a[0],o[1])&&hk(a[1],o[0])];if(u[0]||u[1]){var d=GE(i.items),f;try{for(d.s();!(f=d.n()).done;){var p=f.value;u[0]===!1&&p.set(`startIndex`,+(p.startIndex===0)),p.set(`line`,r)}}catch(e){d.e(e)}finally{d.f()}return e.removeLine(i),n(i),!1}var m=_k(a[0],a[1]),h=_k(o[0],o[1]),g=hk(a[0],o[0])?_k(a[1],o[0]):_k(a[0],o[0]),_=Math.abs(Math.atan(m))<Math.PI/4?`x`:`y`;if(gk(m,h)&&gk(h,g)&&((a[0][_]-o[0][_])*(a[1][_]-o[0][_])<0||(a[0][_]-o[1][_])*(a[1][_]-o[1][_])<0||(o[0][_]-a[0][_])*(o[1][_]-a[0][_])<0||(o[0][_]-a[1][_])*(o[1][_]-a[1][_])<0)){var v=a.concat(o).sort(function(e,t){return e[_]-t[_]}),y=[].concat(r.items,i.items);y=y.map(function(e){return{startPointAt:e.startPointAt(),endPointAt:e.endPointAt(),lineItem:e,received:!1}});var b=[];return v.forEach(function(n,a){var o=v[a+1];if(o){var s=e.newLine(n,o);t(s);for(var c=function(){var e=u[l],t={type:e.type,thickness:e.thickness,height:e.height,curve:e.curve,isLoadBearing:e.isLoadBearing,isSplitArea:e.isSplitArea};if(s.points.every(function(t){return Ek(t,e.points)}))return Object.assign(s,t),1},l=0,u=[i,r];l<u.length&&!c();l++);b.push(s)}}),e.removeLine(i),e.removeLine(r),n(i),n(r),y.forEach(function(t){var n=t.startPointAt,r=t.endPointAt,i=t.lineItem;b.forEach(function(a){if(!t.received&&a.isPointOnLine(n)&&a.isPointOnLine(r)){var o=rD(a.points,2),s=o[0],c=o[1],l=s.distanceFromPoint(n);s.distanceFromPoint(r)>l?(i.set(`startIndex`,0),i.set(`start`,l)):(i.set(`startIndex`,1),i.set(`start`,c.distanceFromPoint(n))),a.set(`items`,a.items.concat(i)),i.set(`line`,a),e.lineItems.push(i),t.received=!0}})}),!1}var x=Ck(a,o,!0),S=x&&(hk(x,a[0])||hk(x,a[1]))&&(hk(x,o[0])||hk(x,o[1]));if(x&&!S){var C=[].concat(r.items,i.items);C=C.map(function(e){return{startPointAt:e.startPointAt(),endPointAt:e.endPointAt(),lineItem:e,received:!1}});for(var ee=[],te=0,ne=[r,i];te<ne.length;te++){var w=ne[te];e.newPoint(x.x,x.y);var re={type:w.type,thickness:w.thickness,height:w.height,curve:w.curve,isLoadBearing:w.isLoadBearing,isSplitArea:w.isSplitArea};hk(x,w.points[0])||hk(x,w.points[1])||(ee.push(Object.assign(e.newLine(x,w.points[0]),re),Object.assign(e.newLine(x,w.points[1]),re)),e.removeLine(w),n(w))}return ee.forEach(function(e){return t(e)}),C.forEach(function(t){var n=t.startPointAt,r=t.endPointAt,i=t.lineItem;ee.forEach(function(a){if(!t.received&&a.isPointOnLine(n)&&a.isPointOnLine(r)){var o=rD(a.points,2),s=o[0],c=o[1],l=s.distanceFromPoint(n);s.distanceFromPoint(r)>l?(i.set(`startIndex`,0),i.set(`start`,l)):(i.set(`startIndex`,1),i.set(`start`,c.distanceFromPoint(n))),a.set(`items`,a.items.concat(i)),i.set(`line`,a),e.lineItems.push(i),t.received=!0}})}),!1}},o=!1,s=new Set,c=0;!o&&c<1e3;){o=!0;var l=GE(this.lines),u;try{outer:for(l.s();!(u=l.n()).done;){var d=u.value;if(!s.has(d.id)){var f=GE(r.search(i.get(d)).map(function(e){return e.line})),p;try{for(f.s();!(p=f.n()).done;){var m=p.value;if(m!==d&&!s.has(d.id)&&a(d,m)===!1){o=!1,c++;break outer}}}catch(e){f.e(e)}finally{f.f()}s.add(d.id)}}}catch(e){l.e(e)}finally{l.f()}}}this.lines.forEach(function(e){var t=e.points,n=!1;Math.abs(t[0].x-t[1].x)>.01?t[0].x>t[1].x&&(e.points=[t[1],t[0]],n=!0):t[0].y<t[1].y&&(e.points=[t[1],t[0]],n=!0),n&&(e.align===1?e.align=2:e.align===2&&(e.align=1),e.curve=-e.curve,e.items.forEach(function(t){t.start=e.length()-t.start-t.length,t.rotateX=!t.rotateX,t.rotateY=!t.rotateY}))})},checkArea:function(){var e=this;if(this.points.length!==0){this.points.forEach(function(e){return e.sortLinesClickWise()});var t;try{t=this._getArea()}catch(e){console.log(e),t=[]}var n=[];t.forEach(function(t){var r=t.map(function(t){return e.getPointById(t)});Pk(r)&&n.push(r)});var r=this.areas.slice();return this.areas.length=0,r.forEach(function(t,i){var a={};t.points.forEach(function(e){return a[e.id]=!0});var o=rD(uk(n,function(e){return e.filter(function(e){return a[e.id]===!0}).length}),2),s=o[0];o[1]>2&&(t.set(`points`,s),e.areas.push(t),sk(s,n),r[i]=void 0)}),n.forEach(function(t){return e.newArea(t)}),this.sortAreas(),r.forEach(function(e){e&&(e.set(`points`,[]),delete e.canvas)}),t}},checkLineItem:function(){var e=this;this.lineItems.slice().forEach(function(t){t.line||e.removeLineItem(t)}),this.lines.forEach(function(e){e.items.forEach(function(t){return t.set(`line`,e)})});var t=[];this.lineItems.forEach(function(e){var n=e.line.points[e.startIndex],r=e.line,i=rD(e.limitePointRange(),2),a=i[0],o=i[1],s=$(a,o);if(Math.round(s)<Math.round(r.getThickness())){t.push(e);return}$(o,n)<e.start+e.length&&(s>=e.length?e.set(`start`,$(o,n)-e.length):(e.set(`start`,$(n,a)),e.set(`length`,s)))}),t.forEach(function(t){e.removeLineItem(t)})},checkProperty:function(){var e=this,t;try{t=this._getArea()}catch(e){t=[]}this.lines.forEach(function(e){e.set(`edgeComputed`,!1),e.set(`thicknessComputed`,120),e.set(`offsetComputed`,0)}),t.forEach(function(t){var n=t.map(function(t){return e.getPointById(t)});Pk(n)||n.forEach(function(t,r){var i=n[r+1]||n[0],a=e.getLineByPoints(t,i);if(a){a.set(`edgeComputed`,!0),a.set(`thicknessComputed`,240);var o=a.points[1],s=a.points[0];t===o&&i===s?a.set(`offsetComputed`,a.thicknessComputed/2-60):a.set(`offsetComputed`,-a.thicknessComputed/2+60)}})}),this.lines.map(function(e){e.points,e.thickness!==null&&e.set(`thicknessComputed`,e.thickness),e.offset!==void 0&&e.offset!==null&&e.set(`offsetComputed`,e.offset)})}},YA=[`points`,`lines`,`areas`,`lineItems`,`items`,`texts`],XA={Point:Qk,Line:$k,Area:iA,LineItem:hA,"Item-SimpleItem":vA,"Item-StairsItem":yA,"Item-CircularStairsItem":bA,"Item-PillarItem":xA,"Item-BeamItem":SA,"Item-FlueItem":CA,"Item-DrainItem":wA,"Item-HeatingPipeItem":TA,Text:EA};function ZA(e,t){return ik(e.constructor.storeTypes,function(n,r){if(nk(n)===`function`)return t.skipCalculation?void 0:n(e);switch(n){case`value`:return rk(e[r]);case`idArray`:return e[r].map(function(e){return e.id});case`id`:return e[r].id;default:return}})}function QA(e,t,n){ik(e.constructor.storeTypes,function(r,i){var a=function(t){var n=e.constructor.propTypes[i];return n?[].concat(n).some(function(e){return nk(t)===e}):!0},o;switch(r){case`value`:o=t[i];break;case`idArray`:o=t[i].map(function(e){return n[e]}).filter(function(e){return!!e});break;case`id`:o=n[t[i]];break;default:return}a(o)&&(e[i]=o),e.check&&e.check(t)})}var $A={save:function(e){var t=this,n={};return YA.forEach(function(r){n[r]=t[r].map(function(n){return ok(ZA(n,e||t.constructor.saveOptions),{displayName:n.constructor.displayName,id:n.id})})}),n.info=ok({},this.info),n.templates=this.templates,n},load:function(e){var t=this;this.removeAllModels(),this.sizeCache={},this.areaRelationCache={},this.info=ok({},e.info),this.info.height=this.info.height||0,this.info.subheight=this.info.subheight||0,this.info.description=this.info.description||``,this.info.tags=this.info.tags||[],this.info.ruleType=this.info.ruleType||0,this.templates=e.templates;var n={};YA.forEach(function(r){t[r]=(e[r]||[]).filter(function(e){var t=e.displayName;return Object.keys(XA).includes(t)}).map(function(e){var r=e.id,i=e.displayName;return ok(n[r]=new XA[i],{id:r,canvas:t})})}),YA.forEach(function(t){(e[t]||[]).filter(function(e){var t=e.displayName;return Object.keys(XA).includes(t)}).forEach(function(e){QA(n[e.id],e,n)})}),this.sortAreas(),this.emit(`canvas_loaded`)},copy:function(e){e=JSON.parse(JSON.stringify(e));var t={},n=function(e){return t[e]=t[e]||lk()};return YA.forEach(function(t){e[t].forEach(function(e){var t=XA[e.displayName].storeTypes;e.id=n(e.id),ik(t,function(t,r){switch(t){case`idArray`:e[r]=e[r].map(function(e){return n(e)});break;case`id`:e[r]=n(e[r]);break}})})}),e}},ej=`0.0.3`,tj=function(e){function t(){var e;return VE(this,t),e=BE(this,t),e.app={getEntrenceLineItemTowardsRadAndNorthRad:function(){return[]}},e.info={},e.templates={},e.points=[],e.lines=[],e.areas=[],e.lineItems=[],e.items=[],e.texts=[],e.tolerance=300,e.vrData={},e.property={},e.sizeCache={},e.areaRelationCache={},e}return YE(t,e),WE(t,[{key:`setInfo`,value:function(e,t){this.info[e]=t,this.emit(`canvasUpdateInfo`)}},{key:`getAnyById`,value:function(e){return this.getPointById(e)||this.getLineById(e)||this.getAreaById(e)||this.getLineItemById(e)||this.getItemById(e)||this.getTextById(e)}},{key:`newPoint`,value:function(e,t){var n=new Qk(e,t);return this.points.push(n),n.canvas=this,n}},{key:`removePoint`,value:function(e){var t=this;e.lines.forEach(function(e){return t.removeLine(e)}),e.set(`lines`,[]),sk(e,this.points),delete e.canvas}},{key:`getPointById`,value:function(e){var t=GE(this.points),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newLine`,value:function(e,t){var n=this.newPoint(e.x,e.y),r=this.newPoint(t.x,t.y);return this.newLineWithPoints(n,r)}},{key:`newLineWithPoints`,value:function(e,t){var n=new $k(e,t);return e.lines.push(n),t.lines.push(n),this.lines.push(n),n.canvas=this,n}},{key:`removeLine`,value:function(e){var t=this;e.items.forEach(function(e){t.removeLineItem(e)}),e.points[0].removeLine(e),e.points[1].removeLine(e),e.set(`points`,[]),sk(e,this.lines),delete e.canvas}},{key:`getLineById`,value:function(e){var t=GE(this.lines),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`getLineByPoints`,value:function(e,t){return this.lines.find(function(n){return n.points[0]===e&&n.points[1]===t||n.points[1]===e&&n.points[0]===t})}},{key:`getLineByPointIds`,value:function(e,t){return this.lines.find(function(n){return n.points[0].id===e&&n.points[1].id===t||n.points[1].id===e&&n.points[0].id===t})}},{key:`newLineItem`,value:function(e,t,n,r,i,a,o){var s=new hA(e,t,n,r,i,a,o);return e.items.push(s),this.lineItems.push(s),s.canvas=this,s}},{key:`removeLineItem`,value:function(e){var t=e.line;t&&t.set(`items`,t.items.filter(function(t){return t!==e})),e.set(`line`,null),sk(e,this.lineItems),delete e.canvas}},{key:`getLineItemById`,value:function(e){var t=GE(this.lineItems),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newItem`,value:function(e,t,n,r){var i;switch(n){case`Item-StairsItem`:i=new yA(e,t,r);break;case`Item-CircularStairsItem`:i=new bA(e,t,r);break;case`Item-PillarItem`:i=new xA(e,t,r);break;case`Item-BeamItem`:i=new SA(e,t,r);break;case`Item-FlueItem`:i=new CA(e,t,r);break;case`Item-DrainItem`:i=new wA(e,t,r);break;case`Item-HeatingPipeItem`:i=new TA(e,t,r);break;default:i=new vA(e,t,r);break}return this.items.push(i),i.canvas=this,i}},{key:`removeItem`,value:function(e){sk(e,this.items),delete e.canvas}},{key:`getItemById`,value:function(e){var t=GE(this.items),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newArea`,value:function(e){var t=new iA(e);return this.property.fontScale&&(t.labelScale=this.property.fontScale),t.canvas=this,this.areas.push(t),t}},{key:`getAreaById`,value:function(e){var t=GE(this.areas),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`newText`,value:function(e,t,n,r){var i=new EA(e,t,n,r);return this.property.fontScale&&(i.scale=this.property.fontScale),this.texts.push(i),i.canvas=this,i}},{key:`removeText`,value:function(e){sk(e,this.texts),delete e.canvas}},{key:`getTextById`,value:function(e){var t=GE(this.texts),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(r.id===e)return r}}catch(e){t.e(e)}finally{t.f()}}},{key:`sortAreas`,value:function(){var e=this.areas.reduce(function(e,t){var n=t.computeBounding(),r=n.width,i=n.height;return e[t.id]=r*i,e},{});this.areas.sort(function(t,n){return e[n.id]-e[t.id]})}},{key:`getAreasSize`,value:function(e){var t=this.lines.reduce(function(e,t){return e+Math.abs(t.curve)},0),n=0,r=GE(this.items),i;try{for(r.s();!(i=r.n()).done;){var a=i.value;if(a.displayName===`Item-PillarItem`){var o=GE(a.getPointAt()),s;try{for(o.s();!(s=o.n()).done;){var c=s.value;n=n*31+Math.round(c.x)|0,n=n*17+Math.round(c.y)|0}}catch(e){o.e(e)}finally{o.f()}}}}catch(e){r.e(e)}finally{r.f()}var l=t*65537+n,u={},d=GE(this.areas),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=Lk(p.points)*31+l|0,h=p.id+String(Number(e)),g=void 0,_=this.sizeCache[h];_&&_.hash===m&&(g=_.size),g||(g=p.size(e,!0),this.sizeCache[h]={size:g,hash:m}),u[p.id]={originSize:g,cutSize:g}}}catch(e){d.e(e)}finally{d.f()}for(var v=this.areas.length-1;v>0;v--)for(var y=this.areas[v],b=v-1;b>=0;b--){var x=this.areas[b];if(u[x.id].cutSize>u[y.id].originSize){var S=x.id+`-`+y.id,C=this.areaRelationCache[S];if((!C||C.outsidePointsHash!==Lk(x.points)||C.insidePointsHash!==Lk(y.points))&&(C={outsidePointsHash:Lk(x.points),insidePointsHash:Lk(y.points),inArea:x.isAreaInArea(y)},this.areaRelationCache[S]=C),C.inArea){u[x.id].cutSize-=u[y.id].originSize;break}}}return u}},{key:`removeAllModels`,value:function(){this.points.forEach(function(e){e.lines=[],delete e.canvas}),this.lines.forEach(function(e){e.points=[],e.items=[],delete e.canvas}),this.areas.forEach(function(e){e.points=[],delete e.canvas}),this.lineItems.forEach(function(e){e.line=null,delete e.canvas}),this.points.length=this.lines.length=this.areas.length=this.lineItems.length=this.texts.length=0}},{key:`closestPointAtCrossLine`,value:function(e,t,n){var r=bk(e,t);if(!(r<=this.tolerance)){var i=t.find(function(t){return hk(e,n)});if(i){var a=xk(r,[n,i]),o=[a[0][0],a[1][0]];if(!(bk(e,o)>this.tolerance))return vk(e,o)}}}},{key:`closestPointAtPointMode`,value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:$O,r=isNaN(t.tolerance)?this.tolerance:t.tolerance;typeof t.toleranceByZoom==`function`&&(r=t.toleranceByZoom(r));var i=[],a=[];this.points.forEach(function(e){t.exceptPoint&&t.exceptPoint.some(function(t){return t===e})||i.push({x:e.x,y:e.y})}),this.lines.forEach(function(e){t.exceptLine&&t.exceptLine.some(function(t){return t===e})||e.points.length<2||a.push([{x:e.points[0].x,y:e.points[0].y},{x:e.points[1].x,y:e.points[1].y}])}),t.points&&(i=i.concat(t.points)),t.lines&&(a=a.concat(t.lines)),t.useInnerLine&&t.currentArea&&(a=Fk(t.currentArea.innerPath(!1,!1)));var o=rD(dk(i,function(t){return $(e,t)}),2),s=o[0];if(o[1]<r)return n(`point`,s),s;var c=rD(dk(a,function(t){return bk(e,t)}),2),l=c[0];if(c[1]<r){n(`line`,l);var u=vk(e,l),d=Math.abs(_k.apply(void 0,oD(l)));if(gk(d,0)){var f=rD(dk(i,function(t){return Math.abs(e.x-t.x)}),2),p=f[0];f[1]<r&&(u.x=p.x)}else if(gk(d,1/0)){var m=rD(dk(i,function(t){return Math.abs(e.y-t.y)}),2),h=m[0];m[1]<r&&(u.y=h.y)}return u}if(!t.noExtension&&t.checkVertical&&t.startPoint){var g=this.points.find(function(e){return hk(e,t.startPoint)}),_=this.lines.reduce(function(e,t){var n=t.points.findIndex(function(e){return g===e});return n!==-1&&(e.push(t.points),e.push([t.points[n],Ok(t.points[n^1],t.points[n],Math.PI/2)])),e},[]);if(_.length>0){var v=_.reduce(function(t,n){var r=yk(e,n),i=$(r,e);return i<t.dis?{point:r,dis:i}:t},{point:e,dis:1/0});if(v.dis<r)return n(`vertical`,[t.startPoint,v.point]),v.point}}return ok({noMath:!0},ik(e,function(e,a){var o=rD(dk(i,function(t){return Math.abs(e-t[a])}),2),s=o[0],c=o[1];return!t.noExtension&&c<r?(n(`line-`+a,s),s[a]):Math.round(e)}))}},{key:`moveTo`,value:function(e,t){var n=kk(this.points),r=e-n.x,i=t-n.y;this.points.forEach(function(e){e.set(`x`,e.x+r),e.set(`y`,e.y+i)}),this.items.forEach(function(e){e.set(`x`,e.x+r),e.set(`y`,e.y+i)})}},{key:`moveBy`,value:function(e,t){this.points.forEach(function(n){n.set(`x`,n.x+e),n.set(`y`,n.y+t)}),this.items.forEach(function(n){n.set(`x`,n.x+e),n.set(`y`,n.y+t)})}},{key:`rotate`,value:function(e){if(this.points.length!==0){var t=kk(this.points),n=function(e){return Math.round(e*1e3)/1e3},r=function(n,r){var i={x:r.x+n.x,y:r.y+n.y},a=Ok(r,t,e),o=Ok(i,t,e);return{x:o.x-a.x,y:o.y-a.y}},i={},a={};this.areas.forEach(function(e){var t=kk(e.points);i[e.id]=r({x:e.labelX,y:e.labelY},t),e.subType&&(a[e.id]=r({x:e.subLabelX,y:e.subLabelY},t))}),this.points.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y;r.set(`x`,n(a)),r.set(`y`,n(o))}),this.items.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y;r.set(`x`,n(a)),r.set(`y`,n(o)),r.set(`rotateZ`,r.rotateZ+=e/Math.PI*180)}),this.areas.forEach(function(e){e.set(`labelX`,n(i[e.id].x)),e.set(`labelY`,n(i[e.id].y)),a[e.id]&&(e.set(`subLabelX`,n(a[e.id].x)),e.set(`subLabelY`,n(a[e.id].y)))}),this.texts.forEach(function(r){var i=Ok(r,t,e),a=i.x,o=i.y,s=Ok({x:r.offsetX,y:r.offsetY},{x:0,y:0},e),c=s.x,l=s.y;r.set(`x`,n(a)),r.set(`y`,n(o)),r.set(`offsetX`,n(c)),r.set(`offsetY`,n(l))}),this.check()}}},{key:`mirrorX`,value:function(){var e=kk(this.points);this.points.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2)}),this.lines.forEach(function(e){switch(e.align){case 1:e.set(`align`,2);break;case 2:e.set(`align`,1);break}}),this.items.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2),t.set(`rotateX`,!t.rotateX),t.set(`rotateZ`,-t.rotateZ)}),this.lineItems.forEach(function(e){e.set(`rotateX`,!e.rotateX)}),this.areas.forEach(function(e){e.set(`labelY`,-e.labelY)}),this.texts.forEach(function(t){t.set(`y`,t.y+(e.y-t.y)*2),t.set(`offsetY`,-t.offsetY)}),this.check()}},{key:`mirrorY`,value:function(){var e=kk(this.points);this.points.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2)}),this.lines.forEach(function(e){switch(e.align){case 1:e.set(`align`,2);break;case 2:e.set(`align`,1);break}}),this.items.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2),t.set(`rotateY`,!t.rotateY),t.set(`rotateZ`,-t.rotateZ)}),this.lineItems.forEach(function(e){e.set(`rotateX`,!e.rotateX)}),this.areas.forEach(function(e){e.set(`labelX`,-e.labelX)}),this.texts.forEach(function(t){t.set(`x`,t.x+(e.x-t.x)*2),t.set(`offsetX`,-t.offsetX)}),this.check()}},{key:`recommendRules`,value:function(){var e=kk(this.points),t=GE(this.points),n;try{for(t.s();!(n=t.n()).done;){var r=n.value;if(!r.lines.some(function(e){return e.edgeComputed})){r.set(`rules`,`0000`);continue}var i=[0,0,0,0];r.x>e.x?i[1]=1:i[3]=1,r.y>e.y?i[0]=1:i[2]=1,r.set(`rules`,i.join(``))}}catch(e){t.e(e)}finally{t.f()}}},{key:`clean`,value:function(){var e=this;this.points.slice().forEach(function(t){return e.removePoint(t)}),this.items.length=0,this.check()}}])}(Jk);tj.displayName=tj.prototype.displayName=`Canvas`,ok(tj.prototype,JA,$A),tj.defaultFloorplan=function(){return JSON.parse(JSON.stringify({info:{height:0,subheight:0,description:``,tags:[],ruleType:1,itemSortRule:0},templates:{areaLabelName:`{{ customizedName || name }}{{ nameIndex }}`},points:[],lines:[],lineItems:[],items:[],areas:[]}))},tj.defaultMetaData={version:ej,doctorStrangeVersion:dD,structure:`101200000001`,floorplans:[],vrData:{origin:{left:37500,top:37500}},canvasSize:{width:75e3,height:75e3},property:{fontScale:1,sourceType:0}},tj.structures=[{text:`平层`,value:`101200000001`},{text:`跃层`,value:`101200000002`},{text:`复式`,value:`101200000003`},{text:`错层`,value:`101200000004`},{text:`Loft`,value:`101200000005`}],tj.tags=[{text:`阁楼`,value:`1`},{text:`斜角楼顶`,value:`2`},{text:`顶层露台`,value:`3`},{text:`地下室`,value:`4`}],tj.saveOptions={skipCalculation:!1};var nj=class{constructor(e,t,n,r){this.x=e,this.y=t,this.h=n,this.d=ij(e,t,r),this.max=this.d+this.h*Math.SQRT2}};function rj(e,t=1){let n=0,r=0,i=0,a=0;for(let t=0;t<e[0].length;t++){let o=e[0][t];(!t||o[0]<n)&&(n=o[0]),(!t||o[1]<r)&&(r=o[1]),(!t||o[0]>i)&&(i=o[0]),(!t||o[1]>a)&&(a=o[1])}let o=i-n,s=a-r,c=Math.min(o,s),l=c/2;if(c===0)return[n,r];let u=[];for(let t=n;t<i;t+=c)for(let n=r;n<a;n+=c)u.push(new nj(t+l,n+l,l,e));let d=aj(e),f=new nj(n+o/2,r+s/2,0,e);for(f.d>d.d&&(d=f);u.length;){u.sort((e,t)=>e.max-t.max);let n=u.pop();n.d>d.d&&(d=n),!(n.max-d.d<=t)&&(l=n.h/2,u.push(new nj(n.x-l,n.y-l,l,e)),u.push(new nj(n.x+l,n.y-l,l,e)),u.push(new nj(n.x-l,n.y+l,l,e)),u.push(new nj(n.x+l,n.y+l,l,e)))}return[d.x,d.y]}function ij(e,t,n){let r=!1,i=1/0;for(let a=0;a<n.length;a++){let o=n[a];for(let n=0,a=o.length,s=a-1;n<a;s=n++){let a=o[n],c=o[s];a[1]>t!=c[1]>t&&e<(c[0]-a[0])*(t-a[1])/(c[1]-a[1])+a[0]&&(r=!r),i=Math.min(i,oj(e,t,a,c))}}return(r?1:-1)*Math.sqrt(i)}function aj(e){let t=0,n=0,r=0,i=e[0];for(let e=0,a=i.length,o=a-1;e<a;o=e++){let a=i[e],s=i[o],c=a[0]*s[1]-s[0]*a[1];n+=(a[0]+s[0])*c,r+=(a[1]+s[1])*c,t+=c*3}return t===0?new nj(i[0][0],i[0][1],0,e):new nj(n/t,r/t,0,e)}function oj(e,t,n,r){let i=n[0],a=n[1],o=r[0]-i,s=r[1]-a;if(o!==0||s!==0){let n=((e-i)*o+(t-a)*s)/(o*o+s*s);n>1?(i=r[0],a=r[1]):n>0&&(i+=o*n,a+=s*n)}return o=e-i,s=t-a,o*o+s*s}var sj=500;function cj(e,t={}){let{observers:n=[],locate:r=`zh-CN`,outlines:i=[]}=t;if(!e||e.floorplans.length===0)return null;let a=e.floorplans.map(e=>{let t=new tj;return t.load(e),t}),o=pj(a,e.vrData),s=e=>mj(e,o);return{outlines:i,computed_data:{floor_datas:lj(a,e,n,o,r),bounding:o,entrance:hj(a,s),observers:gj(a,e.vrData,n,s)}}}function lj(e,t,n,r,i){return e.map((e,a)=>{let o=e.areas.map(t=>{let n=uj(e,t),a=dj(n),o={position:a,position_in_image:mj(a,r)};return{id:t.id,size:e.info.ruleType===1?t.size(!1):t.size(),name:t.labelName(i),customized_name:t.customizedName||void 0,path:n,room_type:t.roomType(),floor_type:t.floorType(),room_label:o,observer_indexs:[],dimension:fj(t,a)}}),s=e.areas,c=0;return n.filter(e=>e.floor_index===a).forEach(e=>{let n=_j(e,t.vrData),r=-1;for(let e=c;e<s.length&&r===-1;e++)s[e].isPointInArea(n)&&(r=e);for(let e=c;e>=0&&r===-1;e--)s[e].isPointInArea(n)&&(r=e);r!==-1&&(c=r,o[r].observer_indexs.push(e.index))}),{floor_name:t.floorplans[a].name,floor_index:a,is_has_wall:e.lines.length>0,rules:vj(e),rooms:o}})}function uj(e,t){let n=[],r=t.points[0];return t.points.concat(r).reduce((t,r)=>{n.push(t);let i=e.getLineByPoints(t,r);if(!i)return r;if(i.curve){let e=i.curveCenterPoint(),a=i.curveR(),o=Math.abs(a-FE(e,r)*i.length()/Math.abs(i.curve)/4),s=[i.curveCenterPoint.call({curve:o,points:[t,e]}),i.curveCenterPoint.call({curve:-o,points:[t,e]})].sort((e,t)=>FE(t,r)-FE(e,r))[0],c=[i.curveCenterPoint.call({curve:o,points:[e,r]}),i.curveCenterPoint.call({curve:-o,points:[e,r]})].sort((e,n)=>FE(n,t)-FE(e,t))[0];n.push(s,e,c)}if(!i.isEdge()||i.items.length===0)return r;let a=i.items.filter(e=>e.type===7||e.type===11);return a.length===0||a.forEach(e=>{let r=e.startPointAt(),i=e.endPointAt();FE(r,t)>FE(i,t)&&([r,i]=[i,r]);let[a,o]=bj(700,[r,i])[0];n.push(r,a,o,i)}),r},r),n.map(({x:e,y:t})=>({x:e,y:t}))}function dj(e){let[t,n]=rj([e.map(({x:e,y:t})=>[Math.trunc(e),Math.trunc(t)])],1);return{x:t,y:n}}function fj(e,t){let n=e.innerPath();if(n.length===0)return;let r=1/0,i=-1/0,a=1/0,o=-1/0;n.forEach(e=>{r=Math.min(r,e.x),i=Math.max(i,e.x),a=Math.min(a,e.y),o=Math.max(o,e.y)});let s=i-r,c=o-a,l=Math.round(t.x),u=Math.round(t.y);return{width:s,height:c,vertical:[{x:l,y:a},{x:l,y:o}],horizontal:[{x:r,y:u},{x:i,y:u}]}}function pj(e,t){let n=1e3,r={min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0},origin:{x:0,y:0}};function i({x:e,y:t}){r.min.x=Math.min(e,r.min.x),r.min.y=Math.min(t,r.min.y),r.max.x=Math.max(e,r.max.x),r.max.y=Math.max(t,r.max.y)}return e.forEach(e=>{e.points.forEach(e=>i(e)),e.lines.forEach(e=>{e.curve!==0&&i(e.curveCenterPoint())})}),r.min.x-=n,r.min.y-=n,r.max.x+=n,r.max.y+=n,r.origin.x=t.origin.left,r.origin.y=t.origin.top,r}function mj(e,t){let n=t.max.x-t.min.x,r=t.max.y-t.min.y;return{x:n===0?0:(e.x-t.min.x)/n,y:r===0?0:(t.max.y-e.y)/r}}function hj(e,t){let n=e.map(e=>e.lineItems).reduce((e,t)=>e.concat(t),[]).find(e=>e.entrance!==null);if(!n)return null;let r=n.canvas,i=r.areas.find(e=>n.line.points.every(t=>e.points.indexOf(t)>=0));if(!i)return null;let a=Sj([n.startPointAt(),n.endPointAt()]),o=n.towardsRadWithArea(i)+n.entrance/180*Math.PI;return{position_in_image:t(a),north_rad:o,room_id:i.id,floor_index:e.findIndex(e=>e===r)}}function gj(e,t,n,r){return n.filter(t=>e[t.floor_index]).map(e=>({floor_index:e.floor_index,position_in_image:r(_j(e,t))}))}function _j(e,t){return{x:e.position[0]*1e3+t.origin.left,y:-e.position[2]*1e3+t.origin.top}}function vj(e){let t=[],n=[],r=[],i=[];for(let a of e.lines){if(!a.edgeComputed||!a.points.length)continue;let o=e.areas.find(e=>a.points.every(t=>e.points.includes(t)));if(!o)continue;let s=a.edgePoints(!0),c=o.innerPath(!0,!1),[l,u]=s.filter(e=>c.some(t=>yj(t,e)));if(!l||!u)continue;let d={x:l.x|0,y:l.y|0},f={x:u.x|0,y:u.y|0},p=a.towardsRadWithArea(o),m=Math.cos(p),h=Math.sin(p);Math.abs(d.y-f.y)>sj&&(m<0?i.push([d,f].sort((e,t)=>e.y-t.y)):m>0&&n.push([d,f].sort((e,t)=>e.y-t.y))),Math.abs(d.x-f.x)>sj&&(h<0?r.push([d,f].sort((e,t)=>e.x-t.x)):h>0&&t.push([d,f].sort((e,t)=>e.x-t.x)))}return{top:t,right:n,bottom:r,left:i}}function yj(e,t){return e.x===t.x&&e.y===t.y}function bj(e,t){let n=xj(t[1],t[0]),r,i;Math.abs(n)===1/0?(i=0,r=e):(i=Math.sqrt(e*e/(n*n+1)),r=i/-(1/n));let a=[[{x:t[0].x-r,y:t[0].y-i},{x:t[1].x-r,y:t[1].y-i}],[{x:t[0].x+r,y:t[0].y+i},{x:t[1].x+r,y:t[1].y+i}]];return t[1].x-t[0].x<0?a:t[1].x-t[0].x>0||t[1].y-t[0].y<0?a.reverse():a}function xj(e,t){return(e.y-t.y)/(e.x-t.x)}function Sj(e){let t=Math.min(...e.map(e=>e.x)),n=Math.max(...e.map(e=>e.x)),r=Math.min(...e.map(e=>e.y)),i=Math.max(...e.map(e=>e.y));return{x:(t+n)/2,y:(r+i)/2}}var Cj=(e,t)=>new PE(e,t),wj=class{constructor(e,t,n,r,i){this.R=e,this.Q=t,this.A=n,this.B=r,this.C=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{let n=this.A*this.x+this.B*t,r=this.A*this.cov*this.A+this.R,i=r*this.C*(1/(this.C*r*this.C+this.Q));this.x=n+i*(e-this.C*n),this.cov=r-i*this.C*r}return this.x}},Tj=class extends o.Controller{updateState(e,t){let n=this.state;this.state=Object.assign(Object.assign({},this.state),e),this.hooks.emit(`stateChange`,{state:this.state,prevState:n,userAction:t})}constructor(e,t){var n,r,i;super(e),this.boundingAABB=null,this.cancelAnimation=null,this.boundsSet=!1,this.keyframes=[],this.five=e,this.state={enabled:!0,visible:!0},this.duration=(n=t==null?void 0:t.duration)==null?5e3:n,this.curveHeight=(r=t==null?void 0:t.curveHeight)==null?1.5:r,this.pointDuration=(i=t==null?void 0:t.pointDuration)==null?3e3:i}load(){return r(this,void 0,void 0,function*(){})}enable(e){var t;if(this.state.enabled)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!0},n)}disable(e){var t;if(this.state.enabled===!1)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!1},n)}dispose(){this.disable(),this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null);try{let e=this.findRenderMesh();e&&(e.material.aggregationEnabled=!1,e.material.aggregationProgress=1)}catch(e){}}extractKeyframes(e){let t=[];if(!e.content.data)throw Error(`轨迹数据未加载`);let n=e.content.data.positionArray,r=n.length/3,i=.01,a=.1,o=new wj(i,a,1,0,1),s=new wj(i,a,1,0,1),c=new wj(i,a,1,0,1),l=new Float32Array(r);for(let e=0;e<r;e++)if(e===0)l[e]=0;else{let t=new D(n[(e-1)*3],n[(e-1)*3+1],n[(e-1)*3+2]);l[e]=new D(n[e*3],n[e*3+1],n[e*3+2]).distanceTo(t)+l[e-1]}for(let i=0;i<r;i++){let a=new D(0,0,0),u=0;for(let e=i-5;e<i+6;e++)e>=0&&e<r&&(a.add(new D(n[e*3],n[e*3+1],n[e*3+2])),u++);a.divideScalar(u).applyMatrix4(e.transform);let d=o.filter(a.x),f=s.filter(a.y),p=c.filter(a.z);t.push({position:new D(d,f,p),location:l[i]})}return t}computeAABB2D(e){let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let a of e)a.position.x<t&&(t=a.position.x),a.position.x>n&&(n=a.position.x),a.position.z<r&&(r=a.position.z),a.position.z>i&&(i=a.position.z);return{min:new at(t,r),max:new at(n,i)}}findClosestKeyframeToRay(e,t){let n=1/0,r=t[0].position.clone(),i=new D;for(let a of t){e.closestPointToPoint(a.position,i);let t=i.distanceTo(a.position);t<n&&(n=t,r=a.position.clone())}return r}isInitAnimationEnabled(){return this.five.modelScene.parameter.resolveValue(`enableGaussianSplattingInitAnimation`)===!0}findRenderMesh(){let e=null;if(this.five.scene.traverse(t=>{if(e)return;let n=t,r=n.material;r&&r.isPBMGaussianSplattingMaterial&&(e=n)}),!e)throw Error(`未找到 GaussianSplatting 渲染网格`);return e}loadTrajectoryDataIfNeeded(e){return r(this,void 0,void 0,function*(){var n,r,i,a,o,s,c,l;if((n=e.content)!=null&&n.data)return;if(((r=e.content)==null?void 0:r.loadState)===`LOADING`){yield new Promise(n=>{let r=t.AnimationFrameLoop.shared.add(()=>{var t;let i=(t=e.content)==null?void 0:t.loadState;(i===`READY`||i===`FAILED`||i===`UNLOADED`)&&(r(),n())})});return}let u=(i=this.five.model.viewLayers)==null?void 0:i[0],d=u==null?void 0:u.fetcher,f=u==null?void 0:u.search,p=(a=e.content)==null?void 0:a.uri;if(!d||!p)return;let m=f?p.includes(`?`)?`${p}&${f.replace(/^\?/,``)}`:`${p}${f.startsWith(`?`)?f:`?${f}`}`:p;e.content.loadState=`LOADING`;try{let n=yield(0,t.loadPly)(m,{type:`geometry`,customPropertyMapping:{time:{itemType:`uint32`,itemNames:[`time_milisec`]}},fetcher:d}),r=n.scene,i=r.getAttribute(`position`),a=r.getAttribute(`time`),u=(o=i==null?void 0:i.array)==null?new Float32Array:o,f=(s=a==null?void 0:a.array)==null?new Uint32Array:s;e.content.data={uri:m,byteLength:(c=n.byteLength)==null?0:c,memoryUsage:(l=n.memoryUsage)==null?0:l,positionArray:u,timeArray:f,object:null},e.content.loadState=`READY`}catch(t){console.warn(`[GaussianSplattingEntranceAnimationPlugin] trajectory ply 加载失败,将使用 3DGS AABB 回退`,t),e.content.data=void 0,e.content.loadState=`FAILED`}})}computeGSSceneBounds(){let e=new Tn,t=new Tn;return this.five.scene.traverse(n=>{let r=n;(r==null?void 0:r.boundingBox)instanceof Tn&&!r.boundingBox.isEmpty()&&(t.copy(r.boundingBox),r.matrixWorld&&t.applyMatrix4(r.matrixWorld),e.union(t))}),e.isEmpty()?null:e}getCameraCurve(){return r(this,void 0,void 0,function*(){var e,t,n,r,i,a,o,s,c,l;let u=(r=(n=(t=(e=this.five.model.viewLayers)==null?void 0:e[0])==null?void 0:t.trajectories)==null?void 0:n[0])==null?(s=(o=(a=(i=this.five.model.viewLayers)==null?void 0:i[0])==null?void 0:a.scene)==null?void 0:o.trajectories)==null?void 0:s[0]:r,d=null,f=null;if(u&&(yield this.loadTrajectoryDataIfNeeded(u),(c=u.content)!=null&&c.data&&((l=u.content.data.positionArray)==null?void 0:l.length)>=6&&(d=this.extractKeyframes(u),d.length>=2?f=this.computeAABB2D(d):d=null)),!d||!f){let e=this.computeGSSceneBounds();if(!e)throw Error(`未找到可用于计算入场曲线的 3DGS 边界或轨迹`);f={min:new at(e.min.x,e.min.z),max:new at(e.max.x,e.max.z)};let t=(f.min.x+f.max.x)/2,n=(f.min.y+f.max.y)/2,r=(e.min.y+e.max.y)/2,i=Math.max(f.max.x-f.min.x,f.max.y-f.min.y)*.5;d=[];let a=0,o=null;for(let e=0;e<16;e++){let s=e/16*Math.PI*2,c=new D(t+Math.cos(s)*i,r,n+Math.sin(s)*i);o&&(a+=c.distanceTo(o)),d.push({position:c,location:a}),o=c}}this.keyframes=d,this.boundingAABB=f;let p=this.curveHeight,m=new D((f.min.x+f.max.x)/2,p,(f.min.y+f.max.y)/2),h=(f.max.x-f.min.x)/2,g=(f.max.y-f.min.y)/2,_=Math.sqrt(h*h+g*g),v=e=>{let t=new D().subVectors(e,m);return t.length()<.001&&t.set(1,0,0),m.clone().add(t.normalize().multiplyScalar(_))},y=new D(d[0].position.x,p,d[0].position.z),b=v(y),x=new D().subVectors(m,y).normalize(),S=new _r(y,x),C=new _r(m,new D(-x.z,0,x.x).normalize()),ee=this.findClosestKeyframeToRay(C,d),te=v(new D(ee.x,p,ee.z)),ne=this.findClosestKeyframeToRay(S,d);return new pi([b,te,v(new D(ne.x,p,ne.z))],!1,`centripetal`,.5)})}setBounding(e,t,n){let r=this.findRenderMesh();r.material.aggregationBoundsMin.copy(e),r.material.aggregationBoundsMax.copy(t),this.boundsSet=!0}setBounds(){if(!this.boundingAABB)throw Error(`请先调用 getCameraCurve 计算轨迹边界`);let e=this.boundingAABB,t=this.findRenderMesh(),n=new D(e.min.x,0,e.min.y),r=new D(e.max.x,3,e.max.y);t.material.aggregationBoundsMin.copy(n),t.material.aggregationBoundsMax.copy(r),this.boundsSet=!0}normalizedPointDuration(){let e=this.pointDuration;return e<=0?.01:Math.min(e<=1?e:e/this.duration,1)}resetToPointCloud(){return r(this,void 0,void 0,function*(){if(!this.isInitAnimationEnabled())return;this.boundingAABB||(yield this.getCameraCurve()),this.setBounds();let e=this.findRenderMesh().material;e.aggregationEnabled=!0,e.aggregationProgress=0,e.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0,this.five.modelSceneNeedsRender=!0})}startAggregation(){if(!this.isInitAnimationEnabled()){console.warn(`[GaussianSplattingEntranceAnimationPlugin] modelScene.enableGaussianSplattingInitAnimation 为 false,已跳过聚合动画`);return}if(!this.boundsSet)throw Error(`请先调用 setBounds 设置聚合边界`);let e=this.findRenderMesh().material;e.aggregationEnabled=!0,e.aggregationProgress=0,e.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0;let n=performance.now(),r=this.duration;this.cancelAnimation=t.AnimationFrameLoop.shared.add(()=>{let t=performance.now()-n,i=Math.min(t/r,1);e.aggregationProgress=i*i*(3-2*i),this.five.needsRender=!0,this.five.modelSceneNeedsRender=!0,i>=1&&(e.aggregationEnabled=!1,this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null))})}playEntrance(){return r(this,void 0,void 0,function*(){if(!this.isInitAnimationEnabled()){console.warn(`[GaussianSplattingEntranceAnimationPlugin] modelScene.enableGaussianSplattingInitAnimation 为 false,已跳过入场动画`);return}let e=yield this.getCameraCurve(),n=this.boundingAABB,r=new D((n.min.x+n.max.x)/2,this.curveHeight,(n.min.y+n.max.y)/2),i=e.getPointAt(0),a=new t.Camera(90).copy(this.five.camera);a.position.copy(i),a.lookAt(r),a.computePose(0),this.five.setState(Object.assign({},a.pose)),this.setBounds();let o=this.findRenderMesh().material;o.aggregationEnabled=!0,o.aggregationProgress=0,o.aggregationPointDuration=this.normalizedPointDuration(),this.five.needsRender=!0;let s=this.duration,c=performance.now();return new Promise(n=>{this.cancelAnimation=t.AnimationFrameLoop.shared.add(()=>{let t=performance.now()-c,i=Math.min(t/s,1),l=i*i*(3-2*i);o.aggregationProgress=l,this.five.modelSceneNeedsRender=!0;let u=e.getPointAt(l);a.position.copy(u),a.lookAt(r),a.computePose(0),this.five.setState(Object.assign({},a.pose)),this.five.needsRender=!0,i>=1&&(o.aggregationEnabled=!1,o.aggregationProgress=1,this.cancelAnimation&&(this.cancelAnimation(),this.cancelAnimation=null),n())})})})}},Ej=(e,t)=>new Tj(e,t),Dj=class e{constructor(t){this._scene=new un,this._mesh=new Ar(e.geometry,t),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._scene,e.camera)}};Dj.camera=new Bi(-1,1,1,-1,0,1),Dj.geometry=(()=>{let e=new mi(2,2,1,1);for(let t=1;t<e.attributes.uv.array.length;t+=2)e.attributes.uv.array[t]=1-e.attributes.uv.array[t];return e})();var Oj=class{constructor(e){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=e==null?[]:e}setSize(e,t){}render(e,t,n,r,i){}dispose(){}};Oj.FullScreenQuad=Dj;function kj(){return((1+Math.random())*65536|0).toString(16).substring(1)}function Aj(){return(kj()+kj()+`-`+kj()+`-4`+kj().substr(0,3)+`-`+kj()+`-`+kj()+kj()+kj()).toLowerCase()}var jj=16767392,Mj=.1,Nj=3,Pj=class extends Oj{constructor(e,t=ee){super(),this.uTime=0,this.words=[],this.lineMesh=null,this.lineMaterial=null,this.points=null,this.particleMaterial=null,this.particleGeometry=null,this.arrPosition=null,this.arrVelocity=null,this.arrAccel=null,this.arrColor=null,this.arrParams=null,this._tmpTip=new D,this.uTimeLine=Rw(0),this.uResolutionLine=Rw(new at(1,1)),this.uProjLine=Rw(new Ot),this.uViewLine=Rw(new Ot),this.uPixelRatioLine=Rw(1),this.uMaxDisplayBoost=Rw(1),this.uTimeParticle=Rw(0),this.uResolutionParticle=Rw(new at(1,1)),this.uProjParticle=Rw(new Ot),this.uViewParticle=Rw(new Ot),this.uBase=Lw(new wt),this.uEffect=Lw(new wt),this.camera=e,this.effectScene=new un,this.orthoCamera=new Bi(-1,1,1,-1,0,1),this.effectRenderTarget=new Et(Math.max(1,this.camera.resolution.x),Math.max(1,this.camera.resolution.y),{type:t,minFilter:x,magFilter:x,format:re}),this.blendMaterial=this.createBlendMaterial(),this.blendQuad=new Dj(this.blendMaterial)}setWords(e){return this.words=e.map(e=>{var t;return this._resolveWord(e,this.uTime+((t=e.startTime)==null?0:t)/1e3)}),this._rebuild(),this.words.map(e=>e.id)}addWord(...e){let t=e.map(e=>{var t;return this._resolveWord(e,this.uTime+((t=e.startTime)==null?0:t)/1e3)});return this.words.push(...t),this._rebuild(),t.map(e=>e.id)}hasWord(e){return this.words.some(t=>t.id===e)}removeWord(...e){let t=0;for(let n of e){let e=this.words.findIndex(e=>e.id===n);if(e===-1){console.warn(`WordPass: word "${n}" not found`);continue}this.words.splice(e,1),t++}return t>0&&this._rebuild(),t}setWord(e){var t;let{id:r}=e,i=n(e,[`id`]),a=this.words.findIndex(e=>e.id===r);if(a===-1){console.warn(`WordPass: word "${r}" not found`);return}let o=this.words[a],s=Object.assign(Object.assign(Object.assign({},o.source),i),{id:r}),c=i.startTime===void 0?o.wordStart:this.uTime+((t=i.startTime)==null?0:t)/1e3;this.words[a]=this._resolveWord(s,c),this._rebuild()}clearWords(){this.words=[],this._rebuild()}setMaxDisplayBoost(e){this.uMaxDisplayBoost.value=Math.max(e,1)}_resolveWord(e,t){let{color:n=new cn(jj),opacity:r=1,lineWidth:i=3,hdrIntensity:a=1,writeSpeed:o=4,minStrokeDuration:s=200,strokeGap:c=120,holdDuration:l=1500,fadeDuration:u=1200,loop:d=!0,restartPause:f=800,persist:p=!1,fireworks:m=!0,fireworksColor:h,particleCount:g=400,emissionRate:_=500,sparkSpeed:v=.6,particleSize:y=.012,particleLife:b=.8,gravity:x}=e,S=e.strokes.filter(e=>e.points.length>=2),C=[],ee=0,te=c/1e3;for(let e of S){let t=Math.max(e.totalLength/Math.max(o,1e-4),s/1e3);C.push({points:e.points,strokeLength:e.totalLength,writeStart:ee,writeDuration:t}),ee+=t+te}let ne=ee>0?ee-te:0,w=p?1e9:ne+l/1e3,re=p?1:u/1e3,ie=p?0:d?w+re+f/1e3:0;return{id:e.id||Aj(),source:Object.assign(Object.assign({},e),{id:e.id}),blocks:C,color:n.clone(),opacity:r,lineWidth:i,hdrIntensity:Math.max(a,1),wordStart:t,fadeStart:w,fadeDuration:re,cycleLength:ie,fireworks:m,sparkColor:h?h.clone():n.clone().lerp(new cn(16777215),.4),emissionRate:_,sparkSpeed:v,particleSize:y,particleLife:b,gravity:x?x.clone():new D(0,-.6,0),particleCount:m?Math.max(1,Math.floor(g)):0,particleOffset:0,particleCursor:0,emitAccum:C.map(()=>0)}}_rebuild(){this._buildLineMesh(),this._buildParticles()}createLineMaterial(){let e=Vw(`vec4`,`wpColor`),t=Vw(`float`,`wpSegLen`),n=Vw(`float`,`wpAccum`),r=Vw(`float`,`wpStrokeLen`),i=Vw(`float`,`wpDrawnLen`),a=Vw(`float`,`wpFade`),o=Vw(`vec2`,`wpStart`),s=Vw(`vec2`,`wpEnd`),c=Vw(`float`,`wpLineWidth`),l=Vw(`float`,`wpHdrBoost`),u=Vw(`vec2`,`wpNdc`),d=.001,f=(e,t)=>Sw(e,t),p=bw(()=>{let p=f(`instanceStart`,`vec3`),m=f(`instanceEnd`,`vec3`),h=f(`instanceColor`,`vec4`),g=f(`instanceData`,`vec4`),_=f(`instanceReveal`,`vec2`),v=f(`instanceTime`,`vec4`),y=Mw,b=g.x,x=g.y.mul(this.uPixelRatioLine),S=g.z,C=_.x,ee=_.y,te=v.x,ne=v.y,w=v.z,re=v.w;e.assign(h);let ie=Dw(m.sub(p));t.assign(ie),n.assign(b),r.assign(S),c.assign(x);let ae=this.uTimeLine.sub(te),oe=Pw(re.greaterThan(0),jw(kw(ae,0),re),ae),se=Cw(oe.sub(C).div(kw(ee,1e-4)),0,1).mul(S).toVar(),ce=Ew(1).toVar();xw(oe.greaterThanEqual(ne),()=>{ce.assign(Ew(1).sub(Cw(oe.sub(ne).div(kw(w,1e-4)),0,1)))}),xw(ae.lessThan(0),()=>{ce.assign(0),se.assign(0)}),a.assign(ce),i.assign(se);let le=g.w,ue=kw(Ow(kw(le,1.0001)),1e-4),de=Cw(Ow(kw(this.uMaxDisplayBoost,1)).div(ue),0,1);l.assign(Aw(1,le,de));let fe=this.uProjLine.mul(this.uViewLine).mul(Ww(p,1)).toVar(),pe=this.uProjLine.mul(this.uViewLine).mul(Ww(m,1)).toVar(),me=Ew(0).toVar(),he=fe.w.lessThan(d).toVar(),ge=pe.w.lessThan(d).toVar();xw(he.and(ge),()=>{me.assign(1)}),xw(he,()=>{let e=Ew(d).sub(fe.w).div(pe.w.sub(fe.w));fe.assign(Aw(fe,pe,e))}),xw(ge,()=>{let e=Ew(d).sub(pe.w).div(fe.w.sub(pe.w));pe.assign(Aw(pe,fe,e))});let _e=fe.xy.div(fe.w),ve=pe.xy.div(pe.w);o.assign(_e),s.assign(ve);let ye=_e.add(1).mul(.5).mul(this.uResolutionLine),be=ve.add(1).mul(.5).mul(this.uResolutionLine),xe=be.sub(ye),Se=Dw(xe),Ce=Pw(Se.greaterThan(1e-5),xe.div(kw(Se,1e-5)),Hw(1,0)),we=Hw(Ce.y.negate(),Ce.x),Te=y.y.add(.5),Ee=kw(x.mul(.5),.5).add(Nj),De=ye.sub(Ce.mul(Ee)),Oe=be.add(Ce.mul(Ee)),ke=we.mul(y.x).mul(2).mul(Ee),T=Aw(De,Oe,Te).add(ke).div(this.uResolutionLine).mul(2).sub(1);u.assign(T);let E=Aw(fe,pe,Te),Ae=kw(E.w,d);return Aw(Ww(T.mul(Ae),E.z,Ae),Ww(0,0,-2,1),me)}),m=bw(([e,t,n])=>{let r=e.sub(t),i=n.sub(t),a=Cw(ww(r,i).div(ww(i,i)),0,1);return Dw(r.sub(i.mul(a)))}),h=bw(()=>{let d=u,f=s.sub(o),p=kw(Dw(f),1e-6),h=f.div(p),g=Cw(ww(d.sub(o),h),0,p).div(p),_=n.add(g.mul(t)),v=i.lessThanEqual(1e-4).or(_.greaterThan(i)),y=Hw(this.uResolutionLine.x.div(this.uResolutionLine.y),1),b=m(d.mul(y),o.mul(y),s.mul(y)).mul(this.uResolutionLine.y).mul(.5),x=kw(c.mul(.5),.5),S=Ew(1).sub(Iw(x.sub(1),x.add(1),b)),C=x.add(Nj),ee=Cw(kw(b.sub(x),0).div(kw(C.sub(x),1e-4)),0,1),te=Nw(Ew(1).sub(ee),4).mul(.9),ne=Cw(S.add(te.mul(Ew(1).sub(S))),0,1),w=Tw(kw(i.sub(_),0).mul(-5).div(kw(r,1e-4))),re=Ew(1).sub(Iw(r.mul(.98),r,i)),ie=Ew(1).add(w.mul(.6).mul(re)),ae=ne.mul(e.a).mul(a),oe=Pw(v.not().and(ae.greaterThanEqual(.004)),ae,0);return Ww(e.rgb.mul(ie).mul(l).mul(oe),oe)}),g=new Gh;return g.vertexNode=p(),g.fragmentNode=h(),g.transparent=!0,g.depthTest=!1,g.depthWrite=!1,g.side=2,g.blending=5,g.blendEquation=104,g.blendSrc=201,g.blendDst=201,g}_buildLineMesh(){this._disposeLineMesh();let e=0;for(let t of this.words)for(let n of t.blocks)e+=n.points.length-1;if(e===0)return;let t=new mi(1,1,1,1),n=new Vi;n.index=t.index,n.attributes=t.attributes,n.instanceCount=e;let r=new Float32Array(e*3),i=new Float32Array(e*3),a=new Float32Array(e*4),o=new Float32Array(e*4),s=new Float32Array(e*2),c=new Float32Array(e*4),l=0;for(let e of this.words)for(let t of e.blocks){let n=0;for(let u=0;u<t.points.length-1;u++){let d=t.points[u],f=t.points[u+1],p=d.distanceTo(f),m=l*2,h=l*3,g=l*4;r[h+0]=d.x,r[h+1]=d.y,r[h+2]=d.z,i[h+0]=f.x,i[h+1]=f.y,i[h+2]=f.z,a[g+0]=e.color.r,a[g+1]=e.color.g,a[g+2]=e.color.b,a[g+3]=e.opacity,o[g+0]=n,o[g+1]=e.lineWidth,o[g+2]=t.strokeLength,o[g+3]=e.hdrIntensity,s[m+0]=t.writeStart,s[m+1]=t.writeDuration,c[g+0]=e.wordStart,c[g+1]=e.fadeStart,c[g+2]=e.fadeDuration,c[g+3]=e.cycleLength,n+=p,l++}}n.setAttribute(`instanceStart`,new Pr(r,3)),n.setAttribute(`instanceEnd`,new Pr(i,3)),n.setAttribute(`instanceColor`,new Pr(a,4)),n.setAttribute(`instanceData`,new Pr(o,4)),n.setAttribute(`instanceReveal`,new Pr(s,2)),n.setAttribute(`instanceTime`,new Pr(c,4)),this.lineMaterial=this.createLineMaterial(),this.lineMesh=new Ar(n,this.lineMaterial),this.lineMesh.frustumCulled=!1,this.effectScene.add(this.lineMesh)}createParticleMaterial(){let e=Vw(`vec4`,`wpSparkColor`),t=Vw(`float`,`wpSparkAlpha`),n=Vw(`vec2`,`wpSparkLocal`),r=.001,i=(e,t)=>Sw(e,t),a=bw(()=>{let a=i(`aPosition`,`vec3`),o=i(`aVelocity`,`vec3`),s=i(`aAccel`,`vec3`),c=i(`aColor`,`vec4`),l=i(`aParams`,`vec4`),u=l.x,d=l.y,f=l.z,p=l.w,m=Mw.xy;e.assign(c),n.assign(m);let h=this.uTimeParticle.sub(u),g=Ew(0).toVar();xw(d.lessThanEqual(0).or(h.lessThan(0)).or(h.greaterThan(d)),()=>{g.assign(1)});let _=h.div(kw(d,r)),v=a.add(o.mul(h)).add(s.mul(.5).mul(h).mul(h)),y=this.uProjParticle.mul(this.uViewParticle).mul(Ww(v,1)).toVar();xw(y.w.lessThanEqual(r),()=>{g.assign(1)});let b=kw(y.w,r),x=y.xy.div(b),S=this.uProjParticle.element(1).y,C=Ew(1).sub(_.mul(.7)),ee=kw(p.mul(S).mul(.5).mul(this.uResolutionParticle.y).div(b).mul(C),0),te=x.add(1).mul(.5).mul(this.uResolutionParticle).add(m.mul(ee)).div(this.uResolutionParticle).mul(2).sub(1),ne=Ew(.7).add(Ew(.3).mul(Fw(this.uTimeParticle.mul(30).add(f.mul(6.2831)))));return t.assign(Nw(Ew(1).sub(_),.8).mul(ne)),Aw(Ww(te.mul(b),y.z,b),Ww(0,0,-2,1),g)}),o=bw(()=>{let r=Iw(.5,0,Dw(n)),i=r.mul(r).mul(t).mul(e.a);return Ww(e.rgb,i)}),s=new Gh;return s.vertexNode=a(),s.fragmentNode=o(),s.transparent=!0,s.depthTest=!1,s.depthWrite=!1,s.blending=2,s}createBlendMaterial(){let e=new Gh,t=this.uBase.sample(zw()),n=this.uEffect.sample(zw());return e.fragmentNode=Ww(t.rgb.add(n.rgb),t.a),e.transparent=!1,e.depthTest=!1,e.depthWrite=!1,e}_buildParticles(){this._disposeParticles();let e=0;for(let t of this.words)t.particleOffset=e,t.particleCursor=0,e+=t.particleCount;if(e===0)return;this.arrPosition=new Float32Array(e*3),this.arrVelocity=new Float32Array(e*3),this.arrAccel=new Float32Array(e*3),this.arrColor=new Float32Array(e*4),this.arrParams=new Float32Array(e*4);let t=new mi(1,1,1,1),n=new Vi;n.index=t.index,n.attributes=t.attributes,n.instanceCount=e,n.setAttribute(`aPosition`,new Pr(this.arrPosition,3)),n.setAttribute(`aVelocity`,new Pr(this.arrVelocity,3)),n.setAttribute(`aAccel`,new Pr(this.arrAccel,3)),n.setAttribute(`aColor`,new Pr(this.arrColor,4)),n.setAttribute(`aParams`,new Pr(this.arrParams,4)),this.particleGeometry=n,this.particleMaterial=this.createParticleMaterial(),this.points=new Ar(n,this.particleMaterial),this.points.frustumCulled=!1,this.effectScene.add(this.points)}_samplePointAtLength(e,t,n){if(e.length===1||t<=0){n.copy(e[0]);return}let r=0;for(let i=0;i<e.length-1;i++){let a=e[i],o=e[i+1],s=a.distanceTo(o);if(!(s<=1e-9)){if(r+s>=t){n.lerpVectors(a,o,(t-r)/s);return}r+=s}}n.copy(e[e.length-1])}_emitParticle(e,t){if(!this.arrPosition)return;let n=e.particleOffset+e.particleCursor;e.particleCursor=(e.particleCursor+1)%e.particleCount;let r=n*3,i=n*4,a=Math.random()*Math.PI*2,o=Math.random(),s=Math.cos(a)*o,c=Math.sin(a)*o,l=.3+Math.random()*.7,u=e.sparkSpeed*(.4+Math.random()*.8);this.arrPosition[r+0]=t.x,this.arrPosition[r+1]=t.y,this.arrPosition[r+2]=t.z,this.arrVelocity[r+0]=s*u,this.arrVelocity[r+1]=l*u,this.arrVelocity[r+2]=c*u,this.arrAccel[r+0]=e.gravity.x,this.arrAccel[r+1]=e.gravity.y,this.arrAccel[r+2]=e.gravity.z;let d=.8+Math.random()*.5;this.arrColor[i+0]=e.sparkColor.r*d,this.arrColor[i+1]=e.sparkColor.g*d,this.arrColor[i+2]=e.sparkColor.b*d,this.arrColor[i+3]=1,this.arrParams[i+0]=this.uTime,this.arrParams[i+1]=e.particleLife*(.6+Math.random()*.8),this.arrParams[i+2]=Math.random(),this.arrParams[i+3]=e.particleSize*(.6+Math.random()*.9)}_emit(e){if(!this.particleGeometry)return;let t=!1;for(let n of this.words){if(!n.fireworks||n.particleCount===0)continue;let r=this.uTime-n.wordStart;if(r<0)continue;let i=n.cycleLength>0?r%n.cycleLength:r;for(let r=0;r<n.blocks.length;r++){let a=n.blocks[r],o=i-a.writeStart;if(o<0||o>a.writeDuration)continue;let s=o/a.writeDuration;this._samplePointAtLength(a.points,s*a.strokeLength,this._tmpTip),n.emitAccum[r]+=n.emissionRate*e;let c=Math.floor(n.emitAccum[r]);n.emitAccum[r]-=c,c=Math.min(c,n.particleCount);for(let e=0;e<c;e++)this._emitParticle(n,this._tmpTip),t=!0}}if(t){let e=this.particleGeometry;e.getAttribute(`aPosition`).needsUpdate=!0,e.getAttribute(`aVelocity`).needsUpdate=!0,e.getAttribute(`aAccel`).needsUpdate=!0,e.getAttribute(`aColor`).needsUpdate=!0,e.getAttribute(`aParams`).needsUpdate=!0}}render(e,t,n,r,i){let a=!!(this.lineMesh||this.points);if(a){let e=Math.min(Math.max(r==null?0:r,0),Mj);this.uTime+=e,this._emit(e)}let o=n.width,s=n.height;(this.effectRenderTarget.width!==o||this.effectRenderTarget.height!==s)&&this.effectRenderTarget.setSize(o,s);let c=e.getRenderTarget();if(e.setRenderTarget(this.effectRenderTarget),e.setClearColor(0,0),e.clear(),a){let t=this.camera.projectionMatrix,n=this.camera.matrixWorldInverse;this.lineMaterial&&(this.uTimeLine.value=this.uTime,this.uResolutionLine.value.set(o,s),this.uProjLine.value=t,this.uViewLine.value=n,this.uPixelRatioLine.value=this.camera.pixelRatio),this.particleMaterial&&(this.uTimeParticle.value=this.uTime,this.uResolutionParticle.value.set(o,s),this.uProjParticle.value=t,this.uViewParticle.value=n),e.render(this.effectScene,this.orthoCamera)}e.setRenderTarget(c),this.uBase.value=n.texture,this.uEffect.value=this.effectRenderTarget.texture,e.setRenderTarget(this.renderToScreen?null:t),this.blendQuad.render(e)}_disposeLineMesh(){this.lineMesh&&(this.effectScene.remove(this.lineMesh),this.lineMesh.geometry.dispose(),this.lineMesh=null),this.lineMaterial&&(this.lineMaterial.dispose(),this.lineMaterial=null)}_disposeParticles(){this.points&&(this.effectScene.remove(this.points),this.points=null),this.particleGeometry&&(this.particleGeometry.dispose(),this.particleGeometry=null),this.particleMaterial&&(this.particleMaterial.dispose(),this.particleMaterial=null),this.arrPosition=null,this.arrVelocity=null,this.arrAccel=null,this.arrColor=null,this.arrParams=null}dispose(){this._disposeLineMesh(),this._disposeParticles(),this.effectRenderTarget.dispose(),this.blendMaterial.dispose(),this.blendQuad.dispose()}},Fj={name:`Sans 1-stroke`,chars:[{d:`M5,1 L5,15 M5,20 L4,21 5,22 6,21 5,20`,o:5},{d:`M4,1 L4,8 M12,1 L12,8`,o:8},{d:`M11,-3 L4,29 M17,-3 L10,29 M4,10 L18,10 M3,16 L17,16`,o:11},{d:`M8,-3 L8,26 M12,-3 L12,26 M17,4 L15,2 12,1 8,1 5,2 3,4 3,6 4,8 5,9 7,10 13,12 15,13 16,14 17,16 17,19 15,21 12,22 8,22 5,21 3,19`,o:10},{d:`M21,1 L3,22 M8,1 L10,3 10,5 9,7 7,8 5,8 3,6 3,4 4,2 6,1 8,1 10,2 13,3 16,3 19,2 21,1 M17,15 L15,16 14,18 14,20 16,22 18,22 20,21 21,19 21,17 19,15 17,15`,o:12},{d:`M23,10 L23,9 22,8 21,8 20,9 19,11 17,16 15,19 13,21 11,22 7,22 5,21 4,20 3,18 3,16 4,14 5,13 12,9 13,8 14,6 14,4 13,2 11,1 9,2 8,4 8,6 9,9 11,12 16,19 18,21 20,22 22,22 23,21 23,20`,o:13},{d:`M5,3 L4,2 5,1 6,2 6,4 5,6 4,7`,o:5},{d:`M11,-3 L9,-1 7,2 5,6 4,11 4,15 5,20 7,24 9,27 11,29`,o:7},{d:`M3,-3 L5,-1 7,2 9,6 10,11 10,15 9,20 7,24 5,27 3,29`,o:7},{d:`M8,7 L8,19 M3,10 L13,16 M13,10 L3,16`,o:8},{d:`M13,4 L13,22 M4,13 L22,13`,o:13},{d:`M5,18 L4,19 3,18 4,17 5,18 5,20 3,22`,o:4},{d:`M4,13 L22,13`,o:13},{d:`M4,17 L3,18 4,19 5,18 4,17`,o:4},{d:`M20,-3 L2,29`,o:11},{d:`M9,1 L6,2 4,5 3,10 3,13 4,18 6,21 9,22 11,22 14,21 16,18 17,13 17,10 16,5 14,2 11,1 9,1`,o:10},{d:`M6,5 L8,4 11,1 11,22`,o:10},{d:`M4,6 L4,5 5,3 6,2 8,1 12,1 14,2 15,3 16,5 16,7 15,9 13,12 3,22 17,22`,o:10},{d:`M5,1 L16,1 10,9 13,9 15,10 16,11 17,14 17,16 16,19 14,21 11,22 8,22 5,21 4,20 3,18`,o:10},{d:`M13,1 L3,15 18,15 M13,1 L13,22`,o:10},{d:`M15,1 L5,1 4,10 5,9 8,8 11,8 14,9 16,11 17,14 17,16 16,19 14,21 11,22 8,22 5,21 4,20 3,18`,o:10},{d:`M16,4 L15,2 12,1 10,1 7,2 5,5 4,10 4,15 5,19 7,21 10,22 11,22 14,21 16,19 17,16 17,15 16,12 14,10 11,9 10,9 7,10 5,12 4,15`,o:10},{d:`M17,1 L7,22 M3,1 L17,1`,o:10},{d:`M8,1 L5,2 4,4 4,6 5,8 7,9 11,10 14,11 16,13 17,15 17,18 16,20 15,21 12,22 8,22 5,21 4,20 3,18 3,15 4,13 6,11 9,10 13,9 15,8 16,6 16,4 15,2 12,1 8,1`,o:10},{d:`M16,8 L15,11 13,13 10,14 9,14 6,13 4,11 3,8 3,7 4,4 6,2 9,1 10,1 13,2 15,4 16,8 16,13 15,18 13,21 10,22 8,22 5,21 4,19`,o:10},{d:`M4,10 L3,11 4,12 5,11 4,10 M4,17 L3,18 4,19 5,18 4,17`,o:4},{d:`M4,10 L3,11 4,12 5,11 4,10 M5,18 L4,19 3,18 4,17 5,18 5,20 3,22`,o:4},{d:`M20,4 L4,13 20,22`,o:12},{d:`M4,10 L22,10 M4,16 L22,16`,o:13},{d:`M4,4 L20,13 4,22`,o:12},{d:`M3,6 L3,5 4,3 5,2 7,1 11,1 13,2 14,3 15,5 15,7 14,9 13,10 9,12 9,15 M9,20 L8,21 9,22 10,21 9,20`,o:9},{d:`M18,9 L17,7 15,6 12,6 10,7 9,8 8,11 8,14 9,16 11,17 14,17 16,16 17,14 M12,6 L10,8 9,11 9,14 10,16 11,17 M18,6 L17,14 17,16 19,17 21,17 23,15 24,12 24,10 23,7 22,5 20,3 18,2 15,1 12,1 9,2 7,3 5,5 4,7 3,10 3,13 4,16 5,18 7,20 9,21 12,22 15,22 18,21 20,20 21,19 M19,6 L18,14 18,16 19,17`,o:14},{d:`M9,1 L1,22 M9,1 L17,22 M4,15 L14,15`,o:9},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,7 17,9 16,10 13,11 M4,11 L13,11 16,12 17,13 18,15 18,18 17,20 16,21 13,22 4,22`,o:10},{d:`M18,6 L17,4 15,2 13,1 9,1 7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17`,o:11},{d:`M4,1 L4,22 M4,1 L11,1 14,2 16,4 17,6 18,9 18,14 17,17 16,19 14,21 11,22 4,22`,o:10},{d:`M4,1 L4,22 M4,1 L17,1 M4,11 L12,11 M4,22 L17,22`,o:9},{d:`M4,1 L4,22 M4,1 L17,1 M4,11 L12,11`,o:8},{d:`M18,6 L17,4 15,2 13,1 9,1 7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 18,14 M13,14 L18,14`,o:11},{d:`M4,1 L4,22 M18,1 L18,22 M4,11 L18,11`,o:11},{d:`M4,1 L4,22`,o:4},{d:`M12,1 L12,17 11,20 10,21 8,22 6,22 4,21 3,20 2,17 2,15`,o:8},{d:`M4,1 L4,22 M18,1 L4,15 M9,10 L18,22`,o:10},{d:`M4,1 L4,22 M4,22 L16,22`,o:7},{d:`M4,1 L4,22 M4,1 L12,22 M20,1 L12,22 M20,1 L20,22`,o:12},{d:`M4,1 L4,22 M4,1 L18,22 M18,1 L18,22`,o:11},{d:`M9,1 L7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 19,14 19,9 18,6 17,4 15,2 13,1 9,1`,o:11},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,8 17,10 16,11 13,12 4,12`,o:10},{d:`M9,1 L7,2 5,4 4,6 3,9 3,14 4,17 5,19 7,21 9,22 13,22 15,21 17,19 18,17 19,14 19,9 18,6 17,4 15,2 13,1 9,1 M12,18 L18,24`,o:11},{d:`M4,1 L4,22 M4,1 L13,1 16,2 17,3 18,5 18,7 17,9 16,10 13,11 4,11 M11,11 L18,22`,o:10},{d:`M17,4 L15,2 12,1 8,1 5,2 3,4 3,6 4,8 5,9 7,10 13,12 15,13 16,14 17,16 17,19 15,21 12,22 8,22 5,21 3,19`,o:10},{d:`M8,1 L8,22 M1,1 L15,1`,o:8},{d:`M4,1 L4,16 5,19 7,21 10,22 12,22 15,21 17,19 18,16 18,1`,o:11},{d:`M1,1 L9,22 M17,1 L9,22`,o:9},{d:`M2,1 L7,22 M12,1 L7,22 M12,1 L17,22 M22,1 L17,22`,o:12},{d:`M3,1 L17,22 M17,1 L3,22`,o:10},{d:`M1,1 L9,11 9,22 M17,1 L9,11`,o:9},{d:`M17,1 L3,22 M3,1 L17,1 M3,22 L17,22`,o:10},{d:`M4,-3 L4,29 M5,-3 L5,29 M4,-3 L11,-3 M4,29 L11,29`,o:7},{d:`M0,1 L14,25`,o:7},{d:`M9,-3 L9,29 M10,-3 L10,29 M3,-3 L10,-3 M3,29 L10,29`,o:7},{d:`M8,-1 L0,13 M8,-1 L16,13`,o:8},{d:`M0,29 L18,29`,o:9},{d:`M5,6 L3,8 3,10 4,11 5,10 4,9 3,10`,o:4},{d:`M15,8 L15,22 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,1 L4,22 M4,11 L6,9 8,8 11,8 13,9 15,11 16,14 16,16 15,19 13,21 11,22 8,22 6,21 4,19`,o:9},{d:`M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:9},{d:`M15,1 L15,22 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M3,14 L15,14 15,12 14,10 13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:9},{d:`M10,1 L8,1 6,2 5,5 5,22 M2,8 L9,8`,o:7},{d:`M15,8 L15,24 14,27 13,28 11,29 8,29 6,28 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,1 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22`,o:10},{d:`M3,1 L4,2 5,1 4,0 3,1 M4,8 L4,22`,o:4},{d:`M5,1 L6,2 7,1 6,0 5,1 M6,8 L6,25 5,28 3,29 1,29`,o:5},{d:`M4,1 L4,22 M14,8 L4,18 M8,14 L15,22`,o:8},{d:`M4,1 L4,22`,o:4},{d:`M4,8 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22 M15,12 L18,9 20,8 23,8 25,9 26,12 26,22`,o:15},{d:`M4,8 L4,22 M4,12 L7,9 9,8 12,8 14,9 15,12 15,22`,o:10},{d:`M8,8 L6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19 16,16 16,14 15,11 13,9 11,8 8,8`,o:10},{d:`M4,8 L4,29 M4,11 L6,9 8,8 11,8 13,9 15,11 16,14 16,16 15,19 13,21 11,22 8,22 6,21 4,19`,o:9},{d:`M15,8 L15,29 M15,11 L13,9 11,8 8,8 6,9 4,11 3,14 3,16 4,19 6,21 8,22 11,22 13,21 15,19`,o:10},{d:`M4,8 L4,22 M4,14 L5,11 7,9 9,8 12,8`,o:6},{d:`M14,11 L13,9 10,8 7,8 4,9 3,11 4,13 6,14 11,15 13,16 14,18 14,19 13,21 10,22 7,22 4,21 3,19`,o:9},{d:`M5,1 L5,18 6,21 8,22 10,22 M2,8 L9,8`,o:7},{d:`M4,8 L4,18 5,21 7,22 10,22 12,21 15,18 M15,8 L15,22`,o:10},{d:`M2,8 L8,22 M14,8 L8,22`,o:8},{d:`M3,8 L7,22 M11,8 L7,22 M11,8 L15,22 M19,8 L15,22`,o:11},{d:`M3,8 L14,22 M14,8 L3,22`,o:9},{d:`M2,8 L8,22 M14,8 L8,22 6,26 4,28 2,29 1,29`,o:8},{d:`M14,8 L3,22 M3,8 L14,8 M3,22 L14,22`,o:9},{d:`M9,-3 L7,-2 6,-1 5,1 5,3 6,5 7,6 8,8 8,10 6,12 M7,-2 L6,0 6,2 7,4 8,5 9,7 9,9 8,11 4,13 8,15 9,17 9,19 8,21 7,22 6,24 6,26 7,28 M6,14 L8,16 8,18 7,20 6,21 5,23 5,25 6,27 7,28 9,29`,o:7},{d:`M4,-3 L4,29`,o:4},{d:`M5,-3 L7,-2 8,-1 9,1 9,3 8,5 7,6 6,8 6,10 8,12 M7,-2 L8,0 8,2 7,4 6,5 5,7 5,9 6,11 10,13 6,15 5,17 5,19 6,21 7,22 8,24 8,26 7,28 M8,14 L6,16 6,18 7,20 8,21 9,23 9,25 8,27 7,28 5,29`,o:7},{d:`M3,16 L3,14 4,11 6,10 8,10 10,11 14,14 16,15 18,15 20,14 21,12 M3,14 L4,12 6,11 8,11 10,12 14,15 16,16 18,16 20,15 21,12 21,10`,o:12},{d:`M0,1 L0,22 1,22 1,1 2,1 2,22 3,22 3,1 4,1 4,22 5,22 5,1 6,1 6,22 7,22 7,1 8,1 8,22 9,22 9,1 10,1 10,22 11,22 11,1 12,1 12,22 13,22 13,1 14,1 14,22 15,22 15,1 16,1 16,22`,o:8}]},Ij=null;function Lj(e){let t=[],n=null;for(let r of e.trim().split(/\s+/)){let e=r,i=``;(e[0]===`M`||e[0]===`L`)&&(i=e[0],e=e.slice(1));let a=e.indexOf(`,`);if(a<0)continue;let o=parseFloat(e.slice(0,a)),s=parseFloat(e.slice(a+1));Number.isNaN(o)||Number.isNaN(s)||(i===`M`?(n=[[o,s]],t.push(n)):n?n.push([o,s]):(n=[[o,s]],t.push(n)))}return t}function Rj(e=Fj){if(Ij&&e===Fj)return Ij;if(!e||!Array.isArray(e.chars))return null;let t=e.chars.map(e=>({polylines:Lj(e.d||``),o:e.o})),n=1/0,r=-1/0,i=e=>{let i=t[e-33];if(!i)return!1;let a=!1;for(let e of i.polylines)for(let t of e)t[1]<n&&(n=t[1]),t[1]>r&&(r=t[1]),a=!0;return a};i(72)||i(69)||i(88)||i(73),(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)&&(n=4,r=21);let a=r-n,o=a*.14,s=new Map;for(let e=0;e<t.length;e++){let n=t[e],i=1/0,c=-1/0;for(let e of n.polylines)for(let t of e)t[0]<i&&(i=t[0]),t[0]>c&&(c=t[0]);let l=Number.isFinite(i),u=l?i:0,d=l?c-i:n.o,f=n.polylines.map(e=>e.map(([e,t])=>[(e-u)/a,(r-t)/a]));s.set(33+e,{polylines:f,advance:(d+o)/a})}return e===Fj&&(Ij=s),s}var zj=1024,Bj=`https://cdn.jsdelivr.net/npm/hanzi-writer-data@latest`;function Vj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}var Hj=new Map;function Uj(e,t,n){return r(this,void 0,void 0,function*(){var r;if(Hj.has(e))return Hj.get(e);let i=null;try{if(t)i=(r=yield t(e))==null?null:r;else if(typeof fetch<`u`){let t=yield fetch(`${n}/${encodeURIComponent(e)}.json`);t.ok&&(i=yield t.json())}}catch(e){i=null}return Hj.set(e,i),i})}function Wj(e){return r(this,arguments,void 0,function*(e,t={}){var n;let{size:r=1,letterSpacing:i=0,lineSpacing:a=1.4,normal:o,up:s,center:c=!0,position:l,smooth:u=!0,smoothSubdivisions:d=4,cdnBaseUrl:f=Bj,charDataLoader:p,latinScale:m=.72}=t,h=Rj(),g=[],_=0,v=0;for(let t of Array.from(e)){if(t===`
1152
+ `){_=0,v-=a;continue}if(t===` `){_+=.4+i;continue}let e=(n=t.codePointAt(0))==null?0:n;if(e>=33&&e<=126){let n=h==null?void 0:h.get(e);if(n){for(let e of n.polylines)e.length<2||g.push({pts:e.map(([e,t])=>new at(_+e*m,v+t*m)),mode:`corner`});_+=n.advance*m+i;continue}console.warn(`textToStrokeOrderStrokes: 无法生成字符 "${t}"(非浏览器环境或字形为空),按空格处理`),_+=.5*m+i;continue}let r=yield Uj(t,p,f);if(r&&r.medians&&r.medians.length){for(let e of r.medians)e.length<2||g.push({pts:e.map(([e,t])=>new at(_+e/zj,v+t/zj)),mode:`full`});_+=1+i}else console.warn(`textToStrokeOrderStrokes: 未找到 "${t}" 的笔画数据,按空格处理`),_+=1+i}if(g.length===0)return[];let y=1/0,b=1/0,x=-1/0,S=-1/0;for(let e of g)for(let t of e.pts)t.x<y&&(y=t.x),t.x>x&&(x=t.x),t.y<b&&(b=t.y),t.y>S&&(S=t.y);let C=c?(y+x)/2:0,ee=c?(b+S)/2:0,te=l==null?new D:l,ne=(o==null?new D(0,0,1):o).clone();ne.lengthSq()<1e-9&&ne.set(0,0,1),ne.normalize();let w;if(s){let e=s.clone().addScaledVector(ne,-s.dot(ne));e.lengthSq()>1e-9&&(w=e.normalize())}let re;if(w)re=new D().crossVectors(w,ne).normalize();else{let e=Math.abs(ne.y)>.99?new D(0,0,-1):new D(0,1,0);re=new D().crossVectors(e,ne).normalize(),w=new D().crossVectors(ne,re).normalize()}let ie=e=>new D().copy(te).addScaledVector(re,(e.x-C)*r).addScaledVector(w,(e.y-ee)*r);return g.map(e=>{let t=e.pts.map(ie);return u&&t.length>=2&&(t=e.mode===`corner`?qj(t,d):Gj(t,d)),{points:t,totalLength:Vj(t)}})})}function Gj(e,t){return e.length<3?e:new pi(e,!1,`centripetal`).getPoints(Math.max(e.length*t,8))}var Kj=.2;function qj(e,t){if(e.length<3)return e;let n=new Tn().setFromPoints(e),r=n.min.distanceTo(n.max),i=r>1e-9&&e[0].distanceTo(e[e.length-1])<r*.06,a=i?e.slice(0,-1):e,o=a.length;if(o<3)return e;let s=new D,c=new D,l=e=>{if(!i&&(e===0||e===o-1))return!0;let t=(e-1+o)%o,n=(e+1)%o;s.subVectors(a[e],a[t]),c.subVectors(a[n],a[e]);let r=s.length(),l=c.length();return r<1e-6||l<1e-6?!1:s.dot(c)/(r*l)<Kj},u=[];for(let e=0;e<o;e++)l(e)&&u.push(e);if(u.length===0)return new pi(a,i,`centripetal`).getPoints(Math.max(o*t,8));let d=(e,t)=>{let n=[],r=e;for(;n.push(a[r]),r!==t;)r=(r+1)%o;return n},f=u.length,p=i?f:f-1,m=[];for(let e=0;e<p;e++){let n=d(u[e],u[(e+1)%f]),r=n.length>=3?new pi(n,!1,`centripetal`).getPoints(Math.max((n.length-1)*t,2)):n;for(let t=0;t<r.length;t++)e>0&&t===0||m.push(r[t])}return m}var Jj=class extends o.Controller{updateState(e,t){let n=this.state;this.state=Object.assign(Object.assign({},this.state),e),this.hooks.emit(`stateChange`,{state:this.state,prevState:n,userAction:t})}constructor(e,t){var n,r;super(e),this.dispose=()=>{this.disable(),this.wordPass.dispose()},this.five=e;let i={enabled:!1,visible:!0};this.state=Object.assign(i,t==null?void 0:t.initialState);let a=(r=(n=t==null?void 0:t.config)==null?void 0:n.outputType)==null?e.enableHDR?w:ee:r;this.wordPass=new Pj(e.camera,a),this.state.enabled&&this._enable()}load(){return r(this,void 0,void 0,function*(){})}_enable(){this.five.addPass(this.wordPass),this.wordPass.enabled=this.state.visible,this.five.needsRender=!0}_disable(){this.five.removePass(this.wordPass),this.wordPass.clearWords(),this.five.needsRender=!0}enable(e){var t;if(this.state.enabled)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!0},n),this._enable()}disable(e){var t;if(this.state.enabled===!1)return;let n=(t=e==null?void 0:e.userAction)==null?!0:t;this.updateState({enabled:!1},n),this._disable()}setState(e,t={}){var n;let r=this.state,i=(n=t.userAction)==null?!0:n;this.updateState(e,i),e.enabled!==void 0&&r.enabled!==e.enabled&&(e.enabled?this._enable():this._disable()),e.visible!==void 0&&r.visible!==e.visible&&(this.wordPass.enabled=e.visible,this.five.needsRender=!0)}setWords(e){let t=this.wordPass.setWords(e);return this.five.needsRender=!0,t}addWord(...e){let t=this.wordPass.addWord(...e);return this.five.needsRender=!0,t}removeWord(...e){let t=this.wordPass.removeWord(...e);return this.five.needsRender=!0,t}setWord(e){this.wordPass.setWord(e),this.five.needsRender=!0}clearWords(){this.wordPass.clearWords(),this.five.needsRender=!0}hasWord(e){return this.wordPass.hasWord(e)}setMaxDisplayBoost(e){this.wordPass.setMaxDisplayBoost(e),this.five.needsRender=!0}writeText(e){return r(this,arguments,void 0,function*(e,t={}){let{size:r,letterSpacing:i,lineSpacing:a,normal:o,up:s,center:c,position:l,smooth:u,smoothSubdivisions:d,cdnBaseUrl:f,charDataLoader:p,latinScale:m}=t,h=n(t,[`size`,`letterSpacing`,`lineSpacing`,`normal`,`up`,`center`,`position`,`smooth`,`smoothSubdivisions`,`cdnBaseUrl`,`charDataLoader`,`latinScale`]),g=yield Wj(e,{size:r,letterSpacing:i,lineSpacing:a,normal:o,up:s,center:c,position:l,smooth:u,smoothSubdivisions:d,cdnBaseUrl:f,charDataLoader:p,latinScale:m});this.state.enabled||this.enable(),h.id!==void 0&&this.hasWord(h.id)&&this.removeWord(h.id);let[_]=this.addWord(Object.assign(Object.assign({},h),{strokes:g}));return _})}},Yj=(e,t)=>new Jj(e,t);function Xj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}function Zj(e){let t=0;for(let n=1;n<e.length;n++)t+=e[n].distanceTo(e[n-1]);return t}e.BackgroundPlugin=c,Object.defineProperty(e,"BasePlugin",{enumerable:!0,get:function(){return o}}),e.CSS2DPlugin=uT,e.CSS3DPlugin=xT,e.FloorplanPlugin=Cj,e.GaussianSplattingEntranceAnimationPlugin=Ej,e.Object3DHelperController=_w,e.Object3DHelperPlugin=vw,e.PanoAnimePlugin=Qw,e.WordPassPlugin=Yj,e.calculatePath2DLength=Zj,e.calculatePath3DLength=Xj,e.formatFloorplanJson=cj,e.loadHersheyFont=Rj,e.textToStrokeOrderStrokes=Wj});