@realsee/dnalogel 3.69.1 → 3.69.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/CHANGELOG.md +3 -26
  2. package/dist/CSS3DRenderPlugin/Controller.d.ts +4 -0
  3. package/dist/CurrentPanoImagePlugin/Controller.d.ts +2 -1
  4. package/dist/GuideLinePlugin/Controller.d.ts +0 -1
  5. package/dist/MeasurePlugin/Controller.d.ts +3 -26
  6. package/dist/MeasurePlugin/index.d.ts +1 -7
  7. package/dist/PanoTagPlugin/typings/controller.d.ts +0 -3
  8. package/dist/Sculpt/typings/style.d.ts +0 -5
  9. package/dist/Sculpt/utils/unit.d.ts +1 -1
  10. package/dist/base/BasePlugin.d.ts +4 -0
  11. package/dist/floorplan/PanoFloorplanRadarPlugin/typing.d.ts +0 -2
  12. package/dist/floorplan/typings/index.d.ts +0 -2
  13. package/dist/index.cjs.js +72 -72
  14. package/dist/index.js +8074 -8219
  15. package/dist/index.umd.js +64 -64
  16. package/dist/shared-utils/index.d.ts +1 -2
  17. package/dist/shared-utils/three/Magnifier.d.ts +0 -2
  18. package/dist/shared-utils/three/PointSelector/index.d.ts +0 -5
  19. package/dist/shared-utils/three/PointSelector/utils/PointSelectorHelper.d.ts +0 -1
  20. package/docs/assets/navigation.js +1 -1
  21. package/docs/assets/search.js +1 -1
  22. package/docs/classes/AreaMakerPluginType.AreaMakerController.html +7 -5
  23. package/docs/classes/AreaMakerPluginType.AreaMakerItem.html +2 -2
  24. package/docs/classes/CSS3DRender.html +2 -2
  25. package/docs/classes/GuideLineItem.GuideLineItem.html +2 -2
  26. package/docs/classes/GuideLineModeItem.GuideLineModeItem.html +2 -2
  27. package/docs/classes/ModelMakerPluginInstance.html +7 -5
  28. package/docs/classes/ModelMakerPluginType.ModelMakerBoxItem.html +2 -2
  29. package/docs/classes/ModelMakerPluginType.ModelMakerPolygonItem.html +2 -2
  30. package/docs/classes/ModelMakerPluginType.ModelMakerPrismItem.html +2 -2
  31. package/docs/classes/ModelRoomLabelController.html +2 -2
  32. package/docs/classes/MoveController.html +7 -5
  33. package/docs/classes/Object3DHelperController.html +7 -5
  34. package/docs/classes/PaintBrush.html +2 -2
  35. package/docs/classes/PanoMeasurePluginLine.html +2 -2
  36. package/docs/classes/PanoMeasurePluginModel.html +2 -2
  37. package/docs/classes/PanoMeasurePluginPoint.html +2 -2
  38. package/docs/classes/PanoMeasurePluginPolyline.html +2 -2
  39. package/docs/classes/PanoTagPluginController.html +34 -32
  40. package/docs/classes/Sculpt.html +2 -2
  41. package/docs/classes/Util.BetterTween.html +2 -2
  42. package/docs/classes/Util.FiveDomEvents.html +2 -2
  43. package/docs/classes/Util.FivePuppet.html +2 -2
  44. package/docs/classes/Util.Interval.html +2 -2
  45. package/docs/classes/Util.LegacyPointHelper.html +2 -2
  46. package/docs/classes/Util.LightTag.html +2 -2
  47. package/docs/classes/Util.LineSegments.html +2 -2
  48. package/docs/classes/Util.Magnifier.html +8 -8
  49. package/docs/classes/Util.Object3D.html +2 -2
  50. package/docs/classes/Util.PointDomHelper.html +2 -2
  51. package/docs/classes/Util.PointHelper.html +2 -2
  52. package/docs/classes/Util.PointSelector.html +12 -12
  53. package/docs/classes/Util.PointSelectorHelper.html +2 -2
  54. package/docs/classes/Util.Rectangle.html +2 -2
  55. package/docs/classes/Util.sculpt.BaseEditor.html +2 -2
  56. package/docs/classes/Util.sculpt.BoxMesh.html +5 -5
  57. package/docs/classes/Util.sculpt.BoxMeshEditor.html +2 -2
  58. package/docs/classes/Util.sculpt.CircleMesh.html +2 -2
  59. package/docs/classes/Util.sculpt.CircleMeshEditor.html +2 -2
  60. package/docs/classes/Util.sculpt.CircleWithEdgeMesh.html +2 -2
  61. package/docs/classes/Util.sculpt.CylinderMesh.html +2 -2
  62. package/docs/classes/Util.sculpt.CylinderMeshEditor.html +2 -2
  63. package/docs/classes/Util.sculpt.LineMesh.html +2 -2
  64. package/docs/classes/Util.sculpt.PointMesh.html +2 -2
  65. package/docs/classes/Util.sculpt.PolygonMesh.html +2 -2
  66. package/docs/classes/Util.sculpt.PrismMesh.html +5 -5
  67. package/docs/classes/Util.sculpt.PrismMeshEditor.html +2 -2
  68. package/docs/classes/Util.sculpt.RectangleMesh.html +2 -2
  69. package/docs/classes/Util.sculpt.RectangleMeshEditor.html +2 -2
  70. package/docs/classes/Util.sculpt.RectangleWithEdgeMesh.html +2 -2
  71. package/docs/classes/WalkController.html +7 -5
  72. package/docs/enums/CameraMovementEffect.html +2 -2
  73. package/docs/enums/ContentType.html +2 -2
  74. package/docs/enums/DIRECTION.html +2 -2
  75. package/docs/enums/DISPLAY_STRATEGY_TYPE.html +2 -2
  76. package/docs/enums/DimensionType.html +2 -2
  77. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +2 -2
  78. package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +2 -2
  79. package/docs/enums/PaintBrushTypeEnum.html +2 -2
  80. package/docs/enums/PointType.html +2 -2
  81. package/docs/enums/Rotation.html +2 -2
  82. package/docs/functions/AreaMakerPlugin.html +1 -1
  83. package/docs/functions/CSS3DRenderPlugin.html +1 -1
  84. package/docs/functions/CameraMovementPlugin.html +2 -2
  85. package/docs/functions/CruisePlugin.html +1 -1
  86. package/docs/functions/CurrentPanoImagePlugin.html +1 -1
  87. package/docs/functions/GuideLinePlugin.html +1 -1
  88. package/docs/functions/ItemLabelPlugin.html +1 -1
  89. package/docs/functions/MapviewFloorplanPlugin.html +1 -1
  90. package/docs/functions/MeasurePlugin.html +1 -1
  91. package/docs/functions/ModelChassisCompassPlugin.html +2 -2
  92. package/docs/functions/ModelEntryDoorGuidePlugin.html +2 -2
  93. package/docs/functions/ModelFloorplanPlugin.html +1 -1
  94. package/docs/functions/ModelItemLabelPlugin.html +1 -1
  95. package/docs/functions/ModelMakerPlugin.html +1 -1
  96. package/docs/functions/ModelRoomLabelPlugin.html +1 -1
  97. package/docs/functions/ModelTVVideoPlugin.html +1 -1
  98. package/docs/functions/ModelViewPlugin.html +2 -2
  99. package/docs/functions/MovePlugin.html +1 -1
  100. package/docs/functions/Object3DHelperPlugin.html +1 -1
  101. package/docs/functions/PanoCompassPlugin.html +1 -1
  102. package/docs/functions/PanoCursorRaycasterPlugin.html +2 -2
  103. package/docs/functions/PanoDoorLabelPlugin.html +1 -1
  104. package/docs/functions/PanoFloorplanRadarPlugin.html +1 -1
  105. package/docs/functions/PanoMeasurePlugin.html +1 -1
  106. package/docs/functions/PanoRulerPlugin.html +2 -2
  107. package/docs/functions/PanoRulerProPlugin.html +2 -2
  108. package/docs/functions/PanoSpatialTagPlugin.html +2 -2
  109. package/docs/functions/PanoTagPlugin.html +1 -1
  110. package/docs/functions/PanoVideoPlugin.html +2 -2
  111. package/docs/functions/PipelinePlugin.html +1 -1
  112. package/docs/functions/SculptPlugin.html +2 -2
  113. package/docs/functions/SculptPluginForFive.html +2 -2
  114. package/docs/functions/TopviewFloorplanPlugin.html +1 -1
  115. package/docs/functions/Util.absoluteUrl.html +2 -0
  116. package/docs/functions/Util.awaitNextFrame.html +1 -1
  117. package/docs/functions/Util.blink.html +2 -2
  118. package/docs/functions/Util.bounding.html +1 -1
  119. package/docs/functions/Util.boundingBox.html +1 -1
  120. package/docs/functions/Util.boundingSphere.html +1 -1
  121. package/docs/functions/Util.boxVertex.html +2 -2
  122. package/docs/functions/Util.boxVertexes.html +1 -1
  123. package/docs/functions/Util.checkFiveModelLoaded.html +2 -2
  124. package/docs/functions/Util.convexHull.html +2 -2
  125. package/docs/functions/Util.equal.html +2 -2
  126. package/docs/functions/Util.fiveModelIsLoaded.html +2 -2
  127. package/docs/functions/Util.getCoordsFromClient.html +1 -1
  128. package/docs/functions/Util.getCoordsFromElement.html +1 -1
  129. package/docs/functions/Util.getFrameTime.html +2 -2
  130. package/docs/functions/Util.getIntersectFromRelativePosition.html +1 -1
  131. package/docs/functions/Util.getRaycasterFromFivePointer.html +1 -1
  132. package/docs/functions/Util.initialCSS3DRender.html +1 -1
  133. package/docs/functions/Util.inside.html +1 -1
  134. package/docs/functions/Util.isAbsoluteURL.html +1 -0
  135. package/docs/functions/Util.isModelLike.html +1 -1
  136. package/docs/functions/Util.isNil.html +2 -2
  137. package/docs/functions/Util.isPanoramaLike.html +1 -1
  138. package/docs/functions/Util.lookObject.html +2 -2
  139. package/docs/functions/Util.lookPoint.html +2 -2
  140. package/docs/functions/Util.nextFrame.html +1 -1
  141. package/docs/functions/Util.notNil.html +2 -2
  142. package/docs/functions/Util.reblink.html +2 -2
  143. package/docs/functions/Util.requestAnimationFrameInterval.html +2 -2
  144. package/docs/functions/Util.sculpt.createBox.html +1 -1
  145. package/docs/functions/Util.sculpt.createCircle.html +1 -1
  146. package/docs/functions/Util.sculpt.createCylinder.html +1 -1
  147. package/docs/functions/Util.sculpt.createLine.html +2 -2
  148. package/docs/functions/Util.sculpt.createPoint.html +1 -1
  149. package/docs/functions/Util.sculpt.createPolygon.html +1 -1
  150. package/docs/functions/Util.sculpt.createPrism.html +1 -1
  151. package/docs/functions/Util.sculpt.createRectangle.html +2 -2
  152. package/docs/functions/Util.tag.html +1 -1
  153. package/docs/functions/Util.tweenProgress.html +1 -1
  154. package/docs/functions/Util.uuid.html +2 -2
  155. package/docs/functions/Util.waitFiveModelLoaded.html +2 -2
  156. package/docs/functions/Util.worldBounding.html +1 -1
  157. package/docs/functions/Util.worldBoundingBox.html +1 -1
  158. package/docs/functions/Util.worldBoundingSphere.html +1 -1
  159. package/docs/functions/createPolyline.html +2 -2
  160. package/docs/functions/pluginFlag.html +1 -1
  161. package/docs/hierarchy.html +1 -1
  162. package/docs/index.html +2 -2
  163. package/docs/interfaces/AreaMakerPluginType.AnimeOptions.html +2 -2
  164. package/docs/interfaces/AreaMakerPluginType.Config.html +2 -2
  165. package/docs/interfaces/AreaMakerPluginType.EventMap.html +2 -2
  166. package/docs/interfaces/AreaMakerPluginType.Params.html +2 -2
  167. package/docs/interfaces/AreaMakerPluginType.ServerAreaMakerItem.html +2 -2
  168. package/docs/interfaces/AreaMakerPluginType.ServerAreaMakerItemV1.html +2 -2
  169. package/docs/interfaces/AreaMakerPluginType.ServerDataV1.html +2 -2
  170. package/docs/interfaces/AreaMakerPluginType.ServerDataV2.html +2 -2
  171. package/docs/interfaces/AreaMakerPluginType.ShowHideOptions.html +2 -2
  172. package/docs/interfaces/AreaMakerPluginType.State.html +2 -2
  173. package/docs/interfaces/CSS3DRenderPluginEventMap.html +2 -2
  174. package/docs/interfaces/CSS3DRenderPluginState.html +2 -2
  175. package/docs/interfaces/CameraMovementPluginExportType.html +2 -2
  176. package/docs/interfaces/ContentTypeMapInterface.html +2 -2
  177. package/docs/interfaces/CruisePluginTypes.Config.html +2 -2
  178. package/docs/interfaces/CruisePluginTypes.CruiseKeyframe.html +2 -2
  179. package/docs/interfaces/CruisePluginTypes.EventMap.html +2 -2
  180. package/docs/interfaces/CruisePluginTypes.GuildLineConfig.html +2 -2
  181. package/docs/interfaces/CruisePluginTypes.MoveAction.html +2 -2
  182. package/docs/interfaces/CruisePluginTypes.MoveWithKeyframesAction.html +2 -2
  183. package/docs/interfaces/CruisePluginTypes.MoveWithPanoIndexAction.html +2 -2
  184. package/docs/interfaces/CruisePluginTypes.PluginData.html +2 -2
  185. package/docs/interfaces/CruisePluginTypes.PluginServerData.html +2 -2
  186. package/docs/interfaces/CruisePluginTypes.PluginState.html +2 -2
  187. package/docs/interfaces/CurrentPanoImagePluginType.Config.html +2 -2
  188. package/docs/interfaces/CurrentPanoImagePluginType.EventMap.html +2 -2
  189. package/docs/interfaces/CurrentPanoImagePluginType.Params.html +2 -2
  190. package/docs/interfaces/CurrentPanoImagePluginType.ShowHideOptions.html +2 -2
  191. package/docs/interfaces/CurrentPanoImagePluginType.State.html +2 -2
  192. package/docs/interfaces/FloorplanBounding.html +2 -2
  193. package/docs/interfaces/FloorplanData.html +2 -2
  194. package/docs/interfaces/FloorplanEntrance.html +2 -2
  195. package/docs/interfaces/FloorplanExtraObject.html +2 -2
  196. package/docs/interfaces/FloorplanExtraObject3D.html +2 -2
  197. package/docs/interfaces/FloorplanFloorData.html +2 -2
  198. package/docs/interfaces/FloorplanImagePosition.html +2 -2
  199. package/docs/interfaces/FloorplanObserver.html +2 -2
  200. package/docs/interfaces/FloorplanOutlineItem.html +2 -2
  201. package/docs/interfaces/FloorplanPosition.html +2 -2
  202. package/docs/interfaces/FloorplanRoomItem.html +2 -2
  203. package/docs/interfaces/FloorplanRoomLabelItem.html +2 -2
  204. package/docs/interfaces/FloorplanServerBounding.html +2 -2
  205. package/docs/interfaces/FloorplanServerComputedData.html +2 -2
  206. package/docs/interfaces/FloorplanServerData.html +2 -2
  207. package/docs/interfaces/FloorplanServerDoorItem.html +2 -2
  208. package/docs/interfaces/FloorplanServerDoorPosition.html +2 -2
  209. package/docs/interfaces/FloorplanServerEntrance.html +2 -2
  210. package/docs/interfaces/FloorplanServerFloorData.html +2 -2
  211. package/docs/interfaces/FloorplanServerImagePosition.html +2 -2
  212. package/docs/interfaces/FloorplanServerObserver.html +2 -2
  213. package/docs/interfaces/FloorplanServerOutlineItem.html +2 -2
  214. package/docs/interfaces/FloorplanServerPosition.html +2 -2
  215. package/docs/interfaces/FloorplanServerRoomItem.html +2 -2
  216. package/docs/interfaces/FloorplanServerRoomLabelItem.html +2 -2
  217. package/docs/interfaces/GuideLineModeItem.GuideLineTagContainer.html +2 -2
  218. package/docs/interfaces/GuideLinePluginType.CatmullRomCurve3.html +2 -2
  219. package/docs/interfaces/GuideLinePluginType.EventMap.html +2 -2
  220. package/docs/interfaces/GuideLinePluginType.ExtraRouteData.html +2 -2
  221. package/docs/interfaces/GuideLinePluginType.GuideLineGeometryStyle.html +2 -2
  222. package/docs/interfaces/GuideLinePluginType.GuideLineItemContainer.html +2 -2
  223. package/docs/interfaces/GuideLinePluginType.GuideLineMaterialStyle.html +2 -2
  224. package/docs/interfaces/GuideLinePluginType.GuideLineMeshStyle.html +2 -2
  225. package/docs/interfaces/GuideLinePluginType.LineGeometriesConfig.html +2 -2
  226. package/docs/interfaces/GuideLinePluginType.ModelGuideLineStyle.html +2 -2
  227. package/docs/interfaces/GuideLinePluginType.ModelGuideLineTagData.html +2 -2
  228. package/docs/interfaces/GuideLinePluginType.PanoramaGuideLineStyle.html +2 -2
  229. package/docs/interfaces/GuideLinePluginType.PluginDataV2.html +1 -1
  230. package/docs/interfaces/GuideLinePluginType.PluginServerData.html +2 -2
  231. package/docs/interfaces/GuideLinePluginType.PluginState.html +2 -2
  232. package/docs/interfaces/GuideLinePluginType.Route.html +2 -2
  233. package/docs/interfaces/HelperOffset.html +2 -2
  234. package/docs/interfaces/ImagePlaneGroup.html +2 -2
  235. package/docs/interfaces/ItemLabelPluginData.html +2 -2
  236. package/docs/interfaces/ItemLabelPluginExportReturnsType.html +2 -2
  237. package/docs/interfaces/ItemLabelPluginParametersType.html +2 -2
  238. package/docs/interfaces/MinMax.html +2 -2
  239. package/docs/interfaces/ModelChassisCompassPluginData.html +2 -2
  240. package/docs/interfaces/ModelChassisCompassPluginExportType.html +2 -2
  241. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +2 -2
  242. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +2 -2
  243. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +2 -2
  244. package/docs/interfaces/ModelItemLabelPluginData.html +2 -2
  245. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +2 -2
  246. package/docs/interfaces/ModelItemLabelPluginParametersType.html +2 -2
  247. package/docs/interfaces/ModelMakerPluginType.BoxItemObjectData.html +2 -2
  248. package/docs/interfaces/ModelMakerPluginType.EventMap.html +2 -2
  249. package/docs/interfaces/ModelMakerPluginType.PrismItemObjectData.html +2 -2
  250. package/docs/interfaces/ModelMakerPluginType.ServerBaseItem.html +2 -2
  251. package/docs/interfaces/ModelMakerPluginType.ServerBoxItem.html +2 -2
  252. package/docs/interfaces/ModelMakerPluginType.ServerData.html +2 -2
  253. package/docs/interfaces/ModelMakerPluginType.ServerPrismItem.html +2 -2
  254. package/docs/interfaces/ModelMakerPluginType.ServerTrianglesItem.html +2 -2
  255. package/docs/interfaces/ModelMakerPluginType.State.html +2 -2
  256. package/docs/interfaces/ModelMakerPluginType.TrianglesItemObjectData.html +2 -2
  257. package/docs/interfaces/ModelRoomLabelPluginData.html +2 -2
  258. package/docs/interfaces/ModelTVVideoPluginData.html +2 -2
  259. package/docs/interfaces/ModelTVVideoPluginExportType.html +2 -2
  260. package/docs/interfaces/ModelTVVideoPluginParameterType.html +2 -2
  261. package/docs/interfaces/ModelViewPluginExportType.html +2 -2
  262. package/docs/interfaces/Object3DHelperState.html +2 -2
  263. package/docs/interfaces/ObjectHelperControllers.html +2 -2
  264. package/docs/interfaces/PaintBrushAction.html +2 -2
  265. package/docs/interfaces/PaintBrushConfigs.html +2 -2
  266. package/docs/interfaces/PaintBrushState.html +2 -2
  267. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +2 -2
  268. package/docs/interfaces/PanoCursorRaycasterPluginParameterType.html +1 -1
  269. package/docs/interfaces/PanoMeasureParameterType.html +2 -2
  270. package/docs/interfaces/PanoMeasurePluginLineJson.html +2 -2
  271. package/docs/interfaces/PanoMeasurePluginOpenParameter.html +2 -2
  272. package/docs/interfaces/PanoMeasurePluginPointJson.html +2 -2
  273. package/docs/interfaces/PanoMeasurePluginPolylineJson.html +2 -2
  274. package/docs/interfaces/PanoRulerPluginExportType.html +2 -2
  275. package/docs/interfaces/PanoRulerPluginOptions.html +2 -2
  276. package/docs/interfaces/PanoRulerPluginParameterType.html +2 -2
  277. package/docs/interfaces/PanoRulerProPluginExportType.html +2 -2
  278. package/docs/interfaces/PanoRulerProPluginOptions.html +2 -2
  279. package/docs/interfaces/PanoRulerProPluginParameterType.html +2 -2
  280. package/docs/interfaces/PanoRulerProPluginState.html +2 -2
  281. package/docs/interfaces/PanoSpatialTagPluginContentEvent.html +1 -1
  282. package/docs/interfaces/PanoSpatialTagPluginContentReplacement.html +1 -1
  283. package/docs/interfaces/PanoSpatialTagPluginData.html +2 -2
  284. package/docs/interfaces/PanoSpatialTagPluginDataElement.html +2 -2
  285. package/docs/interfaces/PanoSpatialTagPluginExportType.html +2 -2
  286. package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +2 -2
  287. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +2 -2
  288. package/docs/interfaces/PanoSpatialTagPluginPointElement.html +2 -2
  289. package/docs/interfaces/PanoSpatialTagPluginTagElement.html +2 -2
  290. package/docs/interfaces/PanoVideoPluginType.LoadParams.html +2 -2
  291. package/docs/interfaces/PanoVideoPluginType.PanoVideoItem.html +2 -2
  292. package/docs/interfaces/PanoVideoPluginType.PluginData.html +2 -2
  293. package/docs/interfaces/PanoVideoPluginType.PluginEventMap.html +2 -2
  294. package/docs/interfaces/PanoVideoPluginType.PluginState.html +2 -2
  295. package/docs/interfaces/PanoVideoPluginType.VideoItem.html +2 -2
  296. package/docs/interfaces/PanoVideoPluginType.VideoMeshParams.html +2 -2
  297. package/docs/interfaces/PluginEventMap.html +3 -4
  298. package/docs/interfaces/Point.html +2 -2
  299. package/docs/interfaces/Room.html +2 -2
  300. package/docs/interfaces/RoomInfo.html +2 -2
  301. package/docs/interfaces/RoomLabel.html +2 -2
  302. package/docs/interfaces/RoomRules.html +1 -1
  303. package/docs/interfaces/Rooms.html +1 -1
  304. package/docs/interfaces/Scissor.html +2 -2
  305. package/docs/interfaces/SculptConfig.html +2 -2
  306. package/docs/interfaces/State.html +2 -2
  307. package/docs/interfaces/TagCacheInterface.html +3 -3
  308. package/docs/interfaces/TagConfig.html +2 -2
  309. package/docs/interfaces/TagGLTFObjectGroup.html +2 -2
  310. package/docs/interfaces/TagIconUrl.html +2 -2
  311. package/docs/interfaces/TagObjectGroup.html +2 -2
  312. package/docs/interfaces/TagState.html +2 -2
  313. package/docs/interfaces/TagStyle.html +2 -2
  314. package/docs/interfaces/Tags.html +2 -2
  315. package/docs/interfaces/TemporaryState.html +2 -2
  316. package/docs/interfaces/Util.AnimeInstance.html +2 -2
  317. package/docs/interfaces/Util.BlinkAnimeOptions.html +2 -2
  318. package/docs/interfaces/Util.EventHandlerConfig.html +2 -2
  319. package/docs/interfaces/Util.FiveDomEvent.html +2 -2
  320. package/docs/interfaces/Util.FiveDomEventMap.html +2 -2
  321. package/docs/interfaces/Util.LegacyMouseGroupParameter.html +2 -2
  322. package/docs/interfaces/Util.MagnifierParameter.html +4 -6
  323. package/docs/interfaces/Util.MouseGroupParameter.html +2 -2
  324. package/docs/interfaces/Util.PointIntersection.html +8 -8
  325. package/docs/interfaces/Util.PointSelectorHelperConfig.html +2 -3
  326. package/docs/interfaces/Util.ReBlinkAnimeOptions.html +2 -2
  327. package/docs/modules/AreaMakerPluginType.html +2 -2
  328. package/docs/modules/CruisePluginTypes.html +2 -2
  329. package/docs/modules/CurrentPanoImagePluginType.html +2 -2
  330. package/docs/modules/GuideLineItem.html +2 -2
  331. package/docs/modules/GuideLineModeItem.html +2 -2
  332. package/docs/modules/GuideLinePluginType.html +2 -2
  333. package/docs/modules/ModelMakerPluginType.html +2 -2
  334. package/docs/modules/PanoVideoPluginType.html +2 -2
  335. package/docs/modules/SculptData.html +2 -2
  336. package/docs/modules/SculptType.html +2 -2
  337. package/docs/modules/Util.html +5 -16
  338. package/docs/modules/Util.sculpt.html +2 -2
  339. package/docs/modules.html +2 -3
  340. package/docs/types/AddObject3DHelperConfig.html +2 -2
  341. package/docs/types/AreaMakerPluginType.AreaMakerItemEventMap.html +2 -2
  342. package/docs/types/AreaMakerPluginType.ItemRenderer.html +1 -1
  343. package/docs/types/AreaMakerPluginType.PluginData.html +2 -2
  344. package/docs/types/AreaMakerPluginType.ServerData.html +2 -2
  345. package/docs/types/ArrayPosition.html +1 -1
  346. package/docs/types/AudioAppearance.html +1 -1
  347. package/docs/types/CSS3DRenderExportType.html +1 -1
  348. package/docs/types/CSS3DRenderPluginExportType.html +1 -1
  349. package/docs/types/CSS3DRenderPluginParameterType.html +1 -1
  350. package/docs/types/ClassFunctionParameters.html +1 -1
  351. package/docs/types/Color.html +1 -1
  352. package/docs/types/ContentTypeConfigKey.html +1 -1
  353. package/docs/types/ContentTypeConfigKeySplit.html +1 -1
  354. package/docs/types/ContentTypeMap.html +1 -1
  355. package/docs/types/Create3DDomContainerReturnType.html +1 -1
  356. package/docs/types/Create3DElementReturnType.html +1 -1
  357. package/docs/types/CruisePluginExportType.html +1 -1
  358. package/docs/types/CruisePluginTypes.CruiseData.html +2 -2
  359. package/docs/types/CruisePluginTypes.MoveEffect.html +1 -1
  360. package/docs/types/CurrentPanoImagePluginExportType.html +1 -1
  361. package/docs/types/DeprecatedMediaPlaneProperty.html +2 -2
  362. package/docs/types/DeprecatedTagProperty.html +2 -2
  363. package/docs/types/Direction-1.html +1 -1
  364. package/docs/types/Direction4.html +1 -1
  365. package/docs/types/ElementRenderer.html +2 -2
  366. package/docs/types/FloorplanRuleLabels.html +2 -2
  367. package/docs/types/FloorplanServerRuleLabels.html +1 -1
  368. package/docs/types/GuideLinePluginExportType.html +1 -1
  369. package/docs/types/GuideLinePluginType.GuideLineItem.html +2 -2
  370. package/docs/types/GuideLinePluginType.GuideLineItemEventMap.html +1 -1
  371. package/docs/types/GuideLinePluginType.GuideLineModeItemMode.html +1 -1
  372. package/docs/types/GuideLinePluginType.GuideLineStyle.html +2 -2
  373. package/docs/types/GuideLinePluginType.ModelGuideLineTag.html +2 -2
  374. package/docs/types/GuideLinePluginType.PathItem.html +2 -2
  375. package/docs/types/GuideLinePluginType.PluginData.html +2 -2
  376. package/docs/types/GuideLinePluginType.RouteConfig.html +2 -2
  377. package/docs/types/HelperEventMap.html +1 -1
  378. package/docs/types/InternalHelperEventMap.html +1 -1
  379. package/docs/types/MapviewFloorplanPluginParameterType.html +1 -1
  380. package/docs/types/MapviewFloorplanPluginReturnType.html +1 -1
  381. package/docs/types/MeasurePluginConfig.html +1 -5
  382. package/docs/types/MediaData.html +2 -2
  383. package/docs/types/MediaStore.html +1 -1
  384. package/docs/types/ModelEntryDoorGuidePluginParameterType.html +1 -1
  385. package/docs/types/ModelFloorplanPluginParameterType.html +1 -1
  386. package/docs/types/ModelFloorplanPluginReturnType.html +1 -1
  387. package/docs/types/ModelId.html +1 -1
  388. package/docs/types/ModelMakerPluginType.ElementRenderer.html +1 -1
  389. package/docs/types/ModelMakerPluginType.ItemType.html +2 -2
  390. package/docs/types/ModelMakerPluginType.MarkerItem.html +1 -1
  391. package/docs/types/ModelMakerPluginType.ServerItem.html +2 -2
  392. package/docs/types/ModelRoomLabelPluginParameters.html +1 -1
  393. package/docs/types/ModelRoomLabelPluginReturnType.html +1 -1
  394. package/docs/types/MoveArgs.html +2 -2
  395. package/docs/types/MoveOpts.html +2 -2
  396. package/docs/types/Object3DHelperEventMap.html +1 -1
  397. package/docs/types/ObjectFit.html +1 -1
  398. package/docs/types/PaintBrushEventMap.html +1 -1
  399. package/docs/types/PanoCompassPluginData.html +1 -1
  400. package/docs/types/PanoCompassPluginExportType.html +1 -1
  401. package/docs/types/PanoCompassPluginParameterType.html +1 -1
  402. package/docs/types/PanoFloorplanRadarPluginParameterType.html +1 -1
  403. package/docs/types/PanoFloorplanRadarPluginReturnType.html +1 -1
  404. package/docs/types/PanoIndex.html +1 -1
  405. package/docs/types/PanoMeasurePluginEvent.html +1 -1
  406. package/docs/types/PanoMeasureReturnType.html +1 -1
  407. package/docs/types/PanoSpatialTagPluginId.html +1 -1
  408. package/docs/types/PanoTagPluginExportInterface.html +1 -1
  409. package/docs/types/PanoTagPluginParamsInterface.html +1 -1
  410. package/docs/types/PanoVideoPluginParameterType.html +1 -1
  411. package/docs/types/PanoVideoPluginReturnType.html +1 -1
  412. package/docs/types/PickTagContentTypeInContentTypeConfigKey.html +2 -2
  413. package/docs/types/PipelinePluginParameterType.html +1 -1
  414. package/docs/types/PipelinePluginReturnType.html +1 -1
  415. package/docs/types/PlaneTag.html +2 -2
  416. package/docs/types/Point2DTag.html +2 -2
  417. package/docs/types/Point3DTag.html +2 -2
  418. package/docs/types/PointTagInstance.html +1 -1
  419. package/docs/types/Position.html +1 -1
  420. package/docs/types/PositionFrom.html +1 -1
  421. package/docs/types/RotateArgs.html +2 -2
  422. package/docs/types/RotateOpts.html +2 -2
  423. package/docs/types/RuleLabelsKey.html +1 -1
  424. package/docs/types/RuleLabelsValue.html +1 -1
  425. package/docs/types/ScaleCallback.html +1 -1
  426. package/docs/types/ScalePosition.html +2 -2
  427. package/docs/types/SculptData.BoxData.html +1 -1
  428. package/docs/types/SculptData.CircleData.html +1 -1
  429. package/docs/types/SculptData.CylinderData.html +1 -1
  430. package/docs/types/SculptData.PointData.html +1 -1
  431. package/docs/types/SculptData.PolygonData.html +1 -1
  432. package/docs/types/SculptData.PolylineData.html +1 -1
  433. package/docs/types/SculptData.PrismData.html +1 -1
  434. package/docs/types/SculptData.RectangleData.html +1 -1
  435. package/docs/types/SculptType.Theme.html +2 -2
  436. package/docs/types/StickType.html +1 -1
  437. package/docs/types/Tag.html +2 -2
  438. package/docs/types/Tag2D.html +2 -2
  439. package/docs/types/Tag3D.html +2 -2
  440. package/docs/types/TagClickParams.html +1 -1
  441. package/docs/types/TagConfigByKey.html +1 -1
  442. package/docs/types/TagContentType.html +1 -1
  443. package/docs/types/TagContentTypeMapping.html +1 -1
  444. package/docs/types/TagDimensionType.html +1 -1
  445. package/docs/types/TagElement.html +2 -2
  446. package/docs/types/TagEvents.html +1 -1
  447. package/docs/types/TagGLTFObject.html +1 -1
  448. package/docs/types/TagHooks.html +1 -1
  449. package/docs/types/TagId.html +1 -1
  450. package/docs/types/TagInstance.html +1 -1
  451. package/docs/types/TagPlacement.html +2 -2
  452. package/docs/types/TagPointType.html +2 -2
  453. package/docs/types/TagRendererMap.html +1 -1
  454. package/docs/types/TopviewFloorplanPluginParameterType.html +1 -1
  455. package/docs/types/TopviewFloorplanPluginReturnType.html +1 -1
  456. package/docs/types/Util.ActionIfNoIntersection.html +1 -1
  457. package/docs/types/Util.AdherePoint.html +2 -2
  458. package/docs/types/Util.PointSelectorConfig.html +1 -1
  459. package/docs/types/WorkCode.html +1 -1
  460. package/docs/variables/FLOOR_TYPE_MAP.html +2 -2
  461. package/docs/variables/PLUGIN.html +1 -1
  462. package/docs/variables/ROOM_FETILE_TYPE_MAP.html +2 -2
  463. package/docs/variables/ROOM_TYPE_MAP.html +2 -2
  464. package/docs/variables/Util.animeMap.html +1 -1
  465. package/docs/variables/defaultGlobalConfig.html +1 -1
  466. package/docs/variables/itemLabelPluginServerParams.html +1 -1
  467. package/docs/variables/modelItemLabelPluginServerParams.html +1 -1
  468. package/docs/variables/modelRoomLabelPluginServerParams.html +1 -1
  469. package/libs/AreaMakerPlugin/Controller.js +1 -1
  470. package/libs/AreaMakerPlugin/index.js +1 -1
  471. package/libs/CSS3DRenderPlugin/Controller.d.ts +4 -0
  472. package/libs/CSS3DRenderPlugin/Controller.js +35 -29
  473. package/libs/CSS3DRenderPlugin/index.js +1 -1
  474. package/libs/CruisePlugin/BaseController.js +1 -1
  475. package/libs/CruisePlugin/Move.js +3 -5
  476. package/libs/CruisePlugin/Work.js +3 -5
  477. package/libs/CruisePlugin/index.js +7 -9
  478. package/libs/CurrentPanoImagePlugin/Controller.d.ts +2 -1
  479. package/libs/CurrentPanoImagePlugin/Controller.js +24 -24
  480. package/libs/CurrentPanoImagePlugin/index.js +1 -1
  481. package/libs/DigitalHumanPlugin/index.d.ts +67 -0
  482. package/libs/DigitalHumanPlugin/index.js +318 -0
  483. package/libs/DigitalHumanPlugin/stateMachine.d.ts +142 -0
  484. package/libs/DigitalHumanPlugin/stateMachine.js +153 -0
  485. package/libs/DigitalPerformancePlugin/controller/index.d.ts +224 -0
  486. package/libs/DigitalPerformancePlugin/controller/index.js +865 -0
  487. package/libs/DigitalPerformancePlugin/core/DigitalHuman.d.ts +41 -0
  488. package/libs/DigitalPerformancePlugin/core/DigitalHuman.js +174 -0
  489. package/libs/DigitalPerformancePlugin/core/DigitalPlayground.d.ts +33 -0
  490. package/libs/DigitalPerformancePlugin/core/DigitalPlayground.js +149 -0
  491. package/libs/DigitalPerformancePlugin/core/DigitalStateMachine.d.ts +142 -0
  492. package/libs/DigitalPerformancePlugin/core/DigitalStateMachine.js +153 -0
  493. package/libs/DigitalPerformancePlugin/core/Trace.d.ts +9 -0
  494. package/libs/DigitalPerformancePlugin/core/Trace.js +23 -0
  495. package/libs/DigitalPerformancePlugin/index.d.ts +11 -0
  496. package/libs/DigitalPerformancePlugin/index.js +17 -0
  497. package/libs/DigitalPerformancePlugin/mock.d.ts +70 -0
  498. package/libs/DigitalPerformancePlugin/mock.js +273 -0
  499. package/libs/DigitalPerformancePlugin/typings/index.d.ts +79 -0
  500. package/libs/DigitalPerformancePlugin/typings/index.js +1 -0
  501. package/libs/GuideLinePlugin/Controller.d.ts +0 -1
  502. package/libs/GuideLinePlugin/Controller.js +83 -106
  503. package/libs/GuideLinePlugin/GuideLineItem.js +3 -5
  504. package/libs/GuideLinePlugin/GuideLineModeItem/index.js +19 -20
  505. package/libs/GuideLinePlugin/GuideLineModeItem.js +1 -1
  506. package/libs/GuideLinePlugin/index.js +7 -9
  507. package/libs/MeasurePlugin/Controller.d.ts +3 -26
  508. package/libs/MeasurePlugin/Controller.js +316 -397
  509. package/libs/MeasurePlugin/index.d.ts +1 -7
  510. package/libs/ModelChassisCompassPlugin/Plugin.js +52 -116
  511. package/libs/ModelChassisCompassPlugin/index.js +0 -64
  512. package/libs/ModelEntryDoorGuidePlugin/Plugin.js +61 -125
  513. package/libs/ModelEntryDoorGuidePlugin/index.js +0 -64
  514. package/libs/ModelMakerPlugin/Controller.js +1 -1
  515. package/libs/ModelMakerPlugin/index.js +1 -1
  516. package/libs/ModelRoomLabelPlugin/RoomLabelItem.js +69 -69
  517. package/libs/ModelTVVideoPlugin/Plugin.js +1 -1
  518. package/libs/ModelTVVideoPlugin/index.js +1 -1
  519. package/libs/Object3DHelperPlugin/Controller.js +1 -1
  520. package/libs/Object3DHelperPlugin/index.js +1 -1
  521. package/libs/PanoCompassPlugin/Controller.js +32 -32
  522. package/libs/PanoCompassPlugin/index.js +1 -1
  523. package/libs/PanoDoorLabelPlugin/Controller.js +1 -1
  524. package/libs/PanoDoorLabelPlugin/index.js +1 -1
  525. package/libs/PanoMeasurePlugin/Controller/WatchController.js +10 -10
  526. package/libs/PanoMeasurePlugin/Controller/index.js +1 -1
  527. package/libs/PanoMeasurePlugin/index.js +1 -1
  528. package/libs/PanoSpatialTagPlugin/Components/tag.js +110 -115
  529. package/libs/PanoSpatialTagPlugin/Plugin.js +88 -89
  530. package/libs/PanoSpatialTagPlugin/index.js +1 -1
  531. package/libs/PanoTagPlugin/Components/Common/TagPopover/TagPopoverToolBar.js +14 -17
  532. package/libs/PanoTagPlugin/Components/Tag/index.js +2 -3
  533. package/libs/PanoTagPlugin/Components/TagContainer.js +2 -3
  534. package/libs/PanoTagPlugin/Components/TagItem.js +2 -3
  535. package/libs/PanoTagPlugin/controller/Tag/BaseTag.js +2 -3
  536. package/libs/PanoTagPlugin/controller/Tag/ModelTag.js +2 -3
  537. package/libs/PanoTagPlugin/controller/Tag/PlaneTag.js +27 -28
  538. package/libs/PanoTagPlugin/controller/Tag/PointTag.js +2 -3
  539. package/libs/PanoTagPlugin/controller/TagRender.js +1 -1
  540. package/libs/PanoTagPlugin/controller/TagUtil.js +1 -1
  541. package/libs/PanoTagPlugin/controller/index.js +9 -7
  542. package/libs/PanoTagPlugin/index.js +22 -22
  543. package/libs/PanoTagPlugin/typings/controller.d.ts +0 -3
  544. package/libs/PanoTagPlugin/utils/tag/format.js +13 -78
  545. package/libs/PanoVideoPlugin/Controller.js +1 -1
  546. package/libs/PanoVideoPlugin/index.js +1 -1
  547. package/libs/PipelinePlugin/Controller.js +1 -1
  548. package/libs/PipelinePlugin/index.js +1 -1
  549. package/libs/Sculpt/Meshes/Line.js +10 -10
  550. package/libs/Sculpt/Meshes/Prism.js +92 -94
  551. package/libs/Sculpt/typings/style.d.ts +0 -5
  552. package/libs/Sculpt/utils/unit.d.ts +1 -1
  553. package/libs/Sculpt/utils/unit.js +18 -18
  554. package/libs/base/BasePlugin.d.ts +4 -0
  555. package/libs/base/BasePlugin.js +20 -14
  556. package/libs/components/AreaLabel/LabelItem.js +77 -77
  557. package/libs/floorplan/MapviewFloorplanPlugin/Controller.js +21 -23
  558. package/libs/floorplan/MapviewFloorplanPlugin/index.js +4 -6
  559. package/libs/floorplan/ModelFloorplanPlugin/Controller.js +40 -42
  560. package/libs/floorplan/ModelFloorplanPlugin/index.js +4 -6
  561. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.js +42 -44
  562. package/libs/floorplan/PanoFloorplanRadarPlugin/index.js +4 -6
  563. package/libs/floorplan/PanoFloorplanRadarPlugin/typing.d.ts +0 -2
  564. package/libs/floorplan/TopviewFloorplanPlugin/Controller.js +15 -17
  565. package/libs/floorplan/TopviewFloorplanPlugin/index.js +4 -6
  566. package/libs/floorplan/typings/index.d.ts +0 -2
  567. package/libs/index.js +147 -149
  568. package/libs/shared-utils/exports.js +69 -81
  569. package/libs/shared-utils/index.d.ts +1 -2
  570. package/libs/shared-utils/logger.js +1 -1
  571. package/libs/shared-utils/three/Magnifier.d.ts +0 -2
  572. package/libs/shared-utils/three/Magnifier.js +15 -17
  573. package/libs/shared-utils/three/PointSelector/index.d.ts +0 -5
  574. package/libs/shared-utils/three/PointSelector/index.js +37 -38
  575. package/libs/shared-utils/three/PointSelector/utils/PointSelectorHelper.d.ts +0 -1
  576. package/libs/shared-utils/three/PointSelector/utils/PointSelectorHelper.js +31 -41
  577. package/libs/shared-utils/url/absoluteUrl.js +6 -6
  578. package/package.json +1 -1
  579. package/dist/shared-utils/url/defaultUrls.d.ts +0 -30
  580. package/dist/shared-utils/url/replace-static-prefix.d.ts +0 -11
  581. package/docs/functions/Util.replaceStaticPrefix.html +0 -8
  582. package/docs/types/MeasureEndReason.html +0 -1
  583. package/docs/variables/Util.CURRENT_PANO_IMAGE_DEFAULT_IMAGE.html +0 -2
  584. package/docs/variables/Util.DEFAULT_STATIC_PREFIX.html +0 -2
  585. package/docs/variables/Util.DNALOGEL_DEFAULT_ASSETS.html +0 -2
  586. package/docs/variables/Util.ENTRY_DOOR_DEFAULT_IMAGE.html +0 -2
  587. package/docs/variables/Util.FLOORPLAN_DEFAULT_IMAGE.html +0 -2
  588. package/docs/variables/Util.GUIDELINE_DEFAULT_ARROW_TEXTURE.html +0 -2
  589. package/docs/variables/Util.GUIDELINE_WHITE_ARROW_TEXTURE.html +0 -2
  590. package/docs/variables/Util.MODEL_CHASSIS_COMPASS_DEFAULT_MODEL.html +0 -2
  591. package/docs/variables/Util.MODEL_ENTRY_DOOR_GUIDE_PLUGIN_DEFAULT_MODEL.html +0 -2
  592. package/docs/variables/Util.PANO_COMPASS_DEFAULT_IMAGE.html +0 -2
  593. package/docs/variables/Util.PANO_SPATIAL_TAG_BLUR_IMAGE.html +0 -2
  594. package/docs/variables/Util.PANO_TAG_DEFAULT_LINK_ICON.html +0 -2
  595. package/libs/shared-utils/url/defaultUrls.d.ts +0 -30
  596. package/libs/shared-utils/url/defaultUrls.js +0 -26
  597. package/libs/shared-utils/url/replace-static-prefix.d.ts +0 -11
  598. package/libs/shared-utils/url/replace-static-prefix.js +0 -25
