@godscene/visualizer 1.7.11

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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/es/component/blackboard/highlights.mjs +47 -0
  4. package/dist/es/component/blackboard/index.css +118 -0
  5. package/dist/es/component/blackboard/index.mjs +122 -0
  6. package/dist/es/component/config-selector/index.mjs +251 -0
  7. package/dist/es/component/context-preview/index.mjs +37 -0
  8. package/dist/es/component/env-config/index.mjs +237 -0
  9. package/dist/es/component/env-config-reminder/index.css +30 -0
  10. package/dist/es/component/env-config-reminder/index.mjs +27 -0
  11. package/dist/es/component/form-field/index.mjs +158 -0
  12. package/dist/es/component/history-selector/index.css +237 -0
  13. package/dist/es/component/history-selector/index.mjs +197 -0
  14. package/dist/es/component/index.mjs +1 -0
  15. package/dist/es/component/logo/index.css +19 -0
  16. package/dist/es/component/logo/index.mjs +20 -0
  17. package/dist/es/component/logo/logo.mjs +2 -0
  18. package/dist/es/component/misc/index.mjs +96 -0
  19. package/dist/es/component/nav-actions/index.mjs +14 -0
  20. package/dist/es/component/nav-actions/style.css +35 -0
  21. package/dist/es/component/player/index.css +296 -0
  22. package/dist/es/component/player/index.mjs +702 -0
  23. package/dist/es/component/player/playback-controls.mjs +4 -0
  24. package/dist/es/component/player/report-download.mjs +61 -0
  25. package/dist/es/component/player/scenes/StepScene.mjs +194 -0
  26. package/dist/es/component/player/scenes/derive-frame-state.mjs +229 -0
  27. package/dist/es/component/player/scenes/export-branded-video.mjs +360 -0
  28. package/dist/es/component/player/scenes/frame-calculator.mjs +149 -0
  29. package/dist/es/component/player/scenes/playback-frame.mjs +6 -0
  30. package/dist/es/component/player/scenes/playback-layout.mjs +12 -0
  31. package/dist/es/component/player/scenes/pointer-layout.mjs +36 -0
  32. package/dist/es/component/player/use-frame-player.mjs +87 -0
  33. package/dist/es/component/playground/index.css +930 -0
  34. package/dist/es/component/playground/playground-demo-ui-context.json +290 -0
  35. package/dist/es/component/playground-result/index.css +92 -0
  36. package/dist/es/component/playground-result/index.mjs +232 -0
  37. package/dist/es/component/prompt-input/index.css +832 -0
  38. package/dist/es/component/prompt-input/index.mjs +959 -0
  39. package/dist/es/component/screenshot-viewer/index.css +237 -0
  40. package/dist/es/component/screenshot-viewer/index.mjs +319 -0
  41. package/dist/es/component/service-mode-control/index.mjs +107 -0
  42. package/dist/es/component/shiny-text/index.css +107 -0
  43. package/dist/es/component/shiny-text/index.mjs +15 -0
  44. package/dist/es/component/universal-playground/empty-state.mjs +5 -0
  45. package/dist/es/component/universal-playground/index.css +619 -0
  46. package/dist/es/component/universal-playground/index.mjs +558 -0
  47. package/dist/es/component/universal-playground/providers/context-provider.mjs +90 -0
  48. package/dist/es/component/universal-playground/providers/indexeddb-storage-provider.mjs +280 -0
  49. package/dist/es/component/universal-playground/providers/storage-provider.mjs +279 -0
  50. package/dist/es/component/universal-playground/universal-playground-electron.mjs +668 -0
  51. package/dist/es/hooks/useMinimalTypeGate.mjs +47 -0
  52. package/dist/es/hooks/usePlaygroundExecution.mjs +435 -0
  53. package/dist/es/hooks/usePlaygroundState.mjs +278 -0
  54. package/dist/es/hooks/useSafeOverrideAIConfig.mjs +20 -0
  55. package/dist/es/hooks/useServerValid.mjs +55 -0
  56. package/dist/es/hooks/useTheme.mjs +25 -0
  57. package/dist/es/icons/action-chevron.mjs +61 -0
  58. package/dist/es/icons/avatar.mjs +70 -0
  59. package/dist/es/icons/close.mjs +61 -0
  60. package/dist/es/icons/global-perspective.mjs +58 -0
  61. package/dist/es/icons/history.mjs +72 -0
  62. package/dist/es/icons/magnifying-glass.mjs +81 -0
  63. package/dist/es/icons/player-setting.mjs +68 -0
  64. package/dist/es/icons/prompt-history.mjs +70 -0
  65. package/dist/es/icons/setting.mjs +62 -0
  66. package/dist/es/icons/show-marker.mjs +58 -0
  67. package/dist/es/index.mjs +26 -0
  68. package/dist/es/static/image/logo.png +0 -0
  69. package/dist/es/store/history.mjs +128 -0
  70. package/dist/es/store/store.mjs +277 -0
  71. package/dist/es/types.mjs +73 -0
  72. package/dist/es/utils/action-label.mjs +15 -0
  73. package/dist/es/utils/color.mjs +35 -0
  74. package/dist/es/utils/constants.mjs +99 -0
  75. package/dist/es/utils/device-capabilities.mjs +13 -0
  76. package/dist/es/utils/empty-state-scroll.mjs +8 -0
  77. package/dist/es/utils/highlight-element.mjs +62 -0
  78. package/dist/es/utils/index.mjs +13 -0
  79. package/dist/es/utils/playground-utils.mjs +43 -0
  80. package/dist/es/utils/progress-action-icon.mjs +30 -0
  81. package/dist/es/utils/prompt-input-utils.mjs +49 -0
  82. package/dist/es/utils/prompt-placeholder.mjs +19 -0
  83. package/dist/es/utils/replay-scripts.mjs +428 -0
  84. package/dist/lib/component/blackboard/highlights.js +84 -0
  85. package/dist/lib/component/blackboard/index.css +118 -0
  86. package/dist/lib/component/blackboard/index.js +169 -0
  87. package/dist/lib/component/config-selector/index.js +295 -0
  88. package/dist/lib/component/context-preview/index.js +82 -0
  89. package/dist/lib/component/env-config/index.js +271 -0
  90. package/dist/lib/component/env-config-reminder/index.css +30 -0
  91. package/dist/lib/component/env-config-reminder/index.js +61 -0
  92. package/dist/lib/component/form-field/index.js +204 -0
  93. package/dist/lib/component/history-selector/index.css +237 -0
  94. package/dist/lib/component/history-selector/index.js +243 -0
  95. package/dist/lib/component/index.js +58 -0
  96. package/dist/lib/component/logo/index.css +19 -0
  97. package/dist/lib/component/logo/index.js +67 -0
  98. package/dist/lib/component/logo/logo.js +24 -0
  99. package/dist/lib/component/misc/index.js +152 -0
  100. package/dist/lib/component/nav-actions/index.js +48 -0
  101. package/dist/lib/component/nav-actions/style.css +35 -0
  102. package/dist/lib/component/player/index.css +296 -0
  103. package/dist/lib/component/player/index.js +747 -0
  104. package/dist/lib/component/player/playback-controls.js +38 -0
  105. package/dist/lib/component/player/report-download.js +98 -0
  106. package/dist/lib/component/player/scenes/StepScene.js +228 -0
  107. package/dist/lib/component/player/scenes/derive-frame-state.js +266 -0
  108. package/dist/lib/component/player/scenes/export-branded-video.js +403 -0
  109. package/dist/lib/component/player/scenes/frame-calculator.js +186 -0
  110. package/dist/lib/component/player/scenes/playback-frame.js +40 -0
  111. package/dist/lib/component/player/scenes/playback-layout.js +46 -0
  112. package/dist/lib/component/player/scenes/pointer-layout.js +88 -0
  113. package/dist/lib/component/player/use-frame-player.js +121 -0
  114. package/dist/lib/component/playground/index.css +930 -0
  115. package/dist/lib/component/playground/playground-demo-ui-context.json +290 -0
  116. package/dist/lib/component/playground-result/index.css +92 -0
  117. package/dist/lib/component/playground-result/index.js +276 -0
  118. package/dist/lib/component/prompt-input/index.css +832 -0
  119. package/dist/lib/component/prompt-input/index.js +1005 -0
  120. package/dist/lib/component/screenshot-viewer/index.css +237 -0
  121. package/dist/lib/component/screenshot-viewer/index.js +353 -0
  122. package/dist/lib/component/service-mode-control/index.js +141 -0
  123. package/dist/lib/component/shiny-text/index.css +107 -0
  124. package/dist/lib/component/shiny-text/index.js +49 -0
  125. package/dist/lib/component/universal-playground/empty-state.js +39 -0
  126. package/dist/lib/component/universal-playground/index.css +619 -0
  127. package/dist/lib/component/universal-playground/index.js +607 -0
  128. package/dist/lib/component/universal-playground/providers/context-provider.js +133 -0
  129. package/dist/lib/component/universal-playground/providers/indexeddb-storage-provider.js +320 -0
  130. package/dist/lib/component/universal-playground/providers/storage-provider.js +337 -0
  131. package/dist/lib/component/universal-playground/universal-playground-electron.js +717 -0
  132. package/dist/lib/hooks/useMinimalTypeGate.js +81 -0
  133. package/dist/lib/hooks/usePlaygroundExecution.js +478 -0
  134. package/dist/lib/hooks/usePlaygroundState.js +312 -0
  135. package/dist/lib/hooks/useSafeOverrideAIConfig.js +57 -0
  136. package/dist/lib/hooks/useServerValid.js +89 -0
  137. package/dist/lib/hooks/useTheme.js +59 -0
  138. package/dist/lib/icons/action-chevron.js +95 -0
  139. package/dist/lib/icons/avatar.js +104 -0
  140. package/dist/lib/icons/close.js +95 -0
  141. package/dist/lib/icons/global-perspective.js +92 -0
  142. package/dist/lib/icons/history.js +106 -0
  143. package/dist/lib/icons/magnifying-glass.js +115 -0
  144. package/dist/lib/icons/player-setting.js +102 -0
  145. package/dist/lib/icons/prompt-history.js +104 -0
  146. package/dist/lib/icons/setting.js +96 -0
  147. package/dist/lib/icons/show-marker.js +92 -0
  148. package/dist/lib/index.js +204 -0
  149. package/dist/lib/static/image/logo.png +0 -0
  150. package/dist/lib/store/history.js +135 -0
  151. package/dist/lib/store/store.js +287 -0
  152. package/dist/lib/types.js +119 -0
  153. package/dist/lib/utils/action-label.js +52 -0
  154. package/dist/lib/utils/color.js +75 -0
  155. package/dist/lib/utils/constants.js +172 -0
  156. package/dist/lib/utils/device-capabilities.js +50 -0
  157. package/dist/lib/utils/empty-state-scroll.js +42 -0
  158. package/dist/lib/utils/highlight-element.js +99 -0
  159. package/dist/lib/utils/index.js +69 -0
  160. package/dist/lib/utils/playground-utils.js +86 -0
  161. package/dist/lib/utils/progress-action-icon.js +67 -0
  162. package/dist/lib/utils/prompt-input-utils.js +89 -0
  163. package/dist/lib/utils/prompt-placeholder.js +53 -0
  164. package/dist/lib/utils/replay-scripts.js +474 -0
  165. package/dist/types/component/blackboard/highlights.d.ts +11 -0
  166. package/dist/types/component/blackboard/index.d.ts +10 -0
  167. package/dist/types/component/config-selector/index.d.ts +15 -0
  168. package/dist/types/component/context-preview/index.d.ts +9 -0
  169. package/dist/types/component/env-config/index.d.ts +8 -0
  170. package/dist/types/component/env-config-reminder/index.d.ts +6 -0
  171. package/dist/types/component/form-field/index.d.ts +17 -0
  172. package/dist/types/component/history-selector/index.d.ts +13 -0
  173. package/dist/types/component/index.d.ts +1 -0
  174. package/dist/types/component/logo/index.d.ts +5 -0
  175. package/dist/types/component/misc/index.d.ts +6 -0
  176. package/dist/types/component/nav-actions/index.d.ts +12 -0
  177. package/dist/types/component/player/index.d.ts +15 -0
  178. package/dist/types/component/player/playback-controls.d.ts +1 -0
  179. package/dist/types/component/player/report-download.d.ts +32 -0
  180. package/dist/types/component/player/scenes/StepScene.d.ts +9 -0
  181. package/dist/types/component/player/scenes/derive-frame-state.d.ts +40 -0
  182. package/dist/types/component/player/scenes/export-branded-video.d.ts +33 -0
  183. package/dist/types/component/player/scenes/frame-calculator.d.ts +40 -0
  184. package/dist/types/component/player/scenes/playback-frame.d.ts +3 -0
  185. package/dist/types/component/player/scenes/playback-layout.d.ts +7 -0
  186. package/dist/types/component/player/scenes/pointer-layout.d.ts +20 -0
  187. package/dist/types/component/player/use-frame-player.d.ts +17 -0
  188. package/dist/types/component/playground-result/index.d.ts +22 -0
  189. package/dist/types/component/prompt-input/index.d.ts +23 -0
  190. package/dist/types/component/screenshot-viewer/index.d.ts +23 -0
  191. package/dist/types/component/service-mode-control/index.d.ts +6 -0
  192. package/dist/types/component/shiny-text/index.d.ts +12 -0
  193. package/dist/types/component/universal-playground/empty-state.d.ts +3 -0
  194. package/dist/types/component/universal-playground/index.d.ts +4 -0
  195. package/dist/types/component/universal-playground/providers/context-provider.d.ts +37 -0
  196. package/dist/types/component/universal-playground/providers/indexeddb-storage-provider.d.ts +71 -0
  197. package/dist/types/component/universal-playground/providers/storage-provider.d.ts +58 -0
  198. package/dist/types/component/universal-playground/universal-playground-electron.d.ts +4 -0
  199. package/dist/types/hooks/useMinimalTypeGate.d.ts +72 -0
  200. package/dist/types/hooks/usePlaygroundExecution.d.ts +40 -0
  201. package/dist/types/hooks/usePlaygroundState.d.ts +26 -0
  202. package/dist/types/hooks/useSafeOverrideAIConfig.d.ts +16 -0
  203. package/dist/types/hooks/useServerValid.d.ts +1 -0
  204. package/dist/types/hooks/useTheme.d.ts +7 -0
  205. package/dist/types/index.d.ts +29 -0
  206. package/dist/types/store/history.d.ts +16 -0
  207. package/dist/types/store/store.d.ts +57 -0
  208. package/dist/types/types.d.ts +278 -0
  209. package/dist/types/utils/action-label.d.ts +11 -0
  210. package/dist/types/utils/color.d.ts +4 -0
  211. package/dist/types/utils/constants.d.ts +80 -0
  212. package/dist/types/utils/device-capabilities.d.ts +9 -0
  213. package/dist/types/utils/empty-state-scroll.d.ts +11 -0
  214. package/dist/types/utils/highlight-element.d.ts +3 -0
  215. package/dist/types/utils/index.d.ts +5 -0
  216. package/dist/types/utils/playground-utils.d.ts +11 -0
  217. package/dist/types/utils/progress-action-icon.d.ts +12 -0
  218. package/dist/types/utils/prompt-input-utils.d.ts +24 -0
  219. package/dist/types/utils/prompt-placeholder.d.ts +1 -0
  220. package/dist/types/utils/replay-scripts.d.ts +50 -0
  221. package/package.json +82 -0
