@ioca/react 1.4.77 → 1.4.78

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 (92) hide show
  1. package/lib/es/components/affix/affix.js +1 -1
  2. package/lib/es/components/affix/totop.js +1 -1
  3. package/lib/es/components/affix/totop.js.map +1 -1
  4. package/lib/es/components/collapse/collapse.js +2 -1
  5. package/lib/es/components/collapse/collapse.js.map +1 -1
  6. package/lib/es/components/editor/controls.js +7 -1
  7. package/lib/es/components/editor/controls.js.map +1 -1
  8. package/lib/es/components/form/field.js +1 -1
  9. package/lib/es/components/form/form.js +1 -1
  10. package/lib/es/components/form/useForm.js +2 -2
  11. package/lib/es/components/input/input.js +2 -1
  12. package/lib/es/components/input/input.js.map +1 -1
  13. package/lib/es/components/input/number.js +3 -1
  14. package/lib/es/components/input/number.js.map +1 -1
  15. package/lib/es/components/input/range.js +3 -1
  16. package/lib/es/components/input/range.js.map +1 -1
  17. package/lib/es/components/message/message.js +2 -2
  18. package/lib/es/components/pagination/pagination.js +3 -1
  19. package/lib/es/components/pagination/pagination.js.map +1 -1
  20. package/lib/es/components/picker/colors/footer.js +1 -1
  21. package/lib/es/components/picker/colors/footer.js.map +1 -1
  22. package/lib/es/components/picker/dates/index.js +2 -2
  23. package/lib/es/components/picker/dates/index.js.map +1 -1
  24. package/lib/es/components/picker/dates/panel.js +3 -2
  25. package/lib/es/components/picker/dates/panel.js.map +1 -1
  26. package/lib/es/components/picker/time/index.js +1 -1
  27. package/lib/es/components/picker/time/index.js.map +1 -1
  28. package/lib/es/components/popconfirm/popconfirm.js +1 -1
  29. package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
  30. package/lib/es/components/popup/popup.js +1 -1
  31. package/lib/es/components/select/options.js +2 -1
  32. package/lib/es/components/select/options.js.map +1 -1
  33. package/lib/es/components/select/select.js +2 -2
  34. package/lib/es/components/select/select.js.map +1 -1
  35. package/lib/es/components/step/item.js +1 -1
  36. package/lib/es/components/step/item.js.map +1 -1
  37. package/lib/es/components/swiper/swiper.js +2 -1
  38. package/lib/es/components/swiper/swiper.js.map +1 -1
  39. package/lib/es/components/tabs/tabs.js +1 -1
  40. package/lib/es/components/tabs/tabs.js.map +1 -1
  41. package/lib/es/components/text/highlight.js +1 -1
  42. package/lib/es/components/tree/item.js +1 -1
  43. package/lib/es/components/tree/item.js.map +1 -1
  44. package/lib/es/components/upload/renderFile.js +2 -2
  45. package/lib/es/components/upload/renderFile.js.map +1 -1
  46. package/lib/es/components/upload/upload.js +3 -2
  47. package/lib/es/components/upload/upload.js.map +1 -1
  48. package/lib/es/components/utils/empty/index.js +1 -1
  49. package/lib/es/components/utils/empty/index.js.map +1 -1
  50. package/lib/es/components/utils/helpericon/helpericon.js +2 -2
  51. package/lib/es/components/utils/helpericon/helpericon.js.map +1 -1
  52. package/lib/es/components/video/video.js +8 -2
  53. package/lib/es/components/video/video.js.map +1 -1
  54. package/lib/es/js/usePreview/content.js +9 -2
  55. package/lib/es/js/usePreview/content.js.map +1 -1
  56. package/lib/es/js/usePreview/renderFile.js +1 -1
  57. package/lib/es/js/usePreview/renderFile.js.map +1 -1
  58. package/lib/es/js/utils.js +1 -1
  59. package/lib/types/components/affix/affix.js +1 -1
  60. package/lib/types/components/affix/totop.js +1 -1
  61. package/lib/types/components/collapse/collapse.js +2 -1
  62. package/lib/types/components/editor/controls.js +7 -1
  63. package/lib/types/components/form/field.js +1 -1
  64. package/lib/types/components/form/form.js +1 -1
  65. package/lib/types/components/form/useForm.js +2 -2
  66. package/lib/types/components/input/input.js +2 -1
  67. package/lib/types/components/input/number.js +3 -1
  68. package/lib/types/components/input/range.js +3 -1
  69. package/lib/types/components/message/message.js +2 -2
  70. package/lib/types/components/pagination/pagination.js +3 -1
  71. package/lib/types/components/picker/colors/footer.js +1 -1
  72. package/lib/types/components/picker/dates/index.js +2 -2
  73. package/lib/types/components/picker/dates/panel.js +3 -2
  74. package/lib/types/components/picker/time/index.js +1 -1
  75. package/lib/types/components/popconfirm/popconfirm.js +1 -1
  76. package/lib/types/components/popup/popup.js +1 -1
  77. package/lib/types/components/select/options.js +2 -1
  78. package/lib/types/components/select/select.js +2 -2
  79. package/lib/types/components/step/item.js +1 -1
  80. package/lib/types/components/swiper/swiper.js +2 -1
  81. package/lib/types/components/tabs/tabs.js +1 -1
  82. package/lib/types/components/text/highlight.js +1 -1
  83. package/lib/types/components/tree/item.js +1 -1
  84. package/lib/types/components/upload/renderFile.js +2 -2
  85. package/lib/types/components/upload/upload.js +3 -2
  86. package/lib/types/components/utils/empty/index.js +1 -1
  87. package/lib/types/components/utils/helpericon/helpericon.js +2 -2
  88. package/lib/types/components/video/video.js +8 -2
  89. package/lib/types/js/usePreview/content.js +9 -2
  90. package/lib/types/js/usePreview/renderFile.js +1 -1
  91. package/lib/types/js/utils.js +1 -1
  92. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"video.js","names":[],"sources":["../../../../packages/components/video/video.tsx"],"sourcesContent":["import {\n\tFullscreenExitRound,\n\tFullscreenRound,\n\tPauseRound,\n\tPlayArrowRound,\n\tStopRound,\n\tVolumeDownRound,\n\tVolumeOffRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport { exitFullScreen, fullScreen } from \"../../js/utils\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (typeof document === \"undefined\") return;\n\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n"],"mappings":"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"}
