@xiping/react-components 1.0.49 → 1.0.51

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 (243) hide show
  1. package/dist/cjs/components/gradient-text/index.js +1 -1
  2. package/dist/cjs/components/message/Message.js +1 -1
  3. package/dist/cjs/components/subtitle-player/CurrentMode.d.ts +20 -0
  4. package/dist/cjs/components/subtitle-player/CurrentMode.js +2 -0
  5. package/dist/cjs/components/subtitle-player/LyricsMode.d.ts +26 -0
  6. package/dist/cjs/components/subtitle-player/LyricsMode.js +2 -0
  7. package/dist/cjs/components/subtitle-player/SubtitlePlayer.d.ts +3 -2
  8. package/dist/cjs/components/subtitle-player/SubtitlePlayer.js +1 -3
  9. package/dist/cjs/components/subtitle-player/utils.d.ts +28 -0
  10. package/dist/cjs/components/subtitle-player/utils.js +1 -0
  11. package/dist/cjs/components/text-animate/TextAnimate.js +1 -1
  12. package/dist/cjs/components/text-type/TextType.js +1 -1
  13. package/dist/cjs/components/txt-reader/TxtReader.js +1 -1
  14. package/dist/cjs/components/txt-reader/index.module.css.js +1 -1
  15. package/dist/cjs/components/variable-proximity/index.js +1 -1
  16. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer.js +1 -1
  17. package/dist/cjs/components/video-subtitle-player/useVideoSubtitleStore.js +1 -1
  18. package/dist/cjs/react-components.css +1 -1
  19. package/dist/es/components/gradient-text/index.js +8 -8
  20. package/dist/es/components/message/Message.js +72 -72
  21. package/dist/es/components/subtitle-player/CurrentMode.d.ts +20 -0
  22. package/dist/es/components/subtitle-player/CurrentMode.js +40 -0
  23. package/dist/es/components/subtitle-player/LyricsMode.d.ts +26 -0
  24. package/dist/es/components/subtitle-player/LyricsMode.js +67 -0
  25. package/dist/es/components/subtitle-player/SubtitlePlayer.d.ts +3 -2
  26. package/dist/es/components/subtitle-player/SubtitlePlayer.js +121 -238
  27. package/dist/es/components/subtitle-player/utils.d.ts +28 -0
  28. package/dist/es/components/subtitle-player/utils.js +72 -0
  29. package/dist/es/components/text-animate/TextAnimate.js +0 -1
  30. package/dist/es/components/text-type/TextType.js +31 -31
  31. package/dist/es/components/txt-reader/TxtReader.js +9 -9
  32. package/dist/es/components/txt-reader/index.module.css.js +7 -8
  33. package/dist/es/components/variable-proximity/index.js +8 -9
  34. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer.js +64 -64
  35. package/dist/es/components/video-subtitle-player/useVideoSubtitleStore.js +1 -1
  36. package/dist/es/react-components.css +1 -1
  37. package/package.json +14 -14
  38. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -1
  39. package/dist/cjs/_virtual/delegate.js +0 -1
  40. package/dist/cjs/_virtual/download.js +0 -1
  41. package/dist/cjs/_virtual/download2.js +0 -1
  42. package/dist/cjs/_virtual/index.js +0 -1
  43. package/dist/cjs/_virtual/index2.js +0 -1
  44. package/dist/cjs/node_modules/.pnpm/delegate@3.2.0/node_modules/delegate/src/closest.js +0 -1
  45. package/dist/cjs/node_modules/.pnpm/delegate@3.2.0/node_modules/delegate/src/delegate.js +0 -1
  46. package/dist/cjs/node_modules/.pnpm/downloadjs@1.4.7/node_modules/downloadjs/download.js +0 -3
  47. package/dist/cjs/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js +0 -1
  48. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/_virtual/_rollupPluginBabelHelpers.js +0 -2
  49. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/constant.js +0 -1
  50. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/defaultConfig.js +0 -1
  51. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/error.js +0 -1
  52. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/events.js +0 -1
  53. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/index.umd.js +0 -1
  54. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/instManager.js +0 -1
  55. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/en.js +0 -1
  56. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/i18n.js +0 -1
  57. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/zh-cn.js +0 -1
  58. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/mediaProxy.js +0 -1
  59. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/player.js +0 -1
  60. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/basePlugin.js +0 -1
  61. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/hooksDescriptor.js +0 -1
  62. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/plugin.js +0 -1
  63. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/pluginsManager.js +0 -1
  64. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/preset.js +0 -1
  65. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/resizeObserver.js +0 -1
  66. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/back.js +0 -5
  67. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/download.js +0 -15
  68. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/exitCssFull.js +0 -4
  69. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/exitFull.js +0 -4
  70. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/loading.js +0 -4
  71. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pause.js +0 -4
  72. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pipIcon.js +0 -5
  73. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pipIconExit.js +0 -8
  74. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/play.js +0 -4
  75. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/playNext.js +0 -4
  76. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/replay.js +0 -4
  77. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/requestCssFull.js +0 -4
  78. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/requestFull.js +0 -4
  79. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/rotate.js +0 -12
  80. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/seekicon.js +0 -7
  81. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeLarge.js +0 -5
  82. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeMuted.js +0 -5
  83. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeSmall.js +0 -5
  84. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/iconPlugin.js +0 -1
  85. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/iconTools.js +0 -3
  86. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/optionList.js +0 -1
  87. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/optionsIcon.js +0 -4
  88. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/thumbnail.js +0 -1
  89. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/controls/index.js +0 -9
  90. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/cssFullScreen/index.js +0 -5
  91. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/definition/index.js +0 -1
  92. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/download/index.js +0 -5
  93. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/dynamicBg/index.js +0 -2
  94. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/enter/index.js +0 -1
  95. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/error/index.js +0 -6
  96. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fpsDetect/index.js +0 -1
  97. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fullscreen/backicon.js +0 -2
  98. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fullscreen/index.js +0 -5
  99. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/gapJump/index.js +0 -1
  100. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/keyboard/index.js +0 -1
  101. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/loading/index.js +0 -4
  102. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/logger/index.js +0 -1
  103. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/miniScreen/index.js +0 -13
  104. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/miniScreen/miniScreenIcon.js +0 -4
  105. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/mobile/index.js +0 -19
  106. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/mobile/touch.js +0 -1
  107. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/pc/index.js +0 -1
  108. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/pip/index.js +0 -8
  109. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/play/index.js +0 -5
  110. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/playNext/index.js +0 -7
  111. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/playbackRate/index.js +0 -1
  112. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/poster/index.js +0 -2
  113. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/index.js +0 -7
  114. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/innerList.js +0 -1
  115. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/miniProgress.js +0 -4
  116. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progressPreview/dotsApi.js +0 -1
  117. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progressPreview/index.js +0 -11
  118. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/prompt/index.js +0 -3
  119. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/replay/index.js +0 -3
  120. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/rotate/index.js +0 -6
  121. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/screenShot/index.js +0 -6
  122. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/start/index.js +0 -4
  123. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/stats/index.js +0 -1
  124. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/testspeed/index.js +0 -1
  125. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/time/index.js +0 -6
  126. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/time/timesegments.js +0 -1
  127. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/volume/index.js +0 -11
  128. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/waitingTimeoutJump/index.js +0 -1
  129. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/presets/default.js +0 -1
  130. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/state.js +0 -1
  131. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/stateClassMap.js +0 -1
  132. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/database.js +0 -1
  133. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/debug.js +0 -1
  134. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/draggabilly.js +0 -1
  135. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/sniffer.js +0 -1
  136. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/util.js +0 -1
  137. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/xgplayerTimeRange.js +0 -1
  138. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/version.js +0 -1
  139. package/dist/cjs/node_modules/.pnpm/zustand@5.0.9_@types_react@19.2.7_react@19.2.3_use-sync-external-store@1.6.0_react@19.2.3_/node_modules/zustand/esm/react.js +0 -1
  140. package/dist/cjs/node_modules/.pnpm/zustand@5.0.9_@types_react@19.2.7_react@19.2.3_use-sync-external-store@1.6.0_react@19.2.3_/node_modules/zustand/esm/vanilla.js +0 -1
  141. package/dist/es/_virtual/_commonjsHelpers.js +0 -6
  142. package/dist/es/_virtual/delegate.js +0 -7
  143. package/dist/es/_virtual/download.js +0 -7
  144. package/dist/es/_virtual/download2.js +0 -4
  145. package/dist/es/_virtual/index.js +0 -8
  146. package/dist/es/_virtual/index2.js +0 -4
  147. package/dist/es/node_modules/.pnpm/delegate@3.2.0/node_modules/delegate/src/closest.js +0 -21
  148. package/dist/es/node_modules/.pnpm/delegate@3.2.0/node_modules/delegate/src/delegate.js +0 -29
  149. package/dist/es/node_modules/.pnpm/downloadjs@1.4.7/node_modules/downloadjs/download.js +0 -77
  150. package/dist/es/node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js +0 -111
  151. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/_virtual/_rollupPluginBabelHelpers.js +0 -197
  152. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/constant.js +0 -7
  153. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/defaultConfig.js +0 -87
  154. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/error.js +0 -64
  155. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/events.js +0 -67
  156. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/index.umd.js +0 -45
  157. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/instManager.js +0 -101
  158. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/en.js +0 -79
  159. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/i18n.js +0 -75
  160. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/lang/zh-cn.js +0 -79
  161. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/mediaProxy.js +0 -466
  162. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/player.js +0 -1240
  163. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/basePlugin.js +0 -207
  164. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/hooksDescriptor.js +0 -130
  165. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/plugin.js +0 -366
  166. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/pluginsManager.js +0 -204
  167. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/preset.js +0 -14
  168. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugin/resizeObserver.js +0 -81
  169. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/back.js +0 -10
  170. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/download.js +0 -20
  171. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/exitCssFull.js +0 -9
  172. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/exitFull.js +0 -9
  173. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/loading.js +0 -9
  174. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pause.js +0 -9
  175. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pipIcon.js +0 -10
  176. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/pipIconExit.js +0 -13
  177. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/play.js +0 -9
  178. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/playNext.js +0 -9
  179. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/replay.js +0 -9
  180. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/requestCssFull.js +0 -9
  181. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/requestFull.js +0 -9
  182. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/rotate.js +0 -17
  183. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/seekicon.js +0 -12
  184. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeLarge.js +0 -10
  185. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeMuted.js +0 -10
  186. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/assets/volumeSmall.js +0 -10
  187. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/iconPlugin.js +0 -35
  188. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/iconTools.js +0 -12
  189. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/optionList.js +0 -79
  190. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/optionsIcon.js +0 -193
  191. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/common/thumbnail.js +0 -141
  192. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/controls/index.js +0 -171
  193. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/cssFullScreen/index.js +0 -105
  194. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/definition/index.js +0 -110
  195. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/download/index.js +0 -83
  196. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/dynamicBg/index.js +0 -232
  197. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/enter/index.js +0 -42
  198. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/error/index.js +0 -68
  199. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fpsDetect/index.js +0 -116
  200. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fullscreen/backicon.js +0 -68
  201. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/fullscreen/index.js +0 -150
  202. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/gapJump/index.js +0 -96
  203. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/keyboard/index.js +0 -299
  204. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/loading/index.js +0 -46
  205. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/logger/index.js +0 -171
  206. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/miniScreen/index.js +0 -169
  207. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/miniScreen/miniScreenIcon.js +0 -55
  208. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/mobile/index.js +0 -448
  209. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/mobile/touch.js +0 -138
  210. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/pc/index.js +0 -122
  211. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/pip/index.js +0 -216
  212. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/play/index.js +0 -102
  213. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/playNext/index.js +0 -78
  214. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/playbackRate/index.js +0 -100
  215. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/poster/index.js +0 -119
  216. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/index.js +0 -431
  217. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/innerList.js +0 -215
  218. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progress/miniProgress.js +0 -93
  219. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progressPreview/dotsApi.js +0 -175
  220. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/progressPreview/index.js +0 -292
  221. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/prompt/index.js +0 -86
  222. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/replay/index.js +0 -92
  223. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/rotate/index.js +0 -106
  224. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/screenShot/index.js +0 -134
  225. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/start/index.js +0 -222
  226. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/stats/index.js +0 -152
  227. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/testspeed/index.js +0 -134
  228. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/time/index.js +0 -164
  229. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/time/timesegments.js +0 -146
  230. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/volume/index.js +0 -206
  231. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/plugins/waitingTimeoutJump/index.js +0 -53
  232. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/presets/default.js +0 -61
  233. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/state.js +0 -13
  234. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/stateClassMap.js +0 -34
  235. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/database.js +0 -83
  236. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/debug.js +0 -34
  237. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/draggabilly.js +0 -271
  238. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/sniffer.js +0 -111
  239. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/util.js +0 -517
  240. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/utils/xgplayerTimeRange.js +0 -25
  241. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/version.js +0 -4
  242. package/dist/es/node_modules/.pnpm/zustand@5.0.9_@types_react@19.2.7_react@19.2.3_use-sync-external-store@1.6.0_react@19.2.3_/node_modules/zustand/esm/react.js +0 -19
  243. package/dist/es/node_modules/.pnpm/zustand@5.0.9_@types_react@19.2.7_react@19.2.3_use-sync-external-store@1.6.0_react@19.2.3_/node_modules/zustand/esm/vanilla.js +0 -14
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");;/* empty css */function a({children:i,className:n="",colors:r=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:s=8,showBorder:d=!1}){const t={backgroundImage:`linear-gradient(to right, ${r.join(", ")})`,animationDuration:`${s}s`};return e.jsxs("div",{className:`animated-gradient-text ${n}`,children:[d&&e.jsx("div",{className:"gradient-overlay",style:t}),e.jsx("div",{className:"text-content",style:t,children:i})]})}exports.GradientText=a;exports.default=a;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");;/* empty css */function a({children:i,className:n="",colors:r=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:s=8,showBorder:d=!1}){const t={backgroundImage:`linear-gradient(to right, ${r.join(", ")})`,animationDuration:`${s}s`};return e.jsxs("div",{className:`xiping-gradient-text ${n}`,children:[d&&e.jsx("div",{className:"xiping-gradient-text__overlay",style:t}),e.jsx("div",{className:"xiping-gradient-text__content",style:t,children:i})]})}exports.GradientText=a;exports.default=a;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),C=require("react"),a=require("react-markdown");;/* empty css */const b=({id:L,content:l,sender:i,timestamp:o,isThinking:d=!1,isLoading:y=!1,className:M="",style:S={},showTimestamp:c=!0,avatarUser:h,avatarAssistant:m,thinkingText:V="思考中...",customThinkingComponent:g,customUserMessageComponent:u,customAssistantMessageComponent:x,parseContent:q=!1,parsedContent:j,thinkContent:r,knowledgeSources:n})=>{const[t,p]=C.useState(!0),[B,v]=C.useState("idle");console.log(L,"id");const k=s=>s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),H=async()=>{try{await navigator.clipboard.writeText(l),v("copied"),setTimeout(()=>v("idle"),2e3)}catch(s){console.error("复制失败:",s)}},N=()=>g||e.jsxs("div",{className:"message-thinking",children:[e.jsxs("div",{className:"message-thinking-dots",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx("span",{className:"message-thinking-text",children:V})]}),W=()=>e.jsx("div",{className:"message-loading",children:e.jsx("div",{className:"message-loading-spinner"})}),w=()=>!n||n.length===0?null:e.jsxs("div",{className:"message-knowledge-sources",children:[e.jsx("div",{className:"message-knowledge-sources-header",children:"知识来源:"}),e.jsx("ul",{className:"message-knowledge-sources-list",children:n.map((s,$)=>e.jsxs("li",{className:"message-knowledge-source-item",children:[s.url?e.jsx("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",children:s.title}):e.jsx("span",{children:s.title}),s.description&&e.jsx("div",{className:"message-knowledge-source-description",children:s.description})]},$))})]}),f=()=>i==="user"?null:e.jsxs("button",{className:"message-copy-button",onClick:H,"aria-label":"Copy message",title:"Copy message",children:[e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M13.3333 6H7.33333C6.59695 6 6 6.59695 6 7.33333V13.3333C6 14.0697 6.59695 14.6667 7.33333 14.6667H13.3333C14.0697 14.6667 14.6667 14.0697 14.6667 13.3333V7.33333C14.6667 6.59695 14.0697 6 13.3333 6Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M3.33333 10H2.66667C2.31305 10 1.97391 9.85953 1.72386 9.60948C1.47381 9.35943 1.33334 9.02029 1.33334 8.66667V2.66667C1.33334 2.31305 1.47381 1.97391 1.72386 1.72386C1.97391 1.47381 2.31305 1.33334 2.66667 1.33334H8.66667C9.02029 1.33334 9.35943 1.47381 9.60948 1.72386C9.85953 1.97391 10 2.31305 10 2.66667V3.33334",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),B==="copied"&&e.jsx("span",{className:"message-copy-tooltip",children:"Copied"})]});return i==="user"&&u?u:i==="assistant"&&x?x:e.jsxs("div",{className:`message ${i==="user"?"user":"assistant"} ${M}`,style:S,children:[i==="user"&&h||i==="assistant"&&m?e.jsx("div",{className:"message-avatar",children:i==="user"?h:m}):null,e.jsx("div",{className:"message-content",children:y?W():q&&i==="assistant"?e.jsxs(e.Fragment,{children:[r&&e.jsxs("div",{className:"message-think",children:[e.jsxs("div",{className:"message-think-header",children:["思考过程:",e.jsx("button",{className:"message-think-toggle",onClick:()=>p(!t),"aria-label":t?"隐藏思考过程":"显示思考过程",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:t?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s ease"},children:e.jsx("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),e.jsx("div",{className:`message-think-content ${t?"visible":"hidden"}`,children:e.jsx(a,{children:r})})]}),d&&N(),j&&e.jsxs("div",{className:"message-text-container",children:[e.jsx("div",{className:"message-text",children:e.jsx(a,{children:j})}),f()]}),w(),c&&e.jsx("div",{className:"message-timestamp",children:k(o)})]}):e.jsxs(e.Fragment,{children:[r&&e.jsxs("div",{className:"message-think",children:[e.jsxs("div",{className:"message-think-header",children:["思考过程:",e.jsx("button",{className:"message-think-toggle",onClick:()=>p(!t),"aria-label":t?"隐藏思考过程":"显示思考过程",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:t?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s ease"},children:e.jsx("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),e.jsx("div",{className:`message-think-content ${t?"visible":"hidden"}`,children:e.jsx(a,{children:r})})]}),e.jsxs("div",{className:"message-text-container",children:[e.jsx("div",{className:"message-text",children:e.jsx(a,{children:l})}),f()]}),d&&N(),w(),c&&e.jsx("div",{className:"message-timestamp",children:k(o)})]})})]})};exports.Message=b;exports.default=b;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),f=require("react"),r=require("react-markdown");;/* empty css */const C=({id:b,content:l,sender:i,timestamp:o,isThinking:d=!1,isLoading:L=!1,className:y="",style:M={},showTimestamp:c=!0,avatarUser:g,avatarAssistant:x,thinkingText:S="思考中...",customThinkingComponent:h,customUserMessageComponent:m,customAssistantMessageComponent:p,parseContent:V=!1,parsedContent:_,thinkContent:t,knowledgeSources:a})=>{const[n,u]=f.useState(!0),[q,j]=f.useState("idle");console.log(b,"id");const v=s=>s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),B=async()=>{try{await navigator.clipboard.writeText(l),j("copied"),setTimeout(()=>j("idle"),2e3)}catch(s){console.error("复制失败:",s)}},k=()=>h||e.jsxs("div",{className:"xiping-message__thinking",children:[e.jsxs("div",{className:"xiping-message__thinking-dots",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx("span",{className:"xiping-message__thinking-text",children:S})]}),H=()=>e.jsx("div",{className:"xiping-message__loading",children:e.jsx("div",{className:"xiping-message__loading-spinner"})}),N=()=>!a||a.length===0?null:e.jsxs("div",{className:"xiping-message__knowledge-sources",children:[e.jsx("div",{className:"xiping-message__knowledge-sources-header",children:"知识来源:"}),e.jsx("ul",{className:"xiping-message__knowledge-sources-list",children:a.map((s,W)=>e.jsxs("li",{className:"xiping-message__knowledge-source-item",children:[s.url?e.jsx("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",children:s.title}):e.jsx("span",{children:s.title}),s.description&&e.jsx("div",{className:"xiping-message__knowledge-source-description",children:s.description})]},W))})]}),w=()=>i==="user"?null:e.jsxs("button",{className:"xiping-message__copy-button",onClick:B,"aria-label":"Copy message",title:"Copy message",children:[e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M13.3333 6H7.33333C6.59695 6 6 6.59695 6 7.33333V13.3333C6 14.0697 6.59695 14.6667 7.33333 14.6667H13.3333C14.0697 14.6667 14.6667 14.0697 14.6667 13.3333V7.33333C14.6667 6.59695 14.0697 6 13.3333 6Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M3.33333 10H2.66667C2.31305 10 1.97391 9.85953 1.72386 9.60948C1.47381 9.35943 1.33334 9.02029 1.33334 8.66667V2.66667C1.33334 2.31305 1.47381 1.97391 1.72386 1.72386C1.97391 1.47381 2.31305 1.33334 2.66667 1.33334H8.66667C9.02029 1.33334 9.35943 1.47381 9.60948 1.72386C9.85953 1.97391 10 2.31305 10 2.66667V3.33334",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),q==="copied"&&e.jsx("span",{className:"xiping-message__copy-tooltip",children:"Copied"})]});return i==="user"&&m?m:i==="assistant"&&p?p:e.jsxs("div",{className:`xiping-message ${i==="user"?"user":"assistant"} ${y}`,style:M,children:[i==="user"&&g||i==="assistant"&&x?e.jsx("div",{className:"xiping-message__avatar",children:i==="user"?g:x}):null,e.jsx("div",{className:"xiping-message__content",children:L?H():V&&i==="assistant"?e.jsxs(e.Fragment,{children:[t&&e.jsxs("div",{className:"xiping-message__think",children:[e.jsxs("div",{className:"xiping-message__think-header",children:["思考过程:",e.jsx("button",{className:"xiping-message__think-toggle",onClick:()=>u(!n),"aria-label":n?"隐藏思考过程":"显示思考过程",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s ease"},children:e.jsx("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),e.jsx("div",{className:`xiping-message__think-content ${n?"visible":"hidden"}`,children:e.jsx(r,{children:t})})]}),d&&k(),_&&e.jsxs("div",{className:"xiping-message__text-container",children:[e.jsx("div",{className:"xiping-message__text",children:e.jsx(r,{children:_})}),w()]}),N(),c&&e.jsx("div",{className:"xiping-message__timestamp",children:v(o)})]}):e.jsxs(e.Fragment,{children:[t&&e.jsxs("div",{className:"xiping-message__think",children:[e.jsxs("div",{className:"xiping-message__think-header",children:["思考过程:",e.jsx("button",{className:"xiping-message__think-toggle",onClick:()=>u(!n),"aria-label":n?"隐藏思考过程":"显示思考过程",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s ease"},children:e.jsx("path",{d:"M2 4L6 8L10 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),e.jsx("div",{className:`xiping-message__think-content ${n?"visible":"hidden"}`,children:e.jsx(r,{children:t})})]}),e.jsxs("div",{className:"xiping-message__text-container",children:[e.jsx("div",{className:"xiping-message__text",children:e.jsx(r,{children:l})}),w()]}),d&&k(),N(),c&&e.jsx("div",{className:"xiping-message__timestamp",children:v(o)})]})})]})};exports.Message=C;exports.default=C;
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+ import { SubtitleEntry } from '@xiping/subtitle';
3
+ import { WordHoverHandlerFactory } from './utils.tsx';
4
+ export interface CurrentModeProps {
5
+ /** 当前字幕条目 */
6
+ currentEntries: Array<{
7
+ entry: SubtitleEntry | null;
8
+ label?: string;
9
+ }>;
10
+ /** 单词悬停处理器工厂函数 */
11
+ wordHoverFactory: (entry: SubtitleEntry, label?: string) => WordHoverHandlerFactory;
12
+ /** 是否启用单词悬停功能 */
13
+ enableWordHover: boolean;
14
+ /** 悬停覆盖层节点 */
15
+ overlayNode: React.ReactNode;
16
+ }
17
+ /**
18
+ * 当前模式组件:只显示当前时间对应的字幕
19
+ */
20
+ export declare const CurrentMode: React.FC<CurrentModeProps>;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./utils.js"),x=({currentEntries:r,wordHoverFactory:d,enableWordHover:l,overlayNode:o})=>r.some(({entry:e})=>e!==null)?s.jsxs(s.Fragment,{children:[r.map(({entry:e,label:i},c)=>e?s.jsxs("div",{className:"xiping-subtitle-player__item","data-label":i||void 0,children:[i&&s.jsx("span",{className:"xiping-subtitle-player__label",children:i}),s.jsx("div",{className:"xiping-subtitle-player__text",children:(()=>{let n=0;return e.text.split(`
2
+ `).map((u,t)=>{if(!e.words||e.words.length===0)return s.jsx("div",{className:"xiping-subtitle-player__line",children:u},t);const a=p.renderTextWithWords(u,e.words,n,t,l?d(e,i):void 0);return n=a.nextWordIndex,s.jsx("div",{className:"xiping-subtitle-player__line",children:a.nodes},t)})})()})]},c):null),l&&s.jsx("div",{className:"xiping-subtitle-player__hover-layer",children:o})]}):null;exports.CurrentMode=x;
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+ import { SubtitleEntry } from '@xiping/subtitle';
3
+ import { WordHoverHandlerFactory } from './utils.tsx';
4
+ export interface LyricsModeProps {
5
+ /** 按时间分组的字幕条目 */
6
+ groupedEntriesByTime: Array<Array<{
7
+ entry: SubtitleEntry;
8
+ label?: string;
9
+ startTime: number;
10
+ endTime: number;
11
+ }>>;
12
+ /** 当前播放时间(秒数) */
13
+ currentTime: number;
14
+ /** 单词悬停处理器工厂函数 */
15
+ wordHoverFactory: (entry: SubtitleEntry, label?: string) => WordHoverHandlerFactory;
16
+ /** 是否启用单词悬停功能 */
17
+ enableWordHover: boolean;
18
+ /** 悬停覆盖层节点 */
19
+ overlayNode: React.ReactNode;
20
+ /** 容器引用,用于滚动 */
21
+ containerRef: React.RefObject<HTMLDivElement | null>;
22
+ }
23
+ /**
24
+ * 歌词模式组件:显示全部字幕并高亮当前字幕
25
+ */
26
+ export declare const LyricsMode: React.FC<LyricsModeProps>;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),v=require("react"),q=require("clsx"),b=require("./utils.js"),w=({groupedEntriesByTime:j,currentTime:l,wordHoverFactory:y,enableWordHover:u,overlayNode:f,containerRef:n})=>{const c=v.useRef(null);return v.useEffect(()=>{if(c.current&&n.current){const i=n.current,r=c.current,o=r.offsetTop,a=i.clientHeight,e=r.clientHeight,s=o-a/2+e/2;i.scrollTo({top:s,behavior:"smooth"})}},[l,n]),t.jsxs(t.Fragment,{children:[j.map((i,r)=>{const o=i[0]?.startTime??0,a=b.secondsToTimeString(o);return t.jsx("div",{className:"xiping-subtitle-player__group",children:i.map(({entry:e,label:s,startTime:N,endTime:d},m)=>{const x=l>=N&&l<=d,S=l>d,T=m===0;let g=0;return t.jsxs("div",{ref:x?c:null,className:q("xiping-subtitle-player__item",{"xiping-subtitle-player__item--active":x,"xiping-subtitle-player__item--past":S}),"data-label":s||void 0,children:[T&&t.jsx("span",{className:"xiping-subtitle-player__time",children:a}),s&&t.jsx("span",{className:"xiping-subtitle-player__label",children:s}),t.jsx("div",{className:"xiping-subtitle-player__text",children:e.text.split(`
2
+ `).map((_,p)=>{if(!e.words||e.words.length===0)return t.jsx("div",{className:"xiping-subtitle-player__line",children:_},p);const h=b.renderTextWithWords(_,e.words,g,p,u?y(e,s):void 0);return g=h.nextWordIndex,t.jsx("div",{className:"xiping-subtitle-player__line",children:h.nodes},p)})})]},`${r}-${m}`)})},r)}),u&&t.jsx("div",{className:"xiping-subtitle-player__hover-layer",children:f})]})};exports.LyricsMode=w;
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { SubtitleEntry, SubtitleLanguage } from '@xiping/subtitle';
3
- export type SubtitleType = 'srt' | 'vtt';
3
+ export type SubtitleType = "srt" | "vtt";
4
4
  export interface SubtitleData {
5
5
  /** 字幕类型 */
6
6
  type: SubtitleType;
@@ -11,7 +11,7 @@ export interface SubtitleData {
11
11
  /** 字幕语言类型,用于分词,默认为中文 */
12
12
  language?: SubtitleLanguage;
13
13
  }
14
- export type SubtitleDisplayMode = 'current' | 'lyrics';
14
+ export type SubtitleDisplayMode = "current" | "lyrics";
15
15
  export interface SubtitlePlayerProps {
16
16
  /** 字幕数据,可以是单个字幕或多个字幕(用于对照) */
17
17
  subtitles: SubtitleData | SubtitleData[];
@@ -41,6 +41,7 @@ export interface HoverTarget {
41
41
  entry: SubtitleEntry;
42
42
  label?: string;
43
43
  rect: DOMRect;
44
+ element: HTMLElement;
44
45
  }
45
46
  /**
46
47
  * 字幕播放组件
@@ -1,3 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),f=require("react"),x=require("../../packages/subtitle/lib/src/parser.js"),B=require("../../packages/subtitle/lib/src/json-converter.js");;/* empty css */function M(a){const u=a.replace(",",".").split(":");if(u.length!==3)return 0;const h=parseInt(u[0],10)||0,b=parseInt(u[1],10)||0,c=parseFloat(u[2])||0;return h*3600+b*60+c}function _(a){const i=Math.floor(a/3600),u=Math.floor(a%3600/60),h=Math.floor(a%60);return i>0?`${i.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}`:`${u.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}`}function D(a,i){for(const u of a){const h=M(u.startTime),b=M(u.endTime);if(i>=h&&i<=b)return u}return null}function F(a,i,u,h,b){if(!i||i.length===0)return{nodes:a,nextWordIndex:u};const c=[];let d=0;for(let p=u;p<i.length;p++){const m=i[p],g=a.substring(d).indexOf(m);if(g===-1)return{nodes:c.length>0?c:a,nextWordIndex:p};const T=d+g;if(T>d){const v=a.substring(d,T);v&&c.push(l.jsx("span",{className:"subtitle-word-before",children:v},`before-${h}-${p}`))}const y=b?.(m,p,h);if(c.push(l.jsx("span",{className:"subtitle-word","data-word":m,onMouseEnter:y?.onMouseEnter,onMouseLeave:y?.onMouseLeave,children:m},`word-${h}-${p}`)),d=T+m.length,d>=a.length)return{nodes:c,nextWordIndex:p+1}}if(d<a.length){const p=a.substring(d);p&&c.push(l.jsx("span",{className:"subtitle-word-after",children:p},`after-${h}`))}return{nodes:c.length>0?c:a,nextWordIndex:i.length}}const J=({subtitles:a,currentTime:i,mode:u="current",className:h="",style:b,onWordHoverChange:c,renderWordOverlay:d})=>{const p=f.useMemo(()=>Array.isArray(a)?a:[a],[a]),m=f.useRef(null),N=f.useRef(null),[g,T]=f.useState(null),[y,v]=f.useState([]);f.useEffect(()=>{let n=!0;async function s(){try{const t=await Promise.all(p.map(async e=>{try{const r=e.language||"zh",o=e.type==="srt"?await B.srtToJson(e.content,r):await B.vttToJson(e.content,r);return{entries:JSON.parse(o),label:e.label}}catch(r){return console.error("字幕解析失败:",r),{entries:e.type==="srt"?x.parseSRT(e.content):x.parseVTT(e.content),label:e.label}}}));n&&v(t)}catch(t){if(console.error("加载字幕失败:",t),n){const e=p.map(r=>{try{return{entries:r.type==="srt"?x.parseSRT(r.content):x.parseVTT(r.content),label:r.label}}catch(o){return console.error("字幕解析失败:",o),{entries:[],label:r.label}}});v(e)}}}return s(),()=>{n=!1}},[p]);const w=f.useMemo(()=>y.length>0?y:p.map(n=>{try{return{entries:n.type==="srt"?x.parseSRT(n.content):x.parseVTT(n.content),label:n.label}}catch(s){return console.error("字幕解析失败:",s),{entries:[],label:n.label}}}),[y,p]),R=f.useMemo(()=>w.map(({entries:n,label:s})=>({entry:D(n,i),label:s,entries:n})),[w,i]),W=f.useMemo(()=>{const n=[];w.forEach(({entries:e,label:r})=>{e.forEach(o=>{n.push({entry:o,label:r,startTime:M(o.startTime),endTime:M(o.endTime)})})}),n.sort((e,r)=>e.startTime-r.startTime);const s=[];let t=[];for(const e of n)if(t.length===0)t.push(e);else{const r=t[t.length-1];e.startTime<=r.endTime?t.push(e):(s.push(t),t=[e])}return t.length>0&&s.push(t),s},[w]);f.useEffect(()=>{if(u==="lyrics"&&N.current&&m.current){const n=m.current,s=N.current,t=s.offsetTop,e=n.clientHeight,r=s.clientHeight,o=t-e/2+r/2;n.scrollTo({top:o,behavior:"smooth"})}},[u,i]);const E=f.useCallback((n,s)=>{const t=n.currentTarget.getBoundingClientRect(),e=m.current?.getBoundingClientRect(),r=e!==void 0?new DOMRect(t.left-e.left,t.top-e.top,t.width,t.height):t,o={...s,rect:r};T(o),c?.(o)},[c]),P=f.useCallback(()=>{T(null),c?.(null)},[c]),q=f.useCallback((n,s)=>(t,e,r)=>({onMouseEnter:o=>E(o,{word:t,wordIndex:e,lineIndex:r,entry:n,label:s}),onMouseLeave:P}),[E,P]),I=d&&g?l.jsx("div",{className:"subtitle-player-hover-overlay",style:{left:g.rect.x+g.rect.width/2,top:g.rect.y+g.rect.height},children:d(g)}):null;return u==="current"?R.some(({entry:s})=>s!==null)?l.jsxs("div",{ref:m,className:`subtitle-player subtitle-player--current ${h}`,style:b,children:[R.map(({entry:s,label:t},e)=>s?l.jsxs("div",{className:"subtitle-player-item","data-label":t||void 0,children:[t&&l.jsx("span",{className:"subtitle-player-label",children:t}),l.jsx("div",{className:"subtitle-player-text",children:(()=>{let r=0;return s.text.split(`
2
- `).map((o,S)=>{if(!s.words||s.words.length===0)return l.jsx("div",{className:"subtitle-player-line",children:o},S);const j=F(o,s.words,r,S,d||c?q(s,t):void 0);return r=j.nextWordIndex,l.jsx("div",{className:"subtitle-player-line",children:j.nodes},S)})})()})]},e):null),(d||c)&&l.jsx("div",{className:"subtitle-player-hover-layer",children:I})]}):null:l.jsxs("div",{ref:m,className:`subtitle-player subtitle-player--lyrics ${h}`,style:b,children:[W.map((n,s)=>{const t=n[0]?.startTime??0,e=_(t);return l.jsx("div",{className:"subtitle-player-group",children:n.map(({entry:r,label:o,startTime:S,endTime:j},V)=>{const A=i>=S&&i<=j,C=i>j,O=V===0;let L=0;return l.jsxs("div",{ref:A?N:null,className:`subtitle-player-item ${A?"subtitle-player-item--active":""} ${C?"subtitle-player-item--past":""}`,"data-label":o||void 0,children:[O&&l.jsx("span",{className:"subtitle-player-time",children:e}),o&&l.jsx("span",{className:"subtitle-player-label",children:o}),l.jsx("div",{className:"subtitle-player-text",children:r.text.split(`
3
- `).map((k,$)=>{if(!r.words||r.words.length===0)return l.jsx("div",{className:"subtitle-player-line",children:k},$);const z=F(k,r.words,L,$,d||c?q(r,o):void 0);return L=z.nextWordIndex,l.jsx("div",{className:"subtitle-player-line",children:z.nodes},$)})})]},`${s}-${V}`)})},s)}),(d||c)&&l.jsx("div",{className:"subtitle-player-hover-layer",children:I})]})};exports.SubtitlePlayer=J;exports.default=J;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("react/jsx-runtime"),c=require("react"),l=require("../../packages/subtitle/lib/src/parser.js"),j=require("../../packages/subtitle/lib/src/json-converter.js"),_=require("clsx"),k=require("./CurrentMode.js"),A=require("./LyricsMode.js"),S=require("./utils.js");;/* empty css */const w=({subtitles:p,currentTime:d,mode:g="current",className:C="",style:P,onWordHoverChange:i,renderWordOverlay:T})=>{const u=c.useMemo(()=>Array.isArray(p)?p:[p],[p]),m=c.useRef(null),[a,M]=c.useState(null),[f,v]=c.useState([]);c.useEffect(()=>{let r=!0;async function o(){try{const t=await Promise.all(u.map(async e=>{try{const n=e.language||"zh",s=e.type==="srt"?await j.srtToJson(e.content,n):await j.vttToJson(e.content,n);return{entries:JSON.parse(s),label:e.label}}catch(n){return console.error("字幕解析失败:",n),{entries:e.type==="srt"?l.parseSRT(e.content):l.parseVTT(e.content),label:e.label}}}));r&&v(t)}catch(t){if(console.error("加载字幕失败:",t),r){const e=u.map(n=>{try{return{entries:n.type==="srt"?l.parseSRT(n.content):l.parseVTT(n.content),label:n.label}}catch(s){return console.error("字幕解析失败:",s),{entries:[],label:n.label}}});v(e)}}}return o(),()=>{r=!1}},[u]);const y=c.useMemo(()=>f.length>0?f:u.map(r=>{try{return{entries:r.type==="srt"?l.parseSRT(r.content):l.parseVTT(r.content),label:r.label}}catch(o){return console.error("字幕解析失败:",o),{entries:[],label:r.label}}}),[f,u]),L=c.useMemo(()=>y.map(({entries:r,label:o})=>({entry:S.getCurrentSubtitleEntry(r,d),label:o,entries:r})),[y,d]),N=c.useMemo(()=>{const r=[];y.forEach(({entries:e,label:n})=>{e.forEach(s=>{r.push({entry:s,label:n,startTime:S.timeStringToSeconds(s.startTime),endTime:S.timeStringToSeconds(s.endTime)})})}),r.sort((e,n)=>e.startTime-n.startTime);const o=[];let t=[];for(const e of r)if(t.length===0)t.push(e);else{const n=t[t.length-1];e.startTime<=n.endTime?t.push(e):(o.push(t),t=[e])}return t.length>0&&o.push(t),o},[y]),R=c.useCallback((r,o)=>{const t=r.currentTarget.getBoundingClientRect(),e=m.current?.getBoundingClientRect(),n=e!==void 0?new DOMRect(t.left-e.left,t.top-e.top,t.width,t.height):t,s={...o,rect:n,element:r.currentTarget};M(s),i?.(s)},[i]),b=c.useCallback(()=>{M(null),i?.(null)},[i]),x=c.useCallback((r,o)=>(t,e,n)=>({onMouseEnter:s=>R(s,{word:t,wordIndex:e,lineIndex:n,entry:r,label:o}),onMouseLeave:b}),[R,b]),q=T&&a?h.jsx("div",{className:"xiping-subtitle-player__hover-overlay",style:{left:a.rect.x+a.rect.width/2,top:a.rect.y+a.rect.height},children:T(a)}):null,E=!!(T||i);return h.jsxs("div",{ref:m,className:_("xiping-subtitle-player",g==="lyrics"?"xiping-subtitle-player--lyrics":"xiping-subtitle-player--current",C),style:P,children:[g==="current"&&h.jsx(k.CurrentMode,{currentEntries:L,wordHoverFactory:x,enableWordHover:E,overlayNode:q}),g==="lyrics"&&h.jsx(A.LyricsMode,{groupedEntriesByTime:N,currentTime:d,wordHoverFactory:x,enableWordHover:E,overlayNode:q,containerRef:m})]})};exports.SubtitlePlayer=w;exports.default=w;
@@ -0,0 +1,28 @@
1
+ import { default as React } from 'react';
2
+ import { SubtitleEntry } from '@xiping/subtitle';
3
+ /**
4
+ * 将时间字符串(HH:MM:SS,mmm 或 HH:MM:SS.mmm)转换为秒数
5
+ */
6
+ export declare function timeStringToSeconds(timeString: string): number;
7
+ /**
8
+ * 将秒数转换为时间字符串(MM:SS 或 HH:MM:SS)
9
+ */
10
+ export declare function secondsToTimeString(seconds: number): string;
11
+ /**
12
+ * 根据当前时间获取应该显示的字幕条目
13
+ */
14
+ export declare function getCurrentSubtitleEntry(entries: SubtitleEntry[], currentTime: number): SubtitleEntry | null;
15
+ /**
16
+ * 单词悬停处理器工厂函数类型
17
+ */
18
+ export type WordHoverHandlerFactory = (word: string, wordIndex: number, lineIndex: number) => {
19
+ onMouseEnter: React.MouseEventHandler<HTMLSpanElement>;
20
+ onMouseLeave: React.MouseEventHandler<HTMLSpanElement>;
21
+ } | undefined;
22
+ /**
23
+ * 将文本按照分词结果分割并渲染,并返回消耗到的分词下标
24
+ */
25
+ export declare function renderTextWithWords(text: string, words: string[] | undefined, startWordIndex: number, lineIndex: number, createHoverHandlers?: WordHoverHandlerFactory): {
26
+ nodes: React.ReactNode;
27
+ nextWordIndex: number;
28
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime");function l(t){const n=t.replace(",",".").split(":");if(n.length!==3)return 0;const r=parseInt(n[0],10)||0,a=parseInt(n[1],10)||0,s=parseFloat(n[2])||0;return r*3600+a*60+s}function p(t){const e=Math.floor(t/3600),n=Math.floor(t%3600/60),r=Math.floor(t%60);return e>0?`${e.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`:`${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}function S(t,e){for(const n of t){const r=l(n.startTime),a=l(n.endTime);if(e>=r&&e<=a)return n}return null}function m(t,e,n,r,a){if(!e||e.length===0)return{nodes:t,nextWordIndex:n};const s=[];let i=0;for(let o=n;o<e.length;o++){const u=e[o],g=t.substring(i).indexOf(u);if(g===-1)return{nodes:s.length>0?s:t,nextWordIndex:o};const c=i+g;if(c>i){const h=t.substring(i,c);h&&s.push(d.jsx("span",{className:"xiping-subtitle-word-before",children:h},`before-${r}-${o}`))}const f=a?.(u,o,r);if(s.push(d.jsx("span",{className:"xiping-subtitle-word","data-word":u,onMouseEnter:f?.onMouseEnter,onMouseLeave:f?.onMouseLeave,children:u},`word-${r}-${o}`)),i=c+u.length,i>=t.length)return{nodes:s,nextWordIndex:o+1}}if(i<t.length){const o=t.substring(i);o&&s.push(d.jsx("span",{className:"xiping-subtitle-word-after",children:o},`after-${r}`))}return{nodes:s.length>0?s:t,nextWordIndex:e.length}}exports.getCurrentSubtitleEntry=S;exports.renderTextWithWords=m;exports.secondsToTimeString=p;exports.timeStringToSeconds=l;
@@ -1,2 +1,2 @@
1
1
  "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),u=require("../../utils/utils.js"),s=require("motion/react"),c={text:.06,word:.05,character:.03,line:.06},i={hidden:{opacity:1},show:{opacity:1,transition:{staggerChildren:.05}},exit:{opacity:0,transition:{staggerChildren:.05,staggerDirection:-1}}},g={hidden:{opacity:0},show:{opacity:1},exit:{opacity:0}},o={fadeIn:{container:i,item:{hidden:{opacity:0,y:20},show:t=>({opacity:1,y:0,transition:{delay:t,duration:.3}}),exit:{opacity:0,y:20,transition:{duration:.3}}}},blurIn:{container:i,item:{hidden:{opacity:0,filter:"blur(10px)"},show:t=>({opacity:1,filter:"blur(0px)",transition:{delay:t*.1,duration:.3}}),exit:{opacity:0,filter:"blur(10px)",transition:{duration:.3}}}},blurInUp:{container:i,item:{hidden:{opacity:0,filter:"blur(10px)",y:20},show:t=>({opacity:1,filter:"blur(0px)",y:0,transition:{y:{duration:.3},opacity:{duration:.4},filter:{duration:.3}}}),exit:{opacity:0,filter:"blur(10px)",y:20,transition:{y:{duration:.3},opacity:{duration:.4},filter:{duration:.3}}}}},blurInDown:{container:i,item:{hidden:{opacity:0,filter:"blur(10px)",y:-20},show:t=>({opacity:1,filter:"blur(0px)",y:0,transition:{y:{duration:.3},opacity:{duration:.4},filter:{duration:.3}}})}},slideUp:{container:i,item:{hidden:{y:20,opacity:0},show:t=>({y:0,opacity:1,transition:{delay:t,duration:.3}}),exit:{y:-20,opacity:0,transition:{duration:.3}}}},slideDown:{container:i,item:{hidden:{y:-20,opacity:0},show:{y:0,opacity:1,transition:{duration:.3}},exit:{y:20,opacity:0,transition:{duration:.3}}}},slideLeft:{container:i,item:{hidden:{x:20,opacity:0},show:{x:0,opacity:1,transition:{duration:.3}},exit:{x:-20,opacity:0,transition:{duration:.3}}}},slideRight:{container:i,item:{hidden:{x:-20,opacity:0},show:{x:0,opacity:1,transition:{duration:.3}},exit:{x:20,opacity:0,transition:{duration:.3}}}},scaleUp:{container:i,item:{hidden:{scale:.5,opacity:0},show:{scale:1,opacity:1,transition:{duration:.3,scale:{type:"spring",damping:15,stiffness:300}}},exit:{scale:.5,opacity:0,transition:{duration:.3}}}},scaleDown:{container:i,item:{hidden:{scale:1.5,opacity:0},show:t=>({scale:1,opacity:1,transition:{delay:t,duration:.3,scale:{type:"spring",damping:15,stiffness:300}}}),exit:{scale:1.5,opacity:0,transition:{duration:.3}}}}};function b({children:t,delay:I=0,duration:k=.3,variants:v,className:h,segmentClassName:x,as:m="p",startOnView:d=!0,once:C=!1,by:n="word",animation:a="fadeIn",...w}){const f=s.motion.create(m),p=a?{container:{...o[a].container,show:{...o[a].container.show,transition:{staggerChildren:c[n]}},exit:{...o[a].container.exit,transition:{staggerChildren:c[n],staggerDirection:-1}}},item:o[a].item}:{container:i,item:g};let e=[];switch(n){case"word":e=t.split(/(\s+)/);break;case"character":e=t.split("");break;case"line":e=t.split(`
2
- `);break;case"text":default:e=[t];break}return r.jsx(s.AnimatePresence,{mode:"popLayout",children:r.jsx(f,{variants:p.container,initial:"hidden",whileInView:d?"show":void 0,animate:d?void 0:"show",exit:"exit",className:u.cn("whitespace-pre-wrap",h),...w,children:e.map((l,y)=>r.jsx(s.motion.span,{variants:p.item,custom:y*c[n],className:u.cn(n==="line"?"block":"inline-block whitespace-pre",x),children:l},`${n}-${l}-${y}`))})})}exports.TextAnimate=b;
2
+ `);break;default:e=[t];break}return r.jsx(s.AnimatePresence,{mode:"popLayout",children:r.jsx(f,{variants:p.container,initial:"hidden",whileInView:d?"show":void 0,animate:d?void 0:"show",exit:"exit",className:u.cn("whitespace-pre-wrap",h),...w,children:e.map((l,y)=>r.jsx(s.motion.span,{variants:p.item,custom:y*c[n],className:u.cn(n==="line"?"block":"inline-block whitespace-pre",x),children:l},`${n}-${l}-${y}`))})})}exports.TextAnimate=b;
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("react/jsx-runtime"),e=require("react"),v=require("gsap");;/* empty css */const L=({text:o,as:C="div",typingSpeed:l=50,initialDelay:_=0,pauseDuration:T=2e3,deletingSpeed:R=30,loop:j=!0,className:H="",showCursor:h=!0,hideCursorWhileTyping:O=!1,cursorCharacter:P="|",cursorClassName:k="",cursorBlinkDuration:p=.5,textColors:d=[],variableSpeed:c,onSentenceComplete:g,startOnVisible:y=!1,reverseMode:E=!1,...w})=>{const[a,q]=e.useState(""),[i,A]=e.useState(0),[f,M]=e.useState(!1),[s,z]=e.useState(0),[N,F]=e.useState(!y),m=e.useRef(null),I=e.useRef(null),r=e.useMemo(()=>Array.isArray(o)?o:[o],[o]),G=e.useCallback(()=>{if(!c)return l;const{min:t,max:u}=c;return Math.random()*(u-t)+t},[c,l]),J=()=>{if(d.length!==0)return d[s%d.length]};e.useEffect(()=>{if(!y||!I.current)return;const t=new IntersectionObserver(u=>{u.forEach(x=>{x.isIntersecting&&F(!0)})},{threshold:.1});return t.observe(I.current),()=>t.disconnect()},[y]),e.useEffect(()=>{h&&m.current&&(v.gsap.set(m.current,{opacity:1}),v.gsap.to(m.current,{opacity:0,duration:p,repeat:-1,yoyo:!0,ease:"power2.inOut"}))},[h,p]),e.useEffect(()=>{if(!N)return;let t;const u=r[s],x=E?u.split("").reverse().join(""):u,$=()=>{if(f)if(a===""){if(M(!1),s===r.length-1&&!j)return;g&&g(r[s],s),z(n=>(n+1)%r.length),A(0),t=setTimeout(()=>{},T)}else t=setTimeout(()=>{q(n=>n.slice(0,-1))},R);else i<x.length?t=setTimeout(()=>{q(n=>n+x[i]),A(n=>n+1)},c?G():l):r.length>1&&(t=setTimeout(()=>{M(!0)},T))};return i===0&&!f&&a===""?t=setTimeout($,_):$(),()=>clearTimeout(t)},[i,a,f,l,R,T,r,s,j,_,N,E,c,g]);const K=O&&(i<r[s].length||f);return e.createElement(C,{ref:I,className:`text-type ${H}`,...w},b.jsx("span",{className:"text-type__content",style:{color:J()||"inherit"},children:a}),h&&b.jsx("span",{ref:m,className:`text-type__cursor ${k} ${K?"text-type__cursor--hidden":""}`,children:P}))};exports.default=L;
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("react/jsx-runtime"),e=require("react"),v=require("gsap");;/* empty css */const L=({text:o,as:C="div",typingSpeed:l=50,initialDelay:I=0,pauseDuration:m=2e3,deletingSpeed:_=30,loop:R=!0,className:H="",showCursor:T=!0,hideCursorWhileTyping:O=!1,cursorCharacter:P="|",cursorClassName:k="",cursorBlinkDuration:j=.5,textColors:h=[],variableSpeed:c,onSentenceComplete:d,startOnVisible:y=!1,reverseMode:E=!1,...w})=>{const[a,q]=e.useState(""),[i,A]=e.useState(0),[f,M]=e.useState(!1),[s,z]=e.useState(0),[N,F]=e.useState(!y),x=e.useRef(null),p=e.useRef(null),r=e.useMemo(()=>Array.isArray(o)?o:[o],[o]),G=e.useCallback(()=>{if(!c)return l;const{min:t,max:u}=c;return Math.random()*(u-t)+t},[c,l]),J=()=>{if(h.length!==0)return h[s%h.length]};e.useEffect(()=>{if(!y||!p.current)return;const t=new IntersectionObserver(u=>{u.forEach(g=>{g.isIntersecting&&F(!0)})},{threshold:.1});return t.observe(p.current),()=>t.disconnect()},[y]),e.useEffect(()=>{T&&x.current&&(v.gsap.set(x.current,{opacity:1}),v.gsap.to(x.current,{opacity:0,duration:j,repeat:-1,yoyo:!0,ease:"power2.inOut"}))},[T,j]),e.useEffect(()=>{if(!N)return;let t;const u=r[s],g=E?u.split("").reverse().join(""):u,$=()=>{if(f)if(a===""){if(M(!1),s===r.length-1&&!R)return;d&&d(r[s],s),z(n=>(n+1)%r.length),A(0),t=setTimeout(()=>{},m)}else t=setTimeout(()=>{q(n=>n.slice(0,-1))},_);else i<g.length?t=setTimeout(()=>{q(n=>n+g[i]),A(n=>n+1)},c?G():l):r.length>1&&(t=setTimeout(()=>{M(!0)},m))};return i===0&&!f&&a===""?t=setTimeout($,I):$(),()=>clearTimeout(t)},[i,a,f,l,_,m,r,s,R,I,N,E,c,d]);const K=O&&(i<r[s].length||f);return e.createElement(C,{ref:p,className:`xiping-text-type ${H}`,...w},b.jsx("span",{className:"xiping-text-type__content",style:{color:J()||"inherit"},children:a}),T&&b.jsx("span",{ref:x,className:`xiping-text-type__cursor ${k} ${K?"xiping-text-type__cursor--hidden":""}`,children:P}))};exports.default=L;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),l=require("react"),n=require("clsx"),t=require("motion/react"),r=require("./index.module.css.js"),F=16,h=1.5,v="normal",a=({content:u,lineHeight:d=h,fontSize:x=F,fontWeight:f=v,className:g="",style:m={},onProgressChange:p,initialScrollPosition:S,cacheKey:q,showTopProgress:T=!0,topProgressClassName:_,showBottomProgress:N=!0,bottomProgressClassName:R})=>{const s=l.useRef(null),o=l.useRef(null),{scrollYProgress:i}=t.useScroll({container:s,target:o}),c=t.useTransform(()=>(i.get()*100).toFixed(2).replace(/\.0*$/,"")),j=t.useMotionTemplate`${c}%`;return c.on("change",E=>{p?.(Number(E))}),e.jsxs(e.Fragment,{children:[T&&e.jsx(t.motion.div,{id:"scroll-indicator",className:n(r.default["xiping-top-progress"],_),style:{scaleX:i,originX:0}}),e.jsx("div",{className:n(r.default["xiping-container"],r.default.textContent),ref:s,children:e.jsx("div",{ref:o,className:n(r.default["xiping-content"],g),style:{fontSize:`${x}px`,lineHeight:d,fontWeight:f,...m},children:u})}),N&&e.jsx(t.motion.div,{id:"scroll-present",className:n(r.default["xiping-bottom-progress"],R),children:j})]})};exports.TxtReader=a;exports.default=a;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),l=require("react"),r=require("clsx"),t=require("motion/react"),n=require("./index.module.css.js"),F=16,h=1.5,v="normal",a=({content:u,lineHeight:d=h,fontSize:x=F,fontWeight:g=v,className:f="",style:m={},onProgressChange:p,initialScrollPosition:S,cacheKey:q,showTopProgress:T=!0,topProgressClassName:_,showBottomProgress:N=!0,bottomProgressClassName:R})=>{const s=l.useRef(null),o=l.useRef(null),{scrollYProgress:i}=t.useScroll({container:s,target:o}),c=t.useTransform(()=>(i.get()*100).toFixed(2).replace(/\.0*$/,"")),j=t.useMotionTemplate`${c}%`;return c.on("change",E=>{p?.(Number(E))}),e.jsxs(e.Fragment,{children:[T&&e.jsx(t.motion.div,{id:"scroll-indicator",className:r(n.default["xiping-top-progress"],_),style:{scaleX:i,originX:0}}),e.jsx("div",{className:r(n.default["xiping-container"],n.default["xiping-text-content"]),ref:s,children:e.jsx("div",{ref:o,className:r(n.default["xiping-content"],f),style:{fontSize:`${x}px`,lineHeight:d,fontWeight:g,...m},children:u})}),N&&e.jsx(t.motion.div,{id:"scroll-present",className:r(n.default["xiping-bottom-progress"],R),children:j})]})};exports.TxtReader=a;exports.default=a;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_textContent_yv2bi_63",e={"xiping-top-progress":"_xiping-top-progress_yv2bi_23","xiping-container":"_xiping-container_yv2bi_33","xiping-content":"_xiping-content_yv2bi_41","xiping-bottom-progress":"_xiping-bottom-progress_yv2bi_48",textContent:t};exports.default=e;exports.textContent=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"xiping-top-progress":"_xiping-top-progress_rkm9f_23","xiping-container":"_xiping-container_rkm9f_33","xiping-content":"_xiping-content_rkm9f_41","xiping-bottom-progress":"_xiping-bottom-progress_rkm9f_48","xiping-text-content":"_xiping-text-content_rkm9f_63"};exports.default=t;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w=require("react/jsx-runtime"),f=require("react"),D=require("motion/react");;/* empty css */const l={robotoFlex:!1,notoSansSC:!1,loading:!1};function P(n){if(typeof document>"u")return!1;try{return document.fonts.check(`1em "${n}"`)}catch{return!0}}function O(){if(l.loading||l.robotoFlex&&l.notoSansSC)return;l.loading=!0;const n=P("Roboto Flex"),r=P("Noto Sans SC");if(n&&(l.robotoFlex=!0),r&&(l.notoSansSC=!0),n&&r){l.loading=!1;return}const i=(t,s)=>{if(document.querySelector(`link[href="${t}"]`)){s?.();return}const c=document.createElement("link");c.rel="stylesheet",c.href=t,c.onload=()=>s?.(),document.head.appendChild(c)},d=[{roboto:"https://fonts.loli.net/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",noto:"https://fonts.loli.net/css2?family=Noto+Sans+SC:wght@100..900&display=swap"},{roboto:"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",noto:"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap"}],m=t=>{if(t>=d.length){l.loading=!1;return}const s=d[t];let p=0;const c=()=>{p++,p===2&&(l.loading=!1)};n?c():i(s.roboto,()=>{l.robotoFlex=!0,c()}),r?c():i(s.noto,()=>{l.notoSansSC=!0,c()}),setTimeout(()=>{(!l.robotoFlex||!l.notoSansSC)&&m(t+1)},3e3)};m(0)}function U(n=!0){f.useEffect(()=>{n&&typeof document<"u"&&O()},[n])}function G(n){f.useEffect(()=>{let r;const i=()=>{n(),r=requestAnimationFrame(i)};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[n])}function H(n){const r=f.useRef({x:0,y:0});return f.useEffect(()=>{const i=(t,s)=>{if(n?.current){const p=n.current.getBoundingClientRect();r.current={x:t-p.left,y:s-p.top}}else r.current={x:t,y:s}},d=t=>i(t.clientX,t.clientY),m=t=>{const s=t.touches[0];i(s.clientX,s.clientY)};return window.addEventListener("mousemove",d),window.addEventListener("touchmove",m),()=>{window.removeEventListener("mousemove",d),window.removeEventListener("touchmove",m)}},[n]),r}const b=f.forwardRef((n,r)=>{const{label:i,fromFontVariationSettings:d,toFontVariationSettings:m,containerRef:t,radius:s=50,falloff:p="linear",className:c="",onClick:V,style:C,fontFamily:y,autoLoadFonts:k=!0,...q}=n;U(k&&!y);const R=f.useRef([]),v=f.useRef([]),S=H(t),x=f.useRef({x:null,y:null}),N=f.useMemo(()=>{const e=o=>new Map(o.split(",").map(g=>g.trim()).map(g=>{const[h,F]=g.split(" ");return[h.replace(/['"]/g,""),parseFloat(F)]})),a=e(d),u=e(m);return Array.from(a.entries()).map(([o,g])=>({axis:o,fromValue:g,toValue:u.get(o)??g}))},[d,m]),j=(e,a,u,o)=>Math.sqrt((u-e)**2+(o-a)**2),A=e=>{const a=Math.min(Math.max(1-e/s,0),1);switch(p){case"exponential":return a**2;case"gaussian":return Math.exp(-((e/(s/2))**2)/2);case"linear":default:return a}};G(()=>{if(!t?.current)return;const{x:e,y:a}=S.current;if(x.current.x===e&&x.current.y===a)return;x.current={x:e,y:a};const u=t.current.getBoundingClientRect();R.current.forEach((o,g)=>{if(!o)return;const h=o.getBoundingClientRect(),F=h.left+h.width/2-u.left,T=h.top+h.height/2-u.top,M=j(S.current.x,S.current.y,F,T);if(M>=s){o.style.fontVariationSettings=d;return}const X=A(M),L=N.map(({axis:Y,fromValue:E,toValue:z})=>{const _=E+(z-E)*X;return`'${Y}' ${_}`}).join(", ");v.current[g]=L,o.style.fontVariationSettings=L})});const $=/[\u4e00-\u9fa5]/.test(i)?i.split(""):i.split(" ").flatMap((e,a,u)=>{const o=e.split("");return a<u.length-1?[...o," "]:o});let I=0;const B=f.useMemo(()=>{const e={display:"inline",...C};return y&&(e.fontFamily=y),e},[y,C]);return w.jsxs("span",{ref:r,className:`${c} variable-proximity`,onClick:V,style:B,...q,children:[$.map((e,a)=>{const u=I++;return w.jsx(D.motion.span,{ref:o=>{R.current[u]=o},style:{display:e===" "?"inline":"inline-block",fontVariationSettings:v.current[u]},"aria-hidden":"true",children:e},a)}),w.jsx("span",{className:"sr-only",children:i})]})});b.displayName="VariableProximity";exports.VariableProximity=b;exports.default=b;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w=require("react/jsx-runtime"),f=require("react"),D=require("motion/react");;/* empty css */const l={robotoFlex:!1,notoSansSC:!1,loading:!1};function P(n){if(typeof document>"u")return!1;try{return document.fonts.check(`1em "${n}"`)}catch{return!0}}function O(){if(l.loading||l.robotoFlex&&l.notoSansSC)return;l.loading=!0;const n=P("Roboto Flex"),r=P("Noto Sans SC");if(n&&(l.robotoFlex=!0),r&&(l.notoSansSC=!0),n&&r){l.loading=!1;return}const i=(t,s)=>{if(document.querySelector(`link[href="${t}"]`)){s?.();return}const c=document.createElement("link");c.rel="stylesheet",c.href=t,c.onload=()=>s?.(),document.head.appendChild(c)},d=[{roboto:"https://fonts.loli.net/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",noto:"https://fonts.loli.net/css2?family=Noto+Sans+SC:wght@100..900&display=swap"},{roboto:"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",noto:"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap"}],m=t=>{if(t>=d.length){l.loading=!1;return}const s=d[t];let p=0;const c=()=>{p++,p===2&&(l.loading=!1)};n?c():i(s.roboto,()=>{l.robotoFlex=!0,c()}),r?c():i(s.noto,()=>{l.notoSansSC=!0,c()}),setTimeout(()=>{(!l.robotoFlex||!l.notoSansSC)&&m(t+1)},3e3)};m(0)}function U(n=!0){f.useEffect(()=>{n&&typeof document<"u"&&O()},[n])}function G(n){f.useEffect(()=>{let r;const i=()=>{n(),r=requestAnimationFrame(i)};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[n])}function H(n){const r=f.useRef({x:0,y:0});return f.useEffect(()=>{const i=(t,s)=>{if(n?.current){const p=n.current.getBoundingClientRect();r.current={x:t-p.left,y:s-p.top}}else r.current={x:t,y:s}},d=t=>i(t.clientX,t.clientY),m=t=>{const s=t.touches[0];i(s.clientX,s.clientY)};return window.addEventListener("mousemove",d),window.addEventListener("touchmove",m),()=>{window.removeEventListener("mousemove",d),window.removeEventListener("touchmove",m)}},[n]),r}const b=f.forwardRef((n,r)=>{const{label:i,fromFontVariationSettings:d,toFontVariationSettings:m,containerRef:t,radius:s=50,falloff:p="linear",className:c="",onClick:V,style:C,fontFamily:y,autoLoadFonts:k=!0,...q}=n;U(k&&!y);const R=f.useRef([]),v=f.useRef([]),S=H(t),x=f.useRef({x:null,y:null}),N=f.useMemo(()=>{const e=o=>new Map(o.split(",").map(g=>g.trim()).map(g=>{const[h,F]=g.split(" ");return[h.replace(/['"]/g,""),parseFloat(F)]})),a=e(d),u=e(m);return Array.from(a.entries()).map(([o,g])=>({axis:o,fromValue:g,toValue:u.get(o)??g}))},[d,m]),j=(e,a,u,o)=>Math.sqrt((u-e)**2+(o-a)**2),A=e=>{const a=Math.min(Math.max(1-e/s,0),1);switch(p){case"exponential":return a**2;case"gaussian":return Math.exp(-((e/(s/2))**2)/2);default:return a}};G(()=>{if(!t?.current)return;const{x:e,y:a}=S.current;if(x.current.x===e&&x.current.y===a)return;x.current={x:e,y:a};const u=t.current.getBoundingClientRect();R.current.forEach((o,g)=>{if(!o)return;const h=o.getBoundingClientRect(),F=h.left+h.width/2-u.left,T=h.top+h.height/2-u.top,M=j(S.current.x,S.current.y,F,T);if(M>=s){o.style.fontVariationSettings=d;return}const X=A(M),L=N.map(({axis:Y,fromValue:E,toValue:z})=>{const _=E+(z-E)*X;return`'${Y}' ${_}`}).join(", ");v.current[g]=L,o.style.fontVariationSettings=L})});const $=/[\u4e00-\u9fa5]/.test(i)?i.split(""):i.split(" ").flatMap((e,a,u)=>{const o=e.split("");return a<u.length-1?[...o," "]:o});let I=0;const B=f.useMemo(()=>{const e={display:"inline",...C};return y&&(e.fontFamily=y),e},[y,C]);return w.jsxs("span",{ref:r,className:`${c} xiping-variable-proximity`,onClick:V,style:B,...q,children:[$.map((e,a)=>{const u=I++;return w.jsx(D.motion.span,{ref:o=>{R.current[u]=o},style:{display:e===" "?"inline":"inline-block",fontVariationSettings:v.current[u]},"aria-hidden":"true",children:e},a)}),w.jsx("span",{className:"sr-only",children:i})]})});b.displayName="VariableProximity";exports.VariableProximity=b;exports.default=b;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),a=require("react");;/* empty css */const q=require("../subtitle-player/SubtitlePlayer.js"),w=require("./useVideoSubtitleStore.js");;/* empty css */const T=require("../../node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/es/index.umd.js"),x=({videoUrl:u,subtitles:c,poster:p,className:j="",style:N,onFetchDetail:o})=>{const s=a.useRef(null),d=a.useRef(null),{currentTime:r,isPlaying:R,setCurrentTime:v,setIsPlaying:n,setSubtitles:_,currentDetail:l,isLoadingDetail:S,fetchDetail:m}=w.useVideoSubtitleStore();a.useEffect(()=>{_(c)},[c,_]),a.useEffect(()=>{if(!s.current)return;const t=`video-subtitle-player-${Date.now()}`;s.current&&(s.current.id=t);const i=new T.default({id:t,url:u,poster:p,autoplay:!1,fluid:!0,width:"100%",height:"100%",controls:!0});d.current=i;const y=()=>{const P=i.currentTime||0;v(P)},f=()=>{n(!0)},b=()=>{n(!1)},h=()=>{n(!1)};return i.on("timeupdate",y),i.on("play",f),i.on("pause",b),i.on("ended",h),()=>{i.off("timeupdate",y),i.off("play",f),i.off("pause",b),i.off("ended",h),i.destroy(),d.current=null}},[u,p,v,n]),a.useEffect(()=>{if(d.current){const t=d.current;Math.abs(t.currentTime-r)>.5&&(t.currentTime=r)}},[r]);const g=a.useCallback(async t=>{o?await o(t):await m(t)},[o,m]);return e.jsxs("div",{className:`video-subtitle-player ${j}`,style:N,children:[e.jsxs("div",{className:"video-subtitle-player__left",children:[e.jsx("div",{className:"video-subtitle-player__video-container",children:e.jsx("div",{ref:s,className:"video-subtitle-player__video"})}),e.jsx("div",{className:"video-subtitle-player__subtitle-container",children:e.jsx(q.SubtitlePlayer,{subtitles:c,currentTime:r,mode:"current",onWordHoverChange:g})})]}),e.jsx("div",{className:"video-subtitle-player__right",children:e.jsx("div",{className:"video-subtitle-player__detail",children:S?e.jsxs("div",{className:"video-subtitle-player__detail-loading",children:[e.jsx("div",{className:"video-subtitle-player__detail-loading-spinner"}),e.jsx("span",{children:"加载中..."})]}):l?e.jsxs("div",{className:"video-subtitle-player__detail-content",children:[e.jsx("div",{className:"video-subtitle-player__detail-word",children:l.word}),l.pronunciation&&e.jsx("div",{className:"video-subtitle-player__detail-pronunciation",children:l.pronunciation}),l.partOfSpeech&&e.jsx("div",{className:"video-subtitle-player__detail-pos",children:l.partOfSpeech}),l.translation&&e.jsxs("div",{className:"video-subtitle-player__detail-translation",children:[e.jsx("div",{className:"video-subtitle-player__detail-label",children:"中文翻译"}),e.jsx("div",{className:"video-subtitle-player__detail-text",children:l.translation})]}),l.definition&&e.jsxs("div",{className:"video-subtitle-player__detail-definition",children:[e.jsx("div",{className:"video-subtitle-player__detail-label",children:"英文解释"}),e.jsx("div",{className:"video-subtitle-player__detail-text",children:l.definition})]}),l.examples&&l.examples.length>0&&e.jsxs("div",{className:"video-subtitle-player__detail-examples",children:[e.jsx("div",{className:"video-subtitle-player__detail-label",children:"例句"}),l.examples.map((t,i)=>e.jsxs("div",{className:"video-subtitle-player__detail-example",children:[e.jsx("div",{className:"video-subtitle-player__detail-example-en",children:t.sentence}),e.jsx("div",{className:"video-subtitle-player__detail-example-zh",children:t.translation})]},i))]})]}):e.jsxs("div",{className:"video-subtitle-player__detail-empty",children:[e.jsx("div",{className:"video-subtitle-player__detail-empty-icon",children:"📖"}),e.jsx("div",{className:"video-subtitle-player__detail-empty-text",children:"将鼠标悬停在字幕单词上查看详情"})]})})})]})};exports.VideoSubtitlePlayer=x;exports.default=x;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),a=require("react"),q=require("xgplayer");;/* empty css */const w=require("../subtitle-player/SubtitlePlayer.js"),T=require("./useVideoSubtitleStore.js");;/* empty css */const h=({videoUrl:u,subtitles:c,poster:p,className:g="",style:j,onFetchDetail:o})=>{const s=a.useRef(null),n=a.useRef(null),{currentTime:d,isPlaying:R,setCurrentTime:x,setIsPlaying:r,setSubtitles:v,currentDetail:l,isLoadingDetail:N,fetchDetail:_}=T.useVideoSubtitleStore();a.useEffect(()=>{v(c)},[c,v]),a.useEffect(()=>{if(!s.current)return;const t=`xiping-video-subtitle-player-${Date.now()}`;s.current&&(s.current.id=t);const i=new q({id:t,url:u,poster:p,autoplay:!1,fluid:!0,width:"100%",height:"100%",controls:!0});n.current=i;const y=()=>{const P=i.currentTime||0;x(P)},m=()=>{r(!0)},b=()=>{r(!1)},f=()=>{r(!1)};return i.on("timeupdate",y),i.on("play",m),i.on("pause",b),i.on("ended",f),()=>{i.off("timeupdate",y),i.off("play",m),i.off("pause",b),i.off("ended",f),i.destroy(),n.current=null}},[u,p,x,r]),a.useEffect(()=>{if(n.current){const t=n.current;Math.abs(t.currentTime-d)>.5&&(t.currentTime=d)}},[d]);const S=a.useCallback(async t=>{o?await o(t):await _(t)},[o,_]);return e.jsxs("div",{className:`xiping-video-subtitle-player ${g}`,style:j,children:[e.jsxs("div",{className:"xiping-video-subtitle-player__left",children:[e.jsx("div",{className:"xiping-video-subtitle-player__video-container",children:e.jsx("div",{ref:s,className:"xiping-video-subtitle-player__video"})}),e.jsx("div",{className:"xiping-video-subtitle-player__subtitle-container",children:e.jsx(w.SubtitlePlayer,{subtitles:c,currentTime:d,mode:"current",onWordHoverChange:S})})]}),e.jsx("div",{className:"xiping-video-subtitle-player__right",children:e.jsx("div",{className:"xiping-video-subtitle-player__detail",children:N?e.jsxs("div",{className:"xiping-video-subtitle-player__detail-loading",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-loading-spinner"}),e.jsx("span",{children:"加载中..."})]}):l?e.jsxs("div",{className:"xiping-video-subtitle-player__detail-content",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-word",children:l.word}),l.pronunciation&&e.jsx("div",{className:"xiping-video-subtitle-player__detail-pronunciation",children:l.pronunciation}),l.partOfSpeech&&e.jsx("div",{className:"xiping-video-subtitle-player__detail-pos",children:l.partOfSpeech}),l.translation&&e.jsxs("div",{className:"xiping-video-subtitle-player__detail-translation",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-label",children:"中文翻译"}),e.jsx("div",{className:"xiping-video-subtitle-player__detail-text",children:l.translation})]}),l.definition&&e.jsxs("div",{className:"xiping-video-subtitle-player__detail-definition",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-label",children:"英文解释"}),e.jsx("div",{className:"xiping-video-subtitle-player__detail-text",children:l.definition})]}),l.examples&&l.examples.length>0&&e.jsxs("div",{className:"xiping-video-subtitle-player__detail-examples",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-label",children:"例句"}),l.examples.map((t,i)=>e.jsxs("div",{className:"xiping-video-subtitle-player__detail-example",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-example-en",children:t.sentence}),e.jsx("div",{className:"xiping-video-subtitle-player__detail-example-zh",children:t.translation})]},i))]})]}):e.jsxs("div",{className:"xiping-video-subtitle-player__detail-empty",children:[e.jsx("div",{className:"xiping-video-subtitle-player__detail-empty-icon",children:"📖"}),e.jsx("div",{className:"xiping-video-subtitle-player__detail-empty-text",children:"将鼠标悬停在字幕单词上查看详情"})]})})})]})};exports.VideoSubtitlePlayer=h;exports.default=h;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../node_modules/.pnpm/zustand@5.0.9_@types_react@19.2.7_react@19.2.3_use-sync-external-store@1.6.0_react@19.2.3_/node_modules/zustand/esm/react.js"),n={currentTime:0,isPlaying:!1,subtitles:[],currentDetail:null,isLoadingDetail:!1},o=a.create((i,l)=>({...n,setCurrentTime:e=>{i({currentTime:e})},setIsPlaying:e=>{i({isPlaying:e})},setSubtitles:e=>{i({subtitles:e})},setCurrentDetail:e=>{i({currentDetail:e})},setIsLoadingDetail:e=>{i({isLoadingDetail:e})},fetchDetail:async e=>{if(!e){i({currentDetail:null,isLoadingDetail:!1});return}i({isLoadingDetail:!0});try{await new Promise(r=>setTimeout(r,300));const t={word:e.word,pronunciation:`/${e.word.toLowerCase()}/`,translation:`${e.word}的中文翻译`,definition:`Definition of ${e.word}`,examples:[{sentence:`This is an example sentence with ${e.word}.`,translation:`这是一个包含${e.word}的例句。`}],partOfSpeech:"noun"};i({currentDetail:t,isLoadingDetail:!1})}catch(t){console.error("获取详情失败:",t),i({currentDetail:null,isLoadingDetail:!1})}},reset:()=>{i(n)}}));exports.useVideoSubtitleStore=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("zustand"),n={currentTime:0,isPlaying:!1,subtitles:[],currentDetail:null,isLoadingDetail:!1},o=a.create((i,l)=>({...n,setCurrentTime:e=>{i({currentTime:e})},setIsPlaying:e=>{i({isPlaying:e})},setSubtitles:e=>{i({subtitles:e})},setCurrentDetail:e=>{i({currentDetail:e})},setIsLoadingDetail:e=>{i({isLoadingDetail:e})},fetchDetail:async e=>{if(!e){i({currentDetail:null,isLoadingDetail:!1});return}i({isLoadingDetail:!0});try{await new Promise(r=>setTimeout(r,300));const t={word:e.word,pronunciation:`/${e.word.toLowerCase()}/`,translation:`${e.word}的中文翻译`,definition:`Definition of ${e.word}`,examples:[{sentence:`This is an example sentence with ${e.word}.`,translation:`这是一个包含${e.word}的例句。`}],partOfSpeech:"noun"};i({currentDetail:t,isLoadingDetail:!1})}catch(t){console.error("获取详情失败:",t),i({currentDetail:null,isLoadingDetail:!1})}},reset:()=>{i(n)}}));exports.useVideoSubtitleStore=o;