@@ -0,0 +1,747 @@
1
+ "use strict";
2
+ "use client";
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.n = (module)=>{
6
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
7
+ __webpack_require__.d(getter, {
8
+ a: getter
9
+ });
10
+ return getter;
11
+ };
12
+ })();
13
+ (()=>{
14
+ __webpack_require__.d = (exports1, definition)=>{
15
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ get: definition[key]
18
+ });
19
+ };
20
+ })();
21
+ (()=>{
22
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
23
+ })();
24
+ (()=>{
25
+ __webpack_require__.r = (exports1)=>{
26
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
27
+ value: 'Module'
28
+ });
29
+ Object.defineProperty(exports1, '__esModule', {
30
+ value: true
31
+ });
32
+ };
33
+ })();
34
+ var __webpack_exports__ = {};
35
+ __webpack_require__.r(__webpack_exports__);
36
+ __webpack_require__.d(__webpack_exports__, {
37
+ Player: ()=>Player
38
+ });
39
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
40
+ const external_react_namespaceObject = require("react");
41
+ require("./index.css");
42
+ const icons_namespaceObject = require("@ant-design/icons");
43
+ const external_antd_namespaceObject = require("antd");
44
+ const global_perspective_js_namespaceObject = require("../../icons/global-perspective.js");
45
+ var global_perspective_js_default = /*#__PURE__*/ __webpack_require__.n(global_perspective_js_namespaceObject);
46
+ const player_setting_js_namespaceObject = require("../../icons/player-setting.js");
47
+ var player_setting_js_default = /*#__PURE__*/ __webpack_require__.n(player_setting_js_namespaceObject);
48
+ const store_js_namespaceObject = require("../../store/store.js");
49
+ const external_playback_controls_js_namespaceObject = require("./playback-controls.js");
50
+ const external_report_download_js_namespaceObject = require("./report-download.js");
51
+ const StepScene_js_namespaceObject = require("./scenes/StepScene.js");
52
+ const export_branded_video_js_namespaceObject = require("./scenes/export-branded-video.js");
53
+ const frame_calculator_js_namespaceObject = require("./scenes/frame-calculator.js");
54
+ const playback_frame_js_namespaceObject = require("./scenes/playback-frame.js");
55
+ const external_use_frame_player_js_namespaceObject = require("./use-frame-player.js");
56
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
57
+ try {
58
+ var info = gen[key](arg);
59
+ var value = info.value;
60
+ } catch (error) {
61
+ reject(error);
62
+ return;
63
+ }
64
+ if (info.done) resolve(value);
65
+ else Promise.resolve(value).then(_next, _throw);
66
+ }
67
+ function _async_to_generator(fn) {
68
+ return function() {
69
+ var self = this, args = arguments;
70
+ return new Promise(function(resolve, reject) {
71
+ var gen = fn.apply(self, args);
72
+ function _next(value) {
73
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
74
+ }
75
+ function _throw(err) {
76
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
77
+ }
78
+ _next(void 0);
79
+ });
80
+ };
81
+ }
82
+ function deriveTaskId(scriptFrames, stepsFrame) {
83
+ let taskId = null;
84
+ for (const sf of scriptFrames){
85
+ var _sf_taskId;
86
+ if (0 === sf.durationInFrames) {
87
+ if (sf.startFrame <= stepsFrame) {
88
+ var _sf_taskId1;
89
+ taskId = null != (_sf_taskId1 = sf.taskId) ? _sf_taskId1 : taskId;
90
+ }
91
+ continue;
92
+ }
93
+ if (stepsFrame < sf.startFrame) break;
94
+ taskId = null != (_sf_taskId = sf.taskId) ? _sf_taskId : taskId;
95
+ }
96
+ return taskId;
97
+ }
98
+ function formatTime(frame, fps) {
99
+ const totalSeconds = Math.floor(frame / fps);
100
+ const m = Math.floor(totalSeconds / 60);
101
+ const s = totalSeconds % 60;
102
+ return `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;
103
+ }
104
+ function Player(props) {
105
+ var _ref, _ref1, _ref2;
106
+ const { autoZoom, setAutoZoom, playbackSpeed, setPlaybackSpeed, subtitleEnabled, setSubtitleEnabled } = (0, store_js_namespaceObject.useGlobalPreference)();
107
+ (0, external_react_namespaceObject.useEffect)(()=>{
108
+ if ((null == props ? void 0 : props.autoZoom) !== void 0) setAutoZoom(props.autoZoom);
109
+ }, [
110
+ null == props ? void 0 : props.autoZoom,
111
+ setAutoZoom
112
+ ]);
113
+ const scripts = null == props ? void 0 : props.replayScripts;
114
+ const frameMap = (0, external_react_namespaceObject.useMemo)(()=>{
115
+ if (!scripts || 0 === scripts.length) return null;
116
+ return (0, frame_calculator_js_namespaceObject.calculateFrameMap)(scripts, {
117
+ imageWidth: null == props ? void 0 : props.imageWidth,
118
+ imageHeight: null == props ? void 0 : props.imageHeight
119
+ });
120
+ }, [
121
+ null == props ? void 0 : props.imageHeight,
122
+ null == props ? void 0 : props.imageWidth,
123
+ scripts
124
+ ]);
125
+ const containerRef = (0, external_react_namespaceObject.useRef)(null);
126
+ const renderLayerRef = (0, external_react_namespaceObject.useRef)(null);
127
+ const lastTaskIdRef = (0, external_react_namespaceObject.useRef)(null);
128
+ const [containerSize, setContainerSize] = (0, external_react_namespaceObject.useState)({
129
+ width: 0,
130
+ height: 0
131
+ });
132
+ (0, external_react_namespaceObject.useEffect)(()=>{
133
+ const el = renderLayerRef.current;
134
+ if (!el) return;
135
+ const ro = new ResizeObserver((entries)=>{
136
+ for (const entry of entries){
137
+ const { width, height } = entry.contentRect;
138
+ setContainerSize((prev)=>prev.width === width && prev.height === height ? prev : {
139
+ width,
140
+ height
141
+ });
142
+ }
143
+ });
144
+ ro.observe(el);
145
+ return ()=>ro.disconnect();
146
+ }, []);
147
+ const player = (0, external_use_frame_player_js_namespaceObject.useFramePlayer)({
148
+ durationInFrames: Math.max(null != (_ref = null == frameMap ? void 0 : frameMap.totalDurationInFrames) ? _ref : 1, 1),
149
+ fps: null != (_ref1 = null == frameMap ? void 0 : frameMap.fps) ? _ref1 : 30,
150
+ autoPlay: false,
151
+ loop: false,
152
+ playbackRate: playbackSpeed
153
+ });
154
+ const effectiveEndFrame = (0, external_react_namespaceObject.useMemo)(()=>{
155
+ if (!frameMap) return 0;
156
+ for(let i = frameMap.scriptFrames.length - 1; i >= 0; i--){
157
+ const sf = frameMap.scriptFrames[i];
158
+ if (sf.taskId) return sf.startFrame + sf.durationInFrames - 1;
159
+ }
160
+ return Math.max(0, frameMap.totalDurationInFrames - 1);
161
+ }, [
162
+ frameMap
163
+ ]);
164
+ const handlePlaybackToggle = (0, external_react_namespaceObject.useCallback)(()=>{
165
+ if (player.playing) return void player.pause();
166
+ if ((0, external_playback_controls_js_namespaceObject.shouldRestartPlaybackFromBeginning)(player.currentFrame, effectiveEndFrame)) player.seekTo(0);
167
+ player.play();
168
+ }, [
169
+ effectiveEndFrame,
170
+ player.currentFrame,
171
+ player.pause,
172
+ player.play,
173
+ player.playing,
174
+ player.seekTo
175
+ ]);
176
+ (0, external_react_namespaceObject.useEffect)(()=>{
177
+ if (!frameMap || player.playing) return;
178
+ if (player.currentFrame < frameMap.totalDurationInFrames - 1) return;
179
+ if (effectiveEndFrame > 0) player.seekTo(effectiveEndFrame);
180
+ }, [
181
+ effectiveEndFrame,
182
+ frameMap,
183
+ player.currentFrame,
184
+ player.playing,
185
+ player.seekTo
186
+ ]);
187
+ (0, external_react_namespaceObject.useEffect)(()=>{
188
+ if (!frameMap || !(null == props ? void 0 : props.onTaskChange)) return;
189
+ if (!player.playing) {
190
+ if (null !== lastTaskIdRef.current) {
191
+ lastTaskIdRef.current = null;
192
+ props.onTaskChange(null);
193
+ }
194
+ return;
195
+ }
196
+ const taskId = deriveTaskId(frameMap.scriptFrames, player.currentFrame);
197
+ if (taskId !== lastTaskIdRef.current) {
198
+ lastTaskIdRef.current = taskId;
199
+ props.onTaskChange(taskId);
200
+ }
201
+ }, [
202
+ frameMap,
203
+ null == props ? void 0 : props.onTaskChange,
204
+ player.currentFrame,
205
+ player.playing
206
+ ]);
207
+ const currentFrameState = (0, external_react_namespaceObject.useMemo)(()=>{
208
+ if (!frameMap) return null;
209
+ return (0, playback_frame_js_namespaceObject.getPlaybackFrameState)(frameMap, player.currentFrame);
210
+ }, [
211
+ frameMap,
212
+ player.currentFrame
213
+ ]);
214
+ const handleDownloadReport = (0, external_react_namespaceObject.useCallback)(()=>_async_to_generator(function*() {
215
+ if (!(null == props ? void 0 : props.reportFileContent)) return;
216
+ try {
217
+ yield (0, external_report_download_js_namespaceObject.triggerReportDownload)({
218
+ content: props.reportFileContent,
219
+ onDownloadReport: props.onDownloadReport
220
+ });
221
+ } catch (error) {
222
+ const errorMessage = error instanceof Error ? error.message : String(error);
223
+ external_antd_namespaceObject.message.error(`Failed to download report: ${errorMessage}`);
224
+ }
225
+ })(), [
226
+ null == props ? void 0 : props.onDownloadReport,
227
+ null == props ? void 0 : props.reportFileContent
228
+ ]);
229
+ const subtitle = (0, external_react_namespaceObject.useMemo)(()=>{
230
+ if (!currentFrameState) return null;
231
+ if (!currentFrameState.title && !currentFrameState.subTitle) return null;
232
+ return {
233
+ title: currentFrameState.title,
234
+ subTitle: currentFrameState.subTitle
235
+ };
236
+ }, [
237
+ currentFrameState
238
+ ]);
239
+ const [isExporting, setIsExporting] = (0, external_react_namespaceObject.useState)(false);
240
+ const [exportProgress, setExportProgress] = (0, external_react_namespaceObject.useState)(0);
241
+ const exportInFlightRef = (0, external_react_namespaceObject.useRef)(false);
242
+ const [controlsVisible, setControlsVisible] = (0, external_react_namespaceObject.useState)(true);
243
+ const hideTimerRef = (0, external_react_namespaceObject.useRef)(null);
244
+ const showControls = (0, external_react_namespaceObject.useCallback)(()=>{
245
+ setControlsVisible(true);
246
+ if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
247
+ if (isExporting) return;
248
+ hideTimerRef.current = setTimeout(()=>setControlsVisible(false), 3000);
249
+ }, [
250
+ isExporting
251
+ ]);
252
+ const onMouseEnter = (0, external_react_namespaceObject.useCallback)(()=>{
253
+ setControlsVisible(true);
254
+ if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
255
+ }, []);
256
+ const onMouseLeave = (0, external_react_namespaceObject.useCallback)(()=>{
257
+ if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
258
+ if (isExporting) return;
259
+ hideTimerRef.current = setTimeout(()=>setControlsVisible(false), 1000);
260
+ }, [
261
+ isExporting
262
+ ]);
263
+ (0, external_react_namespaceObject.useEffect)(()=>{
264
+ if (!isExporting) return;
265
+ setControlsVisible(true);
266
+ if (hideTimerRef.current) {
267
+ clearTimeout(hideTimerRef.current);
268
+ hideTimerRef.current = null;
269
+ }
270
+ }, [
271
+ isExporting
272
+ ]);
273
+ (0, external_react_namespaceObject.useEffect)(()=>{
274
+ const handleKeyDown = (e)=>{
275
+ var _e_target;
276
+ const tag = null == (_e_target = e.target) ? void 0 : _e_target.tagName;
277
+ if ('INPUT' === tag || 'TEXTAREA' === tag || 'SELECT' === tag) return;
278
+ if ('Space' === e.code) {
279
+ e.preventDefault();
280
+ handlePlaybackToggle();
281
+ }
282
+ };
283
+ document.addEventListener('keydown', handleKeyDown);
284
+ return ()=>document.removeEventListener('keydown', handleKeyDown);
285
+ }, [
286
+ handlePlaybackToggle
287
+ ]);
288
+ const seekBarRef = (0, external_react_namespaceObject.useRef)(null);
289
+ const handleSeekPointerDown = (0, external_react_namespaceObject.useCallback)((e)=>{
290
+ if (!frameMap || !seekBarRef.current) return;
291
+ const bar = seekBarRef.current;
292
+ bar.setPointerCapture(e.pointerId);
293
+ const seek = (clientX)=>{
294
+ const rect = bar.getBoundingClientRect();
295
+ const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
296
+ player.seekTo(Math.round(ratio * effectiveEndFrame));
297
+ };
298
+ seek(e.clientX);
299
+ const onMove = (ev)=>seek(ev.clientX);
300
+ const onUp = ()=>{
301
+ bar.removeEventListener('pointermove', onMove);
302
+ bar.removeEventListener('pointerup', onUp);
303
+ };
304
+ bar.addEventListener('pointermove', onMove);
305
+ bar.addEventListener('pointerup', onUp);
306
+ }, [
307
+ frameMap,
308
+ player,
309
+ effectiveEndFrame
310
+ ]);
311
+ const [isFullscreen, setIsFullscreen] = (0, external_react_namespaceObject.useState)(false);
312
+ (0, external_react_namespaceObject.useCallback)(()=>{
313
+ const el = containerRef.current;
314
+ if (!el) return;
315
+ if (document.fullscreenElement) document.exitFullscreen().then(()=>setIsFullscreen(false));
316
+ else el.requestFullscreen().then(()=>setIsFullscreen(true));
317
+ }, []);
318
+ (0, external_react_namespaceObject.useEffect)(()=>{
319
+ const handler = ()=>setIsFullscreen(!!document.fullscreenElement);
320
+ document.addEventListener('fullscreenchange', handler);
321
+ return ()=>document.removeEventListener('fullscreenchange', handler);
322
+ }, []);
323
+ const handleExportVideo = (0, external_react_namespaceObject.useCallback)(()=>_async_to_generator(function*() {
324
+ if (!frameMap || exportInFlightRef.current) return;
325
+ exportInFlightRef.current = true;
326
+ setIsExporting(true);
327
+ setExportProgress(0);
328
+ try {
329
+ yield (0, export_branded_video_js_namespaceObject.exportBrandedVideo)(frameMap, {
330
+ autoZoom
331
+ }, (pct)=>setExportProgress(Math.round(100 * pct)));
332
+ external_antd_namespaceObject.message.success('Video exported');
333
+ } catch (e) {
334
+ console.error('Export failed:', e);
335
+ const errorMessage = e instanceof Error ? e.message : 'Export failed';
336
+ external_antd_namespaceObject.message.error(errorMessage);
337
+ } finally{
338
+ exportInFlightRef.current = false;
339
+ setIsExporting(false);
340
+ setExportProgress(0);
341
+ }
342
+ })(), [
343
+ autoZoom,
344
+ frameMap
345
+ ]);
346
+ const chapterMarkers = (0, external_react_namespaceObject.useMemo)(()=>{
347
+ if (!frameMap || effectiveEndFrame <= 0) return [];
348
+ const markers = [];
349
+ for (const sf of frameMap.scriptFrames){
350
+ if ('img' !== sf.type && 'insight' !== sf.type || 0 === sf.durationInFrames) continue;
351
+ const globalFrame = sf.startFrame;
352
+ const percent = globalFrame / effectiveEndFrame * 100;
353
+ if (percent > 1 && percent < 99) {
354
+ const parts = [
355
+ sf.title,
356
+ sf.subTitle
357
+ ].filter(Boolean);
358
+ markers.push({
359
+ percent,
360
+ title: parts.length > 0 ? parts.join(': ') : `Chapter ${markers.length + 1}`,
361
+ frame: globalFrame
362
+ });
363
+ }
364
+ }
365
+ return markers;
366
+ }, [
367
+ frameMap,
368
+ effectiveEndFrame
369
+ ]);
370
+ const reportFileContent = null != (_ref2 = null == props ? void 0 : props.reportFileContent) ? _ref2 : null;
371
+ const canDownloadReport = (null == props ? void 0 : props.canDownloadReport) !== false;
372
+ if (!scripts || 0 === scripts.length || !frameMap) {
373
+ if (reportFileContent && canDownloadReport) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
374
+ className: "player-container player-container-empty",
375
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
376
+ className: "player-empty-state",
377
+ children: [
378
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
379
+ className: "player-empty-text",
380
+ children: "No replay available"
381
+ }),
382
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Button, {
383
+ icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.DownloadOutlined, {}),
384
+ onClick: ()=>{
385
+ handleDownloadReport();
386
+ },
387
+ children: "Download report"
388
+ })
389
+ ]
390
+ })
391
+ });
392
+ return null;
393
+ }
394
+ const compositionWidth = (null == currentFrameState ? void 0 : currentFrameState.imageWidth) || frameMap.imageWidth;
395
+ const compositionHeight = (null == currentFrameState ? void 0 : currentFrameState.imageHeight) || frameMap.imageHeight;
396
+ const isPortraitCanvas = compositionHeight > compositionWidth;
397
+ const seekPercent = effectiveEndFrame > 0 ? Math.min(100, player.currentFrame / effectiveEndFrame * 100) : 0;
398
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
399
+ className: "player-container",
400
+ "data-fit-mode": null == props ? void 0 : props.fitMode,
401
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
402
+ className: "canvas-container",
403
+ ref: containerRef,
404
+ onMouseMove: showControls,
405
+ onMouseEnter: onMouseEnter,
406
+ onMouseLeave: onMouseLeave,
407
+ children: [
408
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
409
+ className: "player-wrapper",
410
+ "data-portrait": isPortraitCanvas ? '' : void 0,
411
+ style: {
412
+ aspectRatio: `${compositionWidth}/${compositionHeight}`
413
+ },
414
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
415
+ ref: renderLayerRef,
416
+ style: {
417
+ display: 'flex',
418
+ justifyContent: 'center',
419
+ alignItems: 'center',
420
+ width: '100%',
421
+ height: '100%',
422
+ overflow: 'hidden'
423
+ },
424
+ onClick: handlePlaybackToggle,
425
+ children: (()=>{
426
+ const scale = containerSize.width > 0 && containerSize.height > 0 ? Math.min(containerSize.width / compositionWidth, containerSize.height / compositionHeight) : 1;
427
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
428
+ style: {
429
+ width: compositionWidth * scale,
430
+ height: compositionHeight * scale,
431
+ flexShrink: 0,
432
+ position: 'relative',
433
+ overflow: 'hidden'
434
+ },
435
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
436
+ style: {
437
+ width: compositionWidth,
438
+ height: compositionHeight,
439
+ transformOrigin: '0 0',
440
+ transform: `scale(${scale})`
441
+ },
442
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StepScene_js_namespaceObject.StepsTimeline, {
443
+ frameMap: frameMap,
444
+ autoZoom: autoZoom && player.playing,
445
+ frame: player.currentFrame,
446
+ width: compositionWidth,
447
+ height: compositionHeight,
448
+ fps: frameMap.fps
449
+ })
450
+ })
451
+ });
452
+ })()
453
+ })
454
+ }),
455
+ subtitleEnabled && subtitle && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
456
+ className: "player-subtitle",
457
+ children: [
458
+ subtitle.title && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
459
+ className: "player-subtitle-badge",
460
+ children: subtitle.title
461
+ }),
462
+ subtitle.subTitle && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
463
+ className: "player-subtitle-text",
464
+ children: subtitle.subTitle
465
+ })
466
+ ]
467
+ }),
468
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
469
+ className: `control-bar ${controlsVisible ? '' : 'hidden'}`,
470
+ onClick: (e)=>e.stopPropagation(),
471
+ children: [
472
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
473
+ className: "status-icon",
474
+ onClick: handlePlaybackToggle,
475
+ children: player.playing ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.PauseOutlined, {}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.CaretRightOutlined, {})
476
+ }),
477
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("span", {
478
+ className: "time-display",
479
+ children: [
480
+ formatTime(Math.min(player.currentFrame, effectiveEndFrame), frameMap.fps),
481
+ ' ',
482
+ "/ ",
483
+ formatTime(effectiveEndFrame + 1, frameMap.fps)
484
+ ]
485
+ }),
486
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
487
+ className: "seek-bar-track",
488
+ ref: seekBarRef,
489
+ onPointerDown: handleSeekPointerDown,
490
+ children: [
491
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
492
+ className: "seek-bar-fill",
493
+ style: {
494
+ width: `${seekPercent}%`
495
+ }
496
+ }),
497
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
498
+ className: "seek-bar-knob",
499
+ style: {
500
+ left: `${seekPercent}%`
501
+ }
502
+ }),
503
+ chapterMarkers.map((marker)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Tooltip, {
504
+ title: marker.title,
505
+ overlayClassName: "chapter-tooltip",
506
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
507
+ className: "chapter-marker",
508
+ style: {
509
+ left: `${marker.percent}%`
510
+ },
511
+ onClick: (e)=>{
512
+ e.stopPropagation();
513
+ player.seekTo(marker.frame);
514
+ }
515
+ })
516
+ }, marker.percent))
517
+ ]
518
+ }),
519
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
520
+ className: "player-custom-controls",
521
+ children: [
522
+ reportFileContent && canDownloadReport ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Tooltip, {
523
+ title: "Download Report",
524
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
525
+ className: "status-icon",
526
+ onClick: ()=>{
527
+ handleDownloadReport();
528
+ },
529
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.DownloadOutlined, {})
530
+ })
531
+ }) : null,
532
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Dropdown, {
533
+ trigger: [
534
+ 'hover',
535
+ 'click'
536
+ ],
537
+ placement: "topRight",
538
+ overlayStyle: {
539
+ minWidth: '148px'
540
+ },
541
+ dropdownRender: ()=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
542
+ className: "player-settings-dropdown",
543
+ children: [
544
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
545
+ className: "player-settings-item",
546
+ style: {
547
+ display: 'flex',
548
+ alignItems: 'center',
549
+ gap: '4px',
550
+ height: '32px',
551
+ padding: '0 8px',
552
+ borderRadius: '4px',
553
+ cursor: isExporting ? 'not-allowed' : 'pointer',
554
+ opacity: isExporting ? 0.5 : 1
555
+ },
556
+ onClick: isExporting ? void 0 : handleExportVideo,
557
+ children: [
558
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
559
+ style: {
560
+ width: 16,
561
+ height: 16,
562
+ display: 'inline-flex',
563
+ alignItems: 'center',
564
+ justifyContent: 'center',
565
+ flexShrink: 0
566
+ },
567
+ children: isExporting ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Progress, {
568
+ type: "circle",
569
+ percent: exportProgress,
570
+ size: 16,
571
+ strokeWidth: 14,
572
+ showInfo: false,
573
+ strokeColor: "#1677ff",
574
+ trailColor: "rgba(0, 0, 0, 0.12)"
575
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.ExportOutlined, {
576
+ style: {
577
+ width: '16px',
578
+ height: '16px'
579
+ }
580
+ })
581
+ }),
582
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
583
+ className: "player-export-label",
584
+ children: isExporting ? `Exporting ${exportProgress}%` : 'Export video'
585
+ })
586
+ ]
587
+ }),
588
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
589
+ className: "player-settings-divider"
590
+ }),
591
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
592
+ className: "player-settings-item",
593
+ style: {
594
+ display: 'flex',
595
+ alignItems: 'center',
596
+ justifyContent: 'space-between',
597
+ height: '32px',
598
+ padding: '0 8px',
599
+ borderRadius: '4px'
600
+ },
601
+ children: [
602
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
603
+ style: {
604
+ display: 'flex',
605
+ alignItems: 'center',
606
+ gap: '4px'
607
+ },
608
+ children: [
609
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(global_perspective_js_default(), {
610
+ style: {
611
+ width: '16px',
612
+ height: '16px'
613
+ }
614
+ }),
615
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
616
+ style: {
617
+ fontSize: '14px',
618
+ marginRight: '16px'
619
+ },
620
+ children: "Focus on cursor"
621
+ })
622
+ ]
623
+ }),
624
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Switch, {
625
+ size: "small",
626
+ checked: autoZoom,
627
+ onChange: (checked)=>setAutoZoom(checked)
628
+ })
629
+ ]
630
+ }),
631
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
632
+ className: "player-settings-item",
633
+ style: {
634
+ display: 'flex',
635
+ alignItems: 'center',
636
+ justifyContent: 'space-between',
637
+ height: '32px',
638
+ padding: '0 8px',
639
+ borderRadius: '4px'
640
+ },
641
+ children: [
642
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
643
+ style: {
644
+ display: 'flex',
645
+ alignItems: 'center',
646
+ gap: '4px'
647
+ },
648
+ children: [
649
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.FontSizeOutlined, {
650
+ style: {
651
+ width: '16px',
652
+ height: '16px'
653
+ }
654
+ }),
655
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
656
+ style: {
657
+ fontSize: '14px',
658
+ marginRight: '16px'
659
+ },
660
+ children: "Subtitle"
661
+ })
662
+ ]
663
+ }),
664
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Switch, {
665
+ size: "small",
666
+ checked: subtitleEnabled,
667
+ onChange: (checked)=>setSubtitleEnabled(checked)
668
+ })
669
+ ]
670
+ }),
671
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
672
+ className: "player-settings-divider"
673
+ }),
674
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
675
+ style: {
676
+ display: 'flex',
677
+ alignItems: 'center',
678
+ gap: '4px',
679
+ height: '32px',
680
+ padding: '0 8px'
681
+ },
682
+ children: [
683
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icons_namespaceObject.ThunderboltOutlined, {
684
+ style: {
685
+ width: '16px',
686
+ height: '16px'
687
+ }
688
+ }),
689
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
690
+ style: {
691
+ fontSize: '14px'
692
+ },
693
+ children: "Playback speed"
694
+ })
695
+ ]
696
+ }),
697
+ [
698
+ 0.5,
699
+ 1,
700
+ 1.5,
701
+ 2
702
+ ].map((speed)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
703
+ onClick: ()=>setPlaybackSpeed(speed),
704
+ style: {
705
+ height: '32px',
706
+ lineHeight: '32px',
707
+ padding: '0 8px 0 28px',
708
+ fontSize: '14px',
709
+ cursor: 'pointer',
710
+ borderRadius: '4px'
711
+ },
712
+ className: `player-speed-option${playbackSpeed === speed ? ' active' : ''}`,
713
+ children: [
714
+ speed,
715
+ "x"
716
+ ]
717
+ }, speed))
718
+ ]
719
+ }),
720
+ menu: {
721
+ items: []
722
+ },
723
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
724
+ className: "status-icon",
725
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(player_setting_js_default(), {
726
+ style: {
727
+ width: '16px',
728
+ height: '16px'
729
+ }
730
+ })
731
+ })
732
+ })
733
+ ]
734
+ })
735
+ ]
736
+ })
737
+ ]
738
+ })
739
+ });
740
+ }
741
+ exports.Player = __webpack_exports__.Player;
742
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
743
+ "Player"
744
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
745
+ Object.defineProperty(exports, '__esModule', {
746
+ value: true
747
+ });