@celljs/ta-web 4.6.1 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +90 -0
- package/README.md +13 -7
- package/esm/browser/chat/chat-protocol.d.ts +4 -0
- package/esm/browser/chat/chat-view.js +4 -1
- package/esm/browser/chat/chat-view.js.map +1 -1
- package/esm/browser/chat/chat.d.ts +8 -1
- package/esm/browser/chat/chat.js +34 -15
- package/esm/browser/chat/chat.js.map +1 -1
- package/esm/browser/chat/draft-model.d.ts +15 -0
- package/esm/browser/chat/draft-model.js +53 -0
- package/esm/browser/chat/draft-model.js.map +1 -0
- package/esm/browser/components/account-menu.d.ts +3 -2
- package/esm/browser/components/account-menu.js +21 -16
- package/esm/browser/components/account-menu.js.map +1 -1
- package/esm/browser/components/app-view.js +13 -4
- package/esm/browser/components/app-view.js.map +1 -1
- package/esm/browser/components/chat-list.d.ts +3 -1
- package/esm/browser/components/chat-list.js +6 -1
- package/esm/browser/components/chat-list.js.map +1 -1
- package/esm/browser/components/composer-box.d.ts +6 -0
- package/esm/browser/components/composer-box.js +50 -13
- package/esm/browser/components/composer-box.js.map +1 -1
- package/esm/browser/components/composer.js +1 -1
- package/esm/browser/components/composer.js.map +1 -1
- package/esm/browser/components/dialog-view.d.ts +4 -1
- package/esm/browser/components/dialog-view.js +11 -7
- package/esm/browser/components/dialog-view.js.map +1 -1
- package/esm/browser/components/folder-picker.d.ts +37 -6
- package/esm/browser/components/folder-picker.js +155 -33
- package/esm/browser/components/folder-picker.js.map +1 -1
- package/esm/browser/components/notice-center.js +3 -1
- package/esm/browser/components/notice-center.js.map +1 -1
- package/esm/browser/components/remote-hosts.d.ts +7 -0
- package/esm/browser/components/remote-hosts.js +94 -0
- package/esm/browser/components/remote-hosts.js.map +1 -0
- package/esm/browser/components/remote-prompts.d.ts +7 -0
- package/esm/browser/components/remote-prompts.js +72 -0
- package/esm/browser/components/remote-prompts.js.map +1 -0
- package/esm/browser/components/session-view.js +48 -4
- package/esm/browser/components/session-view.js.map +1 -1
- package/esm/browser/components/settings-view.js +8 -1
- package/esm/browser/components/settings-view.js.map +1 -1
- package/esm/browser/components/terminal-art.d.ts +7 -0
- package/esm/browser/components/terminal-art.js +12 -0
- package/esm/browser/components/terminal-art.js.map +1 -0
- package/esm/browser/components/tool-view.js +1 -1
- package/esm/browser/components/tool-view.js.map +1 -1
- package/esm/browser/components/web-composer.d.ts +4 -1
- package/esm/browser/components/web-composer.js +2 -2
- package/esm/browser/components/web-composer.js.map +1 -1
- package/esm/browser/components/working-directory.js +1 -1
- package/esm/browser/components/working-directory.js.map +1 -1
- package/esm/browser/extension/icons.js +6 -1
- package/esm/browser/extension/icons.js.map +1 -1
- package/esm/browser/extension/web-extension-api.d.ts +120 -2
- package/esm/browser/extension/web-extensions.d.ts +3 -0
- package/esm/browser/extension/web-extensions.js +33 -1
- package/esm/browser/extension/web-extensions.js.map +1 -1
- package/esm/browser/i18n/locales.d.ts +44 -1
- package/esm/browser/i18n/messages.d.ts +43 -0
- package/esm/browser/i18n/messages.js +99 -13
- package/esm/browser/i18n/messages.js.map +1 -1
- package/esm/browser/notices/notices-protocol.d.ts +3 -0
- package/esm/browser/notices/notices.d.ts +3 -0
- package/esm/browser/notices/notices.js +15 -0
- package/esm/browser/notices/notices.js.map +1 -1
- package/esm/browser/style/base.d.ts +1 -1
- package/esm/browser/style/base.js +6 -1
- package/esm/browser/style/base.js.map +1 -1
- package/esm/browser/style/conversation.d.ts +1 -1
- package/esm/browser/style/conversation.js +16 -1
- package/esm/browser/style/conversation.js.map +1 -1
- package/esm/browser/style/layout.d.ts +1 -1
- package/esm/browser/style/layout.js +53 -15
- package/esm/browser/style/layout.js.map +1 -1
- package/esm/browser/style/shell.d.ts +1 -1
- package/esm/browser/style/shell.js +1 -0
- package/esm/browser/style/shell.js.map +1 -1
- package/esm/browser/terminal/canvas-font.d.ts +10 -0
- package/esm/browser/terminal/canvas-font.js +34 -0
- package/esm/browser/terminal/canvas-font.js.map +1 -0
- package/esm/browser/terminal/terminal-links.d.ts +18 -0
- package/esm/browser/terminal/terminal-links.js +72 -0
- package/esm/browser/terminal/terminal-links.js.map +1 -0
- package/esm/browser/terminal/terminal-theme.d.ts +8 -0
- package/esm/browser/terminal/terminal-theme.js +65 -0
- package/esm/browser/terminal/terminal-theme.js.map +1 -0
- package/esm/browser/terminal/web-terminal.d.ts +74 -0
- package/esm/browser/terminal/web-terminal.js +300 -0
- package/esm/browser/terminal/web-terminal.js.map +1 -0
- package/esm/browser/terminal/xterm.d.ts +5 -0
- package/esm/browser/terminal/xterm.js +9 -0
- package/esm/browser/terminal/xterm.js.map +1 -0
- package/esm/browser/util/desktop.d.ts +43 -0
- package/esm/browser/util/desktop.js +55 -0
- package/esm/browser/util/desktop.js.map +1 -0
- package/esm/browser/util/file-drag.d.ts +26 -0
- package/esm/browser/util/file-drag.js +73 -0
- package/esm/browser/util/file-drag.js.map +1 -0
- package/esm/browser/util/message.d.ts +1 -0
- package/esm/browser/util/message.js +7 -5
- package/esm/browser/util/message.js.map +1 -1
- package/esm/browser/util/terminal-text.d.ts +33 -0
- package/esm/browser/util/terminal-text.js +209 -0
- package/esm/browser/util/terminal-text.js.map +1 -0
- package/esm/browser/util/tool.js +16 -0
- package/esm/browser/util/tool.js.map +1 -1
- package/esm/browser/workbench-protocol.d.ts +7 -1
- package/esm/browser/workbench-protocol.js.map +1 -1
- package/esm/browser/workbench.d.ts +7 -1
- package/esm/browser/workbench.js +23 -0
- package/esm/browser/workbench.js.map +1 -1
- package/lib/browser/chat/chat-protocol.d.ts +4 -0
- package/lib/browser/chat/chat-protocol.d.ts.map +1 -1
- package/lib/browser/chat/chat-view.d.ts.map +1 -1
- package/lib/browser/chat/chat-view.js +4 -1
- package/lib/browser/chat/chat-view.js.map +1 -1
- package/lib/browser/chat/chat.d.ts +8 -1
- package/lib/browser/chat/chat.d.ts.map +1 -1
- package/lib/browser/chat/chat.js +34 -15
- package/lib/browser/chat/chat.js.map +1 -1
- package/lib/browser/chat/chat.spec.js +30 -0
- package/lib/browser/chat/chat.spec.js.map +1 -1
- package/lib/browser/chat/draft-model.d.ts +16 -0
- package/lib/browser/chat/draft-model.d.ts.map +1 -0
- package/lib/browser/chat/draft-model.js +90 -0
- package/lib/browser/chat/draft-model.js.map +1 -0
- package/lib/browser/chat/draft-model.spec.d.ts +2 -0
- package/lib/browser/chat/draft-model.spec.d.ts.map +1 -0
- package/lib/browser/chat/draft-model.spec.js +31 -0
- package/lib/browser/chat/draft-model.spec.js.map +1 -0
- package/lib/browser/components/account-menu.d.ts +3 -2
- package/lib/browser/components/account-menu.d.ts.map +1 -1
- package/lib/browser/components/account-menu.js +21 -16
- package/lib/browser/components/account-menu.js.map +1 -1
- package/lib/browser/components/app-view.d.ts.map +1 -1
- package/lib/browser/components/app-view.js +13 -4
- package/lib/browser/components/app-view.js.map +1 -1
- package/lib/browser/components/chat-list.d.ts +3 -1
- package/lib/browser/components/chat-list.d.ts.map +1 -1
- package/lib/browser/components/chat-list.js +6 -1
- package/lib/browser/components/chat-list.js.map +1 -1
- package/lib/browser/components/composer-box.d.ts +6 -0
- package/lib/browser/components/composer-box.d.ts.map +1 -1
- package/lib/browser/components/composer-box.js +51 -14
- package/lib/browser/components/composer-box.js.map +1 -1
- package/lib/browser/components/composer.d.ts.map +1 -1
- package/lib/browser/components/composer.js +1 -1
- package/lib/browser/components/composer.js.map +1 -1
- package/lib/browser/components/dialog-view.d.ts +4 -1
- package/lib/browser/components/dialog-view.d.ts.map +1 -1
- package/lib/browser/components/dialog-view.js +11 -7
- package/lib/browser/components/dialog-view.js.map +1 -1
- package/lib/browser/components/folder-picker.d.ts +37 -6
- package/lib/browser/components/folder-picker.d.ts.map +1 -1
- package/lib/browser/components/folder-picker.js +156 -33
- package/lib/browser/components/folder-picker.js.map +1 -1
- package/lib/browser/components/folder-picker.spec.js +15 -0
- package/lib/browser/components/folder-picker.spec.js.map +1 -1
- package/lib/browser/components/notice-center.d.ts.map +1 -1
- package/lib/browser/components/notice-center.js +3 -1
- package/lib/browser/components/notice-center.js.map +1 -1
- package/lib/browser/components/plus-menu.spec.d.ts +2 -0
- package/lib/browser/components/plus-menu.spec.d.ts.map +1 -0
- package/lib/browser/components/plus-menu.spec.js +18 -0
- package/lib/browser/components/plus-menu.spec.js.map +1 -0
- package/lib/browser/components/remote-hosts.d.ts +8 -0
- package/lib/browser/components/remote-hosts.d.ts.map +1 -0
- package/lib/browser/components/remote-hosts.js +130 -0
- package/lib/browser/components/remote-hosts.js.map +1 -0
- package/lib/browser/components/remote-prompts.d.ts +8 -0
- package/lib/browser/components/remote-prompts.d.ts.map +1 -0
- package/lib/browser/components/remote-prompts.js +108 -0
- package/lib/browser/components/remote-prompts.js.map +1 -0
- package/lib/browser/components/session-view.d.ts.map +1 -1
- package/lib/browser/components/session-view.js +48 -4
- package/lib/browser/components/session-view.js.map +1 -1
- package/lib/browser/components/settings-view.d.ts.map +1 -1
- package/lib/browser/components/settings-view.js +7 -0
- package/lib/browser/components/settings-view.js.map +1 -1
- package/lib/browser/components/terminal-art.d.ts +8 -0
- package/lib/browser/components/terminal-art.d.ts.map +1 -0
- package/lib/browser/components/terminal-art.js +48 -0
- package/lib/browser/components/terminal-art.js.map +1 -0
- package/lib/browser/components/tool-view.js +1 -1
- package/lib/browser/components/tool-view.js.map +1 -1
- package/lib/browser/components/web-composer.d.ts +4 -1
- package/lib/browser/components/web-composer.d.ts.map +1 -1
- package/lib/browser/components/web-composer.js +2 -2
- package/lib/browser/components/web-composer.js.map +1 -1
- package/lib/browser/components/working-directory.js +1 -1
- package/lib/browser/components/working-directory.js.map +1 -1
- package/lib/browser/extension/icons.d.ts.map +1 -1
- package/lib/browser/extension/icons.js +5 -0
- package/lib/browser/extension/icons.js.map +1 -1
- package/lib/browser/extension/web-extension-api.d.ts +120 -2
- package/lib/browser/extension/web-extension-api.d.ts.map +1 -1
- package/lib/browser/extension/web-extensions.d.ts +3 -0
- package/lib/browser/extension/web-extensions.d.ts.map +1 -1
- package/lib/browser/extension/web-extensions.js +33 -1
- package/lib/browser/extension/web-extensions.js.map +1 -1
- package/lib/browser/i18n/locales.d.ts +44 -1
- package/lib/browser/i18n/locales.d.ts.map +1 -1
- package/lib/browser/i18n/messages.d.ts +43 -0
- package/lib/browser/i18n/messages.d.ts.map +1 -1
- package/lib/browser/i18n/messages.js +99 -13
- package/lib/browser/i18n/messages.js.map +1 -1
- package/lib/browser/notices/notices-protocol.d.ts +3 -0
- package/lib/browser/notices/notices-protocol.d.ts.map +1 -1
- package/lib/browser/notices/notices.d.ts +3 -0
- package/lib/browser/notices/notices.d.ts.map +1 -1
- package/lib/browser/notices/notices.js +15 -0
- package/lib/browser/notices/notices.js.map +1 -1
- package/lib/browser/notices/notices.spec.js +8 -3
- package/lib/browser/notices/notices.spec.js.map +1 -1
- package/lib/browser/style/base.d.ts +1 -1
- package/lib/browser/style/base.d.ts.map +1 -1
- package/lib/browser/style/base.js +6 -1
- package/lib/browser/style/base.js.map +1 -1
- package/lib/browser/style/conversation.d.ts +1 -1
- package/lib/browser/style/conversation.d.ts.map +1 -1
- package/lib/browser/style/conversation.js +16 -1
- package/lib/browser/style/conversation.js.map +1 -1
- package/lib/browser/style/layout.d.ts +1 -1
- package/lib/browser/style/layout.d.ts.map +1 -1
- package/lib/browser/style/layout.js +53 -15
- package/lib/browser/style/layout.js.map +1 -1
- package/lib/browser/style/shell.d.ts +1 -1
- package/lib/browser/style/shell.d.ts.map +1 -1
- package/lib/browser/style/shell.js +1 -0
- package/lib/browser/style/shell.js.map +1 -1
- package/lib/browser/terminal/canvas-font.d.ts +11 -0
- package/lib/browser/terminal/canvas-font.d.ts.map +1 -0
- package/lib/browser/terminal/canvas-font.js +37 -0
- package/lib/browser/terminal/canvas-font.js.map +1 -0
- package/lib/browser/terminal/canvas-font.spec.d.ts +2 -0
- package/lib/browser/terminal/canvas-font.spec.d.ts.map +1 -0
- package/lib/browser/terminal/canvas-font.spec.js +32 -0
- package/lib/browser/terminal/canvas-font.spec.js.map +1 -0
- package/lib/browser/terminal/terminal-links.d.ts +19 -0
- package/lib/browser/terminal/terminal-links.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-links.js +75 -0
- package/lib/browser/terminal/terminal-links.js.map +1 -0
- package/lib/browser/terminal/terminal-links.spec.d.ts +2 -0
- package/lib/browser/terminal/terminal-links.spec.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-links.spec.js +30 -0
- package/lib/browser/terminal/terminal-links.spec.js.map +1 -0
- package/lib/browser/terminal/terminal-theme.d.ts +9 -0
- package/lib/browser/terminal/terminal-theme.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-theme.js +68 -0
- package/lib/browser/terminal/terminal-theme.js.map +1 -0
- package/lib/browser/terminal/terminal-theme.spec.d.ts +2 -0
- package/lib/browser/terminal/terminal-theme.spec.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-theme.spec.js +24 -0
- package/lib/browser/terminal/terminal-theme.spec.js.map +1 -0
- package/lib/browser/terminal/web-terminal.d.ts +75 -0
- package/lib/browser/terminal/web-terminal.d.ts.map +1 -0
- package/lib/browser/terminal/web-terminal.js +304 -0
- package/lib/browser/terminal/web-terminal.js.map +1 -0
- package/lib/browser/terminal/xterm.d.ts +6 -0
- package/lib/browser/terminal/xterm.d.ts.map +1 -0
- package/lib/browser/terminal/xterm.js +16 -0
- package/lib/browser/terminal/xterm.js.map +1 -0
- package/lib/browser/util/desktop.d.ts +44 -0
- package/lib/browser/util/desktop.d.ts.map +1 -0
- package/lib/browser/util/desktop.js +58 -0
- package/lib/browser/util/desktop.js.map +1 -0
- package/lib/browser/util/desktop.spec.d.ts +2 -0
- package/lib/browser/util/desktop.spec.d.ts.map +1 -0
- package/lib/browser/util/desktop.spec.js +67 -0
- package/lib/browser/util/desktop.spec.js.map +1 -0
- package/lib/browser/util/file-drag.d.ts +27 -0
- package/lib/browser/util/file-drag.d.ts.map +1 -0
- package/lib/browser/util/file-drag.js +76 -0
- package/lib/browser/util/file-drag.js.map +1 -0
- package/lib/browser/util/file-drag.spec.d.ts +2 -0
- package/lib/browser/util/file-drag.spec.d.ts.map +1 -0
- package/lib/browser/util/file-drag.spec.js +46 -0
- package/lib/browser/util/file-drag.spec.js.map +1 -0
- package/lib/browser/util/message.d.ts +1 -0
- package/lib/browser/util/message.d.ts.map +1 -1
- package/lib/browser/util/message.js +7 -5
- package/lib/browser/util/message.js.map +1 -1
- package/lib/browser/util/message.spec.js +2 -0
- package/lib/browser/util/message.spec.js.map +1 -1
- package/lib/browser/util/terminal-text.d.ts +34 -0
- package/lib/browser/util/terminal-text.d.ts.map +1 -0
- package/lib/browser/util/terminal-text.js +212 -0
- package/lib/browser/util/terminal-text.js.map +1 -0
- package/lib/browser/util/terminal-text.spec.d.ts +2 -0
- package/lib/browser/util/terminal-text.spec.d.ts.map +1 -0
- package/lib/browser/util/terminal-text.spec.js +54 -0
- package/lib/browser/util/terminal-text.spec.js.map +1 -0
- package/lib/browser/util/tool.d.ts.map +1 -1
- package/lib/browser/util/tool.js +16 -0
- package/lib/browser/util/tool.js.map +1 -1
- package/lib/browser/util/tool.spec.js +12 -0
- package/lib/browser/util/tool.spec.js.map +1 -1
- package/lib/browser/workbench-protocol.d.ts +7 -1
- package/lib/browser/workbench-protocol.d.ts.map +1 -1
- package/lib/browser/workbench-protocol.js.map +1 -1
- package/lib/browser/workbench.d.ts +7 -1
- package/lib/browser/workbench.d.ts.map +1 -1
- package/lib/browser/workbench.js +23 -0
- package/lib/browser/workbench.js.map +1 -1
- package/package.json +11 -7
- package/src/browser/chat/chat-protocol.ts +4 -0
- package/src/browser/chat/chat-view.tsx +5 -1
- package/src/browser/chat/chat.spec.ts +31 -0
- package/src/browser/chat/chat.ts +36 -14
- package/src/browser/chat/draft-model.spec.tsx +31 -0
- package/src/browser/chat/draft-model.tsx +63 -0
- package/src/browser/components/account-menu.tsx +23 -20
- package/src/browser/components/app-view.tsx +12 -3
- package/src/browser/components/chat-list.tsx +9 -2
- package/src/browser/components/composer-box.tsx +52 -6
- package/src/browser/components/composer.tsx +1 -0
- package/src/browser/components/dialog-view.tsx +16 -7
- package/src/browser/components/folder-picker.spec.ts +17 -0
- package/src/browser/components/folder-picker.tsx +221 -39
- package/src/browser/components/notice-center.tsx +7 -1
- package/src/browser/components/plus-menu.spec.ts +16 -0
- package/src/browser/components/remote-hosts.tsx +149 -0
- package/src/browser/components/remote-prompts.tsx +111 -0
- package/src/browser/components/session-view.tsx +65 -4
- package/src/browser/components/settings-view.tsx +8 -0
- package/src/browser/components/terminal-art.tsx +21 -0
- package/src/browser/components/tool-view.tsx +1 -1
- package/src/browser/components/web-composer.tsx +18 -3
- package/src/browser/components/working-directory.tsx +1 -1
- package/src/browser/extension/icons.ts +10 -0
- package/src/browser/extension/web-extension-api.ts +134 -2
- package/src/browser/extension/web-extensions.ts +47 -2
- package/src/browser/i18n/messages.ts +99 -13
- package/src/browser/notices/notices-protocol.ts +3 -0
- package/src/browser/notices/notices.spec.ts +9 -3
- package/src/browser/notices/notices.ts +17 -1
- package/src/browser/style/base.ts +6 -1
- package/src/browser/style/conversation.ts +16 -1
- package/src/browser/style/layout.ts +53 -15
- package/src/browser/style/shell.ts +1 -0
- package/src/browser/terminal/canvas-font.spec.ts +29 -0
- package/src/browser/terminal/canvas-font.ts +32 -0
- package/src/browser/terminal/terminal-links.spec.ts +32 -0
- package/src/browser/terminal/terminal-links.ts +75 -0
- package/src/browser/terminal/terminal-theme.spec.ts +23 -0
- package/src/browser/terminal/terminal-theme.ts +66 -0
- package/src/browser/terminal/web-terminal.ts +330 -0
- package/src/browser/terminal/xterm.ts +10 -0
- package/src/browser/util/desktop.spec.ts +68 -0
- package/src/browser/util/desktop.ts +96 -0
- package/src/browser/util/file-drag.spec.ts +48 -0
- package/src/browser/util/file-drag.ts +78 -0
- package/src/browser/util/message.spec.ts +2 -0
- package/src/browser/util/message.ts +7 -4
- package/src/browser/util/terminal-text.spec.ts +60 -0
- package/src/browser/util/terminal-text.ts +223 -0
- package/src/browser/util/tool.spec.ts +12 -0
- package/src/browser/util/tool.ts +17 -0
- package/src/browser/workbench-protocol.ts +8 -0
- package/src/browser/workbench.ts +29 -0
|
@@ -96,6 +96,8 @@ exports.LAYOUT_STYLE = `
|
|
|
96
96
|
.ta-run-tokens { display: inline-flex; align-items: center; gap: 8px; flex: none; color: var(--ta-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
|
|
97
97
|
.ta-run-tokens > span { display: inline-flex; align-items: center; gap: 1px; }
|
|
98
98
|
.ta-run-line { display: flex; min-width: 0; min-height: 22px; padding-left: 6px; margin-top: -6px; }
|
|
99
|
+
/* Under the open steps of a turn the line is one more step: the same pitch, its dot on the string's line. */
|
|
100
|
+
.ta-thread-item:has(> .ta-message > .ta-process:last-child > .ta-process-steps) + .ta-run-line { margin-top: -18px; padding-left: 4.5px; }
|
|
99
101
|
.ta-status-waiting::before { background: var(--ta-yellow); }
|
|
100
102
|
/* On the head of a turn the face of ta already shows that it works. */
|
|
101
103
|
.ta-turn-head .ta-run-status > .ta-status { display: none; }
|
|
@@ -147,6 +149,9 @@ exports.LAYOUT_STYLE = `
|
|
|
147
149
|
.ta-plus-line { height: 1px; margin: 5px 8px; border: 0; background: var(--ta-border-muted); flex: none; }
|
|
148
150
|
.ta-plus-back { display: flex; align-items: center; gap: 6px; width: 100%; height: 34px; margin-bottom: 4px; padding: 0 8px; border: 0; border-bottom: 1px solid var(--ta-border-muted); border-radius: 9px 9px 0 0; background: none; color: var(--ta-secondary); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
|
|
149
151
|
.ta-plus-back:hover { color: var(--ta-text); }
|
|
152
|
+
.ta-plus-search { box-sizing: border-box; width: 100%; height: 32px; margin: 0 0 6px; padding: 0 10px; border: 1px solid var(--ta-border); border-radius: 9px; background: var(--ta-main); color: var(--ta-text); font: inherit; font-size: 13px; outline: none; }
|
|
153
|
+
.ta-plus-search:focus { border-color: var(--ta-border-strong, var(--ta-secondary)); }
|
|
154
|
+
.ta-plus-empty { padding: 10px 8px; color: var(--ta-secondary); font-size: 12.5px; }
|
|
150
155
|
@keyframes ta-plus-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
|
|
151
156
|
.ta-console-composer textarea { padding: 5px 2px; }
|
|
152
157
|
/* A long placeholder stays on one line, so the empty box keeps its height beside the controls of the +. */
|
|
@@ -172,20 +177,25 @@ exports.LAYOUT_STYLE = `
|
|
|
172
177
|
.ta-queue-back { align-self: flex-end; color: var(--ta-muted); }
|
|
173
178
|
.ta-queue-back:hover { color: var(--ta-text); }
|
|
174
179
|
.ta-account { position: relative; display: grid; place-items: center; width: 40px; height: 40px; flex: none; }
|
|
175
|
-
.ta-account-button { position: relative; width:
|
|
176
|
-
.ta-account-button:hover, .ta-account-button.ta-on {
|
|
177
|
-
.ta-account-
|
|
178
|
-
.ta-account-
|
|
179
|
-
.ta-account-dot
|
|
180
|
-
.ta-account-menu { position: absolute; left: calc(100% + 10px); bottom: 0; z-index: 45; width:
|
|
181
|
-
.ta-account-head { display: flex; align-items: center; gap: 10px; padding:
|
|
182
|
-
.ta-account-
|
|
183
|
-
.ta-account-
|
|
184
|
-
.ta-account-
|
|
185
|
-
.ta-account-
|
|
186
|
-
.ta-account-
|
|
180
|
+
.ta-account-button { position: relative; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; padding: 0; transition: background 150ms; }
|
|
181
|
+
.ta-account-button:hover, .ta-account-button.ta-on { background: var(--ta-hover); }
|
|
182
|
+
.ta-account-figure { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--ta-green) 14%, var(--ta-main)); color: color-mix(in srgb, var(--ta-green) 75%, var(--ta-text)); font-size: 13px; font-weight: 600; line-height: 1; letter-spacing: 0; user-select: none; }
|
|
183
|
+
.ta-account-figure.ta-large { width: 36px; height: 36px; font-size: 15px; }
|
|
184
|
+
.ta-account-dot { position: absolute; right: 5px; bottom: 5px; width: 8px; height: 8px; border-radius: 50%; background: var(--ta-yellow); box-shadow: 0 0 0 2px var(--ta-side); }
|
|
185
|
+
.ta-account-menu { position: absolute; left: calc(100% + 10px); bottom: 0; z-index: 45; width: 248px; display: flex; flex-direction: column; gap: 2px; padding: 6px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); animation: ta-fade 120ms ease-out; }
|
|
186
|
+
.ta-account-head { display: flex; align-items: center; gap: 10px; padding: 8px 8px 10px; min-width: 0; }
|
|
187
|
+
.ta-account-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; line-height: 1.35; }
|
|
188
|
+
.ta-account-title { font-size: 13.5px; font-weight: 600; color: var(--ta-text); }
|
|
189
|
+
.ta-account-sub { font-size: 12px; color: var(--ta-muted); }
|
|
190
|
+
.ta-account-service { display: flex; align-items: center; gap: 8px; height: 32px; margin: 0 2px 2px; padding: 0 10px; border-radius: 8px; background: var(--ta-raised); font-size: 12.5px; color: var(--ta-secondary); }
|
|
191
|
+
.ta-account-service-name { flex: 1; min-width: 0; }
|
|
192
|
+
.ta-account-service-state { flex: none; font-size: 12px; color: var(--ta-muted); font-variant-numeric: tabular-nums; }
|
|
193
|
+
.ta-account-state { width: 7px; height: 7px; flex: none; border-radius: 50%; background: var(--ta-muted); }
|
|
194
|
+
.ta-account-state.ta-ok { background: var(--ta-green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ta-green) 18%, transparent); }
|
|
195
|
+
.ta-account-state.ta-warn { background: var(--ta-yellow); }
|
|
187
196
|
.ta-account-sep { height: 1px; margin: 4px 2px; background: var(--ta-border-muted); }
|
|
188
|
-
.ta-account-item { display: flex; align-items: center; gap: 10px; height: 32px; padding: 0
|
|
197
|
+
.ta-account-item { display: flex; align-items: center; gap: 10px; height: 32px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; text-align: left; font-size: 13px; color: var(--ta-text); }
|
|
198
|
+
.ta-account-item > svg, .ta-account-item > .ta-icon { flex: none; color: var(--ta-secondary); }
|
|
189
199
|
.ta-account-item:hover { background: var(--ta-hover); }
|
|
190
200
|
.ta-account-item.ta-danger { color: var(--ta-red); }
|
|
191
201
|
@media (max-width: 860px) {
|
|
@@ -253,7 +263,7 @@ exports.LAYOUT_STYLE = `
|
|
|
253
263
|
.ta-web-dialog .ta-modal-title { font-size: 16px; }
|
|
254
264
|
.ta-folder-bar { display: flex; align-items: center; gap: 6px; }
|
|
255
265
|
.ta-folder-bar .ta-field input { font-family: var(--ta-mono); font-size: 12.5px; }
|
|
256
|
-
.ta-folder-list { list-style: none; flex:
|
|
266
|
+
.ta-folder-list { list-style: none; flex: none; height: min(340px, 44vh); overflow-y: auto; margin: 0; padding: 4px; border: 1px solid var(--ta-border-muted); border-radius: 10px; }
|
|
257
267
|
.ta-folder-item { display: flex; align-items: center; gap: 10px; width: 100%; height: 34px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--ta-body); font-size: 13px; text-align: left; }
|
|
258
268
|
.ta-folder-item:hover { background: var(--ta-hover); color: var(--ta-text); }
|
|
259
269
|
.ta-folder-item > .ta-icon:first-child, .ta-folder-chevron { color: var(--ta-muted); }
|
|
@@ -261,7 +271,35 @@ exports.LAYOUT_STYLE = `
|
|
|
261
271
|
.ta-folder-item:hover .ta-folder-chevron { opacity: 1; }
|
|
262
272
|
.ta-folder-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
263
273
|
.ta-folder-note { display: flex; justify-content: center; padding: 28px 8px; color: var(--ta-muted); font-size: 12.5px; }
|
|
264
|
-
.ta-folder-failed { color: var(--ta-red); font-size: 12.5px; }
|
|
274
|
+
.ta-folder-failed { color: var(--ta-red); font-size: 12.5px; overflow-wrap: anywhere; }
|
|
275
|
+
.ta-folder-note { gap: 8px; align-items: center; }
|
|
276
|
+
.ta-folder-step { color: var(--ta-secondary); }
|
|
277
|
+
.ta-folder-unreachable { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 36px 16px; text-align: center; font-size: 13px; color: var(--ta-text); }
|
|
278
|
+
.ta-folder-unreachable span { max-width: 100%; color: var(--ta-muted); font-family: var(--ta-mono); font-size: 12px; overflow-wrap: anywhere; }
|
|
279
|
+
/* The machines of the picker: this one, the hosts of ssh, + another */
|
|
280
|
+
.ta-modal.ta-folder { width: min(640px, 100%); }
|
|
281
|
+
.ta-folder-machines { flex-wrap: nowrap; overflow-x: auto; margin: 0; padding: 0 0 2px; gap: 6px; scrollbar-width: none; }
|
|
282
|
+
.ta-folder-machines::-webkit-scrollbar { display: none; }
|
|
283
|
+
.ta-folder-machines .ta-icon-button { flex: none; width: 28px; height: 28px; border-radius: 14px; }
|
|
284
|
+
.ta-folder-add input { width: 230px; height: 28px; padding: 0 11px; border-radius: 14px; border: 1px solid var(--ta-border-field); background: var(--ta-input); color: var(--ta-text); font-size: 12.5px; outline: none; }
|
|
285
|
+
.ta-folder-add input:focus { border-color: var(--ta-border-focus); }
|
|
286
|
+
.ta-folder-add input[aria-invalid='true'] { border-color: var(--ta-red); }
|
|
287
|
+
.ta-folder-add input { width: 300px; }
|
|
288
|
+
.ta-remote-state { display: inline-flex; align-items: center; gap: 6px; }
|
|
289
|
+
.ta-remote-light { width: 7px; height: 7px; border-radius: 50%; background: var(--ta-border-field); flex: none; }
|
|
290
|
+
.ta-remote-light.ta-on { background: var(--ta-green); }
|
|
291
|
+
.ta-remote-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--ta-green); flex: none; }
|
|
292
|
+
/* The host of a directory of another machine, before its name */
|
|
293
|
+
.ta-host-tag { display: inline-flex; align-items: center; flex: none; max-width: 120px; height: 17px; padding: 0 6px; margin-right: 5px; border-radius: 5px; background: var(--ta-hover-strong); color: var(--ta-secondary); font-size: 11px; font-weight: 500; line-height: 17px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: 1px; }
|
|
294
|
+
.ta-cwd-chip .ta-host-tag { margin: 0 0 0 2px; }
|
|
295
|
+
.ta-cwd-chip .ta-ellipsis { min-width: 0; }
|
|
296
|
+
/* What ssh asks, and the line while a host connects */
|
|
297
|
+
.ta-remote-prompt { width: min(440px, 100%); gap: 12px; }
|
|
298
|
+
.ta-remote-prompt .ta-confirm-title { display: flex; align-items: center; gap: 8px; }
|
|
299
|
+
.ta-remote-message { margin: 0; padding: 8px 10px; border-radius: 8px; background: var(--ta-hover); color: var(--ta-body); font-family: var(--ta-mono); font-size: 12px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 160px; overflow-y: auto; }
|
|
300
|
+
.ta-remote-status { position: fixed; left: 50%; top: calc(12px + env(safe-area-inset-top) + var(--ta-titlebar, 0px)); z-index: 65; transform: translateX(-50%); display: inline-flex; align-items: center; gap: 8px; max-width: calc(100vw - 32px); height: 32px; padding: 0 14px; border-radius: 16px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); color: var(--ta-secondary); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; animation: ta-fade 160ms ease-out; }
|
|
301
|
+
/* The picker says it itself */
|
|
302
|
+
body:has(.ta-folder) .ta-remote-status { display: none; }
|
|
265
303
|
@media (max-width: 860px) {
|
|
266
304
|
.ta-modal-scrim { align-items: flex-end; padding: 0; }
|
|
267
305
|
.ta-modal { max-height: 88dvh; border-radius: 16px 16px 0 0; padding-bottom: calc(14px + env(safe-area-inset-bottom)); animation: ta-up 260ms var(--ta-ease); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/browser/style/layout.ts"],"names":[],"mappings":";;;AAAA,yGAAyG;AAC5F,QAAA,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/browser/style/layout.ts"],"names":[],"mappings":";;;AAAA,yGAAyG;AAC5F,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsZ3B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** The shell: navigation, main column, panel; the double, cards, notices, overlays, sign-in. */
|
|
2
|
-
export declare const SHELL_STYLE = "\n/* Shell: the navigation (rail and chats), the main column, the panel */\n.ta-app { display: flex; height: 100vh; height: 100dvh; background: var(--ta-main); overflow: hidden; }\n.ta-nav { display: flex; flex: none; height: 100%; z-index: 20; }\n.ta-rail { width: 56px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 0 calc(10px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-nav:has(> .ta-sidebar) > .ta-rail { border-right-color: transparent; }\n.ta-rail-logo { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; margin-bottom: 6px; transition: background 150ms; }\n.ta-rail-logo:hover { background: var(--ta-hover); }\n.ta-rail-items { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; overflow-y: auto; scrollbar-width: none; padding: 0 8px; }\n.ta-rail-item { position: relative; width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; color: var(--ta-muted); transition: background 150ms, color 150ms; }\n.ta-rail-item:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-rail-item.ta-active { background: var(--ta-selected); color: var(--ta-text); }\n.ta-rail-status { display: grid; place-items: center; width: 40px; height: 22px; }\n.ta-ok .ta-dot { color: var(--ta-green); }\n.ta-warn .ta-dot { color: var(--ta-yellow); }\n.ta-chats, .ta-side-view { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; min-height: 0; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 8px calc(8px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-chats-head { display: flex; align-items: center; gap: 2px; height: 40px; flex: none; padding: 0 0 0 8px; margin-bottom: 6px; }\n.ta-chats-title { flex: 1; font-size: 14px; font-weight: 600; }\n.ta-panel-cards { display: flex; flex-direction: column; gap: 12px; padding: 12px 12px calc(16px + env(safe-area-inset-bottom)); }\n.ta-side-section { display: flex; align-items: center; gap: 6px; padding: 6px 8px 2px; font-size: 12px; color: var(--ta-muted); }\n.ta-side-scroll { flex: 1; min-height: 0; overflow-y: auto; margin: 0 -4px; padding: 0 4px; }\n.ta-side-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }\n.ta-side-row { position: relative; display: flex; align-items: center; border-radius: 10px; }\n.ta-side-row:hover, .ta-side-row.ta-selected { background: var(--ta-hover); }\n.ta-side-row.ta-selected { background: var(--ta-selected); }\n.ta-side-item { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; transition: background 120ms; }\n.ta-side-list > li > .ta-side-item:hover { background: var(--ta-hover); }\n.ta-side-item-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n.ta-side-item-title { font-size: 13.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-sub { font-size: 12px; color: var(--ta-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-time { align-self: flex-start; font-size: 11.5px; color: var(--ta-muted); font-variant-numeric: tabular-nums; padding-top: 1px; }\n.ta-side-empty { padding: 8px 10px; font-size: 12.5px; color: var(--ta-muted); }\n.ta-close { position: absolute; right: 4px; opacity: 0; width: 26px; height: 26px; }\n.ta-side-row:hover .ta-close, .ta-close:focus-visible { opacity: 1; }\n.ta-task-status { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--ta-raised); color: var(--ta-secondary); }\n.ta-task-status-done { color: var(--ta-green); background: color-mix(in srgb, var(--ta-green) 14%, transparent); }\n.ta-task-status-failed { color: var(--ta-red); background: color-mix(in srgb, var(--ta-red) 14%, transparent); }\n.ta-task-status-stopped { color: var(--ta-muted); }\n.ta-task-status .ta-spinner { width: 12px; height: 12px; }\n.ta-main { position: relative; flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; padding-top: var(--ta-titlebar); background: var(--ta-main); }\n.ta-main-head { display: flex; align-items: center; justify-content: center; gap: 8px; height: 56px; padding: 0 12px; padding-top: env(safe-area-inset-top); flex: none; }\n.ta-main-title { flex: 1; display: flex; flex-direction: column; align-items: center; line-height: 1.3; min-width: 0; font-size: 14px; font-weight: 600; }\n.ta-main-sub { font-size: 11.5px; font-weight: 400; color: var(--ta-muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* The double's chat */\n.ta-chat-scroll { flex: 1; min-height: 0; overflow-y: auto; }\n.ta-chat-col { width: 100%; max-width: calc(var(--ta-col) + 48px); margin: 0 auto; padding: 0 24px; display: flex; flex-direction: column; gap: 16px; }\n.ta-chat-scroll { overflow-anchor: none; }\n.ta-chat-scroll .ta-chat-col { position: relative; padding-top: 12px; padding-bottom: 24px; min-height: 100%; }\n.ta-hero { margin: auto 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 24px 0; animation: ta-in 320ms var(--ta-ease); }\n.ta-hero-center { flex: 1; justify-content: center; }\n.ta-hero h1 { margin: 6px 0 0; font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }\n.ta-hero p { margin: 0; max-width: 440px; text-wrap: balance; color: var(--ta-secondary); font-size: 14px; }\n.ta-hero-steps { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px; color: var(--ta-secondary); font-size: 13px; }\n.ta-hero-step { display: inline-flex; align-items: center; gap: 7px; }\n.ta-hero-step-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 8px; background: color-mix(in srgb, var(--ta-green) 14%, transparent); color: var(--ta-green); }\n.ta-hero-arrow { color: var(--ta-muted); }\n.ta-hero-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 168px)); justify-content: center; gap: 10px; width: 100%; margin-top: 18px; }\n@media (max-width: 560px) { .ta-hero-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } }\n.ta-hero-card { display: flex; flex-direction: column; gap: 8px; padding: 7px 7px 10px; border: 1px solid var(--ta-border-muted); border-radius: 12px; background: var(--ta-card); color: var(--ta-body); font: inherit; font-size: 13px; text-align: center; transition: border-color 140ms, background 140ms, transform 140ms var(--ta-ease); }\n.ta-hero-card:hover { border-color: color-mix(in srgb, var(--ta-green) 55%, var(--ta-border)); background: var(--ta-hover); color: var(--ta-text); }\n.ta-hero-card:hover .ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 26%, transparent); }\n.ta-hero-card:active { transform: scale(.98); }\n.ta-hero-card > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-pic { display: block; width: 100%; height: auto; border-radius: 8px; }\n.ta-pic-frame { fill: var(--ta-raised); stroke: var(--ta-border-muted); stroke-width: 1; }\n.ta-pic-pane { fill: var(--ta-hover); }\n.ta-pic-line { fill: var(--ta-hover-strong); }\n.ta-pic-box { fill: none; stroke: var(--ta-border); stroke-width: 1; }\n.ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 16%, transparent); stroke: color-mix(in srgb, var(--ta-green) 70%, transparent); stroke-width: 1; transition: fill 140ms; }\n.ta-pic-mark { fill: var(--ta-green); }\n.ta-pic-soft { opacity: .45; }\n.ta-pic-dot { fill: var(--ta-hover-strong); }\n.ta-pic-plus { fill: color-mix(in srgb, var(--ta-green) 55%, transparent); }\n.ta-pic-bad { fill: color-mix(in srgb, var(--ta-red) 85%, transparent); }\n.ta-pic-ring { fill: color-mix(in srgb, var(--ta-raised) 60%, transparent); stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-stroke { fill: none; stroke: var(--ta-green); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-thin { stroke: var(--ta-border); stroke-width: 2; }\n.ta-pic-hand, .ta-pic-tick, .ta-pic-cross { fill: none; stroke: var(--ta-raised); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-tick-big { stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-text { fill: var(--ta-green); font-family: var(--ta-mono); font-size: 8px; font-weight: 600; }\n.ta-msg-user { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-msg-bubble { max-width: 78%; padding: 9px 14px; border-radius: 16px 16px 5px 16px; background: var(--ta-user); color: var(--ta-text); white-space: pre-wrap; word-break: break-word; }\n.ta-msg-ta { color: var(--ta-body); line-height: 1.75; display: flex; flex-direction: column; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-row { display: flex; align-items: center; gap: 8px; min-height: 30px; padding: 2px 8px; margin: 0 -8px; border-radius: 8px; border: 0; background: transparent; text-align: left; font-size: 13px; color: var(--ta-secondary); }\n.ta-row-task { width: calc(100% + 16px); transition: background 120ms; animation: ta-in 220ms var(--ta-ease); }\n.ta-row-task:hover { background: var(--ta-hover); }\n.ta-row-task .ta-task-status { width: 22px; height: 22px; }\n.ta-row-title { color: var(--ta-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.ta-row-meta, .ta-row-label { color: var(--ta-muted); font-size: 12.5px; flex: none; }\n.ta-row-chevron { margin-left: auto; color: var(--ta-muted); }\n.ta-row-quiet { color: var(--ta-muted); }\n.ta-row-quiet .ta-row-title { font-weight: 400; color: var(--ta-secondary); }\n.ta-composer-area { flex: none; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }\n.ta-composer-area .ta-chat-col { gap: 8px; }\n.ta-attention { display: flex; flex-direction: column; gap: 4px; animation: ta-in 220ms var(--ta-ease); }\n.ta-attention-source { font-size: 12px; color: var(--ta-muted); padding-left: 4px; }\n.ta-mic { height: 30px; min-width: 30px; flex: none; display: inline-grid; place-items: center; padding: 0 8px; border: 0; border-radius: 15px; background: transparent; color: var(--ta-secondary); transition: background 150ms, color 150ms, min-width 200ms var(--ta-ease); }\n.ta-mic:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-mic.ta-on { min-width: 48px; background: var(--ta-hover-strong); color: var(--ta-text); }\n.ta-wave { display: inline-flex; align-items: center; gap: 2.5px; height: 14px; }\n.ta-wave i { width: 2.5px; height: 100%; border-radius: 2px; background: currentColor; animation: ta-wave 0.9s ease-in-out infinite; }\n.ta-wave i:nth-child(2) { animation-delay: -0.7s; }\n.ta-wave i:nth-child(3) { animation-delay: -0.45s; }\n.ta-wave i:nth-child(4) { animation-delay: -0.2s; }\n.ta-send { width: 30px; height: 30px; flex: none; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--ta-brand); color: var(--ta-brand-text); transition: opacity 120ms, transform 120ms; }\n.ta-send:hover:not(:disabled) { opacity: 0.88; }\n.ta-send:active:not(:disabled) { transform: scale(0.94); }\n.ta-send:disabled { opacity: 0.25; cursor: default; }\n.ta-send-stop { background: var(--ta-brand); }\n.ta-avatar { flex: none; display: block; overflow: visible; }\n.ta-dino-lid { transform-box: fill-box; transform-origin: top; transform: scaleY(0); animation: ta-dino-blink 5s ease-in-out infinite; }\n.ta-dino-badge { animation: ta-dino-pop 0.35s var(--ta-ease); }\n.ta-dino-dot { animation: ta-pulse 1.2s ease-in-out infinite; }\n.ta-dino-dot:nth-of-type(2) { animation-delay: 0.2s; }\n.ta-dino-dot:nth-of-type(3) { animation-delay: 0.4s; }\n.ta-dino-bubble, .ta-dino-z, .ta-dino-wave { animation: ta-pulse 2.4s ease-in-out infinite; }\n.ta-dino-bubble:nth-of-type(2), .ta-dino-z:nth-of-type(2), .ta-dino-wave:nth-of-type(2) { animation-delay: 0.4s; }\n.ta-dino-bubble:nth-of-type(3) { animation-delay: 0.8s; }\n\n/* Cards of web extensions */\n.ta-card-widget { min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); }\n.ta-card-widget h2 { margin: 0; }\n.ta-card-widget button { white-space: nowrap; }\n\n/* Notices: cards in the bottom right, the newest nearest the corner; on phones from the top. */\n.ta-toasts { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 70; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; width: min(360px, calc(100vw - 32px)); pointer-events: none; }\n.ta-toast { pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; padding: 11px 6px 11px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 13px; line-height: 1.5; animation: ta-toast-in 220ms var(--ta-ease); }\n.ta-toast.ta-leaving { animation: ta-toast-out 160ms ease-in forwards; }\n.ta-toast > .ta-level-icon { margin-top: 2px; }\n.ta-toast-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-top: 0; }\n.ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }\n.ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-toast-action:hover { background: var(--ta-hover); }\n.ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }\n.ta-toast .ta-toast-close svg { width: 14px; height: 14px; }\n@keyframes ta-toast-in { from { transform: translateY(8px) scale(0.98); opacity: 0; } }\n@keyframes ta-toast-out { to { transform: translateX(12px); opacity: 0; } }\n\n/* The connection to ta serve, over the top of the main area while it is down */\n.ta-connection { position: absolute; top: calc(66px + env(safe-area-inset-top) + var(--ta-titlebar)); left: 50%; transform: translateX(-50%); z-index: 15; display: flex; align-items: center; gap: 8px; max-width: calc(100% - 24px); height: 34px; padding: 0 6px 0 12px; border-radius: 17px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 12.5px; color: var(--ta-body); white-space: nowrap; animation: ta-drop 200ms var(--ta-ease); --ta-level: var(--ta-yellow); }\n.ta-connection-back { padding-right: 12px; --ta-level: var(--ta-green); }\n.ta-connection-text { overflow: hidden; text-overflow: ellipsis; min-width: 0; }\n.ta-connection-when { color: var(--ta-muted); font-variant-numeric: tabular-nums; }\n.ta-connection-retry { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 12px; border: 0; background: var(--ta-chip); color: var(--ta-text); font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-connection-retry:hover { background: var(--ta-hover-strong); }\n.ta-connection:not(.ta-connection-back) .ta-level-icon { animation: ta-pulse 2s ease-in-out infinite; }\n@keyframes ta-drop { from { transform: translate(-50%, -8px); opacity: 0; } }\n\n/* A question before going ahead */\n.ta-modal.ta-confirm { width: min(400px, 100%); gap: 6px; padding: 18px 18px 16px; }\n.ta-confirm-title { font-size: 15px; font-weight: 600; }\n.ta-confirm-message { margin: 0; color: var(--ta-secondary); font-size: 13px; line-height: 1.55; white-space: pre-wrap; }\n.ta-confirm .ta-dialog-actions { margin-top: 12px; }\n.ta-modal.ta-ask { width: min(460px, 100%); gap: 12px; }\n.ta-ask .ta-dialog-actions { margin-top: 2px; }\ntextarea.ta-ask-text { height: auto; min-height: 180px; max-height: 50vh; padding: 8px 10px; font-size: 13px; line-height: 1.6; resize: vertical; }\n.ta-button-danger { background: var(--ta-red); border-color: var(--ta-red); color: #fff; }\n.ta-button-danger:hover:not(:disabled) { background: var(--ta-red); opacity: 0.9; }\n\n/* Built-in pages */\n.ta-assistant { flex: 1; min-height: 0; display: flex; }\n.ta-assistant-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-chat { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n.ta-head-spacer { width: 32px; flex: none; }\n.ta-tasks-button .ta-badge { background: var(--ta-accent); }\n.ta-running { display: flex; flex-direction: column; gap: 2px; }\n.ta-msg-ta > .ta-row-task, .ta-running > .ta-row-task, .ta-chat-col > .ta-row-task { width: 100%; max-width: 560px; margin: 0; min-height: 40px; padding: 8px 12px; gap: 10px; border: 1px solid var(--ta-border); border-radius: 12px; background: var(--ta-card); }\n.ta-row-task .ta-row-title { font-size: 13.5px; }\n.ta-row-task .ta-row-chevron { flex: none; }\n.ta-row-activity { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ta-muted); font-size: 12.5px; }\n.ta-row-activity + .ta-row-meta { font-variant-numeric: tabular-nums; }\n.ta-task-group { display: flex; flex-direction: column; gap: 2px; }\n.ta-task-item { align-items: flex-start; }\n.ta-task-item .ta-status { height: 20px; }\n.ta-assistant-tasks { padding: 8px 10px 12px; display: flex; flex-direction: column; gap: 10px; }\n.ta-assistant-task { display: flex; flex-direction: column; height: 100%; min-height: 0; }\n.ta-assistant-task-bar { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px 0 14px; border-bottom: 1px solid var(--ta-border-muted); flex: none; }\n.ta-assistant-task-bar .ta-task-status { width: 22px; height: 22px; }\n.ta-assistant-task-title { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-assistant-task .ta-session { min-height: 0; flex: 1; }\n.ta-assistant-task .ta-session-header { min-height: 48px; }\n.ta-assistant-task .ta-session-title { visibility: hidden; }\n\n/* Overlays */\n.ta-overlay-close { position: absolute; inset: 0; border: 0; padding: 0; background: transparent; cursor: default; }\n.ta-scrim { display: none; }\n.ta-hud { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ta-muted); }\n.ta-setting-section { display: flex; flex-direction: column; gap: 8px; }\n.ta-setting-section h2 { margin: 0; padding: 0 4px; }\n.ta-setting-card { border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); overflow: hidden; }\n.ta-setting-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; min-height: 48px; }\n.ta-setting-row + .ta-setting-row { border-top: 1px solid var(--ta-border-muted); }\n.ta-setting-row.ta-stacked { flex-direction: column; align-items: stretch; gap: 8px; }\n.ta-setting-row.ta-stacked .ta-setting-control { width: 100%; }\n.ta-setting-row.ta-stacked .ta-segmented { flex: 1; }\n.ta-setting-text { min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.ta-setting-label { font-size: 13px; font-weight: 500; }\n.ta-setting-description { font-size: 12px; color: var(--ta-muted); overflow-wrap: anywhere; }\n.ta-trusted-add { display: flex; gap: 8px; width: 100%; }\n.ta-trusted-add .ta-input { height: 32px; flex: 1; min-width: 0; }\n.ta-setting-control { display: flex; align-items: center; justify-content: flex-end; flex: none; }\n.ta-segmented { margin: 0; min-width: 0; border: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; padding: 3px; border-radius: 10px; background: var(--ta-raised); }\n.ta-segmented button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 28px; border: 0; border-radius: 7px; background: transparent; color: var(--ta-secondary); font-size: 12.5px; font-weight: 500; transition: background 120ms, color 120ms; }\n.ta-segmented button:hover { color: var(--ta-text); }\n.ta-segmented .ta-on { background: var(--ta-card); color: var(--ta-text); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px var(--ta-border); }\n.ta-switch { appearance: none; -webkit-appearance: none; width: 36px; height: 20px; flex: none; border-radius: 10px; background: var(--ta-hover-strong); position: relative; transition: background 160ms; margin: 0; cursor: pointer; }\n.ta-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); transition: transform 180ms var(--ta-ease); }\n.ta-switch:checked { background: var(--ta-green); }\n.ta-switch:checked::after { transform: translateX(16px); }\n\n/* Sign in */\n.ta-signin { min-height: 100vh; min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: var(--ta-main); }\n/*\n * The installed app with its title bar hidden (window controls overlay): the page draws up to the top of\n * the window, and the bar is the colour of the side columns, as theme-color is (useTitlebarColor). Each\n * column starts lower by the height of the bar, which is left empty for the window's buttons, and is\n * where the window is dragged.\n */\n.ta-titlebar { display: none; position: fixed; z-index: 25; left: env(titlebar-area-x, 0); top: env(titlebar-area-y, 0); width: env(titlebar-area-width, 100%); height: var(--ta-titlebar); app-region: drag; -webkit-app-region: drag; }\n@media (display-mode: window-controls-overlay) {\n :root { --ta-titlebar: env(titlebar-area-height, 0px); }\n .ta-titlebar { display: block; }\n /* Above the conversation the bar keeps the colour of the side columns, under the browser's buttons too. */\n .ta-main { background: linear-gradient(var(--ta-side) var(--ta-titlebar), var(--ta-main) 0); }\n}\n.ta-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }\n.ta-card h1 { margin: 4px 0 0; font-size: 20px; font-weight: 650; }\n.ta-card p { margin: 0 0 8px; font-size: 13px; color: var(--ta-secondary); }\n\n";
|
|
2
|
+
export declare const SHELL_STYLE = "\n/* Shell: the navigation (rail and chats), the main column, the panel */\n.ta-app { display: flex; height: 100vh; height: 100dvh; background: var(--ta-main); overflow: hidden; }\n.ta-nav { display: flex; flex: none; height: 100%; z-index: 20; }\n.ta-rail { width: 56px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 0 calc(10px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-nav:has(> .ta-sidebar) > .ta-rail { border-right-color: transparent; }\n.ta-rail-logo { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; margin-bottom: 6px; transition: background 150ms; }\n.ta-rail-logo:hover { background: var(--ta-hover); }\n.ta-rail-items { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; overflow-y: auto; scrollbar-width: none; padding: 0 8px; }\n.ta-rail-item { position: relative; width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; color: var(--ta-muted); transition: background 150ms, color 150ms; }\n.ta-rail-item:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-rail-item.ta-active { background: var(--ta-selected); color: var(--ta-text); }\n.ta-rail-status { display: grid; place-items: center; width: 40px; height: 22px; }\n.ta-ok .ta-dot { color: var(--ta-green); }\n.ta-warn .ta-dot { color: var(--ta-yellow); }\n.ta-chats, .ta-side-view { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; min-height: 0; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 8px calc(8px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-chats-head { display: flex; align-items: center; gap: 2px; height: 40px; flex: none; padding: 0 0 0 8px; margin-bottom: 6px; }\n.ta-chats-title { flex: 1; font-size: 14px; font-weight: 600; }\n.ta-panel-cards { display: flex; flex-direction: column; gap: 12px; padding: 12px 12px calc(16px + env(safe-area-inset-bottom)); }\n.ta-side-section { display: flex; align-items: center; gap: 6px; padding: 6px 8px 2px; font-size: 12px; color: var(--ta-muted); }\n.ta-side-scroll { flex: 1; min-height: 0; overflow-y: auto; margin: 0 -4px; padding: 0 4px; }\n.ta-side-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }\n.ta-side-row { position: relative; display: flex; align-items: center; border-radius: 10px; }\n.ta-side-row:hover, .ta-side-row.ta-selected { background: var(--ta-hover); }\n.ta-side-row.ta-selected { background: var(--ta-selected); }\n.ta-side-item { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; transition: background 120ms; }\n.ta-side-list > li > .ta-side-item:hover { background: var(--ta-hover); }\n.ta-side-item-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n.ta-side-item-title { font-size: 13.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-sub { font-size: 12px; color: var(--ta-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-time { align-self: flex-start; font-size: 11.5px; color: var(--ta-muted); font-variant-numeric: tabular-nums; padding-top: 1px; }\n.ta-side-empty { padding: 8px 10px; font-size: 12.5px; color: var(--ta-muted); }\n.ta-close { position: absolute; right: 4px; opacity: 0; width: 26px; height: 26px; }\n.ta-side-row:hover .ta-close, .ta-close:focus-visible { opacity: 1; }\n.ta-task-status { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--ta-raised); color: var(--ta-secondary); }\n.ta-task-status-done { color: var(--ta-green); background: color-mix(in srgb, var(--ta-green) 14%, transparent); }\n.ta-task-status-failed { color: var(--ta-red); background: color-mix(in srgb, var(--ta-red) 14%, transparent); }\n.ta-task-status-stopped { color: var(--ta-muted); }\n.ta-task-status .ta-spinner { width: 12px; height: 12px; }\n.ta-main { position: relative; flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; padding-top: var(--ta-titlebar); background: var(--ta-main); }\n.ta-main-head { display: flex; align-items: center; justify-content: center; gap: 8px; height: 56px; padding: 0 12px; padding-top: env(safe-area-inset-top); flex: none; }\n.ta-main-title { flex: 1; display: flex; flex-direction: column; align-items: center; line-height: 1.3; min-width: 0; font-size: 14px; font-weight: 600; }\n.ta-main-sub { font-size: 11.5px; font-weight: 400; color: var(--ta-muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* The double's chat */\n.ta-chat-scroll { flex: 1; min-height: 0; overflow-y: auto; }\n.ta-chat-col { width: 100%; max-width: calc(var(--ta-col) + 48px); margin: 0 auto; padding: 0 24px; display: flex; flex-direction: column; gap: 16px; }\n.ta-chat-scroll { overflow-anchor: none; }\n.ta-chat-scroll .ta-chat-col { position: relative; padding-top: 12px; padding-bottom: 24px; min-height: 100%; }\n.ta-hero { margin: auto 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 24px 0; animation: ta-in 320ms var(--ta-ease); }\n.ta-hero-center { flex: 1; justify-content: center; }\n.ta-hero h1 { margin: 6px 0 0; font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }\n.ta-hero p { margin: 0; max-width: 440px; text-wrap: balance; color: var(--ta-secondary); font-size: 14px; }\n.ta-hero-steps { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px; color: var(--ta-secondary); font-size: 13px; }\n.ta-hero-step { display: inline-flex; align-items: center; gap: 7px; }\n.ta-hero-step-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 8px; background: color-mix(in srgb, var(--ta-green) 14%, transparent); color: var(--ta-green); }\n.ta-hero-arrow { color: var(--ta-muted); }\n.ta-hero-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 168px)); justify-content: center; gap: 10px; width: 100%; margin-top: 18px; }\n@media (max-width: 560px) { .ta-hero-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } }\n.ta-hero-card { display: flex; flex-direction: column; gap: 8px; padding: 7px 7px 10px; border: 1px solid var(--ta-border-muted); border-radius: 12px; background: var(--ta-card); color: var(--ta-body); font: inherit; font-size: 13px; text-align: center; transition: border-color 140ms, background 140ms, transform 140ms var(--ta-ease); }\n.ta-hero-card:hover { border-color: color-mix(in srgb, var(--ta-green) 55%, var(--ta-border)); background: var(--ta-hover); color: var(--ta-text); }\n.ta-hero-card:hover .ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 26%, transparent); }\n.ta-hero-card:active { transform: scale(.98); }\n.ta-hero-card > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-pic { display: block; width: 100%; height: auto; border-radius: 8px; }\n.ta-pic-frame { fill: var(--ta-raised); stroke: var(--ta-border-muted); stroke-width: 1; }\n.ta-pic-pane { fill: var(--ta-hover); }\n.ta-pic-line { fill: var(--ta-hover-strong); }\n.ta-pic-box { fill: none; stroke: var(--ta-border); stroke-width: 1; }\n.ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 16%, transparent); stroke: color-mix(in srgb, var(--ta-green) 70%, transparent); stroke-width: 1; transition: fill 140ms; }\n.ta-pic-mark { fill: var(--ta-green); }\n.ta-pic-soft { opacity: .45; }\n.ta-pic-dot { fill: var(--ta-hover-strong); }\n.ta-pic-plus { fill: color-mix(in srgb, var(--ta-green) 55%, transparent); }\n.ta-pic-bad { fill: color-mix(in srgb, var(--ta-red) 85%, transparent); }\n.ta-pic-ring { fill: color-mix(in srgb, var(--ta-raised) 60%, transparent); stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-stroke { fill: none; stroke: var(--ta-green); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-thin { stroke: var(--ta-border); stroke-width: 2; }\n.ta-pic-hand, .ta-pic-tick, .ta-pic-cross { fill: none; stroke: var(--ta-raised); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-tick-big { stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-text { fill: var(--ta-green); font-family: var(--ta-mono); font-size: 8px; font-weight: 600; }\n.ta-msg-user { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-msg-bubble { max-width: 78%; padding: 9px 14px; border-radius: 16px 16px 5px 16px; background: var(--ta-user); color: var(--ta-text); white-space: pre-wrap; word-break: break-word; }\n.ta-msg-ta { color: var(--ta-body); line-height: 1.75; display: flex; flex-direction: column; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-row { display: flex; align-items: center; gap: 8px; min-height: 30px; padding: 2px 8px; margin: 0 -8px; border-radius: 8px; border: 0; background: transparent; text-align: left; font-size: 13px; color: var(--ta-secondary); }\n.ta-row-task { width: calc(100% + 16px); transition: background 120ms; animation: ta-in 220ms var(--ta-ease); }\n.ta-row-task:hover { background: var(--ta-hover); }\n.ta-row-task .ta-task-status { width: 22px; height: 22px; }\n.ta-row-title { color: var(--ta-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.ta-row-meta, .ta-row-label { color: var(--ta-muted); font-size: 12.5px; flex: none; }\n.ta-row-chevron { margin-left: auto; color: var(--ta-muted); }\n.ta-row-quiet { color: var(--ta-muted); }\n.ta-row-quiet .ta-row-title { font-weight: 400; color: var(--ta-secondary); }\n.ta-composer-area { flex: none; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }\n.ta-composer-area .ta-chat-col { gap: 8px; }\n.ta-attention { display: flex; flex-direction: column; gap: 4px; animation: ta-in 220ms var(--ta-ease); }\n.ta-attention-source { font-size: 12px; color: var(--ta-muted); padding-left: 4px; }\n.ta-mic { height: 30px; min-width: 30px; flex: none; display: inline-grid; place-items: center; padding: 0 8px; border: 0; border-radius: 15px; background: transparent; color: var(--ta-secondary); transition: background 150ms, color 150ms, min-width 200ms var(--ta-ease); }\n.ta-mic:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-mic.ta-on { min-width: 48px; background: var(--ta-hover-strong); color: var(--ta-text); }\n.ta-wave { display: inline-flex; align-items: center; gap: 2.5px; height: 14px; }\n.ta-wave i { width: 2.5px; height: 100%; border-radius: 2px; background: currentColor; animation: ta-wave 0.9s ease-in-out infinite; }\n.ta-wave i:nth-child(2) { animation-delay: -0.7s; }\n.ta-wave i:nth-child(3) { animation-delay: -0.45s; }\n.ta-wave i:nth-child(4) { animation-delay: -0.2s; }\n.ta-send { width: 30px; height: 30px; flex: none; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--ta-brand); color: var(--ta-brand-text); transition: opacity 120ms, transform 120ms; }\n.ta-send:hover:not(:disabled) { opacity: 0.88; }\n.ta-send:active:not(:disabled) { transform: scale(0.94); }\n.ta-send:disabled { opacity: 0.25; cursor: default; }\n.ta-send-stop { background: var(--ta-brand); }\n.ta-avatar { flex: none; display: block; overflow: visible; }\n.ta-dino-lid { transform-box: fill-box; transform-origin: top; transform: scaleY(0); animation: ta-dino-blink 5s ease-in-out infinite; }\n.ta-dino-badge { animation: ta-dino-pop 0.35s var(--ta-ease); }\n.ta-dino-dot { animation: ta-pulse 1.2s ease-in-out infinite; }\n.ta-dino-dot:nth-of-type(2) { animation-delay: 0.2s; }\n.ta-dino-dot:nth-of-type(3) { animation-delay: 0.4s; }\n.ta-dino-bubble, .ta-dino-z, .ta-dino-wave { animation: ta-pulse 2.4s ease-in-out infinite; }\n.ta-dino-bubble:nth-of-type(2), .ta-dino-z:nth-of-type(2), .ta-dino-wave:nth-of-type(2) { animation-delay: 0.4s; }\n.ta-dino-bubble:nth-of-type(3) { animation-delay: 0.8s; }\n\n/* Cards of web extensions */\n.ta-card-widget { min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); }\n.ta-card-widget h2 { margin: 0; }\n.ta-card-widget button { white-space: nowrap; }\n\n/* Notices: cards in the bottom right, the newest nearest the corner; on phones from the top. */\n.ta-toasts { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 70; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; width: min(360px, calc(100vw - 32px)); pointer-events: none; }\n.ta-toast { pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; padding: 11px 6px 11px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 13px; line-height: 1.5; animation: ta-toast-in 220ms var(--ta-ease); }\n.ta-toast.ta-leaving { animation: ta-toast-out 160ms ease-in forwards; }\n.ta-toast > .ta-level-icon { margin-top: 2px; }\n.ta-toast-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-top: 0; }\n.ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }\n.ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-art { align-self: flex-start; width: 200px; height: auto; margin-top: 8px; border-radius: 10px; }\n.ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-toast-action:hover { background: var(--ta-hover); }\n.ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }\n.ta-toast .ta-toast-close svg { width: 14px; height: 14px; }\n@keyframes ta-toast-in { from { transform: translateY(8px) scale(0.98); opacity: 0; } }\n@keyframes ta-toast-out { to { transform: translateX(12px); opacity: 0; } }\n\n/* The connection to ta serve, over the top of the main area while it is down */\n.ta-connection { position: absolute; top: calc(66px + env(safe-area-inset-top) + var(--ta-titlebar)); left: 50%; transform: translateX(-50%); z-index: 15; display: flex; align-items: center; gap: 8px; max-width: calc(100% - 24px); height: 34px; padding: 0 6px 0 12px; border-radius: 17px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 12.5px; color: var(--ta-body); white-space: nowrap; animation: ta-drop 200ms var(--ta-ease); --ta-level: var(--ta-yellow); }\n.ta-connection-back { padding-right: 12px; --ta-level: var(--ta-green); }\n.ta-connection-text { overflow: hidden; text-overflow: ellipsis; min-width: 0; }\n.ta-connection-when { color: var(--ta-muted); font-variant-numeric: tabular-nums; }\n.ta-connection-retry { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 12px; border: 0; background: var(--ta-chip); color: var(--ta-text); font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-connection-retry:hover { background: var(--ta-hover-strong); }\n.ta-connection:not(.ta-connection-back) .ta-level-icon { animation: ta-pulse 2s ease-in-out infinite; }\n@keyframes ta-drop { from { transform: translate(-50%, -8px); opacity: 0; } }\n\n/* A question before going ahead */\n.ta-modal.ta-confirm { width: min(400px, 100%); gap: 6px; padding: 18px 18px 16px; }\n.ta-confirm-title { font-size: 15px; font-weight: 600; }\n.ta-confirm-message { margin: 0; color: var(--ta-secondary); font-size: 13px; line-height: 1.55; white-space: pre-wrap; }\n.ta-confirm .ta-dialog-actions { margin-top: 12px; }\n.ta-modal.ta-ask { width: min(460px, 100%); gap: 12px; }\n.ta-ask .ta-dialog-actions { margin-top: 2px; }\ntextarea.ta-ask-text { height: auto; min-height: 180px; max-height: 50vh; padding: 8px 10px; font-size: 13px; line-height: 1.6; resize: vertical; }\n.ta-button-danger { background: var(--ta-red); border-color: var(--ta-red); color: #fff; }\n.ta-button-danger:hover:not(:disabled) { background: var(--ta-red); opacity: 0.9; }\n\n/* Built-in pages */\n.ta-assistant { flex: 1; min-height: 0; display: flex; }\n.ta-assistant-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-chat { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n.ta-head-spacer { width: 32px; flex: none; }\n.ta-tasks-button .ta-badge { background: var(--ta-accent); }\n.ta-running { display: flex; flex-direction: column; gap: 2px; }\n.ta-msg-ta > .ta-row-task, .ta-running > .ta-row-task, .ta-chat-col > .ta-row-task { width: 100%; max-width: 560px; margin: 0; min-height: 40px; padding: 8px 12px; gap: 10px; border: 1px solid var(--ta-border); border-radius: 12px; background: var(--ta-card); }\n.ta-row-task .ta-row-title { font-size: 13.5px; }\n.ta-row-task .ta-row-chevron { flex: none; }\n.ta-row-activity { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ta-muted); font-size: 12.5px; }\n.ta-row-activity + .ta-row-meta { font-variant-numeric: tabular-nums; }\n.ta-task-group { display: flex; flex-direction: column; gap: 2px; }\n.ta-task-item { align-items: flex-start; }\n.ta-task-item .ta-status { height: 20px; }\n.ta-assistant-tasks { padding: 8px 10px 12px; display: flex; flex-direction: column; gap: 10px; }\n.ta-assistant-task { display: flex; flex-direction: column; height: 100%; min-height: 0; }\n.ta-assistant-task-bar { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px 0 14px; border-bottom: 1px solid var(--ta-border-muted); flex: none; }\n.ta-assistant-task-bar .ta-task-status { width: 22px; height: 22px; }\n.ta-assistant-task-title { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-assistant-task .ta-session { min-height: 0; flex: 1; }\n.ta-assistant-task .ta-session-header { min-height: 48px; }\n.ta-assistant-task .ta-session-title { visibility: hidden; }\n\n/* Overlays */\n.ta-overlay-close { position: absolute; inset: 0; border: 0; padding: 0; background: transparent; cursor: default; }\n.ta-scrim { display: none; }\n.ta-hud { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ta-muted); }\n.ta-setting-section { display: flex; flex-direction: column; gap: 8px; }\n.ta-setting-section h2 { margin: 0; padding: 0 4px; }\n.ta-setting-card { border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); overflow: hidden; }\n.ta-setting-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; min-height: 48px; }\n.ta-setting-row + .ta-setting-row { border-top: 1px solid var(--ta-border-muted); }\n.ta-setting-row.ta-stacked { flex-direction: column; align-items: stretch; gap: 8px; }\n.ta-setting-row.ta-stacked .ta-setting-control { width: 100%; }\n.ta-setting-row.ta-stacked .ta-segmented { flex: 1; }\n.ta-setting-text { min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.ta-setting-label { font-size: 13px; font-weight: 500; }\n.ta-setting-description { font-size: 12px; color: var(--ta-muted); overflow-wrap: anywhere; }\n.ta-trusted-add { display: flex; gap: 8px; width: 100%; }\n.ta-trusted-add .ta-input { height: 32px; flex: 1; min-width: 0; }\n.ta-setting-control { display: flex; align-items: center; justify-content: flex-end; flex: none; }\n.ta-segmented { margin: 0; min-width: 0; border: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; padding: 3px; border-radius: 10px; background: var(--ta-raised); }\n.ta-segmented button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 28px; border: 0; border-radius: 7px; background: transparent; color: var(--ta-secondary); font-size: 12.5px; font-weight: 500; transition: background 120ms, color 120ms; }\n.ta-segmented button:hover { color: var(--ta-text); }\n.ta-segmented .ta-on { background: var(--ta-card); color: var(--ta-text); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px var(--ta-border); }\n.ta-switch { appearance: none; -webkit-appearance: none; width: 36px; height: 20px; flex: none; border-radius: 10px; background: var(--ta-hover-strong); position: relative; transition: background 160ms; margin: 0; cursor: pointer; }\n.ta-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); transition: transform 180ms var(--ta-ease); }\n.ta-switch:checked { background: var(--ta-green); }\n.ta-switch:checked::after { transform: translateX(16px); }\n\n/* Sign in */\n.ta-signin { min-height: 100vh; min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: var(--ta-main); }\n/*\n * The installed app with its title bar hidden (window controls overlay): the page draws up to the top of\n * the window, and the bar is the colour of the side columns, as theme-color is (useTitlebarColor). Each\n * column starts lower by the height of the bar, which is left empty for the window's buttons, and is\n * where the window is dragged.\n */\n.ta-titlebar { display: none; position: fixed; z-index: 25; left: env(titlebar-area-x, 0); top: env(titlebar-area-y, 0); width: env(titlebar-area-width, 100%); height: var(--ta-titlebar); app-region: drag; -webkit-app-region: drag; }\n@media (display-mode: window-controls-overlay) {\n :root { --ta-titlebar: env(titlebar-area-height, 0px); }\n .ta-titlebar { display: block; }\n /* Above the conversation the bar keeps the colour of the side columns, under the browser's buttons too. */\n .ta-main { background: linear-gradient(var(--ta-side) var(--ta-titlebar), var(--ta-main) 0); }\n}\n.ta-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }\n.ta-card h1 { margin: 4px 0 0; font-size: 20px; font-weight: 650; }\n.ta-card p { margin: 0 0 8px; font-size: 13px; color: var(--ta-secondary); }\n\n";
|
|
3
3
|
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,WAAW,0+sBA0OvB,CAAC"}
|
|
@@ -136,6 +136,7 @@ exports.SHELL_STYLE = `
|
|
|
136
136
|
.ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }
|
|
137
137
|
.ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }
|
|
138
138
|
.ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }
|
|
139
|
+
.ta-toast-art { align-self: flex-start; width: 200px; height: auto; margin-top: 8px; border-radius: 10px; }
|
|
139
140
|
.ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }
|
|
140
141
|
.ta-toast-action:hover { background: var(--ta-hover); }
|
|
141
142
|
.ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":";;;AAAA,gGAAgG;AACnF,QAAA,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":";;;AAAA,gGAAgG;AACnF,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0O1B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xterm.js's WebGL renderer sets the font of its canvases as `${italic} ${weight} ${size}px ${family}`,
|
|
3
|
+
* which starts with a space when the text is not italic. Chromium 156 (Electron 45, the desktop app)
|
|
4
|
+
* rejects a font with leading spaces and keeps `10px sans-serif`: the glyphs come out tiny in cells of
|
|
5
|
+
* the right size. Setting `font` without the leading spaces makes it the font xterm.js meant; a font
|
|
6
|
+
* that was valid is unchanged. Remove when @xterm/addon-webgl writes `normal` there.
|
|
7
|
+
*/
|
|
8
|
+
export declare namespace CanvasFontFix {
|
|
9
|
+
function install(prototypes?: readonly (object | undefined)[]): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=canvas-font.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-font.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,OAAO,CAAC,UAAU,GAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAe,GAAG,IAAI,CAgBtF;CAKJ"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CanvasFontFix = void 0;
|
|
4
|
+
const INSTALLED = Symbol.for('ta.canvasFontTrim');
|
|
5
|
+
/**
|
|
6
|
+
* xterm.js's WebGL renderer sets the font of its canvases as `${italic} ${weight} ${size}px ${family}`,
|
|
7
|
+
* which starts with a space when the text is not italic. Chromium 156 (Electron 45, the desktop app)
|
|
8
|
+
* rejects a font with leading spaces and keeps `10px sans-serif`: the glyphs come out tiny in cells of
|
|
9
|
+
* the right size. Setting `font` without the leading spaces makes it the font xterm.js meant; a font
|
|
10
|
+
* that was valid is unchanged. Remove when @xterm/addon-webgl writes `normal` there.
|
|
11
|
+
*/
|
|
12
|
+
var CanvasFontFix;
|
|
13
|
+
(function (CanvasFontFix) {
|
|
14
|
+
function install(prototypes = defaults()) {
|
|
15
|
+
for (const prototype of prototypes) {
|
|
16
|
+
const target = prototype;
|
|
17
|
+
const font = target && Object.getOwnPropertyDescriptor(target, 'font');
|
|
18
|
+
if (!target || !(font === null || font === void 0 ? void 0 : font.set) || target[INSTALLED]) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const set = font.set;
|
|
22
|
+
Object.defineProperty(target, 'font', {
|
|
23
|
+
...font,
|
|
24
|
+
set(value) {
|
|
25
|
+
set.call(this, typeof value === 'string' ? value.trimStart() : value);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(target, INSTALLED, { value: true });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
CanvasFontFix.install = install;
|
|
32
|
+
function defaults() {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
return [(_a = globalThis.CanvasRenderingContext2D) === null || _a === void 0 ? void 0 : _a.prototype, (_b = globalThis.OffscreenCanvasRenderingContext2D) === null || _b === void 0 ? void 0 : _b.prototype];
|
|
35
|
+
}
|
|
36
|
+
})(CanvasFontFix || (exports.CanvasFontFix = CanvasFontFix = {}));
|
|
37
|
+
//# sourceMappingURL=canvas-font.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-font.js","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAElD;;;;;;GAMG;AACH,IAAiB,aAAa,CAsB7B;AAtBD,WAAiB,aAAa;IAC1B,SAAgB,OAAO,CAAC,UAAU,GAAoC,QAAQ,EAAE;QAC5E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,SAAqD,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACb,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;gBAClC,GAAG,IAAI;gBACP,GAAG,CAAe,KAAc;oBAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1E,CAAC;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAhBe,cAAA,OAAO,UAgBtB,CAAA;IAED,SAAS,QAAQ;;QACb,OAAO,CAAC,MAAA,UAAU,CAAC,wBAAwB,0CAAE,SAAS,EAAE,MAAA,UAAU,CAAC,iCAAiC,0CAAE,SAAS,CAAC,CAAC;IACrH,CAAC;AACL,CAAC,EAtBgB,aAAa,aAAb,aAAa,GAAb,aAAa,QAsB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-font.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bun_test_1 = require("bun:test");
|
|
4
|
+
const canvas_font_1 = require("./canvas-font");
|
|
5
|
+
/** A context that, as Chromium 156, keeps its font when the new one starts with a space. */
|
|
6
|
+
class StrictContext {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.value = '10px sans-serif';
|
|
9
|
+
}
|
|
10
|
+
get font() {
|
|
11
|
+
return this.value;
|
|
12
|
+
}
|
|
13
|
+
set font(font) {
|
|
14
|
+
if (!/^\s/.test(font)) {
|
|
15
|
+
this.value = font.replace(/^(normal )+/, '');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
(0, bun_test_1.describe)('CanvasFontFix', () => {
|
|
20
|
+
(0, bun_test_1.it)('sets the font xterm.js meant, and leaves a valid one as it is', () => {
|
|
21
|
+
const context = new StrictContext();
|
|
22
|
+
context.font = ' normal 24px Menlo';
|
|
23
|
+
(0, bun_test_1.expect)(context.font).toBe('10px sans-serif');
|
|
24
|
+
canvas_font_1.CanvasFontFix.install([StrictContext.prototype, undefined]);
|
|
25
|
+
canvas_font_1.CanvasFontFix.install([StrictContext.prototype]);
|
|
26
|
+
context.font = ' normal 24px Menlo';
|
|
27
|
+
(0, bun_test_1.expect)(context.font).toBe('24px Menlo');
|
|
28
|
+
context.font = 'italic bold 12px monospace';
|
|
29
|
+
(0, bun_test_1.expect)(context.font).toBe('italic bold 12px monospace');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=canvas-font.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-font.spec.js","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.spec.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,+CAA8C;AAE9C,4FAA4F;AAC5F,MAAM,aAAa;IAAnB;QACc,UAAK,GAAG,iBAAiB,CAAC;IASxC,CAAC;IARG,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,IAAY;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ;AAED,IAAA,mBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAA,aAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACpC,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7C,2BAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,2BAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACpC,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,GAAG,4BAA4B,CAAC;QAC5C,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type LinkTarget } from '../util/link';
|
|
2
|
+
/** A link in a line of a terminal: `text.slice(start, end)`. */
|
|
3
|
+
export interface TerminalLink {
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
target: LinkTarget;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The links of a line of a terminal, as VS Code finds them: http(s) and file URLs, and paths of files
|
|
10
|
+
* (`src/a.ts:10:5`, `./b.md`, `/etc/hosts`, `docs/`) with the place a compiler or grep prints after
|
|
11
|
+
* them. A name alone is a file only with an extension files have (LinkUtil.codeReference); a path
|
|
12
|
+
* starting with `./`, `../` or two names under `/` is one with any name.
|
|
13
|
+
*/
|
|
14
|
+
export declare namespace TerminalLinkUtil {
|
|
15
|
+
function find(text: string): TerminalLink[];
|
|
16
|
+
/** `file://host/path` of OSC 7, the directory a shell says it is in. */
|
|
17
|
+
function cwdOf(osc7: string): string | undefined;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=terminal-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-links.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,cAAc,CAAC;AAEzD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACtB;AAYD;;;;;GAKG;AACH,yBAAiB,gBAAgB,CAAC;IAC9B,SAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkCjD;IAED,wEAAwE;IACxE,SAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUtD;CACJ"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerminalLinkUtil = void 0;
|
|
4
|
+
const link_1 = require("../util/link");
|
|
5
|
+
const URL_START = /\b(?:https?|file):\/\//gi;
|
|
6
|
+
/** What a path may be in: anything up to a space, a quote or a bracket. */
|
|
7
|
+
const WORD = /[^\s'"`<>()[\]{}|;,]+/g;
|
|
8
|
+
/** A path at the start of a word, with the line and column a compiler or grep prints after it (`:10`, `:10:5`). */
|
|
9
|
+
const PATH = /^(?:\.{1,2}\/|\/)?(?:[\w@+.-]+\/)*[\w@+.-]+\/?(?::\d+(?::\d+)?)?/;
|
|
10
|
+
/** A path no one mistakes for a word, with or without an extension: `./x`, `../x`, `/etc/hosts` (not `/help`). */
|
|
11
|
+
const EXPLICIT = /^(?:\.{1,2}\/[^/]|\/[^/]+\/[^/])/;
|
|
12
|
+
/** TypeScript's and MSBuild's `(10,5)` right after a path. */
|
|
13
|
+
const PARENS = /^\((\d+)(?:,(\d+))?\)/;
|
|
14
|
+
/**
|
|
15
|
+
* The links of a line of a terminal, as VS Code finds them: http(s) and file URLs, and paths of files
|
|
16
|
+
* (`src/a.ts:10:5`, `./b.md`, `/etc/hosts`, `docs/`) with the place a compiler or grep prints after
|
|
17
|
+
* them. A name alone is a file only with an extension files have (LinkUtil.codeReference); a path
|
|
18
|
+
* starting with `./`, `../` or two names under `/` is one with any name.
|
|
19
|
+
*/
|
|
20
|
+
var TerminalLinkUtil;
|
|
21
|
+
(function (TerminalLinkUtil) {
|
|
22
|
+
function find(text) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
var _c;
|
|
25
|
+
const links = [];
|
|
26
|
+
for (const found of text.matchAll(URL_START)) {
|
|
27
|
+
const start = found.index;
|
|
28
|
+
const url = /^file:/i.test(found[0]) ? (_a = /^file:\/\/[^\s'"`<>]+/i.exec(text.slice(start))) === null || _a === void 0 ? void 0 : _a[0] : link_1.LinkUtil.bareUrl(text.slice(start));
|
|
29
|
+
const target = url && link_1.LinkUtil.parse(url);
|
|
30
|
+
if (target) {
|
|
31
|
+
links.push({ start, end: start + url.length, target });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const inUrl = (index) => links.some(link => index >= link.start && index < link.end);
|
|
35
|
+
const urls = links.length;
|
|
36
|
+
for (const word of text.matchAll(WORD)) {
|
|
37
|
+
if (inUrl(word.index)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const path = (_b = PATH.exec(word[0])) === null || _b === void 0 ? void 0 : _b[0].replace(/[.:]+$/, '');
|
|
41
|
+
if (!path) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const start = word.index;
|
|
45
|
+
let end = start + path.length;
|
|
46
|
+
let reference = path;
|
|
47
|
+
const parens = path.length === word[0].length ? PARENS.exec(text.slice(end)) : null;
|
|
48
|
+
if (parens && !/:\d+$/.test(path)) {
|
|
49
|
+
reference = `${path}:${parens[1]}${parens[2] ? `:${parens[2]}` : ''}`;
|
|
50
|
+
end += parens[0].length;
|
|
51
|
+
}
|
|
52
|
+
const target = (_c = link_1.LinkUtil.codeReference(reference)) !== null && _c !== void 0 ? _c : (EXPLICIT.test(reference) ? link_1.LinkUtil.parse(reference) : undefined);
|
|
53
|
+
if (target) {
|
|
54
|
+
links.push({ start, end, target });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return urls === links.length ? links : links.sort((a, b) => a.start - b.start);
|
|
58
|
+
}
|
|
59
|
+
TerminalLinkUtil.find = find;
|
|
60
|
+
/** `file://host/path` of OSC 7, the directory a shell says it is in. */
|
|
61
|
+
function cwdOf(osc7) {
|
|
62
|
+
const found = /^file:\/\/[^/]*(\/.*)$/i.exec(osc7.trim());
|
|
63
|
+
if (!found) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
return decodeURIComponent(found[1]);
|
|
68
|
+
}
|
|
69
|
+
catch (_a) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
TerminalLinkUtil.cwdOf = cwdOf;
|
|
74
|
+
})(TerminalLinkUtil || (exports.TerminalLinkUtil = TerminalLinkUtil = {}));
|
|
75
|
+
//# sourceMappingURL=terminal-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-links.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-links.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bun_test_1 = require("bun:test");
|
|
4
|
+
const terminal_links_1 = require("./terminal-links");
|
|
5
|
+
const texts = (line) => terminal_links_1.TerminalLinkUtil.find(line).map(link => line.slice(link.start, link.end));
|
|
6
|
+
(0, bun_test_1.describe)('TerminalLinkUtil', () => {
|
|
7
|
+
(0, bun_test_1.it)('finds web pages, without the punctuation after them', () => {
|
|
8
|
+
(0, bun_test_1.expect)(texts('Local: http://localhost:5173/, docs at https://example.com/a?b=1.')).toEqual(['http://localhost:5173/', 'https://example.com/a?b=1']);
|
|
9
|
+
(0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find('see (https://x.dev/a)')[0].target).toEqual({ type: 'url', url: 'https://x.dev/a' });
|
|
10
|
+
});
|
|
11
|
+
(0, bun_test_1.it)('finds paths with the place compilers and grep print', () => {
|
|
12
|
+
const line = "src/app.ts:12:5 - error TS2304: Cannot find name 'x'.";
|
|
13
|
+
(0, bun_test_1.expect)(texts(line)).toEqual(['src/app.ts:12:5']);
|
|
14
|
+
(0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find(line)[0].target).toEqual({ type: 'path', path: 'src/app.ts', selection: { startLine: 12, startColumn: 5 } });
|
|
15
|
+
(0, bun_test_1.expect)(texts('src/a.ts(10,5): error')).toEqual(['src/a.ts(10,5)']);
|
|
16
|
+
(0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find('src/a.ts(10,5): error')[0].target).toMatchObject({ path: 'src/a.ts', selection: { startLine: 10, startColumn: 5 } });
|
|
17
|
+
(0, bun_test_1.expect)(texts('lib/x.js:3:const a = 1')).toEqual(['lib/x.js:3']);
|
|
18
|
+
(0, bun_test_1.expect)(texts('modified: ./docs/README.md and /etc/hosts, AGENTS.md.')).toEqual(['./docs/README.md', '/etc/hosts', 'AGENTS.md']);
|
|
19
|
+
(0, bun_test_1.expect)(texts('cd docs/ ; ls')).toEqual(['docs/']);
|
|
20
|
+
});
|
|
21
|
+
(0, bun_test_1.it)('leaves out what is no file', () => {
|
|
22
|
+
(0, bun_test_1.expect)(texts('v4.6.1 1.2.3 e.g. console.log ~/x deepseek-flash <inline:ta> Node.js /help and/or')).toEqual([]);
|
|
23
|
+
(0, bun_test_1.expect)(texts('see https://example.com/src/a.ts')).toEqual(['https://example.com/src/a.ts']);
|
|
24
|
+
});
|
|
25
|
+
(0, bun_test_1.it)('reads the directory of OSC 7', () => {
|
|
26
|
+
(0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.cwdOf('file://mac.local/Users/me/my%20app')).toBe('/Users/me/my app');
|
|
27
|
+
(0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.cwdOf('nonsense')).toBeUndefined();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=terminal-links.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-links.spec.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ITheme } from '@xterm/xterm';
|
|
2
|
+
import type { Theme } from '../settings/settings-protocol';
|
|
3
|
+
export declare namespace TerminalTheme {
|
|
4
|
+
/** The colours of a terminal on the page: its background and text are the page's (`--ta-*`), the rest VS Code's. */
|
|
5
|
+
function of(theme: Theme, variable: (name: string) => string): ITheme;
|
|
6
|
+
/** The font of the page's code: `--ta-mono`. */
|
|
7
|
+
function fontFamily(variable: (name: string) => string): string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=terminal-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-theme.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAoD3D,yBAAiB,aAAa,CAAC;IAC3B,oHAAoH;IACpH,SAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAI3E;IAED,gDAAgD;IAChD,SAAgB,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAErE;CACJ"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerminalTheme = void 0;
|
|
4
|
+
/** The sixteen colours of VS Code's terminal, for a dark and a light page. */
|
|
5
|
+
const ANSI = {
|
|
6
|
+
dark: {
|
|
7
|
+
black: '#000000',
|
|
8
|
+
red: '#cd3131',
|
|
9
|
+
green: '#0dbc79',
|
|
10
|
+
yellow: '#e5e510',
|
|
11
|
+
blue: '#2472c8',
|
|
12
|
+
magenta: '#bc3fbc',
|
|
13
|
+
cyan: '#11a8cd',
|
|
14
|
+
white: '#e5e5e5',
|
|
15
|
+
brightBlack: '#666666',
|
|
16
|
+
brightRed: '#f14c4c',
|
|
17
|
+
brightGreen: '#23d18b',
|
|
18
|
+
brightYellow: '#f5f543',
|
|
19
|
+
brightBlue: '#3b8eea',
|
|
20
|
+
brightMagenta: '#d670d6',
|
|
21
|
+
brightCyan: '#29b8db',
|
|
22
|
+
brightWhite: '#e5e5e5',
|
|
23
|
+
selectionBackground: '#264f78',
|
|
24
|
+
selectionInactiveBackground: '#3a3d41',
|
|
25
|
+
scrollbarSliderBackground: 'rgba(121, 121, 121, 0.4)',
|
|
26
|
+
scrollbarSliderHoverBackground: 'rgba(100, 100, 100, 0.7)',
|
|
27
|
+
scrollbarSliderActiveBackground: 'rgba(191, 191, 191, 0.4)',
|
|
28
|
+
},
|
|
29
|
+
light: {
|
|
30
|
+
black: '#000000',
|
|
31
|
+
red: '#cd3131',
|
|
32
|
+
green: '#00bc00',
|
|
33
|
+
yellow: '#949800',
|
|
34
|
+
blue: '#0451a5',
|
|
35
|
+
magenta: '#bc05bc',
|
|
36
|
+
cyan: '#0598bc',
|
|
37
|
+
white: '#555555',
|
|
38
|
+
brightBlack: '#666666',
|
|
39
|
+
brightRed: '#cd3131',
|
|
40
|
+
brightGreen: '#14ce14',
|
|
41
|
+
brightYellow: '#b5ba00',
|
|
42
|
+
brightBlue: '#0451a5',
|
|
43
|
+
brightMagenta: '#bc05bc',
|
|
44
|
+
brightCyan: '#0598bc',
|
|
45
|
+
brightWhite: '#a5a5a5',
|
|
46
|
+
selectionBackground: '#add6ff',
|
|
47
|
+
selectionInactiveBackground: '#e5ebf1',
|
|
48
|
+
scrollbarSliderBackground: 'rgba(100, 100, 100, 0.4)',
|
|
49
|
+
scrollbarSliderHoverBackground: 'rgba(100, 100, 100, 0.7)',
|
|
50
|
+
scrollbarSliderActiveBackground: 'rgba(0, 0, 0, 0.6)',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
var TerminalTheme;
|
|
54
|
+
(function (TerminalTheme) {
|
|
55
|
+
/** The colours of a terminal on the page: its background and text are the page's (`--ta-*`), the rest VS Code's. */
|
|
56
|
+
function of(theme, variable) {
|
|
57
|
+
const background = variable('--ta-code').trim() || (theme === 'dark' ? '#161618' : '#f7f8fa');
|
|
58
|
+
const foreground = variable('--ta-text').trim() || (theme === 'dark' ? '#e5e5e5' : '#1a1a1a');
|
|
59
|
+
return { ...ANSI[theme], background, foreground, cursor: foreground, cursorAccent: background };
|
|
60
|
+
}
|
|
61
|
+
TerminalTheme.of = of;
|
|
62
|
+
/** The font of the page's code: `--ta-mono`. */
|
|
63
|
+
function fontFamily(variable) {
|
|
64
|
+
return variable('--ta-mono').trim() || 'monospace';
|
|
65
|
+
}
|
|
66
|
+
TerminalTheme.fontFamily = fontFamily;
|
|
67
|
+
})(TerminalTheme || (exports.TerminalTheme = TerminalTheme = {}));
|
|
68
|
+
//# sourceMappingURL=terminal-theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-theme.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-theme.ts"],"names":[],"mappings":";;;AAGA,8EAA8E;AAC9E,MAAM,IAAI,GAA0B;IAChC,IAAI,EAAE;QACF,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,mBAAmB,EAAE,SAAS;QAC9B,2BAA2B,EAAE,SAAS;QACtC,yBAAyB,EAAE,0BAA0B;QACrD,8BAA8B,EAAE,0BAA0B;QAC1D,+BAA+B,EAAE,0BAA0B;KAC9D;IACD,KAAK,EAAE;QACH,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,mBAAmB,EAAE,SAAS;QAC9B,2BAA2B,EAAE,SAAS;QACtC,yBAAyB,EAAE,0BAA0B;QACrD,8BAA8B,EAAE,0BAA0B;QAC1D,+BAA+B,EAAE,oBAAoB;KACxD;CACJ,CAAC;AAEF,IAAiB,aAAa,CAY7B;AAZD,WAAiB,aAAa;IAC1B,oHAAoH;IACpH,SAAgB,EAAE,CAAC,KAAY,EAAE,QAAkC;QAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IACpG,CAAC;IAJe,cAAA,EAAE,KAIjB,CAAA;IAED,gDAAgD;IAChD,SAAgB,UAAU,CAAC,QAAkC;QACzD,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;IACvD,CAAC;IAFe,cAAA,UAAU,aAEzB,CAAA;AACL,CAAC,EAZgB,aAAa,aAAb,aAAa,GAAb,aAAa,QAY7B"}
|