dsh-plugin-core 0.2.13 → 0.3.0
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 +52 -83
- package/dist/design/tokens-css.d.ts +1 -1
- package/dist/design/tokens-css.d.ts.map +1 -1
- package/dist/design/tokens-css.generated.d.ts +2 -0
- package/dist/design/tokens-css.generated.d.ts.map +1 -0
- package/dist/design/tokens-css.generated.js +4 -0
- package/dist/design/tokens-css.generated.js.map +1 -0
- package/dist/design/tokens-css.js +1 -252
- package/dist/design/tokens-css.js.map +1 -1
- package/dist/explorer/FileBrowser.d.ts +41 -0
- package/dist/explorer/FileBrowser.d.ts.map +1 -0
- package/dist/explorer/FileBrowser.js +659 -0
- package/dist/explorer/FileBrowser.js.map +1 -0
- package/dist/explorer/explorer-css.d.ts +1 -1
- package/dist/explorer/explorer-css.d.ts.map +1 -1
- package/dist/explorer/explorer-css.generated.d.ts +2 -0
- package/dist/explorer/explorer-css.generated.d.ts.map +1 -0
- package/dist/explorer/explorer-css.generated.js +4 -0
- package/dist/explorer/explorer-css.generated.js.map +1 -0
- package/dist/explorer/explorer-css.js +1 -31
- package/dist/explorer/explorer-css.js.map +1 -1
- package/dist/explorer/index.d.ts +4 -2
- package/dist/explorer/index.d.ts.map +1 -1
- package/dist/explorer/index.js +4 -2
- package/dist/explorer/index.js.map +1 -1
- package/dist/explorer/open.d.ts +103 -0
- package/dist/explorer/open.d.ts.map +1 -0
- package/dist/explorer/open.js +282 -0
- package/dist/explorer/open.js.map +1 -0
- package/dist/explorer/preview/BytesPreview.d.ts +13 -0
- package/dist/explorer/preview/BytesPreview.d.ts.map +1 -0
- package/dist/explorer/preview/BytesPreview.js +56 -0
- package/dist/explorer/preview/BytesPreview.js.map +1 -0
- package/dist/explorer/preview/HtmlPreview.d.ts +18 -0
- package/dist/explorer/preview/HtmlPreview.d.ts.map +1 -0
- package/dist/explorer/preview/HtmlPreview.js +112 -0
- package/dist/explorer/preview/HtmlPreview.js.map +1 -0
- package/dist/explorer/preview/OfficePreview.d.ts +11 -0
- package/dist/explorer/preview/OfficePreview.d.ts.map +1 -0
- package/dist/explorer/preview/OfficePreview.js +53 -0
- package/dist/explorer/preview/OfficePreview.js.map +1 -0
- package/dist/explorer/preview/TextPreview.d.ts +17 -0
- package/dist/explorer/preview/TextPreview.d.ts.map +1 -0
- package/dist/explorer/preview/TextPreview.js +95 -0
- package/dist/explorer/preview/TextPreview.js.map +1 -0
- package/dist/explorer/preview/index.d.ts +10 -3
- package/dist/explorer/preview/index.d.ts.map +1 -1
- package/dist/explorer/preview/index.js +52 -55
- package/dist/explorer/preview/index.js.map +1 -1
- package/dist/explorer/preview/md-labels.d.ts +3 -0
- package/dist/explorer/preview/md-labels.d.ts.map +1 -0
- package/dist/explorer/preview/md-labels.js +12 -0
- package/dist/explorer/preview/md-labels.js.map +1 -0
- package/dist/explorer/types.d.ts +186 -4
- package/dist/explorer/types.d.ts.map +1 -1
- package/dist/explorer/types.js +401 -14
- package/dist/explorer/types.js.map +1 -1
- package/dist/host/index.d.ts +66 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +60 -0
- package/dist/host/index.js.map +1 -0
- package/dist/session/SessionViewModal.d.ts +42 -0
- package/dist/session/SessionViewModal.d.ts.map +1 -0
- package/dist/session/SessionViewModal.js +997 -0
- package/dist/session/SessionViewModal.js.map +1 -0
- package/dist/session/changes.d.ts +73 -0
- package/dist/session/changes.d.ts.map +1 -0
- package/dist/session/changes.js +134 -0
- package/dist/session/changes.js.map +1 -0
- package/dist/session/faces.d.ts +198 -0
- package/dist/session/faces.d.ts.map +1 -0
- package/dist/session/faces.js +17 -0
- package/dist/session/faces.js.map +1 -0
- package/dist/session/index.d.ts +5 -23
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +25 -70
- package/dist/session/index.js.map +1 -1
- package/dist/session/mirror/ChangedFileDiff.d.ts +22 -0
- package/dist/session/mirror/ChangedFileDiff.d.ts.map +1 -0
- package/dist/session/mirror/ChangedFileDiff.js +157 -0
- package/dist/session/mirror/ChangedFileDiff.js.map +1 -0
- package/dist/session/mirror/ChangedFilesCard.d.ts +18 -0
- package/dist/session/mirror/ChangedFilesCard.d.ts.map +1 -0
- package/dist/session/mirror/ChangedFilesCard.js +158 -0
- package/dist/session/mirror/ChangedFilesCard.js.map +1 -0
- package/dist/session/mirror/ChatGroupSeat.d.ts +24 -0
- package/dist/session/mirror/ChatGroupSeat.d.ts.map +1 -0
- package/dist/session/mirror/ChatGroupSeat.js +134 -0
- package/dist/session/mirror/ChatGroupSeat.js.map +1 -0
- package/dist/session/mirror/ChatNodeSeat.d.ts +43 -0
- package/dist/session/mirror/ChatNodeSeat.d.ts.map +1 -0
- package/dist/session/mirror/ChatNodeSeat.js +133 -0
- package/dist/session/mirror/ChatNodeSeat.js.map +1 -0
- package/dist/session/mirror/ChatView.d.ts +47 -0
- package/dist/session/mirror/ChatView.d.ts.map +1 -0
- package/dist/session/mirror/ChatView.js +127 -0
- package/dist/session/mirror/ChatView.js.map +1 -0
- package/dist/session/mirror/CommandCard.d.ts +20 -0
- package/dist/session/mirror/CommandCard.d.ts.map +1 -0
- package/dist/session/mirror/CommandCard.js +69 -0
- package/dist/session/mirror/CommandCard.js.map +1 -0
- package/dist/session/mirror/Deliverables.d.ts +24 -0
- package/dist/session/mirror/Deliverables.d.ts.map +1 -0
- package/dist/session/mirror/Deliverables.js +134 -0
- package/dist/session/mirror/Deliverables.js.map +1 -0
- package/dist/session/mirror/GenericCommandCard.d.ts +25 -0
- package/dist/session/mirror/GenericCommandCard.d.ts.map +1 -0
- package/dist/session/mirror/GenericCommandCard.js +567 -0
- package/dist/session/mirror/GenericCommandCard.js.map +1 -0
- package/dist/session/mirror/MessageIconActions.d.ts +16 -0
- package/dist/session/mirror/MessageIconActions.d.ts.map +1 -0
- package/dist/session/mirror/MessageIconActions.js +71 -0
- package/dist/session/mirror/MessageIconActions.js.map +1 -0
- package/dist/session/mirror/MessageItem.d.ts +66 -0
- package/dist/session/mirror/MessageItem.d.ts.map +1 -0
- package/dist/session/mirror/MessageItem.js +135 -0
- package/dist/session/mirror/MessageItem.js.map +1 -0
- package/dist/session/mirror/ReasoningRow.d.ts +11 -0
- package/dist/session/mirror/ReasoningRow.d.ts.map +1 -0
- package/dist/session/mirror/ReasoningRow.js +49 -0
- package/dist/session/mirror/ReasoningRow.js.map +1 -0
- package/dist/session/mirror/StatDialog.d.ts +20 -0
- package/dist/session/mirror/StatDialog.d.ts.map +1 -0
- package/dist/session/mirror/StatDialog.js +36 -0
- package/dist/session/mirror/StatDialog.js.map +1 -0
- package/dist/session/mirror/TurnProcessNodeView.d.ts +10 -0
- package/dist/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnProcessNodeView.js +68 -0
- package/dist/session/mirror/TurnProcessNodeView.js.map +1 -0
- package/dist/session/mirror/TurnTailNodeView.d.ts +32 -0
- package/dist/session/mirror/TurnTailNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnTailNodeView.js +48 -0
- package/dist/session/mirror/TurnTailNodeView.js.map +1 -0
- package/dist/session/mirror/TurnTriggerNodeView.d.ts +14 -0
- package/dist/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnTriggerNodeView.js +87 -0
- package/dist/session/mirror/TurnTriggerNodeView.js.map +1 -0
- package/dist/session/mirror/TurnUsagePanel.d.ts +21 -0
- package/dist/session/mirror/TurnUsagePanel.d.ts.map +1 -0
- package/dist/session/mirror/TurnUsagePanel.js +41 -0
- package/dist/session/mirror/TurnUsagePanel.js.map +1 -0
- package/dist/session/mirror/message-chrome.d.ts +33 -0
- package/dist/session/mirror/message-chrome.d.ts.map +1 -0
- package/dist/session/mirror/message-chrome.js +158 -0
- package/dist/session/mirror/message-chrome.js.map +1 -0
- package/dist/session/mirror/process-groups.d.ts +56 -0
- package/dist/session/mirror/process-groups.d.ts.map +1 -0
- package/dist/session/mirror/process-groups.js +202 -0
- package/dist/session/mirror/process-groups.js.map +1 -0
- package/dist/session/official-classes.d.ts +28 -0
- package/dist/session/official-classes.d.ts.map +1 -0
- package/dist/session/official-classes.js +146 -0
- package/dist/session/official-classes.js.map +1 -0
- package/dist/session/open-session-view.d.ts +17 -0
- package/dist/session/open-session-view.d.ts.map +1 -0
- package/dist/session/open-session-view.js +136 -0
- package/dist/session/open-session-view.js.map +1 -0
- package/dist/session/session-css.d.ts +1 -1
- package/dist/session/session-css.d.ts.map +1 -1
- package/dist/session/session-css.generated.d.ts +2 -0
- package/dist/session/session-css.generated.d.ts.map +1 -0
- package/dist/session/session-css.generated.js +4 -0
- package/dist/session/session-css.generated.js.map +1 -0
- package/dist/session/session-css.js +1 -17
- package/dist/session/session-css.js.map +1 -1
- package/dist/ui/AlertModal.d.ts +28 -0
- package/dist/ui/AlertModal.d.ts.map +1 -0
- package/dist/ui/AlertModal.js +29 -0
- package/dist/ui/AlertModal.js.map +1 -0
- package/dist/ui/Button.d.ts.map +1 -1
- package/dist/ui/Button.js +14 -1
- package/dist/ui/Button.js.map +1 -1
- package/dist/ui/Card.d.ts +4 -2
- package/dist/ui/Card.d.ts.map +1 -1
- package/dist/ui/Card.js +12 -6
- package/dist/ui/Card.js.map +1 -1
- package/dist/ui/Chip.d.ts +9 -1
- package/dist/ui/Chip.d.ts.map +1 -1
- package/dist/ui/Chip.js +8 -2
- package/dist/ui/Chip.js.map +1 -1
- package/dist/ui/CodeViewer.d.ts +36 -0
- package/dist/ui/CodeViewer.d.ts.map +1 -0
- package/dist/ui/CodeViewer.js +90 -0
- package/dist/ui/CodeViewer.js.map +1 -0
- package/dist/ui/ConfirmModal.d.ts +30 -0
- package/dist/ui/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/ConfirmModal.js +23 -0
- package/dist/ui/ConfirmModal.js.map +1 -0
- package/dist/ui/DateTimePicker.d.ts +45 -0
- package/dist/ui/DateTimePicker.d.ts.map +1 -0
- package/dist/ui/DateTimePicker.js +447 -0
- package/dist/ui/DateTimePicker.js.map +1 -0
- package/dist/ui/Field.d.ts +11 -2
- package/dist/ui/Field.d.ts.map +1 -1
- package/dist/ui/Field.js +15 -5
- package/dist/ui/Field.js.map +1 -1
- package/dist/ui/MarqueeText.d.ts.map +1 -1
- package/dist/ui/MarqueeText.js +3 -1
- package/dist/ui/MarqueeText.js.map +1 -1
- package/dist/ui/Modal.d.ts +25 -3
- package/dist/ui/Modal.d.ts.map +1 -1
- package/dist/ui/Modal.js +41 -7
- package/dist/ui/Modal.js.map +1 -1
- package/dist/ui/ModelPicker.d.ts +25 -12
- package/dist/ui/ModelPicker.d.ts.map +1 -1
- package/dist/ui/ModelPicker.js +67 -19
- package/dist/ui/ModelPicker.js.map +1 -1
- package/dist/ui/PanelDock.d.ts +127 -0
- package/dist/ui/PanelDock.d.ts.map +1 -0
- package/dist/ui/PanelDock.js +297 -0
- package/dist/ui/PanelDock.js.map +1 -0
- package/dist/ui/Picker.d.ts +8 -2
- package/dist/ui/Picker.d.ts.map +1 -1
- package/dist/ui/Picker.js +86 -18
- package/dist/ui/Picker.js.map +1 -1
- package/dist/ui/SectionHead.d.ts +3 -3
- package/dist/ui/SectionHead.d.ts.map +1 -1
- package/dist/ui/SectionHead.js +4 -4
- package/dist/ui/SectionHead.js.map +1 -1
- package/dist/ui/Segmented.d.ts +2 -0
- package/dist/ui/Segmented.d.ts.map +1 -1
- package/dist/ui/Segmented.js +3 -1
- package/dist/ui/Segmented.js.map +1 -1
- package/dist/ui/Textarea.d.ts +2 -0
- package/dist/ui/Textarea.d.ts.map +1 -1
- package/dist/ui/Textarea.js +6 -1
- package/dist/ui/Textarea.js.map +1 -1
- package/dist/ui/Toast.d.ts +41 -8
- package/dist/ui/Toast.d.ts.map +1 -1
- package/dist/ui/Toast.js +216 -28
- package/dist/ui/Toast.js.map +1 -1
- package/dist/ui/WorkspacePicker.d.ts +15 -28
- package/dist/ui/WorkspacePicker.d.ts.map +1 -1
- package/dist/ui/WorkspacePicker.js +18 -27
- package/dist/ui/WorkspacePicker.js.map +1 -1
- package/dist/ui/card-css.d.ts +1 -1
- package/dist/ui/card-css.d.ts.map +1 -1
- package/dist/ui/card-css.generated.d.ts +2 -0
- package/dist/ui/card-css.generated.d.ts.map +1 -0
- package/dist/ui/card-css.generated.js +4 -0
- package/dist/ui/card-css.generated.js.map +1 -0
- package/dist/ui/card-css.js +1 -35
- package/dist/ui/card-css.js.map +1 -1
- package/dist/ui/chip-css.d.ts +1 -1
- package/dist/ui/chip-css.d.ts.map +1 -1
- package/dist/ui/chip-css.generated.d.ts +2 -0
- package/dist/ui/chip-css.generated.d.ts.map +1 -0
- package/dist/ui/chip-css.generated.js +4 -0
- package/dist/ui/chip-css.generated.js.map +1 -0
- package/dist/ui/chip-css.js +1 -17
- package/dist/ui/chip-css.js.map +1 -1
- package/dist/ui/code-viewer-css.d.ts +2 -0
- package/dist/ui/code-viewer-css.d.ts.map +1 -0
- package/dist/ui/code-viewer-css.generated.d.ts +2 -0
- package/dist/ui/code-viewer-css.generated.d.ts.map +1 -0
- package/dist/ui/code-viewer-css.generated.js +4 -0
- package/dist/ui/code-viewer-css.generated.js.map +1 -0
- package/dist/ui/code-viewer-css.js +3 -0
- package/dist/ui/code-viewer-css.js.map +1 -0
- package/dist/ui/code-viewer-lang.d.ts +15 -0
- package/dist/ui/code-viewer-lang.d.ts.map +1 -0
- package/dist/ui/code-viewer-lang.js +190 -0
- package/dist/ui/code-viewer-lang.js.map +1 -0
- package/dist/ui/code-viewer-theme.d.ts +5 -0
- package/dist/ui/code-viewer-theme.d.ts.map +1 -0
- package/dist/ui/code-viewer-theme.js +138 -0
- package/dist/ui/code-viewer-theme.js.map +1 -0
- package/dist/ui/controls/back-to-top-css.generated.d.ts +2 -0
- package/dist/ui/controls/back-to-top-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/back-to-top-css.generated.js +4 -0
- package/dist/ui/controls/back-to-top-css.generated.js.map +1 -0
- package/dist/ui/controls/button-css.generated.d.ts +2 -0
- package/dist/ui/controls/button-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/button-css.generated.js +4 -0
- package/dist/ui/controls/button-css.generated.js.map +1 -0
- package/dist/ui/controls/datetime-css.generated.d.ts +2 -0
- package/dist/ui/controls/datetime-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/datetime-css.generated.js +4 -0
- package/dist/ui/controls/datetime-css.generated.js.map +1 -0
- package/dist/ui/controls/field-css.generated.d.ts +2 -0
- package/dist/ui/controls/field-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/field-css.generated.js +4 -0
- package/dist/ui/controls/field-css.generated.js.map +1 -0
- package/dist/ui/controls/hint-css.generated.d.ts +2 -0
- package/dist/ui/controls/hint-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/hint-css.generated.js +4 -0
- package/dist/ui/controls/hint-css.generated.js.map +1 -0
- package/dist/ui/controls/loading-css.generated.d.ts +2 -0
- package/dist/ui/controls/loading-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/loading-css.generated.js +4 -0
- package/dist/ui/controls/loading-css.generated.js.map +1 -0
- package/dist/ui/controls/segmented-css.generated.d.ts +2 -0
- package/dist/ui/controls/segmented-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/segmented-css.generated.js +4 -0
- package/dist/ui/controls/segmented-css.generated.js.map +1 -0
- package/dist/ui/controls-css.d.ts +7 -8
- package/dist/ui/controls-css.d.ts.map +1 -1
- package/dist/ui/controls-css.js +13 -8
- package/dist/ui/controls-css.js.map +1 -1
- package/dist/ui/css.d.ts +5 -0
- package/dist/ui/css.d.ts.map +1 -1
- package/dist/ui/css.js +13 -4
- package/dist/ui/css.js.map +1 -1
- package/dist/ui/datetime-logic.d.ts +100 -0
- package/dist/ui/datetime-logic.d.ts.map +1 -0
- package/dist/ui/datetime-logic.js +193 -0
- package/dist/ui/datetime-logic.js.map +1 -0
- package/dist/ui/feedback-css.d.ts +1 -1
- package/dist/ui/feedback-css.d.ts.map +1 -1
- package/dist/ui/feedback-css.generated.d.ts +2 -0
- package/dist/ui/feedback-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback-css.generated.js +4 -0
- package/dist/ui/feedback-css.generated.js.map +1 -0
- package/dist/ui/feedback-css.js +1 -53
- package/dist/ui/feedback-css.js.map +1 -1
- package/dist/ui/host-data.d.ts +103 -0
- package/dist/ui/host-data.d.ts.map +1 -0
- package/dist/ui/host-data.js +106 -0
- package/dist/ui/host-data.js.map +1 -0
- package/dist/ui/host-toast.d.ts +23 -0
- package/dist/ui/host-toast.d.ts.map +1 -0
- package/dist/ui/host-toast.js +34 -0
- package/dist/ui/host-toast.js.map +1 -0
- package/dist/ui/index.d.ts +12 -6
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +10 -4
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/marquee-css.d.ts +2 -0
- package/dist/ui/marquee-css.d.ts.map +1 -0
- package/dist/ui/marquee-css.generated.d.ts +2 -0
- package/dist/ui/marquee-css.generated.d.ts.map +1 -0
- package/dist/ui/marquee-css.generated.js +4 -0
- package/dist/ui/marquee-css.generated.js.map +1 -0
- package/dist/ui/marquee-css.js +4 -0
- package/dist/ui/marquee-css.js.map +1 -0
- package/dist/ui/modal-host.d.ts +30 -0
- package/dist/ui/modal-host.d.ts.map +1 -0
- package/dist/ui/modal-host.js +101 -0
- package/dist/ui/modal-host.js.map +1 -0
- package/dist/ui/official.d.ts.map +1 -1
- package/dist/ui/official.js +45 -1
- package/dist/ui/official.js.map +1 -1
- package/dist/ui/panel-dock-css.d.ts +2 -0
- package/dist/ui/panel-dock-css.d.ts.map +1 -0
- package/dist/ui/panel-dock-css.generated.d.ts +2 -0
- package/dist/ui/panel-dock-css.generated.d.ts.map +1 -0
- package/dist/ui/panel-dock-css.generated.js +4 -0
- package/dist/ui/panel-dock-css.generated.js.map +1 -0
- package/dist/ui/panel-dock-css.js +4 -0
- package/dist/ui/panel-dock-css.js.map +1 -0
- package/dist/ui/panel-dock-logic.d.ts +50 -0
- package/dist/ui/panel-dock-logic.d.ts.map +1 -0
- package/dist/ui/panel-dock-logic.js +64 -0
- package/dist/ui/panel-dock-logic.js.map +1 -0
- package/dist/ui/picker-css.d.ts +1 -1
- package/dist/ui/picker-css.d.ts.map +1 -1
- package/dist/ui/picker-css.generated.d.ts +2 -0
- package/dist/ui/picker-css.generated.d.ts.map +1 -0
- package/dist/ui/picker-css.generated.js +4 -0
- package/dist/ui/picker-css.generated.js.map +1 -0
- package/dist/ui/picker-css.js +1 -48
- package/dist/ui/picker-css.js.map +1 -1
- package/dist/ui/picker-icons.d.ts +12 -0
- package/dist/ui/picker-icons.d.ts.map +1 -0
- package/dist/ui/picker-icons.js +29 -0
- package/dist/ui/picker-icons.js.map +1 -0
- package/dist/ui/picker-logic.d.ts +4 -1
- package/dist/ui/picker-logic.d.ts.map +1 -1
- package/dist/ui/picker-logic.js +1 -2
- package/dist/ui/picker-logic.js.map +1 -1
- package/dist/ui/resizer.d.ts +3 -1
- package/dist/ui/resizer.d.ts.map +1 -1
- package/dist/ui/resizer.js +1 -1
- package/dist/ui/resizer.js.map +1 -1
- package/dist/ui/toast-host.d.ts +24 -0
- package/dist/ui/toast-host.d.ts.map +1 -0
- package/dist/ui/toast-host.js +20 -0
- package/dist/ui/toast-host.js.map +1 -0
- package/dist/utils/date.d.ts +8 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +16 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +437 -18
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +1 -0
- package/dist/utils/path.js.map +1 -1
- package/docs/README.md +12 -5
- package/docs/design/architecture.md +38 -8
- package/docs/design/copywriting.md +95 -0
- package/docs/design/doc-format.md +80 -0
- package/docs/design/doc-format.ts +39 -0
- package/docs/design/external/dsh-host.md +150 -1
- package/docs/design/features.md +4 -17
- package/docs/design/methods.md +13 -34
- package/docs/design/structure.md +25 -22
- package/docs/design/style.md +24 -50
- package/docs/help/design.doc.ts +112 -0
- package/docs/help/design.md +88 -0
- package/docs/help/explorer.doc.ts +136 -0
- package/docs/help/explorer.md +68 -0
- package/docs/help/index.doc.ts +79 -0
- package/docs/help/index.md +28 -0
- package/docs/help/integration.doc.ts +114 -0
- package/docs/help/integration.md +127 -0
- package/docs/help/methods.md +58 -0
- package/docs/help/session.doc.ts +154 -0
- package/docs/help/session.md +91 -0
- package/docs/help/style.md +80 -0
- package/docs/help/ui.doc.ts +404 -0
- package/docs/help/ui.md +342 -0
- package/docs/help/utils.doc.ts +133 -0
- package/docs/help/utils.md +96 -0
- package/docs/requirements.md +33 -12
- package/package.json +44 -3
- package/dist/ui/ErrorBoundary.d.ts +0 -22
- package/dist/ui/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/ErrorBoundary.js +0 -30
- package/dist/ui/ErrorBoundary.js.map +0 -1
- package/docs/design/features/design.md +0 -55
- package/docs/design/features/explorer.md +0 -73
- package/docs/design/features/session.md +0 -70
- package/docs/design/features/ui.md +0 -225
- package/docs/design/features/utils.md +0 -64
- package/docs/examples/integration.md +0 -103
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 领域选择器的宿主数据面 —— ModelPicker / WorkspacePicker 的「现成数据」。
|
|
3
|
+
*
|
|
4
|
+
* 用户 2026-10-20 拍板:这两个领域选择器**自己取数、自己显示**,消费方不再传数组
|
|
5
|
+
* (反转 requirements §6 对领域选择器的旧口径;通用 `Picker` 仍是 props 进数据的纯零件)。
|
|
6
|
+
*
|
|
7
|
+
* 两条数据通路(均为真机验证过的口子):
|
|
8
|
+
* - 工作区:宿主 client 服务 `workspaces` 的快照(getSnapshot + subscribe,follow 流实时更新)。
|
|
9
|
+
* - 模型目录:**插件宿主侧** `llm.listModels()` 现查 → `serveModelCatalog()` 挂成只读路由 →
|
|
10
|
+
* 客户端 fetch(`@deepseek-ai/*` 的 `remote.llm` 只有 listProviders,**拿不到每个供应商的
|
|
11
|
+
* 模型列表**,2026-10-20 真机定位后弃用该路径)。
|
|
12
|
+
*
|
|
13
|
+
* 接线:宿主 `apply` 调 `serveModelCatalog(ctx, { path })`,客户端 `apply` 调
|
|
14
|
+
* `connectHost(ctx, { modelsPath: path })`——同一个 path 常量,消费方不碰数据本身。
|
|
15
|
+
*/
|
|
16
|
+
/** 模型目录的 observable store(useSyncExternalStore 直接消费)。 */
|
|
17
|
+
class ModelCatalogStore {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.snapshot = { status: 'loading' };
|
|
20
|
+
this.listeners = new Set();
|
|
21
|
+
this.getSnapshot = () => this.snapshot;
|
|
22
|
+
this.subscribe = (listener) => {
|
|
23
|
+
this.listeners.add(listener);
|
|
24
|
+
return () => {
|
|
25
|
+
this.listeners.delete(listener);
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
update(next) {
|
|
30
|
+
this.snapshot = next;
|
|
31
|
+
for (const listener of this.listeners)
|
|
32
|
+
listener();
|
|
33
|
+
}
|
|
34
|
+
setRoutes(routes) {
|
|
35
|
+
this.update({ status: 'ready', routes });
|
|
36
|
+
}
|
|
37
|
+
setUnavailable(reason) {
|
|
38
|
+
this.update({ status: 'unavailable', reason });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** 模型目录单例(ModelPicker 消费;connectHost 负责喂)。 */
|
|
42
|
+
export const modelCatalog = new ModelCatalogStore();
|
|
43
|
+
/**
|
|
44
|
+
* 工作区列表的 observable store:直接镜像官方 WorkspaceSource 的 `items`
|
|
45
|
+
* (宿主权威快照,follow 流实时推 —— 源变我们就变,不自持第二份状态机)。
|
|
46
|
+
*/
|
|
47
|
+
class WorkspaceListStore {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.items = [];
|
|
50
|
+
this.listeners = new Set();
|
|
51
|
+
this.getSnapshot = () => this.items;
|
|
52
|
+
this.subscribe = (listener) => {
|
|
53
|
+
this.listeners.add(listener);
|
|
54
|
+
return () => {
|
|
55
|
+
this.listeners.delete(listener);
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** 换源(仅 connectHost 调;重复调用换到新源)。 */
|
|
60
|
+
setSource(source) {
|
|
61
|
+
this.unsubscribe?.();
|
|
62
|
+
const pull = () => {
|
|
63
|
+
this.items = source.getSnapshot().items;
|
|
64
|
+
for (const listener of this.listeners)
|
|
65
|
+
listener();
|
|
66
|
+
};
|
|
67
|
+
pull();
|
|
68
|
+
this.unsubscribe = source.subscribe(pull);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** 工作区列表单例(WorkspacePicker 消费;connectHost 负责喂)。 */
|
|
72
|
+
export const workspaceList = new WorkspaceListStore();
|
|
73
|
+
function isWorkspaceSource(value) {
|
|
74
|
+
if (value === null || typeof value !== 'object')
|
|
75
|
+
return false;
|
|
76
|
+
const rec = value;
|
|
77
|
+
return typeof rec.getSnapshot === 'function' && typeof rec.subscribe === 'function';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 把宿主数据面接进核心(插件 client `apply` 里调**一次**)。
|
|
81
|
+
*
|
|
82
|
+
* 工作区走本地 client 服务注入;模型目录走宿主路由 fetch。哪条失败只影响那一块,
|
|
83
|
+
* 选择器照常渲染空态 / 降级提示 —— 绝不让数据面拖住插件启动。
|
|
84
|
+
*/
|
|
85
|
+
export function connectHost(ctx, options = {}) {
|
|
86
|
+
ctx.inject(['workspaces'], (sub) => {
|
|
87
|
+
const source = sub?.workspaces?.list;
|
|
88
|
+
if (isWorkspaceSource(source))
|
|
89
|
+
workspaceList.setSource(source);
|
|
90
|
+
});
|
|
91
|
+
const modelsPath = options.modelsPath;
|
|
92
|
+
if (modelsPath === undefined)
|
|
93
|
+
return;
|
|
94
|
+
void fetch(modelsPath)
|
|
95
|
+
.then((response) => (response.ok ? response.json() : Promise.reject(new Error(`HTTP ${response.status}`))))
|
|
96
|
+
.then((data) => {
|
|
97
|
+
const routes = data?.routes;
|
|
98
|
+
if (!Array.isArray(routes))
|
|
99
|
+
throw new Error('模型目录响应缺少 routes');
|
|
100
|
+
modelCatalog.setRoutes(routes);
|
|
101
|
+
})
|
|
102
|
+
.catch((error) => {
|
|
103
|
+
modelCatalog.setUnavailable(String(error));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=host-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-data.js","sourceRoot":"","sources":["../../src/ui/host-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -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/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/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,eAAe,CAAA;AAkBxC;;;;;;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"}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './css.js';
|
|
2
2
|
export { filterGroups, flattenOptions, groupOf, labelsOf, toGroups, toggleValue, type PickerGroup, type PickerOption, } from './picker-logic.js';
|
|
3
3
|
export { Picker, type PickerProps, type PickerSize } from './Picker.js';
|
|
4
|
+
export { DateTimePicker, type DateTimeOutput, type DateTimePickerProps, type DateTimeSize, } from './DateTimePicker.js';
|
|
5
|
+
export { buildMonthCells, ceilToPrecision, clampUnit, floorToPrecision, formatDateTimeIso, monthCaption, msToParts, nowParts, nowTimeFor, parseDateTime, partsOf, partsToMs, rangeIsValid, sameLocalDay, stepMax, stepUnit, toEndDraft, weekdayLabels, type DateTimeParts, type DateTimePrecision, type DayCell, type DayRef, type EndDraft, type StepUnit, type TimeParts, } from './datetime-logic.js';
|
|
4
6
|
export { ModelPicker, type ModelPickerProps, type ModelPickerVariant } from './ModelPicker.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
+
export { WorkspacePicker, type WorkspacePickerProps } from './WorkspacePicker.js';
|
|
8
|
+
export { connectHost, modelCatalog, workspaceList, type ConnectHostOptions, type HostClientContext, type HostWorkspaceItem, type HostWorkspaceSource, type ModelCatalogState, type ModelRoute, } from './host-data.js';
|
|
9
|
+
export { Modal, type ModalProps, type ModalSize } from './Modal.js';
|
|
10
|
+
export { AlertModal, type AlertModalProps, type AlertSeverity, } from './AlertModal.js';
|
|
11
|
+
export { ConfirmModal, type ConfirmModalProps, type ConfirmTone, } from './ConfirmModal.js';
|
|
12
|
+
export { alertModal, confirmModal, type AlertOptions, type ConfirmOptions, } from './modal-host.js';
|
|
7
13
|
export { CARD_ACCENTS, Card, StripCard, type CardAccent, type CardSharedProps, } from './Card.js';
|
|
8
|
-
export { Chip, type ChipProps } from './Chip.js';
|
|
9
|
-
export { showToast, type ToastVariant } from './Toast.js';
|
|
10
|
-
export { EmptyState, type EmptyStateProps } from './EmptyState.js';
|
|
11
|
-
export { ErrorBoundary, type ErrorBoundaryProps } from './ErrorBoundary.js';
|
|
14
|
+
export { Chip, type ChipProps, type ChipSize, type ChipTone } from './Chip.js';
|
|
15
|
+
export { showToast, notify, type ToastVariant, type ToastPosition, type ToastOptions, type ToastAction, type NotifyOptions, } from './Toast.js';
|
|
12
16
|
export { Button, IconButton, type ButtonProps, type ButtonSize, type ButtonVariant, type IconButtonProps } from './Button.js';
|
|
13
17
|
export { Segmented, type SegmentedProps } from './Segmented.js';
|
|
14
18
|
export { Textarea, type TextareaProps } from './Textarea.js';
|
|
@@ -21,5 +25,7 @@ export { getTooltipRenderer, setTooltipRenderer, type TooltipRenderProps, type T
|
|
|
21
25
|
export { LiveText } from './LiveText.js';
|
|
22
26
|
export { BackToTop, type BackToTopProps } from './BackToTop.js';
|
|
23
27
|
export { startResizeLayoutWidth, type ResizeOptions } from './resizer.js';
|
|
28
|
+
export { DockPanel, PanelDock, createPanelDock, type DockCloseButton, type DockCloseReason, type DockPanelProps, type PanelDockController, type PanelDockOptions, type PanelDockProps, } from './PanelDock.js';
|
|
29
|
+
export { DEFAULT_PANEL_ID, clampWidth, closePanel, emptyDock, isOpen, openPanel, othersWidth, setPanelWidth, type DockState, type OpenResult, } from './panel-dock-logic.js';
|
|
24
30
|
export { FIELD_ANCHOR_STYLE, FIELD_LABEL_STYLE, Input, NumberInput, PrefixedInput, fieldMetricsOf, type EditorOption, type FieldSize, type InputProps, type NumberInputProps, type PrefixedInputProps, } from './Field.js';
|
|
25
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/index.js
CHANGED
|
@@ -4,14 +4,18 @@
|
|
|
4
4
|
export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './css.js';
|
|
5
5
|
export { filterGroups, flattenOptions, groupOf, labelsOf, toGroups, toggleValue, } from './picker-logic.js';
|
|
6
6
|
export { Picker } from './Picker.js';
|
|
7
|
+
export { DateTimePicker, } from './DateTimePicker.js';
|
|
8
|
+
export { buildMonthCells, ceilToPrecision, clampUnit, floorToPrecision, formatDateTimeIso, monthCaption, msToParts, nowParts, nowTimeFor, parseDateTime, partsOf, partsToMs, rangeIsValid, sameLocalDay, stepMax, stepUnit, toEndDraft, weekdayLabels, } from './datetime-logic.js';
|
|
7
9
|
export { ModelPicker } from './ModelPicker.js';
|
|
8
|
-
export {
|
|
10
|
+
export { WorkspacePicker } from './WorkspacePicker.js';
|
|
11
|
+
export { connectHost, modelCatalog, workspaceList, } from './host-data.js';
|
|
9
12
|
export { Modal } from './Modal.js';
|
|
13
|
+
export { AlertModal, } from './AlertModal.js';
|
|
14
|
+
export { ConfirmModal, } from './ConfirmModal.js';
|
|
15
|
+
export { alertModal, confirmModal, } from './modal-host.js';
|
|
10
16
|
export { CARD_ACCENTS, Card, StripCard, } from './Card.js';
|
|
11
17
|
export { Chip } from './Chip.js';
|
|
12
|
-
export { showToast } from './Toast.js';
|
|
13
|
-
export { EmptyState } from './EmptyState.js';
|
|
14
|
-
export { ErrorBoundary } from './ErrorBoundary.js';
|
|
18
|
+
export { showToast, notify, } from './Toast.js';
|
|
15
19
|
export { Button, IconButton } from './Button.js';
|
|
16
20
|
export { Segmented } from './Segmented.js';
|
|
17
21
|
export { Textarea } from './Textarea.js';
|
|
@@ -24,5 +28,7 @@ export { getTooltipRenderer, setTooltipRenderer, } from './tooltip.js';
|
|
|
24
28
|
export { LiveText } from './LiveText.js';
|
|
25
29
|
export { BackToTop } from './BackToTop.js';
|
|
26
30
|
export { startResizeLayoutWidth } from './resizer.js';
|
|
31
|
+
export { DockPanel, PanelDock, createPanelDock, } from './PanelDock.js';
|
|
32
|
+
export { DEFAULT_PANEL_ID, clampWidth, closePanel, emptyDock, isOpen, openPanel, othersWidth, setPanelWidth, } from './panel-dock-logic.js';
|
|
27
33
|
export { FIELD_ANCHOR_STYLE, FIELD_LABEL_STYLE, Input, NumberInput, PrefixedInput, fieldMetricsOf, } from './Field.js';
|
|
28
34
|
//# sourceMappingURL=index.js.map
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,sDAAsD;AACtD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,GAGZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAqC,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAkD,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,sDAAsD;AACtD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,GAGZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAqC,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,cAAc,GAIf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,GAQd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAkD,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAA;AACjF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,GAOd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAA;AACnE,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,UAAU,EACV,YAAY,GAGb,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,GAGV,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAgD,MAAM,WAAW,CAAA;AAC9E,OAAO,EACL,SAAS,EACT,MAAM,GAMP,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+E,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAGnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAsB,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,SAAS,EACT,SAAS,EACT,eAAe,GAOhB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,GAGd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,GAMf,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee-css.d.ts","sourceRoot":"","sources":["../../src/ui/marquee-css.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const MARQUEE_CSS = "/* \u8DD1\u9A6C\u706F\uFF08MarqueeText\uFF09\uFF1A\u53CC\u5C42\u2014\u2014\u5916\u5C42\u53EA\u88C1\u526A\uFF0C\u5185\u5C42\u624D transform \u6EDA\u52A8\uFF1B\u975E hover \u5185\u5C42\u81EA\u5E26\u7701\u7565\u53F7\u3002\n 2026-10-20\uFF1A\u672C\u6587\u4EF6\u539F\u662F\u6742\u70E9\u300Cselect.css\u300D\uFF08\u4E0B\u62C9 / \u65E5\u5386 / \u65F6\u5206\u7684\u76AE\u80A4\u90FD\u88C5\u8FC7\uFF09\uFF0C\u968F\u7740\u90A3\u4E9B\u63A7\u4EF6\n \u4E00\u4E2A\u4E2A\u5220\u5B8C\uFF0C\u6700\u540E\u53EA\u5269\u8DD1\u9A6C\u706F\uFF0C\u6545\u6309\u672C\u5305\u300C\u4E00\u4E2A css \u670D\u52A1\u4E00\u4E2A\u5BF9\u8C61\u300D\u7684\u683C\u5C40\u6539\u540D\u5F52\u6863\u3002\n \u540C\u6279\u6E05\u6389\u7684\u8FD8\u6709\u96F6\u5F15\u7528\u7684\u7701\u7565\u53F7\u7C7B .dshpc-ellipsis \u2014\u2014 \u672C\u5305\u4E09\u4E2A\u7528\u5230\u622A\u65AD\u7684\u5730\u65B9\u90FD\u6CA1\u91C7\u7EB3\u5B83\u3002 */\n.dshpc-mq{display:block;overflow:hidden;white-space:nowrap;}\n.dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}\n/* \u26A0\uFE0F \u8DD1\u6CD5\uFF08\u7528\u6237 2026-10-03 \u62CD\u677F\uFF09\uFF1A**\u8DD1\u4E00\u904D\u3001\u505C\u5728\u5C3E\u5B57**\uFF08\u64AD\u653E 1 \u6B21 + forwards\uFF09\uFF0C\u4E0D\u6765\u56DE\u5F39\u3001\u4E0D\u65E0\u9650\u8DD1\u3002\n \u6EDA\u8DDD = \u7CBE\u786E\u6EA2\u51FA\u91CF \u21D2 \u505C\u4E0B\u65F6\u6700\u540E\u4E00\u4E2A\u5B57\u6B63\u597D\u8D34\u53F3\u7F18\uFF0C**\u4E0D\u4F1A\u8DD1\u8FDB\u9ED1\u5757**\uFF08\u9ED1\u5757\u662F\u65E7\u624B\u5199\u7248\u628A\n \u5185\u5C42\u76D2\u5B50\u88C1\u4E86\u3001\u6309\u300C\u534A\u622A\u6587\u672C\u300D\u5E73\u79FB\u5BFC\u81F4\u7684\uFF09\u3002\u9F20\u6807\u79FB\u5F00 \u21D2 :hover \u5931\u6548 \u21D2 \u81EA\u52A8\u590D\u4F4D\u56DE\u7701\u7565\u53F7\u6001\u3002 */\n.dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;}\n@keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}}\n/* \u6EA2\u51FA\u6E10\u5F71\uFF08\u7528\u6237 2026-10-24 \u62CD\u677F\u300C\u5DE6\u53F3\u7A0D\u5FAE\u6709\u70B9\u6E10\u5F71\u300D\uFF1B\u5B98\u65B9\u53E3\u5F84 = dsh-client-ui-primitives@0.2.1-rc.2\n PathLabel.module.css:13-15\uFF1Amask-image \u7EBF\u6027\u6E10\u9690 + 28px \u968F\u5B98\u65B9\uFF09\u3002\u26A0\uFE0F \u53EA\u5728 **hover \u6EDA\u52A8\u6001** \u52A0\uFF1A\n \u9759\u6001\u6001\uFF08\u4E09\u4E2A\u70B9\uFF09\u4E0D\u8981\u6E10\u5F71\uFF08\u7528\u6237 2026-10-24 \u4E8C\u6B21\u62CD\u677F\uFF09\uFF0Chover \u6EDA\u52A8\u65F6\u4E24\u7AEF\u6E10\u5F71\u2014\u2014\u5DE6\u7F18\u67D4\u5316\u88AB\u88C1\u7684\u6587\u5B57\u5934\u3002 */\n.dshpc-mq-run:hover{mask-image:linear-gradient(to right, transparent, #000 28px, #000 calc(100% - 28px), transparent);}\n";
|
|
2
|
+
//# sourceMappingURL=marquee-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee-css.generated.d.ts","sourceRoot":"","sources":["../../src/ui/marquee-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,qyFAAksC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// ⚠️ 生成物,勿手改。真源 = src/ui/marquee.css
|
|
2
|
+
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
+
export const MARQUEE_CSS = "/* 跑马灯(MarqueeText):双层——外层只裁剪,内层才 transform 滚动;非 hover 内层自带省略号。\n 2026-10-20:本文件原是杂烩「select.css」(下拉 / 日历 / 时分的皮肤都装过),随着那些控件\n 一个个删完,最后只剩跑马灯,故按本包「一个 css 服务一个对象」的格局改名归档。\n 同批清掉的还有零引用的省略号类 .dshpc-ellipsis —— 本包三个用到截断的地方都没采纳它。 */\n.dshpc-mq{display:block;overflow:hidden;white-space:nowrap;}\n.dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}\n/* ⚠️ 跑法(用户 2026-10-03 拍板):**跑一遍、停在尾字**(播放 1 次 + forwards),不来回弹、不无限跑。\n 滚距 = 精确溢出量 ⇒ 停下时最后一个字正好贴右缘,**不会跑进黑块**(黑块是旧手写版把\n 内层盒子裁了、按「半截文本」平移导致的)。鼠标移开 ⇒ :hover 失效 ⇒ 自动复位回省略号态。 */\n.dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;}\n@keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}}\n/* 溢出渐影(用户 2026-10-24 拍板「左右稍微有点渐影」;官方口径 = dsh-client-ui-primitives@0.2.1-rc.2\n PathLabel.module.css:13-15:mask-image 线性渐隐 + 28px 随官方)。⚠️ 只在 **hover 滚动态** 加:\n 静态态(三个点)不要渐影(用户 2026-10-24 二次拍板),hover 滚动时两端渐影——左缘柔化被裁的文字头。 */\n.dshpc-mq-run:hover{mask-image:linear-gradient(to right, transparent, #000 28px, #000 calc(100% - 28px), transparent);}\n";
|
|
4
|
+
//# sourceMappingURL=marquee-css.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee-css.generated.js","sourceRoot":"","sources":["../../src/ui/marquee-css.generated.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,+rCAA+rC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee-css.js","sourceRoot":"","sources":["../../src/ui/marquee-css.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type AlertModalProps } from './AlertModal.js';
|
|
2
|
+
import { type ConfirmModalProps } from './ConfirmModal.js';
|
|
3
|
+
export interface HostConfirmArgs {
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
confirmText?: string;
|
|
7
|
+
cancelText?: string;
|
|
8
|
+
danger?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface HostAlertArgs {
|
|
11
|
+
title?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
confirmText?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface HostDialogHandlers {
|
|
16
|
+
confirm: (opts: HostConfirmArgs) => Promise<boolean>;
|
|
17
|
+
alert: (opts: HostAlertArgs) => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare function registerHostDialog(handlers: HostDialogHandlers): void;
|
|
20
|
+
export type ConfirmOptions = Omit<ConfirmModalProps, 'onConfirm' | 'onCancel'> & {
|
|
21
|
+
skin?: 'core' | 'host';
|
|
22
|
+
};
|
|
23
|
+
export type AlertOptions = Omit<AlertModalProps, 'onConfirm'> & {
|
|
24
|
+
skin?: 'core' | 'host';
|
|
25
|
+
};
|
|
26
|
+
/** 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。 */
|
|
27
|
+
export declare function confirmModal(opts: ConfirmOptions): Promise<boolean>;
|
|
28
|
+
/** 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。 */
|
|
29
|
+
export declare function alertModal(opts: AlertOptions): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=modal-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-host.d.ts","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAmDxE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACpD,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAErE;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAC3G,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAE1F,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createElement as h, Fragment } from 'react';
|
|
2
|
+
import { createRoot } from 'react-dom/client';
|
|
3
|
+
import { ensureControls, getStyleKit } from './css.js';
|
|
4
|
+
import { AlertModal } from './AlertModal.js';
|
|
5
|
+
import { ConfirmModal } from './ConfirmModal.js';
|
|
6
|
+
// ⚠️ core 的 StyleKit / i18n 都是**模块级单例**(见 css.ts 注释),不依赖 React Context,
|
|
7
|
+
// 所以命令式弹窗所在的独立 root 天然能读到它们——无需手动注入插件上下文。
|
|
8
|
+
// 唯一读不到的是「插件自己定义的 React Context」,那是用户的私有环境,命令式本就不继承。
|
|
9
|
+
let hostRoot = null;
|
|
10
|
+
let hostContainer = null;
|
|
11
|
+
let entries = [];
|
|
12
|
+
let idSeq = 0;
|
|
13
|
+
/** 取(懒建)常驻挂载根;非浏览器环境返回 null。 */
|
|
14
|
+
function getHostRoot() {
|
|
15
|
+
if (typeof document === 'undefined')
|
|
16
|
+
return null;
|
|
17
|
+
if (hostRoot === null) {
|
|
18
|
+
hostContainer = document.createElement('div');
|
|
19
|
+
hostContainer.setAttribute('data-dshpc-modal-host', '');
|
|
20
|
+
document.body.appendChild(hostContainer);
|
|
21
|
+
hostRoot = createRoot(hostContainer);
|
|
22
|
+
}
|
|
23
|
+
return hostRoot;
|
|
24
|
+
}
|
|
25
|
+
/** 重渲染当前堆叠;空了就卸载回收,不残留空根。 */
|
|
26
|
+
function flush() {
|
|
27
|
+
const root = getHostRoot();
|
|
28
|
+
if (root === null)
|
|
29
|
+
return;
|
|
30
|
+
ensureControls(getStyleKit());
|
|
31
|
+
if (entries.length === 0) {
|
|
32
|
+
root.unmount();
|
|
33
|
+
hostContainer?.remove();
|
|
34
|
+
hostRoot = null;
|
|
35
|
+
hostContainer = null;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
root.render(h(Fragment, null, entries.map((e) => e.node)));
|
|
39
|
+
}
|
|
40
|
+
function dismiss(id) {
|
|
41
|
+
entries = entries.filter((e) => e.id !== id);
|
|
42
|
+
flush();
|
|
43
|
+
}
|
|
44
|
+
let hostHandlers = null;
|
|
45
|
+
export function registerHostDialog(handlers) {
|
|
46
|
+
hostHandlers = handlers;
|
|
47
|
+
}
|
|
48
|
+
/** 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。 */
|
|
49
|
+
export function confirmModal(opts) {
|
|
50
|
+
if (opts.skin === 'host') {
|
|
51
|
+
if (hostHandlers !== null) {
|
|
52
|
+
return hostHandlers.confirm({
|
|
53
|
+
title: opts.title == null ? undefined : String(opts.title),
|
|
54
|
+
description: opts.message == null ? undefined : String(opts.message),
|
|
55
|
+
confirmText: opts.confirmText,
|
|
56
|
+
cancelText: opts.cancelText,
|
|
57
|
+
danger: opts.tone === 'danger',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
console.warn('[dsh-plugin-core] confirmModal skin:"host" 需先引入官方适配层 official.js,已回落到 core 皮肤');
|
|
61
|
+
}
|
|
62
|
+
const { skin: _skin, ...core } = opts;
|
|
63
|
+
void _skin;
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
const id = ++idSeq;
|
|
66
|
+
const close = (result) => {
|
|
67
|
+
dismiss(id);
|
|
68
|
+
resolve(result);
|
|
69
|
+
};
|
|
70
|
+
entries.push({
|
|
71
|
+
id,
|
|
72
|
+
node: h(ConfirmModal, { ...core, onConfirm: () => close(true), onCancel: () => close(false) }),
|
|
73
|
+
});
|
|
74
|
+
flush();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/** 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。 */
|
|
78
|
+
export function alertModal(opts) {
|
|
79
|
+
if (opts.skin === 'host') {
|
|
80
|
+
if (hostHandlers !== null) {
|
|
81
|
+
return hostHandlers.alert({
|
|
82
|
+
title: opts.title == null ? undefined : String(opts.title),
|
|
83
|
+
description: opts.message == null ? undefined : String(opts.message),
|
|
84
|
+
confirmText: opts.confirmText,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
console.warn('[dsh-plugin-core] alertModal skin:"host" 需先引入官方适配层 official.js,已回落到 core 皮肤');
|
|
88
|
+
}
|
|
89
|
+
const { skin: _skin, ...core } = opts;
|
|
90
|
+
void _skin;
|
|
91
|
+
return new Promise((resolve) => {
|
|
92
|
+
const id = ++idSeq;
|
|
93
|
+
const close = () => {
|
|
94
|
+
dismiss(id);
|
|
95
|
+
resolve();
|
|
96
|
+
};
|
|
97
|
+
entries.push({ id, node: h(AlertModal, { ...core, onConfirm: close }) });
|
|
98
|
+
flush();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=modal-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-host.js","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official.d.ts","sourceRoot":"","sources":["../../src/ui/official.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,uCAAuC,CAAA;AAEjE,cAAc,uCAAuC,CAAA;AAErD,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"official.d.ts","sourceRoot":"","sources":["../../src/ui/official.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,uCAAuC,CAAA;AAEjE,cAAc,uCAAuC,CAAA;AAErD,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAE,CAAA;AAQnB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,OAAO,QAAQ,EAC1D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC7B,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAUtB"}
|
package/dist/ui/official.js
CHANGED
|
@@ -21,6 +21,9 @@ export * from '@deepseek-ai/dsh-client-ui-primitives';
|
|
|
21
21
|
/** 官方命名空间:给运行时兜底 / 审计用;业务代码优先用上面的具名导出。 */
|
|
22
22
|
export { Official };
|
|
23
23
|
const warned = new Set();
|
|
24
|
+
// biome 的 noDynamicNamespaceImportAccess 不许直接 `Official[name]`:
|
|
25
|
+
// 先把命名空间收进普通 Record 再按名取(语义不变,避免动态访问命名空间)。
|
|
26
|
+
const officialRegistry = Official;
|
|
24
27
|
/**
|
|
25
28
|
* 运行时取一个官方导出;缺失(宿主升级改名 / 老宿主没有)时**一次性**告警并回落到 `fallback`,
|
|
26
29
|
* 不静默白屏。仅用于「官方可能漂移」的边角件;稳定常用件直接用具名导出即可。
|
|
@@ -29,7 +32,7 @@ const warned = new Set();
|
|
|
29
32
|
* @param fallback - 缺失时的兜底(通常是保留的自绘实现)。
|
|
30
33
|
*/
|
|
31
34
|
export function pickOfficial(name, fallback) {
|
|
32
|
-
const value =
|
|
35
|
+
const value = officialRegistry[name];
|
|
33
36
|
if (value === undefined) {
|
|
34
37
|
if (!warned.has(name)) {
|
|
35
38
|
warned.add(name);
|
|
@@ -39,4 +42,45 @@ export function pickOfficial(name, fallback) {
|
|
|
39
42
|
}
|
|
40
43
|
return value;
|
|
41
44
|
}
|
|
45
|
+
// ── 宿主样式命令式弹窗:渲染逻辑住本文件(唯一 import 平台模块处),运行时注册给 modal-host ──
|
|
46
|
+
// 默认命令(core 皮肤)在 ui 入口自绘小确认框家族;宿主皮肤必须经官方 Modal,
|
|
47
|
+
// 故这里实现后通过 registerHostDialog 注入,confirmModal/alertModal 传 skin:"host" 即调用,保持 ui 入口零官方依赖。
|
|
48
|
+
import { createElement as h } from 'react';
|
|
49
|
+
import { createRoot } from 'react-dom/client';
|
|
50
|
+
import { Button } from './Button.js';
|
|
51
|
+
import { t } from '../utils/i18n.js';
|
|
52
|
+
import { registerHostDialog } from './modal-host.js';
|
|
53
|
+
function mountHostModal(render) {
|
|
54
|
+
if (typeof document === 'undefined')
|
|
55
|
+
return;
|
|
56
|
+
const container = document.createElement('div');
|
|
57
|
+
document.body.appendChild(container);
|
|
58
|
+
const root = createRoot(container);
|
|
59
|
+
const close = () => {
|
|
60
|
+
root.unmount();
|
|
61
|
+
container.remove();
|
|
62
|
+
};
|
|
63
|
+
root.render(render(close));
|
|
64
|
+
}
|
|
65
|
+
const hostConfirm = (opts) => new Promise((resolve) => {
|
|
66
|
+
mountHostModal((close) => h(Official.Modal, {
|
|
67
|
+
open: true,
|
|
68
|
+
onClose: () => { close(); resolve(false); },
|
|
69
|
+
title: opts.title ?? '',
|
|
70
|
+
closeLabel: t('modalClose'),
|
|
71
|
+
description: opts.description,
|
|
72
|
+
footer: h('div', { style: { display: 'flex', justifyContent: 'flex-end', gap: '8px' } }, h(Button, { variant: 'outline', onClick: () => { close(); resolve(false); } }, opts.cancelText ?? t('cancel')), h(Button, { variant: opts.danger === true ? 'danger' : 'primary', onClick: () => { close(); resolve(true); } }, opts.confirmText ?? t('confirm'))),
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
75
|
+
const hostAlert = (opts) => new Promise((resolve) => {
|
|
76
|
+
mountHostModal((close) => h(Official.Modal, {
|
|
77
|
+
open: true,
|
|
78
|
+
onClose: () => { close(); resolve(); },
|
|
79
|
+
title: opts.title ?? '',
|
|
80
|
+
closeLabel: t('modalClose'),
|
|
81
|
+
description: opts.description,
|
|
82
|
+
footer: h('div', { style: { display: 'flex', justifyContent: 'flex-end' } }, h(Button, { variant: 'primary', onClick: () => { close(); resolve(); } }, opts.confirmText ?? t('dialogOk'))),
|
|
83
|
+
}));
|
|
84
|
+
});
|
|
85
|
+
registerHostDialog({ confirm: hostConfirm, alert: hostAlert });
|
|
42
86
|
//# sourceMappingURL=official.js.map
|
package/dist/ui/official.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official.js","sourceRoot":"","sources":["../../src/ui/official.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,uCAAuC,CAAA;AAEjE,cAAc,uCAAuC,CAAA;AAErD,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;AAEhC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,QAA8B;IAE9B,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"official.js","sourceRoot":"","sources":["../../src/ui/official.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-dock-css.d.ts","sourceRoot":"","sources":["../../src/ui/panel-dock-css.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const PANEL_DOCK_CSS = "\n/* \u505C\u9760\u680F = **\u5E03\u5C40\u6210\u5458**\uFF0C\u4E0D\u662F\u6D6E\u5C42\uFF1A\u5B83\u5360\u5BBD\u5EA6\u3001\u628A\u4E3B\u533A\u771F\u6B63\u6324\u7A84\uFF08\u5144\u5F1F\u9879\u76EE 2026-09-28\uFF1A\n \u300C\u5206\u680F\u538B\u8FC7\u6765\uFF0C\u4E0D\u662F\u76D6\u4E0A\u53BB\u300D\uFF09\u3002\u6240\u4EE5\u8C03\u7528\u65B9\u5FC5\u987B\u628A\u5B83\u653E\u8FDB\u81EA\u5DF1\u7684 flex \u6839\u91CC\u3002 */\n.dshpc-dock{display:flex;flex:0 0 auto;align-self:stretch;min-width:0}\n\n/* \u5355\u680F\uFF1Asticky + 100vh \u8BA9\u5B83\u5728\u9875\u9762\u6EDA\u52A8\u65F6\u4FDD\u6301\u53EF\u89C1\uFF0C\u540C\u65F6\u4ECD\u7136\u5360\u5BBD\u5EA6\u3002\n \u26A0\uFE0F **\u672C\u6761\u523B\u610F\u4E0D\u8BBE z-index**\uFF1A\u5E03\u5C40\u6210\u5458\u4E00\u65E6\u5E26\u6B63 z-index\uFF0C\u5C31\u4F1A\u65E0\u6761\u4EF6\u538B\u8FC7\u5BBF\u4E3B portal \u5230 body \u7684\n \u5F39\u7A97\uFF08\u5144\u5F1F\u9879\u76EE 2026-10-05 \u771F\u673A\u4E8B\u6545\u300C\u4FA7\u8FB9\u680F\u76D6\u4F4F\u5BBF\u4E3B\u8BBE\u7F6E\u5F39\u7A97\u300D\uFF09\u3002\u5C42\u5E8F\u4EA4\u7ED9 DOM \u987A\u5E8F\u88C1\u51B3\u3002 */\n.dshpc-dock__panel{\n box-sizing:border-box;position:sticky;top:0;align-self:stretch;\n display:flex;flex-direction:column;flex:0 0 auto;\n /* \u9AD8\u5EA6\u9ED8\u8BA4\u89C6\u53E3\u9AD8\uFF08\u6574\u9875\u573A\u666F\uFF09\uFF1B\u5D4C\u5728\u5B9A\u9AD8\u5BB9\u5668\u91CC\u65F6\u7531\u8C03\u7528\u65B9\u7ED9 --dshpc-dock-h\uFF08\u5982 420px / 100%\uFF09\u3002 */\n height:var(--dshpc-dock-h,100vh);max-height:var(--dshpc-dock-h,100vh);min-width:0;\n background:var(--dshpc-surface-base);color:var(--dshpc-fg);\n border-left:1px solid var(--dshpc-border);\n box-shadow:var(--dshpc-shadow-2);\n}\n\n.dshpc-dock__head{\n flex:none;display:flex;align-items:center;gap:8px;\n /* \u53F3\u4FA7 34px = 8(\u8FB9\u8DDD) + 20(\u5173\u94AE) + 6(\u547C\u5438)\uFF1A\u7ED9\u7EDD\u5BF9\u5B9A\u4F4D\u7684\u5173\u94AE\u7559\u4F4D\uFF0C\u6807\u9898/extra \u4E0D\u4ECE\u5B83\u5E95\u4E0B\u94BB */\n padding:10px 34px 10px 14px;\n border-bottom:1px solid var(--dshpc-border-faint);\n}\n/* \u56FE\u6807\u4F4D / \u6807\u9898\u53F3\u4FA7\u7684\u5185\u5BB9\u4F4D\uFF1A\u6D88\u8D39\u65B9\u4F20 ReactNode\uFF0C\u53EF\u585E\u591A\u4E2A\uFF1B\u5E93\u53EA\u8D1F\u8D23\u6392\u5E03\uFF0C\u4E0D\u62A2\u5BBD\u5EA6\u3002 */\n.dshpc-dock__lead{display:inline-flex;align-items:center;gap:6px;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-dock__extra{display:inline-flex;align-items:center;gap:6px;flex:none;margin-left:auto}\n/* \u81EA\u5B9A\u4E49\u5934\u90E8\uFF1A\u6574\u884C\u5F52\u8C03\u7528\u65B9 \u2014\u2014 \u4E0D\u52A0\u5185\u8FB9\u8DDD/\u8FB9\u6846/\u80CC\u666F\uFF0C\u4E5F\u4E0D\u7ED9\u5173\u94AE\u7559\u5185\u8054\u7A7A\u95F4\uFF08\u5173\u94AE\u662F\u7EDD\u5BF9\u5B9A\u4F4D\u7684\uFF09\u3002 */\n.dshpc-dock__head--custom{display:block;padding:0;border-bottom:none}\n.dshpc-dock__title{\n flex:1 1 auto;min-width:0;\n overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\n font-size:var(--dshpc-font-md);font-weight:600;\n}\n/* \u5173\u95ED\u94AE\uFF1A20\u00D720 \u65B9\u89D2\u56FE\u6807\u4F4D\uFF08\u4E0E Modal \u7684\u5173\u95ED\u94AE\u540C\u89C4\u683C\uFF0C\u4E0D\u501F Picker \u89E6\u53D1\u5668\u76AE\u80A4\uFF09\u3002 */\n.dshpc-dock__close{\n display:inline-flex;align-items:center;justify-content:center;flex:none;\n width:20px;height:20px;padding:0;border:none;border-radius:var(--dshpc-radius-sm);\n background:transparent;color:var(--dshpc-fg-3);\n font-family:inherit;font-size:13px;line-height:1;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n.dshpc-dock__close:hover{background:var(--dshpc-hover);color:var(--dshpc-fg)}\n.dshpc-dock__close:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* \u5934\u90E8\u5173\u94AE\uFF1A\u7EDD\u5BF9\u5B9A\u4F4D\uFF0C\u4F4D\u7F6E\u4E0E\u5185\u7F6E\u5934\u5B8C\u5168\u4E00\u81F4\uFF08top 10 / right 8\uFF09\uFF1B\u81EA\u5B9A\u4E49\u5934\u4E5F\u7528\u8FD9\u4E00\u4E2A\u4F4D\u7F6E\u3002\n \u951A\u70B9\u662F\u9762\u677F\u672C\u8EAB\uFF08position:sticky \u5373\u5B9A\u4F4D\u4E0A\u4E0B\u6587\uFF09\uFF0C\u4E0D\u5728\u6EDA\u52A8\u5185\u5BB9\u91CC\uFF0C\u6240\u4EE5\u6B63\u6587\u6EDA\u52A8\u5B83\u4E0D\u8DDF\u6EDA\u3002 */\n.dshpc-dock__close--abs{position:absolute;top:10px;right:8px;z-index:8}\n/* \u6D6E\u52A8\u5173\u94AE\uFF1A\u65E0\u5934\u90E8\u9762\u677F\u7528\uFF0C\u7565\u6536\u4E00\u70B9\u8FB9\u8DDD\u3002 */\n.dshpc-dock__close--floating{\n position:absolute;top:6px;right:6px;z-index:8;\n background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border-faint);\n}\n\n/* \u5185\u5BB9\u533A\u81EA\u5DF1\u6EDA\uFF1A\u9762\u677F\u9AD8\u5EA6\u9501 100vh\uFF0C\u5185\u5BB9\u4E0D\u8BBE\u5185\u90E8\u6EDA\u52A8\u5C31\u4F1A\u628A\u6574\u9875\u6491\u9AD8\u3002 */\n.dshpc-dock__body{flex:1 1 auto;min-height:0;overflow:auto}\n\n/* \u62D6\u62FD\u6761\uFF1A\u5DE6\u7F18 6px \u547D\u4E2D\u533A\uFF0C**\u4E0D\u753B\u7EBF**\uFF0Chover/\u6309\u4F4F\u65F6\u624D\u6D6E\u51FA\u4E00\u6761\u6D45\u8272\u5E26\u3002\n z-index 7 \u5FC5\u987B\u9AD8\u4E8E\u9762\u677F\u5185\u5BB9\u91CC\u7684\u6D6E\u5C42\uFF08\u590D\u5236\u94AE\u4E00\u7C7B\uFF09\uFF0C\u5426\u5219\u547D\u4E2D\u533A\u4F1A\u88AB\u5185\u5BB9\u76D6\u4F4F\u3002 */\n.dshpc-dock__resizer{\n position:absolute;left:0;top:0;bottom:0;width:6px;\n z-index:7;cursor:col-resize;background:transparent;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n/* hover/\u6309\u4F4F\uFF1A\u4E0D\u586B\u7070\u5E26\uFF0C\u6539\u4E3A\u5B98\u65B9 work \u533A\u6307\u793A\u6761\u6837\u5F0F \u2014\u2014 \u5DE6\u7F18 2px \u84DD\u7AD6\u6761\u3001\u4E0A\u4E0B\u6E10\u9690\n \uFF08\u989C\u8272\u8D70 business \u84DD\u7684\u5B98\u65B9 alias\uFF0C\u660E\u6697\u81EA\u52A8\u8DDF\u968F\u5BBF\u4E3B\uFF1B\u547D\u4E2D\u533A\u4ECD\u662F 6px \u4E0D\u53D8\uFF09\u3002 */\n.dshpc-dock__resizer:hover,.dshpc-dock__resizer:active{\n background:linear-gradient(180deg,transparent,var(--dshpc-business) 30%,var(--dshpc-business) 70%,transparent) left center / 1px 100% no-repeat;\n}\n\n/* \u62D6\u52A8\u671F\uFF1A\u2460 <iframe>\uFF08PDF / HTML \u9884\u89C8\uFF09\u662F\u72EC\u7ACB\u6587\u6863\uFF0C\u4F1A\u541E\u6389\u7236\u6587\u6863\u7684 pointermove\uFF0C\n \u5411\u53F3\u62D6\u8FDB iframe \u5C31\u5361\u6B7B \u2014\u2014 \u6574\u7247\u8BA9\u51FA\u6307\u9488\u4E8B\u4EF6\uFF1B\u2461 contain \u628A\u91CD\u6392\u9694\u79BB\u5728\u680F\u5185\uFF0C\n \u5426\u5219\u6BCF\u5E27\u6539\u5BBD\u5EA6\u90FD\u4F1A\u7275\u52A8\u6574\u9875\u91CD\u6392\uFF08\u5144\u5F1F\u9879\u76EE 2026-10-04 \u771F\u673A\u300C\u632A\u5F88\u4E45\u624D\u52A8\u4E00\u4E0B\u300D\uFF09\u3002 */\n.dshpc-dock.dshpc-dock--resizing iframe{pointer-events:none}\n.dshpc-dock.dshpc-dock--resizing .dshpc-dock__panel{contain:layout paint;will-change:width}\n";
|
|
2
|
+
//# sourceMappingURL=panel-dock-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-dock-css.generated.d.ts","sourceRoot":"","sources":["../../src/ui/panel-dock-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,srNAA+kH,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// ⚠️ 生成物,勿手改。真源 = src/ui/panel-dock.css
|
|
2
|
+
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
+
export const PANEL_DOCK_CSS = "\n/* 停靠栏 = **布局成员**,不是浮层:它占宽度、把主区真正挤窄(兄弟项目 2026-09-28:\n 「分栏压过来,不是盖上去」)。所以调用方必须把它放进自己的 flex 根里。 */\n.dshpc-dock{display:flex;flex:0 0 auto;align-self:stretch;min-width:0}\n\n/* 单栏:sticky + 100vh 让它在页面滚动时保持可见,同时仍然占宽度。\n ⚠️ **本条刻意不设 z-index**:布局成员一旦带正 z-index,就会无条件压过宿主 portal 到 body 的\n 弹窗(兄弟项目 2026-10-05 真机事故「侧边栏盖住宿主设置弹窗」)。层序交给 DOM 顺序裁决。 */\n.dshpc-dock__panel{\n box-sizing:border-box;position:sticky;top:0;align-self:stretch;\n display:flex;flex-direction:column;flex:0 0 auto;\n /* 高度默认视口高(整页场景);嵌在定高容器里时由调用方给 --dshpc-dock-h(如 420px / 100%)。 */\n height:var(--dshpc-dock-h,100vh);max-height:var(--dshpc-dock-h,100vh);min-width:0;\n background:var(--dshpc-surface-base);color:var(--dshpc-fg);\n border-left:1px solid var(--dshpc-border);\n box-shadow:var(--dshpc-shadow-2);\n}\n\n.dshpc-dock__head{\n flex:none;display:flex;align-items:center;gap:8px;\n /* 右侧 34px = 8(边距) + 20(关钮) + 6(呼吸):给绝对定位的关钮留位,标题/extra 不从它底下钻 */\n padding:10px 34px 10px 14px;\n border-bottom:1px solid var(--dshpc-border-faint);\n}\n/* 图标位 / 标题右侧的内容位:消费方传 ReactNode,可塞多个;库只负责排布,不抢宽度。 */\n.dshpc-dock__lead{display:inline-flex;align-items:center;gap:6px;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-dock__extra{display:inline-flex;align-items:center;gap:6px;flex:none;margin-left:auto}\n/* 自定义头部:整行归调用方 —— 不加内边距/边框/背景,也不给关钮留内联空间(关钮是绝对定位的)。 */\n.dshpc-dock__head--custom{display:block;padding:0;border-bottom:none}\n.dshpc-dock__title{\n flex:1 1 auto;min-width:0;\n overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\n font-size:var(--dshpc-font-md);font-weight:600;\n}\n/* 关闭钮:20×20 方角图标位(与 Modal 的关闭钮同规格,不借 Picker 触发器皮肤)。 */\n.dshpc-dock__close{\n display:inline-flex;align-items:center;justify-content:center;flex:none;\n width:20px;height:20px;padding:0;border:none;border-radius:var(--dshpc-radius-sm);\n background:transparent;color:var(--dshpc-fg-3);\n font-family:inherit;font-size:13px;line-height:1;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n.dshpc-dock__close:hover{background:var(--dshpc-hover);color:var(--dshpc-fg)}\n.dshpc-dock__close:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* 头部关钮:绝对定位,位置与内置头完全一致(top 10 / right 8);自定义头也用这一个位置。\n 锚点是面板本身(position:sticky 即定位上下文),不在滚动内容里,所以正文滚动它不跟滚。 */\n.dshpc-dock__close--abs{position:absolute;top:10px;right:8px;z-index:8}\n/* 浮动关钮:无头部面板用,略收一点边距。 */\n.dshpc-dock__close--floating{\n position:absolute;top:6px;right:6px;z-index:8;\n background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border-faint);\n}\n\n/* 内容区自己滚:面板高度锁 100vh,内容不设内部滚动就会把整页撑高。 */\n.dshpc-dock__body{flex:1 1 auto;min-height:0;overflow:auto}\n\n/* 拖拽条:左缘 6px 命中区,**不画线**,hover/按住时才浮出一条浅色带。\n z-index 7 必须高于面板内容里的浮层(复制钮一类),否则命中区会被内容盖住。 */\n.dshpc-dock__resizer{\n position:absolute;left:0;top:0;bottom:0;width:6px;\n z-index:7;cursor:col-resize;background:transparent;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n/* hover/按住:不填灰带,改为官方 work 区指示条样式 —— 左缘 2px 蓝竖条、上下渐隐\n (颜色走 business 蓝的官方 alias,明暗自动跟随宿主;命中区仍是 6px 不变)。 */\n.dshpc-dock__resizer:hover,.dshpc-dock__resizer:active{\n background:linear-gradient(180deg,transparent,var(--dshpc-business) 30%,var(--dshpc-business) 70%,transparent) left center / 1px 100% no-repeat;\n}\n\n/* 拖动期:① <iframe>(PDF / HTML 预览)是独立文档,会吞掉父文档的 pointermove,\n 向右拖进 iframe 就卡死 —— 整片让出指针事件;② contain 把重排隔离在栏内,\n 否则每帧改宽度都会牵动整页重排(兄弟项目 2026-10-04 真机「挪很久才动一下」)。 */\n.dshpc-dock.dshpc-dock--resizing iframe{pointer-events:none}\n.dshpc-dock.dshpc-dock--resizing .dshpc-dock__panel{contain:layout paint;will-change:width}\n";
|
|
4
|
+
//# sourceMappingURL=panel-dock-css.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-dock-css.generated.js","sourceRoot":"","sources":["../../src/ui/panel-dock-css.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,4kHAA4kH,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-dock-css.js","sourceRoot":"","sources":["../../src/ui/panel-dock-css.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,kDAAkD;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA"}
|