dsh-plugin-core 0.32.0 → 0.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +197 -64
- package/README.zh-CN.md +242 -0
- package/dist/adv/explorer/FileBrowser.d.ts +58 -0
- package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
- package/dist/adv/explorer/FileBrowser.js +632 -0
- package/dist/adv/explorer/FileBrowser.js.map +1 -0
- package/dist/adv/explorer/crumb-nav.d.ts +45 -0
- package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
- package/dist/adv/explorer/crumb-nav.js +78 -0
- package/dist/adv/explorer/crumb-nav.js.map +1 -0
- package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
- package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
- package/dist/adv/explorer/crumbs-menu.js +102 -0
- package/dist/adv/explorer/crumbs-menu.js.map +1 -0
- package/dist/adv/explorer/explorer-css.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.js +4 -0
- package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
- package/dist/adv/explorer/explorer-css.js +3 -0
- package/dist/adv/explorer/explorer-css.js.map +1 -0
- package/dist/adv/explorer/fs-face.d.ts +36 -0
- package/dist/adv/explorer/fs-face.d.ts.map +1 -0
- package/dist/adv/explorer/fs-face.js +74 -0
- package/dist/adv/explorer/fs-face.js.map +1 -0
- package/dist/adv/explorer/index.d.ts +6 -0
- package/dist/adv/explorer/index.d.ts.map +1 -0
- package/dist/adv/explorer/index.js +6 -0
- package/dist/adv/explorer/index.js.map +1 -0
- package/dist/adv/explorer/landing.d.ts +26 -0
- package/dist/adv/explorer/landing.d.ts.map +1 -0
- package/dist/adv/explorer/landing.js +43 -0
- package/dist/adv/explorer/landing.js.map +1 -0
- package/dist/adv/explorer/open.d.ts +137 -0
- package/dist/adv/explorer/open.d.ts.map +1 -0
- package/dist/adv/explorer/open.js +350 -0
- package/dist/adv/explorer/open.js.map +1 -0
- package/dist/adv/explorer/picker-placement.d.ts +69 -0
- package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
- package/dist/adv/explorer/picker-placement.js +122 -0
- package/dist/adv/explorer/picker-placement.js.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.js +60 -0
- package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
- package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.js +63 -0
- package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.js +122 -0
- package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
- package/dist/adv/explorer/preview/index.d.ts +24 -0
- package/dist/adv/explorer/preview/index.d.ts.map +1 -0
- package/dist/adv/explorer/preview/index.js +58 -0
- package/dist/adv/explorer/preview/index.js.map +1 -0
- package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
- package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
- package/dist/adv/explorer/preview/md-labels.js +12 -0
- package/dist/adv/explorer/preview/md-labels.js.map +1 -0
- package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
- package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
- package/dist/adv/explorer/preview-title-bar.js +48 -0
- package/dist/adv/explorer/preview-title-bar.js.map +1 -0
- package/dist/adv/explorer/types.d.ts +259 -0
- package/dist/adv/explorer/types.d.ts.map +1 -0
- package/dist/adv/explorer/types.js +379 -0
- package/dist/adv/explorer/types.js.map +1 -0
- package/dist/adv/session/SessionViewModal.d.ts +37 -0
- package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
- package/dist/adv/session/SessionViewModal.js +1133 -0
- package/dist/adv/session/SessionViewModal.js.map +1 -0
- package/dist/adv/session/changes.d.ts +73 -0
- package/dist/adv/session/changes.d.ts.map +1 -0
- package/dist/adv/session/changes.js +134 -0
- package/dist/adv/session/changes.js.map +1 -0
- package/dist/adv/session/faces.d.ts +244 -0
- package/dist/adv/session/faces.d.ts.map +1 -0
- package/dist/adv/session/faces.js +17 -0
- package/dist/adv/session/faces.js.map +1 -0
- package/dist/adv/session/index.d.ts +7 -0
- package/dist/adv/session/index.d.ts.map +1 -0
- package/dist/adv/session/index.js +27 -0
- package/dist/adv/session/index.js.map +1 -0
- package/dist/adv/session/mirror/AskCard.d.ts +35 -0
- package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/AskCard.js +131 -0
- package/dist/adv/session/mirror/AskCard.js.map +1 -0
- package/dist/adv/session/mirror/BashRow.d.ts +14 -0
- package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/BashRow.js +143 -0
- package/dist/adv/session/mirror/BashRow.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatView.d.ts +47 -0
- package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatView.js +138 -0
- package/dist/adv/session/mirror/ChatView.js.map +1 -0
- package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
- package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/CommandCard.js +69 -0
- package/dist/adv/session/mirror/CommandCard.js.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
- package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
- package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
- package/dist/adv/session/mirror/Deliverables.js +175 -0
- package/dist/adv/session/mirror/Deliverables.js.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
- package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.js +69 -0
- package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
- package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
- package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageItem.js +194 -0
- package/dist/adv/session/mirror/MessageItem.js.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.js +111 -0
- package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.js +57 -0
- package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
- package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
- package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
- package/dist/adv/session/mirror/StatDialog.js +49 -0
- package/dist/adv/session/mirror/StatDialog.js.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.js +268 -0
- package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
- package/dist/adv/session/mirror/control-details.d.ts +9 -0
- package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
- package/dist/adv/session/mirror/control-details.js +549 -0
- package/dist/adv/session/mirror/control-details.js.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.js +153 -0
- package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
- package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
- package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
- package/dist/adv/session/mirror/message-chrome.js +153 -0
- package/dist/adv/session/mirror/message-chrome.js.map +1 -0
- package/dist/adv/session/mirror/process-groups.d.ts +56 -0
- package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
- package/dist/adv/session/mirror/process-groups.js +204 -0
- package/dist/adv/session/mirror/process-groups.js.map +1 -0
- package/dist/adv/session/official-classes.d.ts +28 -0
- package/dist/adv/session/official-classes.d.ts.map +1 -0
- package/dist/adv/session/official-classes.js +152 -0
- package/dist/adv/session/official-classes.js.map +1 -0
- package/dist/adv/session/open-review.d.ts +13 -0
- package/dist/adv/session/open-review.d.ts.map +1 -0
- package/dist/adv/session/open-review.js +32 -0
- package/dist/adv/session/open-review.js.map +1 -0
- package/dist/adv/session/open-session-view.d.ts +19 -0
- package/dist/adv/session/open-session-view.d.ts.map +1 -0
- package/dist/adv/session/open-session-view.js +147 -0
- package/dist/adv/session/open-session-view.js.map +1 -0
- package/dist/adv/session/pending-inputs.d.ts +33 -0
- package/dist/adv/session/pending-inputs.d.ts.map +1 -0
- package/dist/adv/session/pending-inputs.js +130 -0
- package/dist/adv/session/pending-inputs.js.map +1 -0
- package/dist/adv/session/session-css.d.ts +2 -0
- package/dist/adv/session/session-css.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.d.ts +2 -0
- package/dist/adv/session/session-css.generated.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.js +4 -0
- package/dist/adv/session/session-css.generated.js.map +1 -0
- package/dist/adv/session/session-css.js +3 -0
- package/dist/adv/session/session-css.js.map +1 -0
- package/dist/adv/session/tail-follow.d.ts +29 -0
- package/dist/adv/session/tail-follow.d.ts.map +1 -0
- package/dist/adv/session/tail-follow.js +106 -0
- package/dist/adv/session/tail-follow.js.map +1 -0
- package/dist/ui/actions/Button.d.ts +102 -0
- package/dist/ui/actions/Button.d.ts.map +1 -0
- package/dist/ui/actions/Button.js +233 -0
- package/dist/ui/actions/Button.js.map +1 -0
- package/dist/ui/actions/button-css.generated.d.ts +2 -0
- package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
- package/dist/ui/actions/button-css.generated.js +4 -0
- package/dist/ui/actions/button-css.generated.js.map +1 -0
- package/dist/ui/display/Card.d.ts +65 -0
- package/dist/ui/display/Card.d.ts.map +1 -0
- package/dist/ui/display/Card.js +109 -0
- package/dist/ui/display/Card.js.map +1 -0
- package/dist/ui/display/Chip.d.ts +28 -0
- package/dist/ui/display/Chip.d.ts.map +1 -0
- package/dist/ui/display/Chip.js +36 -0
- package/dist/ui/display/Chip.js.map +1 -0
- package/dist/ui/display/CodeViewer.d.ts +38 -0
- package/dist/ui/display/CodeViewer.d.ts.map +1 -0
- package/dist/ui/display/CodeViewer.js +107 -0
- package/dist/ui/display/CodeViewer.js.map +1 -0
- package/dist/ui/display/FieldHint.d.ts +18 -0
- package/dist/ui/display/FieldHint.d.ts.map +1 -0
- package/dist/ui/display/FieldHint.js +40 -0
- package/dist/ui/display/FieldHint.js.map +1 -0
- package/dist/ui/display/FlipText.d.ts +43 -0
- package/dist/ui/display/FlipText.d.ts.map +1 -0
- package/dist/ui/display/FlipText.js +59 -0
- package/dist/ui/display/FlipText.js.map +1 -0
- package/dist/ui/display/LiveText.d.ts +13 -0
- package/dist/ui/display/LiveText.d.ts.map +1 -0
- package/dist/ui/display/LiveText.js +19 -0
- package/dist/ui/display/LiveText.js.map +1 -0
- package/dist/ui/display/MarqueeText.d.ts +22 -0
- package/dist/ui/display/MarqueeText.d.ts.map +1 -0
- package/dist/ui/display/MarqueeText.js +52 -0
- package/dist/ui/display/MarqueeText.js.map +1 -0
- package/dist/ui/display/SectionHead.d.ts +35 -0
- package/dist/ui/display/SectionHead.d.ts.map +1 -0
- package/dist/ui/display/SectionHead.js +45 -0
- package/dist/ui/display/SectionHead.js.map +1 -0
- package/dist/ui/display/Surface.d.ts +43 -0
- package/dist/ui/display/Surface.d.ts.map +1 -0
- package/dist/ui/display/Surface.js +39 -0
- package/dist/ui/display/Surface.js.map +1 -0
- package/dist/ui/display/Table.d.ts +30 -0
- package/dist/ui/display/Table.d.ts.map +1 -0
- package/dist/ui/display/Table.js +96 -0
- package/dist/ui/display/Table.js.map +1 -0
- package/dist/ui/display/card-css.d.ts +2 -0
- package/dist/ui/display/card-css.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.d.ts +2 -0
- package/dist/ui/display/card-css.generated.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.js +4 -0
- package/dist/ui/display/card-css.generated.js.map +1 -0
- package/dist/ui/display/card-css.js +5 -0
- package/dist/ui/display/card-css.js.map +1 -0
- package/dist/ui/display/chip-css.d.ts +2 -0
- package/dist/ui/display/chip-css.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.d.ts +2 -0
- package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.js +4 -0
- package/dist/ui/display/chip-css.generated.js.map +1 -0
- package/dist/ui/display/chip-css.js +12 -0
- package/dist/ui/display/chip-css.js.map +1 -0
- package/dist/ui/display/code-viewer-css.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.js +4 -0
- package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
- package/dist/ui/display/code-viewer-css.js +3 -0
- package/dist/ui/display/code-viewer-css.js.map +1 -0
- package/dist/ui/display/code-viewer-lang.d.ts +15 -0
- package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-lang.js +190 -0
- package/dist/ui/display/code-viewer-lang.js.map +1 -0
- package/dist/ui/display/code-viewer-theme.d.ts +5 -0
- package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-theme.js +138 -0
- package/dist/ui/display/code-viewer-theme.js.map +1 -0
- package/dist/ui/display/flip-css.d.ts +2 -0
- package/dist/ui/display/flip-css.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.d.ts +2 -0
- package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.js +4 -0
- package/dist/ui/display/flip-css.generated.js.map +1 -0
- package/dist/ui/display/flip-css.js +4 -0
- package/dist/ui/display/flip-css.js.map +1 -0
- package/dist/ui/display/hint-css.generated.d.ts +2 -0
- package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
- package/dist/ui/display/hint-css.generated.js +4 -0
- package/dist/ui/display/hint-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.d.ts +2 -0
- package/dist/ui/display/marquee-css.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.d.ts +2 -0
- package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.js +4 -0
- package/dist/ui/display/marquee-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.js +4 -0
- package/dist/ui/display/marquee-css.js.map +1 -0
- package/dist/ui/display/section-head-css.generated.d.ts +2 -0
- package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
- package/dist/ui/display/section-head-css.generated.js +4 -0
- package/dist/ui/display/section-head-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.d.ts +2 -0
- package/dist/ui/display/surface-css.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.d.ts +2 -0
- package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.js +4 -0
- package/dist/ui/display/surface-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.js +7 -0
- package/dist/ui/display/surface-css.js.map +1 -0
- package/dist/ui/display/table-css.generated.d.ts +2 -0
- package/dist/ui/display/table-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-css.generated.js +4 -0
- package/dist/ui/display/table-css.generated.js.map +1 -0
- package/dist/ui/display/table-logic.d.ts +110 -0
- package/dist/ui/display/table-logic.d.ts.map +1 -0
- package/dist/ui/display/table-logic.js +81 -0
- package/dist/ui/display/table-logic.js.map +1 -0
- package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
- package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-plain-css.generated.js +4 -0
- package/dist/ui/display/table-plain-css.generated.js.map +1 -0
- package/dist/ui/display/table-shared.d.ts +101 -0
- package/dist/ui/display/table-shared.d.ts.map +1 -0
- package/dist/ui/display/table-shared.js +229 -0
- package/dist/ui/display/table-shared.js.map +1 -0
- package/dist/ui/feedback/AlertModal.d.ts +41 -0
- package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
- package/dist/ui/feedback/AlertModal.js +45 -0
- package/dist/ui/feedback/AlertModal.js.map +1 -0
- package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
- package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/feedback/ConfirmModal.js +47 -0
- package/dist/ui/feedback/ConfirmModal.js.map +1 -0
- package/dist/ui/feedback/Loader.d.ts +49 -0
- package/dist/ui/feedback/Loader.d.ts.map +1 -0
- package/dist/ui/feedback/Loader.js +79 -0
- package/dist/ui/feedback/Loader.js.map +1 -0
- package/dist/ui/feedback/LoaderBar.d.ts +38 -0
- package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
- package/dist/ui/feedback/LoaderBar.js +79 -0
- package/dist/ui/feedback/LoaderBar.js.map +1 -0
- package/dist/ui/feedback/Loading.d.ts +69 -0
- package/dist/ui/feedback/Loading.d.ts.map +1 -0
- package/dist/ui/feedback/Loading.js +164 -0
- package/dist/ui/feedback/Loading.js.map +1 -0
- package/dist/ui/feedback/Modal.d.ts +73 -0
- package/dist/ui/feedback/Modal.d.ts.map +1 -0
- package/dist/ui/feedback/Modal.js +83 -0
- package/dist/ui/feedback/Modal.js.map +1 -0
- package/dist/ui/feedback/SideSheet.d.ts +70 -0
- package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
- package/dist/ui/feedback/SideSheet.js +130 -0
- package/dist/ui/feedback/SideSheet.js.map +1 -0
- package/dist/ui/feedback/Toast.d.ts +45 -0
- package/dist/ui/feedback/Toast.d.ts.map +1 -0
- package/dist/ui/feedback/Toast.js +225 -0
- package/dist/ui/feedback/Toast.js.map +1 -0
- package/dist/ui/feedback/feedback-css.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.js +4 -0
- package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
- package/dist/ui/feedback/feedback-css.js +4 -0
- package/dist/ui/feedback/feedback-css.js.map +1 -0
- package/dist/ui/feedback/host-toast.d.ts +23 -0
- package/dist/ui/feedback/host-toast.d.ts.map +1 -0
- package/dist/ui/feedback/host-toast.js +34 -0
- package/dist/ui/feedback/host-toast.js.map +1 -0
- package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
- package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-art.js +6 -0
- package/dist/ui/feedback/loader-bar-art.js.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
- package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
- package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-css.generated.js +4 -0
- package/dist/ui/feedback/loader-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loading-css.generated.js +4 -0
- package/dist/ui/feedback/loading-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-host.d.ts +49 -0
- package/dist/ui/feedback/loading-host.d.ts.map +1 -0
- package/dist/ui/feedback/loading-host.js +57 -0
- package/dist/ui/feedback/loading-host.js.map +1 -0
- package/dist/ui/feedback/modal-host.d.ts +51 -0
- package/dist/ui/feedback/modal-host.d.ts.map +1 -0
- package/dist/ui/feedback/modal-host.js +170 -0
- package/dist/ui/feedback/modal-host.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
- package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.js +2 -0
- package/dist/ui/feedback/side-sheet-css.js.map +1 -0
- package/dist/ui/feedback/toast-host.d.ts +24 -0
- package/dist/ui/feedback/toast-host.d.ts.map +1 -0
- package/dist/ui/feedback/toast-host.js +20 -0
- package/dist/ui/feedback/toast-host.js.map +1 -0
- package/dist/ui/index.d.ts +44 -44
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +44 -44
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/infra/chevron.d.ts +22 -0
- package/dist/ui/infra/chevron.d.ts.map +1 -0
- package/dist/ui/infra/chevron.js +33 -0
- package/dist/ui/infra/chevron.js.map +1 -0
- package/dist/ui/infra/controls-css.d.ts +16 -0
- package/dist/ui/infra/controls-css.d.ts.map +1 -0
- package/dist/ui/infra/controls-css.js +26 -0
- package/dist/ui/infra/controls-css.js.map +1 -0
- package/dist/ui/infra/css.d.ts +35 -0
- package/dist/ui/infra/css.d.ts.map +1 -0
- package/dist/ui/infra/css.js +52 -0
- package/dist/ui/infra/css.js.map +1 -0
- package/dist/ui/infra/host-data.d.ts +119 -0
- package/dist/ui/infra/host-data.d.ts.map +1 -0
- package/dist/ui/infra/host-data.js +122 -0
- package/dist/ui/infra/host-data.js.map +1 -0
- package/dist/ui/infra/locale.d.ts +4 -0
- package/dist/ui/infra/locale.d.ts.map +1 -0
- package/dist/ui/infra/locale.js +17 -0
- package/dist/ui/infra/locale.js.map +1 -0
- package/dist/ui/infra/overlay-css.d.ts +2 -0
- package/dist/ui/infra/overlay-css.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
- package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.js +4 -0
- package/dist/ui/infra/overlay-css.generated.js.map +1 -0
- package/dist/ui/infra/overlay-css.js +2 -0
- package/dist/ui/infra/overlay-css.js.map +1 -0
- package/dist/ui/infra/overlay.d.ts +62 -0
- package/dist/ui/infra/overlay.d.ts.map +1 -0
- package/dist/ui/infra/overlay.js +94 -0
- package/dist/ui/infra/overlay.js.map +1 -0
- package/dist/ui/infra/panel-css.d.ts +2 -0
- package/dist/ui/infra/panel-css.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.js +4 -0
- package/dist/ui/infra/panel-css.generated.js.map +1 -0
- package/dist/ui/infra/panel-css.js +2 -0
- package/dist/ui/infra/panel-css.js.map +1 -0
- package/dist/ui/infra/panel.d.ts +41 -0
- package/dist/ui/infra/panel.d.ts.map +1 -0
- package/dist/ui/infra/panel.js +37 -0
- package/dist/ui/infra/panel.js.map +1 -0
- package/dist/ui/infra/side-panel-css.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.js +4 -0
- package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
- package/dist/ui/infra/side-panel-css.js +2 -0
- package/dist/ui/infra/side-panel-css.js.map +1 -0
- package/dist/ui/infra/thenable.d.ts +9 -0
- package/dist/ui/infra/thenable.d.ts.map +1 -0
- package/dist/ui/infra/thenable.js +15 -0
- package/dist/ui/infra/thenable.js.map +1 -0
- package/dist/ui/infra/ticker.d.ts +8 -0
- package/dist/ui/infra/ticker.d.ts.map +1 -0
- package/dist/ui/infra/ticker.js +49 -0
- package/dist/ui/infra/ticker.js.map +1 -0
- package/dist/ui/infra/tooltip.d.ts +29 -0
- package/dist/ui/infra/tooltip.d.ts.map +1 -0
- package/dist/ui/infra/tooltip.js +10 -0
- package/dist/ui/infra/tooltip.js.map +1 -0
- package/dist/ui/inputs/Checkbox.d.ts +24 -0
- package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
- package/dist/ui/inputs/Checkbox.js +35 -0
- package/dist/ui/inputs/Checkbox.js.map +1 -0
- package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
- package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
- package/dist/ui/inputs/DateTimePicker.js +462 -0
- package/dist/ui/inputs/DateTimePicker.js.map +1 -0
- package/dist/ui/inputs/Field.d.ts +125 -0
- package/dist/ui/inputs/Field.d.ts.map +1 -0
- package/dist/ui/inputs/Field.js +175 -0
- package/dist/ui/inputs/Field.js.map +1 -0
- package/dist/ui/inputs/InputGroup.d.ts +91 -0
- package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
- package/dist/ui/inputs/InputGroup.js +125 -0
- package/dist/ui/inputs/InputGroup.js.map +1 -0
- package/dist/ui/inputs/ModelPicker.d.ts +48 -0
- package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
- package/dist/ui/inputs/ModelPicker.js +101 -0
- package/dist/ui/inputs/ModelPicker.js.map +1 -0
- package/dist/ui/inputs/Picker.d.ts +56 -0
- package/dist/ui/inputs/Picker.d.ts.map +1 -0
- package/dist/ui/inputs/Picker.js +244 -0
- package/dist/ui/inputs/Picker.js.map +1 -0
- package/dist/ui/inputs/Segmented.d.ts +99 -0
- package/dist/ui/inputs/Segmented.d.ts.map +1 -0
- package/dist/ui/inputs/Segmented.js +135 -0
- package/dist/ui/inputs/Segmented.js.map +1 -0
- package/dist/ui/inputs/Textarea.d.ts +36 -0
- package/dist/ui/inputs/Textarea.d.ts.map +1 -0
- package/dist/ui/inputs/Textarea.js +35 -0
- package/dist/ui/inputs/Textarea.js.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.js +39 -0
- package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.js +4 -0
- package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
- package/dist/ui/inputs/datetime-logic.d.ts +102 -0
- package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-logic.js +200 -0
- package/dist/ui/inputs/datetime-logic.js.map +1 -0
- package/dist/ui/inputs/field-css.generated.d.ts +2 -0
- package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/field-css.generated.js +4 -0
- package/dist/ui/inputs/field-css.generated.js.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.js +4 -0
- package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.d.ts +2 -0
- package/dist/ui/inputs/picker-css.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
- package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.js +4 -0
- package/dist/ui/inputs/picker-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.js +4 -0
- package/dist/ui/inputs/picker-css.js.map +1 -0
- package/dist/ui/inputs/picker-icons.d.ts +12 -0
- package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
- package/dist/ui/inputs/picker-icons.js +29 -0
- package/dist/ui/inputs/picker-icons.js.map +1 -0
- package/dist/ui/inputs/picker-logic.d.ts +33 -0
- package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
- package/dist/ui/inputs/picker-logic.js +68 -0
- package/dist/ui/inputs/picker-logic.js.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.js +4 -0
- package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
- package/dist/ui/layout/PanelDock.d.ts +132 -0
- package/dist/ui/layout/PanelDock.d.ts.map +1 -0
- package/dist/ui/layout/PanelDock.js +390 -0
- package/dist/ui/layout/PanelDock.js.map +1 -0
- package/dist/ui/layout/QuickToolbar.d.ts +54 -0
- package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
- package/dist/ui/layout/QuickToolbar.js +254 -0
- package/dist/ui/layout/QuickToolbar.js.map +1 -0
- package/dist/ui/layout/SplitGroup.d.ts +37 -0
- package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
- package/dist/ui/layout/SplitGroup.js +36 -0
- package/dist/ui/layout/SplitGroup.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.js +4 -0
- package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.js +4 -0
- package/dist/ui/layout/panel-dock-css.js.map +1 -0
- package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
- package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-logic.js +110 -0
- package/dist/ui/layout/panel-dock-logic.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.js +40 -0
- package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
- package/dist/ui/layout/resizer.d.ts +29 -0
- package/dist/ui/layout/resizer.d.ts.map +1 -0
- package/dist/ui/layout/resizer.js +42 -0
- package/dist/ui/layout/resizer.js.map +1 -0
- package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
- package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/split-group-css.generated.js +4 -0
- package/dist/ui/layout/split-group-css.generated.js.map +1 -0
- package/dist/ui/navigation/Pagination.d.ts +59 -0
- package/dist/ui/navigation/Pagination.d.ts.map +1 -0
- package/dist/ui/navigation/Pagination.js +112 -0
- package/dist/ui/navigation/Pagination.js.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.js +4 -0
- package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
- package/dist/ui/navigation/pagination-logic.d.ts +36 -0
- package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-logic.js +73 -0
- package/dist/ui/navigation/pagination-logic.js.map +1 -0
- package/dist/ui/official.js +2 -2
- package/dist/ui/official.js.map +1 -1
- package/dist/utils/i18n.d.ts +2 -2
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/docs/README.md +2 -1
- package/docs/design/architecture.md +9 -8
- package/docs/design/copywriting.md +23 -0
- package/docs/design/external/dsh-host.md +5 -5
- package/docs/design/structure.md +132 -128
- package/docs/design/style.md +5 -5
- package/docs/help/utils.doc.ts +3 -3
- package/docs/help/utils.md +3 -3
- package/docs/requirements.md +30 -290
- package/package.json +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 侧边抽屉(SideSheet)—— 从屏幕左/右缘滑入的**覆盖式**浮层。
|
|
3
|
+
*
|
|
4
|
+
* 与 PanelDock 的关系(用户 2026-11-02 定):**皮肤一模一样**(同一份 side-panel.css:
|
|
5
|
+
* 头部、拖拽条、关闭钮、背景阴影、入场动画),宽度也能拖;差别只有两点:
|
|
6
|
+
* · PanelDock 是布局成员(sticky 占宽、挤窄主区,调用方必须给挂载点);
|
|
7
|
+
* · SideSheet 是浮层(absolute 贴边、盖住页面,自铺遮罩,不需要挂载点);
|
|
8
|
+
* · SideSheet **没有收起**(没有耳朵、没有收起钮)—— 关就是关。
|
|
9
|
+
*
|
|
10
|
+
* 开关行为与 Modal 一致:渲染即显示(`{open && <SideSheet … />}`)、点遮罩 / Esc / ✕ 都能关,
|
|
11
|
+
* 三者都可关掉;遮罩与 Esc 判定走 overlay.ts 的公共件。
|
|
12
|
+
*/
|
|
13
|
+
import { createElement as h, useEffect, useRef, useState } from 'react';
|
|
14
|
+
import { t } from '../../utils/i18n.js';
|
|
15
|
+
import { ensureComponentStyles } from '../infra/css.js';
|
|
16
|
+
import { SIDE_PANEL_CSS } from '../infra/side-panel-css.js';
|
|
17
|
+
import { SIDE_SHEET_CSS } from './side-sheet-css.js';
|
|
18
|
+
import { OverlayLockCatcher, OverlayLockedProvider, OverlayMask, useEscapeClose, useLockGuards } from '../infra/overlay.js';
|
|
19
|
+
import { startResizeLayoutWidth } from '../layout/resizer.js';
|
|
20
|
+
import { FlipText } from '../display/FlipText.js';
|
|
21
|
+
export function SideSheet(props) {
|
|
22
|
+
ensureComponentStyles('side-panel', SIDE_PANEL_CSS);
|
|
23
|
+
ensureComponentStyles('side-sheet', SIDE_SHEET_CSS);
|
|
24
|
+
const tt = props.translate ?? t;
|
|
25
|
+
const side = props.side ?? 'left';
|
|
26
|
+
// busy / locked 都是否决项:三条关闭路径一起封死(✕ 见下面 showClose)。
|
|
27
|
+
const busy = props.busy === true;
|
|
28
|
+
const locked = props.locked === true;
|
|
29
|
+
const denyClose = busy || locked;
|
|
30
|
+
const closeOnMask = !denyClose && props.closeOnMask !== false;
|
|
31
|
+
useEscapeClose(!denyClose && props.escClose !== false, denyClose ? undefined : props.onClose);
|
|
32
|
+
useLockGuards(locked);
|
|
33
|
+
// 空串等同于没给:抽屉常驻渲染时,传 "" 就能把上一轮的提示清干净、不留占位。
|
|
34
|
+
const notice = props.notice === '' ? undefined : props.notice;
|
|
35
|
+
const [width, setWidth] = useState(props.width ?? 460);
|
|
36
|
+
const panelRef = useRef(null);
|
|
37
|
+
// 收起动效(用户 2026-11-02):open=false 时先播完 dshpc-side-out 再真正卸载;
|
|
38
|
+
// 中途又被打开就撤销,不留残影。
|
|
39
|
+
const leaving = props.open === false;
|
|
40
|
+
// 挂载时就是关着的 ⇒ 直接不渲染(否则开页面会闪一下抽屉)。
|
|
41
|
+
const [unmounted, setUnmounted] = useState(leaving);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (!leaving)
|
|
44
|
+
setUnmounted(false);
|
|
45
|
+
}, [leaving]);
|
|
46
|
+
if (unmounted)
|
|
47
|
+
return null;
|
|
48
|
+
const showClose = props.closable !== false && props.onClose !== undefined && !denyClose;
|
|
49
|
+
const hasHeader = props.header !== null;
|
|
50
|
+
const beginResize = (event) => {
|
|
51
|
+
const element = panelRef.current;
|
|
52
|
+
if (element === null || typeof window === 'undefined')
|
|
53
|
+
return;
|
|
54
|
+
const startX = event.clientX;
|
|
55
|
+
const startWidth = element.getBoundingClientRect().width;
|
|
56
|
+
const min = props.minWidth ?? 320;
|
|
57
|
+
const businessMax = props.maxWidth ?? Number.POSITIVE_INFINITY;
|
|
58
|
+
element.classList.add('dshpc-side-surface--resizing');
|
|
59
|
+
startResizeLayoutWidth({
|
|
60
|
+
startEvent: event,
|
|
61
|
+
rafThrottle: true,
|
|
62
|
+
compute: (clientX) => {
|
|
63
|
+
// 上限 = 遮罩盒宽度(已按右侧分栏让位),再夹业务上限。
|
|
64
|
+
const box = element.parentElement?.getBoundingClientRect().width ?? window.innerWidth;
|
|
65
|
+
const max = Math.max(min, Math.min(box, businessMax));
|
|
66
|
+
// 左侧抽屉往右拖变宽,右侧抽屉反过来。
|
|
67
|
+
const raw = side === 'left' ? startWidth + (clientX - startX) : startWidth + (startX - clientX);
|
|
68
|
+
return Math.round(Math.min(Math.max(raw, min), max));
|
|
69
|
+
},
|
|
70
|
+
onMove: (next) => {
|
|
71
|
+
element.style.width = `${next}px`;
|
|
72
|
+
},
|
|
73
|
+
onCommit: (next) => {
|
|
74
|
+
element.classList.remove('dshpc-side-surface--resizing');
|
|
75
|
+
setWidth(next);
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const closeButton = (floating) => !showClose
|
|
80
|
+
? null
|
|
81
|
+
: h('button', {
|
|
82
|
+
type: 'button',
|
|
83
|
+
className: `dshpc-dock__close ${floating ? 'dshpc-dock__close--floating' : 'dshpc-dock__close--abs'}`,
|
|
84
|
+
'aria-label': tt('dockClose'),
|
|
85
|
+
onClick: () => props.onClose?.(),
|
|
86
|
+
}, props.closeIcon ?? '✕');
|
|
87
|
+
const renderHeader = () => {
|
|
88
|
+
if (props.header === null)
|
|
89
|
+
return null;
|
|
90
|
+
if (props.header !== undefined) {
|
|
91
|
+
return h('div', { className: 'dshpc-dock__head dshpc-dock__head--custom' }, props.header);
|
|
92
|
+
}
|
|
93
|
+
return h('div', { className: 'dshpc-dock__head' }, props.icon === undefined ? null : h('div', { className: 'dshpc-dock__lead' }, props.icon), h('div', { className: 'dshpc-dock__title' }, props.title), props.extra === undefined ? null : h('div', { className: 'dshpc-dock__extra' }, props.extra));
|
|
94
|
+
};
|
|
95
|
+
return h(OverlayMask, {
|
|
96
|
+
kind: 'side',
|
|
97
|
+
closeOnMask,
|
|
98
|
+
onClose: denyClose ? undefined : props.onClose,
|
|
99
|
+
attrs: locked ? { 'data-dshpc-locked': '' } : undefined,
|
|
100
|
+
}, h(OverlayLockedProvider, { value: locked }, h('section', {
|
|
101
|
+
ref: (element) => {
|
|
102
|
+
panelRef.current = element;
|
|
103
|
+
},
|
|
104
|
+
className: `dshpc-side-surface dshpc-sheet dshpc-sheet--${side}${leaving ? ' dshpc-sheet--leaving' : ''}${locked ? ' dshpc-locked' : ''}`,
|
|
105
|
+
style: { width: `${width}px` },
|
|
106
|
+
// 收起动画结束才卸载;入场动画结束(leaving=false)在这里不算数。
|
|
107
|
+
onAnimationEnd: () => {
|
|
108
|
+
if (leaving)
|
|
109
|
+
setUnmounted(true);
|
|
110
|
+
},
|
|
111
|
+
'aria-label': typeof props.title === 'string' ? props.title : undefined,
|
|
112
|
+
// 面板上的点击不能再冒到遮罩(否则点正文就把自己关了)。
|
|
113
|
+
onClick: (e) => e.stopPropagation(),
|
|
114
|
+
}, props.resizable === false
|
|
115
|
+
? null
|
|
116
|
+
: h('div', {
|
|
117
|
+
className: 'dshpc-dock__resizer',
|
|
118
|
+
role: 'separator',
|
|
119
|
+
'aria-orientation': 'vertical',
|
|
120
|
+
'aria-label': tt('dockResize'),
|
|
121
|
+
onPointerDown: (event) => {
|
|
122
|
+
beginResize(event);
|
|
123
|
+
},
|
|
124
|
+
}), renderHeader(), closeButton(!hasHeader), h('div', { className: 'dshpc-dock__body dshpc-sheet__body' }, props.children ?? null), props.footer === undefined && notice === undefined
|
|
125
|
+
? null
|
|
126
|
+
: h('div', { className: 'dshpc-sheet__foot' }, notice === undefined ? null : h(FlipText, { text: notice, className: 'dshpc-sheet__notice', sweep: true }), props.footer),
|
|
127
|
+
// 与 Modal 同一套:透明点击层兜住自绘元素,变灰归各控件自己的 :disabled。
|
|
128
|
+
locked ? h(OverlayLockCatcher) : null)));
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=SideSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideSheet.js","sourceRoot":"","sources":["../../../src/ui/feedback/SideSheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type ButtonVariant } from '../actions/Button.js';
|
|
2
|
+
export type ToastVariant = 'info' | 'success' | 'error' | 'warning';
|
|
3
|
+
export type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
4
|
+
export interface ToastOptions {
|
|
5
|
+
variant?: ToastVariant;
|
|
6
|
+
/** 停留时长(毫秒),默认 2600。 */
|
|
7
|
+
durationMs?: number;
|
|
8
|
+
/** 整条自定义颜色(背景色)。传了就走 unstyled 自定义卡,覆盖默认语义色。 */
|
|
9
|
+
color?: string;
|
|
10
|
+
/** toast 消失(自动或手动关闭)后触发。 */
|
|
11
|
+
onDismiss?: () => void;
|
|
12
|
+
/** 出现位置(作用于全局唯一 Toaster),默认 'bottom-center'。 */
|
|
13
|
+
position?: ToastPosition;
|
|
14
|
+
}
|
|
15
|
+
/** 封装好的提示:右侧动作按钮(用我们自己的 Button 样式)。 */
|
|
16
|
+
export interface ToastAction {
|
|
17
|
+
text: string;
|
|
18
|
+
/** 按钮样式(我们的 ButtonVariant),默认 'info'(实心无边框)。 */
|
|
19
|
+
variant?: ButtonVariant;
|
|
20
|
+
onClick: () => void;
|
|
21
|
+
}
|
|
22
|
+
export interface NotifyOptions {
|
|
23
|
+
variant?: ToastVariant;
|
|
24
|
+
/** 次要说明文字(标题下方)。 */
|
|
25
|
+
description?: string;
|
|
26
|
+
durationMs?: number;
|
|
27
|
+
position?: ToastPosition;
|
|
28
|
+
/** 右侧 1–2 个动作按钮;传了就走我们封装的卡片样式并渲染按钮。 */
|
|
29
|
+
actions?: ToastAction[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 官方 Sonner 原生提示(**命令式**)。用于「官方的」对比 demo 与需要 Sonner 原味的场景。
|
|
33
|
+
* 变体:info(中性卡)/ success(绿)/ error(红)/ warning(黄,richColors)。
|
|
34
|
+
* 无 `document` 时静默跳过(Node 单测 / SSR 不炸)。
|
|
35
|
+
*/
|
|
36
|
+
export declare function showToast(message: string, opts?: ToastOptions): void;
|
|
37
|
+
/**
|
|
38
|
+
* 我们封装好的提示(**推荐项目内使用**):统一卡片样式(灰/绿/红/黄,跟随明暗皮肤),
|
|
39
|
+
* 右侧可挂 1–2 个**我们自己的 Button** 动作按钮,点击后自动关闭并调用你的事件。
|
|
40
|
+
*
|
|
41
|
+
* 底层仍是 Sonner(动画 / 定位 / 堆叠),但视觉与交互是我们定制的。
|
|
42
|
+
* 无 `document` 时静默跳过。
|
|
43
|
+
*/
|
|
44
|
+
export declare function notify(message: string, opts?: NotifyOptions): void;
|
|
45
|
+
//# sourceMappingURL=Toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/Toast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGjE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnE,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAA;AAElB,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,uCAAuC;IACvC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB;AAqMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAapE;AAwBD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAalE"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { createElement as h } from 'react';
|
|
2
|
+
import { createRoot } from 'react-dom/client';
|
|
3
|
+
import { Toaster, toast } from 'sonner';
|
|
4
|
+
import { Button } from '../actions/Button.js';
|
|
5
|
+
import { claimToastHost } from './toast-host.js';
|
|
6
|
+
const DEFAULT_MS = 2600;
|
|
7
|
+
const ROOT_ID = 'dshpc-toast-root';
|
|
8
|
+
// 宿主暗色判据是 body[data-ds-dark-theme](不是 prefers-color-scheme),
|
|
9
|
+
// Sonner 的 theme 必须显式传,故从这里读并监听变化。
|
|
10
|
+
function currentTheme() {
|
|
11
|
+
return document.body.hasAttribute('data-ds-dark-theme') ? 'dark' : 'light';
|
|
12
|
+
}
|
|
13
|
+
// ── 跨副本共享宿主 ──
|
|
14
|
+
// core 被打进每个插件 bundle,本模块的 root / position 等状态各副本一份;同页多插件
|
|
15
|
+
// 会各挂一个同 id 容器 + 一个 Toaster,叠在同一屏位。sonner 的 toast() / toast.custom()
|
|
16
|
+
// 是模块级 store(B 副本调自己 bundle 的 sonner,事件只进 B 的 store),所以只能共享
|
|
17
|
+
// 「命令式入口」、不能共享 React root:由先到场的副本建宿主,其余副本交给它渲染。
|
|
18
|
+
let sharedHost = null;
|
|
19
|
+
function toasterHost() {
|
|
20
|
+
if (sharedHost !== null)
|
|
21
|
+
return sharedHost;
|
|
22
|
+
if (typeof document === 'undefined' || typeof MutationObserver === 'undefined')
|
|
23
|
+
return null;
|
|
24
|
+
sharedHost = claimToastHost(createToasterHost);
|
|
25
|
+
return sharedHost;
|
|
26
|
+
}
|
|
27
|
+
function createToasterHost() {
|
|
28
|
+
let root = null;
|
|
29
|
+
let themeObserver = null;
|
|
30
|
+
let position = 'bottom-center';
|
|
31
|
+
function renderToaster() {
|
|
32
|
+
if (root === null)
|
|
33
|
+
return;
|
|
34
|
+
root.render(h(Toaster, {
|
|
35
|
+
theme: currentTheme(),
|
|
36
|
+
position,
|
|
37
|
+
// richColors:success=绿整条 / error=红整条 / warning=黄整条(Sonner 自带);
|
|
38
|
+
// 不开 closeButton:在宿主里吃不到 Sonner 的 CSS 变量,会渲染成白底方块叉(真机踩过)。
|
|
39
|
+
richColors: true,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
// 全局唯一 Toaster:命令式 toast() 需要一个挂着的 Toaster 才能渲染。
|
|
43
|
+
function ensureToaster() {
|
|
44
|
+
if (root !== null)
|
|
45
|
+
return;
|
|
46
|
+
// 双闸:容器可能已被他人建过(重复 DOM id 会破坏 getElementById 语义)。
|
|
47
|
+
let container = document.getElementById(ROOT_ID);
|
|
48
|
+
if (container === null) {
|
|
49
|
+
container = document.createElement('div');
|
|
50
|
+
container.id = ROOT_ID;
|
|
51
|
+
document.body.appendChild(container);
|
|
52
|
+
}
|
|
53
|
+
root = createRoot(container);
|
|
54
|
+
renderToaster();
|
|
55
|
+
themeObserver = new MutationObserver(() => renderToaster());
|
|
56
|
+
themeObserver.observe(document.body, {
|
|
57
|
+
attributes: true,
|
|
58
|
+
attributeFilter: ['data-ds-dark-theme'],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function showNative(payload) {
|
|
62
|
+
const duration = payload.durationMs;
|
|
63
|
+
const onDismiss = payload.onDismiss;
|
|
64
|
+
if (payload.color !== undefined) {
|
|
65
|
+
toast(payload.message, {
|
|
66
|
+
duration,
|
|
67
|
+
unstyled: true,
|
|
68
|
+
onDismiss,
|
|
69
|
+
className: 'dshpc-toast-custom',
|
|
70
|
+
style: {
|
|
71
|
+
background: payload.color,
|
|
72
|
+
color: '#fff',
|
|
73
|
+
minWidth: '320px',
|
|
74
|
+
minHeight: '48px',
|
|
75
|
+
padding: '12px 16px',
|
|
76
|
+
borderRadius: '8px',
|
|
77
|
+
boxShadow: '0 6px 16px rgba(0, 0, 0, 0.18)',
|
|
78
|
+
fontSize: '14px',
|
|
79
|
+
lineHeight: '20px',
|
|
80
|
+
boxSizing: 'border-box',
|
|
81
|
+
display: 'flex',
|
|
82
|
+
alignItems: 'center',
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const variant = payload.variant;
|
|
88
|
+
if (variant === 'success') {
|
|
89
|
+
toast.success(payload.message, { duration, onDismiss });
|
|
90
|
+
}
|
|
91
|
+
else if (variant === 'error') {
|
|
92
|
+
toast.error(payload.message, { duration, onDismiss });
|
|
93
|
+
}
|
|
94
|
+
else if (variant === 'warning') {
|
|
95
|
+
toast.warning(payload.message, { duration, onDismiss });
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
toast(payload.message, { duration, onDismiss });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function showCard(payload) {
|
|
102
|
+
const palette = notifyPalette(payload.variant, currentTheme());
|
|
103
|
+
const duration = payload.durationMs;
|
|
104
|
+
const actions = payload.actions;
|
|
105
|
+
const id = toast.custom(() => h('div', {
|
|
106
|
+
style: {
|
|
107
|
+
display: 'flex',
|
|
108
|
+
alignItems: 'center',
|
|
109
|
+
gap: '12px',
|
|
110
|
+
minWidth: '320px',
|
|
111
|
+
minHeight: '48px',
|
|
112
|
+
padding: '12px 16px',
|
|
113
|
+
borderRadius: '10px',
|
|
114
|
+
boxShadow: '0 6px 16px rgba(0, 0, 0, 0.18)',
|
|
115
|
+
background: palette.bg,
|
|
116
|
+
color: palette.fg,
|
|
117
|
+
boxSizing: 'border-box',
|
|
118
|
+
fontSize: '14px',
|
|
119
|
+
lineHeight: '20px',
|
|
120
|
+
},
|
|
121
|
+
}, h('span', {
|
|
122
|
+
style: {
|
|
123
|
+
flexShrink: 0,
|
|
124
|
+
width: '20px',
|
|
125
|
+
height: '20px',
|
|
126
|
+
borderRadius: '50%',
|
|
127
|
+
background: 'rgba(255, 255, 255, 0.25)',
|
|
128
|
+
display: 'inline-flex',
|
|
129
|
+
alignItems: 'center',
|
|
130
|
+
justifyContent: 'center',
|
|
131
|
+
fontSize: '13px',
|
|
132
|
+
fontWeight: 700,
|
|
133
|
+
},
|
|
134
|
+
}, palette.glyph), h('div', { style: { flex: 1, minWidth: 0 } }, h('div', { style: { fontWeight: 600 } }, payload.message), payload.description !== undefined
|
|
135
|
+
? h('div', { style: { opacity: 0.9, fontSize: '13px', marginTop: '2px', whiteSpace: 'pre-line' } }, payload.description)
|
|
136
|
+
: null), actions !== undefined && actions.length > 0
|
|
137
|
+
? h('div', { style: { display: 'flex', gap: '8px', flexShrink: 0 } }, ...actions.slice(0, 2).map((a) => h(Button, {
|
|
138
|
+
variant: a.variant ?? 'info',
|
|
139
|
+
size: 'md',
|
|
140
|
+
onClick: () => {
|
|
141
|
+
a.onClick();
|
|
142
|
+
toast.dismiss(id);
|
|
143
|
+
},
|
|
144
|
+
}, a.text)))
|
|
145
|
+
: null), { duration, unstyled: true });
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
show(payload) {
|
|
149
|
+
ensureToaster();
|
|
150
|
+
renderToaster(); // 应用最新 position / theme(root 已存在时也要重渲染)
|
|
151
|
+
if (payload.style === 'card')
|
|
152
|
+
showCard(payload);
|
|
153
|
+
else
|
|
154
|
+
showNative(payload);
|
|
155
|
+
},
|
|
156
|
+
setPosition(next) {
|
|
157
|
+
position = next;
|
|
158
|
+
renderToaster();
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 官方 Sonner 原生提示(**命令式**)。用于「官方的」对比 demo 与需要 Sonner 原味的场景。
|
|
164
|
+
* 变体:info(中性卡)/ success(绿)/ error(红)/ warning(黄,richColors)。
|
|
165
|
+
* 无 `document` 时静默跳过(Node 单测 / SSR 不炸)。
|
|
166
|
+
*/
|
|
167
|
+
export function showToast(message, opts) {
|
|
168
|
+
if (typeof document === 'undefined')
|
|
169
|
+
return;
|
|
170
|
+
const host = toasterHost();
|
|
171
|
+
if (host === null)
|
|
172
|
+
return;
|
|
173
|
+
if (opts?.position !== undefined)
|
|
174
|
+
host.setPosition(opts.position);
|
|
175
|
+
host.show({
|
|
176
|
+
message,
|
|
177
|
+
variant: opts?.variant ?? 'info',
|
|
178
|
+
style: 'native',
|
|
179
|
+
durationMs: opts?.durationMs ?? DEFAULT_MS,
|
|
180
|
+
color: opts?.color,
|
|
181
|
+
onDismiss: opts?.onDismiss,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// 我们封装卡片的配色:info 走灰(不是纯黑,随明暗切换);其余用整条语义色。
|
|
185
|
+
function notifyPalette(variant, theme) {
|
|
186
|
+
switch (variant) {
|
|
187
|
+
case 'success':
|
|
188
|
+
return { bg: '#16a34a', fg: '#ffffff', glyph: '✓' };
|
|
189
|
+
// error / warning 用哑光降饱和档:实心卡上加透明度会透出底层内容、伤可读性,
|
|
190
|
+
// 故改为压暗一档的色相(设计师口径:冷静的严重度,而非警报荧光)。
|
|
191
|
+
case 'error':
|
|
192
|
+
return { bg: '#c0392b', fg: '#ffffff', glyph: '✕' };
|
|
193
|
+
case 'warning':
|
|
194
|
+
return { bg: '#e0922f', fg: '#1f2937', glyph: '!' };
|
|
195
|
+
default:
|
|
196
|
+
return theme === 'dark'
|
|
197
|
+
? { bg: '#3f3f46', fg: '#fafafa', glyph: 'i' }
|
|
198
|
+
: { bg: '#f4f4f5', fg: '#18181b', glyph: 'i' };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* 我们封装好的提示(**推荐项目内使用**):统一卡片样式(灰/绿/红/黄,跟随明暗皮肤),
|
|
203
|
+
* 右侧可挂 1–2 个**我们自己的 Button** 动作按钮,点击后自动关闭并调用你的事件。
|
|
204
|
+
*
|
|
205
|
+
* 底层仍是 Sonner(动画 / 定位 / 堆叠),但视觉与交互是我们定制的。
|
|
206
|
+
* 无 `document` 时静默跳过。
|
|
207
|
+
*/
|
|
208
|
+
export function notify(message, opts) {
|
|
209
|
+
if (typeof document === 'undefined')
|
|
210
|
+
return;
|
|
211
|
+
const host = toasterHost();
|
|
212
|
+
if (host === null)
|
|
213
|
+
return;
|
|
214
|
+
if (opts?.position !== undefined)
|
|
215
|
+
host.setPosition(opts.position);
|
|
216
|
+
host.show({
|
|
217
|
+
message,
|
|
218
|
+
variant: opts?.variant ?? 'info',
|
|
219
|
+
style: 'card',
|
|
220
|
+
description: opts?.description,
|
|
221
|
+
durationMs: opts?.durationMs ?? DEFAULT_MS,
|
|
222
|
+
actions: opts?.actions,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/ui/feedback/Toast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-css.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const FEEDBACK_CSS = "/* \u906E\u7F69\u4E0E\u5934\u90E8\u5728 overlay.css\uFF0C\u8868\u9762\uFF08\u5E95\u8272/\u63CF\u8FB9/\u5706\u89D2/\u9634\u5F71\uFF09\u5728 panel.css \u7684 --modal \u6863\uFF0C\n \u8FD9\u91CC\u53EA\u5269**\u5BB6\u65CF\u5E03\u5C40\u4E0E\u5C3A\u5BF8**\u3002\u4E09\u8005\u5404\u7BA1\u4E00\u6BB5\uFF0C\u522B\u518D\u628A\u76AE\u80A4\u6284\u56DE\u6765\u3002 */\n.dshpc-modal{\n display:flex;flex-direction:column;box-sizing:border-box;\n}\n/* body = \u552F\u4E00\u6EDA\u52A8\u5BB9\u5668\uFF1A\u5185\u8DDD\u4E0E\u6EDA\u52A8\u90FD\u5F52\u5B83\uFF08\u6EDA\u52A8\u6761\u8D34\u9762\u677F\u53F3\u7F18\uFF0C\u4E0D\u88AB\u5185\u8DDD\u6324\u8FDB\u6765\uFF09\uFF1B\n \u5185\u5BB9\u6309\u6D41\u6392\uFF0C\u4E0D\u8BBE height:100%\u3001\u4E0D\u81EA\u5DF1\u5F00\u6EDA\u52A8\u6761\u3002\n \u900F\u660E\u53F3\u8FB9\u6846 = \u8BA9\u6EDA\u52A8\u6761\u4E0E\u9762\u677F\u53F3\u7F18\u9694 1px\uFF08\u53E3\u5F84\u89C1 style.md \u00A7\u6EDA\u52A8\u6761\u8BA9\u4F4D\uFF09\u3002 */\n.dshpc-modal__body{flex:1 1 auto;min-height:0;overflow:auto;padding:17px 18px;border-right:1px solid transparent}\n/* \u5E95\u680F\u4E0E\u5934\u90E8\u540C\u4E00\u53E3\u5F84\uFF082026-11-02 \u7528\u6237\uFF09\uFF1A\u4E0A\u4E0B\u5185\u8DDD\u76F8\u7B49\u3001\u5185\u5BB9\u5782\u76F4\u5C45\u4E2D\u3001\u9ED8\u8BA4\u5E26\u4E00\u6761\u5206\u9694\u7EBF\u3002\n \u7EBF\u53EF\u7531\u6D88\u8D39\u65B9\u5173\u6389\uFF08Modal \u7684 footerDivider=false\uFF09\u2014\u2014 \u786E\u8BA4\u6846\u5BB6\u65CF\u672C\u6765\u5C31\u6CA1\u6709\u7EBF\uFF08\u4E0E\u5934\u90E8\u4E00\u81F4\uFF09\u3002 */\n.dshpc-modal .dshpc-modal__foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:18px;border-top:1px solid var(--dshpc-border)}\n.dshpc-modal .dshpc-modal__foot--bare{border-top:none}\n/* \u5E95\u680F\u5DE6\u4FA7\u7684\u8FC7\u7A0B\u63D0\u793A\uFF1A\u5403\u6389\u6309\u94AE\u4E4B\u5916\u7684\u5269\u4F59\u5BBD\uFF0C\u8D85\u957F\u4EA4\u7ED9 FlipText \u7701\u7565 / hover \u8DD1\u9A6C\u706F\u3002 */\n.dshpc-modal .dshpc-modal__notice{flex:1 1 auto;min-width:0;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);color:var(--dshpc-fg-3)}\n/* \u81EA\u7ED8 toast \u7684\u6837\u5F0F\u5728 2026-11-03 \u5220\u9664\uFF1AToast \u65E9\u5DF2\u6539\u8D70\u5BBF\u4E3B toast()\uFF08Toast.ts \u7684 showNative\uFF09\uFF0C\n .dshpc-toast* \u8FD9\u51E0\u4E2A\u7C7B\u6CA1\u6709\u4EFB\u4F55\u6D88\u8D39\u8005\uFF0C\u7559\u7740\u53EA\u662F\u6B7B\u6837\u5F0F\uFF08\u8FD8\u5E26\u7740\u88F8 z-index \u4E0E\u88F8\u9634\u5F71\uFF09\u3002 */\n.dshpc-error__retry{\n margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;\n}\n/* \u539F\u751F\u5F39\u7A97\u6F14\u793A\uFF1A\u7ECF\u5BBF\u4E3B Modal \u7684 contentClassName \u6CE8\u5165\uFF0C\u8BC1\u660E\u5BBF\u4E3B\u5185\u5BB9\u533A\u5C3A\u5BF8\u53EF\u7ECF\u7C7B\u540D\u81EA\u5B9A\u4E49\u3002 */\n.dshpc-native-demo-content{max-width:520px}\n/* \u5934\u90E8\u4FE1\u53F7\u56FE\u6807\uFF08AlertModal \u6309 severity \u6CE8\u5165\uFF09\uFF1A\u81EA\u542B\u914D\u8272\uFF0C\u8272\u503C\u5728 tokens.css \u7684 --dshpc-sev-*\u3002 */\n.dshpc-alert-sev{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;color:var(--dshpc-on-signal);flex:none}\n.dshpc-alert-sev--info{background:var(--dshpc-sev-info)}\n.dshpc-alert-sev--success{background:var(--dshpc-sev-success)}\n.dshpc-alert-sev--warning{background:var(--dshpc-sev-warning)}\n.dshpc-alert-sev--error{background:var(--dshpc-sev-error)}\n/* \u5C0F\u786E\u8BA4\u6846\u5BB6\u65CF\uFF08sm\uFF09\uFF1A\u4E25\u683C\u6284\u5144\u5F1F\u9879\u76EE renderConfirm \u7684 dialogStyle\uFF08task-list.tsx:456\uFF09\u2014\u2014\n 360px \u5BBD / 18px \u5185\u8DDD / \u5934\u90E8\u65E0\u5206\u9694\u7EBF / \u8BF4\u660E\u6587\u5B57 fg-2 / \u5E95\u90E8\u6309\u94AE\u53F3\u5BF9\u9F50\u3002 */\n.dshpc-modal--sm{padding:18px}\n.dshpc-modal--sm .dshpc-overlay-head{padding:0 0 8px;border-bottom:none}\n.dshpc-modal--sm .dshpc-modal__body{padding:0 0 14px;overflow:visible;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-2);line-height:var(--dshpc-line-sm)}\n.dshpc-modal--sm .dshpc-modal__foot{padding:0;border-top:none}\n/* \u9501\u5B9A\u6001\uFF08locked\uFF09\uFF1A\u53EA\u7ED9\u900F\u660E\u70B9\u51FB\u5C42\u505A\u5B9A\u4F4D\u951A\u70B9\uFF0C**\u4E0D\u538B\u4EFB\u4F55\u906E\u7F69** \u2014\u2014 \u76D6\u7070\u4F1A\u8BA9\u4EBA\u4EE5\u4E3A\u754C\u9762\u574F\u4E86\uFF1B\n \u53D8\u7070\u662F\u5404\u63A7\u4EF6\u81EA\u5DF1 :disabled \u7684\u4E8B\uFF08Button / Input / Picker \u2026 \u672C\u6765\u5C31\u6709\u90A3\u5957\u6837\u5F0F\uFF09\u3002 */\n.dshpc-modal--locked{position:relative}\n";
|
|
2
|
+
//# sourceMappingURL=feedback-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,shJAA45E,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// ⚠️ 生成物,勿手改。真源 = src/ui/feedback/feedback.css
|
|
2
|
+
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
+
export const FEEDBACK_CSS = "/* 遮罩与头部在 overlay.css,表面(底色/描边/圆角/阴影)在 panel.css 的 --modal 档,\n 这里只剩**家族布局与尺寸**。三者各管一段,别再把皮肤抄回来。 */\n.dshpc-modal{\n display:flex;flex-direction:column;box-sizing:border-box;\n}\n/* body = 唯一滚动容器:内距与滚动都归它(滚动条贴面板右缘,不被内距挤进来);\n 内容按流排,不设 height:100%、不自己开滚动条。\n 透明右边框 = 让滚动条与面板右缘隔 1px(口径见 style.md §滚动条让位)。 */\n.dshpc-modal__body{flex:1 1 auto;min-height:0;overflow:auto;padding:17px 18px;border-right:1px solid transparent}\n/* 底栏与头部同一口径(2026-11-02 用户):上下内距相等、内容垂直居中、默认带一条分隔线。\n 线可由消费方关掉(Modal 的 footerDivider=false)—— 确认框家族本来就没有线(与头部一致)。 */\n.dshpc-modal .dshpc-modal__foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:18px;border-top:1px solid var(--dshpc-border)}\n.dshpc-modal .dshpc-modal__foot--bare{border-top:none}\n/* 底栏左侧的过程提示:吃掉按钮之外的剩余宽,超长交给 FlipText 省略 / hover 跑马灯。 */\n.dshpc-modal .dshpc-modal__notice{flex:1 1 auto;min-width:0;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);color:var(--dshpc-fg-3)}\n/* 自绘 toast 的样式在 2026-11-03 删除:Toast 早已改走宿主 toast()(Toast.ts 的 showNative),\n .dshpc-toast* 这几个类没有任何消费者,留着只是死样式(还带着裸 z-index 与裸阴影)。 */\n.dshpc-error__retry{\n margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;\n}\n/* 原生弹窗演示:经宿主 Modal 的 contentClassName 注入,证明宿主内容区尺寸可经类名自定义。 */\n.dshpc-native-demo-content{max-width:520px}\n/* 头部信号图标(AlertModal 按 severity 注入):自含配色,色值在 tokens.css 的 --dshpc-sev-*。 */\n.dshpc-alert-sev{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;color:var(--dshpc-on-signal);flex:none}\n.dshpc-alert-sev--info{background:var(--dshpc-sev-info)}\n.dshpc-alert-sev--success{background:var(--dshpc-sev-success)}\n.dshpc-alert-sev--warning{background:var(--dshpc-sev-warning)}\n.dshpc-alert-sev--error{background:var(--dshpc-sev-error)}\n/* 小确认框家族(sm):严格抄兄弟项目 renderConfirm 的 dialogStyle(task-list.tsx:456)——\n 360px 宽 / 18px 内距 / 头部无分隔线 / 说明文字 fg-2 / 底部按钮右对齐。 */\n.dshpc-modal--sm{padding:18px}\n.dshpc-modal--sm .dshpc-overlay-head{padding:0 0 8px;border-bottom:none}\n.dshpc-modal--sm .dshpc-modal__body{padding:0 0 14px;overflow:visible;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-2);line-height:var(--dshpc-line-sm)}\n.dshpc-modal--sm .dshpc-modal__foot{padding:0;border-top:none}\n/* 锁定态(locked):只给透明点击层做定位锚点,**不压任何遮罩** —— 盖灰会让人以为界面坏了;\n 变灰是各控件自己 :disabled 的事(Button / Input / Picker … 本来就有那套样式)。 */\n.dshpc-modal--locked{position:relative}\n";
|
|
4
|
+
//# sourceMappingURL=feedback-css.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-css.generated.js","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.generated.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,y5EAAy5E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-css.js","sourceRoot":"","sources":["../../../src/ui/feedback/feedback-css.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface HostToastAction {
|
|
2
|
+
text: string;
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
}
|
|
5
|
+
export interface HostToastOptions {
|
|
6
|
+
/** 仅宿主原生支持 'success' 一个语义色;不传则是默认中性条。 */
|
|
7
|
+
tone?: 'success';
|
|
8
|
+
/** 停留时长(毫秒),默认 3000。 */
|
|
9
|
+
holdMs?: number;
|
|
10
|
+
/** 右侧动作(宿主原生渲染为蓝色可点文字)。 */
|
|
11
|
+
actions?: HostToastAction[];
|
|
12
|
+
/** 淡出完成后触发。 */
|
|
13
|
+
onDismiss?: () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 宿主原生 Toast(直接包 `@deepseek-ai/dsh-client-ui-primitives` 的 `Toast`)。
|
|
17
|
+
*
|
|
18
|
+
* 放在独立子路径 `dsh-plugin-core/ui/host` 导出,**不**经 `dsh-plugin-core/ui` 入口,
|
|
19
|
+
* 避免 `ui` 入口静态 import 官方平台模块导致 Node 单测崩(旧坑)。
|
|
20
|
+
* 仅用于「宿主原生」对比 demo;项目内通常请用 `notify`。
|
|
21
|
+
*/
|
|
22
|
+
export declare function showHostToast(message: string, opts?: HostToastOptions): void;
|
|
23
|
+
//# sourceMappingURL=host-toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-toast.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/host-toast.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,eAAe;IACf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAwB5E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createElement as h } from 'react';
|
|
2
|
+
import { createRoot } from 'react-dom/client';
|
|
3
|
+
import { Official } from '../official.js';
|
|
4
|
+
/**
|
|
5
|
+
* 宿主原生 Toast(直接包 `@deepseek-ai/dsh-client-ui-primitives` 的 `Toast`)。
|
|
6
|
+
*
|
|
7
|
+
* 放在独立子路径 `dsh-plugin-core/ui/host` 导出,**不**经 `dsh-plugin-core/ui` 入口,
|
|
8
|
+
* 避免 `ui` 入口静态 import 官方平台模块导致 Node 单测崩(旧坑)。
|
|
9
|
+
* 仅用于「宿主原生」对比 demo;项目内通常请用 `notify`。
|
|
10
|
+
*/
|
|
11
|
+
export function showHostToast(message, opts) {
|
|
12
|
+
if (typeof document === 'undefined')
|
|
13
|
+
return;
|
|
14
|
+
const container = document.createElement('div');
|
|
15
|
+
document.body.appendChild(container);
|
|
16
|
+
const root = createRoot(container);
|
|
17
|
+
const close = () => {
|
|
18
|
+
root.unmount();
|
|
19
|
+
container.remove();
|
|
20
|
+
};
|
|
21
|
+
root.render(h(Official.Toast, {
|
|
22
|
+
text: message,
|
|
23
|
+
tone: opts?.tone,
|
|
24
|
+
holdMs: opts?.holdMs ?? 3000,
|
|
25
|
+
actions: opts?.actions !== undefined
|
|
26
|
+
? opts.actions.map((a) => ({ label: a.text, onClick: a.onClick }))
|
|
27
|
+
: undefined,
|
|
28
|
+
onDone: () => {
|
|
29
|
+
close();
|
|
30
|
+
opts?.onDismiss?.();
|
|
31
|
+
},
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=host-toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-toast.js","sourceRoot":"","sources":["../../../src/ui/feedback/host-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAkBzC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAuB;IACpE,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,IAAI,GAAS,UAAU,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,SAAS,CAAC,MAAM,EAAE,CAAA;IACpB,CAAC,CAAA;IACD,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;QAC5B,OAAO,EACL,IAAI,EAAE,OAAO,KAAK,SAAS;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,SAAS;QACf,MAAM,EAAE,GAAG,EAAE;YACX,KAAK,EAAE,CAAA;YACP,IAAI,EAAE,SAAS,EAAE,EAAE,CAAA;QACrB,CAAC;KACF,CAAC,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-bar-art.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-art.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAIxC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const BAR_PATHS = [
|
|
2
|
+
{ d: "M0 384m128 0l768 0q128 0 128 128l0 0q0 128-128 128l-768 0q-128 0-128-128l0 0q0-128 128-128Z", fill: "#455A64" },
|
|
3
|
+
{ d: "M128 426.666667h554.666667v170.666666H128a85.333333 85.333333 0 0 1-85.333333-85.333333 85.333333 85.333333 0 0 1 85.333333-85.333333z", fill: "#2196F3" },
|
|
4
|
+
{ d: "M256 426.666667l-42.666667 170.666666h42.666667l42.666667-170.666666h-42.666667zM170.666667 426.666667l-42.666667 170.666666h42.666667l42.666666-170.666666H170.666667zM53.76 553.173333a83.84 83.84 0 0 0 34.133333 33.706667L128 426.666667a85.333333 85.333333 0 0 0-46.08 13.653333zM341.333333 426.666667l-42.666666 170.666666h42.666666l42.666667-170.666666h-42.666667zM640 597.333333h42.666667v-170.666666l-42.666667 170.666666zM426.666667 426.666667l-42.666667 170.666666h42.666667l42.666666-170.666666h-42.666666zM597.333333 426.666667l-42.666666 170.666666h42.666666l42.666667-170.666666h-42.666667zM512 426.666667l-42.666667 170.666666h42.666667l42.666667-170.666666h-42.666667z", fill: "#42A5F5" },
|
|
5
|
+
];
|
|
6
|
+
//# sourceMappingURL=loader-bar-art.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-bar-art.js","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-art.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,EAAE,CAAC,EAAE,6FAA6F,EAAE,IAAI,EAAE,SAAS,EAAE;IACrH,EAAE,CAAC,EAAE,wIAAwI,EAAE,IAAI,EAAE,SAAS,EAAE;IAChK,EAAE,CAAC,EAAE,2qBAA2qB,EAAE,IAAI,EAAE,SAAS,EAAE;CACpsB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const LOADER_BAR_CSS = "/* \u2500\u2500 LoaderBar\uFF1A\u80F6\u56CA\u4E0D\u5B9A\u8FDB\u5EA6 loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u6E90\u56FE\u5F62\u662F\u300C\u8F68\u9053 + \u84DD\u8272\u6BB5 + \u659C\u7EB9\u300D\u7684\u80F6\u56CA\u6761\u3002\u4E0E Loader \u540C\u65CF\uFF08Loader \u5BB6\u65CF\uFF1A\n Loader \u901A\u7528\u56FE\u6807 / LoaderBar \u80F6\u56CA\u4E0D\u5B9A\u8FDB\u5EA6\uFF09\uFF0C\u540C\u6837\u53EA\u753B\u56FE\u5F62\uFF1A\u4E0D\u5E26\u80CC\u666F\u3001\u4E0D\u5E26\u5B9A\u4F4D\u3002\n\n \u52A8\u7684\u662F**\u659C\u7EB9**\uFF0C\u4E0D\u662F\u84DD\u8272\u6BB5\uFF1A\u84DD\u8272\u90A3\u534A\u622A\u56FA\u5B9A\u4E0D\u52A8\uFF0C\u53EA\u6709\u5B83\u4E0A\u9762\u7684\u4E00\u9053\u9053\u7EC6\u659C\u6761\n \u5728\u8D70\uFF0C\u770B\u7740\u50CF\u6761\u7EB9\u5728\u6D41\u52A8 / \u8F6C\u3002\u8FD9\u7B26\u5408\u6E90\u56FE\u610F\u56FE \u2014\u2014 \u659C\u7EB9\u672C\u6765\u5C31\u662F\u8868\u793A\u300C\u8FDB\u884C\u4E2D\u300D\u3002\n\n \u5C3A\u5BF8\u6863\u6309**\u9AD8\u5EA6**\u7ED9\uFF08\u5BBD\u56FA\u5B9A 4:1\uFF09\uFF0C\u56E0\u4E3A\u56FE\u5F62\u672C\u8EAB\u662F\u6A2A\u6761\uFF0C\u65B9\u5F62\u5C3A\u5BF8\u8F74\u6CA1\u610F\u4E49\u3002 */\n\n.dshpc-loader-bar { display: inline-block; flex: none; vertical-align: middle; line-height: 0; }\n\n.dshpc-loader-bar--xs { width: 48px; height: 12px; }\n.dshpc-loader-bar--sm { width: 64px; height: 16px; }\n.dshpc-loader-bar--md { width: 96px; height: 24px; }\n.dshpc-loader-bar--lg { width: 128px; height: 32px; }\n.dshpc-loader-bar--xl { width: 192px; height: 48px; }\n\n/* \u659C\u7EB9\u5355\u5411\u5FAA\u73AF\u5E73\u79FB\u300285.333 \u662F\u4E00\u4E2A\u6761\u7EB9\u5468\u671F\uFF08\u6E90\u56FE\u76F8\u90BB\u659C\u7EBF\u7684\u95F4\u8DDD\uFF0C\u7528\u6237\u5355\u4F4D\uFF09\uFF1A\n \u5E73\u79FB\u6574\u6574\u4E00\u4E2A\u5468\u671F\u540E\u4E0E\u539F\u56FE\u91CD\u5408 \u21D2 \u5FAA\u73AF\u5904\u770B\u4E0D\u51FA\u63A5\u7F1D\u3002\n \u26A0\uFE0F \u8FD9\u4E2A\u6570\u5B57\u5FC5\u987B\u4E0E LoaderBar.ts \u91CC\u7684 STRIPE_PERIOD \u4E00\u81F4\uFF08\u7EC4\u4EF6\u9760\u5B83\u590D\u5236\u4E00\u4EFD\u5DE6\u4FA7\u8865\u56FE\uFF09\u3002\n \u5916\u5C42 <g clip-path> \u9759\u6B62\u3001\u53EA\u52A8\u8FD9\u4E00\u5C42 \u2014\u2014 \u82E5\u628A clip \u4E0E transform \u653E\u540C\u4E00\u5C42\uFF0C\n \u88C1\u526A\u6846\u4F1A\u8DDF\u7740\u4E00\u8D77\u79FB\uFF0C\u7B49\u4E8E\u6CA1\u88C1\uFF0C\u6761\u7EB9\u4F1A\u9732\u5230\u84DD\u8272\u6BB5\u5916\u9762\u3002 */\n.dshpc-loader-bar__stripe { animation: dshpc-loader-bar-flow .55s linear infinite; }\n@keyframes dshpc-loader-bar-flow {\n from { transform: translateX(0) }\n to { transform: translateX(85.333px) }\n}\n\n/* animated={false}\uFF1A\u6761\u7EB9\u505C\u5728\u539F\u4F4D\u3002 */\n.dshpc-loader-bar--still .dshpc-loader-bar__stripe { animation: none; }\n\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader-bar__stripe { animation: none; }\n}\n";
|
|
2
|
+
//# sourceMappingURL=loader-bar-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-bar-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,++FAA4zC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// ⚠️ 生成物,勿手改。真源 = src/ui/feedback/loader-bar.css
|
|
2
|
+
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
+
export const LOADER_BAR_CSS = "/* ── LoaderBar:胶囊不定进度 loading ───────────────────────────────────────\n 源图形是「轨道 + 蓝色段 + 斜纹」的胶囊条。与 Loader 同族(Loader 家族:\n Loader 通用图标 / LoaderBar 胶囊不定进度),同样只画图形:不带背景、不带定位。\n\n 动的是**斜纹**,不是蓝色段:蓝色那半截固定不动,只有它上面的一道道细斜条\n 在走,看着像条纹在流动 / 转。这符合源图意图 —— 斜纹本来就是表示「进行中」。\n\n 尺寸档按**高度**给(宽固定 4:1),因为图形本身是横条,方形尺寸轴没意义。 */\n\n.dshpc-loader-bar { display: inline-block; flex: none; vertical-align: middle; line-height: 0; }\n\n.dshpc-loader-bar--xs { width: 48px; height: 12px; }\n.dshpc-loader-bar--sm { width: 64px; height: 16px; }\n.dshpc-loader-bar--md { width: 96px; height: 24px; }\n.dshpc-loader-bar--lg { width: 128px; height: 32px; }\n.dshpc-loader-bar--xl { width: 192px; height: 48px; }\n\n/* 斜纹单向循环平移。85.333 是一个条纹周期(源图相邻斜线的间距,用户单位):\n 平移整整一个周期后与原图重合 ⇒ 循环处看不出接缝。\n ⚠️ 这个数字必须与 LoaderBar.ts 里的 STRIPE_PERIOD 一致(组件靠它复制一份左侧补图)。\n 外层 <g clip-path> 静止、只动这一层 —— 若把 clip 与 transform 放同一层,\n 裁剪框会跟着一起移,等于没裁,条纹会露到蓝色段外面。 */\n.dshpc-loader-bar__stripe { animation: dshpc-loader-bar-flow .55s linear infinite; }\n@keyframes dshpc-loader-bar-flow {\n from { transform: translateX(0) }\n to { transform: translateX(85.333px) }\n}\n\n/* animated={false}:条纹停在原位。 */\n.dshpc-loader-bar--still .dshpc-loader-bar__stripe { animation: none; }\n\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader-bar__stripe { animation: none; }\n}\n";
|
|
4
|
+
//# sourceMappingURL=loader-bar-css.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-bar-css.generated.js","sourceRoot":"","sources":["../../../src/ui/feedback/loader-bar-css.generated.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,yzCAAyzC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const LOADER_CSS = "/* \u2500\u2500 Loader\uFF1A\u7EDF\u4E00\u7684\u52A0\u8F7D\u52A8\u753B\u56FE\u6807\uFF08\u65E0\u80CC\u666F / \u65E0\u5B9A\u4F4D / \u989C\u8272\u8DDF\u968F currentColor\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5F62\u6001 \u00D7 \u5C3A\u5BF8\u4E24\u8F74\u6B63\u4EA4\uFF1A\u5F62\u6001\u7BA1\u51E0\u4F55\u4E0E\u52A8\u753B\uFF1B\u5C3A\u5BF8\u6863\u53EA\u6539 width / height\uFF0C\u51E0\u4F55\u6309\n viewBox=\"0 0 24 24\" \u7B49\u6BD4\u7F29\u653E \u2014\u2014 \u4E00\u5957\u51E0\u4F55\u5403\u4E94\u6863\uFF0C12px \u65F6\u63CF\u8FB9\u5373 1.5px\u300148px \u65F6 6px\uFF0C\n \u89C6\u89C9\u91CD\u91CF\u4E00\u81F4\uFF0C\u4E0D\u7528\u9010\u4E2A\u5C3A\u5BF8\u6362\u7B97 calc\u3002\n\n \u8FB9\u754C\uFF1A\u672C\u63A7\u4EF6**\u53EA\u7BA1\u56FE\u6807\u672C\u8EAB**\u3002\u80CC\u666F / \u5706\u89D2 / \u5185\u8DDD / \u9634\u5F71 / \u5B9A\u4F4D\uFF08fixed\u3001\u5C45\u4E2D\u3001\u6F02\u6D6E\uFF09\n \u4E00\u5F8B\u5F52\u8C03\u7528\u65B9 \u2014\u2014 \u5957 Chip\u3001\u5957 Card\uFF0C\u6216\u81EA\u5DF1\u5305\u4E00\u4E2A div\u3002 */\n\n.dshpc-loader { display: inline-block; flex: none; vertical-align: middle; line-height: 0; color: inherit; }\n\n.dshpc-loader--xs { width: 12px; height: 12px; }\n.dshpc-loader--sm { width: 16px; height: 16px; }\n.dshpc-loader--md { width: 24px; height: 24px; }\n.dshpc-loader--lg { width: 32px; height: 32px; }\n.dshpc-loader--xl { width: 48px; height: 48px; }\n\n/* \u5F62\u6001\u4E00 ring\uFF1A\u5F00\u53E3\u5F27\u6574\u4F53\u65CB\u8F6C\u3002\u5FC5\u987B\u8D70 SVG \u77E2\u91CF\u5F27 \u2014\u2014 \u6B21\u50CF\u7D20\u8FB9\u6846\u753B\u5706\u5728 12px \u4E0B\u4F1A\u88AB\n \u6297\u952F\u9F7F\u62C9\u6BDB\u3001\u770B\u7740\u50CF\u5706\u89D2\u65B9\uFF082026-10-20 \u771F\u673A\u5B9E\u6D4B\uFF0C\u66FE\u88AB\u8BEF\u5224\u6210 border-radius \u88AB\u8986\u76D6\uFF09\u3002 */\n.dshpc-loader--ring { animation: dshpc-loader-rotate .8s linear infinite; }\n@keyframes dshpc-loader-rotate { to { transform: rotate(360deg) } }\n\n/* \u5F62\u6001\u4E8C blocks\uFF1A\u4E09\u4E2A\u65B9\u5757\u4F9D\u6B21\u8109\u52A8\u653E\u5927\u3002\n transform-box: fill-box \u662F SVG \u5B50\u5143\u7D20\u505A CSS transform \u7684\u5FC5\u8981\u6761\u4EF6 \u2014\u2014 \u5426\u5219 origin\n \u843D\u5728 viewBox \u539F\u70B9\uFF0C\u8282\u70B9\u4F1A\u7ED5\u7740\u5DE6\u4E0A\u89D2\u98DE\u51FA\u53BB\u3002 */\n.dshpc-loader__node { transform-box: fill-box; transform-origin: center; }\n.dshpc-loader--blocks .dshpc-loader__node { animation: dshpc-loader-blink 1.2s ease-in-out infinite; }\n.dshpc-loader__node:nth-child(2) { animation-delay: .15s; }\n.dshpc-loader__node:nth-child(3) { animation-delay: .3s; }\n@keyframes dshpc-loader-blink {\n 0%, 80%, 100% { opacity: .25; transform: scale(.8) }\n 40% { opacity: 1; transform: scale(1) }\n}\n\n/* \u964D\u4F4E\u52A8\u6548\uFF1A\u505C\u5728\u300C\u5168\u90E8\u53EF\u89C1\u3001\u5B9E\u4F53\u5927\u5C0F\u300D\uFF0C\u800C\u4E0D\u662F\u505C\u5728\u52A8\u753B\u4E2D\u9014\u7684\u534A\u900F\u660E\u5C0F\u70B9\u3002 */\n@media (prefers-reduced-motion: reduce) {\n .dshpc-loader--ring { animation: none; }\n .dshpc-loader__node { animation: none; opacity: 1; transform: none; }\n}\n";
|
|
2
|
+
//# sourceMappingURL=loader-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/loader-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,slGAA2rD,CAAA"}
|