1
+ {"version":3,"file":"video.js","names":[],"sources":["../../../../packages/components/video/video.tsx"],"sourcesContent":["import FullscreenExitRound from \"@ricons/material/es/FullscreenExitRound.js\";\nimport FullscreenRound from \"@ricons/material/es/FullscreenRound.js\";\nimport PauseRound from \"@ricons/material/es/PauseRound.js\";\nimport PlayArrowRound from \"@ricons/material/es/PlayArrowRound.js\";\nimport StopRound from \"@ricons/material/es/StopRound.js\";\nimport VolumeDownRound from \"@ricons/material/es/VolumeDownRound.js\";\nimport VolumeOffRound from \"@ricons/material/es/VolumeOffRound.js\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useImperativeHandle, useRef } from \"react\";\nimport { useReactive } from \"../../js/hooks\";\nimport { exitFullScreen, fullScreen } from \"../../js/utils\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Progress from \"../progress\";\nimport Text from \"../text\";\nimport \"./index.css\";\nimport { IVideo } from \"./type\";\n\nconst Video = (props: IVideo) => {\n\tconst {\n\t\tref,\n\t\tstyle,\n\t\thideControls,\n\t\tautoplay,\n\t\tmuted,\n\t\tvolume = 50,\n\t\theight,\n\t\twidth,\n\t\tuseOriginControls,\n\t\ttimeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tvolumeProgressProps = {\n\t\t\tbarClass: \"bg-blue\",\n\t\t},\n\t\tclassName,\n\t\tonFullScreenChange,\n\t\t...restProps\n\t} = props;\n\tconst state = useReactive({\n\t\tplaying: autoplay,\n\t\tvolume: muted ? 0 : volume,\n\t\tvolumeCache: 0,\n\t\tmuted,\n\t\tcurrent: 0,\n\t\tduration: 0,\n\t\tisFullscreen: false,\n\t\tcontrolHidden: true,\n\t\tdraggingProgress: false,\n\t});\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst timeUpdateListener = (e) => {\n\t\tconst tar = e.target;\n\t\tif (tar.paused || state.draggingProgress) return;\n\n\t\tObject.assign(state, {\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t};\n\n\tconst playChangeListener = (e) => {\n\t\tstate.playing = !e.target.paused;\n\t};\n\n\tconst fsChangeListener = () => {\n\t\tif (typeof document === \"undefined\") return;\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen = document.fullscreenElement === tar;\n\t};\n\n\tconst volumeChangeListener = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tvolume: tar.volume * 100,\n\t\t\tmuted: tar.volume === 0,\n\t\t});\n\t};\n\n\tconst handlePlay = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.paused ? v.play() : v.pause();\n\t};\n\n\tconst handleReady = (e) => {\n\t\tconst tar = e.target;\n\t\tObject.assign(state, {\n\t\t\tduration: tar.duration,\n\t\t\tcurrent: tar.currentTime,\n\t\t});\n\t\ttar.volume = state.volume / 100;\n\t};\n\n\tconst handleMuted = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tif (v.volume > 0) {\n\t\t\tstate.volumeCache = v.volume;\n\t\t\tv.volume = 0;\n\t\t\treturn;\n\t\t}\n\t\tv.volume = state.volumeCache === 0 ? 0.5 : state.volumeCache;\n\t};\n\n\tconst handleStop = () => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = 0;\n\t\tv.pause();\n\t};\n\n\tconst handleFullscreen = () => {\n\t\tconst tar = videoRef.current?.parentElement;\n\t\tif (!tar) return;\n\n\t\tstate.isFullscreen ? exitFullScreen() : fullScreen(tar);\n\t\tonFullScreenChange?.(!state.isFullscreen);\n\t};\n\n\tconst handleUpdateTime = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.currentTime = (state.duration * t) / 100;\n\t};\n\n\tconst handleUpdateVolume = (t) => {\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.volume = t / 100;\n\t};\n\n\tconst showControls = !hideControls && !useOriginControls;\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!showControls || !state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst handleDraggingProgress = (dragging) => {\n\t\tstate.draggingProgress = dragging;\n\t};\n\n\tconst handleMouseMove = throttle({ interval: 900 }, setHiddenFalse);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tplay: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.play();\n\t\t},\n\t\tpause: () => {\n\t\t\tconst v = videoRef.current;\n\t\t\tif (!v) return;\n\n\t\t\tv.pause();\n\t\t},\n\t\tstop: handleStop,\n\t\tfullscreen: handleFullscreen,\n\t\tgetVideo: () => videoRef.current,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (typeof document === \"undefined\") return;\n\n\t\tconst v = videoRef.current;\n\t\tif (!v) return;\n\n\t\tv.addEventListener(\"timeupdate\", timeUpdateListener);\n\t\tv.addEventListener(\"play\", playChangeListener);\n\t\tv.addEventListener(\"pause\", playChangeListener);\n\t\tv.addEventListener(\"volumechange\", volumeChangeListener);\n\t\tdocument.addEventListener(\"fullscreenchange\", fsChangeListener);\n\n\t\treturn () => {\n\t\t\tclearHiddenTO();\n\t\t\tv.removeEventListener(\"timeupdate\", timeUpdateListener);\n\t\t\tv.removeEventListener(\"play\", playChangeListener);\n\t\t\tv.removeEventListener(\"pause\", playChangeListener);\n\t\t\tv.removeEventListener(\"volumechange\", volumeChangeListener);\n\t\t\tdocument.removeEventListener(\"fullscreenchange\", fsChangeListener);\n\t\t};\n\t}, []);\n\n\tconst currentValue = (state.current / state.duration) * 100;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-video\", className)}\n\t\t\tstyle={{ height, width, ...style }}\n\t\t\tonClick={handlePlay}\n\t\t\tonDoubleClick={() => handleFullscreen()}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tonCanPlay={handleReady}\n\t\t\t\t{...restProps}\n\t\t\t\tcontrols={useOriginControls}\n\t\t\t/>\n\n\t\t\t{showControls && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-video-controls\", {\n\t\t\t\t\t\t\"i-video-controls-hidden\": state.controlHidden,\n\t\t\t\t\t})}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<PauseRound />} />}\n\t\t\t\t\t\tactive={state.playing}\n\t\t\t\t\t\tonClick={handlePlay}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<PlayArrowRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tonClick={handleStop}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<StopRound />} />\n\t\t\t\t\t</Button>\n\t\t\t\t\t<span className='i-video-times font-sm'>\n\t\t\t\t\t\t<Text.Time seconds={state.current} /> /\n\t\t\t\t\t\t<Text.Time seconds={state.duration} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\t{...timeProgressProps}\n\t\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\t\tonChange={handleUpdateTime}\n\t\t\t\t\t\tonDraggingChange={handleDraggingProgress}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className='i-video-control-volume'>\n\t\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tactive={state.volume <= 0}\n\t\t\t\t\t\t\tafter={\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={<VolumeOffRound />}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: \".125em\" }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={handleMuted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<VolumeDownRound />} />\n\t\t\t\t\t\t</Button.Toggle>\n\n\t\t\t\t\t\t<div className='i-video-volume'>\n\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\tstyle={{ height: 100 }}\n\t\t\t\t\t\t\t\tvertical\n\t\t\t\t\t\t\t\t{...volumeProgressProps}\n\t\t\t\t\t\t\t\tvalue={state.volume}\n\t\t\t\t\t\t\t\tonChange={handleUpdateVolume}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Button.Toggle\n\t\t\t\t\t\tclassName='i-video-btn'\n\t\t\t\t\t\tflat\n\t\t\t\t\t\tsquare\n\t\t\t\t\t\tafter={<Icon icon={<FullscreenExitRound />} />}\n\t\t\t\t\t\tactive={state.isFullscreen}\n\t\t\t\t\t\tonClick={() => handleFullscreen()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={<FullscreenRound />} />\n\t\t\t\t\t</Button.Toggle>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Video;\n"],"mappings":"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"}
@@ -5,10 +5,17 @@ import { getFileType, getSuffixByUrl } from "../utils.js";
5
5
  import { TFileType } from "./type.js";
