react-public-components 1.2.0 → 1.2.2
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.
- package/README.md +56 -20
- package/dist/ActivityLog/index.cjs +9 -0
- package/dist/ActivityLog/index.cjs.map +1 -0
- package/dist/ActivityLog/index.css +117 -0
- package/dist/ActivityLog/index.css.map +1 -0
- package/dist/ActivityLog/index.d.ts +32 -0
- package/dist/ActivityLog/index.js +3 -0
- package/dist/ActivityLog/index.js.map +1 -0
- package/dist/AnnouncementBar/index.cjs +9 -0
- package/dist/AnnouncementBar/index.cjs.map +1 -0
- package/dist/AnnouncementBar/index.css +37 -0
- package/dist/AnnouncementBar/index.css.map +1 -0
- package/dist/AnnouncementBar/index.d.ts +18 -0
- package/dist/AnnouncementBar/index.js +3 -0
- package/dist/AnnouncementBar/index.js.map +1 -0
- package/dist/AudioPlayer/index.cjs +10 -0
- package/dist/AudioPlayer/index.cjs.map +1 -0
- package/dist/AudioPlayer/index.css +105 -0
- package/dist/AudioPlayer/index.css.map +1 -0
- package/dist/AudioPlayer/index.d.ts +18 -0
- package/dist/AudioPlayer/index.js +4 -0
- package/dist/AudioPlayer/index.js.map +1 -0
- package/dist/BadgeRibbon/index.cjs +9 -0
- package/dist/BadgeRibbon/index.cjs.map +1 -0
- package/dist/BadgeRibbon/index.css +48 -0
- package/dist/BadgeRibbon/index.css.map +1 -0
- package/dist/BadgeRibbon/index.d.ts +19 -0
- package/dist/BadgeRibbon/index.js +3 -0
- package/dist/BadgeRibbon/index.js.map +1 -0
- package/dist/BorderBeam/index.cjs +9 -0
- package/dist/BorderBeam/index.cjs.map +1 -0
- package/dist/BorderBeam/index.css +40 -0
- package/dist/BorderBeam/index.css.map +1 -0
- package/dist/BorderBeam/index.d.ts +24 -0
- package/dist/BorderBeam/index.js +3 -0
- package/dist/BorderBeam/index.js.map +1 -0
- package/dist/CascadeDrawer/index.cjs +9 -0
- package/dist/CascadeDrawer/index.cjs.map +1 -0
- package/dist/CascadeDrawer/index.css +73 -0
- package/dist/CascadeDrawer/index.css.map +1 -0
- package/dist/CascadeDrawer/index.d.ts +23 -0
- package/dist/CascadeDrawer/index.js +3 -0
- package/dist/CascadeDrawer/index.js.map +1 -0
- package/dist/CodeSnippet/index.cjs +9 -0
- package/dist/CodeSnippet/index.cjs.map +1 -0
- package/dist/CodeSnippet/index.css +63 -0
- package/dist/CodeSnippet/index.css.map +1 -0
- package/dist/CodeSnippet/index.d.ts +14 -0
- package/dist/CodeSnippet/index.js +3 -0
- package/dist/CodeSnippet/index.js.map +1 -0
- package/dist/CollapseBox/index.cjs +10 -0
- package/dist/CollapseBox/index.cjs.map +1 -0
- package/dist/CollapseBox/index.css +106 -0
- package/dist/CollapseBox/index.css.map +1 -0
- package/dist/CollapseBox/index.d.ts +17 -0
- package/dist/CollapseBox/index.js +4 -0
- package/dist/CollapseBox/index.js.map +1 -0
- package/dist/ColorPicker/Color.d.ts +48 -0
- package/dist/ColorPicker/index.cjs +23 -0
- package/dist/ColorPicker/index.cjs.map +1 -0
- package/dist/ColorPicker/index.css +422 -0
- package/dist/ColorPicker/index.css.map +1 -0
- package/dist/ColorPicker/index.d.ts +48 -0
- package/dist/ColorPicker/index.js +4 -0
- package/dist/ColorPicker/index.js.map +1 -0
- package/dist/ContextMenu/index.cjs +10 -0
- package/dist/ContextMenu/index.cjs.map +1 -0
- package/dist/ContextMenu/index.css +107 -0
- package/dist/ContextMenu/index.css.map +1 -0
- package/dist/ContextMenu/index.d.ts +42 -0
- package/dist/ContextMenu/index.js +4 -0
- package/dist/ContextMenu/index.js.map +1 -0
- package/dist/CopyButton/index.cjs +10 -0
- package/dist/CopyButton/index.cjs.map +1 -0
- package/dist/CopyButton/index.css +122 -0
- package/dist/CopyButton/index.css.map +1 -0
- package/dist/CopyButton/index.d.ts +36 -0
- package/dist/CopyButton/index.js +4 -0
- package/dist/CopyButton/index.js.map +1 -0
- package/dist/CountUp/index.cjs +9 -0
- package/dist/CountUp/index.cjs.map +1 -0
- package/dist/CountUp/index.css +23 -0
- package/dist/CountUp/index.css.map +1 -0
- package/dist/CountUp/index.d.ts +40 -0
- package/dist/CountUp/index.js +3 -0
- package/dist/CountUp/index.js.map +1 -0
- package/dist/CronPicker/index.cjs +11 -0
- package/dist/CronPicker/index.cjs.map +1 -0
- package/dist/CronPicker/index.css +215 -0
- package/dist/CronPicker/index.css.map +1 -0
- package/dist/CronPicker/index.d.ts +17 -0
- package/dist/CronPicker/index.js +5 -0
- package/dist/CronPicker/index.js.map +1 -0
- package/dist/DebounceSelect/index.cjs +10 -0
- package/dist/DebounceSelect/index.cjs.map +1 -0
- package/dist/DebounceSelect/index.css +156 -0
- package/dist/DebounceSelect/index.css.map +1 -0
- package/dist/DebounceSelect/index.d.ts +39 -0
- package/dist/DebounceSelect/index.js +4 -0
- package/dist/DebounceSelect/index.js.map +1 -0
- package/dist/DiffViewer/index.cjs +9 -0
- package/dist/DiffViewer/index.cjs.map +1 -0
- package/dist/DiffViewer/index.css +90 -0
- package/dist/DiffViewer/index.css.map +1 -0
- package/dist/DiffViewer/index.d.ts +21 -0
- package/dist/DiffViewer/index.js +3 -0
- package/dist/DiffViewer/index.js.map +1 -0
- package/dist/DisabledBox/index.cjs +10 -0
- package/dist/DisabledBox/index.cjs.map +1 -0
- package/dist/DisabledBox/index.css +35 -0
- package/dist/DisabledBox/index.css.map +1 -0
- package/dist/DisabledBox/index.d.ts +10 -0
- package/dist/DisabledBox/index.js +4 -0
- package/dist/DisabledBox/index.js.map +1 -0
- package/dist/DragSortList/index.cjs +9 -0
- package/dist/DragSortList/index.cjs.map +1 -0
- package/dist/DragSortList/index.css +44 -0
- package/dist/DragSortList/index.css.map +1 -0
- package/dist/DragSortList/index.d.ts +18 -0
- package/dist/DragSortList/index.js +3 -0
- package/dist/DragSortList/index.js.map +1 -0
- package/dist/DualRangeSlider/index.cjs +9 -0
- package/dist/DualRangeSlider/index.cjs.map +1 -0
- package/dist/DualRangeSlider/index.css +41 -0
- package/dist/DualRangeSlider/index.css.map +1 -0
- package/dist/DualRangeSlider/index.d.ts +22 -0
- package/dist/DualRangeSlider/index.js +3 -0
- package/dist/DualRangeSlider/index.js.map +1 -0
- package/dist/EnvBadge/index.cjs +9 -0
- package/dist/EnvBadge/index.cjs.map +1 -0
- package/dist/EnvBadge/index.css +123 -0
- package/dist/EnvBadge/index.css.map +1 -0
- package/dist/EnvBadge/index.d.ts +36 -0
- package/dist/EnvBadge/index.js +3 -0
- package/dist/EnvBadge/index.js.map +1 -0
- package/dist/FileDropZone/index.cjs +9 -0
- package/dist/FileDropZone/index.cjs.map +1 -0
- package/dist/FileDropZone/index.css +39 -0
- package/dist/FileDropZone/index.css.map +1 -0
- package/dist/FileDropZone/index.d.ts +20 -0
- package/dist/FileDropZone/index.js +3 -0
- package/dist/FileDropZone/index.js.map +1 -0
- package/dist/FilePreviewer/index.cjs +19 -0
- package/dist/FilePreviewer/index.cjs.map +1 -0
- package/dist/FilePreviewer/index.css +155 -0
- package/dist/FilePreviewer/index.css.map +1 -0
- package/dist/FilePreviewer/index.d.ts +38 -0
- package/dist/FilePreviewer/index.js +4 -0
- package/dist/FilePreviewer/index.js.map +1 -0
- package/dist/FilterChips/index.cjs +9 -0
- package/dist/FilterChips/index.cjs.map +1 -0
- package/dist/FilterChips/index.css +52 -0
- package/dist/FilterChips/index.css.map +1 -0
- package/dist/FilterChips/index.d.ts +23 -0
- package/dist/FilterChips/index.js +3 -0
- package/dist/FilterChips/index.js.map +1 -0
- package/dist/FlipCard/index.cjs +9 -0
- package/dist/FlipCard/index.cjs.map +1 -0
- package/dist/FlipCard/index.css +46 -0
- package/dist/FlipCard/index.css.map +1 -0
- package/dist/FlipCard/index.d.ts +28 -0
- package/dist/FlipCard/index.js +3 -0
- package/dist/FlipCard/index.js.map +1 -0
- package/dist/Fullscreen/index.cjs +10 -0
- package/dist/Fullscreen/index.cjs.map +1 -0
- package/dist/Fullscreen/index.css +112 -0
- package/dist/Fullscreen/index.css.map +1 -0
- package/dist/Fullscreen/index.d.ts +49 -0
- package/dist/Fullscreen/index.js +4 -0
- package/dist/Fullscreen/index.js.map +1 -0
- package/dist/GradientText/index.cjs +9 -0
- package/dist/GradientText/index.cjs.map +1 -0
- package/dist/GradientText/index.css +22 -0
- package/dist/GradientText/index.css.map +1 -0
- package/dist/GradientText/index.d.ts +18 -0
- package/dist/GradientText/index.js +3 -0
- package/dist/GradientText/index.js.map +1 -0
- package/dist/GuidedTour/index.cjs +10 -0
- package/dist/GuidedTour/index.cjs.map +1 -0
- package/dist/GuidedTour/index.css +105 -0
- package/dist/GuidedTour/index.css.map +1 -0
- package/dist/GuidedTour/index.d.ts +35 -0
- package/dist/GuidedTour/index.js +4 -0
- package/dist/GuidedTour/index.js.map +1 -0
- package/dist/HoverCard/index.cjs +9 -0
- package/dist/HoverCard/index.cjs.map +1 -0
- package/dist/HoverCard/index.css +31 -0
- package/dist/HoverCard/index.css.map +1 -0
- package/dist/HoverCard/index.d.ts +18 -0
- package/dist/HoverCard/index.js +3 -0
- package/dist/HoverCard/index.js.map +1 -0
- package/dist/ImageCropper/index.cjs +10 -0
- package/dist/ImageCropper/index.cjs.map +1 -0
- package/dist/ImageCropper/index.css +181 -0
- package/dist/ImageCropper/index.css.map +1 -0
- package/dist/ImageCropper/index.d.ts +45 -0
- package/dist/ImageCropper/index.js +4 -0
- package/dist/ImageCropper/index.js.map +1 -0
- package/dist/InfiniteScrollList/index.cjs +10 -0
- package/dist/InfiniteScrollList/index.cjs.map +1 -0
- package/dist/InfiniteScrollList/index.css +35 -0
- package/dist/InfiniteScrollList/index.css.map +1 -0
- package/dist/InfiniteScrollList/index.d.ts +28 -0
- package/dist/InfiniteScrollList/index.js +4 -0
- package/dist/InfiniteScrollList/index.js.map +1 -0
- package/dist/JsonDiffViewer/index.cjs +9 -0
- package/dist/JsonDiffViewer/index.cjs.map +1 -0
- package/dist/JsonDiffViewer/index.css +48 -0
- package/dist/JsonDiffViewer/index.css.map +1 -0
- package/dist/JsonDiffViewer/index.d.ts +14 -0
- package/dist/JsonDiffViewer/index.js +3 -0
- package/dist/JsonDiffViewer/index.js.map +1 -0
- package/dist/JsonEditor/index.cjs +11 -0
- package/dist/JsonEditor/index.cjs.map +1 -0
- package/dist/JsonEditor/index.css +230 -0
- package/dist/JsonEditor/index.css.map +1 -0
- package/dist/JsonEditor/index.d.ts +26 -0
- package/dist/JsonEditor/index.js +5 -0
- package/dist/JsonEditor/index.js.map +1 -0
- package/dist/JsonTree/index.cjs +9 -0
- package/dist/JsonTree/index.cjs.map +1 -0
- package/dist/JsonTree/index.css +58 -0
- package/dist/JsonTree/index.css.map +1 -0
- package/dist/JsonTree/index.d.ts +14 -0
- package/dist/JsonTree/index.js +3 -0
- package/dist/JsonTree/index.js.map +1 -0
- package/dist/KanbanBoard/index.cjs +9 -0
- package/dist/KanbanBoard/index.cjs.map +1 -0
- package/dist/KanbanBoard/index.css +80 -0
- package/dist/KanbanBoard/index.css.map +1 -0
- package/dist/KanbanBoard/index.d.ts +24 -0
- package/dist/KanbanBoard/index.js +3 -0
- package/dist/KanbanBoard/index.js.map +1 -0
- package/dist/KeyValEditor/index.cjs +10 -0
- package/dist/KeyValEditor/index.cjs.map +1 -0
- package/dist/KeyValEditor/index.css +72 -0
- package/dist/KeyValEditor/index.css.map +1 -0
- package/dist/KeyValEditor/index.d.ts +28 -0
- package/dist/KeyValEditor/index.js +4 -0
- package/dist/KeyValEditor/index.js.map +1 -0
- package/dist/Marquee/index.cjs +9 -0
- package/dist/Marquee/index.cjs.map +1 -0
- package/dist/Marquee/index.css +99 -0
- package/dist/Marquee/index.css.map +1 -0
- package/dist/Marquee/index.d.ts +27 -0
- package/dist/Marquee/index.js +3 -0
- package/dist/Marquee/index.js.map +1 -0
- package/dist/Masonry/index.cjs +9 -0
- package/dist/Masonry/index.cjs.map +1 -0
- package/dist/Masonry/index.css +15 -0
- package/dist/Masonry/index.css.map +1 -0
- package/dist/Masonry/index.d.ts +58 -0
- package/dist/Masonry/index.js +3 -0
- package/dist/Masonry/index.js.map +1 -0
- package/dist/MetricCard/index.cjs +10 -0
- package/dist/MetricCard/index.cjs.map +1 -0
- package/dist/MetricCard/index.css +105 -0
- package/dist/MetricCard/index.css.map +1 -0
- package/dist/MetricCard/index.d.ts +32 -0
- package/dist/MetricCard/index.js +4 -0
- package/dist/MetricCard/index.js.map +1 -0
- package/dist/MiniSparkline/index.cjs +9 -0
- package/dist/MiniSparkline/index.cjs.map +1 -0
- package/dist/MiniSparkline/index.css +11 -0
- package/dist/MiniSparkline/index.css.map +1 -0
- package/dist/MiniSparkline/index.d.ts +20 -0
- package/dist/MiniSparkline/index.js +3 -0
- package/dist/MiniSparkline/index.js.map +1 -0
- package/dist/NumberStepper/index.cjs +9 -0
- package/dist/NumberStepper/index.cjs.map +1 -0
- package/dist/NumberStepper/index.css +45 -0
- package/dist/NumberStepper/index.css.map +1 -0
- package/dist/NumberStepper/index.d.ts +24 -0
- package/dist/NumberStepper/index.js +3 -0
- package/dist/NumberStepper/index.js.map +1 -0
- package/dist/NumericRangeInput/index.cjs +9 -0
- package/dist/NumericRangeInput/index.cjs.map +1 -0
- package/dist/NumericRangeInput/index.css +87 -0
- package/dist/NumericRangeInput/index.css.map +1 -0
- package/dist/NumericRangeInput/index.d.ts +39 -0
- package/dist/NumericRangeInput/index.js +3 -0
- package/dist/NumericRangeInput/index.js.map +1 -0
- package/dist/PasswordStrength/index.cjs +19 -0
- package/dist/PasswordStrength/index.cjs.map +1 -0
- package/dist/PasswordStrength/index.css +66 -0
- package/dist/PasswordStrength/index.css.map +1 -0
- package/dist/PasswordStrength/index.d.ts +31 -0
- package/dist/PasswordStrength/index.js +4 -0
- package/dist/PasswordStrength/index.js.map +1 -0
- package/dist/PdfViewer/index.cjs +10 -0
- package/dist/PdfViewer/index.cjs.map +1 -0
- package/dist/PdfViewer/index.css +65 -0
- package/dist/PdfViewer/index.css.map +1 -0
- package/dist/PdfViewer/index.d.ts +20 -0
- package/dist/PdfViewer/index.js +4 -0
- package/dist/PdfViewer/index.js.map +1 -0
- package/dist/PhotoViewer/index.cjs +9 -0
- package/dist/PhotoViewer/index.cjs.map +1 -0
- package/dist/PhotoViewer/index.css +129 -0
- package/dist/PhotoViewer/index.css.map +1 -0
- package/dist/PhotoViewer/index.d.ts +23 -0
- package/dist/PhotoViewer/index.js +3 -0
- package/dist/PhotoViewer/index.js.map +1 -0
- package/dist/QrCodeCard/index.cjs +10 -0
- package/dist/QrCodeCard/index.cjs.map +1 -0
- package/dist/QrCodeCard/index.css +109 -0
- package/dist/QrCodeCard/index.css.map +1 -0
- package/dist/QrCodeCard/index.d.ts +27 -0
- package/dist/QrCodeCard/index.js +4 -0
- package/dist/QrCodeCard/index.js.map +1 -0
- package/dist/QuickDateRange/index.cjs +9 -0
- package/dist/QuickDateRange/index.cjs.map +1 -0
- package/dist/QuickDateRange/index.css +30 -0
- package/dist/QuickDateRange/index.css.map +1 -0
- package/dist/QuickDateRange/index.d.ts +22 -0
- package/dist/QuickDateRange/index.js +3 -0
- package/dist/QuickDateRange/index.js.map +1 -0
- package/dist/ScrollTracker/index.cjs +22 -0
- package/dist/ScrollTracker/index.cjs.map +1 -0
- package/dist/ScrollTracker/index.css +48 -0
- package/dist/ScrollTracker/index.css.map +1 -0
- package/dist/ScrollTracker/index.d.ts +37 -0
- package/dist/ScrollTracker/index.js +3 -0
- package/dist/ScrollTracker/index.js.map +1 -0
- package/dist/SegmentedProgress/index.cjs +9 -0
- package/dist/SegmentedProgress/index.cjs.map +1 -0
- package/dist/SegmentedProgress/index.css +42 -0
- package/dist/SegmentedProgress/index.css.map +1 -0
- package/dist/SegmentedProgress/index.d.ts +24 -0
- package/dist/SegmentedProgress/index.js +3 -0
- package/dist/SegmentedProgress/index.js.map +1 -0
- package/dist/SensitiveMask/index.cjs +20 -0
- package/dist/SensitiveMask/index.cjs.map +1 -0
- package/dist/SensitiveMask/index.css +149 -0
- package/dist/SensitiveMask/index.css.map +1 -0
- package/dist/SensitiveMask/index.d.ts +30 -0
- package/dist/SensitiveMask/index.js +5 -0
- package/dist/SensitiveMask/index.js.map +1 -0
- package/dist/ShimmerSkeleton/index.cjs +9 -0
- package/dist/ShimmerSkeleton/index.cjs.map +1 -0
- package/dist/ShimmerSkeleton/index.css +55 -0
- package/dist/ShimmerSkeleton/index.css.map +1 -0
- package/dist/ShimmerSkeleton/index.d.ts +19 -0
- package/dist/ShimmerSkeleton/index.js +3 -0
- package/dist/ShimmerSkeleton/index.js.map +1 -0
- package/dist/Splitter/index.cjs +10 -0
- package/dist/Splitter/index.cjs.map +1 -0
- package/dist/Splitter/index.d.ts +94 -0
- package/dist/Splitter/index.js +4 -0
- package/dist/Splitter/index.js.map +1 -0
- package/dist/SpotlightCard/index.cjs +9 -0
- package/dist/SpotlightCard/index.cjs.map +1 -0
- package/dist/SpotlightCard/index.css +34 -0
- package/dist/SpotlightCard/index.css.map +1 -0
- package/dist/SpotlightCard/index.d.ts +18 -0
- package/dist/SpotlightCard/index.js +3 -0
- package/dist/SpotlightCard/index.js.map +1 -0
- package/dist/StatusTimeline/index.cjs +9 -0
- package/dist/StatusTimeline/index.cjs.map +1 -0
- package/dist/StatusTimeline/index.css +111 -0
- package/dist/StatusTimeline/index.css.map +1 -0
- package/dist/StatusTimeline/index.d.ts +25 -0
- package/dist/StatusTimeline/index.js +3 -0
- package/dist/StatusTimeline/index.js.map +1 -0
- package/dist/TagInput/index.cjs +10 -0
- package/dist/TagInput/index.cjs.map +1 -0
- package/dist/TagInput/index.css +108 -0
- package/dist/TagInput/index.css.map +1 -0
- package/dist/TagInput/index.d.ts +32 -0
- package/dist/TagInput/index.js +4 -0
- package/dist/TagInput/index.js.map +1 -0
- package/dist/TextEllipsis/index.cjs +11 -0
- package/dist/TextEllipsis/index.cjs.map +1 -0
- package/dist/TextEllipsis/index.css +217 -0
- package/dist/TextEllipsis/index.css.map +1 -0
- package/dist/TextEllipsis/index.d.ts +34 -0
- package/dist/TextEllipsis/index.js +5 -0
- package/dist/TextEllipsis/index.js.map +1 -0
- package/dist/TiltCard/index.cjs +9 -0
- package/dist/TiltCard/index.cjs.map +1 -0
- package/dist/TiltCard/index.css +32 -0
- package/dist/TiltCard/index.css.map +1 -0
- package/dist/TiltCard/index.d.ts +20 -0
- package/dist/TiltCard/index.js +3 -0
- package/dist/TiltCard/index.js.map +1 -0
- package/dist/TreeFilterPanel/index.cjs +9 -0
- package/dist/TreeFilterPanel/index.cjs.map +1 -0
- package/dist/TreeFilterPanel/index.css +67 -0
- package/dist/TreeFilterPanel/index.css.map +1 -0
- package/dist/TreeFilterPanel/index.d.ts +27 -0
- package/dist/TreeFilterPanel/index.js +3 -0
- package/dist/TreeFilterPanel/index.js.map +1 -0
- package/dist/TreeTransfer/index.cjs +10 -0
- package/dist/TreeTransfer/index.cjs.map +1 -0
- package/dist/TreeTransfer/index.css +67 -0
- package/dist/TreeTransfer/index.css.map +1 -0
- package/dist/TreeTransfer/index.d.ts +27 -0
- package/dist/TreeTransfer/index.js +4 -0
- package/dist/TreeTransfer/index.js.map +1 -0
- package/dist/TrendIndicator/index.cjs +9 -0
- package/dist/TrendIndicator/index.cjs.map +1 -0
- package/dist/TrendIndicator/index.css +42 -0
- package/dist/TrendIndicator/index.css.map +1 -0
- package/dist/TrendIndicator/index.d.ts +22 -0
- package/dist/TrendIndicator/index.js +3 -0
- package/dist/TrendIndicator/index.js.map +1 -0
- package/dist/VideoPlayer/index.cjs +10 -0
- package/dist/VideoPlayer/index.cjs.map +1 -0
- package/dist/VideoPlayer/index.css +122 -0
- package/dist/VideoPlayer/index.css.map +1 -0
- package/dist/VideoPlayer/index.d.ts +24 -0
- package/dist/VideoPlayer/index.js +4 -0
- package/dist/VideoPlayer/index.js.map +1 -0
- package/dist/VirtualList/index.cjs +9 -0
- package/dist/VirtualList/index.cjs.map +1 -0
- package/dist/VirtualList/index.css +26 -0
- package/dist/VirtualList/index.css.map +1 -0
- package/dist/VirtualList/index.d.ts +22 -0
- package/dist/VirtualList/index.js +3 -0
- package/dist/VirtualList/index.js.map +1 -0
- package/dist/Watermark/index.cjs +9 -0
- package/dist/Watermark/index.cjs.map +1 -0
- package/dist/Watermark/index.css +24 -0
- package/dist/Watermark/index.css.map +1 -0
- package/dist/Watermark/index.d.ts +28 -0
- package/dist/Watermark/index.js +3 -0
- package/dist/Watermark/index.js.map +1 -0
- package/dist/chunk-24ND5WB7.cjs +69 -0
- package/dist/chunk-24ND5WB7.cjs.map +1 -0
- package/dist/chunk-2ARM7X7A.js +44 -0
- package/dist/chunk-2ARM7X7A.js.map +1 -0
- package/dist/chunk-2ORGQ2IY.js +153 -0
- package/dist/chunk-2ORGQ2IY.js.map +1 -0
- package/dist/chunk-3JJP4D5L.js +92 -0
- package/dist/chunk-3JJP4D5L.js.map +1 -0
- package/dist/chunk-4DUMEO5E.cjs +107 -0
- package/dist/chunk-4DUMEO5E.cjs.map +1 -0
- package/dist/chunk-4GQ3X7MG.cjs +241 -0
- package/dist/chunk-4GQ3X7MG.cjs.map +1 -0
- package/dist/chunk-4IBF4R3H.cjs +66 -0
- package/dist/chunk-4IBF4R3H.cjs.map +1 -0
- package/dist/chunk-4MRZVLM6.cjs +103 -0
- package/dist/chunk-4MRZVLM6.cjs.map +1 -0
- package/dist/chunk-4VGH44DT.js +69 -0
- package/dist/chunk-4VGH44DT.js.map +1 -0
- package/dist/chunk-4YPT2HUD.cjs +61 -0
- package/dist/chunk-4YPT2HUD.cjs.map +1 -0
- package/dist/chunk-5G3XVLJF.js +71 -0
- package/dist/chunk-5G3XVLJF.js.map +1 -0
- package/dist/chunk-5GCEQDBM.cjs +99 -0
- package/dist/chunk-5GCEQDBM.cjs.map +1 -0
- package/dist/chunk-5GOF5EZU.cjs +87 -0
- package/dist/chunk-5GOF5EZU.cjs.map +1 -0
- package/dist/chunk-5LA2NPLG.cjs +81 -0
- package/dist/chunk-5LA2NPLG.cjs.map +1 -0
- package/dist/chunk-5MQCVYVD.js +33 -0
- package/dist/chunk-5MQCVYVD.js.map +1 -0
- package/dist/chunk-5NI6HK5V.js +159 -0
- package/dist/chunk-5NI6HK5V.js.map +1 -0
- package/dist/chunk-5WHBZH44.cjs +127 -0
- package/dist/chunk-5WHBZH44.cjs.map +1 -0
- package/dist/chunk-5YQVSOHK.js +44 -0
- package/dist/chunk-5YQVSOHK.js.map +1 -0
- package/dist/chunk-62NPVN7T.js +229 -0
- package/dist/chunk-62NPVN7T.js.map +1 -0
- package/dist/chunk-6OKTK3AQ.cjs +108 -0
- package/dist/chunk-6OKTK3AQ.cjs.map +1 -0
- package/dist/chunk-6TKNFV4B.js +53 -0
- package/dist/chunk-6TKNFV4B.js.map +1 -0
- package/dist/chunk-7AKHSOSZ.js +134 -0
- package/dist/chunk-7AKHSOSZ.js.map +1 -0
- package/dist/chunk-7JLQOQJZ.cjs +106 -0
- package/dist/chunk-7JLQOQJZ.cjs.map +1 -0
- package/dist/chunk-7JRGQL63.js +59 -0
- package/dist/chunk-7JRGQL63.js.map +1 -0
- package/dist/chunk-A4LXKZQ5.js +80 -0
- package/dist/chunk-A4LXKZQ5.js.map +1 -0
- package/dist/chunk-AIIXJB34.js +125 -0
- package/dist/chunk-AIIXJB34.js.map +1 -0
- package/dist/chunk-AJIIY2QT.cjs +161 -0
- package/dist/chunk-AJIIY2QT.cjs.map +1 -0
- package/dist/chunk-AVSFSS7S.cjs +924 -0
- package/dist/chunk-AVSFSS7S.cjs.map +1 -0
- package/dist/chunk-AXHJC7FV.js +106 -0
- package/dist/chunk-AXHJC7FV.js.map +1 -0
- package/dist/chunk-B3HZIYQQ.cjs +46 -0
- package/dist/chunk-B3HZIYQQ.cjs.map +1 -0
- package/dist/chunk-B4VXFHER.js +63 -0
- package/dist/chunk-B4VXFHER.js.map +1 -0
- package/dist/chunk-BXFP7EAW.cjs +176 -0
- package/dist/chunk-BXFP7EAW.cjs.map +1 -0
- package/dist/chunk-C5B5Y4S2.cjs +292 -0
- package/dist/chunk-C5B5Y4S2.cjs.map +1 -0
- package/dist/chunk-D7ZE4NMX.cjs +30 -0
- package/dist/chunk-D7ZE4NMX.cjs.map +1 -0
- package/dist/chunk-DATPWEQK.cjs +73 -0
- package/dist/chunk-DATPWEQK.cjs.map +1 -0
- package/dist/chunk-DFHFXKR5.cjs +113 -0
- package/dist/chunk-DFHFXKR5.cjs.map +1 -0
- package/dist/chunk-DKTB6PKI.js +44 -0
- package/dist/chunk-DKTB6PKI.js.map +1 -0
- package/dist/chunk-DNRZCHZG.js +110 -0
- package/dist/chunk-DNRZCHZG.js.map +1 -0
- package/dist/chunk-EIFN6XMU.cjs +117 -0
- package/dist/chunk-EIFN6XMU.cjs.map +1 -0
- package/dist/chunk-EJNMH7ND.js +122 -0
- package/dist/chunk-EJNMH7ND.js.map +1 -0
- package/dist/chunk-ELI3LL3K.cjs +76 -0
- package/dist/chunk-ELI3LL3K.cjs.map +1 -0
- package/dist/chunk-EQ7S5SYM.js +67 -0
- package/dist/chunk-EQ7S5SYM.js.map +1 -0
- package/dist/chunk-ES3KKDLM.js +245 -0
- package/dist/chunk-ES3KKDLM.js.map +1 -0
- package/dist/chunk-F36V2QTN.js +28 -0
- package/dist/chunk-F36V2QTN.js.map +1 -0
- package/dist/chunk-F42Z33L7.cjs +103 -0
- package/dist/chunk-F42Z33L7.cjs.map +1 -0
- package/dist/chunk-F5X3V6A3.cjs +55 -0
- package/dist/chunk-F5X3V6A3.cjs.map +1 -0
- package/dist/chunk-FBOTWA6O.cjs +97 -0
- package/dist/chunk-FBOTWA6O.cjs.map +1 -0
- package/dist/chunk-FRGH3Q75.cjs +159 -0
- package/dist/chunk-FRGH3Q75.cjs.map +1 -0
- package/dist/chunk-FWRVCH7T.js +37 -0
- package/dist/chunk-FWRVCH7T.js.map +1 -0
- package/dist/chunk-FYFL4PFD.cjs +69 -0
- package/dist/chunk-FYFL4PFD.cjs.map +1 -0
- package/dist/chunk-G564WB32.cjs +57 -0
- package/dist/chunk-G564WB32.cjs.map +1 -0
- package/dist/chunk-GCMI5JGQ.cjs +126 -0
- package/dist/chunk-GCMI5JGQ.cjs.map +1 -0
- package/dist/chunk-GZCNFM6C.js +234 -0
- package/dist/chunk-GZCNFM6C.js.map +1 -0
- package/dist/chunk-H3AASAXK.cjs +82 -0
- package/dist/chunk-H3AASAXK.cjs.map +1 -0
- package/dist/chunk-H5VPBP7U.js +115 -0
- package/dist/chunk-H5VPBP7U.js.map +1 -0
- package/dist/chunk-HQ65GEM7.js +127 -0
- package/dist/chunk-HQ65GEM7.js.map +1 -0
- package/dist/chunk-HSYTBMLN.cjs +44 -0
- package/dist/chunk-HSYTBMLN.cjs.map +1 -0
- package/dist/chunk-HTA5EG6X.cjs +625 -0
- package/dist/chunk-HTA5EG6X.cjs.map +1 -0
- package/dist/chunk-I3HBI52O.js +67 -0
- package/dist/chunk-I3HBI52O.js.map +1 -0
- package/dist/chunk-IECISUOZ.js +920 -0
- package/dist/chunk-IECISUOZ.js.map +1 -0
- package/dist/chunk-IRU5E252.cjs +65 -0
- package/dist/chunk-IRU5E252.cjs.map +1 -0
- package/dist/chunk-IUR7SPDA.js +322 -0
- package/dist/chunk-IUR7SPDA.js.map +1 -0
- package/dist/chunk-J3IKUWXD.js +102 -0
- package/dist/chunk-J3IKUWXD.js.map +1 -0
- package/dist/chunk-JD4TEUIV.js +47 -0
- package/dist/chunk-JD4TEUIV.js.map +1 -0
- package/dist/chunk-K3JC52JH.cjs +49 -0
- package/dist/chunk-K3JC52JH.cjs.map +1 -0
- package/dist/chunk-K5FWY6HB.cjs +129 -0
- package/dist/chunk-K5FWY6HB.cjs.map +1 -0
- package/dist/chunk-KBBLTGIU.js +73 -0
- package/dist/chunk-KBBLTGIU.js.map +1 -0
- package/dist/chunk-KCXXUUWC.js +47 -0
- package/dist/chunk-KCXXUUWC.js.map +1 -0
- package/dist/chunk-KUW2ZR2A.cjs +183 -0
- package/dist/chunk-KUW2ZR2A.cjs.map +1 -0
- package/dist/chunk-L7ULSFW6.cjs +35 -0
- package/dist/chunk-L7ULSFW6.cjs.map +1 -0
- package/dist/chunk-LBEGRYTP.js +219 -0
- package/dist/chunk-LBEGRYTP.js.map +1 -0
- package/dist/chunk-N7IQ6LYD.cjs +71 -0
- package/dist/chunk-N7IQ6LYD.cjs.map +1 -0
- package/dist/chunk-NCNDJTOK.js +101 -0
- package/dist/chunk-NCNDJTOK.js.map +1 -0
- package/dist/chunk-NFC2C2TD.js +181 -0
- package/dist/chunk-NFC2C2TD.js.map +1 -0
- package/dist/chunk-NMYXVZQP.cjs +121 -0
- package/dist/chunk-NMYXVZQP.cjs.map +1 -0
- package/dist/chunk-NNS4YN3C.js +42 -0
- package/dist/chunk-NNS4YN3C.js.map +1 -0
- package/dist/chunk-ODV3XF5W.cjs +71 -0
- package/dist/chunk-ODV3XF5W.cjs.map +1 -0
- package/dist/chunk-OJEZ3TKT.js +119 -0
- package/dist/chunk-OJEZ3TKT.js.map +1 -0
- package/dist/chunk-OYRX4AY6.js +159 -0
- package/dist/chunk-OYRX4AY6.js.map +1 -0
- package/dist/chunk-PBPGBVQQ.cjs +98 -0
- package/dist/chunk-PBPGBVQQ.cjs.map +1 -0
- package/dist/chunk-PIIJVF5D.cjs +108 -0
- package/dist/chunk-PIIJVF5D.cjs.map +1 -0
- package/dist/chunk-PMNTOEXC.js +97 -0
- package/dist/chunk-PMNTOEXC.js.map +1 -0
- package/dist/chunk-PVKBGP6Q.js +174 -0
- package/dist/chunk-PVKBGP6Q.js.map +1 -0
- package/dist/chunk-Q4QF6UYX.cjs +520 -0
- package/dist/chunk-Q4QF6UYX.cjs.map +1 -0
- package/dist/chunk-QI7XQDFZ.cjs +221 -0
- package/dist/chunk-QI7XQDFZ.cjs.map +1 -0
- package/dist/chunk-QKSCFVN2.js +96 -0
- package/dist/chunk-QKSCFVN2.js.map +1 -0
- package/dist/chunk-R77VVMV5.cjs +328 -0
- package/dist/chunk-R77VVMV5.cjs.map +1 -0
- package/dist/chunk-R7CRWOHG.js +101 -0
- package/dist/chunk-R7CRWOHG.js.map +1 -0
- package/dist/chunk-RIR43PO3.js +69 -0
- package/dist/chunk-RIR43PO3.js.map +1 -0
- package/dist/chunk-RTAQSOVE.cjs +161 -0
- package/dist/chunk-RTAQSOVE.cjs.map +1 -0
- package/dist/chunk-RWZSTG6Q.cjs +131 -0
- package/dist/chunk-RWZSTG6Q.cjs.map +1 -0
- package/dist/chunk-SMVAHIBN.cjs +46 -0
- package/dist/chunk-SMVAHIBN.cjs.map +1 -0
- package/dist/chunk-TGSKTHTV.js +494 -0
- package/dist/chunk-TGSKTHTV.js.map +1 -0
- package/dist/chunk-TNKJCJ3U.cjs +94 -0
- package/dist/chunk-TNKJCJ3U.cjs.map +1 -0
- package/dist/chunk-U2TTRBES.js +286 -0
- package/dist/chunk-U2TTRBES.js.map +1 -0
- package/dist/chunk-UT5UXO44.js +125 -0
- package/dist/chunk-UT5UXO44.js.map +1 -0
- package/dist/chunk-VIJ3PXCW.cjs +104 -0
- package/dist/chunk-VIJ3PXCW.cjs.map +1 -0
- package/dist/chunk-VJM2XBHZ.cjs +31 -0
- package/dist/chunk-VJM2XBHZ.cjs.map +1 -0
- package/dist/chunk-VPHHGQWP.js +104 -0
- package/dist/chunk-VPHHGQWP.js.map +1 -0
- package/dist/chunk-VQKPZ4YE.cjs +251 -0
- package/dist/chunk-VQKPZ4YE.cjs.map +1 -0
- package/dist/chunk-VTANPKPT.js +71 -0
- package/dist/chunk-VTANPKPT.js.map +1 -0
- package/dist/chunk-W6BUNUQM.cjs +46 -0
- package/dist/chunk-W6BUNUQM.cjs.map +1 -0
- package/dist/chunk-WBN5SAY5.js +53 -0
- package/dist/chunk-WBN5SAY5.js.map +1 -0
- package/dist/chunk-WWL4VEPH.js +51 -0
- package/dist/chunk-WWL4VEPH.js.map +1 -0
- package/dist/chunk-WZ2GV4HA.js +49 -0
- package/dist/chunk-WZ2GV4HA.js.map +1 -0
- package/dist/chunk-X2F2DVMB.js +85 -0
- package/dist/chunk-X2F2DVMB.js.map +1 -0
- package/dist/chunk-X4MEHYWV.js +105 -0
- package/dist/chunk-X4MEHYWV.js.map +1 -0
- package/dist/chunk-X7EE5DXL.js +64 -0
- package/dist/chunk-X7EE5DXL.js.map +1 -0
- package/dist/chunk-XB3BT6BU.js +619 -0
- package/dist/chunk-XB3BT6BU.js.map +1 -0
- package/dist/chunk-XMBTKO5I.cjs +136 -0
- package/dist/chunk-XMBTKO5I.cjs.map +1 -0
- package/dist/chunk-XO6PBAAM.cjs +73 -0
- package/dist/chunk-XO6PBAAM.cjs.map +1 -0
- package/dist/chunk-XWHITF5V.cjs +31 -0
- package/dist/chunk-XWHITF5V.cjs.map +1 -0
- package/dist/chunk-XYJMP23P.cjs +159 -0
- package/dist/chunk-XYJMP23P.cjs.map +1 -0
- package/dist/chunk-Y7A3WQQN.js +79 -0
- package/dist/chunk-Y7A3WQQN.js.map +1 -0
- package/dist/chunk-YJESCN4Y.cjs +39 -0
- package/dist/chunk-YJESCN4Y.cjs.map +1 -0
- package/dist/chunk-YPVRTMX6.js +91 -0
- package/dist/chunk-YPVRTMX6.js.map +1 -0
- package/dist/chunk-YXTLWTY4.js +29 -0
- package/dist/chunk-YXTLWTY4.js.map +1 -0
- package/dist/chunk-Z5LFRNNJ.js +157 -0
- package/dist/chunk-Z5LFRNNJ.js.map +1 -0
- package/dist/chunk-ZAHKA2V2.js +106 -0
- package/dist/chunk-ZAHKA2V2.js.map +1 -0
- package/dist/chunk-ZFBLVX7E.cjs +51 -0
- package/dist/chunk-ZFBLVX7E.cjs.map +1 -0
- package/dist/chunk-ZGWBLJ6U.cjs +55 -0
- package/dist/chunk-ZGWBLJ6U.cjs.map +1 -0
- package/dist/chunk-ZLHNRKOQ.js +29 -0
- package/dist/chunk-ZLHNRKOQ.js.map +1 -0
- package/dist/chunk-ZQBEQK2I.cjs +231 -0
- package/dist/chunk-ZQBEQK2I.cjs.map +1 -0
- package/dist/chunk-ZSK74QFN.cjs +49 -0
- package/dist/chunk-ZSK74QFN.cjs.map +1 -0
- package/dist/index.cjs +334 -8233
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +36 -187
- package/dist/index.css.map +1 -1
- package/dist/index.js +63 -8155
- package/dist/index.js.map +1 -1
- package/dist/src/icons.d.ts +70 -0
- package/dist/src/index.d.ts +124 -0
- package/dist/tsup.config.d.ts +2 -0
- package/dist/vite.config.d.ts +2 -0
- package/package.json +17 -3
- package/dist/index.d.cts +0 -1704
- package/dist/index.d.ts +0 -1704
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../Marquee/index.tsx"],"names":[],"mappings":"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","file":"chunk-VTANPKPT.js","sourcesContent":["import React, { useRef, useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type MarqueeDirection = 'left' | 'right' | 'up' | 'down';\n\nexport interface MarqueeProps {\n\t/** 滚动子内容 */\n\tchildren: ReactNode;\n\t/** 滚动方向:'left' | 'right' | 'up' | 'down',默认为 'left' */\n\tdirection?: MarqueeDirection;\n\t/** 滚动速度(像素/秒),默认为 50 */\n\tspeed?: number;\n\t/** 鼠标悬浮时是否暂停动画,默认为 true */\n\tpauseOnHover?: boolean;\n\t/** 是否开启两侧边缘羽化渐变遮罩,默认为 false */\n\tgradient?: boolean;\n\t/** 边缘渐变遮罩的颜色(通常与背景色一致),默认为 '#ffffff' */\n\tgradientColor?: string;\n\t/** 子项间距(像素),默认为 24 */\n\tgap?: number;\n\t/** 是否持续保持播放 */\n\tplay?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst Marquee: React.FC<MarqueeProps> = ({\n\tchildren,\n\tdirection = 'left',\n\tspeed = 50,\n\tpauseOnHover = true,\n\tgradient = false,\n\tgradientColor = '#ffffff',\n\tgap = 24,\n\tplay = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst [duration, setDuration] = useState<number>(20);\n\n\tconst isVertical = direction === 'up' || direction === 'down';\n\n\t// 根据内容尺寸动态计算保持固定速度所需的 CSS 动画时长\n\tuseEffect(() => {\n\t\tconst calculateDuration = () => {\n\t\t\tif (!contentRef.current) return;\n\t\t\tconst size = isVertical\n\t\t\t\t? contentRef.current.clientHeight\n\t\t\t\t: contentRef.current.clientWidth;\n\n\t\t\tif (size > 0 && speed > 0) {\n\t\t\t\tsetDuration(size / speed);\n\t\t\t}\n\t\t};\n\n\t\tcalculateDuration();\n\t\twindow.addEventListener('resize', calculateDuration);\n\t\treturn () => window.removeEventListener('resize', calculateDuration);\n\t}, [children, speed, isVertical, gap]);\n\n\tlet animName = 'rpcMarqueeLeft';\n\tif (direction === 'right') animName = 'rpcMarqueeRight';\n\telse if (direction === 'up') animName = 'rpcMarqueeUp';\n\telse if (direction === 'down') animName = 'rpcMarqueeDown';\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_marquee ${isVertical ? 'rpc_marquee_vertical' : ''} ${\n\t\t\t\tpauseOnHover ? 'rpc_marquee_pause_on_hover' : ''\n\t\t\t} ${gradient ? 'rpc_marquee_gradient' : ''} ${className}`}\n\t\t\tstyle={{\n\t\t\t\t['--rpc-marquee-gap' as any]: `${gap}px`,\n\t\t\t\t['--rpc-marquee-gradient-color' as any]: gradientColor,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_marquee_container\"\n\t\t\t\tstyle={{\n\t\t\t\t\tanimationName: animName,\n\t\t\t\t\tanimationDuration: `${duration}s`,\n\t\t\t\t\tanimationTimingFunction: 'linear',\n\t\t\t\t\tanimationIterationCount: 'infinite',\n\t\t\t\t\tanimationPlayState: play ? 'running' : 'paused',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div ref={contentRef} className=\"rpc_marquee_content\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t{/* 拼接副本以实现平滑无缝回环 */}\n\t\t\t\t<div className=\"rpc_marquee_content\" aria-hidden=\"true\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Marquee;\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
// ActivityLog/index.tsx
|
|
7
|
+
var ActivityLogItem = ({ item }) => {
|
|
8
|
+
const [expanded, setExpanded] = react.useState(Boolean(item.defaultExpanded));
|
|
9
|
+
const avatarInitial = item.operator ? item.operator.charAt(0).toUpperCase() : "U";
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_activity_log_item", children: [
|
|
11
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_activity_log_avatar_col", children: [
|
|
12
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_activity_log_avatar", children: item.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.avatar, alt: item.operator }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: avatarInitial }) }),
|
|
13
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_activity_log_line" })
|
|
14
|
+
] }),
|
|
15
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_activity_log_content", children: [
|
|
16
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_activity_log_header", children: [
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_activity_log_operator_row", children: [
|
|
18
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_activity_log_operator", children: item.operator }),
|
|
19
|
+
item.role && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_activity_log_role", children: item.role }),
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_activity_log_action", children: item.action }),
|
|
21
|
+
item.target && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_activity_log_target", children: item.target })
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_activity_log_time", children: item.time })
|
|
24
|
+
] }),
|
|
25
|
+
item.detail && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
"span",
|
|
28
|
+
{
|
|
29
|
+
className: "rpc_activity_log_toggle_btn",
|
|
30
|
+
onClick: () => setExpanded(!expanded),
|
|
31
|
+
children: expanded ? "\u6536\u8D77\u8BE6\u60C5 \u25B2" : "\u67E5\u770B\u53D8\u52A8\u8BE6\u60C5 \u25BC"
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
expanded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_activity_log_detail", children: item.detail })
|
|
35
|
+
] })
|
|
36
|
+
] })
|
|
37
|
+
] });
|
|
38
|
+
};
|
|
39
|
+
var ActivityLog = ({ items = [], className = "", style }) => {
|
|
40
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `rpc_activity_log ${className}`, style, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ActivityLogItem, { item }, item.id)) });
|
|
41
|
+
};
|
|
42
|
+
var ActivityLog_default = ActivityLog;
|
|
43
|
+
|
|
44
|
+
exports.ActivityLog_default = ActivityLog_default;
|
|
45
|
+
//# sourceMappingURL=chunk-W6BUNUQM.cjs.map
|
|
46
|
+
//# sourceMappingURL=chunk-W6BUNUQM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../ActivityLog/index.tsx"],"names":["useState","jsxs","jsx","Fragment"],"mappings":";;;;;;AAiCA,IAAM,eAAA,GAAoD,CAAC,EAAE,IAAA,EAAK,KAAM;AACvE,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAIA,eAAkB,OAAA,CAAQ,IAAA,CAAK,eAAe,CAAC,CAAA;AAE/E,EAAA,MAAM,aAAA,GAAgB,KAAK,QAAA,GAAW,IAAA,CAAK,SAAS,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,GAAA;AAE9E,EAAA,uBACCC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAEd,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACd,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAC,SAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA,IAAA,CAAK,MAAA,kCACJ,KAAA,EAAA,EAAI,GAAA,EAAK,IAAA,CAAK,MAAA,EAAQ,KAAK,IAAA,CAAK,QAAA,EAAU,oBAE3CA,cAAA,CAAC,MAAA,EAAA,EAAM,yBAAc,CAAA,EAEvB,CAAA;AAAA,sBACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAwB;AAAA,KAAA,EACxC,CAAA;AAAA,oBAGAD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+BAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,IAAA,CAAK,QAAA,EAAS,CAAA;AAAA,UAC1D,KAAK,IAAA,oBAAQA,cAAA,CAAC,UAAK,SAAA,EAAU,uBAAA,EAAyB,eAAK,IAAA,EAAK,CAAA;AAAA,0BACjEA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA2B,eAAK,MAAA,EAAO,CAAA;AAAA,UACtD,KAAK,MAAA,oBAAUA,cAAA,CAAC,UAAK,SAAA,EAAU,yBAAA,EAA2B,eAAK,MAAA,EAAO;AAAA,SAAA,EACxE,CAAA;AAAA,wBAEAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,eAAK,IAAA,EAAK;AAAA,OAAA,EACpD,CAAA;AAAA,MAEC,IAAA,CAAK,0BACLD,eAAA,CAAAE,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,6BAAA;AAAA,YACV,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,YAEnC,qBAAW,iCAAA,GAAW;AAAA;AAAA,SACxB;AAAA,QAEC,4BAAYA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA2B,eAAK,MAAA,EAAO;AAAA,OAAA,EACpE;AAAA,KAAA,EAEF;AAAA,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAM,WAAA,GAA0C,CAAC,EAAE,KAAA,GAAQ,EAAC,EAAG,SAAA,GAAY,EAAA,EAAI,KAAA,EAAM,KAAM;AAC1F,EAAA,sCACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,iBAAA,EAAoB,SAAS,IAAI,KAAA,EAC/C,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,yBACXA,cAAA,CAAC,eAAA,EAAA,EAA8B,QAAT,IAAA,CAAK,EAAgB,CAC3C,CAAA,EACF,CAAA;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-W6BUNUQM.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface ActivityItem {\n\t/** 唯一标识 */\n\tid: string | number;\n\t/** 操作人昵称 */\n\toperator: string;\n\t/** 操作人头像链接或文字 */\n\tavatar?: string;\n\t/** 操作人角色(如 '管理员' / '运维工程师') */\n\trole?: string;\n\t/** 动作类型描述(如 '发布了版本' / '修改了配置') */\n\taction: ReactNode;\n\t/** 操作目标(如 'v2.1.0' / 'RDS-MySQL-Master') */\n\ttarget?: ReactNode;\n\t/** 发生时间戳或文本(如 '3分钟前' / '2026-08-15 14:20') */\n\ttime: string;\n\t/** 变动详情内容(支持折叠展开) */\n\tdetail?: ReactNode;\n\t/** 是否默认展开详情,默认为 false */\n\tdefaultExpanded?: boolean;\n}\n\nexport interface ActivityLogProps {\n\t/** 日志动态列表 */\n\titems: ActivityItem[];\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst ActivityLogItem: React.FC<{ item: ActivityItem }> = ({ item }) => {\n\tconst [expanded, setExpanded] = useState<boolean>(Boolean(item.defaultExpanded));\n\n\tconst avatarInitial = item.operator ? item.operator.charAt(0).toUpperCase() : 'U';\n\n\treturn (\n\t\t<div className=\"rpc_activity_log_item\">\n\t\t\t{/* 头像与连接轴线 */}\n\t\t\t<div className=\"rpc_activity_log_avatar_col\">\n\t\t\t\t<div className=\"rpc_activity_log_avatar\">\n\t\t\t\t\t{item.avatar ? (\n\t\t\t\t\t\t<img src={item.avatar} alt={item.operator} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span>{avatarInitial}</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rpc_activity_log_line\" />\n\t\t\t</div>\n\n\t\t\t{/* 内容主体 */}\n\t\t\t<div className=\"rpc_activity_log_content\">\n\t\t\t\t<div className=\"rpc_activity_log_header\">\n\t\t\t\t\t<div className=\"rpc_activity_log_operator_row\">\n\t\t\t\t\t\t<span className=\"rpc_activity_log_operator\">{item.operator}</span>\n\t\t\t\t\t\t{item.role && <span className=\"rpc_activity_log_role\">{item.role}</span>}\n\t\t\t\t\t\t<span className=\"rpc_activity_log_action\">{item.action}</span>\n\t\t\t\t\t\t{item.target && <span className=\"rpc_activity_log_target\">{item.target}</span>}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<span className=\"rpc_activity_log_time\">{item.time}</span>\n\t\t\t\t</div>\n\n\t\t\t\t{item.detail && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"rpc_activity_log_toggle_btn\"\n\t\t\t\t\t\t\tonClick={() => setExpanded(!expanded)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{expanded ? '收起详情 ▲' : '查看变动详情 ▼'}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t{expanded && <div className=\"rpc_activity_log_detail\">{item.detail}</div>}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst ActivityLog: React.FC<ActivityLogProps> = ({ items = [], className = '', style }) => {\n\treturn (\n\t\t<div className={`rpc_activity_log ${className}`} style={style}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<ActivityLogItem key={item.id} item={item} />\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default ActivityLog;\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// SegmentedProgress/index.tsx
|
|
5
|
+
var SegmentedProgress = ({
|
|
6
|
+
segments = [],
|
|
7
|
+
total: customTotal,
|
|
8
|
+
height = 10,
|
|
9
|
+
showLegend = true,
|
|
10
|
+
className = "",
|
|
11
|
+
style
|
|
12
|
+
}) => {
|
|
13
|
+
const sumValue = useMemo(() => {
|
|
14
|
+
return segments.reduce((acc, cur) => acc + (cur.value || 0), 0);
|
|
15
|
+
}, [segments]);
|
|
16
|
+
const baseTotal = customTotal !== void 0 ? customTotal : sumValue || 1;
|
|
17
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_seg_progress ${className}`, style, children: [
|
|
18
|
+
/* @__PURE__ */ jsx("div", { className: "rpc_seg_progress_bar", style: { height }, children: segments.map((seg, idx) => {
|
|
19
|
+
const pct = (seg.value / baseTotal * 100).toFixed(1);
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: "rpc_seg_progress_segment",
|
|
24
|
+
style: {
|
|
25
|
+
width: `${pct}%`,
|
|
26
|
+
backgroundColor: seg.color
|
|
27
|
+
},
|
|
28
|
+
title: `${seg.label}: ${seg.value}${seg.suffix || ""} (${pct}%)`
|
|
29
|
+
},
|
|
30
|
+
idx
|
|
31
|
+
);
|
|
32
|
+
}) }),
|
|
33
|
+
showLegend && /* @__PURE__ */ jsx("div", { className: "rpc_seg_progress_legend", children: segments.map((seg, idx) => {
|
|
34
|
+
const pct = (seg.value / baseTotal * 100).toFixed(1);
|
|
35
|
+
return /* @__PURE__ */ jsxs("div", { className: "rpc_seg_progress_legend_item", children: [
|
|
36
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_seg_progress_dot", style: { backgroundColor: seg.color } }),
|
|
37
|
+
/* @__PURE__ */ jsx("span", { children: seg.label }),
|
|
38
|
+
/* @__PURE__ */ jsxs("b", { style: { color: "#262626" }, children: [
|
|
39
|
+
seg.value,
|
|
40
|
+
seg.suffix || "",
|
|
41
|
+
" (",
|
|
42
|
+
pct,
|
|
43
|
+
"%)"
|
|
44
|
+
] })
|
|
45
|
+
] }, idx);
|
|
46
|
+
}) })
|
|
47
|
+
] });
|
|
48
|
+
};
|
|
49
|
+
var SegmentedProgress_default = SegmentedProgress;
|
|
50
|
+
|
|
51
|
+
export { SegmentedProgress_default };
|
|
52
|
+
//# sourceMappingURL=chunk-WBN5SAY5.js.map
|
|
53
|
+
//# sourceMappingURL=chunk-WBN5SAY5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../SegmentedProgress/index.tsx"],"names":[],"mappings":";;;;AAyBA,IAAM,oBAAsD,CAAC;AAAA,EAC5D,WAAW,EAAC;AAAA,EACZ,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,GAAS,EAAA;AAAA,EACT,UAAA,GAAa,IAAA;AAAA,EACb,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC9B,IAAA,OAAO,QAAA,CAAS,OAAO,CAAC,GAAA,EAAK,QAAQ,GAAA,IAAO,GAAA,CAAI,KAAA,IAAS,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,EAC/D,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,SAAA,GAAY,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAe,QAAA,IAAY,CAAA;AAEzE,EAAA,4BACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,iBAAA,EAAoB,SAAS,IAAI,KAAA,EAEhD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,MAAA,EAAO,EACpD,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,YACb,iBAAiB,GAAA,CAAI;AAAA,WACtB;AAAA,UACA,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,KAAK,CAAA,EAAA,EAAK,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA;AAAA,SAAA;AAAA,QANvD;AAAA,OAON;AAAA,IAEF,CAAC,CAAA,EACF,CAAA;AAAA,IAGC,UAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,8BAAA,EACxB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,eAAA,EAAiB,GAAA,CAAI,OAAM,EAAG,CAAA;AAAA,wBAC9E,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,6BAChB,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC3B,QAAA,EAAA;AAAA,UAAA,GAAA,CAAI,KAAA;AAAA,UAAO,IAAI,MAAA,IAAU,EAAA;AAAA,UAAG,IAAA;AAAA,UAAG,GAAA;AAAA,UAAI;AAAA,SAAA,EACrC;AAAA,OAAA,EAAA,EALS,GAMV,CAAA;AAAA,IAEF,CAAC,CAAA,EACF;AAAA,GAAA,EAEF,CAAA;AAEF,CAAA;AAEA,IAAO,yBAAA,GAAQ","file":"chunk-WBN5SAY5.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface ProgressSegment {\n\tlabel: string;\n\tvalue: number;\n\tcolor: string;\n\tsuffix?: string;\n}\n\nexport interface SegmentedProgressProps {\n\t/** 分段数据列表 */\n\tsegments: ProgressSegment[];\n\t/** 总量基准(不传则自动对各分段 value 求和) */\n\ttotal?: number;\n\t/** 进度条高度(像素),默认为 10 */\n\theight?: number;\n\t/** 是否显示底部图例 Legend,默认为 true */\n\tshowLegend?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst SegmentedProgress: React.FC<SegmentedProgressProps> = ({\n\tsegments = [],\n\ttotal: customTotal,\n\theight = 10,\n\tshowLegend = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst sumValue = useMemo(() => {\n\t\treturn segments.reduce((acc, cur) => acc + (cur.value || 0), 0);\n\t}, [segments]);\n\n\tconst baseTotal = customTotal !== undefined ? customTotal : (sumValue || 1);\n\n\treturn (\n\t\t<div className={`rpc_seg_progress ${className}`} style={style}>\n\t\t\t{/* 分段进度条主体 */}\n\t\t\t<div className=\"rpc_seg_progress_bar\" style={{ height }}>\n\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\tclassName=\"rpc_seg_progress_segment\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: `${pct}%`,\n\t\t\t\t\t\t\t\tbackgroundColor: seg.color,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttitle={`${seg.label}: ${seg.value}${seg.suffix || ''} (${pct}%)`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{/* 底部图例 */}\n\t\t\t{showLegend && (\n\t\t\t\t<div className=\"rpc_seg_progress_legend\">\n\t\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={idx} className=\"rpc_seg_progress_legend_item\">\n\t\t\t\t\t\t\t\t<span className=\"rpc_seg_progress_dot\" style={{ backgroundColor: seg.color }} />\n\t\t\t\t\t\t\t\t<span>{seg.label}</span>\n\t\t\t\t\t\t\t\t<b style={{ color: '#262626' }}>\n\t\t\t\t\t\t\t\t\t{seg.value}{seg.suffix || ''} ({pct}%)\n\t\t\t\t\t\t\t\t</b>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default SegmentedProgress;\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// CascadeDrawer/index.tsx
|
|
5
|
+
var CascadeDrawer = ({
|
|
6
|
+
open,
|
|
7
|
+
onClose,
|
|
8
|
+
rootLevel,
|
|
9
|
+
width = 440,
|
|
10
|
+
className = "",
|
|
11
|
+
style
|
|
12
|
+
}) => {
|
|
13
|
+
const [stack, setStack] = useState([rootLevel]);
|
|
14
|
+
if (!open) return null;
|
|
15
|
+
const currentLevel = stack[stack.length - 1] || rootLevel;
|
|
16
|
+
const pushLevel = (level) => {
|
|
17
|
+
setStack((prev) => [...prev, level]);
|
|
18
|
+
};
|
|
19
|
+
const popTo = (index) => {
|
|
20
|
+
setStack((prev) => prev.slice(0, index + 1));
|
|
21
|
+
};
|
|
22
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_cascade_drawer ${className}`, style, children: [
|
|
23
|
+
/* @__PURE__ */ jsx("div", { className: "rpc_cascade_drawer_mask", onClick: onClose }),
|
|
24
|
+
/* @__PURE__ */ jsxs("div", { className: "rpc_cascade_drawer_content", style: { width }, children: [
|
|
25
|
+
/* @__PURE__ */ jsxs("div", { className: "rpc_cascade_drawer_header", children: [
|
|
26
|
+
/* @__PURE__ */ jsx("div", { className: "rpc_cascade_drawer_breadcrumbs", children: stack.map((item, idx) => {
|
|
27
|
+
const isLast = idx === stack.length - 1;
|
|
28
|
+
return /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
29
|
+
idx > 0 && /* @__PURE__ */ jsx("span", { style: { color: "#bfbfbf" }, children: "/" }),
|
|
30
|
+
isLast ? /* @__PURE__ */ jsx("span", { children: item.title }) : /* @__PURE__ */ jsx(
|
|
31
|
+
"button",
|
|
32
|
+
{
|
|
33
|
+
type: "button",
|
|
34
|
+
className: "rpc_cascade_drawer_crumb_btn",
|
|
35
|
+
onClick: () => popTo(idx),
|
|
36
|
+
children: item.title
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
] }, item.id);
|
|
40
|
+
}) }),
|
|
41
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "rpc_cascade_drawer_close_btn", onClick: onClose, children: "\u2715" })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ jsx("div", { className: "rpc_cascade_drawer_body", children: typeof currentLevel.content === "function" ? currentLevel.content(pushLevel) : currentLevel.content })
|
|
44
|
+
] })
|
|
45
|
+
] });
|
|
46
|
+
};
|
|
47
|
+
var CascadeDrawer_default = CascadeDrawer;
|
|
48
|
+
|
|
49
|
+
export { CascadeDrawer_default };
|
|
50
|
+
//# sourceMappingURL=chunk-WWL4VEPH.js.map
|
|
51
|
+
//# sourceMappingURL=chunk-WWL4VEPH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../CascadeDrawer/index.tsx"],"names":[],"mappings":";;;;AAwBA,IAAM,gBAA8C,CAAC;AAAA,EACpD,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,GAAA;AAAA,EACR,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,QAAA,CAAyB,CAAC,SAAS,CAAC,CAAA;AAE9D,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,SAAA;AAEhD,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAwB;AAC1C,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAkB;AAChC,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS,IAAA,CAAK,MAAM,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,EAC5C,CAAA;AAEA,EAAA,4BACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,mBAAA,EAAsB,SAAS,IAAI,KAAA,EAClD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA0B,OAAA,EAAS,OAAA,EAAS,CAAA;AAAA,yBAE1D,KAAA,EAAA,EAAI,SAAA,EAAU,8BAA6B,KAAA,EAAO,EAAE,OAAM,EAE1D,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,gCAAA,EACb,gBAAM,GAAA,CAAI,CAAC,MAAM,GAAA,KAAQ;AACzB,UAAA,MAAM,MAAA,GAAS,GAAA,KAAQ,KAAA,CAAM,MAAA,GAAS,CAAA;AACtC,UAAA,uBACC,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,YAAA,GAAA,GAAM,CAAA,wBAAM,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,IAAa,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,YAC/C,MAAA,mBACA,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,OAAM,CAAA,mBAElB,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACA,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,8BAAA;AAAA,gBACV,OAAA,EAAS,MAAM,KAAA,CAAM,GAAG,CAAA;AAAA,gBAEvB,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACP,WAAA,EAAA,EAXmB,KAAK,EAa1B,CAAA;AAAA,QAEF,CAAC,CAAA,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAU,8BAAA,EAA+B,OAAA,EAAS,SAAS,QAAA,EAAA,QAAA,EAEjF;AAAA,OAAA,EACD,CAAA;AAAA,sBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA,OAAO,YAAA,CAAa,OAAA,KAAY,UAAA,GAC7B,YAAA,CAAa,OAAA,CAAgB,SAAS,CAAA,GACvC,aAAa,OAAA,EACjB;AAAA,KAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAO,qBAAA,GAAQ","file":"chunk-WWL4VEPH.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface CascadeLevel {\n\tid: string;\n\ttitle: string;\n\tcontent: ReactNode;\n}\n\nexport interface CascadeDrawerProps {\n\t/** 是否打开抽屉 */\n\topen: boolean;\n\t/** 关闭抽屉回调 */\n\tonClose: () => void;\n\t/** 初始根层级 */\n\trootLevel: CascadeLevel;\n\t/** 抽屉宽度,默认为 440 */\n\twidth?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst CascadeDrawer: React.FC<CascadeDrawerProps> = ({\n\topen,\n\tonClose,\n\trootLevel,\n\twidth = 440,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [stack, setStack] = useState<CascadeLevel[]>([rootLevel]);\n\n\tif (!open) return null;\n\n\tconst currentLevel = stack[stack.length - 1] || rootLevel;\n\n\tconst pushLevel = (level: CascadeLevel) => {\n\t\tsetStack((prev) => [...prev, level]);\n\t};\n\n\tconst popTo = (index: number) => {\n\t\tsetStack((prev) => prev.slice(0, index + 1));\n\t};\n\n\treturn (\n\t\t<div className={`rpc_cascade_drawer ${className}`} style={style}>\n\t\t\t<div className=\"rpc_cascade_drawer_mask\" onClick={onClose} />\n\n\t\t\t<div className=\"rpc_cascade_drawer_content\" style={{ width }}>\n\t\t\t\t{/* 顶部面包屑导航 */}\n\t\t\t\t<div className=\"rpc_cascade_drawer_header\">\n\t\t\t\t\t<div className=\"rpc_cascade_drawer_breadcrumbs\">\n\t\t\t\t\t\t{stack.map((item, idx) => {\n\t\t\t\t\t\t\tconst isLast = idx === stack.length - 1;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<React.Fragment key={item.id}>\n\t\t\t\t\t\t\t\t\t{idx > 0 && <span style={{ color: '#bfbfbf' }}>/</span>}\n\t\t\t\t\t\t\t\t\t{isLast ? (\n\t\t\t\t\t\t\t\t\t\t<span>{item.title}</span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_cascade_drawer_crumb_btn\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => popTo(idx)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_cascade_drawer_close_btn\" onClick={onClose}>\n\t\t\t\t\t\t✕\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t{/* 当前层级内容 */}\n\t\t\t\t<div className=\"rpc_cascade_drawer_body\">\n\t\t\t\t\t{typeof currentLevel.content === 'function'\n\t\t\t\t\t\t? (currentLevel.content as any)(pushLevel)\n\t\t\t\t\t\t: currentLevel.content}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CascadeDrawer;\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useRef, useState } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// SpotlightCard/index.tsx
|
|
5
|
+
var SpotlightCard = ({
|
|
6
|
+
children,
|
|
7
|
+
spotlightColor = "rgba(22, 119, 255, 0.15)",
|
|
8
|
+
spotlightSize = 320,
|
|
9
|
+
dark = false,
|
|
10
|
+
className = "",
|
|
11
|
+
style
|
|
12
|
+
}) => {
|
|
13
|
+
const cardRef = useRef(null);
|
|
14
|
+
const [position, setPosition] = useState({ x: 0, y: 0 });
|
|
15
|
+
const handleMouseMove = (e) => {
|
|
16
|
+
if (!cardRef.current) return;
|
|
17
|
+
const rect = cardRef.current.getBoundingClientRect();
|
|
18
|
+
setPosition({
|
|
19
|
+
x: e.clientX - rect.left,
|
|
20
|
+
y: e.clientY - rect.top
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ jsxs(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
ref: cardRef,
|
|
27
|
+
onMouseMove: handleMouseMove,
|
|
28
|
+
className: `rpc_spotlight_card ${dark ? "rpc_spotlight_card_dark" : ""} ${className}`,
|
|
29
|
+
style,
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ jsx(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
className: "rpc_spotlight_card_spotlight",
|
|
35
|
+
style: {
|
|
36
|
+
background: `radial-gradient(${spotlightSize}px circle at ${position.x}px ${position.y}px, ${spotlightColor}, transparent 80%)`
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ jsx("div", { className: "rpc_spotlight_card_content", children })
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
var SpotlightCard_default = SpotlightCard;
|
|
46
|
+
|
|
47
|
+
export { SpotlightCard_default };
|
|
48
|
+
//# sourceMappingURL=chunk-WZ2GV4HA.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-WZ2GV4HA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../SpotlightCard/index.tsx"],"names":[],"mappings":";;;;AAkBA,IAAM,gBAA8C,CAAC;AAAA,EACpD,QAAA;AAAA,EACA,cAAA,GAAiB,0BAAA;AAAA,EACjB,aAAA,GAAgB,GAAA;AAAA,EAChB,IAAA,GAAO,KAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAmC,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAEjF,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAwC;AAChE,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,qBAAA,EAAsB;AACnD,IAAA,WAAA,CAAY;AAAA,MACX,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAA;AAAA,MACpB,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK;AAAA,KACpB,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAa,eAAA;AAAA,MACb,WAAW,CAAA,mBAAA,EAAsB,IAAA,GAAO,yBAAA,GAA4B,EAAE,IAAI,SAAS,CAAA,CAAA;AAAA,MACnF,KAAA;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,8BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACN,UAAA,EAAY,CAAA,gBAAA,EAAmB,aAAa,CAAA,aAAA,EAAgB,QAAA,CAAS,CAAC,CAAA,GAAA,EAAM,QAAA,CAAS,CAAC,CAAA,IAAA,EAAO,cAAc,CAAA,kBAAA;AAAA;AAC5G;AAAA,SACD;AAAA,wBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAS;AAAA;AAAA;AAAA,GACvD;AAEF,CAAA;AAEA,IAAO,qBAAA,GAAQ","file":"chunk-WZ2GV4HA.js","sourcesContent":["import React, { useState, useRef, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface SpotlightCardProps {\n\t/** 卡片子内容 */\n\tchildren: ReactNode;\n\t/** 聚光灯光晕颜色,默认为 'rgba(22, 119, 255, 0.15)' */\n\tspotlightColor?: string;\n\t/** 聚光灯光晕半径(像素),默认为 320 */\n\tspotlightSize?: number;\n\t/** 是否开启暗色主题(高对比科技感),默认为 false */\n\tdark?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst SpotlightCard: React.FC<SpotlightCardProps> = ({\n\tchildren,\n\tspotlightColor = 'rgba(22, 119, 255, 0.15)',\n\tspotlightSize = 320,\n\tdark = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst cardRef = useRef<HTMLDivElement>(null);\n\tconst [position, setPosition] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n\n\tconst handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!cardRef.current) return;\n\t\tconst rect = cardRef.current.getBoundingClientRect();\n\t\tsetPosition({\n\t\t\tx: e.clientX - rect.left,\n\t\t\ty: e.clientY - rect.top,\n\t\t});\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={cardRef}\n\t\t\tonMouseMove={handleMouseMove}\n\t\t\tclassName={`rpc_spotlight_card ${dark ? 'rpc_spotlight_card_dark' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{/* 聚光灯层 */}\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_spotlight_card_spotlight\"\n\t\t\t\tstyle={{\n\t\t\t\t\tbackground: `radial-gradient(${spotlightSize}px circle at ${position.x}px ${position.y}px, ${spotlightColor}, transparent 80%)`,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div className=\"rpc_spotlight_card_content\">{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default SpotlightCard;\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { useState, useRef, useEffect } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// NumberStepper/index.tsx
|
|
5
|
+
var NumberStepper = ({
|
|
6
|
+
value: controlledVal,
|
|
7
|
+
defaultValue = 1,
|
|
8
|
+
min = 0,
|
|
9
|
+
max = 100,
|
|
10
|
+
step = 1,
|
|
11
|
+
onChange,
|
|
12
|
+
disabled = false,
|
|
13
|
+
className = "",
|
|
14
|
+
style
|
|
15
|
+
}) => {
|
|
16
|
+
const [internalVal, setInternalVal] = useState(defaultValue);
|
|
17
|
+
const currentVal = controlledVal !== void 0 ? controlledVal : internalVal;
|
|
18
|
+
const timerRef = useRef(null);
|
|
19
|
+
const updateVal = (val) => {
|
|
20
|
+
const clamped = Math.max(min, Math.min(max, val));
|
|
21
|
+
if (controlledVal === void 0) setInternalVal(clamped);
|
|
22
|
+
onChange == null ? void 0 : onChange(clamped);
|
|
23
|
+
};
|
|
24
|
+
const handleStep = (delta) => {
|
|
25
|
+
if (disabled) return;
|
|
26
|
+
updateVal(currentVal + delta);
|
|
27
|
+
};
|
|
28
|
+
const startLongPress = (delta) => {
|
|
29
|
+
if (disabled) return;
|
|
30
|
+
handleStep(delta);
|
|
31
|
+
timerRef.current = setInterval(() => {
|
|
32
|
+
handleStep(delta);
|
|
33
|
+
}, 120);
|
|
34
|
+
};
|
|
35
|
+
const stopLongPress = () => {
|
|
36
|
+
if (timerRef.current) {
|
|
37
|
+
clearInterval(timerRef.current);
|
|
38
|
+
timerRef.current = null;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
return () => stopLongPress();
|
|
43
|
+
}, []);
|
|
44
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_num_stepper ${className}`, style, children: [
|
|
45
|
+
/* @__PURE__ */ jsx(
|
|
46
|
+
"button",
|
|
47
|
+
{
|
|
48
|
+
type: "button",
|
|
49
|
+
disabled: disabled || currentVal <= min,
|
|
50
|
+
className: "rpc_num_stepper_btn",
|
|
51
|
+
onMouseDown: () => startLongPress(-step),
|
|
52
|
+
onMouseUp: stopLongPress,
|
|
53
|
+
onMouseLeave: stopLongPress,
|
|
54
|
+
children: "-"
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
"input",
|
|
59
|
+
{
|
|
60
|
+
type: "number",
|
|
61
|
+
value: currentVal,
|
|
62
|
+
disabled,
|
|
63
|
+
onChange: (e) => updateVal(Number(e.target.value)),
|
|
64
|
+
className: "rpc_num_stepper_input"
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
"button",
|
|
69
|
+
{
|
|
70
|
+
type: "button",
|
|
71
|
+
disabled: disabled || currentVal >= max,
|
|
72
|
+
className: "rpc_num_stepper_btn",
|
|
73
|
+
onMouseDown: () => startLongPress(step),
|
|
74
|
+
onMouseUp: stopLongPress,
|
|
75
|
+
onMouseLeave: stopLongPress,
|
|
76
|
+
children: "+"
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
] });
|
|
80
|
+
};
|
|
81
|
+
var NumberStepper_default = NumberStepper;
|
|
82
|
+
|
|
83
|
+
export { NumberStepper_default };
|
|
84
|
+
//# sourceMappingURL=chunk-X2F2DVMB.js.map
|
|
85
|
+
//# sourceMappingURL=chunk-X2F2DVMB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../NumberStepper/index.tsx"],"names":[],"mappings":"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","file":"chunk-X2F2DVMB.js","sourcesContent":["import React, { useState, useRef, useEffect, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface NumberStepperProps {\n\t/** 当前数值(受控) */\n\tvalue?: number;\n\t/** 默认数值 */\n\tdefaultValue?: number;\n\t/** 最小值,默认为 0 */\n\tmin?: number;\n\t/** 最大值,默认为 100 */\n\tmax?: number;\n\t/** 步长,默认为 1 */\n\tstep?: number;\n\t/** 改变回调 */\n\tonChange?: (val: number) => void;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst NumberStepper: React.FC<NumberStepperProps> = ({\n\tvalue: controlledVal,\n\tdefaultValue = 1,\n\tmin = 0,\n\tmax = 100,\n\tstep = 1,\n\tonChange,\n\tdisabled = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalVal, setInternalVal] = useState<number>(defaultValue);\n\tconst currentVal = controlledVal !== undefined ? controlledVal : internalVal;\n\n\tconst timerRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n\tconst updateVal = (val: number) => {\n\t\tconst clamped = Math.max(min, Math.min(max, val));\n\t\tif (controlledVal === undefined) setInternalVal(clamped);\n\t\tonChange?.(clamped);\n\t};\n\n\tconst handleStep = (delta: number) => {\n\t\tif (disabled) return;\n\t\tupdateVal(currentVal + delta);\n\t};\n\n\tconst startLongPress = (delta: number) => {\n\t\tif (disabled) return;\n\t\thandleStep(delta);\n\t\ttimerRef.current = setInterval(() => {\n\t\t\thandleStep(delta);\n\t\t}, 120);\n\t};\n\n\tconst stopLongPress = () => {\n\t\tif (timerRef.current) {\n\t\t\tclearInterval(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\treturn () => stopLongPress();\n\t}, []);\n\n\treturn (\n\t\t<div className={`rpc_num_stepper ${className}`} style={style}>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={disabled || currentVal <= min}\n\t\t\t\tclassName=\"rpc_num_stepper_btn\"\n\t\t\t\tonMouseDown={() => startLongPress(-step)}\n\t\t\t\tonMouseUp={stopLongPress}\n\t\t\t\tonMouseLeave={stopLongPress}\n\t\t\t>\n\t\t\t\t-\n\t\t\t</button>\n\n\t\t\t<input\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={currentVal}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={(e) => updateVal(Number(e.target.value))}\n\t\t\t\tclassName=\"rpc_num_stepper_input\"\n\t\t\t/>\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={disabled || currentVal >= max}\n\t\t\t\tclassName=\"rpc_num_stepper_btn\"\n\t\t\t\tonMouseDown={() => startLongPress(step)}\n\t\t\t\tonMouseUp={stopLongPress}\n\t\t\t\tonMouseLeave={stopLongPress}\n\t\t\t>\n\t\t\t\t+\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default NumberStepper;\n"]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ReloadOutlined, LoadingOutlined } from './chunk-TGSKTHTV.js';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function drawQrCode(canvas, text, size) {
|
|
6
|
+
const ctx = canvas.getContext("2d");
|
|
7
|
+
if (!ctx) return;
|
|
8
|
+
const dpr = window.devicePixelRatio || 1;
|
|
9
|
+
canvas.width = size * dpr;
|
|
10
|
+
canvas.height = size * dpr;
|
|
11
|
+
ctx.scale(dpr, dpr);
|
|
12
|
+
ctx.fillStyle = "#ffffff";
|
|
13
|
+
ctx.fillRect(0, 0, size, size);
|
|
14
|
+
const modules = 25;
|
|
15
|
+
const cellSize = size / modules;
|
|
16
|
+
ctx.fillStyle = "#000000";
|
|
17
|
+
const drawPositionPattern = (x, y) => {
|
|
18
|
+
ctx.fillRect(x * cellSize, y * cellSize, 7 * cellSize, 7 * cellSize);
|
|
19
|
+
ctx.fillStyle = "#ffffff";
|
|
20
|
+
ctx.fillRect((x + 1) * cellSize, (y + 1) * cellSize, 5 * cellSize, 5 * cellSize);
|
|
21
|
+
ctx.fillStyle = "#000000";
|
|
22
|
+
ctx.fillRect((x + 2) * cellSize, (y + 2) * cellSize, 3 * cellSize, 3 * cellSize);
|
|
23
|
+
};
|
|
24
|
+
drawPositionPattern(0, 0);
|
|
25
|
+
drawPositionPattern(modules - 7, 0);
|
|
26
|
+
drawPositionPattern(0, modules - 7);
|
|
27
|
+
let hash = 0;
|
|
28
|
+
for (let i = 0; i < text.length; i++) {
|
|
29
|
+
hash = (hash << 5) - hash + text.charCodeAt(i);
|
|
30
|
+
hash |= 0;
|
|
31
|
+
}
|
|
32
|
+
for (let r = 0; r < modules; r++) {
|
|
33
|
+
for (let c = 0; c < modules; c++) {
|
|
34
|
+
if (r < 8 && c < 8 || r < 8 && c >= modules - 8 || r >= modules - 8 && c < 8) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const seed = (r * 31 + c * 17 + hash) % 100;
|
|
38
|
+
if (Math.abs(seed) % 2 === 0) {
|
|
39
|
+
ctx.fillStyle = "#000000";
|
|
40
|
+
ctx.fillRect(c * cellSize, r * cellSize, cellSize - 0.2, cellSize - 0.2);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
var QrCodeCard = ({
|
|
46
|
+
value,
|
|
47
|
+
size = 160,
|
|
48
|
+
icon,
|
|
49
|
+
status = "active",
|
|
50
|
+
title,
|
|
51
|
+
description,
|
|
52
|
+
downloadable = false,
|
|
53
|
+
onRefresh,
|
|
54
|
+
className = "",
|
|
55
|
+
style
|
|
56
|
+
}) => {
|
|
57
|
+
const canvasRef = useRef(null);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (canvasRef.current && value) {
|
|
60
|
+
drawQrCode(canvasRef.current, value, size);
|
|
61
|
+
}
|
|
62
|
+
}, [value, size]);
|
|
63
|
+
const handleDownload = () => {
|
|
64
|
+
if (!canvasRef.current) return;
|
|
65
|
+
const url = canvasRef.current.toDataURL("image/png");
|
|
66
|
+
const a = document.createElement("a");
|
|
67
|
+
a.href = url;
|
|
68
|
+
a.download = `qrcode-${Date.now()}.png`;
|
|
69
|
+
a.click();
|
|
70
|
+
};
|
|
71
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_qrcode_card ${className}`, style, children: [
|
|
72
|
+
/* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_wrap", style: { width: size, height: size }, children: [
|
|
73
|
+
/* @__PURE__ */ jsx(
|
|
74
|
+
"canvas",
|
|
75
|
+
{
|
|
76
|
+
ref: canvasRef,
|
|
77
|
+
className: "rpc_qrcode_card_canvas",
|
|
78
|
+
style: { width: size, height: size }
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
icon && status === "active" && /* @__PURE__ */ jsx("img", { src: icon, alt: "Logo", className: "rpc_qrcode_card_logo" }),
|
|
82
|
+
status === "expired" && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_mask", onClick: onRefresh, children: [
|
|
83
|
+
/* @__PURE__ */ jsx("span", { children: "\u4E8C\u7EF4\u7801\u5DF2\u5931\u6548" }),
|
|
84
|
+
/* @__PURE__ */ jsxs("button", { type: "button", className: "rpc_qrcode_card_refresh_btn", children: [
|
|
85
|
+
/* @__PURE__ */ jsx(ReloadOutlined, {}),
|
|
86
|
+
/* @__PURE__ */ jsx("span", { children: "\u70B9\u51FB\u5237\u65B0" })
|
|
87
|
+
] })
|
|
88
|
+
] }),
|
|
89
|
+
status === "loading" && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_mask rpc_qrcode_card_mask_loading", children: [
|
|
90
|
+
/* @__PURE__ */ jsx(LoadingOutlined, { style: { fontSize: 28, color: "#1677ff" } }),
|
|
91
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_qrcode_card_mask_text", children: "\u52A0\u8F7D\u4E2D..." })
|
|
92
|
+
] })
|
|
93
|
+
] }),
|
|
94
|
+
(title || description) && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_info", children: [
|
|
95
|
+
title && /* @__PURE__ */ jsx("span", { className: "rpc_qrcode_card_title", children: title }),
|
|
96
|
+
description && /* @__PURE__ */ jsx("span", { className: "rpc_qrcode_card_description", children: description })
|
|
97
|
+
] }),
|
|
98
|
+
downloadable && status === "active" && /* @__PURE__ */ jsx("span", { className: "rpc_qrcode_card_download", onClick: handleDownload, children: "\u4E0B\u8F7D\u4E8C\u7EF4\u7801" })
|
|
99
|
+
] });
|
|
100
|
+
};
|
|
101
|
+
var QrCodeCard_default = QrCodeCard;
|
|
102
|
+
|
|
103
|
+
export { QrCodeCard_default };
|
|
104
|
+
//# sourceMappingURL=chunk-X4MEHYWV.js.map
|
|
105
|
+
//# sourceMappingURL=chunk-X4MEHYWV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../QrCodeCard/index.tsx"],"names":[],"mappings":"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","file":"chunk-X4MEHYWV.js","sourcesContent":["import React, { useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { ReloadOutlined, LoadingOutlined } from '../src/icons';\nimport './index.less';\n\nexport type QrCodeStatus = 'active' | 'expired' | 'loading';\n\nexport interface QrCodeCardProps {\n\t/** 二维码内容或跳转 URL */\n\tvalue: string;\n\t/** 二维码尺寸(像素),默认为 160 */\n\tsize?: number;\n\t/** 中心嵌入的 Logo 图标地址 */\n\ticon?: string;\n\t/** 二维码状态:'active' 正常,'expired' 已过期,'loading' 生成中,默认为 'active' */\n\tstatus?: QrCodeStatus;\n\t/** 卡片标题说明 */\n\ttitle?: ReactNode;\n\t/** 卡片副标题或扫码提示 */\n\tdescription?: ReactNode;\n\t/** 是否显示一键下载二维码按钮,默认为 false */\n\tdownloadable?: boolean;\n\t/** 点击过期遮罩刷新时的回调 */\n\tonRefresh?: () => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 简易轻量伪随机但确定性的二维码图案矩阵绘制算法(保证零外部大库)\nfunction drawQrCode(canvas: HTMLCanvasElement, text: string, size: number) {\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return;\n\n\tconst dpr = window.devicePixelRatio || 1;\n\tcanvas.width = size * dpr;\n\tcanvas.height = size * dpr;\n\tctx.scale(dpr, dpr);\n\n\tctx.fillStyle = '#ffffff';\n\tctx.fillRect(0, 0, size, size);\n\n\tconst modules = 25; // 25x25 矩阵\n\tconst cellSize = size / modules;\n\n\tctx.fillStyle = '#000000';\n\n\t// 绘制三个角的定位方块 (Position Detection Patterns)\n\tconst drawPositionPattern = (x: number, y: number) => {\n\t\t// 外 7x7\n\t\tctx.fillRect(x * cellSize, y * cellSize, 7 * cellSize, 7 * cellSize);\n\t\t// 中间挖空 5x5\n\t\tctx.fillStyle = '#ffffff';\n\t\tctx.fillRect((x + 1) * cellSize, (y + 1) * cellSize, 5 * cellSize, 5 * cellSize);\n\t\t// 中心实心 3x3\n\t\tctx.fillStyle = '#000000';\n\t\tctx.fillRect((x + 2) * cellSize, (y + 2) * cellSize, 3 * cellSize, 3 * cellSize);\n\t};\n\n\tdrawPositionPattern(0, 0);\n\tdrawPositionPattern(modules - 7, 0);\n\tdrawPositionPattern(0, modules - 7);\n\n\t// 基于文本字符串的 hash 填充数据点\n\tlet hash = 0;\n\tfor (let i = 0; i < text.length; i++) {\n\t\thash = (hash << 5) - hash + text.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\n\tfor (let r = 0; r < modules; r++) {\n\t\tfor (let c = 0; c < modules; c++) {\n\t\t\t// 跳过三个角的位置\n\t\t\tif (\n\t\t\t\t(r < 8 && c < 8) ||\n\t\t\t\t(r < 8 && c >= modules - 8) ||\n\t\t\t\t(r >= modules - 8 && c < 8)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst seed = (r * 31 + c * 17 + hash) % 100;\n\t\t\tif (Math.abs(seed) % 2 === 0) {\n\t\t\t\tctx.fillStyle = '#000000';\n\t\t\t\tctx.fillRect(c * cellSize, r * cellSize, cellSize - 0.2, cellSize - 0.2);\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst QrCodeCard: React.FC<QrCodeCardProps> = ({\n\tvalue,\n\tsize = 160,\n\ticon,\n\tstatus = 'active',\n\ttitle,\n\tdescription,\n\tdownloadable = false,\n\tonRefresh,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\n\tuseEffect(() => {\n\t\tif (canvasRef.current && value) {\n\t\t\tdrawQrCode(canvasRef.current, value, size);\n\t\t}\n\t}, [value, size]);\n\n\tconst handleDownload = () => {\n\t\tif (!canvasRef.current) return;\n\t\tconst url = canvasRef.current.toDataURL('image/png');\n\t\tconst a = document.createElement('a');\n\t\ta.href = url;\n\t\ta.download = `qrcode-${Date.now()}.png`;\n\t\ta.click();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_qrcode_card ${className}`} style={style}>\n\t\t\t<div className=\"rpc_qrcode_card_wrap\" style={{ width: size, height: size }}>\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName=\"rpc_qrcode_card_canvas\"\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t/>\n\n\t\t\t\t{/* 嵌入中心 Logo */}\n\t\t\t\t{icon && status === 'active' && (\n\t\t\t\t\t<img src={icon} alt=\"Logo\" className=\"rpc_qrcode_card_logo\" />\n\t\t\t\t)}\n\n\t\t\t\t{/* 过期或加载中蒙层 */}\n\t\t\t\t{status === 'expired' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask\" onClick={onRefresh}>\n\t\t\t\t\t\t<span>二维码已失效</span>\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_qrcode_card_refresh_btn\">\n\t\t\t\t\t\t\t<ReloadOutlined />\n\t\t\t\t\t\t\t<span>点击刷新</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{status === 'loading' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask rpc_qrcode_card_mask_loading\">\n\t\t\t\t\t\t<LoadingOutlined style={{ fontSize: 28, color: '#1677ff' }} />\n\t\t\t\t\t\t<span className=\"rpc_qrcode_card_mask_text\">加载中...</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 标题说明 */}\n\t\t\t{(title || description) && (\n\t\t\t\t<div className=\"rpc_qrcode_card_info\">\n\t\t\t\t\t{title && <span className=\"rpc_qrcode_card_title\">{title}</span>}\n\t\t\t\t\t{description && <span className=\"rpc_qrcode_card_description\">{description}</span>}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 下载链接 */}\n\t\t\t{downloadable && status === 'active' && (\n\t\t\t\t<span className=\"rpc_qrcode_card_download\" onClick={handleDownload}>\n\t\t\t\t\t下载二维码\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default QrCodeCard;\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// JsonDiffViewer/index.tsx
|
|
5
|
+
var JsonDiffViewer = ({
|
|
6
|
+
before = {},
|
|
7
|
+
after = {},
|
|
8
|
+
className = "",
|
|
9
|
+
style
|
|
10
|
+
}) => {
|
|
11
|
+
const diffRows = useMemo(() => {
|
|
12
|
+
const rows = [];
|
|
13
|
+
const allKeys = Array.from(/* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)]));
|
|
14
|
+
allKeys.forEach((key) => {
|
|
15
|
+
const hasBefore = key in before;
|
|
16
|
+
const hasAfter = key in after;
|
|
17
|
+
if (!hasBefore && hasAfter) {
|
|
18
|
+
rows.push({ key, type: "added", newVal: after[key] });
|
|
19
|
+
} else if (hasBefore && !hasAfter) {
|
|
20
|
+
rows.push({ key, type: "removed", oldVal: before[key] });
|
|
21
|
+
} else {
|
|
22
|
+
const bVal = JSON.stringify(before[key]);
|
|
23
|
+
const aVal = JSON.stringify(after[key]);
|
|
24
|
+
if (bVal !== aVal) {
|
|
25
|
+
rows.push({ key, type: "modified", oldVal: before[key], newVal: after[key] });
|
|
26
|
+
} else {
|
|
27
|
+
rows.push({ key, type: "unchanged", newVal: after[key] });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return rows;
|
|
32
|
+
}, [before, after]);
|
|
33
|
+
const formatVal = (v) => {
|
|
34
|
+
if (typeof v === "object") return JSON.stringify(v);
|
|
35
|
+
if (typeof v === "string") return `"${v}"`;
|
|
36
|
+
return String(v);
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_json_diff ${className}`, style, children: [
|
|
39
|
+
/* @__PURE__ */ jsx("div", { style: { color: "#858585", marginBottom: 6 }, children: "{" }),
|
|
40
|
+
diffRows.map((row) => {
|
|
41
|
+
const sign = row.type === "added" ? "+" : row.type === "removed" ? "-" : row.type === "modified" ? "~" : " ";
|
|
42
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_json_diff_row rpc_json_diff_row_${row.type}`, children: [
|
|
43
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_json_diff_sign", children: sign }),
|
|
44
|
+
/* @__PURE__ */ jsxs("span", { className: "rpc_json_diff_key", children: [
|
|
45
|
+
'"',
|
|
46
|
+
row.key,
|
|
47
|
+
'"'
|
|
48
|
+
] }),
|
|
49
|
+
":",
|
|
50
|
+
row.type === "modified" ? /* @__PURE__ */ jsxs("span", { children: [
|
|
51
|
+
/* @__PURE__ */ jsx("span", { style: { textDecoration: "line-through", opacity: 0.7 }, children: formatVal(row.oldVal) }),
|
|
52
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_json_diff_arrow", children: "\u2794" }),
|
|
53
|
+
/* @__PURE__ */ jsx("span", { children: formatVal(row.newVal) })
|
|
54
|
+
] }) : row.type === "removed" ? /* @__PURE__ */ jsx("span", { children: formatVal(row.oldVal) }) : /* @__PURE__ */ jsx("span", { children: formatVal(row.newVal) })
|
|
55
|
+
] }, row.key);
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ jsx("div", { style: { color: "#858585", marginTop: 6 }, children: "}" })
|
|
58
|
+
] });
|
|
59
|
+
};
|
|
60
|
+
var JsonDiffViewer_default = JsonDiffViewer;
|
|
61
|
+
|
|
62
|
+
export { JsonDiffViewer_default };
|
|
63
|
+
//# sourceMappingURL=chunk-X7EE5DXL.js.map
|
|
64
|
+
//# sourceMappingURL=chunk-X7EE5DXL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../JsonDiffViewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-X7EE5DXL.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface JsonDiffViewerProps {\n\t/** 变更前原始 JSON 对象 */\n\tbefore: Record<string, any>;\n\t/** 变更后最新 JSON 对象 */\n\tafter: Record<string, any>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\ntype DiffType = 'added' | 'removed' | 'modified' | 'unchanged';\n\ninterface DiffRow {\n\tkey: string;\n\ttype: DiffType;\n\toldVal?: any;\n\tnewVal?: any;\n}\n\nconst JsonDiffViewer: React.FC<JsonDiffViewerProps> = ({\n\tbefore = {},\n\tafter = {},\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst diffRows = useMemo(() => {\n\t\tconst rows: DiffRow[] = [];\n\t\tconst allKeys = Array.from(new Set([...Object.keys(before), ...Object.keys(after)]));\n\n\t\tallKeys.forEach((key) => {\n\t\t\tconst hasBefore = key in before;\n\t\t\tconst hasAfter = key in after;\n\n\t\t\tif (!hasBefore && hasAfter) {\n\t\t\t\trows.push({ key, type: 'added', newVal: after[key] });\n\t\t\t} else if (hasBefore && !hasAfter) {\n\t\t\t\trows.push({ key, type: 'removed', oldVal: before[key] });\n\t\t\t} else {\n\t\t\t\tconst bVal = JSON.stringify(before[key]);\n\t\t\t\tconst aVal = JSON.stringify(after[key]);\n\t\t\t\tif (bVal !== aVal) {\n\t\t\t\t\trows.push({ key, type: 'modified', oldVal: before[key], newVal: after[key] });\n\t\t\t\t} else {\n\t\t\t\t\trows.push({ key, type: 'unchanged', newVal: after[key] });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn rows;\n\t}, [before, after]);\n\n\tconst formatVal = (v: any) => {\n\t\tif (typeof v === 'object') return JSON.stringify(v);\n\t\tif (typeof v === 'string') return `\"${v}\"`;\n\t\treturn String(v);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_json_diff ${className}`} style={style}>\n\t\t\t<div style={{ color: '#858585', marginBottom: 6 }}>{</div>\n\n\t\t\t{diffRows.map((row) => {\n\t\t\t\tconst sign =\n\t\t\t\t\trow.type === 'added'\n\t\t\t\t\t\t? '+'\n\t\t\t\t\t\t: row.type === 'removed'\n\t\t\t\t\t\t? '-'\n\t\t\t\t\t\t: row.type === 'modified'\n\t\t\t\t\t\t? '~'\n\t\t\t\t\t\t: ' ';\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={row.key} className={`rpc_json_diff_row rpc_json_diff_row_${row.type}`}>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_sign\">{sign}</span>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_key\">\"{row.key}\"</span>:\n\t\t\t\t\t\t{row.type === 'modified' ? (\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<span style={{ textDecoration: 'line-through', opacity: 0.7 }}>\n\t\t\t\t\t\t\t\t\t{formatVal(row.oldVal)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"rpc_json_diff_arrow\">➔</span>\n\t\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : row.type === 'removed' ? (\n\t\t\t\t\t\t\t<span>{formatVal(row.oldVal)}</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t<div style={{ color: '#858585', marginTop: 6 }}>}</div>\n\t\t</div>\n\t);\n};\n\nexport default JsonDiffViewer;\n"]}
|