@pstdio/ui 0.15.0 → 0.17.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/dist/{MermaidComponent-DBJsTOmj.js → MermaidComponent-BCMQqPqu.js} +11 -11
- package/dist/{MermaidComponent-DBJsTOmj.js.map → MermaidComponent-BCMQqPqu.js.map} +1 -1
- package/dist/browser-storage-BinyFNJX.js +40 -0
- package/dist/browser-storage-BinyFNJX.js.map +1 -0
- package/dist/chat-ui.js +1832 -1275
- package/dist/chat-ui.js.map +1 -1
- package/dist/checkbox-B2zYVemL.js +70 -0
- package/dist/checkbox-B2zYVemL.js.map +1 -0
- package/dist/components/chat-ui/components/ai-conversation.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-message.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -1
- package/dist/components/chat-ui/components/attachment-list.d.ts +1 -1
- package/dist/components/chat-ui/components/auto-scroll.d.ts +27 -0
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
- package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +22 -0
- package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
- package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
- package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
- package/dist/components/chat-ui/components/message-types.d.ts +14 -0
- package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
- package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
- package/dist/components/chat-ui/components/timeline.d.ts +5 -2
- package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
- package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
- package/dist/components/chat-ui/index.d.ts +4 -2
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -1
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +4 -14
- package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
- package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -2
- package/dist/components/command-palette/index.d.ts +4 -0
- package/dist/components/data-table/build-columns.d.ts +13 -2
- package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
- package/dist/components/data-table/color-cell-style.d.ts +13 -0
- package/dist/components/data-table/color-scale-cell.d.ts +7 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +12 -0
- package/dist/components/data-table/data-table-header.d.ts +18 -0
- package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
- package/dist/components/data-table/data-table-state.d.ts +27 -0
- package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
- package/dist/components/data-table/data-table-stats.d.ts +19 -0
- package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
- package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
- package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
- package/dist/components/data-table/friendly-json-display.d.ts +31 -0
- package/dist/components/data-table/index.d.ts +3 -1
- package/dist/components/data-table/json-cell.d.ts +6 -0
- package/dist/components/data-table/pagination-footer.d.ts +4 -1
- package/dist/components/data-table/selection-toolbar.d.ts +3 -1
- package/dist/components/data-table/types.d.ts +72 -0
- package/dist/components/diff-viewer/diff-card.d.ts +1 -0
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -19
- package/dist/components/diff-viewer/diff-drawer.d.ts +1 -0
- package/dist/components/diff-viewer/index.d.ts +2 -0
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +7 -3
- package/dist/components/internal/style-guide.d.ts +14 -0
- package/dist/components/internal/token-editor-controls.d.ts +8 -0
- package/dist/components/internal/token-editor-data.d.ts +40 -0
- package/dist/components/internal/token-editor-state.d.ts +22 -0
- package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
- package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
- package/dist/components/kanban-renderer/index.d.ts +19 -0
- package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
- package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
- package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +16 -15
- package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +5 -4
- package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
- package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
- package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
- package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
- package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
- package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
- package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
- package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
- package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
- package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
- package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
- package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +12 -9
- package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -14
- package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/panel-header.constants.d.ts +3 -0
- package/dist/components/{resizable-split-layout.d.ts → layout/resizable-split-layout.d.ts} +3 -2
- package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
- package/dist/components/{resizable-split-layout.handle.d.ts → layout/resizable-split-layout.handle.d.ts} +6 -2
- package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
- package/dist/components/list-row/list-row-actions.d.ts +1 -0
- package/dist/components/list-row/list-row-content.d.ts +7 -0
- package/dist/components/list-row/list-row.types.d.ts +4 -1
- package/dist/components/overlays/attached-menu.d.ts +6 -0
- package/dist/components/overlays/attachment-chip.d.ts +13 -0
- package/dist/components/overlays/index.d.ts +16 -0
- package/dist/components/{resource-context-menu.d.ts → overlays/resource-context-menu.d.ts} +13 -1
- package/dist/components/{search-modal-content.d.ts → overlays/search-modal-content.d.ts} +1 -1
- package/dist/components/{searchable-menu.d.ts → overlays/searchable-menu.d.ts} +1 -1
- package/dist/components/param-editor/index.d.ts +24 -0
- package/dist/components/param-editor/inputs/action-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +12 -0
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +4 -0
- package/dist/components/param-editor/inputs/file-accept.d.ts +22 -0
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +14 -0
- package/dist/components/param-editor/inputs/numeric-value.d.ts +6 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/range-value.d.ts +5 -0
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +15 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +18 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +14 -0
- package/dist/components/param-editor/{selection-input.d.ts → inputs/selection-input.d.ts} +6 -6
- package/dist/components/param-editor/inputs/selection-menu.d.ts +29 -0
- package/dist/components/param-editor/inputs/slider-marks.d.ts +5 -0
- package/dist/components/param-editor/inputs/vector-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/vector-value.d.ts +7 -0
- package/dist/components/param-editor/param-editor-control-item.d.ts +15 -0
- package/dist/components/param-editor/param-editor-control-list.d.ts +5 -0
- package/dist/components/param-editor/param-editor-field-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-field.d.ts +11 -0
- package/dist/components/param-editor/param-editor-horizontal.d.ts +1 -0
- package/dist/components/param-editor/param-editor-inline-group.d.ts +5 -0
- package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
- package/dist/components/param-editor/param-editor-section.d.ts +17 -0
- package/dist/components/param-editor/param-editor.d.ts +3 -1
- package/dist/components/param-editor/param-editor.types.d.ts +135 -24
- package/dist/components/{breadcrumb.d.ts → primitives/breadcrumb.d.ts} +1 -1
- package/dist/components/primitives/index.d.ts +28 -0
- package/dist/components/{number-input.d.ts → primitives/number-input.d.ts} +0 -2
- package/dist/components/{session-indicator.d.ts → primitives/session-indicator.d.ts} +2 -1
- package/dist/components/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -1
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -17
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -13
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
- package/dist/components/rich-text/prompt-input/utils.d.ts +1 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -1
- package/dist/components/rich-text/types.d.ts +1 -1
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
- package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
- package/dist/components/sidenav/sidenav.d.ts +2 -0
- package/dist/components/sidenav/sidenav.store.d.ts +49 -0
- package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +6 -6
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +2 -1
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +1 -1
- package/dist/components/terminal/bind-session.d.ts +33 -0
- package/dist/components/terminal/index.d.ts +6 -0
- package/dist/components/terminal/scripted-bridge.d.ts +35 -0
- package/dist/components/terminal/terminal-contract.d.ts +22 -0
- package/dist/components/terminal/terminal-theme.d.ts +12 -0
- package/dist/components/terminal/terminal.d.ts +56 -0
- package/dist/components/terminal/types.d.ts +35 -0
- package/dist/components/terminal/use-terminal-session.d.ts +21 -0
- package/dist/components/tree-list/tree-list-order-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list.d.ts +2 -2
- package/dist/components/tree-list/tree-list.types.d.ts +4 -0
- package/dist/data-table.js +1271 -0
- package/dist/data-table.js.map +1 -0
- package/dist/diff-editor-BnfV8cYB.js +182 -0
- package/dist/diff-editor-BnfV8cYB.js.map +1 -0
- package/dist/diff.js +1313 -0
- package/dist/diff.js.map +1 -0
- package/dist/empty-state-Bo4HVrgr.js +34 -0
- package/dist/empty-state-Bo4HVrgr.js.map +1 -0
- package/dist/foundations/gallery/gallery-frame.d.ts +21 -0
- package/dist/foundations/gallery/sections/badges-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/buttons-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composites-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/feedback-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/inputs-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/layout-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/overlays-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/panels-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +1 -0
- package/dist/index.d.ts +14 -87
- package/dist/index.js +2027 -7501
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js +1318 -0
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +1 -0
- package/dist/kanban-renderer.js +1087 -0
- package/dist/kanban-renderer.js.map +1 -0
- package/dist/list-row-YRUxEcy3.js +808 -0
- package/dist/list-row-YRUxEcy3.js.map +1 -0
- package/dist/mermaid-renderer-DZo3qj6D.js +425 -0
- package/dist/mermaid-renderer-DZo3qj6D.js.map +1 -0
- package/dist/mermaid.js +5 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/param-editor-CYZJbmKu.js +933 -0
- package/dist/param-editor-CYZJbmKu.js.map +1 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js +925 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js.map +1 -0
- package/dist/prism-BXb57lxL.js +125 -0
- package/dist/prism-BXb57lxL.js.map +1 -0
- package/dist/radio-cLMEBBZk.js +76 -0
- package/dist/radio-cLMEBBZk.js.map +1 -0
- package/dist/resource-badge-qCWHP-wQ.js +99 -0
- package/dist/resource-badge-qCWHP-wQ.js.map +1 -0
- package/dist/{rich-message-DNSEhxXh.js → rich-message-DBf_5YlW.js} +462 -481
- package/dist/rich-message-DBf_5YlW.js.map +1 -0
- package/dist/rich-text.js +300 -299
- package/dist/rich-text.js.map +1 -1
- package/dist/scroll-area-BMbg1WcD.js +91 -0
- package/dist/scroll-area-BMbg1WcD.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/terminal.js +359 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme/global.d.ts +3 -0
- package/dist/theme/primitives/sizes.d.ts +23 -0
- package/dist/theme/recipes/badge.d.ts +50 -0
- package/dist/theme/recipes/button.d.ts +30 -19
- package/dist/theme/recipes/color-picker.d.ts +1 -0
- package/dist/theme/recipes/dialog.d.ts +1 -1
- package/dist/theme/recipes/drawer.d.ts +1 -1
- package/dist/theme/recipes/input.d.ts +55 -0
- package/dist/theme/recipes/number-input.d.ts +98 -0
- package/dist/theme/recipes/tabs.d.ts +49 -28
- package/dist/theme/recipes/textarea.d.ts +62 -1
- package/dist/theme/recipes/timeline.d.ts +74 -0
- package/dist/theme/tokens/borders.d.ts +0 -3
- package/dist/theme/tokens/colors.d.ts +118 -94
- package/dist/{theme-25P7ij4C.js → theme-CNhnbvcE.js} +1300 -375
- package/dist/theme-CNhnbvcE.js.map +1 -0
- package/dist/theme-preference-DOzHx64J.js +123 -0
- package/dist/theme-preference-DOzHx64J.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-CZHLAURU.js +1033 -0
- package/dist/tree-list-CZHLAURU.js.map +1 -0
- package/package.json +29 -3
- package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
- package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
- package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
- package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
- package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
- package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
- package/dist/components/file-tree-helpers.d.ts +0 -8
- package/dist/components/open-source-notices-screen.d.ts +0 -20
- package/dist/components/panel-header.constants.d.ts +0 -1
- package/dist/components/param-editor/input-group.d.ts +0 -10
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/TableActionMenuPlugin/TableActionMenuPlugin.d.ts +0 -5
- package/dist/components/rich-text/shared/plugins/TableCellResizerPlugin/TableCellResizerPlugin.d.ts +0 -2
- package/dist/components/rich-text/theme/report-theme.d.ts +0 -3
- package/dist/components/sidebar/sidebar.d.ts +0 -2
- package/dist/components/sidebar/sidebar.store.d.ts +0 -49
- package/dist/components/style-guide-data.d.ts +0 -40
- package/dist/components/style-guide.d.ts +0 -1
- package/dist/mermaid-renderer-CPGj6vsb.js +0 -570
- package/dist/mermaid-renderer-CPGj6vsb.js.map +0 -1
- package/dist/radio-DJtQY9po.js +0 -286
- package/dist/radio-DJtQY9po.js.map +0 -1
- package/dist/resource-badge-CeJTOn8F.js +0 -188
- package/dist/resource-badge-CeJTOn8F.js.map +0 -1
- package/dist/rich-message-DNSEhxXh.js.map +0 -1
- package/dist/theme-25P7ij4C.js.map +0 -1
- package/dist/utils/formats.d.ts +0 -7
- /package/dist/components/{palette-filter.d.ts → command-palette/palette-filter.d.ts} +0 -0
- /package/dist/components/{palette-list.d.ts → command-palette/palette-list.d.ts} +0 -0
- /package/dist/components/{palette-shortcut.d.ts → command-palette/palette-shortcut.d.ts} +0 -0
- /package/dist/components/{palette.d.ts → command-palette/palette.d.ts} +0 -0
- /package/dist/components/{code-editor.d.ts → diff-viewer/code-editor.d.ts} +0 -0
- /package/dist/components/{column-file-browser.d.ts → file-browser/column-file-browser.d.ts} +0 -0
- /package/dist/components/{performance-panel.d.ts → internal/performance-panel.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
- /package/dist/components/{header.d.ts → layout/header.d.ts} +0 -0
- /package/dist/components/{horizontal-menu-stack.d.ts → layout/horizontal-menu-stack.d.ts} +0 -0
- /package/dist/components/{item-section.d.ts → layout/item-section.d.ts} +0 -0
- /package/dist/components/{attached-panel.d.ts → overlays/attached-panel.d.ts} +0 -0
- /package/dist/components/{bubble-button.d.ts → overlays/bubble-button.d.ts} +0 -0
- /package/dist/components/{bubble-panel.d.ts → overlays/bubble-panel.d.ts} +0 -0
- /package/dist/components/{delete-confirmation-modal.d.ts → overlays/delete-confirmation-modal.d.ts} +0 -0
- /package/dist/components/{repo-picker-dialog.d.ts → overlays/repo-picker-dialog.d.ts} +0 -0
- /package/dist/components/param-editor/{color-input.d.ts → inputs/color-input.d.ts} +0 -0
- /package/dist/components/param-editor/{date-input.d.ts → inputs/date-input.d.ts} +0 -0
- /package/dist/components/param-editor/{horizontal-text-input.d.ts → inputs/horizontal-text-input.d.ts} +0 -0
- /package/dist/components/param-editor/{number-input.d.ts → inputs/number-input.d.ts} +0 -0
- /package/dist/components/param-editor/{text-input.d.ts → inputs/text-input.d.ts} +0 -0
- /package/dist/components/{alert.d.ts → primitives/alert.d.ts} +0 -0
- /package/dist/components/{checkbox.d.ts → primitives/checkbox.d.ts} +0 -0
- /package/dist/components/{content-placeholder.d.ts → primitives/content-placeholder.d.ts} +0 -0
- /package/dist/components/{empty-state.d.ts → primitives/empty-state.d.ts} +0 -0
- /package/dist/components/{error-boundary.d.ts → primitives/error-boundary.d.ts} +0 -0
- /package/dist/components/{icon-color-picker.d.ts → primitives/icon-color-picker.d.ts} +0 -0
- /package/dist/components/{info-card.d.ts → primitives/info-card.d.ts} +0 -0
- /package/dist/components/{integration-card.d.ts → primitives/integration-card.d.ts} +0 -0
- /package/dist/components/{radio.d.ts → primitives/radio.d.ts} +0 -0
- /package/dist/components/{resource-badge.d.ts → primitives/resource-badge.d.ts} +0 -0
- /package/dist/components/{scroll-area.d.ts → primitives/scroll-area.d.ts} +0 -0
- /package/dist/components/{simple-card.d.ts → primitives/simple-card.d.ts} +0 -0
- /package/dist/components/{slider.d.ts → primitives/slider.d.ts} +0 -0
- /package/dist/components/{switch.d.ts → primitives/switch.d.ts} +0 -0
- /package/dist/components/{toaster.d.ts → primitives/toaster.d.ts} +0 -0
- /package/dist/components/{workspace-badge.d.ts → primitives/workspace-badge.d.ts} +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as m, jsxs as j } from "react/jsx-runtime";
|
|
2
|
+
import { c as D } from "react/compiler-runtime";
|
|
3
|
+
import { Tooltip as T, Portal as E, ScrollArea as z } from "@chakra-ui/react";
|
|
4
|
+
import * as V from "react";
|
|
5
|
+
const B = V.forwardRef(function(u, S) {
|
|
6
|
+
const t = D(22);
|
|
7
|
+
let l, e, r, a, o, s, f;
|
|
8
|
+
t[0] !== u ? ({
|
|
9
|
+
children: l,
|
|
10
|
+
disabled: a,
|
|
11
|
+
portalled: f,
|
|
12
|
+
content: e,
|
|
13
|
+
contentProps: r,
|
|
14
|
+
portalRef: o,
|
|
15
|
+
...s
|
|
16
|
+
} = u, t[0] = u, t[1] = l, t[2] = e, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = f) : (l = t[1], e = t[2], r = t[3], a = t[4], o = t[5], s = t[6], f = t[7]);
|
|
17
|
+
const b = f === void 0 ? !0 : f;
|
|
18
|
+
if (a || _(e))
|
|
19
|
+
return l;
|
|
20
|
+
let n;
|
|
21
|
+
t[8] !== l ? (n = /* @__PURE__ */ m(T.Trigger, { asChild: !0, children: l }), t[8] = l, t[9] = n) : n = t[9];
|
|
22
|
+
const h = !b;
|
|
23
|
+
let i;
|
|
24
|
+
t[10] !== e || t[11] !== r || t[12] !== S ? (i = /* @__PURE__ */ m(T.Positioner, { children: /* @__PURE__ */ m(T.Content, { ref: S, ...r, children: e }) }), t[10] = e, t[11] = r, t[12] = S, t[13] = i) : i = t[13];
|
|
25
|
+
let d;
|
|
26
|
+
t[14] !== o || t[15] !== h || t[16] !== i ? (d = /* @__PURE__ */ m(E, { disabled: h, container: o, children: i }), t[14] = o, t[15] = h, t[16] = i, t[17] = d) : d = t[17];
|
|
27
|
+
let c;
|
|
28
|
+
return t[18] !== s || t[19] !== n || t[20] !== d ? (c = /* @__PURE__ */ j(T.Root, { openDelay: 100, closeDelay: 100, ...s, children: [
|
|
29
|
+
n,
|
|
30
|
+
d
|
|
31
|
+
] }), t[18] = s, t[19] = n, t[20] = d, t[21] = c) : c = t[21], c;
|
|
32
|
+
});
|
|
33
|
+
function H(p) {
|
|
34
|
+
return typeof p == "string" ? p.trim().length === 0 : !1;
|
|
35
|
+
}
|
|
36
|
+
function _(p) {
|
|
37
|
+
if (p == null || p === !1)
|
|
38
|
+
return !0;
|
|
39
|
+
const u = V.Children.toArray(p);
|
|
40
|
+
return u.length === 0 ? !0 : u.every(H);
|
|
41
|
+
}
|
|
42
|
+
const F = V.forwardRef(function(u, S) {
|
|
43
|
+
const t = D(40);
|
|
44
|
+
let l, e, r, a, o, s, f, b, w, n, h, i;
|
|
45
|
+
t[0] !== u ? ({
|
|
46
|
+
children: l,
|
|
47
|
+
viewportRef: i,
|
|
48
|
+
contentRef: r,
|
|
49
|
+
viewportProps: h,
|
|
50
|
+
contentProps: e,
|
|
51
|
+
verticalScrollbarProps: n,
|
|
52
|
+
horizontalScrollbarProps: a,
|
|
53
|
+
showVerticalScrollbar: s,
|
|
54
|
+
showHorizontalScrollbar: f,
|
|
55
|
+
showCorner: b,
|
|
56
|
+
size: w,
|
|
57
|
+
...o
|
|
58
|
+
} = u, t[0] = u, t[1] = l, t[2] = e, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = f, t[8] = b, t[9] = w, t[10] = n, t[11] = h, t[12] = i) : (l = t[1], e = t[2], r = t[3], a = t[4], o = t[5], s = t[6], f = t[7], b = t[8], w = t[9], n = t[10], h = t[11], i = t[12]);
|
|
59
|
+
const d = s === void 0 ? !0 : s, c = f === void 0 ? !1 : f, A = b === void 0 ? d && c : b, $ = w === void 0 ? "xs" : w;
|
|
60
|
+
let P;
|
|
61
|
+
t[13] !== e || t[14] !== c ? (P = c ? e : {
|
|
62
|
+
...e,
|
|
63
|
+
style: {
|
|
64
|
+
minWidth: 0,
|
|
65
|
+
...e?.style
|
|
66
|
+
}
|
|
67
|
+
}, t[13] = e, t[14] = c, t[15] = P) : P = t[15];
|
|
68
|
+
const I = P;
|
|
69
|
+
let v;
|
|
70
|
+
t[16] !== l || t[17] !== r || t[18] !== I ? (v = /* @__PURE__ */ m(z.Content, { ...I, ref: r, children: l }), t[16] = l, t[17] = r, t[18] = I, t[19] = v) : v = t[19];
|
|
71
|
+
let C;
|
|
72
|
+
t[20] !== v || t[21] !== h || t[22] !== i ? (C = /* @__PURE__ */ m(z.Viewport, { ...h, ref: i, children: v }), t[20] = v, t[21] = h, t[22] = i, t[23] = C) : C = t[23];
|
|
73
|
+
let R;
|
|
74
|
+
t[24] !== d || t[25] !== n ? (R = d ? /* @__PURE__ */ m(z.Scrollbar, { zIndex: "2", ...n, borderRadius: "xs" }) : null, t[24] = d, t[25] = n, t[26] = R) : R = t[26];
|
|
75
|
+
let x;
|
|
76
|
+
t[27] !== a || t[28] !== c ? (x = c ? /* @__PURE__ */ m(z.Scrollbar, { orientation: "horizontal", zIndex: "2", ...a, borderRadius: "xs" }) : null, t[27] = a, t[28] = c, t[29] = x) : x = t[29];
|
|
77
|
+
let y;
|
|
78
|
+
t[30] !== A ? (y = A ? /* @__PURE__ */ m(z.Corner, { zIndex: "2" }) : null, t[30] = A, t[31] = y) : y = t[31];
|
|
79
|
+
let g;
|
|
80
|
+
return t[32] !== S || t[33] !== o || t[34] !== $ || t[35] !== C || t[36] !== R || t[37] !== x || t[38] !== y ? (g = /* @__PURE__ */ j(z.Root, { ref: S, size: $, ...o, children: [
|
|
81
|
+
C,
|
|
82
|
+
R,
|
|
83
|
+
x,
|
|
84
|
+
y
|
|
85
|
+
] }), t[32] = S, t[33] = o, t[34] = $, t[35] = C, t[36] = R, t[37] = x, t[38] = y, t[39] = g) : g = t[39], g;
|
|
86
|
+
});
|
|
87
|
+
export {
|
|
88
|
+
F as S,
|
|
89
|
+
B as T
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=scroll-area-BMbg1WcD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-area-BMbg1WcD.js","sources":["../src/components/primitives/tooltip.tsx","../src/components/primitives/scroll-area.tsx"],"sourcesContent":["import { Tooltip as ChakraTooltip, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface TooltipProps extends ChakraTooltip.RootProps {\n children?: React.ReactElement;\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n content: React.ReactNode;\n contentProps?: ChakraTooltip.ContentProps;\n disabled?: boolean;\n}\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(props, ref) {\n const { children, disabled, portalled = true, content, contentProps, portalRef, ...rest } = props;\n\n const isEmptyContent = (node: React.ReactNode): boolean => {\n if (node === null || node === undefined || node === false) return true;\n const arr = React.Children.toArray(node);\n if (arr.length === 0) return true;\n return arr.every((child) => (typeof child === \"string\" ? child.trim().length === 0 : false));\n };\n\n if (disabled || isEmptyContent(content)) return children;\n\n return (\n <ChakraTooltip.Root openDelay={100} closeDelay={100} {...rest}>\n <ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraTooltip.Positioner>\n <ChakraTooltip.Content ref={ref} {...contentProps}>\n {content}\n </ChakraTooltip.Content>\n </ChakraTooltip.Positioner>\n </Portal>\n </ChakraTooltip.Root>\n );\n});\n","import { ScrollArea as ChakraScrollArea } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\ntype VerticalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\ntype HorizontalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\n\nexport interface ScrollAreaProps extends ChakraScrollArea.RootProps {\n viewportRef?: React.Ref<HTMLDivElement>;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportProps?: ChakraScrollArea.ViewportProps;\n contentProps?: ChakraScrollArea.ContentProps;\n verticalScrollbarProps?: VerticalScrollbarProps;\n horizontalScrollbarProps?: HorizontalScrollbarProps;\n showVerticalScrollbar?: boolean;\n showHorizontalScrollbar?: boolean;\n showCorner?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(props, ref) {\n const {\n children,\n viewportRef,\n contentRef,\n viewportProps,\n contentProps,\n verticalScrollbarProps,\n horizontalScrollbarProps,\n showVerticalScrollbar = true,\n showHorizontalScrollbar = false,\n showCorner = showVerticalScrollbar && showHorizontalScrollbar,\n size = \"xs\",\n ...rest\n } = props;\n\n const mergedContentProps = showHorizontalScrollbar\n ? contentProps\n : { ...contentProps, style: { minWidth: 0, ...contentProps?.style } };\n\n return (\n <ChakraScrollArea.Root ref={ref} size={size} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...mergedContentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? (\n <ChakraScrollArea.Scrollbar zIndex=\"2\" {...verticalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar\n orientation=\"horizontal\"\n zIndex=\"2\"\n {...horizontalScrollbarProps}\n borderRadius={\"xs\"}\n />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner zIndex=\"2\" /> : null}\n </ChakraScrollArea.Root>\n );\n});\n"],"names":["Tooltip","React","forwardRef","props","ref","$","_c","children","content","contentProps","disabled","portalRef","rest","t0","portalled","undefined","_temp2","t1","ChakraTooltip","t2","t3","jsx","t4","Portal","t5","_temp","child","trim","length","node","arr","Children","toArray","every","ScrollArea","contentRef","horizontalScrollbarProps","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","size","style","minWidth","mergedContentProps","ChakraScrollArea","t6","t7","t8","t9","t10"],"mappings":";;;;AAYO,MAAMA,IAAUC,EAAMC,WAAyC,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA;AAAA,MAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC;AAAA,EAAAR,SAAAF,KACpE;AAAA,IAAAI,UAAAA;AAAAA,IAAAG,UAAAA;AAAAA,IAAAI,WAAAD;AAAAA,IAAAL,SAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAE,WAAAA;AAAAA,IAAA,GAAAC;AAAAA,EAAAA,IAA4FT,GAAME,OAAAF,GAAAE,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI,GAAAJ,OAAAK,GAAAL,OAAAM,GAAAN,OAAAO,GAAAP,OAAAQ,MAAAN,IAAAF,EAAA,CAAA,GAAAG,IAAAH,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,GAAAK,IAAAL,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA;AAAtE,QAAAS,IAAAD,MAAAE,SAAA,KAAAF;AAS5B,MAAIH,KAPmBM,EAOQR,CAAO;AAAC,WAASD;AAAS,MAAAU;AAAA,EAAAZ,SAAAE,KAIrDU,sBAAAC,EAAA,SAAA,EAAuB,SAAA,IAASX,UAAAA,GAAS,GAAwBF,OAAAE,GAAAF,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAC/C,QAAAc,KAACL;AAAS,MAAAM;AAAA,EAAAf,EAAA,EAAA,MAAAG,KAAAH,UAAAI,KAAAJ,EAAA,EAAA,MAAAD,KAC1BgB,IAAA,gBAAAC,EAAAH,EAAA,YAAA,EACE,UAAA,gBAAAG,EAAAH,EAAA,SAAA,EAA4Bd,KAAAA,GAAG,GAAMK,GAClCD,UAAAA,EAAAA,CACH,GACF,GAA2BH,QAAAG,GAAAH,QAAAI,GAAAJ,QAAAD,GAAAC,QAAAe,KAAAA,IAAAf,EAAA,EAAA;AAAA,MAAAiB;AAAA,EAAAjB,EAAA,EAAA,MAAAM,KAAAN,UAAAc,KAAAd,EAAA,EAAA,MAAAe,KAL7BE,sBAACC,GAAA,EAAiB,UAAAJ,GAAuBR,WAAAA,GACvCS,UAAAA,GAKF,GAASf,QAAAM,GAAAN,QAAAc,GAAAd,QAAAe,GAAAf,QAAAiB,KAAAA,IAAAjB,EAAA,EAAA;AAAA,MAAAmB;AAAA,SAAAnB,EAAA,EAAA,MAAAO,KAAAP,UAAAY,KAAAZ,EAAA,EAAA,MAAAiB,KARXE,gCAA+B,gBAAiB,YAAA,KAAG,GAAMZ,GACvDK,UAAAA;AAAAA,IAAAA;AAAAA,IACAK;AAAAA,EAAAA,GAOF,GAAqBjB,QAAAO,GAAAP,QAAAY,GAAAZ,QAAAiB,GAAAjB,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA,GATrBmB;AASqB,CAExB;AAxBqE,SAAAC,EAAAC,GAAA;AAAA,SAOrC,OAAOA,KAAU,WAAWA,EAAKC,OAAOC,WAAY,IAApD;AAA6D;AAPxB,SAAAZ,EAAAa,GAAA;AAIlE,MAAIA,KAAS,QAA8BA,MAAS;AAAK,WAAS;AAClE,QAAAC,IAAY7B,EAAK8B,SAASC,QAASH,CAAI;AACvC,SAAIC,EAAGF,WAAY,IAAU,KACtBE,EAAGG,MAAOR,CAA0E;AAAC;ACDzF,MAAMS,IAAajC,EAAMC,WAA4C,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA;AAAA,MAAAC,GAAAE,GAAA0B,GAAAC,GAAAxB,GAAAC,GAAAI,GAAAE,GAAAC,GAAAiB,GAAAC,GAAAC;AAAA,EAAAlC,SAAAF,KAC1E;AAAA,IAAAI,UAAAA;AAAAA,IAAAgC,aAAAA;AAAAA,IAAAJ,YAAAA;AAAAA,IAAAG,eAAAA;AAAAA,IAAA7B,cAAAA;AAAAA,IAAA4B,wBAAAA;AAAAA,IAAAD,0BAAAA;AAAAA,IAAAI,uBAAA3B;AAAAA,IAAA4B,yBAAAxB;AAAAA,IAAAyB,YAAAvB;AAAAA,IAAAwB,MAAAvB;AAAAA,IAAA,GAAAR;AAAAA,EAAAA,IAaIT,GAAME,OAAAF,GAAAE,OAAAE,GAAAF,OAAAI,GAAAJ,OAAA8B,GAAA9B,OAAA+B,GAAA/B,OAAAO,GAAAP,OAAAQ,GAAAR,OAAAY,GAAAZ,OAAAc,GAAAd,OAAAe,GAAAf,QAAAgC,GAAAhC,QAAAiC,GAAAjC,QAAAkC,MAAAhC,IAAAF,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,GAAA8B,IAAA9B,EAAA,CAAA,GAAA+B,IAAA/B,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA,GAAAY,IAAAZ,EAAA,CAAA,GAAAc,IAAAd,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,GAAAgC,IAAAhC,EAAA,EAAA,GAAAiC,IAAAjC,EAAA,EAAA,GAAAkC,IAAAlC,EAAA,EAAA;AALR,QAAAmC,IAAA3B,MAAAE,SAAA,KAAAF,GACA4B,IAAAxB,MAAAF,SAAA,KAAAE,GACAyB,IAAAvB,MAAAJ,SAAayB,KAAAC,IAAbtB,GACAwB,IAAAvB,MAAAL,SAAA,OAAAK;AAAW,MAAAE;AAAA,EAAAjB,EAAA,EAAA,MAAAI,KAAAJ,UAAAoC,KAIcnB,IAAAmB,IAAAhC,IAAA;AAAA,IAAA,GAElBA;AAAAA,IAAYmC,OAAS;AAAA,MAAAC,UAAY;AAAA,MAAC,GAAKpC,GAAYmC;AAAAA,IAAAA;AAAAA,EAAQ,GAAGvC,QAAAI,GAAAJ,QAAAoC,GAAApC,QAAAiB,KAAAA,IAAAjB,EAAA,EAAA;AAFvE,QAAAyC,IAA2BxB;AAE6C,MAAAE;AAAA,EAAAnB,EAAA,EAAA,MAAAE,KAAAF,UAAA8B,KAAA9B,EAAA,EAAA,MAAAyC,KAKlEtB,IAAA,gBAAAH,EAAA0B,EAAA,SAAA,EAAA,GAA8BD,GAAyBX,QACpD5B,UAAAA,GACH,GAA2BF,QAAAE,GAAAF,QAAA8B,GAAA9B,QAAAyC,GAAAzC,QAAAmB,KAAAA,IAAAnB,EAAA,EAAA;AAAA,MAAA2C;AAAA,EAAA3C,EAAA,EAAA,MAAAmB,KAAAnB,UAAAiC,KAAAjC,EAAA,EAAA,MAAAkC,KAH7BS,IAAA,gBAAA3B,EAAA0B,EAAA,UAAA,EAAA,GAA+BT,GAAoBC,KAAAA,GACjDf,UAAAA,GAGF,GAA4BnB,QAAAmB,GAAAnB,QAAAiC,GAAAjC,QAAAkC,GAAAlC,QAAA2C,KAAAA,IAAA3C,EAAA,EAAA;AAAA,MAAA4C;AAAA,EAAA5C,EAAA,EAAA,MAAAmC,KAAAnC,UAAAgC,KAC3BY,IAAAT,IACC,gBAAAnB,EAAA0B,EAAA,WAAA,EAAmC,QAAA,KAAG,GAAKV,GAAsC,cAAA,KAAA,CAAI,IADtF,MAEOhC,QAAAmC,GAAAnC,QAAAgC,GAAAhC,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAA+B,KAAA/B,UAAAoC,KACPS,IAAAT,IACC,gBAAApB,iBACc,aAAA,cACL,QAAA,KAAG,GACNe,GACU,cAAA,MAAI,IALrB,MAOO/B,QAAA+B,GAAA/B,QAAAoC,GAAApC,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAA8C;AAAA,EAAA9C,UAAAqC,KACPS,IAAAT,IAAa,gBAAArB,EAAA0B,EAAA,QAAA,EAAgC,QAAA,KAAG,IAAhD,MAA0D1C,QAAAqC,GAAArC,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAA+C;AAAA,SAAA/C,EAAA,EAAA,MAAAD,KAAAC,EAAA,EAAA,MAAAO,KAAAP,EAAA,EAAA,MAAAsC,KAAAtC,UAAA2C,KAAA3C,EAAA,EAAA,MAAA4C,KAAA5C,EAAA,EAAA,MAAA6C,KAAA7C,EAAA,EAAA,MAAA8C,KAjB7DC,sBAAAL,EAAA,MAAA,EAA4B3C,KAAAA,GAAWuC,MAAAA,GAAI,GAAM/B,GAC/CoC,UAAAA;AAAAA,IAAAA;AAAAA,IAKCC;AAAAA,IAGAC;AAAAA,IAQAC;AAAAA,EAAAA,GACH,GAAwB9C,QAAAD,GAAAC,QAAAO,GAAAP,QAAAsC,GAAAtC,QAAA2C,GAAA3C,QAAA4C,GAAA5C,QAAA6C,GAAA7C,QAAA8C,GAAA9C,QAAA+C,KAAAA,IAAA/C,EAAA,EAAA,GAlBxB+C;AAkBwB,CAE3B;"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;--rich-text-list-indent: 1.5rem;font-size:calc(1rem * var(--rich-text-font-scale))}.rich-text[data-rich-message=true]{--rich-text-font-scale: .9}.rich-text[data-rich-message=true] .rich-text__p:last-child{margin-bottom:0}.rich-text__paragraph{margin:0;position:relative}.rich-text__quote{margin:0;margin-top:var(--chakra-spacing-xl, 1.5rem);margin-left:var(--chakra-spacing-sm, .75rem);margin-bottom:var(--chakra-spacing-xl, 1.5rem);font-size:calc(15px * var(--rich-text-font-scale));color:var(--chakra-colors-fg-muted);border-left:4px solid var(--chakra-colors-border);padding-left:16px}.rich-text__indent{--lexical-indent-base-value: 40px}.rich-text__textBold{font-weight:700}.rich-text__reference{font:inherit;border-bottom:1px dotted currentColor;opacity:.9;white-space:nowrap}.rich-text__textStrikethrough{text-decoration:line-through}.rich-text__textUnderlineStrikethrough{text-decoration:underline line-through}.rich-text__textSubscript{font-size:.8em;vertical-align:sub}.rich-text__textSuperscript{font-size:.8em;vertical-align:super}.rich-text__textCode{background-color:var(--chakra-colors-bg-code);padding:1px .25rem;font-family:var(--chakra-fonts-mono);font-size:.94em}.rich-text__link{color:var(--chakra-colors-blue-600);text-decoration:none;cursor:pointer}.rich-text__link:hover{text-decoration:underline}.rich-text__code{background-color:var(--chakra-colors-bg-code);font-family:var(--chakra-fonts-mono);display:block;padding:8px 8px 8px 52px;line-height:1.53;font-size:calc(13px * var(--rich-text-font-scale));margin:0;margin-top:var(--chakra-spacing-md, 1rem);margin-bottom:var(--chakra-spacing-md, 1rem);overflow-x:auto;position:relative;tab-size:2}.rich-text__code:before{content:attr(data-gutter);position:absolute;background-color:var(--chakra-colors-bg-subtle);left:0;top:0;bottom:0;border-right:1px solid var(--chakra-colors-border);padding:8px;color:var(--chakra-colors-fg-muted);white-space:pre-wrap;text-align:right;min-width:25px}.rich-text__table{border-collapse:collapse;border-spacing:0;color:var(--chakra-colors-fg);font-size:calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale));line-height:21px;overflow-y:auto;overflow-x:auto;table-layout:fixed;width:max-content}.rich-text__tableSelection *::selection{background-color:transparent}.rich-text__tableSelected{outline:2px solid var(--chakra-colors-blue-500)}.rich-text__tableCell{border:1px solid var(--chakra-colors-border);vertical-align:top;text-align:start;padding:6px 8px;position:relative;outline:none}.rich-text__tableCellSortedIndicator{display:block;opacity:.5;position:absolute;bottom:0;left:0;width:100%;height:4px;background-color:var(--chakra-colors-bg)}.rich-text__tableCellResizer{position:absolute;right:-4px;height:100%;width:8px;cursor:ew-resize;z-index:10;top:0}.rich-text__tableCellHeader{background-color:var(--chakra-colors-bg-muted);font-weight:400;text-align:start}.rich-text__tableCellSelected{background-color:var(--chakra-colors-blue-100)}.rich-text__tableCellPrimarySelected{border:2px solid var(--chakra-colors-blue-500);display:block;height:calc(100% - 2px);position:absolute;width:calc(100% - 2px);left:-1px;top:-1px;z-index:2}.rich-text__tableCellEditing{outline:1px solid var(--chakra-colors-border-muted);outline-offset:-1px;border-radius:3px}.rich-text__tableAddColumns,.rich-text__tableAddRows{position:absolute;background-color:var(--chakra-colors-bg-muted);animation:table-controls .2s ease;border:0;cursor:pointer}.rich-text__tableAddColumns{top:0;width:20px;height:100%;right:-25px}.rich-text__tableAddColumns:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddRows{bottom:-25px;width:calc(100% - 25px);height:20px;left:0}.rich-text__tableAddRows:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddColumns:hover,.rich-text__tableAddRows:hover{background-color:var(--chakra-colors-blue-100)}@keyframes table-controls{0%{opacity:0}to{opacity:1}}.rich-text__tableCellResizeRuler{display:block;position:absolute;width:1px;background-color:var(--chakra-colors-blue-500);height:100%;top:0}.rich-text__tableCellActionButtonContainer{display:block;right:5px;top:6px;position:absolute;z-index:4;width:20px;height:20px}.rich-text__tableCellActionButton{background-color:var(--chakra-colors-bg-muted);display:block;border:0;width:20px;height:20px;color:var(--chakra-colors-fg);cursor:pointer}.rich-text__tableCellActionButton:hover{background-color:var(--chakra-colors-bg-subtle)}.rich-text__characterLimit{display:inline;background-color:var(--chakra-colors-red-100)}ul.rich-text__ul,ul.rich-text__checklist,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{list-style-position:outside;padding-inline-start:var(--rich-text-list-indent);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}ul.rich-text__ul{list-style-type:disc}ol.rich-text__ol,ol.rich-text__ol1{list-style-type:decimal}ol.rich-text__ol2{list-style-type:upper-alpha}ol.rich-text__ol3{list-style-type:lower-alpha}ol.rich-text__ol4{list-style-type:upper-roman}ol.rich-text__ol5{list-style-type:lower-roman}li.rich-text__listItem{display:list-item;list-style-position:outside;padding-inline-start:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{position:relative;list-style-type:none;padding-left:24px;outline:none}li.rich-text__listItemUnchecked:before,li.rich-text__listItemChecked:before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:var(--chakra-radii-xs, 4px);cursor:pointer}li.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-border)}li.rich-text__listItemChecked:before{background:var(--chakra-colors-fg);border:1px solid var(--chakra-colors-fg)}li.rich-text__listItemChecked:after{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;cursor:pointer;background-color:var(--chakra-colors-bg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");-webkit-mask-size:10px 10px;mask-size:10px 10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}ul.rich-text__ul :where(ul,ol),ul.rich-text__checklist :where(ul,ol),ol.rich-text__ol :where(ul,ol),ol.rich-text__ol1 :where(ul,ol),ol.rich-text__ol2 :where(ul,ol),ol.rich-text__ol3 :where(ul,ol),ol.rich-text__ol4 :where(ul,ol),ol.rich-text__ol5 :where(ul,ol){padding-inline-start:var(--rich-text-list-indent)}li.rich-text__nestedListItem{list-style-type:none;padding-inline-start:0}.rich-text__nestedListItem:before,.rich-text__nestedListItem:after{display:none}.rich-text__tokenComment{color:var(--chakra-colors-gray-500)}.rich-text__tokenPunctuation{color:var(--chakra-colors-gray-400)}.rich-text__tokenProperty{color:var(--chakra-colors-purple-600)}.rich-text__tokenSelector{color:var(--chakra-colors-green-600)}.rich-text__tokenOperator{color:var(--chakra-colors-orange-600)}.rich-text__tokenAttr{color:var(--chakra-colors-blue-600)}.rich-text__tokenVariable{color:var(--chakra-colors-yellow-600)}.rich-text__tokenFunction{color:var(--chakra-colors-pink-600)}.rich-text__mark{background:var(--chakra-colors-yellow-100);border-bottom:2px solid var(--chakra-colors-yellow-200);padding-bottom:2px}.rich-text__markOverlap{background:var(--chakra-colors-yellow-200);border-bottom:2px solid var(--chakra-colors-yellow-300)}.rich-text__mark.selected{background:var(--chakra-colors-yellow-300);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__markOverlap.selected{background:var(--chakra-colors-yellow-400);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__layoutContainer{display:grid;gap:var(--chakra-spacing-2, .5rem)}.rich-text__layoutItem{border-radius:var(--chakra-radii-sm)}.rich-text__layoutItem>:first-child{margin-top:0;margin-bottom:0}.draggable-block-demo__row{display:flex;gap:var(--chakra-spacing-3, .75rem);padding-block:var(--chakra-spacing-2, .5rem);padding-inline:var(--chakra-spacing-4, 1rem);position:relative;transition:outline-color .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{outline:2px solid var(--chakra-colors-blue-200);outline-offset:2px}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .14s ease,background .14s ease}.draggable-block-demo__content--empty{color:var(--chakra-colors-fg-muted);border-style:dashed;background:var(--chakra-colors-bg-subtle)}.draggable-block-demo__handle-slot{position:absolute;inset:0;width:0;height:0;pointer-events:none}.draggable-block-demo__handle-controls{position:absolute;pointer-events:none;opacity:0;transform:translate(-10000px,-10000px);z-index:11;display:flex;flex-direction:column;align-items:center;gap:8px}.draggable-block-demo__floating-handle,.draggable-block-demo__delete-button{pointer-events:auto}.draggable-block-demo__floating-handle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);cursor:grab;transition:border-color .12s ease,transform .12s ease}.draggable-block-demo__floating-handle:active{cursor:grabbing}.draggable-block-demo__handle-icon{margin-left:-4px;display:inline-block;font-size:calc(12px * var(--rich-text-font-scale));letter-spacing:-4px;-webkit-user-select:none;user-select:none}.draggable-block-demo__delete-button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;transition:background .12s ease,border-color .12s ease}.draggable-block-demo__delete-button:hover{background:var(--chakra-colors-red-100);border-color:var(--chakra-colors-red-300)}.draggable-block-demo__delete-icon{font-size:calc(16px * var(--rich-text-font-scale));line-height:1;-webkit-user-select:none;user-select:none}.draggable-block-demo__gap{position:absolute;left:0;width:100%;height:28px;display:flex;justify-content:center;align-items:center;pointer-events:auto;opacity:0;transition:opacity .12s ease}.draggable-block-demo__gap-line{width:100%;border-top:1px dashed var(--chakra-colors-border);position:absolute;top:50%;transform:translateY(-50%)}.draggable-block-demo__gap-button{pointer-events:auto;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);width:20px;height:20px;font-size:calc(18px * var(--rich-text-font-scale));line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--chakra-colors-fg-muted);transition:background .12s ease,color .12s ease}.draggable-block-demo__gap:hover,.draggable-block-demo__gap.is-active{opacity:1}.draggable-block-demo__gap-button:hover{background:var(--chakra-colors-bg-subtle);color:var(--chakra-colors-fg)}.draggable-block-demo__indicator{position:absolute;background:var(--chakra-colors-blue-500);pointer-events:none;border-radius:2px;z-index:12}.draggable-block-demo__indicator--horizontal{height:2px}.draggable-block-demo__indicator--vertical{width:2px}.rich-text__h1{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-4xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:2.5rem;margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h1:first-of-type{margin-top:0}.rich-text__h1_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-2, .5rem)}.rich-text__h2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h2_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem);margin-bottom:var(--chakra-spacing-1, .125rem)}.rich-text__h3{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h3_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem)}.rich-text__p{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p:first-child{margin-top:0}.rich-text__p:only-child{margin-bottom:0}.rich-text[data-rich-message=true] .rich-text__quote{margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__code{margin-top:8px;margin-bottom:8px}.rich-text[data-rich-message=true] .rich-text__h1{font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text[data-rich-message=true] .rich-text__h2{font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__h3{margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0}.rich-text__textUnderline{text-decoration:underline}.rich-text__textItalic{font-style:italic}span.editor-equation{display:inline-block}.editor-equation span{cursor:inherit}.editor-equation{-webkit-user-select:none;user-select:none}.katex-display{overflow-x:auto;overflow-y:hidden}.code-block-actions{z-index:1001;opacity:.95}.code-block-actions button{border:1px solid var(--chakra-colors-border-muted)}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;pointer-events:none;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-muted);transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1;pointer-events:auto}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.link-editor{position:absolute;top:0;left:0;z-index:1001;width:320px;opacity:0;pointer-events:none;transition:opacity .2s;will-change:transform}.link-editor.active{opacity:1;pointer-events:auto;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-muted)}.link-editor-content{width:100%}.link-editor-url-field{flex:1;min-width:0}.rich-text__p--no-margin{margin:0}
|
|
1
|
+
.pstdio-terminal .xterm-viewport{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.4) transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar{width:10px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-track{background:transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb{background-color:#80808066;border:3px solid transparent;background-clip:padding-box;border-radius:9999px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb:hover{background-color:#80808099}.data-table{table-layout:fixed}.data-table.full-width{width:100%;table-layout:auto}.data-table tr{width:fit-content}.data-table.full-width tr{width:100%}.data-table thead th{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02));white-space:nowrap}.data-table .data-table-column-header-row{position:sticky;top:0;z-index:2;height:40px}.data-table .data-table-stats-row{position:sticky;top:40px;z-index:1;height:88px}.data-table thead th>*{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table .data-table-stats-row th[data-stat-type=histogram],.data-table .data-table-stats-row th[data-stat-type=histogram]>*,.data-table .data-table-stats-row th[data-stat-type=top-values],.data-table .data-table-stats-row th[data-stat-type=top-values]>*{overflow:visible}.data-table tbody tr{height:40px}.data-table tbody td{height:40px;max-height:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td>*{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02))}.data-table tbody tr[data-active=true]>td,.data-table tbody tr:hover>td{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table tbody tr[data-active=true]>td[data-column-id=rowIndex],.data-table tbody tr:hover>td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table .resizer{position:absolute;top:0;height:100%;right:0;width:5px;background-color:var(--chakra-colors-border-primary);opacity:.5;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.data-table .resizer.isResizing{opacity:1}@media(hover:hover){.data-table .resizer{opacity:0}.data-table *:hover>.resizer{opacity:1}}.data-table .resizer.ltr{right:0}.data-table .resizer.rtl{left:0}.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;--rich-text-list-indent: 1.5rem;font-size:calc(1rem * var(--rich-text-font-scale))}.rich-text[data-rich-message=true]{--rich-text-font-scale: .9}.rich-text[data-rich-message=true] .rich-text__p:last-child{margin-bottom:0}.rich-text__paragraph{margin:0;position:relative}.rich-text__quote{margin:0;margin-top:var(--chakra-spacing-xl, 1.5rem);margin-left:var(--chakra-spacing-sm, .75rem);margin-bottom:var(--chakra-spacing-xl, 1.5rem);font-size:calc(15px * var(--rich-text-font-scale));color:var(--chakra-colors-fg-muted);border-left:4px solid var(--chakra-colors-border);padding-left:16px}.rich-text__indent{--lexical-indent-base-value: 40px}.rich-text__textBold{font-weight:700}.rich-text__reference{font:inherit;border-bottom:1px dotted currentColor;opacity:.9;white-space:nowrap}.rich-text__textStrikethrough{text-decoration:line-through}.rich-text__textUnderlineStrikethrough{text-decoration:underline line-through}.rich-text__textSubscript{font-size:.8em;vertical-align:sub}.rich-text__textSuperscript{font-size:.8em;vertical-align:super}.rich-text__textCode{background-color:var(--chakra-colors-bg-code);padding:1px .25rem;font-family:var(--chakra-fonts-mono);font-size:.94em}.rich-text__link{color:var(--chakra-colors-blue-600);text-decoration:none;cursor:pointer}.rich-text__link:hover{text-decoration:underline}.rich-text__code{background-color:var(--chakra-colors-bg-code);font-family:var(--chakra-fonts-mono);display:block;padding:8px 8px 8px 52px;line-height:1.53;font-size:calc(13px * var(--rich-text-font-scale));margin:0;margin-top:var(--chakra-spacing-md, 1rem);margin-bottom:var(--chakra-spacing-md, 1rem);overflow-x:auto;position:relative;tab-size:2}.rich-text__code:before{content:attr(data-gutter);position:absolute;background-color:var(--chakra-colors-bg-subtle);left:0;top:0;bottom:0;border-right:1px solid var(--chakra-colors-border);padding:8px;color:var(--chakra-colors-fg-muted);white-space:pre-wrap;text-align:right;min-width:25px}.rich-text__table{border-collapse:collapse;border-spacing:0;color:var(--chakra-colors-fg);font-size:calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale));line-height:21px;overflow-y:auto;overflow-x:auto;table-layout:fixed;width:max-content}.rich-text__tableSelection *::selection{background-color:transparent}.rich-text__tableSelected{outline:2px solid var(--chakra-colors-blue-500)}.rich-text__tableCell{border:1px solid var(--chakra-colors-border);vertical-align:top;text-align:start;padding:6px 8px;position:relative;outline:none}.rich-text__tableCellSortedIndicator{display:block;opacity:.5;position:absolute;bottom:0;left:0;width:100%;height:4px;background-color:var(--chakra-colors-bg)}.rich-text__tableCellResizer{position:absolute;right:-4px;height:100%;width:8px;cursor:ew-resize;z-index:10;top:0}.rich-text__tableCellHeader{background-color:var(--chakra-colors-bg-muted);font-weight:400;text-align:start}.rich-text__tableCellSelected{background-color:var(--chakra-colors-blue-100)}.rich-text__tableCellPrimarySelected{border:2px solid var(--chakra-colors-blue-500);display:block;height:calc(100% - 2px);position:absolute;width:calc(100% - 2px);left:-1px;top:-1px;z-index:2}.rich-text__tableCellEditing{outline:1px solid var(--chakra-colors-border-subtle);outline-offset:-1px;border-radius:3px}.rich-text__tableAddColumns,.rich-text__tableAddRows{position:absolute;background-color:var(--chakra-colors-bg-muted);animation:table-controls .2s ease;border:0;cursor:pointer}.rich-text__tableAddColumns{top:0;width:20px;height:100%;right:-25px}.rich-text__tableAddColumns:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddRows{bottom:-25px;width:calc(100% - 25px);height:20px;left:0}.rich-text__tableAddRows:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddColumns:hover,.rich-text__tableAddRows:hover{background-color:var(--chakra-colors-blue-100)}@keyframes table-controls{0%{opacity:0}to{opacity:1}}.rich-text__tableCellResizeRuler{display:block;position:absolute;width:1px;background-color:var(--chakra-colors-blue-500);height:100%;top:0}.rich-text__tableCellActionButtonContainer{display:block;right:5px;top:6px;position:absolute;z-index:4;width:20px;height:20px}.rich-text__tableCellActionButton{background-color:var(--chakra-colors-bg-muted);display:block;border:0;width:20px;height:20px;color:var(--chakra-colors-fg);cursor:pointer}.rich-text__tableCellActionButton:hover{background-color:var(--chakra-colors-bg-subtle)}.rich-text__characterLimit{display:inline;background-color:var(--chakra-colors-red-100)}ul.rich-text__ul,ul.rich-text__checklist,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{list-style-position:outside;padding-inline-start:var(--rich-text-list-indent);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}ul.rich-text__ul{list-style-type:disc}ol.rich-text__ol,ol.rich-text__ol1{list-style-type:decimal}ol.rich-text__ol2{list-style-type:upper-alpha}ol.rich-text__ol3{list-style-type:lower-alpha}ol.rich-text__ol4{list-style-type:upper-roman}ol.rich-text__ol5{list-style-type:lower-roman}li.rich-text__listItem{display:list-item;list-style-position:outside;padding-inline-start:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{position:relative;list-style-type:none;padding-left:24px;outline:none}li.rich-text__listItemUnchecked:before,li.rich-text__listItemChecked:before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:var(--chakra-radii-xs, 4px);cursor:pointer}li.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-border)}li.rich-text__listItemChecked:before{background:var(--chakra-colors-fg);border:1px solid var(--chakra-colors-fg)}li.rich-text__listItemChecked:after{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;cursor:pointer;background-color:var(--chakra-colors-bg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");-webkit-mask-size:10px 10px;mask-size:10px 10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}ul.rich-text__ul :where(ul,ol),ul.rich-text__checklist :where(ul,ol),ol.rich-text__ol :where(ul,ol),ol.rich-text__ol1 :where(ul,ol),ol.rich-text__ol2 :where(ul,ol),ol.rich-text__ol3 :where(ul,ol),ol.rich-text__ol4 :where(ul,ol),ol.rich-text__ol5 :where(ul,ol){padding-inline-start:var(--rich-text-list-indent)}li.rich-text__nestedListItem{list-style-type:none;padding-inline-start:0}.rich-text__nestedListItem:before,.rich-text__nestedListItem:after{display:none}.rich-text__tokenComment{color:var(--chakra-colors-gray-500)}.rich-text__tokenPunctuation{color:var(--chakra-colors-gray-400)}.rich-text__tokenProperty{color:var(--chakra-colors-purple-600)}.rich-text__tokenSelector{color:var(--chakra-colors-green-600)}.rich-text__tokenOperator{color:var(--chakra-colors-orange-600)}.rich-text__tokenAttr{color:var(--chakra-colors-blue-600)}.rich-text__tokenVariable{color:var(--chakra-colors-yellow-600)}.rich-text__tokenFunction{color:var(--chakra-colors-pink-600)}.rich-text__mark{background:var(--chakra-colors-yellow-100);border-bottom:2px solid var(--chakra-colors-yellow-200);padding-bottom:2px}.rich-text__markOverlap{background:var(--chakra-colors-yellow-200);border-bottom:2px solid var(--chakra-colors-yellow-300)}.rich-text__mark.selected{background:var(--chakra-colors-yellow-300);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__markOverlap.selected{background:var(--chakra-colors-yellow-400);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__layoutContainer{display:grid;gap:var(--chakra-spacing-2, .5rem)}.rich-text__layoutItem{border-radius:var(--chakra-radii-sm)}.rich-text__layoutItem>:first-child{margin-top:0;margin-bottom:0}.draggable-block-demo__row{display:flex;gap:var(--chakra-spacing-3, .75rem);padding-block:var(--chakra-spacing-2, .5rem);padding-inline:var(--chakra-spacing-4, 1rem);position:relative;transition:outline-color .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{outline:2px solid var(--chakra-colors-blue-200);outline-offset:2px}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .14s ease,background .14s ease}.draggable-block-demo__content--empty{color:var(--chakra-colors-fg-muted);border-style:dashed;background:var(--chakra-colors-bg-subtle)}.draggable-block-demo__handle-slot{position:absolute;inset:0;width:0;height:0;pointer-events:none}.draggable-block-demo__handle-controls{position:absolute;pointer-events:none;opacity:0;transform:translate(-10000px,-10000px);z-index:11;display:flex;flex-direction:column;align-items:center;gap:8px}.draggable-block-demo__floating-handle,.draggable-block-demo__delete-button{pointer-events:auto}.draggable-block-demo__floating-handle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);cursor:grab;transition:border-color .12s ease,transform .12s ease}.draggable-block-demo__floating-handle:active{cursor:grabbing}.draggable-block-demo__handle-icon{margin-left:-4px;display:inline-block;font-size:calc(12px * var(--rich-text-font-scale));letter-spacing:-4px;-webkit-user-select:none;user-select:none}.draggable-block-demo__delete-button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;transition:background .12s ease,border-color .12s ease}.draggable-block-demo__delete-button:hover{background:var(--chakra-colors-red-100);border-color:var(--chakra-colors-red-300)}.draggable-block-demo__delete-icon{font-size:calc(16px * var(--rich-text-font-scale));line-height:1;-webkit-user-select:none;user-select:none}.draggable-block-demo__gap{position:absolute;left:0;width:100%;height:28px;display:flex;justify-content:center;align-items:center;pointer-events:auto;opacity:0;transition:opacity .12s ease}.draggable-block-demo__gap-line{width:100%;border-top:1px dashed var(--chakra-colors-border);position:absolute;top:50%;transform:translateY(-50%)}.draggable-block-demo__gap-button{pointer-events:auto;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);width:20px;height:20px;font-size:calc(18px * var(--rich-text-font-scale));line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--chakra-colors-fg-muted);transition:background .12s ease,color .12s ease}.draggable-block-demo__gap:hover,.draggable-block-demo__gap.is-active{opacity:1}.draggable-block-demo__gap-button:hover{background:var(--chakra-colors-bg-subtle);color:var(--chakra-colors-fg)}.draggable-block-demo__indicator{position:absolute;background:var(--chakra-colors-blue-500);pointer-events:none;border-radius:2px;z-index:12}.draggable-block-demo__indicator--horizontal{height:2px}.draggable-block-demo__indicator--vertical{width:2px}.rich-text__h1{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-4xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:2.5rem;margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h1:first-of-type{margin-top:0}.rich-text__h1_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-2, .5rem)}.rich-text__h2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h2_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem);margin-bottom:var(--chakra-spacing-1, .125rem)}.rich-text__h3{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h3_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem)}.rich-text__p{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p:first-child{margin-top:0}.rich-text__p:only-child{margin-bottom:0}.rich-text[data-rich-message=true] .rich-text__quote{margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__code{margin-top:8px;margin-bottom:8px}.rich-text[data-rich-message=true] .rich-text__h1{font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text[data-rich-message=true] .rich-text__h2{font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__h3{margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0}.rich-text__textUnderline{text-decoration:underline}.rich-text__textItalic{font-style:italic}span.editor-equation{display:inline-block}.editor-equation span{cursor:inherit}.editor-equation{-webkit-user-select:none;user-select:none}.katex-display{overflow-x:auto;overflow-y:hidden}.rich-text__p--no-margin{margin:0}.code-block-actions{z-index:1001;opacity:.95}.code-block-actions button{border:1px solid var(--chakra-colors-border-subtle)}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;pointer-events:none;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle);transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1;pointer-events:auto}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.link-editor{position:absolute;top:0;left:0;z-index:1001;width:320px;opacity:0;pointer-events:none;transition:opacity .2s;will-change:transform}.link-editor.active{opacity:1;pointer-events:auto;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle)}.link-editor-content{width:100%}.link-editor-url-field{flex:1;min-width:0}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { jsx as B } from "react/jsx-runtime";
|
|
2
|
+
import { FitAddon as K } from "@xterm/addon-fit";
|
|
3
|
+
import { Terminal as W } from "@xterm/xterm";
|
|
4
|
+
import "@xterm/xterm/css/xterm.css";
|
|
5
|
+
import { useState as q, useEffect as v, useRef as T } from "react";
|
|
6
|
+
import { c as j } from "react/compiler-runtime";
|
|
7
|
+
const G = (e, n, r = {}) => {
|
|
8
|
+
const o = [];
|
|
9
|
+
return o.push(n.onData((t) => e.write(t))), o.push(e.onInput((t) => {
|
|
10
|
+
n.write(t), r.onInput?.(t);
|
|
11
|
+
})), o.push(e.onResize(({
|
|
12
|
+
cols: t,
|
|
13
|
+
rows: s
|
|
14
|
+
}) => {
|
|
15
|
+
n.resize(t, s);
|
|
16
|
+
})), r.onExit && o.push(n.onExit(r.onExit)), r.onError && o.push(n.onError(r.onError)), () => {
|
|
17
|
+
for (; o.length > 0; ) {
|
|
18
|
+
const t = o.pop();
|
|
19
|
+
try {
|
|
20
|
+
t?.();
|
|
21
|
+
} catch {
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}, J = new TextEncoder(), P = (e) => typeof e == "string" ? J.encode(e) : e, Y = (e) => e > 0 ? new Promise((n) => setTimeout(n, e)) : Promise.resolve(), $ = (e) => [{
|
|
26
|
+
data: e.replace(/\r/g, `\r
|
|
27
|
+
`)
|
|
28
|
+
}], Z = (e, n) => {
|
|
29
|
+
n.data !== void 0 && e.emitData(P(n.data)), n.error !== void 0 && e.emitError({
|
|
30
|
+
message: n.error
|
|
31
|
+
}), n.exit !== void 0 && e.emitExit({
|
|
32
|
+
code: n.exit.code,
|
|
33
|
+
signal: n.exit.signal ?? null
|
|
34
|
+
});
|
|
35
|
+
}, C = async (e, n) => {
|
|
36
|
+
for (const r of n) {
|
|
37
|
+
if (e.isExited() || (await Y(r.delayMs ?? 0), e.isExited())) return;
|
|
38
|
+
Z(e, r);
|
|
39
|
+
}
|
|
40
|
+
}, Q = (e, n) => {
|
|
41
|
+
const r = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
|
|
42
|
+
let s = !1, m = !1;
|
|
43
|
+
const l = {
|
|
44
|
+
isExited: () => s,
|
|
45
|
+
emitData(i) {
|
|
46
|
+
for (const a of r) a(i);
|
|
47
|
+
},
|
|
48
|
+
emitExit(i) {
|
|
49
|
+
if (!s) {
|
|
50
|
+
s = !0;
|
|
51
|
+
for (const a of o) a(i);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
emitError(i) {
|
|
55
|
+
for (const a of t) a(i);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
session: {
|
|
60
|
+
id: crypto.randomUUID(),
|
|
61
|
+
write(i) {
|
|
62
|
+
if (s) return;
|
|
63
|
+
const a = typeof i == "string" ? i : new TextDecoder().decode(i), d = n(a);
|
|
64
|
+
d && C(l, d);
|
|
65
|
+
},
|
|
66
|
+
resize(i, a) {
|
|
67
|
+
e.onResize?.({
|
|
68
|
+
cols: i,
|
|
69
|
+
rows: a
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
kill(i) {
|
|
73
|
+
s || (e.onKill?.(i), l.emitExit({
|
|
74
|
+
code: null,
|
|
75
|
+
signal: i ?? null
|
|
76
|
+
}));
|
|
77
|
+
},
|
|
78
|
+
onData(i) {
|
|
79
|
+
return r.add(i), !m && e.initial && (m = !0, C(l, e.initial)), () => r.delete(i);
|
|
80
|
+
},
|
|
81
|
+
onExit(i) {
|
|
82
|
+
return o.add(i), () => o.delete(i);
|
|
83
|
+
},
|
|
84
|
+
onError(i) {
|
|
85
|
+
return t.add(i), () => t.delete(i);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}, we = (e = {}) => {
|
|
90
|
+
const n = e.onInput ?? $;
|
|
91
|
+
return {
|
|
92
|
+
async openSession(r) {
|
|
93
|
+
const {
|
|
94
|
+
session: o
|
|
95
|
+
} = Q(e, n);
|
|
96
|
+
return o;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}, L = {
|
|
100
|
+
cursorAccent: "#000000",
|
|
101
|
+
selectionForeground: void 0
|
|
102
|
+
}, V = {
|
|
103
|
+
...L,
|
|
104
|
+
background: "#f4f4f5",
|
|
105
|
+
foreground: "#171717",
|
|
106
|
+
cursor: "#171717",
|
|
107
|
+
selectionBackground: "#d4d4d8",
|
|
108
|
+
black: "#27272a",
|
|
109
|
+
red: "#dc2626",
|
|
110
|
+
green: "#16a34a",
|
|
111
|
+
yellow: "#ca8a04",
|
|
112
|
+
blue: "#2563eb",
|
|
113
|
+
magenta: "#c026d3",
|
|
114
|
+
cyan: "#0891b2",
|
|
115
|
+
white: "#e4e4e7",
|
|
116
|
+
brightBlack: "#52525b",
|
|
117
|
+
brightRed: "#ef4444",
|
|
118
|
+
brightGreen: "#22c55e",
|
|
119
|
+
brightYellow: "#eab308",
|
|
120
|
+
brightBlue: "#3b82f6",
|
|
121
|
+
brightMagenta: "#d946ef",
|
|
122
|
+
brightCyan: "#06b6d4",
|
|
123
|
+
brightWhite: "#fafafa"
|
|
124
|
+
}, X = {
|
|
125
|
+
...L,
|
|
126
|
+
background: "#0a0a0a",
|
|
127
|
+
foreground: "#fafafa",
|
|
128
|
+
cursor: "#fafafa",
|
|
129
|
+
selectionBackground: "#3f3f46",
|
|
130
|
+
black: "#27272a",
|
|
131
|
+
red: "#f87171",
|
|
132
|
+
green: "#4ade80",
|
|
133
|
+
yellow: "#facc15",
|
|
134
|
+
blue: "#60a5fa",
|
|
135
|
+
magenta: "#e879f9",
|
|
136
|
+
cyan: "#22d3ee",
|
|
137
|
+
white: "#e4e4e7",
|
|
138
|
+
brightBlack: "#52525b",
|
|
139
|
+
brightRed: "#fca5a5",
|
|
140
|
+
brightGreen: "#86efac",
|
|
141
|
+
brightYellow: "#fde047",
|
|
142
|
+
brightBlue: "#93c5fd",
|
|
143
|
+
brightMagenta: "#f0abfc",
|
|
144
|
+
brightCyan: "#67e8f9",
|
|
145
|
+
brightWhite: "#fafafa"
|
|
146
|
+
}, U = {
|
|
147
|
+
light: V,
|
|
148
|
+
dark: X
|
|
149
|
+
}, ee = (e) => e ? typeof e == "string" ? U[e] : e : U.dark, ne = (e) => JSON.stringify({
|
|
150
|
+
command: e.command,
|
|
151
|
+
cwd: e.cwd,
|
|
152
|
+
env: e.env ? Object.fromEntries(Object.entries(e.env).sort(([n], [r]) => n.localeCompare(r))) : void 0,
|
|
153
|
+
cols: e.cols,
|
|
154
|
+
rows: e.rows
|
|
155
|
+
}), te = (e) => JSON.parse(e), re = (e) => {
|
|
156
|
+
const n = j(8), {
|
|
157
|
+
bridge: r,
|
|
158
|
+
request: o,
|
|
159
|
+
killOnUnmount: t
|
|
160
|
+
} = e, s = t === void 0 ? !0 : t;
|
|
161
|
+
let m;
|
|
162
|
+
n[0] !== o ? (m = ne(o), n[0] = o, n[1] = m) : m = n[1];
|
|
163
|
+
const l = m;
|
|
164
|
+
let S;
|
|
165
|
+
n[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (S = {
|
|
166
|
+
session: null,
|
|
167
|
+
status: "idle",
|
|
168
|
+
exit: null,
|
|
169
|
+
error: null
|
|
170
|
+
}, n[2] = S) : S = n[2];
|
|
171
|
+
const [i, a] = q(S);
|
|
172
|
+
let d, x;
|
|
173
|
+
return n[3] !== r || n[4] !== s || n[5] !== l ? (d = () => {
|
|
174
|
+
if (!r) {
|
|
175
|
+
a({
|
|
176
|
+
session: null,
|
|
177
|
+
status: "idle",
|
|
178
|
+
exit: null,
|
|
179
|
+
error: null
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
let p = !1, g = null, h = "opening";
|
|
184
|
+
const f = [];
|
|
185
|
+
a({
|
|
186
|
+
session: null,
|
|
187
|
+
status: "opening",
|
|
188
|
+
exit: null,
|
|
189
|
+
error: null
|
|
190
|
+
});
|
|
191
|
+
const A = te(l);
|
|
192
|
+
return r.openSession(A).then((c) => {
|
|
193
|
+
if (p) {
|
|
194
|
+
c.kill();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
g = c, f.push(c.onExit((b) => {
|
|
198
|
+
h = "exited", a((E) => ({
|
|
199
|
+
...E,
|
|
200
|
+
status: "exited",
|
|
201
|
+
exit: b
|
|
202
|
+
}));
|
|
203
|
+
}), c.onError((b) => {
|
|
204
|
+
h = "error", a((E) => ({
|
|
205
|
+
...E,
|
|
206
|
+
status: "error",
|
|
207
|
+
error: b
|
|
208
|
+
}));
|
|
209
|
+
})), h = "open", a({
|
|
210
|
+
session: c,
|
|
211
|
+
status: "open",
|
|
212
|
+
exit: null,
|
|
213
|
+
error: null
|
|
214
|
+
});
|
|
215
|
+
}).catch((c) => {
|
|
216
|
+
if (p)
|
|
217
|
+
return;
|
|
218
|
+
const b = c instanceof Error ? c.message : String(c);
|
|
219
|
+
h = "error", a({
|
|
220
|
+
session: null,
|
|
221
|
+
status: "error",
|
|
222
|
+
exit: null,
|
|
223
|
+
error: {
|
|
224
|
+
message: b
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}), () => {
|
|
228
|
+
for (p = !0; f.length > 0; )
|
|
229
|
+
f.pop()?.();
|
|
230
|
+
s && g && h !== "exited" && g.kill();
|
|
231
|
+
};
|
|
232
|
+
}, x = [r, l, s], n[3] = r, n[4] = s, n[5] = l, n[6] = d, n[7] = x) : (d = n[6], x = n[7]), v(d, x), i;
|
|
233
|
+
}, oe = '"JetBrains Mono", "Fira Code", Menlo, Consolas, monospace', ie = 13, M = 80, N = 24, se = (e) => ({
|
|
234
|
+
...e,
|
|
235
|
+
cols: e?.cols ?? M,
|
|
236
|
+
rows: e?.rows ?? N
|
|
237
|
+
}), ae = (e) => {
|
|
238
|
+
const n = /* @__PURE__ */ new Set(), r = [], o = e.onData((t) => {
|
|
239
|
+
if (n.size === 0) {
|
|
240
|
+
r.push(t);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
for (const s of n) s(t);
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
write(t) {
|
|
247
|
+
e.write(t);
|
|
248
|
+
},
|
|
249
|
+
onInput(t) {
|
|
250
|
+
for (n.add(t); r.length > 0; ) t(r.shift());
|
|
251
|
+
return () => n.delete(t);
|
|
252
|
+
},
|
|
253
|
+
onResize(t) {
|
|
254
|
+
const s = e.onResize(t);
|
|
255
|
+
return () => s.dispose();
|
|
256
|
+
},
|
|
257
|
+
dispose() {
|
|
258
|
+
o.dispose(), n.clear(), r.length = 0;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
}, O = (e) => {
|
|
262
|
+
try {
|
|
263
|
+
e?.fit();
|
|
264
|
+
} catch {
|
|
265
|
+
}
|
|
266
|
+
}, ce = (e, n) => {
|
|
267
|
+
n.resize(e.cols, e.rows);
|
|
268
|
+
}, le = (e, n, r, o) => {
|
|
269
|
+
const t = G(n, r, {
|
|
270
|
+
onExit: o.onSessionExit
|
|
271
|
+
});
|
|
272
|
+
return ce(e, r), o.onSessionOpen?.(r.id), t;
|
|
273
|
+
}, ue = (e, n, r, o) => le(e, n, r, {
|
|
274
|
+
onSessionOpen: (t) => o.onSessionOpen.current?.(t),
|
|
275
|
+
onSessionExit: (t) => o.onSessionExit.current?.(t)
|
|
276
|
+
}), be = (e) => {
|
|
277
|
+
const {
|
|
278
|
+
bridge: n,
|
|
279
|
+
request: r,
|
|
280
|
+
theme: o,
|
|
281
|
+
fontFamily: t = oe,
|
|
282
|
+
fontSize: s = ie,
|
|
283
|
+
killOnUnmount: m = !0,
|
|
284
|
+
autoFocus: l = !0,
|
|
285
|
+
className: S,
|
|
286
|
+
style: i,
|
|
287
|
+
onSessionOpen: a,
|
|
288
|
+
onSessionExit: d
|
|
289
|
+
} = e, x = T(null), p = T(null), g = T(null), h = T(null), [f, A] = q(!1), c = T(null), b = T(a), E = T(d);
|
|
290
|
+
b.current = a, E.current = d, c.current || (c.current = se(r));
|
|
291
|
+
const F = ee(o);
|
|
292
|
+
v(() => {
|
|
293
|
+
const u = x.current;
|
|
294
|
+
if (!u) return;
|
|
295
|
+
let w, y, k, D, _;
|
|
296
|
+
const H = window.requestAnimationFrame(() => {
|
|
297
|
+
w = new W({
|
|
298
|
+
cols: M,
|
|
299
|
+
rows: N,
|
|
300
|
+
cursorBlink: !0,
|
|
301
|
+
convertEol: !0,
|
|
302
|
+
allowProposedApi: !0
|
|
303
|
+
});
|
|
304
|
+
const I = new K();
|
|
305
|
+
w.loadAddon(I), w.open(u), y = ae(w), p.current = w, g.current = I, h.current = y;
|
|
306
|
+
const R = () => O(I);
|
|
307
|
+
R(), k = window.requestAnimationFrame(R), D = window.setTimeout(R, 50), _ = new ResizeObserver(R), _.observe(u), A(!0);
|
|
308
|
+
});
|
|
309
|
+
return () => {
|
|
310
|
+
window.cancelAnimationFrame(H), k !== void 0 && window.cancelAnimationFrame(k), D !== void 0 && window.clearTimeout(D), _?.disconnect(), y?.dispose(), w?.dispose(), p.current = null, g.current = null, h.current = null;
|
|
311
|
+
};
|
|
312
|
+
}, []), v(() => {
|
|
313
|
+
if (!f) return;
|
|
314
|
+
const u = p.current;
|
|
315
|
+
u && (u.options.theme = F, u.options.fontFamily = t, u.options.fontSize = s, O(g.current));
|
|
316
|
+
}, [f, F, t, s]);
|
|
317
|
+
const {
|
|
318
|
+
session: z
|
|
319
|
+
} = re({
|
|
320
|
+
bridge: n,
|
|
321
|
+
request: c.current,
|
|
322
|
+
killOnUnmount: m
|
|
323
|
+
});
|
|
324
|
+
return v(() => {
|
|
325
|
+
if (!f) return;
|
|
326
|
+
const u = p.current, w = h.current;
|
|
327
|
+
if (!u || !w || !z) return;
|
|
328
|
+
O(g.current);
|
|
329
|
+
const y = window.requestAnimationFrame(() => O(g.current)), k = ue(u, w, z, {
|
|
330
|
+
onSessionOpen: b,
|
|
331
|
+
onSessionExit: E
|
|
332
|
+
});
|
|
333
|
+
return () => {
|
|
334
|
+
window.cancelAnimationFrame(y), k();
|
|
335
|
+
};
|
|
336
|
+
}, [z, f]), v(() => {
|
|
337
|
+
f && l && p.current?.focus();
|
|
338
|
+
}, [l, f]), /* @__PURE__ */ B("div", { className: S, style: {
|
|
339
|
+
position: "relative",
|
|
340
|
+
width: "100%",
|
|
341
|
+
height: "100%",
|
|
342
|
+
backgroundColor: typeof F.background == "string" ? F.background : void 0,
|
|
343
|
+
...i
|
|
344
|
+
}, children: /* @__PURE__ */ B("div", { ref: x, className: "pstdio-terminal", style: {
|
|
345
|
+
position: "absolute",
|
|
346
|
+
inset: 0
|
|
347
|
+
} }) });
|
|
348
|
+
};
|
|
349
|
+
export {
|
|
350
|
+
be as Terminal,
|
|
351
|
+
G as bindSessionToSink,
|
|
352
|
+
we as createScriptedTerminalBridge,
|
|
353
|
+
X as darkTerminalTheme,
|
|
354
|
+
V as lightTerminalTheme,
|
|
355
|
+
ee as resolveTerminalTheme,
|
|
356
|
+
U as terminalThemes,
|
|
357
|
+
re as useTerminalSession
|
|
358
|
+
};
|
|
359
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sources":["../src/components/terminal/bind-session.ts","../src/components/terminal/scripted-bridge.ts","../src/components/terminal/terminal-theme.ts","../src/components/terminal/use-terminal-session.ts","../src/components/terminal/terminal.tsx"],"sourcesContent":["import type { TerminalSessionAdapter } from \"./types\";\n\n/**\n * Minimal subset of xterm.js that the binding needs. Tests substitute a fake\n * sink so the wire-up logic can be exercised without a DOM.\n */\nexport interface TerminalSink {\n write(data: string | Uint8Array): void;\n onInput(handler: (data: string) => void): () => void;\n onResize(handler: (size: { cols: number; rows: number }) => void): () => void;\n}\n\nexport interface BindSessionOptions {\n /** Forwarded to the session when the user types in the sink. */\n onInput?: (data: string) => void;\n /** Called once the session exits; useful for surfacing status. */\n onExit?: (exit: { code: number | null; signal: string | null }) => void;\n /** Called on transport errors. */\n onError?: (error: { message: string }) => void;\n}\n\n/**\n * Wires a {@link TerminalSink} (typically xterm.js) to a\n * {@link TerminalSessionAdapter}. Returns a disposer that detaches every\n * subscription it created. The session itself is *not* killed — owning the\n * session lifecycle is the caller's responsibility.\n */\nexport const bindSessionToSink = (\n sink: TerminalSink,\n session: TerminalSessionAdapter,\n options: BindSessionOptions = {},\n) => {\n const disposers: Array<() => void> = [];\n\n disposers.push(session.onData((chunk) => sink.write(chunk)));\n\n disposers.push(\n sink.onInput((data) => {\n session.write(data);\n options.onInput?.(data);\n }),\n );\n\n disposers.push(\n sink.onResize(({ cols, rows }) => {\n session.resize(cols, rows);\n }),\n );\n\n if (options.onExit) disposers.push(session.onExit(options.onExit));\n if (options.onError) disposers.push(session.onError(options.onError));\n\n return () => {\n while (disposers.length > 0) {\n const dispose = disposers.pop();\n try {\n dispose?.();\n } catch {\n // Disposer errors during teardown are intentionally swallowed so a\n // partially-bound session still cleans up the remaining subscriptions.\n }\n }\n };\n};\n","import type { TerminalBridge, TerminalSessionAdapter, TerminalSessionError, TerminalSessionExit } from \"./types\";\n\nexport interface ScriptedTerminalStep {\n /** Bytes the host pushes back to the renderer (utf-8 string is encoded for you). */\n data?: string | Uint8Array;\n /** Milliseconds to wait before delivering this step. */\n delayMs?: number;\n /** Marks the session as exited after this step. */\n exit?: { code: number | null; signal?: string | null };\n /** Delivers a transport error after this step. */\n error?: string;\n}\n\nexport interface ScriptedBridgeOptions {\n /** Initial script delivered after the first data subscriber attaches. */\n initial?: ScriptedTerminalStep[];\n /**\n * Responds to user input. Return additional steps to play, or `undefined`\n * to ignore. Defaults to echoing the input followed by a newline.\n */\n onInput?: (input: string) => ScriptedTerminalStep[] | undefined;\n /** Called whenever the renderer requests a resize. */\n onResize?: (size: { cols: number; rows: number }) => void;\n /** Called once when the renderer kills the session. */\n onKill?: (signal?: string) => void;\n}\n\nconst encoder = new TextEncoder();\n\nconst toChunk = (data: string | Uint8Array) => (typeof data === \"string\" ? encoder.encode(data) : data);\n\nconst wait = (ms: number) => (ms > 0 ? new Promise<void>((resolve) => setTimeout(resolve, ms)) : Promise.resolve());\n\nconst defaultEcho = (input: string): ScriptedTerminalStep[] => [{ data: input.replace(/\\r/g, \"\\r\\n\") }];\n\ninterface SessionEmitter {\n isExited(): boolean;\n emitData(chunk: Uint8Array): void;\n emitExit(exit: TerminalSessionExit): void;\n emitError(error: TerminalSessionError): void;\n}\n\nconst runStep = (emitter: SessionEmitter, step: ScriptedTerminalStep) => {\n if (step.data !== undefined) emitter.emitData(toChunk(step.data));\n if (step.error !== undefined) emitter.emitError({ message: step.error });\n if (step.exit !== undefined) emitter.emitExit({ code: step.exit.code, signal: step.exit.signal ?? null });\n};\n\nconst playSteps = async (emitter: SessionEmitter, steps: ScriptedTerminalStep[]) => {\n for (const step of steps) {\n if (emitter.isExited()) return;\n await wait(step.delayMs ?? 0);\n if (emitter.isExited()) return;\n runStep(emitter, step);\n }\n};\n\nconst createScriptedSession = (\n options: ScriptedBridgeOptions,\n onInput: NonNullable<ScriptedBridgeOptions[\"onInput\"]>,\n) => {\n const dataHandlers = new Set<(chunk: Uint8Array) => void>();\n const exitHandlers = new Set<(exit: TerminalSessionExit) => void>();\n const errorHandlers = new Set<(error: TerminalSessionError) => void>();\n let exited = false;\n let startedInitial = false;\n\n const emitter: SessionEmitter = {\n isExited: () => exited,\n emitData(chunk) {\n for (const handler of dataHandlers) handler(chunk);\n },\n emitExit(exit) {\n if (exited) return;\n exited = true;\n for (const handler of exitHandlers) handler(exit);\n },\n emitError(error) {\n for (const handler of errorHandlers) handler(error);\n },\n };\n\n const session: TerminalSessionAdapter = {\n id: crypto.randomUUID(),\n write(data) {\n if (exited) return;\n const text = typeof data === \"string\" ? data : new TextDecoder().decode(data);\n const response = onInput(text);\n if (response) void playSteps(emitter, response);\n },\n resize(cols, rows) {\n options.onResize?.({ cols, rows });\n },\n kill(signal) {\n if (exited) return;\n options.onKill?.(signal);\n emitter.emitExit({ code: null, signal: signal ?? null });\n },\n onData(handler) {\n dataHandlers.add(handler);\n if (!startedInitial && options.initial) {\n startedInitial = true;\n void playSteps(emitter, options.initial);\n }\n return () => dataHandlers.delete(handler);\n },\n onExit(handler) {\n exitHandlers.add(handler);\n return () => exitHandlers.delete(handler);\n },\n onError(handler) {\n errorHandlers.add(handler);\n return () => errorHandlers.delete(handler);\n },\n };\n\n return { session };\n};\n\n/**\n * Deterministic in-memory bridge. Used by stories and tests to exercise the\n * terminal UI without a real PTY supervisor.\n */\nexport const createScriptedTerminalBridge = (options: ScriptedBridgeOptions = {}): TerminalBridge => {\n const onInput = options.onInput ?? defaultEcho;\n\n return {\n async openSession(_request) {\n const { session } = createScriptedSession(options, onInput);\n return session;\n },\n };\n};\n","import type { ITheme } from \"@xterm/xterm\";\n\n/**\n * xterm theme presets aligned with the workbench `bg.inverted` / `fg.inverted`\n * pairings so the terminal blends with the surrounding chrome without the\n * consuming extension touching xterm directly. Consumers can still pass any\n * `ITheme` they like via the `theme` prop.\n */\nexport type TerminalThemeName = \"light\" | \"dark\";\n\nconst baseTheme: Partial<ITheme> = {\n cursorAccent: \"#000000\",\n selectionForeground: undefined,\n};\n\nexport const lightTerminalTheme: ITheme = {\n ...baseTheme,\n background: \"#f4f4f5\",\n foreground: \"#171717\",\n cursor: \"#171717\",\n selectionBackground: \"#d4d4d8\",\n black: \"#27272a\",\n red: \"#dc2626\",\n green: \"#16a34a\",\n yellow: \"#ca8a04\",\n blue: \"#2563eb\",\n magenta: \"#c026d3\",\n cyan: \"#0891b2\",\n white: \"#e4e4e7\",\n brightBlack: \"#52525b\",\n brightRed: \"#ef4444\",\n brightGreen: \"#22c55e\",\n brightYellow: \"#eab308\",\n brightBlue: \"#3b82f6\",\n brightMagenta: \"#d946ef\",\n brightCyan: \"#06b6d4\",\n brightWhite: \"#fafafa\",\n};\n\nexport const darkTerminalTheme: ITheme = {\n ...baseTheme,\n background: \"#0a0a0a\",\n foreground: \"#fafafa\",\n cursor: \"#fafafa\",\n selectionBackground: \"#3f3f46\",\n black: \"#27272a\",\n red: \"#f87171\",\n green: \"#4ade80\",\n yellow: \"#facc15\",\n blue: \"#60a5fa\",\n magenta: \"#e879f9\",\n cyan: \"#22d3ee\",\n white: \"#e4e4e7\",\n brightBlack: \"#52525b\",\n brightRed: \"#fca5a5\",\n brightGreen: \"#86efac\",\n brightYellow: \"#fde047\",\n brightBlue: \"#93c5fd\",\n brightMagenta: \"#f0abfc\",\n brightCyan: \"#67e8f9\",\n brightWhite: \"#fafafa\",\n};\n\nexport const terminalThemes: Record<TerminalThemeName, ITheme> = {\n light: lightTerminalTheme,\n dark: darkTerminalTheme,\n};\n\nexport const resolveTerminalTheme = (theme: TerminalThemeName | ITheme | undefined) => {\n if (!theme) return terminalThemes.dark;\n if (typeof theme === \"string\") return terminalThemes[theme];\n return theme;\n};\n","import { useEffect, useState } from \"react\";\nimport type {\n TerminalBridge,\n TerminalSessionAdapter,\n TerminalSessionError,\n TerminalSessionExit,\n TerminalSessionRequest,\n} from \"./types\";\n\nexport type TerminalSessionStatus = \"idle\" | \"opening\" | \"open\" | \"exited\" | \"error\";\n\nexport interface UseTerminalSessionResult {\n session: TerminalSessionAdapter | null;\n status: TerminalSessionStatus;\n exit: TerminalSessionExit | null;\n error: TerminalSessionError | null;\n}\n\nexport interface UseTerminalSessionOptions {\n bridge: TerminalBridge | null;\n request: TerminalSessionRequest;\n /** Set to false to keep the session alive when the hook unmounts. */\n killOnUnmount?: boolean;\n}\n\nexport const createTerminalSessionRequestKey = (request: TerminalSessionRequest) =>\n JSON.stringify({\n command: request.command,\n cwd: request.cwd,\n env: request.env\n ? Object.fromEntries(Object.entries(request.env).sort(([left], [right]) => left.localeCompare(right)))\n : undefined,\n cols: request.cols,\n rows: request.rows,\n });\n\nconst readTerminalSessionRequestKey = (requestKey: string): TerminalSessionRequest => JSON.parse(requestKey);\n\n/**\n * Opens a terminal session via the provided bridge and surfaces its lifecycle\n * for the renderer. The session is killed on unmount unless explicitly opted\n * out; switching bridges or request contents triggers a fresh open.\n */\nexport const useTerminalSession = ({ bridge, request, killOnUnmount = true }: UseTerminalSessionOptions) => {\n const requestKey = createTerminalSessionRequestKey(request);\n const [state, setState] = useState<UseTerminalSessionResult>({\n session: null,\n status: \"idle\",\n exit: null,\n error: null,\n });\n\n useEffect(() => {\n if (!bridge) {\n setState({ session: null, status: \"idle\", exit: null, error: null });\n return;\n }\n\n let cancelled = false;\n let activeSession: TerminalSessionAdapter | null = null;\n let terminalState: TerminalSessionStatus = \"opening\";\n const disposers: Array<() => void> = [];\n\n setState({ session: null, status: \"opening\", exit: null, error: null });\n const requestSnapshot = readTerminalSessionRequestKey(requestKey);\n\n bridge\n .openSession(requestSnapshot)\n .then((session) => {\n if (cancelled) {\n void session.kill();\n return;\n }\n activeSession = session;\n disposers.push(\n session.onExit((exit) => {\n terminalState = \"exited\";\n setState((prev) => ({ ...prev, status: \"exited\", exit }));\n }),\n session.onError((error) => {\n terminalState = \"error\";\n setState((prev) => ({ ...prev, status: \"error\", error }));\n }),\n );\n terminalState = \"open\";\n setState({ session, status: \"open\", exit: null, error: null });\n })\n .catch((cause: unknown) => {\n if (cancelled) return;\n const message = cause instanceof Error ? cause.message : String(cause);\n terminalState = \"error\";\n setState({ session: null, status: \"error\", exit: null, error: { message } });\n });\n\n return () => {\n cancelled = true;\n while (disposers.length > 0) disposers.pop()?.();\n if (killOnUnmount && activeSession && terminalState !== \"exited\") void activeSession.kill();\n };\n }, [bridge, requestKey, killOnUnmount]);\n\n return state;\n};\n","import { FitAddon } from \"@xterm/addon-fit\";\nimport type { ITheme } from \"@xterm/xterm\";\nimport { Terminal as Xterm } from \"@xterm/xterm\";\nimport \"@xterm/xterm/css/xterm.css\";\nimport \"./terminal.css\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { bindSessionToSink, type TerminalSink } from \"./bind-session\";\nimport { resolveTerminalTheme, type TerminalThemeName } from \"./terminal-theme\";\nimport type { TerminalBridge, TerminalSessionAdapter, TerminalSessionRequest } from \"./types\";\nimport { useTerminalSession } from \"./use-terminal-session\";\n\nconst DEFAULT_FONT_FAMILY = '\"JetBrains Mono\", \"Fira Code\", Menlo, Consolas, monospace';\nconst DEFAULT_FONT_SIZE = 13;\nconst DEFAULT_COLS = 80;\nconst DEFAULT_ROWS = 24;\n\nexport const createInitialTerminalSessionRequest = (\n request?: Partial<TerminalSessionRequest>,\n): TerminalSessionRequest => ({\n ...request,\n cols: request?.cols ?? DEFAULT_COLS,\n rows: request?.rows ?? DEFAULT_ROWS,\n});\n\nexport const createTerminalSink = (xterm: Pick<Xterm, \"write\" | \"onData\" | \"onResize\">) => {\n const inputHandlers = new Set<(data: string) => void>();\n const pendingInput: string[] = [];\n const inputDisposable = xterm.onData((data) => {\n if (inputHandlers.size === 0) {\n pendingInput.push(data);\n return;\n }\n for (const handler of inputHandlers) handler(data);\n });\n\n return {\n write(data: string | Uint8Array) {\n xterm.write(data);\n },\n onInput(handler: (data: string) => void) {\n inputHandlers.add(handler);\n while (pendingInput.length > 0) handler(pendingInput.shift() as string);\n return () => inputHandlers.delete(handler);\n },\n onResize(handler: (size: { cols: number; rows: number }) => void) {\n const disposable = xterm.onResize(handler);\n return () => disposable.dispose();\n },\n dispose() {\n inputDisposable.dispose();\n inputHandlers.clear();\n pendingInput.length = 0;\n },\n } satisfies TerminalSink & { dispose(): void };\n};\n\nconst fitTerminal = (fit: FitAddon | null) => {\n try {\n fit?.fit();\n } catch {\n // fit() throws if the container has zero size (e.g. hidden via CSS).\n }\n};\n\nexport const resizeSessionToTerminalGeometry = (\n terminal: Pick<Xterm, \"cols\" | \"rows\">,\n session: Pick<TerminalSessionAdapter, \"resize\">,\n) => {\n session.resize(terminal.cols, terminal.rows);\n};\n\nexport const bindTerminalSession = (\n terminal: Pick<Xterm, \"cols\" | \"rows\">,\n sink: TerminalSink,\n session: TerminalSessionAdapter,\n options: Pick<TerminalProps, \"onSessionOpen\" | \"onSessionExit\">,\n) => {\n const unbind = bindSessionToSink(sink, session, {\n onExit: options.onSessionExit,\n });\n resizeSessionToTerminalGeometry(terminal, session);\n options.onSessionOpen?.(session.id);\n return unbind;\n};\n\nexport interface TerminalSessionCallbackRefs {\n onSessionOpen: React.RefObject<TerminalProps[\"onSessionOpen\"]>;\n onSessionExit: React.RefObject<TerminalProps[\"onSessionExit\"]>;\n}\n\nexport const bindTerminalSessionWithCallbackRefs = (\n terminal: Pick<Xterm, \"cols\" | \"rows\">,\n sink: TerminalSink,\n session: TerminalSessionAdapter,\n callbackRefs: TerminalSessionCallbackRefs,\n) =>\n bindTerminalSession(terminal, sink, session, {\n onSessionOpen: (sessionId) => callbackRefs.onSessionOpen.current?.(sessionId),\n onSessionExit: (exit) => callbackRefs.onSessionExit.current?.(exit),\n });\n\nexport interface TerminalProps {\n /** Bridge adapter the component opens its session through. */\n bridge: TerminalBridge;\n /**\n * Optional initial session request overrides. `cols`/`rows` default to\n * 80x24; container resizes are forwarded after the session opens.\n */\n request?: Partial<TerminalSessionRequest>;\n /** Theme preset name or full xterm theme. */\n theme?: TerminalThemeName | ITheme;\n /** Monospace font family. */\n fontFamily?: string;\n fontSize?: number;\n /** Whether to kill the session when the component unmounts. Defaults to true. */\n killOnUnmount?: boolean;\n /** Focus the terminal while it is the active surface. Defaults to true. */\n autoFocus?: boolean;\n /** Forwarded to the container element. */\n className?: string;\n style?: React.CSSProperties;\n /** Called once the session is open; useful for imperative refs. */\n onSessionOpen?: (sessionId: string) => void;\n /** Called once the session exits. */\n onSessionExit?: (exit: { code: number | null; signal: string | null }) => void;\n}\n\n/**\n * High-level terminal component. Mounts xterm.js inside a `<div>` and binds it\n * to the session opened from `bridge.openSession(...)`. Resize is driven by\n * `ResizeObserver` so the terminal fills its container and the host PTY\n * geometry stays in sync.\n */\nexport const Terminal = (props: TerminalProps) => {\n const {\n bridge,\n request,\n theme,\n fontFamily = DEFAULT_FONT_FAMILY,\n fontSize = DEFAULT_FONT_SIZE,\n killOnUnmount = true,\n autoFocus = true,\n className,\n style,\n onSessionOpen,\n onSessionExit,\n } = props;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const xtermRef = useRef<Xterm | null>(null);\n const fitRef = useRef<FitAddon | null>(null);\n const sinkRef = useRef<ReturnType<typeof createTerminalSink> | null>(null);\n const [terminalReady, setTerminalReady] = useState(false);\n const initialSessionRequestRef = useRef<TerminalSessionRequest | null>(null);\n const onSessionOpenRef = useRef(onSessionOpen);\n const onSessionExitRef = useRef(onSessionExit);\n\n onSessionOpenRef.current = onSessionOpen;\n onSessionExitRef.current = onSessionExit;\n\n if (!initialSessionRequestRef.current) {\n initialSessionRequestRef.current = createInitialTerminalSessionRequest(request);\n }\n\n const resolvedTheme = resolveTerminalTheme(theme);\n\n // Mount xterm once on the container. Theme, font, and size updates flow\n // through the dedicated options-sync effect below to avoid a full remount on\n // every prop change.\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n let xterm: Xterm | undefined;\n let sink: ReturnType<typeof createTerminalSink> | undefined;\n let measureAnimationFrame: number | undefined;\n let measureTimeout: number | undefined;\n let observer: ResizeObserver | undefined;\n\n // Deferring construction skips React Strict Mode's disposable probe mount.\n // xterm schedules internal viewport work during construction that otherwise\n // runs after the probe instance has already been disposed.\n const initializationFrame = window.requestAnimationFrame(() => {\n xterm = new Xterm({\n cols: DEFAULT_COLS,\n rows: DEFAULT_ROWS,\n cursorBlink: true,\n convertEol: true,\n allowProposedApi: true,\n });\n const fit = new FitAddon();\n xterm.loadAddon(fit);\n xterm.open(container);\n sink = createTerminalSink(xterm);\n\n xtermRef.current = xterm;\n fitRef.current = fit;\n sinkRef.current = sink;\n\n const measure = () => fitTerminal(fit);\n measure();\n measureAnimationFrame = window.requestAnimationFrame(measure);\n measureTimeout = window.setTimeout(measure, 50);\n observer = new ResizeObserver(measure);\n observer.observe(container);\n setTerminalReady(true);\n });\n\n return () => {\n window.cancelAnimationFrame(initializationFrame);\n if (measureAnimationFrame !== undefined) window.cancelAnimationFrame(measureAnimationFrame);\n if (measureTimeout !== undefined) window.clearTimeout(measureTimeout);\n observer?.disconnect();\n sink?.dispose();\n xterm?.dispose();\n xtermRef.current = null;\n fitRef.current = null;\n sinkRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (!terminalReady) return;\n const xterm = xtermRef.current;\n if (!xterm) return;\n xterm.options.theme = resolvedTheme;\n xterm.options.fontFamily = fontFamily;\n xterm.options.fontSize = fontSize;\n fitTerminal(fitRef.current);\n }, [terminalReady, resolvedTheme, fontFamily, fontSize]);\n\n const { session } = useTerminalSession({ bridge, request: initialSessionRequestRef.current, killOnUnmount });\n\n useEffect(() => {\n if (!terminalReady) return;\n const xterm = xtermRef.current;\n const sink = sinkRef.current;\n if (!xterm || !sink || !session) return;\n fitTerminal(fitRef.current);\n const animationFrame = window.requestAnimationFrame(() => fitTerminal(fitRef.current));\n const unbind = bindTerminalSessionWithCallbackRefs(xterm, sink, session, {\n onSessionOpen: onSessionOpenRef,\n onSessionExit: onSessionExitRef,\n });\n return () => {\n window.cancelAnimationFrame(animationFrame);\n unbind();\n };\n }, [session, terminalReady]);\n\n useEffect(() => {\n if (terminalReady && autoFocus) xtermRef.current?.focus();\n }, [autoFocus, terminalReady]);\n\n // The mount element fills its box absolutely so xterm sizes to the panel\n // rather than growing it: inside a scrollable host, a self-sized terminal\n // would define its own height and never fit, leaving the host to scroll it.\n return (\n <div\n className={className}\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n backgroundColor: typeof resolvedTheme.background === \"string\" ? resolvedTheme.background : undefined,\n ...style,\n }}\n >\n <div ref={containerRef} className=\"pstdio-terminal\" style={{ position: \"absolute\", inset: 0 }} />\n </div>\n );\n};\n"],"names":["bindSessionToSink","sink","session","options","disposers","push","onData","chunk","write","onInput","data","onResize","cols","rows","resize","onExit","onError","length","dispose","pop","encoder","TextEncoder","toChunk","encode","wait","ms","Promise","resolve","setTimeout","defaultEcho","input","replace","runStep","emitter","step","undefined","emitData","error","emitError","message","exit","emitExit","code","signal","playSteps","steps","isExited","delayMs","createScriptedSession","dataHandlers","Set","exitHandlers","errorHandlers","exited","startedInitial","handler","id","crypto","randomUUID","text","TextDecoder","decode","response","kill","onKill","add","initial","delete","createScriptedTerminalBridge","openSession","_request","baseTheme","cursorAccent","selectionForeground","lightTerminalTheme","background","foreground","cursor","selectionBackground","black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","darkTerminalTheme","terminalThemes","light","dark","resolveTerminalTheme","theme","createTerminalSessionRequestKey","request","JSON","stringify","command","cwd","env","Object","fromEntries","entries","sort","left","right","localeCompare","readTerminalSessionRequestKey","requestKey","parse","useTerminalSession","t0","$","_c","bridge","killOnUnmount","t1","t2","t3","Symbol","for","status","state","setState","useState","t4","t5","cancelled","activeSession","terminalState","requestSnapshot","then","prev","prev_0","catch","cause","Error","String","useEffect","DEFAULT_FONT_FAMILY","DEFAULT_FONT_SIZE","DEFAULT_COLS","DEFAULT_ROWS","createInitialTerminalSessionRequest","createTerminalSink","xterm","inputHandlers","pendingInput","inputDisposable","size","shift","disposable","clear","fitTerminal","fit","resizeSessionToTerminalGeometry","terminal","bindTerminalSession","unbind","onSessionExit","onSessionOpen","bindTerminalSessionWithCallbackRefs","callbackRefs","sessionId","current","Terminal","props","fontFamily","fontSize","autoFocus","className","style","containerRef","useRef","xtermRef","fitRef","sinkRef","terminalReady","setTerminalReady","initialSessionRequestRef","onSessionOpenRef","onSessionExitRef","resolvedTheme","container","measureAnimationFrame","measureTimeout","observer","initializationFrame","window","requestAnimationFrame","Xterm","cursorBlink","convertEol","allowProposedApi","FitAddon","loadAddon","open","measure","ResizeObserver","observe","cancelAnimationFrame","clearTimeout","disconnect","animationFrame","focus","jsx","position","width","height","backgroundColor","inset"],"mappings":"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"}
|