@@ -0,0 +1,865 @@
1
+ var v = Object.defineProperty, H = Object.defineProperties;
2
+ var I = Object.getOwnPropertyDescriptors;
3
+ var D = Object.getOwnPropertySymbols;
4
+ var U = Object.prototype.hasOwnProperty, R = Object.prototype.propertyIsEnumerable;
5
+ var S = (p, t, e) => t in p ? v(p, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : p[t] = e, E = (p, t) => {
6
+ for (var e in t || (t = {}))
7
+ U.call(t, e) && S(p, e, t[e]);
8
+ if (D)
9
+ for (var e of D(t))
10
+ R.call(t, e) && S(p, e, t[e]);
11
+ return p;
12
+ }, k = (p, t) => H(p, I(t));
13
+ var y = (p, t, e) => (S(p, typeof t != "symbol" ? t + "" : t, e), e);
14
+ var g = (p, t, e) => new Promise((i, a) => {
15
+ var r = (o) => {
16
+ try {
17
+ n(e.next(o));
18
+ } catch (h) {
19
+ a(h);
20
+ }
21
+ }, s = (o) => {
22
+ try {
23
+ n(e.throw(o));
24
+ } catch (h) {
25
+ a(h);
26
+ }
27
+ }, n = (o) => o.done ? i(o.value) : Promise.resolve(o.value).then(r, s);
28
+ n((e = e.apply(p, t)).next());
29
+ });
30
+ import { DigitalPlayground as z } from "../core/DigitalPlayground.js";
31
+ import { Vector3 as w } from "three";
32
+ import { convertMockToPlayer as G } from "../mock.js";
33
+ import { transformPosition as N } from "../../shared-utils/five/transformPosition.js";
34
+ import "@realsee/five/gltf-loader";
35
+ import "../core/DigitalHuman.js";
36
+ import "../core/DigitalStateMachine.js";
37
+ import "../core/Trace.js";
38
+ const L = "Dnalogel-DigitalPerformancePlugin";
39
+ class Q {
40
+ constructor(t, e = {}) {
41
+ y(this, "five");
42
+ y(this, "playground");
43
+ y(this, "config");
44
+ y(this, "state");
45
+ y(this, "NAME");
46
+ // 全局进度条相关属性
47
+ y(this, "totalDurationCache", null);
48
+ y(this, "chapterTimeMapCache", null);
49
+ y(this, "progressListeners", /* @__PURE__ */ new Set());
50
+ y(this, "progressUpdateInterval", 100);
51
+ // 默认100ms更新一次
52
+ y(this, "progressUpdateTimer", null);
53
+ y(this, "_autoPlayOnNaturalEnd", !1);
54
+ // 新增:playing-players-changed 事件监听集合
55
+ y(this, "playingPlayersListeners", /* @__PURE__ */ new Set());
56
+ this.five = t, this.config = E({
57
+ autoPlay: !1,
58
+ loop: !1,
59
+ debug: !1
60
+ }, e), this.playground = new z(this.config.debug), this.state = {
61
+ enabled: !0,
62
+ playing: !1,
63
+ currentChapter: null,
64
+ currentScript: null,
65
+ continuousPlaying: !1,
66
+ playMode: "single"
67
+ }, this.NAME = L, this.config.debug, this.init();
68
+ }
69
+ init() {
70
+ }
71
+ /**
72
+ * 加载剧本数据
73
+ */
74
+ loadScript(t) {
75
+ return g(this, null, function* () {
76
+ try {
77
+ if (this.state.currentScript = t, this.playground.setScript(t), this.clearProgressCache(), this.config.debug, yield this.preloadResources(t), this.five && this.five.scene) {
78
+ const e = /* @__PURE__ */ new Set();
79
+ t.chapters.forEach((a) => {
80
+ a.players.forEach((r) => {
81
+ r.type === "model" && e.add(r.model);
82
+ });
83
+ }), yield new Promise((a) => requestAnimationFrame(a));
84
+ let i = 0;
85
+ if (Array.from(e).forEach((a) => {
86
+ const r = this.getDigitalHuman(a);
87
+ r != null && r.model && (this.five.scene.add(r.model), i++);
88
+ }), i === 0)
89
+ throw new Error("没有模型被添加到场景中");
90
+ }
91
+ this.config.autoPlay && t.chapters.length > 0 && (yield this.playChapter(t.chapters[0]));
92
+ } catch (e) {
93
+ throw console.error(`${this.NAME} failed to load script:`, e), e;
94
+ }
95
+ });
96
+ }
97
+ /**
98
+ * 预加载资源
99
+ */
100
+ preloadResources(t) {
101
+ return g(this, null, function* () {
102
+ const e = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
103
+ t.chapters.forEach((a) => {
104
+ a.players.forEach((r) => {
105
+ if (r.type === "model") {
106
+ const s = r;
107
+ e.add(s.model), s.keyframes.forEach((n) => {
108
+ n.animation && i.add(n.animation.url);
109
+ });
110
+ }
111
+ });
112
+ }), yield Promise.all([
113
+ this.playground.loadModels(Array.from(e)),
114
+ this.playground.loadAnimations(Array.from(i))
115
+ ]), this.config.debug;
116
+ });
117
+ }
118
+ /**
119
+ * 播放指定章节
120
+ */
121
+ playChapter(t) {
122
+ return g(this, null, function* () {
123
+ this.emitPlayingPlayersChanged();
124
+ try {
125
+ this.state.currentChapter = t, this.state.playing = !0, this.state.playMode = "single", this.config.debug, yield this.playground.playByChapter(t), this.state.playing = !1, this.config.debug;
126
+ } catch (e) {
127
+ throw console.error(`${this.NAME} failed to play chapter:`, e), this.state.playing = !1, e;
128
+ }
129
+ });
130
+ }
131
+ /**
132
+ * 播放指定章节(内部方法,用于连续播放)
133
+ */
134
+ playChapterForContinuous(t) {
135
+ return g(this, null, function* () {
136
+ this.emitPlayingPlayersChanged();
137
+ try {
138
+ this.state.currentChapter = t, this.state.playing = !0, this.config.debug, yield this.playground.playByChapter(t), this.state.continuousPlaying && (this.state.playing = !0), yield new Promise((e) => setTimeout(e, 100)), this.config.debug;
139
+ } catch (e) {
140
+ throw console.error(`${this.NAME} failed to play chapter for continuous:`, e), this.state.playing = !1, e;
141
+ }
142
+ });
143
+ }
144
+ /**
145
+ * 播放指定章节(通过索引)
146
+ */
147
+ playChapterByIndex(t) {
148
+ return g(this, null, function* () {
149
+ if (!this.state.currentScript)
150
+ throw new Error("No script loaded");
151
+ if (t < 0 || t >= this.state.currentScript.chapters.length)
152
+ throw new Error("Invalid chapter index");
153
+ yield this.playChapter(this.state.currentScript.chapters[t]);
154
+ });
155
+ }
156
+ /**
157
+ * 暂停播放
158
+ */
159
+ pause() {
160
+ this.playground.pause(), this.state.playing = !1, this.config.debug && console.log(`${this.NAME} paused in ${this.state.playMode} mode`);
161
+ }
162
+ /**
163
+ * 继续播放
164
+ */
165
+ continue() {
166
+ return g(this, null, function* () {
167
+ this._autoPlayOnNaturalEnd = !0;
168
+ try {
169
+ this.config.debug && console.log(`${this.NAME} continuing in ${this.state.playMode} mode`), this.state.playMode === "continuous" ? yield this.continueAllRemaining() : (this.state.currentChapter && this.state.currentChapter.players.forEach((t) => {
170
+ if (t.type === "model") {
171
+ const e = this.playground.getDigitalHuman(t.model);
172
+ e && e.continueAnimation();
173
+ }
174
+ }), this.state.playing = !0, this.config.debug && console.log(`${this.NAME} continued single chapter successfully`));
175
+ } catch (t) {
176
+ throw console.error(`${this.NAME} failed to continue:`, t), this.state.playing = !1, t;
177
+ }
178
+ });
179
+ }
180
+ /**
181
+ * 连续播放模式下的继续播放(从暂停位置继续播放所有剩余章节)
182
+ */
183
+ continueAllRemaining() {
184
+ return g(this, null, function* () {
185
+ if (!this.state.currentScript || !this.state.currentChapter)
186
+ throw new Error("No script or chapter loaded");
187
+ const t = this.state.currentScript.chapters, e = t.findIndex((i) => i.name === this.state.currentChapter.name);
188
+ if (e === -1)
189
+ throw new Error("Current chapter not found in script");
190
+ this.state.continuousPlaying = !0;
191
+ try {
192
+ this.config.debug;
193
+ let i = this.getProgress();
194
+ console.log(`${this.NAME} [continueAllRemaining] current progress:`, i), this.emitPlayingPlayersChanged();
195
+ const a = i && i.currentTime >= 26e3 && i.currentTime <= 27e3, r = i && i.currentTime >= i.totalTime;
196
+ console.log(`${this.NAME} [continueAllRemaining] pause analysis:`, {
197
+ currentTime: i == null ? void 0 : i.currentTime,
198
+ totalTime: i == null ? void 0 : i.totalTime,
199
+ isCompleted: r,
200
+ isNearHardcodedPause: a
201
+ }), r ? (console.log(`${this.NAME} [continueAllRemaining] chapter already completed, restarting`), yield this.playChapterForContinuous(this.state.currentChapter), i = this.getProgress(), console.log(`${this.NAME} [continueAllRemaining] progress after restart:`, i)) : a ? (console.log(`${this.NAME} [continueAllRemaining] detected hardcoded pause, skipping to 27500ms`), this.state.currentChapter.players.filter((n) => n.type === "model").forEach((n) => {
202
+ const o = this.playground.getDigitalHuman(n.model);
203
+ o && (o.state.currentTime = 27500);
204
+ }), this.state.currentChapter.players.forEach((n) => {
205
+ if (n.type === "model") {
206
+ const o = this.playground.getDigitalHuman(n.model);
207
+ o && o.continueAnimation();
208
+ }
209
+ }), this.state.playing = !0, console.log(`${this.NAME} [continueAllRemaining] after hardcoded pause skip - playing:`, this.state.playing)) : (console.log(`${this.NAME} [continueAllRemaining] continuing from paused position`), this.state.currentChapter.players.forEach((s) => {
210
+ if (s.type === "model") {
211
+ const n = this.playground.getDigitalHuman(s.model);
212
+ n && n.continueAnimation();
213
+ }
214
+ }), this.state.playing = !0, console.log(`${this.NAME} [continueAllRemaining] after continue - playing:`, this.state.playing)), i = this.getProgress(), console.log(
215
+ `${this.NAME} [continueAllRemaining] updated progress before wait:`,
216
+ i,
217
+ "playing:",
218
+ this.state.playing
219
+ ), i && i.currentTime < i.totalTime ? yield new Promise((s) => {
220
+ let n = (i == null ? void 0 : i.currentTime) || 0, o = 0;
221
+ const h = 15, P = () => {
222
+ if (!this.state.continuousPlaying) {
223
+ console.log(`${this.NAME} [continueAllRemaining] stopped by user`), s();
224
+ return;
225
+ }
226
+ const l = this.getProgress();
227
+ if (this.config.debug, l && l.currentTime >= l.totalTime) {
228
+ s();
229
+ return;
230
+ }
231
+ if (l && l.currentTime < 0) {
232
+ console.warn(`${this.NAME} [continueAllRemaining] detected negative time, skipping wait`), s();
233
+ return;
234
+ }
235
+ if (l && l.currentTime === n) {
236
+ if (o++, o >= h) {
237
+ console.warn(`${this.NAME} [continueAllRemaining] progress stagnant for 3s, assuming chapter completed`), s();
238
+ return;
239
+ }
240
+ } else
241
+ o = 0, n = (l == null ? void 0 : l.currentTime) || 0;
242
+ setTimeout(P, 200);
243
+ };
244
+ P();
245
+ }) : console.log(`${this.NAME} [continueAllRemaining] chapter already completed or restarted, skipping wait`), console.log(
246
+ `${this.NAME} [continueAllRemaining] starting to play remaining chapters from index ${e + 1} to ${t.length - 1}`
247
+ ), this.emitPlayingPlayersChanged();
248
+ for (let s = e + 1; s < t.length; s++) {
249
+ if (!this.state.continuousPlaying) {
250
+ this.config.debug && console.log(`${this.NAME} continuous playback stopped by user at chapter ${s + 1}`);
251
+ break;
252
+ }
253
+ const n = t[s];
254
+ this.config.debug;
255
+ try {
256
+ n.players.filter((l) => l.type === "model").forEach((l) => {
257
+ const f = this.playground.getDigitalHuman(l.model);
258
+ f && (f.state.currentTime = 0);
259
+ });
260
+ const h = Date.now();
261
+ yield this.playChapterForContinuous(n);
262
+ const P = Date.now() - h;
263
+ if (this.config.debug, !this.state.continuousPlaying) {
264
+ this.config.debug && console.log(`${this.NAME} continuous playback stopped after chapter ${s + 1}`);
265
+ break;
266
+ }
267
+ s < t.length - 1 && (yield new Promise((l) => setTimeout(l, 1e3)));
268
+ } catch (o) {
269
+ console.error(`${this.NAME} failed to play chapter ${n.name}:`, o), this.state.continuousPlaying = !1;
270
+ break;
271
+ }
272
+ }
273
+ this.config.debug;
274
+ } catch (i) {
275
+ throw console.error(`${this.NAME} failed during continuous continue:`, i), this.emitPlayingPlayersChanged(), this.state.playing = !1, this.state.continuousPlaying = !1, i;
276
+ } finally {
277
+ this.state.playing = !1, this.state.continuousPlaying = !1;
278
+ }
279
+ });
280
+ }
281
+ /**
282
+ * 从当前章节播放到最后一个章节(连续自动播放)
283
+ */
284
+ playAllRemaining() {
285
+ return g(this, null, function* () {
286
+ if (this._autoPlayOnNaturalEnd = !0, !this.state.currentScript)
287
+ throw new Error("No script loaded");
288
+ const t = this.state.currentScript.chapters;
289
+ if (t.length === 0)
290
+ throw new Error("No chapters to play");
291
+ let e = 0;
292
+ this.state.currentChapter && (e = t.findIndex((i) => i.name === this.state.currentChapter.name), e === -1 && (e = 0)), this.state.continuousPlaying = !0, this.state.playMode = "continuous";
293
+ try {
294
+ this.config.debug;
295
+ const i = !this.state.playing && this.state.currentChapter !== null, a = this.getProgress();
296
+ if (i) {
297
+ const r = a && a.currentTime >= 26e3 && a.currentTime <= 27e3, s = a && a.totalTime > 0 && a.currentTime >= a.totalTime;
298
+ if (console.log(`${this.NAME} [playAllRemaining] pause analysis:`, {
299
+ hasProgress: !!a,
300
+ currentTime: a == null ? void 0 : a.currentTime,
301
+ totalTime: a == null ? void 0 : a.totalTime,
302
+ isCompleted: s,
303
+ isNearHardcodedPause: r,
304
+ shouldContinueFromPause: !s || r
305
+ }), this.emitPlayingPlayersChanged(), !s || r) {
306
+ this.config.debug, yield this.continue();
307
+ return;
308
+ } else if (this.config.debug, e += 1, e >= t.length) {
309
+ this.config.debug, this.state.playing = !1, this.emitPlayingPlayersChanged && this.emitPlayingPlayersChanged();
310
+ return;
311
+ }
312
+ }
313
+ for (let r = e; r < t.length; r++) {
314
+ if (!this.state.continuousPlaying) {
315
+ this.config.debug && console.log(`${this.NAME} continuous playback stopped by user at chapter ${r + 1}`), this.emitPlayingPlayersChanged();
316
+ break;
317
+ }
318
+ const s = t[r];
319
+ this.config.debug;
320
+ try {
321
+ const n = this.state.currentChapter && this.state.currentChapter.name === s.name, o = i && n && r === e;
322
+ if (!n || o) {
323
+ const l = s.players.filter((f) => f.type === "model");
324
+ if (o) {
325
+ const f = this.getProgress();
326
+ f && f.currentTime >= 26e3 && f.currentTime <= 27e3 ? (l.forEach((A) => {
327
+ const M = this.playground.getDigitalHuman(A.model);
328
+ M && (M.state.currentTime = 27500);
329
+ }), this.config.debug && console.log(`${this.NAME} skipped hardcoded pause for chapter: ${s.name}`)) : this.config.debug && console.log(`${this.NAME} continuing current chapter from existing position: ${s.name}`);
330
+ } else
331
+ l.forEach((f) => {
332
+ const C = this.playground.getDigitalHuman(f.model);
333
+ C && (C.state.currentTime = 0);
334
+ }), this.config.debug && console.log(`${this.NAME} reset time for new chapter: ${s.name}`);
335
+ } else
336
+ this.config.debug;
337
+ const h = Date.now();
338
+ yield this.playChapterForContinuous(s);
339
+ const P = Date.now() - h;
340
+ if (this.config.debug, this.state.continuousPlaying && !this.state.playing && (console.warn(`${this.NAME} [playAllRemaining] chapter completed but playing state is false, fixing...`), this.state.playing = !0), !this.state.continuousPlaying) {
341
+ this.config.debug && console.log(`${this.NAME} continuous playback stopped after chapter ${r + 1}`), this.emitPlayingPlayersChanged();
342
+ break;
343
+ }
344
+ r < t.length - 1, r < t.length - 1 && (yield new Promise((l) => setTimeout(l, 1e3)));
345
+ } catch (n) {
346
+ console.error(`${this.NAME} failed to play chapter ${s.name}:`, n), this.emitPlayingPlayersChanged(), this.state.continuousPlaying = !1;
347
+ break;
348
+ }
349
+ }
350
+ this.stopAllPlayers(), this.state.playing = !1, this.emitPlayingPlayersChanged && this.emitPlayingPlayersChanged(), this.config.debug;
351
+ } catch (i) {
352
+ throw console.error(`${this.NAME} failed during continuous playback:`, i), this.emitPlayingPlayersChanged(), this.state.playing = !1, this.state.continuousPlaying = !1, i;
353
+ } finally {
354
+ this.state.playing = !1, this.state.continuousPlaying = !1;
355
+ }
356
+ });
357
+ }
358
+ /**
359
+ * 重置播放
360
+ */
361
+ reset() {
362
+ this.playground.reset(), this.state.playing = !1, this.state.continuousPlaying = !1, this.state.currentChapter = null, this.state.playMode = "single", this.config.debug && console.log(`${this.NAME} reset`);
363
+ }
364
+ /**
365
+ * 设置时间线
366
+ */
367
+ setTimelineTo(t) {
368
+ this.playground.setTimelineTo(t), this.config.debug && console.log(`${this.NAME} timeline set to:`, t);
369
+ }
370
+ /**
371
+ * 启用插件
372
+ */
373
+ enable() {
374
+ this.state.enabled = !0, this.config.debug && console.log(`${this.NAME} enabled`);
375
+ }
376
+ /**
377
+ * 禁用插件
378
+ */
379
+ disable() {
380
+ this.state.enabled = !1, this.pause(), this.config.debug && console.log(`${this.NAME} disabled`);
381
+ }
382
+ /**
383
+ * 重置并清理(原 dispose 逻辑)
384
+ */
385
+ resetAndCleanup() {
386
+ this.reset(), this.state.enabled = !1, this.stopProgressUpdateTimer(), this.progressListeners.clear(), this.clearProgressCache(), this.five.refresh(), this.config.debug && console.log(`${this.NAME} resetAndCleanup`);
387
+ }
388
+ /**
389
+ * 销毁插件(彻底释放资源)
390
+ */
391
+ dispose() {
392
+ this.resetAndCleanup(), this.playground && typeof this.playground.dispose == "function" && this.playground.dispose(), this.playingPlayersListeners.clear(), this.state = void 0, this.playground = void 0, this.five = void 0, this.config = void 0, typeof window != "undefined" && window.console && console.log(`${this.NAME} disposed (彻底销毁)`);
393
+ }
394
+ /**
395
+ * 获取当前状态
396
+ */
397
+ getState() {
398
+ return E({}, this.state);
399
+ }
400
+ /**
401
+ * 获取可用章节列表
402
+ */
403
+ getChapters() {
404
+ var t;
405
+ return ((t = this.state.currentScript) == null ? void 0 : t.chapters) || [];
406
+ }
407
+ /**
408
+ * 获取数字人实例
409
+ */
410
+ getDigitalHuman(t) {
411
+ return this.playground.getDigitalHuman(t);
412
+ }
413
+ /**
414
+ * 获取当前播放进度信息
415
+ */
416
+ getProgress() {
417
+ if (!this.state.currentChapter)
418
+ return null;
419
+ let t = 0, e = 0;
420
+ return this.state.currentChapter.players.forEach((i) => {
421
+ if (i.type === "model") {
422
+ const a = i, r = a.keyframes[a.keyframes.length - 1];
423
+ r && (t = Math.max(t, r.timeStamp));
424
+ const s = this.playground.getDigitalHuman(a.model);
425
+ s && (e = Math.max(e, s.state.currentTime || 0));
426
+ }
427
+ }), { currentTime: e, totalTime: t };
428
+ }
429
+ /**
430
+ * 对原始 res 数据进行 transformPosition 处理和章节分组,返回完整结构
431
+ * @param res 原始数据
432
+ * @param work 可选,存在时才做transformPosition
433
+ * @param totalDelay 可选,默认0
434
+ */
435
+ transformScriptData(t, e, i = 0) {
436
+ var n, o;
437
+ if (!t || !t.players || !Array.isArray(t.players))
438
+ return t;
439
+ const a = (n = t.players[0]) != null && n.fiveState ? E({}, t.players[0].fiveState) : void 0;
440
+ if (a && a.offset && e) {
441
+ const h = new w(a.offset.x, a.offset.y, a.offset.z), P = N(h, e == null ? void 0 : e.transform);
442
+ a.offset = { x: P.x, y: P.y, z: P.z };
443
+ }
444
+ const r = [
445
+ {
446
+ id: 0,
447
+ name: ((o = t.players[0]) == null ? void 0 : o.chapterName) || "Chapter 1",
448
+ players: []
449
+ }
450
+ ];
451
+ let s = 0;
452
+ return t.players.forEach((h, P) => {
453
+ var C, A, M;
454
+ let l = E({}, h);
455
+ if (e && ((C = l.track) != null && C.path && Array.isArray(l.track.path) && (l.track.path = l.track.path.map((d) => {
456
+ const m = N(new w(d.x, d.y, d.z), e == null ? void 0 : e.transform);
457
+ return {
458
+ x: m.x,
459
+ y: m.y,
460
+ z: m.z
461
+ };
462
+ })), (A = l.track) != null && A.points && Array.isArray(l.track.points) && (l.track.points = l.track.points.map((d) => {
463
+ if (d.point) {
464
+ const m = N(
465
+ new w(d.point.x, d.point.y, d.point.z),
466
+ e == null ? void 0 : e.transform
467
+ );
468
+ return k(E({}, d), {
469
+ point: {
470
+ x: m.x,
471
+ y: m.y,
472
+ z: m.z
473
+ }
474
+ });
475
+ }
476
+ return d;
477
+ })), l.matrix && Array.isArray(l.matrix) && l.matrix.length >= 16)) {
478
+ const d = new w(l.matrix[12], l.matrix[13], l.matrix[14]), m = N(d, e == null ? void 0 : e.transform);
479
+ l.matrix[12] = m.x, l.matrix[13] = m.y, l.matrix[14] = m.z;
480
+ }
481
+ const f = G(l, i);
482
+ ((M = h.config) == null ? void 0 : M.type) === "simultaneous" || P > 0 && s++, r[s] || r.push({
483
+ id: s,
484
+ name: h.chapterName || `Chapter ${s + 1}`,
485
+ players: []
486
+ }), r[s].players.push(f);
487
+ }), {
488
+ id: t.id,
489
+ name: t.name,
490
+ fiveState: a,
491
+ chapters: r
492
+ };
493
+ }
494
+ // ===================== 全局进度条功能 =====================
495
+ /**
496
+ * 清理进度缓存
497
+ */
498
+ clearProgressCache() {
499
+ this.totalDurationCache = null, this.chapterTimeMapCache = null, this.config.debug && console.log(`${this.NAME} progress cache cleared`);
500
+ }
501
+ /**
502
+ * 计算单个章节的时长
503
+ */
504
+ calculateChapterDuration(t) {
505
+ let e = 0;
506
+ return t.players.forEach((i) => {
507
+ if (i.type === "model") {
508
+ const a = i, r = a.keyframes[a.keyframes.length - 1];
509
+ r && (e = Math.max(e, r.timeStamp));
510
+ }
511
+ }), e;
512
+ }
513
+ /**
514
+ * 获取所有章节的总时长(毫秒)
515
+ */
516
+ getTotalDuration() {
517
+ if (this.totalDurationCache !== null)
518
+ return this.totalDurationCache;
519
+ if (!this.state.currentScript)
520
+ return 0;
521
+ let t = 0;
522
+ return this.state.currentScript.chapters.forEach((e) => {
523
+ t += this.calculateChapterDuration(e);
524
+ }), this.totalDurationCache = t, this.config.debug && console.log(`${this.NAME} calculated total duration: ${t}ms`), t;
525
+ }
526
+ /**
527
+ * 获取章节时间映射信息
528
+ */
529
+ getChapterTimeMap() {
530
+ if (this.chapterTimeMapCache !== null)
531
+ return this.chapterTimeMapCache;
532
+ if (!this.state.currentScript)
533
+ return [];
534
+ const t = [];
535
+ let e = 0;
536
+ return this.state.currentScript.chapters.forEach((i, a) => {
537
+ const r = this.calculateChapterDuration(i), s = e + r;
538
+ t.push({
539
+ chapterIndex: a,
540
+ chapterName: i.name,
541
+ startTime: e,
542
+ duration: r,
543
+ endTime: s,
544
+ chapter: i
545
+ }), e = s;
546
+ }), this.chapterTimeMapCache = t, this.config.debug && console.log(`${this.NAME} generated chapter time map:`, t), t;
547
+ }
548
+ /**
549
+ * 获取当前全局播放时间(毫秒)
550
+ *
551
+ * @deprecated 建议使用 getGlobalProgress().currentTime 获取更完整的信息
552
+ * @returns 当前全局时间(毫秒)
553
+ */
554
+ getCurrentGlobalTime() {
555
+ return this.getGlobalProgress().currentTime;
556
+ }
557
+ /**
558
+ * 获取全局进度信息
559
+ */
560
+ getGlobalProgress() {
561
+ let t = 0, e = 0, i = 0;
562
+ if (this.state.currentChapter) {
563
+ const n = this.getChapterTimeMap().find((o) => o.chapter.name === this.state.currentChapter.name);
564
+ if (n) {
565
+ e = n.chapterIndex;
566
+ const o = this.getProgress();
567
+ i = (o == null ? void 0 : o.currentTime) || 0, t = n.startTime + i;
568
+ }
569
+ }
570
+ const a = this.getTotalDuration(), r = a > 0 ? t / a * 100 : 0;
571
+ return {
572
+ currentTime: t,
573
+ totalTime: a,
574
+ percentage: Math.min(100, Math.max(0, r)),
575
+ currentChapterIndex: e,
576
+ currentChapterTime: i,
577
+ currentChapter: this.state.currentChapter || void 0
578
+ };
579
+ }
580
+ /**
581
+ * 根据全局时间获取对应的章节信息
582
+ */
583
+ getChapterByGlobalTime(t) {
584
+ const e = this.getChapterTimeMap();
585
+ if (e.length === 0)
586
+ return null;
587
+ const a = e.find((s) => t >= s.startTime && t < s.endTime) || (t >= e[e.length - 1].startTime ? e[e.length - 1] : null);
588
+ if (!a)
589
+ return null;
590
+ const r = t - a.startTime;
591
+ return {
592
+ chapterIndex: a.chapterIndex,
593
+ chapterTime: Math.max(0, r),
594
+ chapter: a.chapter
595
+ };
596
+ }
597
+ /**
598
+ * 跳转到指定的全局时间
599
+ */
600
+ seekToGlobalTime(t, e) {
601
+ return g(this, null, function* () {
602
+ var i;
603
+ this._autoPlayOnNaturalEnd = !!e;
604
+ try {
605
+ if (!this.state.currentScript)
606
+ throw new Error("No script loaded");
607
+ const a = this.getTotalDuration(), r = Math.max(0, Math.min(t, a));
608
+ this.config.debug, this.emit("seek-started", r);
609
+ const s = this.getChapterByGlobalTime(r);
610
+ if (!s)
611
+ throw new Error("Unable to locate chapter for the specified time");
612
+ const { chapterIndex: n, chapterTime: o, chapter: h } = s, P = this.state.playing;
613
+ this.state.playing && this.pause(), (!this.state.currentChapter || this.state.currentChapter.name !== h.name) && (this.config.debug && console.log(`${this.NAME} switching to chapter ${n}: ${h.name}`), yield this.initializeChapterForSeek(h, o), this.state.currentChapter = h, this.emit("chapter-changed", n, h)), this.setTimelineTo(o);
614
+ const C = this.getChapterTimeMap().find((u) => u.chapter.name === h.name), A = (i = C == null ? void 0 : C.chapterIndex) != null ? i : 0;
615
+ this.state.currentScript.chapters.forEach((u, b) => {
616
+ u.players.forEach((T) => {
617
+ if (T.type === "model") {
618
+ const c = this.playground.getDigitalHuman(T.model);
619
+ if (!c)
620
+ return;
621
+ if (b < A) {
622
+ const x = T.keyframes[T.keyframes.length - 1], $ = c.keyframesManager.getStateByTime(
623
+ x.timeStamp,
624
+ T.keyframes,
625
+ "model"
626
+ );
627
+ c.model.position.copy($.translation), c.model.quaternion.copy($.quaternion), c.model.scale.copy($.scale), c.model.visible = $.visible, c.container.visible = !0, c.state.currentTime = x.timeStamp, c.pauseAnimation && c.pauseAnimation();
628
+ } else
629
+ b === A ? (c.play({
630
+ keyframes: T.keyframes,
631
+ items: T.items,
632
+ effects: T.effects
633
+ }), c.state.currentTime = o, c.model.visible = !0, c.container.visible = !0, e ? c.continueAnimation() : c.pauseAnimation && c.pauseAnimation()) : (c.model.visible = !1, c.container.visible = !1, c.state.currentTime = 0, c.pauseAnimation && c.pauseAnimation());
634
+ }
635
+ });
636
+ }), (e !== void 0 ? e : P) && (this.state.playing = !0, h.players.forEach((u) => {
637
+ if (u.type === "model") {
638
+ const b = this.playground.getDigitalHuman(u.model);
639
+ b && (b.play({
640
+ keyframes: u.keyframes,
641
+ items: u.items,
642
+ effects: u.effects
643
+ }), b.state.currentTime = o, b.continueAnimation());
644
+ }
645
+ }), this.emit("playback-started", r)), this.emit("seek-completed", r);
646
+ const m = this.getChapterTimeMap().find((u) => u.chapter.name === h.name);
647
+ if (m && Math.abs(o - m.duration) < 1 && // 允许1ms误差
648
+ e) {
649
+ const u = this.state.currentScript.chapters[n + 1];
650
+ u && (this.config.debug && console.log(`${this.NAME} seekToGlobalTime: auto switch to next chapter:`, u.name), yield this.playChapter(u));
651
+ }
652
+ this.config.debug;
653
+ } catch (a) {
654
+ throw console.error(`${this.NAME} failed to seek to global time ${t}:`, a), a;
655
+ }
656
+ });
657
+ }
658
+ /**
659
+ * 初始化章节用于跳转(不自动播放)
660
+ */
661
+ initializeChapterForSeek(t, e = 0) {
662
+ return g(this, null, function* () {
663
+ this.emitPlayingPlayersChanged();
664
+ try {
665
+ this.config.debug && console.log(`${this.NAME} initializing chapter for seek: ${t.name}`), this.playground.reset();
666
+ const i = t.players.filter((s) => s.type === "model"), a = [];
667
+ i.forEach((s) => {
668
+ const n = s;
669
+ n.keyframes && Array.isArray(n.keyframes) && n.keyframes.forEach((o) => {
670
+ o.animation && o.animation.url && a.push(o.animation.url);
671
+ });
672
+ }), a.length > 0 && (yield this.playground.loadAnimations(a)), yield Promise.all(
673
+ i.map((s) => g(this, null, function* () {
674
+ const n = s;
675
+ let o = this.playground.getDigitalHuman(n.model);
676
+ if (o || (yield this.playground.loadModels([n.model]), o = this.playground.getDigitalHuman(n.model)), o && n.keyframes.length > 0) {
677
+ o.state.currentTime = e, o.state.currentAnimation = null, o.keyframes = n.keyframes;
678
+ const h = n.keyframes[0];
679
+ o.model.position.set(
680
+ h.position[0],
681
+ h.position[1],
682
+ h.position[2]
683
+ ), o.model.quaternion.set(
684
+ h.quaternion[0],
685
+ h.quaternion[1],
686
+ h.quaternion[2],
687
+ h.quaternion[3]
688
+ ), o.model.scale.set(h.scale[0], h.scale[1], h.scale[2]), o.model.visible = h.visible, o.play({
689
+ keyframes: n.keyframes,
690
+ items: n.items,
691
+ effects: n.effects
692
+ }), o.state.currentTime = e, o.continueAnimation();
693
+ }
694
+ }))
695
+ ), t.players.filter((s) => s.type === "camera").length > 0 && this.config.debug, this.config.debug;
696
+ } catch (i) {
697
+ throw console.error(`${this.NAME} failed to initialize chapter for seek:`, i), i;
698
+ }
699
+ });
700
+ }
701
+ /**
702
+ * 跳转到指定百分比位置
703
+ */
704
+ seekToPercentage(t, e) {
705
+ return g(this, null, function* () {
706
+ const i = Math.max(0, Math.min(100, t)), r = this.getTotalDuration() * i / 100;
707
+ this.config.debug && console.log(`${this.NAME} seeking to ${i}% (${r}ms)`), yield this.seekToGlobalTime(r, e);
708
+ });
709
+ }
710
+ /**
711
+ * 跳转到指定章节的指定时间
712
+ */
713
+ seekToChapter(t, e = 0, i) {
714
+ return g(this, null, function* () {
715
+ if (!this.state.currentScript)
716
+ throw new Error("No script loaded");
717
+ if (t < 0 || t >= this.state.currentScript.chapters.length)
718
+ throw new Error("Invalid chapter index");
719
+ const s = this.getChapterTimeMap()[t].startTime + Math.max(0, e);
720
+ this.config.debug && console.log(`${this.NAME} seeking to chapter ${t} at ${e}ms (global: ${s}ms)`), yield this.seekToGlobalTime(s, i);
721
+ });
722
+ }
723
+ /**
724
+ * 从指定全局时间开始播放所有剩余内容
725
+ */
726
+ playFromGlobalTime(t) {
727
+ return g(this, null, function* () {
728
+ yield this.seekToGlobalTime(t, !0), yield this.playAllRemaining();
729
+ });
730
+ }
731
+ /**
732
+ * 注册进度变化监听器
733
+ */
734
+ onProgressChanged(t) {
735
+ const e = (i) => g(this, null, function* () {
736
+ var s;
737
+ t(i);
738
+ const a = ((s = this.state.currentScript) == null ? void 0 : s.chapters) || [], r = this.state.currentChapter ? a.findIndex((n) => n.name === this.state.currentChapter.name) : -1;
739
+ if (this.state.playing && this.state.currentChapter && i.currentTime >= i.totalTime - 10 && // 允许10ms误差
740
+ this._autoPlayOnNaturalEnd) {
741
+ const n = a[r + 1];
742
+ n ? yield this.playChapter(n) : (this.stopAllPlayers(), this.state.playing = !1, this.emitPlayingPlayersChanged && this.emitPlayingPlayersChanged());
743
+ }
744
+ });
745
+ return this.progressListeners.add(e), this.startProgressUpdateTimer(), this.config.debug && console.log(`${this.NAME} progress listener added, total: ${this.progressListeners.size}`), () => {
746
+ this.progressListeners.delete(e), this.progressListeners.size === 0 && this.stopProgressUpdateTimer(), this.config.debug && console.log(`${this.NAME} progress listener removed, remaining: ${this.progressListeners.size}`);
747
+ };
748
+ }
749
+ /**
750
+ * 移除进度监听器
751
+ */
752
+ offProgressChanged(t) {
753
+ this.progressListeners.delete(t), this.progressListeners.size === 0 && this.stopProgressUpdateTimer(), this.config.debug && console.log(`${this.NAME} progress listener removed via off method, remaining: ${this.progressListeners.size}`);
754
+ }
755
+ /**
756
+ * 设置进度回调频率(毫秒)
757
+ */
758
+ setProgressUpdateInterval(t) {
759
+ const e = this.progressUpdateInterval;
760
+ this.progressUpdateInterval = Math.max(50, t), this.config.debug && console.log(
761
+ `${this.NAME} progress update interval changed from ${e}ms to ${this.progressUpdateInterval}ms`
762
+ ), this.progressUpdateTimer !== null && (this.stopProgressUpdateTimer(), this.startProgressUpdateTimer());
763
+ }
764
+ /**
765
+ * 启动进度更新定时器
766
+ */
767
+ startProgressUpdateTimer() {
768
+ this.progressUpdateTimer === null && (this.progressUpdateTimer = window.setInterval(() => {
769
+ if (this.progressListeners.size > 0) {
770
+ const t = this.getGlobalProgress();
771
+ this.emit("progress-changed", t);
772
+ }
773
+ }, this.progressUpdateInterval), this.config.debug && console.log(`${this.NAME} progress update timer started with ${this.progressUpdateInterval}ms interval`));
774
+ }
775
+ /**
776
+ * 停止进度更新定时器
777
+ */
778
+ stopProgressUpdateTimer() {
779
+ this.progressUpdateTimer !== null && (clearInterval(this.progressUpdateTimer), this.progressUpdateTimer = null, this.config.debug && console.log(`${this.NAME} progress update timer stopped`));
780
+ }
781
+ /**
782
+ * 播放完整的所有章节(从头开始)
783
+ */
784
+ playAllChapters() {
785
+ return g(this, null, function* () {
786
+ if (!this.state.currentScript || this.state.currentScript.chapters.length === 0)
787
+ throw new Error("No script or chapters loaded");
788
+ this.config.debug, yield this.seekToGlobalTime(0, !0), yield this.playAllRemaining();
789
+ });
790
+ }
791
+ /**
792
+ * 获取播放范围信息
793
+ */
794
+ getPlaybackRange() {
795
+ const t = this.getCurrentGlobalTime(), e = this.getTotalDuration();
796
+ return {
797
+ startTime: t,
798
+ endTime: e,
799
+ estimatedDuration: e - t
800
+ };
801
+ }
802
+ /**
803
+ * 停止所有 player 的播放状态
804
+ */
805
+ stopAllPlayers() {
806
+ this.state.currentScript && this.state.currentScript.chapters.forEach((t) => {
807
+ t.players.forEach((e) => {
808
+ if (e.type === "model") {
809
+ const i = this.playground.getDigitalHuman(e.model);
810
+ i && (i.pauseAnimation && i.pauseAnimation(), i.state.playing = !1);
811
+ }
812
+ });
813
+ });
814
+ }
815
+ // 简单的事件发射器实现
816
+ emit(t, ...e) {
817
+ if (this.config.debug, t === "progress-changed" && e.length > 0) {
818
+ const i = e[0];
819
+ this.progressListeners.forEach((a) => {
820
+ try {
821
+ a(i);
822
+ } catch (r) {
823
+ console.error(`${this.NAME} progress listener error:`, r);
824
+ }
825
+ });
826
+ }
827
+ }
828
+ /**
829
+ * 注册监听当前正在播放的所有player变化
830
+ */
831
+ onPlayingPlayersChanged(t) {
832
+ return this.playingPlayersListeners.add(t), () => this.playingPlayersListeners.delete(t);
833
+ }
834
+ /**
835
+ * 获取当前正在播放的所有player(数组)
836
+ */
837
+ getCurrentPlayingPlayers() {
838
+ const e = this.getGlobalProgress().currentTime, a = this.getChapterTimeMap().find(
839
+ (r) => e >= r.startTime && e < r.endTime
840
+ );
841
+ return a ? this.getPlayingPlayersFromChapter(a.chapter) : [];
842
+ }
843
+ /**
844
+ * 从指定章节获取正在播放的players
845
+ */
846
+ getPlayingPlayersFromChapter(t) {
847
+ return t.players.filter((e) => {
848
+ if (e.type === "model") {
849
+ const i = this.playground.getDigitalHuman(e.model);
850
+ return !(!i || !i.state);
851
+ }
852
+ return !1;
853
+ });
854
+ }
855
+ /**
856
+ * 触发 playing-players-changed 事件
857
+ */
858
+ emitPlayingPlayersChanged() {
859
+ const t = this.getCurrentPlayingPlayers();
860
+ this.playingPlayersListeners.forEach((e) => e(t));
861
+ }
862
+ }
863
+ export {
864
+ Q as default
865
+ };