6
6
  import renderFile from "./renderFile.js";
7
7
  import classNames from "classnames";
8
- import { throttle } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
8
+ import { throttle } from "radash";
9
9
  import { useEffect, useMemo, useRef } from "react";
10
- import { AspectRatioRound, CloseRound, FileDownloadOutlined, KeyboardArrowLeftRound, KeyboardArrowRightRound, OpenInNewRound, RotateLeftRound, RotateRightRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
11
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+ import CloseRound from "@ricons/material/es/CloseRound.js";
12
+ import AspectRatioRound from "@ricons/material/es/AspectRatioRound.js";
13
+ import FileDownloadOutlined from "@ricons/material/es/FileDownloadOutlined.js";
14
+ import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
15
+ import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
16
+ import OpenInNewRound from "@ricons/material/es/OpenInNewRound.js";
17
+ import RotateLeftRound from "@ricons/material/es/RotateLeftRound.js";
18
+ import RotateRightRound from "@ricons/material/es/RotateRightRound.js";
12
19
  //#region packages/js/usePreview/content.tsx
13
20
  function Content(props) {
14
21
  const { items = [], initial = 0, renderFile: renderFile$1 = renderFile, onRotate, onChange, onClose, onZoom } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","names":["DefaultRenderFile","renderFile","Button","Icon"],"sources":["../../../../packages/js/usePreview/content.tsx"],"sourcesContent":["import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport {\n\tAspectRatioRound,\n\tCloseRound,\n\tFileDownloadOutlined,\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n\tOpenInNewRound,\n\tRotateLeftRound,\n\tRotateRightRound,\n} from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!box.current) return;\n\n\t\tbox.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!box.current) return;\n\n\t\t\tbox.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"content.js","names":["DefaultRenderFile","renderFile","Button","Icon"],"sources":["../../../../packages/js/usePreview/content.tsx"],"sourcesContent":["import Button from \"@p/components/button\";\nimport Icon from \"@p/components/icon\";\nimport AspectRatioRound from \"@ricons/material/es/AspectRatioRound.js\";\nimport CloseRound from \"@ricons/material/es/CloseRound.js\";\nimport FileDownloadOutlined from \"@ricons/material/es/FileDownloadOutlined.js\";\nimport KeyboardArrowLeftRound from \"@ricons/material/es/KeyboardArrowLeftRound.js\";\nimport KeyboardArrowRightRound from \"@ricons/material/es/KeyboardArrowRightRound.js\";\nimport OpenInNewRound from \"@ricons/material/es/OpenInNewRound.js\";\nimport RotateLeftRound from \"@ricons/material/es/RotateLeftRound.js\";\nimport RotateRightRound from \"@ricons/material/es/RotateRightRound.js\";\nimport classNames from \"classnames\";\nimport { throttle } from \"radash\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useMouseMove, useMouseUp, useReactive } from \"../hooks\";\nimport { getFileType, getSuffixByUrl } from \"../utils\";\nimport DefaultRenderFile from \"./renderFile\";\nimport { IPreview, TFileType, TPreviewItem } from \"./type\";\n\nexport default function Content(props: IPreview) {\n\tconst {\n\t\titems = [],\n\t\tinitial = 0,\n\t\trenderFile = DefaultRenderFile,\n\t\tonRotate,\n\t\tonChange,\n\t\tonClose,\n\t\tonZoom,\n\t} = props;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\trotate: 0,\n\t\tscale: 1,\n\t\ttranslate: [0, 0],\n\t\tstart: [0, 0],\n\t\tdragging: false,\n\t\tcontrolHidden: true,\n\t});\n\tconst box = useRef<HTMLDivElement>(null);\n\tconst translate = useRef<number[]>([0, 0]);\n\tconst hiddenTO = useRef<any>(null);\n\n\tconst files = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst o: TPreviewItem = {\n\t\t\t\tsrc: \"\",\n\t\t\t};\n\t\t\tif (typeof item === \"string\") {\n\t\t\t\to.src = item;\n\t\t\t} else {\n\t\t\t\tObject.assign(o, item);\n\t\t\t}\n\n\t\t\to.suffix = getSuffixByUrl(o.src) || \"\";\n\t\t\to.type = getFileType(o.suffix, item[\"type\"]);\n\n\t\t\treturn o;\n\t\t});\n\t}, [items]);\n\n\tconst { file, content } = useMemo(() => {\n\t\tconst file = files[state.current];\n\t\tconst content = renderFile(file);\n\n\t\treturn {\n\t\t\tfile,\n\t\t\tcontent,\n\t\t};\n\t}, [state.current, items]);\n\n\tconst isImage = file.type === TFileType.IMAGE;\n\n\tconst handleSwitch = (next: number) => {\n\t\tconst l = files.length;\n\t\tconst { current: before } = state;\n\t\tif (next >= l) {\n\t\t\tstate.current = 0;\n\t\t} else if (next < 0) {\n\t\t\tstate.current = l - 1;\n\t\t} else {\n\t\t\tstate.current = next;\n\t\t}\n\t\tonChange?.(state.current, before);\n\n\t\tstate.rotate = files[state.current].rotate || 0;\n\n\t\tif (state.scale !== 1) {\n\t\t\tstate.scale = 1;\n\t\t\tonZoom?.(1);\n\t\t}\n\t\tonRotate?.(state.rotate);\n\t\tstate.translate = translate.current = [0, 0];\n\t};\n\n\tconst handleRotate = (deg: number) => {\n\t\tstate.rotate += deg;\n\n\t\tonRotate?.(state.rotate);\n\t};\n\n\tconst handleMouseWheel = throttle({ interval: 60 }, (e) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tif (!isImage) return;\n\t\tlet after = state.scale + (e.deltaY < 0 ? 0.05 : -0.05);\n\t\tif (after > 2) after = 2;\n\t\tif (after < 0.25) after = 0.25;\n\n\t\tonZoom?.(after);\n\t\tstate.scale = after;\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!isImage) return;\n\t\te.preventDefault();\n\t\tstate.dragging = true;\n\t\tstate.start = [e.pageX, e.pageY];\n\t};\n\n\tconst clearHiddenTO = () => {\n\t\tif (!hiddenTO.current || state.controlHidden) return;\n\t\tclearTimeout(hiddenTO.current);\n\t\thiddenTO.current = null;\n\t};\n\n\tconst setHiddenFalse = () => {\n\t\tif (!state.controlHidden) return;\n\t\tstate.controlHidden = false;\n\n\t\tclearHiddenTO();\n\t\thiddenTO.current = setTimeout(() => {\n\t\t\tstate.controlHidden = true;\n\t\t}, 1000);\n\t};\n\n\tconst throttleMouseMove = throttle({ interval: 300 }, setHiddenFalse);\n\n\tconst handleMouseMove = (e) => {\n\t\tthrottleMouseMove();\n\t\tif (!state.dragging) return;\n\t\te.preventDefault();\n\n\t\tconst [x, y] = translate.current;\n\t\tconst [ox, oy] = state.start;\n\t\tconst offsetX = e.pageX - ox;\n\t\tconst offsetY = e.pageY - oy;\n\n\t\tstate.translate = [x + offsetX, y + offsetY];\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging) return;\n\t\tstate.dragging = false;\n\t\ttranslate.current = state.translate;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!box.current) return;\n\n\t\tbox.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!box.current) return;\n\n\t\t\tbox.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={box}\n\t\t\t\tclassName={classNames(\"i-preview-content\", {\n\t\t\t\t\t\"no-transition\": state.dragging,\n\t\t\t\t})}\n\t\t\t\tstyle={{\n\t\t\t\t\ttransform: `translate(${state.translate\n\t\t\t\t\t\t.map((n) => `${n}px`)\n\t\t\t\t\t\t.join(\",\")}) rotate(${state.rotate}deg) scale(${\n\t\t\t\t\t\tstate.scale\n\t\t\t\t\t})`,\n\t\t\t\t}}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-preview-controls\", {\n\t\t\t\t\t\"i-preview-controls-hidden\": state.controlHidden,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<Button square flat onClick={onClose}>\n\t\t\t\t\t<Icon icon={<CloseRound />} />\n\t\t\t\t</Button>\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<span className='px-8'>\n\t\t\t\t\t\t{state.current + 1} / {files.length}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t{state.scale !== 1 && (\n\t\t\t\t\t<Button flat onClick={() => (state.scale = 1)}>\n\t\t\t\t\t\t<Icon icon={<AspectRatioRound />} />\n\t\t\t\t\t\t<span className='mt-2'>\n\t\t\t\t\t\t\t{(state.scale * 100).toFixed(0)}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button square flat href={file.src} target='_blank'>\n\t\t\t\t\t<Icon icon={<OpenInNewRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat href={file.src} download target='_blank'>\n\t\t\t\t\t<Icon icon={<FileDownloadOutlined />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(90)}>\n\t\t\t\t\t<Icon icon={<RotateRightRound />} />\n\t\t\t\t</Button>\n\t\t\t\t<Button square flat onClick={() => handleRotate(-90)}>\n\t\t\t\t\t<Icon icon={<RotateLeftRound />} />\n\t\t\t\t</Button>\n\n\t\t\t\t{files.length > 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current - 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowLeftRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\tflat\n\t\t\t\t\t\t\tonClick={() => handleSwitch(state.current + 1)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={<KeyboardArrowRightRound />} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import icon_default from "../../components/icon/index.js";
2
2
  import video_default from "../../components/video/index.js";
3
3
  import { TFileType } from "./type.js";
4
- import { FeedOutlined } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import FeedOutlined from "@ricons/material/es/FeedOutlined.js";
6
6
  //#region packages/js/usePreview/renderFile.tsx
7
7
  function renderFile(props) {
8
8
  const { name, suffix, type } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"renderFile.js","names":["Video","Icon"],"sources":["../../../../packages/js/usePreview/renderFile.tsx"],"sourcesContent":["import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport { FeedOutlined } from \"@ricons/material\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n"],"mappings":";;;;;;AAKA,SAAwB,WAAW,OAAqB;CACvD,MAAM,EAAE,MAAM,QAAQ,SAAS;AAE/B,SAAQ,MAAR;EACC,KAAK,UAAU,MACd,QAAO,oBAAC,OAAD,EAAK,KAAK,MAAM,KAAO,CAAA;EAC/B,KAAK,UAAU,MACd,QAAO,oBAACA,eAAD,EAAO,GAAI,OAAS,CAAA;EAC5B,QACC,QACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACC,oBAACC,cAAD;IAAM,MAAM,oBAAC,cAAD,EAAgB,CAAA;IAAE,MAAK;IAAQ,CAAA,EAC3C,oBAAC,MAAD;IAAI,WAAU;cAAQ,QAAQ,UAAU;IAAS,CAAA,CAC5C"}
1
+ {"version":3,"file":"renderFile.js","names":["Video","Icon"],"sources":["../../../../packages/js/usePreview/renderFile.tsx"],"sourcesContent":["import Icon from \"@p/components/icon\";\nimport Video from \"@p/components/video\";\nimport FeedOutlined from \"@ricons/material/es/FeedOutlined.js\";\nimport { TFileType, TPreviewItem } from \"./type\";\n\nexport default function renderFile(props: TPreviewItem) {\n\tconst { name, suffix, type } = props;\n\n\tswitch (type) {\n\t\tcase TFileType.IMAGE:\n\t\t\treturn <img src={props.src} />;\n\t\tcase TFileType.VIDEO:\n\t\t\treturn <Video {...props} />;\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div className='i-preview-unknown'>\n\t\t\t\t\t<Icon icon={<FeedOutlined />} size='3em' />\n\t\t\t\t\t<h5 className='mt-4'>{name || suffix || \"?\"}</h5>\n\t\t\t\t</div>\n\t\t\t);\n\t}\n}\n"],"mappings":";;;;;;AAKA,SAAwB,WAAW,OAAqB;CACvD,MAAM,EAAE,MAAM,QAAQ,SAAS;AAE/B,SAAQ,MAAR;EACC,KAAK,UAAU,MACd,QAAO,oBAAC,OAAD,EAAK,KAAK,MAAM,KAAO,CAAA;EAC/B,KAAK,UAAU,MACd,QAAO,oBAACA,eAAD,EAAO,GAAI,OAAS,CAAA;EAC5B,QACC,QACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACC,oBAACC,cAAD;IAAM,MAAM,oBAAC,cAAD,EAAgB,CAAA;IAAE,MAAK;IAAQ,CAAA,EAC3C,oBAAC,MAAD;IAAI,WAAU;cAAQ,QAAQ,UAAU;IAAS,CAAA,CAC5C"}
@@ -1,5 +1,5 @@
1
1
  import "react";
2
- import { createRoot } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js";
2
+ import { createRoot } from "react-dom/client";
3
3
  //#region packages/js/utils.ts
4
4
  function getPosition($source, $popup, options = {}) {
5
5
  const { refWindow, gap = 0, offset = 0, position = "top", align } = options;
@@ -1,6 +1,6 @@
1
1
  import ToTop from "./totop.js";
2
2
  import classNames from "classnames";
3
- import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
3
+ import { debounce } from "radash";
4
4
  import { Children, cloneElement, useEffect, useMemo, useState } from "react";
5
5
  import "./index.css";
6
6
  import { jsx } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  import button_default from "../button/index.js";
2
2
  import icon_default from "../icon/index.js";
3
3
  import classNames from "classnames";
4
- import { SkipPreviousRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
4
+ import SkipPreviousRound from "@ricons/material/es/SkipPreviousRound.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region packages/components/affix/totop.tsx
7
7
  function ToTop(props) {
@@ -2,8 +2,9 @@ import helpericon_default from "../utils/helpericon/index.js";
2
2
  import Item from "./item.js";
3
3
  import classNames from "classnames";
4
4
  import { Children, useMemo, useState } from "react";
5
- import { MinusRound, PlusRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
+ import MinusRound from "@ricons/material/es/MinusRound.js";
7
+ import PlusRound from "@ricons/material/es/PlusRound.js";
7
8
  import "./index.css";
8
9
  //#region packages/components/collapse/collapse.tsx
9
10
  const Collapse = (props) => {
@@ -1,8 +1,14 @@
1
1
  import button_default from "../button/index.js";
2
2
  import icon_default from "../icon/index.js";
3
- import { ClearAllRound, FormatBoldRound, FormatItalicRound, FormatUnderlinedRound, RedoRound, StrikethroughSRound, UndoRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
4
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
4
  import xss from "xss";
5
+ import ClearAllRound from "@ricons/material/es/ClearAllRound.js";
6
+ import FormatBoldRound from "@ricons/material/es/FormatBoldRound.js";
7
+ import FormatItalicRound from "@ricons/material/es/FormatItalicRound.js";
8
+ import FormatUnderlinedRound from "@ricons/material/es/FormatUnderlinedRound.js";
9
+ import RedoRound from "@ricons/material/es/RedoRound.js";
10
+ import StrikethroughSRound from "@ricons/material/es/StrikethroughSRound.js";
11
+ import UndoRound from "@ricons/material/es/UndoRound.js";
6
12
  //#region packages/components/editor/controls.tsx
7
13
  const { escapeAttrValue } = xss;
8
14
  const exec = (a, b, c) => {
@@ -1,6 +1,6 @@
1
1
  import Context from "./context.js";
2
2
  import { Children, cloneElement, isValidElement, useContext, useEffect, useMemo, useState } from "react";
3
- import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
3
+ import PubSub from "pubsub-js";
4
4
  //#region packages/components/form/field.tsx
5
5
  function Field(props) {
6
6
  const { name, required, children } = props;
@@ -5,7 +5,7 @@ import useConfig from "./useConfig.js";
5
5
  import classNames from "classnames";
6
6
  import { useEffect, useMemo } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
- import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
8
+ import PubSub from "pubsub-js";
9
9
  import "./index.css";
10
10
  //#region packages/components/form/form.tsx
11
11
  const Form = (props) => {
@@ -1,6 +1,6 @@
1
- import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
1
+ import { uid } from "radash";
2
2
  import { useRef } from "react";
3
- import PubSub from "/Users/iann/codes/ioca-react/node_modules/.pnpm/pubsub-js@1.9.5/node_modules/pubsub-js/src/pubsub.js";
3
+ import PubSub from "pubsub-js";
4
4
  //#region packages/components/form/useForm.ts
5
5
  var IFormInstance = class {
6
6
  id;
@@ -5,9 +5,10 @@ import Range from "./range.js";
5
5
  import Textarea from "./textarea.js";
6
6
  import classNames from "classnames";
7
7
  import { useEffect, useMemo, useState } from "react";
8
- import { VisibilityOffRound, VisibilityRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
10
9
  import "../../css/input.css";
10
+ import VisibilityOffRound from "@ricons/material/es/VisibilityOffRound.js";
11
+ import VisibilityRound from "@ricons/material/es/VisibilityRound.js";
11
12
  //#region packages/components/input/input.tsx
12
13
  const Input = ((props) => {
13
14
  const { ref, type = "text", label, name, value = "", prepend, append, labelInline, className, status = "normal", message, tip, clear, width, hideVisible, border, underline, required, maxLength, onChange, onEnter, onClear, style, ...restProps } = props;
@@ -3,9 +3,11 @@ import helpericon_default from "../utils/helpericon/index.js";
3
3
  import InputContainer from "./container.js";
4
4
  import classNames from "classnames";
5
5
  import { useEffect, useState } from "react";
6
- import { KeyboardDoubleArrowUpRound, MinusRound, PlusRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
8
7
  import "../../css/input.css";
8
+ import MinusRound from "@ricons/material/es/MinusRound.js";
9
+ import PlusRound from "@ricons/material/es/PlusRound.js";
10
+ import KeyboardDoubleArrowUpRound from "@ricons/material/es/KeyboardDoubleArrowUpRound.js";
9
11
  //#region packages/components/input/number.tsx
10
12
  const Number = (props) => {
11
13
  const { ref, label, name, value = "", labelInline, step = 1, min = -Infinity, max = Infinity, thousand, precision, type, className, width, status = "normal", append, border, prepend, disabled, message, tip, hideControl, showMax, style, onChange, onEnter, onInput, onBlur, ...restProps } = props;
@@ -3,9 +3,11 @@ import helpericon_default from "../utils/helpericon/index.js";
3
3
  import InputContainer from "./container.js";
4
4
  import classNames from "classnames";
5
5
  import { useEffect, useState } from "react";
6
- import { MinusRound, PlusRound, SyncAltRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
8
7
  import "../../css/input.css";
8
+ import MinusRound from "@ricons/material/es/MinusRound.js";
9
+ import PlusRound from "@ricons/material/es/PlusRound.js";
10
+ import SyncAltRound from "@ricons/material/es/SyncAltRound.js";
9
11
  //#region packages/components/input/range.tsx
10
12
  const Range = (props) => {
11
13
  const { label, name, value, labelInline, min = -Infinity, max = Infinity, type, className, status = "normal", message, tip, append, prepend, step = 1, width, thousand, precision, hideControl, placeholder, border, autoSwitch, onChange, onBlur, style, ...restProps } = props;
@@ -1,9 +1,9 @@
1
1
  import { useReactive } from "../../js/hooks.js";
2
2
  import classNames from "classnames";
3
- import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
3
+ import { uid } from "radash";
4
4
  import { isValidElement, useEffect, useRef } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
- import { createRoot } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js";
6
+ import { createRoot } from "react-dom/client";
7
7
  import "./index.css";
8
8
  //#region packages/components/message/message.tsx
9
9
  const AlignMap = {
@@ -2,8 +2,10 @@ import icon_default from "../icon/index.js";
2
2
  import Page from "./page.js";
3
3
  import classNames from "classnames";
4
4
  import { useEffect, useMemo, useState } from "react";
5
- import { KeyboardArrowLeftRound, KeyboardArrowRightRound, MoreHorizRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
6
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
7
+ import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
8
+ import MoreHorizRound from "@ricons/material/es/MoreHorizRound.js";
7
9
  import "./index.css";
8
10
  //#region packages/components/pagination/pagination.tsx
9
11
  const Pagination = (props) => {
@@ -3,8 +3,8 @@ import icon_default from "../../icon/index.js";
3
3
  import input_default from "../../input/index.js";
4
4
  import select_default from "../../select/index.js";
5
5
  import { useEffect, useState } from "react";
6
- import { CheckRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ import CheckRound from "@ricons/material/es/CheckRound.js";
8
8
  //#region packages/components/picker/colors/footer.tsx
9
9
  const ColorMethods = {
10
10
  HEX: "toHexString",
@@ -4,10 +4,10 @@ import input_default from "../../input/index.js";
4
4
  import Panel from "./panel.js";
5
5
  import classNames from "classnames";
6
6
  import { useEffect, useMemo, useState } from "react";
7
- import { CalendarMonthTwotone } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
8
7
  import { jsx } from "react/jsx-runtime";
8
+ import CalendarMonthTwotone from "@ricons/material/es/CalendarMonthTwotone.js";
9
9
  import dayjs from "dayjs";
10
- import customParseFormat from "/Users/iann/codes/ioca-react/node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/customParseFormat.js";
10
+ import customParseFormat from "dayjs/plugin/customParseFormat.js";
11
11
  import "./index.css";
12
12
  //#region packages/components/picker/dates/index.tsx
13
13
  dayjs.extend(customParseFormat);
@@ -2,10 +2,11 @@ import icon_default from "../../icon/index.js";
2
2
  import helpericon_default from "../../utils/helpericon/index.js";
3
3
  import Dates from "./dates.js";
4
4
  import classNames from "classnames";
5
- import { throttle } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
5
+ import { throttle } from "radash";
6
6
  import { useEffect, useRef, useState } from "react";
7
- import { KeyboardArrowLeftRound, KeyboardArrowRightRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
9
+ import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
9
10
  import dayjs from "dayjs";
10
11
  //#region packages/components/picker/dates/panel.tsx
11
12
  const MONTHS = [
@@ -4,8 +4,8 @@ import input_default from "../../input/index.js";
4
4
  import Panel from "./panel.js";
5
5
  import classNames from "classnames";
6
6
  import { useEffect, useState } from "react";
7
- import { AccessTimeRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
8
7
  import { jsx } from "react/jsx-runtime";
8
+ import AccessTimeRound from "@ricons/material/es/AccessTimeRound.js";
9
9
  //#region packages/components/picker/time/index.tsx
10
10
  const FORMAT = "hh:mm:ss";
11
11
  function TimePicker(props) {
@@ -3,8 +3,8 @@ import button_default from "../button/index.js";
3
3
  import icon_default from "../icon/index.js";
4
4
  import popup_default from "../popup/index.js";
5
5
  import flex_default from "../flex/index.js";
6
- import { InfoOutlined } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ import InfoOutlined from "@ricons/material/es/InfoOutlined.js";
8
8
  import "./index.css";
9
9
  //#region packages/components/popconfirm/popconfirm.tsx
10
10
  const defaultOk = { children: "确定" };
@@ -1,7 +1,7 @@
1
1
  import { useMouseUp, useResizeObserver } from "../../js/hooks.js";
2
2
  import { getPointPosition, getPosition } from "../../js/utils.js";
3
3
  import Content from "./content.js";
4
- import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
4
+ import { debounce } from "radash";
5
5
  import { Children, cloneElement, isValidElement, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  import "./index.css";
@@ -3,8 +3,9 @@ import Empty from "../utils/empty/index.js";
3
3
  import list_default from "../list/index.js";
4
4
  import tag_default from "../tag/index.js";
5
5
  import classNames from "classnames";
6
- import { CheckRound, SearchRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ import CheckRound from "@ricons/material/es/CheckRound.js";
8
+ import SearchRound from "@ricons/material/es/SearchRound.js";
8
9
  //#region packages/components/select/options.tsx
9
10
  const Options = (props) => {
10
11
  const { value: val, options, filter, filterPlaceholder, multiple, empty = /* @__PURE__ */ jsx(Empty, {}), onSelect, onFilter } = props;
@@ -3,11 +3,11 @@ import helpericon_default from "../utils/helpericon/index.js";
3
3
  import popup_default from "../popup/index.js";
4
4
  import { Options, displayValue } from "./options.js";
5
5
  import classNames from "classnames";
6
- import { debounce } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
6
+ import { debounce } from "radash";
7
7
  import { useEffect, useMemo, useState } from "react";
8
- import { UnfoldMoreRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
10
9
  import "../../css/input.css";
10
+ import UnfoldMoreRound from "@ricons/material/es/UnfoldMoreRound.js";
11
11
  import "./index.css";
12
12
  //#region packages/components/select/select.tsx
13
13
  const Select = (props) => {
@@ -1,7 +1,7 @@
1
1
  import Divider from "./divider.js";
2
2
  import classNames from "classnames";
3
- import { CheckRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
4
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import CheckRound from "@ricons/material/es/CheckRound.js";
5
5
  //#region packages/components/step/item.tsx
6
6
  const STATUS = [
7
7
  "finished",
@@ -4,8 +4,9 @@ import { clamp } from "../../js/utils.js";
4
4
  import Item from "./item.js";
5
5
  import classNames from "classnames";
6
6
  import { Children, useEffect, useImperativeHandle, useMemo, useRef } from "react";
7
- import { KeyboardArrowLeftRound, KeyboardArrowRightRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
8
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
+ import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
9
+ import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
9
10
  import "./index.css";
10
11
  //#region packages/components/swiper/swiper.tsx
11
12
  const Swiper = ((props) => {
@@ -6,8 +6,8 @@ import popup_default from "../popup/index.js";
6
6
  import Item from "./item.js";
7
7
  import classNames from "classnames";
8
8
  import { Children, useEffect, useImperativeHandle, useRef, useState } from "react";
9
- import { MoreHorizRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
10
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
+ import MoreHorizRound from "@ricons/material/es/MoreHorizRound.js";
11
11
  import "./index.css";
12
12
  //#region packages/components/tabs/tabs.tsx
13
13
  const Tabs = ((props) => {
@@ -1,7 +1,7 @@
1
1
  import Text from "./text.js";
2
2
  import { Fragment, useMemo } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import { findAll } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/highlight-words-core@1.2.3/node_modules/highlight-words-core/dist/index.js";
4
+ import { findAll } from "highlight-words-core";
5
5
  //#region packages/components/text/highlight.tsx
6
6
  function HighLight(props) {
7
7
  const { keyword, text, escape, caseSensitive, renderWord = (word) => /* @__PURE__ */ jsx("mark", { children: word }), ...restProps } = props;
@@ -2,8 +2,8 @@ import icon_default from "../icon/index.js";
2
2
  import checkbox_default from "../checkbox/index.js";
3
3
  import classNames from "classnames";
4
4
  import { useState } from "react";
5
- import { KeyboardArrowDownRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
6
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import KeyboardArrowDownRound from "@ricons/material/es/KeyboardArrowDownRound.js";
7
7
  //#region packages/components/tree/item.tsx
8
8
  function TreeList(props) {
9
9
  const { data = [], depth = 0, round, style, className, parent, nodeProps, ...restProps } = props;
@@ -3,10 +3,10 @@ import { formatBytes, getFileType } from "../../js/utils.js";
3
3
  import helpericon_default from "../utils/helpericon/index.js";
4
4
  import { TFileType } from "../../js/usePreview/type.js";
5
5
  import image_default from "../image/index.js";
6
- import { title } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
7
- import { ListAltRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
6
+ import { title } from "radash";
8
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
8
  import SortableContainer from "react-easy-sort";
9
+ import ListAltRound from "@ricons/material/es/ListAltRound.js";
10
10
  //#region packages/components/upload/renderFile.tsx
11
11
  const ListContainer = (props) => {
12
12
  const { sortable, onSortEnd, itemProps, ...restProps } = props;
@@ -5,10 +5,11 @@ import usePreview from "../../js/usePreview/index.js";
5
5
  import InputContainer from "../input/container.js";
6
6
  import FileListItem, { ListContainer } from "./renderFile.js";
7
7
  import classNames from "classnames";
8
- import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
8
+ import { uid } from "radash";
9
9
  import { useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
10
- import { DriveFolderUploadOutlined, PlusSharp } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
11
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+ import DriveFolderUploadOutlined from "@ricons/material/es/DriveFolderUploadOutlined.js";
12
+ import PlusSharp from "@ricons/material/es/PlusSharp.js";
12
13
  import { SortableItem } from "react-easy-sort";
13
14
  import "./index.css";
14
15
  //#region packages/components/upload/upload.tsx
@@ -1,6 +1,6 @@
1
1
  import classNames from "classnames";
2
- import { InboxTwotone } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import InboxTwotone from "@ricons/material/es/InboxTwotone.js";
4
4
  import "./index.css";
5
5
  //#region packages/components/utils/empty/index.tsx
6
6
  function Empty(props) {
@@ -1,9 +1,9 @@
1
1
  import icon_default from "../../icon/index.js";
2
2
  import classNames from "classnames";
3
- import { uid } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
3
+ import { uid } from "radash";
4
4
  import { createElement } from "react";
5
- import { CloseRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
6
5
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
+ import CloseRound from "@ricons/material/es/CloseRound.js";
7
7
  import "./index.css";
8
8
  //#region packages/components/utils/helpericon/helpericon.tsx
9
9
  const Helpericon = (props) => {
@@ -5,10 +5,16 @@ import { exitFullScreen, fullScreen } from "../../js/utils.js";
5
5
  import text_default from "../text/index.js";
6
6
  import progress_default from "../progress/index.js";
7
7
  import classNames from "classnames";
8
- import { throttle } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
8
+ import { throttle } from "radash";
9
9
  import { useEffect, useImperativeHandle, useRef } from "react";
10
- import { FullscreenExitRound, FullscreenRound, PauseRound, PlayArrowRound, StopRound, VolumeDownRound, VolumeOffRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
11
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
+ import FullscreenExitRound from "@ricons/material/es/FullscreenExitRound.js";
12
+ import FullscreenRound from "@ricons/material/es/FullscreenRound.js";
13
+ import PauseRound from "@ricons/material/es/PauseRound.js";
14
+ import PlayArrowRound from "@ricons/material/es/PlayArrowRound.js";
15
+ import StopRound from "@ricons/material/es/StopRound.js";
16
+ import VolumeDownRound from "@ricons/material/es/VolumeDownRound.js";
17
+ import VolumeOffRound from "@ricons/material/es/VolumeOffRound.js";
12
18
  import "./index.css";
13
19
  //#region packages/components/video/video.tsx
14
20
  const Video = (props) => {
@@ -5,10 +5,17 @@ import { getFileType, getSuffixByUrl } from "../utils.js";
5
5
  import { TFileType } from "./type.js";
6
6
  import renderFile from "./renderFile.js";
7
7
  import classNames from "classnames";
8
- import { throttle } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/radash@12.1.1/node_modules/radash/dist/esm/index.mjs";
8
+ import { throttle } from "radash";
9
9
  import { useEffect, useMemo, useRef } from "react";
10
- import { AspectRatioRound, CloseRound, FileDownloadOutlined, KeyboardArrowLeftRound, KeyboardArrowRightRound, OpenInNewRound, RotateLeftRound, RotateRightRound } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
11
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+ import CloseRound from "@ricons/material/es/CloseRound.js";
12
+ import AspectRatioRound from "@ricons/material/es/AspectRatioRound.js";
13
+ import FileDownloadOutlined from "@ricons/material/es/FileDownloadOutlined.js";
14
+ import KeyboardArrowLeftRound from "@ricons/material/es/KeyboardArrowLeftRound.js";
15
+ import KeyboardArrowRightRound from "@ricons/material/es/KeyboardArrowRightRound.js";
16
+ import OpenInNewRound from "@ricons/material/es/OpenInNewRound.js";
17
+ import RotateLeftRound from "@ricons/material/es/RotateLeftRound.js";
18
+ import RotateRightRound from "@ricons/material/es/RotateRightRound.js";
12
19
  //#region packages/js/usePreview/content.tsx
13
20
  function Content(props) {
14
21
  const { items = [], initial = 0, renderFile: renderFile$1 = renderFile, onRotate, onChange, onClose, onZoom } = props;
@@ -1,8 +1,8 @@
1
1
  import icon_default from "../../components/icon/index.js";
2
2
  import video_default from "../../components/video/index.js";
3
3
  import { TFileType } from "./type.js";
4
- import { FeedOutlined } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/@ricons+material@0.12.0/node_modules/@ricons/material/es/index.js";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import FeedOutlined from "@ricons/material/es/FeedOutlined.js";
6
6
  //#region packages/js/usePreview/renderFile.tsx
7
7
  function renderFile(props) {
8
8
  const { name, suffix, type } = props;
@@ -1,5 +1,5 @@
1
1
  import "react";
2
- import { createRoot } from "/Users/iann/codes/ioca-react/node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js";
2
+ import { createRoot } from "react-dom/client";
3
3
  //#region packages/js/utils.ts
4
4
  function getPosition($source, $popup, options = {}) {
5
5
  const { refWindow, gap = 0, offset = 0, position = "top", align } = options;