terminal-pilot 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1599 -497
- package/dist/cli.js.map +4 -4
- package/dist/commands/close-session.js +489 -6
- package/dist/commands/close-session.js.map +4 -4
- package/dist/commands/create-session.js +489 -6
- package/dist/commands/create-session.js.map +4 -4
- package/dist/commands/fill.js +489 -6
- package/dist/commands/fill.js.map +4 -4
- package/dist/commands/get-session.js +489 -6
- package/dist/commands/get-session.js.map +4 -4
- package/dist/commands/index.js +630 -44
- package/dist/commands/index.js.map +4 -4
- package/dist/commands/install.js +626 -40
- package/dist/commands/install.js.map +4 -4
- package/dist/commands/installer.js +68 -17
- package/dist/commands/installer.js.map +4 -4
- package/dist/commands/list-sessions.js +489 -6
- package/dist/commands/list-sessions.js.map +4 -4
- package/dist/commands/press-key.js +489 -6
- package/dist/commands/press-key.js.map +4 -4
- package/dist/commands/read-history.js +489 -6
- package/dist/commands/read-history.js.map +4 -4
- package/dist/commands/read-screen.js +489 -6
- package/dist/commands/read-screen.js.map +4 -4
- package/dist/commands/resize.js +489 -6
- package/dist/commands/resize.js.map +4 -4
- package/dist/commands/runtime.js.map +1 -1
- package/dist/commands/screenshot.js +489 -6
- package/dist/commands/screenshot.js.map +4 -4
- package/dist/commands/send-signal.js +489 -6
- package/dist/commands/send-signal.js.map +4 -4
- package/dist/commands/type.js +489 -6
- package/dist/commands/type.js.map +4 -4
- package/dist/commands/uninstall.js +554 -20
- package/dist/commands/uninstall.js.map +4 -4
- package/dist/commands/wait-for-exit.js +489 -6
- package/dist/commands/wait-for-exit.js.map +4 -4
- package/dist/commands/wait-for.js +489 -6
- package/dist/commands/wait-for.js.map +4 -4
- package/dist/testing/cli-repl.js +1599 -497
- package/dist/testing/cli-repl.js.map +4 -4
- package/dist/testing/qa-cli.js +1609 -507
- package/dist/testing/qa-cli.js.map +4 -4
- package/node_modules/@poe-code/agent-defs/README.md +35 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/claude-code.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/claude-code.js +21 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/claude-desktop.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/claude-desktop.js +18 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/codex.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/codex.js +25 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/cursor.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/cursor.js +15 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/gemini-cli.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/gemini-cli.js +16 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/goose.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/goose.js +16 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/index.d.ts +9 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/index.js +9 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/kimi.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/kimi.js +16 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/opencode.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/opencode.js +20 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/poe-agent.d.ts +2 -0
- package/node_modules/@poe-code/agent-defs/dist/agents/poe-agent.js +14 -0
- package/node_modules/@poe-code/agent-defs/dist/index.d.ts +5 -0
- package/node_modules/@poe-code/agent-defs/dist/index.js +3 -0
- package/node_modules/@poe-code/agent-defs/dist/registry.d.ts +3 -0
- package/node_modules/@poe-code/agent-defs/dist/registry.js +45 -0
- package/node_modules/@poe-code/agent-defs/dist/specifier.d.ts +7 -0
- package/node_modules/@poe-code/agent-defs/dist/specifier.js +40 -0
- package/node_modules/@poe-code/agent-defs/dist/types.d.ts +28 -0
- package/node_modules/@poe-code/agent-defs/dist/types.js +1 -0
- package/node_modules/@poe-code/agent-defs/package.json +20 -0
- package/node_modules/@poe-code/agent-skill-config/dist/apply.js +2 -1
- package/node_modules/@poe-code/agent-skill-config/dist/bridge-active-skills.d.ts +1 -0
- package/node_modules/@poe-code/agent-skill-config/dist/bridge-active-skills.js +37 -18
- package/node_modules/@poe-code/agent-skill-config/dist/resolve-skill-reference.js +8 -4
- package/node_modules/@poe-code/agent-skill-config/package.json +1 -5
- package/node_modules/@poe-code/config-mutations/README.md +55 -0
- package/node_modules/@poe-code/config-mutations/dist/error-codes.d.ts +1 -0
- package/node_modules/@poe-code/config-mutations/dist/error-codes.js +6 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.d.ts +6 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.js +829 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.d.ts +17 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.js +64 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/run-mutations.d.ts +7 -0
- package/node_modules/@poe-code/config-mutations/dist/execution/run-mutations.js +39 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/index.d.ts +13 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/index.js +49 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/json.d.ts +32 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/json.js +171 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/object.d.ts +4 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/object.js +27 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/toml.d.ts +2 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/toml.js +75 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/yaml.d.ts +2 -0
- package/node_modules/@poe-code/config-mutations/dist/formats/yaml.js +76 -0
- package/node_modules/@poe-code/config-mutations/dist/fs-utils.d.ts +18 -0
- package/node_modules/@poe-code/config-mutations/dist/fs-utils.js +43 -0
- package/node_modules/@poe-code/config-mutations/dist/index.d.ts +8 -0
- package/node_modules/@poe-code/config-mutations/dist/index.js +8 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/config-mutation.d.ts +47 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/config-mutation.js +34 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/file-mutation.d.ts +62 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/file-mutation.js +55 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/template-mutation.d.ts +40 -0
- package/node_modules/@poe-code/config-mutations/dist/mutations/template-mutation.js +32 -0
- package/node_modules/@poe-code/config-mutations/dist/template/render.d.ts +6 -0
- package/node_modules/@poe-code/config-mutations/dist/template/render.js +8 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/format-utils.d.ts +7 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/format-utils.js +21 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/index.d.ts +3 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/index.js +2 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.d.ts +25 -0
- package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.js +194 -0
- package/node_modules/@poe-code/config-mutations/dist/types.d.ts +168 -0
- package/node_modules/@poe-code/config-mutations/dist/types.js +6 -0
- package/node_modules/@poe-code/config-mutations/package.json +29 -0
- package/node_modules/@poe-code/frontmatter/README.md +35 -0
- package/node_modules/@poe-code/frontmatter/dist/fences.d.ts +25 -0
- package/node_modules/@poe-code/frontmatter/dist/fences.js +100 -0
- package/node_modules/@poe-code/frontmatter/dist/index.d.ts +3 -0
- package/node_modules/@poe-code/frontmatter/dist/index.js +3 -0
- package/node_modules/@poe-code/frontmatter/dist/parse.d.ts +20 -0
- package/node_modules/@poe-code/frontmatter/dist/parse.js +209 -0
- package/node_modules/@poe-code/frontmatter/dist/stringify.d.ts +1 -0
- package/node_modules/@poe-code/frontmatter/dist/stringify.js +48 -0
- package/node_modules/@poe-code/frontmatter/package.json +25 -0
- package/node_modules/toolcraft-design/README.md +160 -0
- package/node_modules/toolcraft-design/dist/acp/components.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/acp/components.js +137 -0
- package/node_modules/toolcraft-design/dist/acp/index.d.ts +3 -0
- package/node_modules/toolcraft-design/dist/acp/index.js +2 -0
- package/node_modules/toolcraft-design/dist/acp/writer.d.ts +13 -0
- package/node_modules/toolcraft-design/dist/acp/writer.js +21 -0
- package/node_modules/toolcraft-design/dist/components/browser.d.ts +15 -0
- package/node_modules/toolcraft-design/dist/components/browser.js +31 -0
- package/node_modules/toolcraft-design/dist/components/catalog.d.ts +26 -0
- package/node_modules/toolcraft-design/dist/components/catalog.js +95 -0
- package/node_modules/toolcraft-design/dist/components/color.d.ts +31 -0
- package/node_modules/toolcraft-design/dist/components/color.js +102 -0
- package/node_modules/toolcraft-design/dist/components/command-errors.d.ts +16 -0
- package/node_modules/toolcraft-design/dist/components/command-errors.js +23 -0
- package/node_modules/toolcraft-design/dist/components/detail-card.d.ts +22 -0
- package/node_modules/toolcraft-design/dist/components/detail-card.js +45 -0
- package/node_modules/toolcraft-design/dist/components/help-formatter-plain.d.ts +5 -0
- package/node_modules/toolcraft-design/dist/components/help-formatter-plain.js +132 -0
- package/node_modules/toolcraft-design/dist/components/help-formatter.d.ts +33 -0
- package/node_modules/toolcraft-design/dist/components/help-formatter.js +213 -0
- package/node_modules/toolcraft-design/dist/components/index.d.ts +16 -0
- package/node_modules/toolcraft-design/dist/components/index.js +10 -0
- package/node_modules/toolcraft-design/dist/components/logger.d.ts +11 -0
- package/node_modules/toolcraft-design/dist/components/logger.js +60 -0
- package/node_modules/toolcraft-design/dist/components/symbols.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/components/symbols.js +71 -0
- package/node_modules/toolcraft-design/dist/components/table.d.ts +15 -0
- package/node_modules/toolcraft-design/dist/components/table.js +302 -0
- package/node_modules/toolcraft-design/dist/components/template.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/components/template.js +437 -0
- package/node_modules/toolcraft-design/dist/components/text.d.ts +16 -0
- package/node_modules/toolcraft-design/dist/components/text.js +145 -0
- package/node_modules/toolcraft-design/dist/dashboard/ansi.d.ts +18 -0
- package/node_modules/toolcraft-design/dist/dashboard/ansi.js +343 -0
- package/node_modules/toolcraft-design/dist/dashboard/buffer.d.ts +25 -0
- package/node_modules/toolcraft-design/dist/dashboard/buffer.js +219 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/border.d.ts +9 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/border.js +123 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/footer.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/footer.js +56 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/output-pane.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/output-pane.js +268 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/stats-pane.d.ts +7 -0
- package/node_modules/toolcraft-design/dist/dashboard/components/stats-pane.js +107 -0
- package/node_modules/toolcraft-design/dist/dashboard/dashboard.d.ts +20 -0
- package/node_modules/toolcraft-design/dist/dashboard/dashboard.js +167 -0
- package/node_modules/toolcraft-design/dist/dashboard/demo.d.ts +13 -0
- package/node_modules/toolcraft-design/dist/dashboard/demo.js +145 -0
- package/node_modules/toolcraft-design/dist/dashboard/index.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/dashboard/index.js +4 -0
- package/node_modules/toolcraft-design/dist/dashboard/keymap.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/dashboard/keymap.js +233 -0
- package/node_modules/toolcraft-design/dist/dashboard/layout.d.ts +25 -0
- package/node_modules/toolcraft-design/dist/dashboard/layout.js +79 -0
- package/node_modules/toolcraft-design/dist/dashboard/should-use-dashboard.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/dashboard/should-use-dashboard.js +7 -0
- package/node_modules/toolcraft-design/dist/dashboard/snapshot.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/dashboard/snapshot.js +68 -0
- package/node_modules/toolcraft-design/dist/dashboard/store.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/dashboard/store.js +51 -0
- package/node_modules/toolcraft-design/dist/dashboard/terminal-width.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/dashboard/terminal-width.js +71 -0
- package/node_modules/toolcraft-design/dist/dashboard/terminal.d.ts +37 -0
- package/node_modules/toolcraft-design/dist/dashboard/terminal.js +264 -0
- package/node_modules/toolcraft-design/dist/dashboard/types.d.ts +38 -0
- package/node_modules/toolcraft-design/dist/dashboard/types.js +1 -0
- package/node_modules/toolcraft-design/dist/explorer/actions.d.ts +16 -0
- package/node_modules/toolcraft-design/dist/explorer/actions.js +39 -0
- package/node_modules/toolcraft-design/dist/explorer/demo.d.ts +13 -0
- package/node_modules/toolcraft-design/dist/explorer/demo.js +297 -0
- package/node_modules/toolcraft-design/dist/explorer/events.d.ts +67 -0
- package/node_modules/toolcraft-design/dist/explorer/events.js +1 -0
- package/node_modules/toolcraft-design/dist/explorer/filter.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/explorer/filter.js +95 -0
- package/node_modules/toolcraft-design/dist/explorer/index.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/explorer/index.js +8 -0
- package/node_modules/toolcraft-design/dist/explorer/jobs.d.ts +7 -0
- package/node_modules/toolcraft-design/dist/explorer/jobs.js +59 -0
- package/node_modules/toolcraft-design/dist/explorer/keymap.d.ts +21 -0
- package/node_modules/toolcraft-design/dist/explorer/keymap.js +376 -0
- package/node_modules/toolcraft-design/dist/explorer/layout.d.ts +20 -0
- package/node_modules/toolcraft-design/dist/explorer/layout.js +73 -0
- package/node_modules/toolcraft-design/dist/explorer/reducer.d.ts +9 -0
- package/node_modules/toolcraft-design/dist/explorer/reducer.js +782 -0
- package/node_modules/toolcraft-design/dist/explorer/render/detail.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/explorer/render/detail.js +97 -0
- package/node_modules/toolcraft-design/dist/explorer/render/footer.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/explorer/render/footer.js +73 -0
- package/node_modules/toolcraft-design/dist/explorer/render/header.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/explorer/render/header.js +49 -0
- package/node_modules/toolcraft-design/dist/explorer/render/index.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/explorer/render/index.js +53 -0
- package/node_modules/toolcraft-design/dist/explorer/render/list.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/explorer/render/list.js +116 -0
- package/node_modules/toolcraft-design/dist/explorer/render/modal.d.ts +3 -0
- package/node_modules/toolcraft-design/dist/explorer/render/modal.js +87 -0
- package/node_modules/toolcraft-design/dist/explorer/render/test-fixtures.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/explorer/render/test-fixtures.js +156 -0
- package/node_modules/toolcraft-design/dist/explorer/render/text.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/explorer/render/text.js +81 -0
- package/node_modules/toolcraft-design/dist/explorer/runtime.d.ts +2 -0
- package/node_modules/toolcraft-design/dist/explorer/runtime.js +340 -0
- package/node_modules/toolcraft-design/dist/explorer/runtime.test-helpers.d.ts +50 -0
- package/node_modules/toolcraft-design/dist/explorer/runtime.test-helpers.js +101 -0
- package/node_modules/toolcraft-design/dist/explorer/state.d.ts +137 -0
- package/node_modules/toolcraft-design/dist/explorer/state.js +86 -0
- package/node_modules/toolcraft-design/dist/explorer/theme.d.ts +27 -0
- package/node_modules/toolcraft-design/dist/explorer/theme.js +29 -0
- package/node_modules/toolcraft-design/dist/index.d.ts +50 -0
- package/node_modules/toolcraft-design/dist/index.js +43 -0
- package/node_modules/toolcraft-design/dist/internal/color-support.d.ts +9 -0
- package/node_modules/toolcraft-design/dist/internal/color-support.js +12 -0
- package/node_modules/toolcraft-design/dist/internal/output-format.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/internal/output-format.js +22 -0
- package/node_modules/toolcraft-design/dist/internal/strip-ansi.d.ts +1 -0
- package/node_modules/toolcraft-design/dist/internal/strip-ansi.js +50 -0
- package/node_modules/toolcraft-design/dist/internal/theme-detect.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/internal/theme-detect.js +71 -0
- package/node_modules/toolcraft-design/dist/internal/theme-state.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/internal/theme-state.js +35 -0
- package/node_modules/toolcraft-design/dist/prompts/index.d.ts +91 -0
- package/node_modules/toolcraft-design/dist/prompts/index.js +137 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/cancel-symbol.d.ts +2 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/cancel-symbol.js +4 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/confirm.d.ts +9 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/confirm.js +47 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/core.d.ts +55 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/core.js +274 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/glyphs.d.ts +20 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/glyphs.js +53 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/index.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/index.js +6 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/keys.d.ts +2 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/keys.js +28 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/multiselect.d.ts +13 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/multiselect.js +131 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/pagination.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/pagination.js +52 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/password.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/password.js +55 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/select.d.ts +18 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/select.js +89 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/test-helpers.d.ts +21 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/test-helpers.js +32 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/text.d.ts +12 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/text.js +60 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/wrap.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/prompts/interactive/wrap.js +18 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/cancel.d.ts +2 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/cancel.js +9 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/intro.d.ts +1 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/intro.js +16 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/log.d.ts +18 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/log.js +104 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/note.d.ts +1 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/note.js +39 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/outro.d.ts +1 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/outro.js +16 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/spinner.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/prompts/primitives/spinner.js +74 -0
- package/node_modules/toolcraft-design/dist/prompts/theme.d.ts +11 -0
- package/node_modules/toolcraft-design/dist/prompts/theme.js +15 -0
- package/node_modules/toolcraft-design/dist/static/index.d.ts +4 -0
- package/node_modules/toolcraft-design/dist/static/index.js +2 -0
- package/node_modules/toolcraft-design/dist/static/menu.d.ts +11 -0
- package/node_modules/toolcraft-design/dist/static/menu.js +42 -0
- package/node_modules/toolcraft-design/dist/static/spinner.d.ts +14 -0
- package/node_modules/toolcraft-design/dist/static/spinner.js +52 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/ast.d.ts +92 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/ast.js +1 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/demo-content.d.ts +2 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/demo-content.js +139 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/index.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/index.js +8 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/block.d.ts +7 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/block.js +1495 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.d.ts +8 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.js +36 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/inline.d.ts +10 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser/inline.js +1190 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser.d.ts +5 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/parser.js +42 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/renderer.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/renderer.js +615 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/testing/theme-render-fixture.d.ts +1 -0
- package/node_modules/toolcraft-design/dist/terminal-markdown/testing/theme-render-fixture.js +27 -0
- package/node_modules/toolcraft-design/dist/tokens/brand.d.ts +5 -0
- package/node_modules/toolcraft-design/dist/tokens/brand.js +5 -0
- package/node_modules/toolcraft-design/dist/tokens/colors.d.ts +37 -0
- package/node_modules/toolcraft-design/dist/tokens/colors.js +85 -0
- package/node_modules/toolcraft-design/dist/tokens/index.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/tokens/index.js +5 -0
- package/node_modules/toolcraft-design/dist/tokens/spacing.d.ts +6 -0
- package/node_modules/toolcraft-design/dist/tokens/spacing.js +6 -0
- package/node_modules/toolcraft-design/dist/tokens/typography.d.ts +7 -0
- package/node_modules/toolcraft-design/dist/tokens/typography.js +8 -0
- package/node_modules/toolcraft-design/dist/tokens/widths.d.ts +5 -0
- package/node_modules/toolcraft-design/dist/tokens/widths.js +5 -0
- package/node_modules/toolcraft-design/package.json +44 -0
- package/package.json +15 -5
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
const builtinBindings = {
|
|
2
|
+
quit: ["q", "Ctrl+c"],
|
|
3
|
+
filter: ["/"],
|
|
4
|
+
help: ["?"],
|
|
5
|
+
palette: ["Ctrl+p", "Ctrl+k"],
|
|
6
|
+
cursorUp: ["up", "k"],
|
|
7
|
+
cursorDown: ["down", "j"],
|
|
8
|
+
top: ["home", "gg"],
|
|
9
|
+
bottom: ["end", "G"],
|
|
10
|
+
pageUp: ["Ctrl+u"],
|
|
11
|
+
pageDown: ["Ctrl+d"],
|
|
12
|
+
focusNext: ["tab"],
|
|
13
|
+
escape: ["escape"],
|
|
14
|
+
confirm: ["return", "enter"],
|
|
15
|
+
toggleSelect: ["space"],
|
|
16
|
+
selectAll: ["Ctrl+a"],
|
|
17
|
+
clearSelection: ["Ctrl+/"],
|
|
18
|
+
detailScrollDown: ["Ctrl+f"],
|
|
19
|
+
detailScrollUp: ["Ctrl+b"],
|
|
20
|
+
extendSelectionUp: ["Shift+up"],
|
|
21
|
+
extendSelectionDown: ["Shift+down"],
|
|
22
|
+
reorderUp: ["Shift+up", "K"],
|
|
23
|
+
reorderDown: ["Shift+down", "J"]
|
|
24
|
+
};
|
|
25
|
+
const baseBuiltinCommands = [
|
|
26
|
+
"quit",
|
|
27
|
+
"filter",
|
|
28
|
+
"help",
|
|
29
|
+
"palette",
|
|
30
|
+
"cursorUp",
|
|
31
|
+
"cursorDown",
|
|
32
|
+
"top",
|
|
33
|
+
"bottom",
|
|
34
|
+
"pageUp",
|
|
35
|
+
"pageDown",
|
|
36
|
+
"focusNext",
|
|
37
|
+
"escape",
|
|
38
|
+
"confirm",
|
|
39
|
+
"toggleSelect",
|
|
40
|
+
"selectAll",
|
|
41
|
+
"clearSelection",
|
|
42
|
+
"detailScrollDown",
|
|
43
|
+
"detailScrollUp",
|
|
44
|
+
"extendSelectionUp",
|
|
45
|
+
"extendSelectionDown"
|
|
46
|
+
];
|
|
47
|
+
const reorderCommands = ["reorderUp", "reorderDown"];
|
|
48
|
+
const selectionCommands = new Set([
|
|
49
|
+
"toggleSelect",
|
|
50
|
+
"selectAll",
|
|
51
|
+
"clearSelection",
|
|
52
|
+
"extendSelectionUp",
|
|
53
|
+
"extendSelectionDown"
|
|
54
|
+
]);
|
|
55
|
+
const reservedActionIds = new Set(["quit"]);
|
|
56
|
+
export function resolveBindings(config, defaults = {}) {
|
|
57
|
+
const baseCommands = config.reorder === undefined
|
|
58
|
+
? baseBuiltinCommands
|
|
59
|
+
: [
|
|
60
|
+
...baseBuiltinCommands.filter((command) => command !== "extendSelectionUp" && command !== "extendSelectionDown"),
|
|
61
|
+
...reorderCommands
|
|
62
|
+
];
|
|
63
|
+
const commands = config.multiSelect === false
|
|
64
|
+
? baseCommands.filter((command) => !selectionCommands.has(command))
|
|
65
|
+
: baseCommands;
|
|
66
|
+
const commandBindings = new Map();
|
|
67
|
+
const flatBindings = new Map();
|
|
68
|
+
const targetKeys = new Map();
|
|
69
|
+
const targetsByCommand = new Map();
|
|
70
|
+
const claimed = new Map();
|
|
71
|
+
const conflicts = new Map();
|
|
72
|
+
for (const command of commands) {
|
|
73
|
+
const target = { type: "builtin", id: command };
|
|
74
|
+
const keys = command === "quit"
|
|
75
|
+
? builtinBindings.quit
|
|
76
|
+
: defaults[command] ?? builtinBindings[command];
|
|
77
|
+
addBindings({
|
|
78
|
+
keys,
|
|
79
|
+
owner: command,
|
|
80
|
+
commandId: `builtin:${command}`,
|
|
81
|
+
target,
|
|
82
|
+
commandBindings,
|
|
83
|
+
flatBindings,
|
|
84
|
+
targetKeys,
|
|
85
|
+
targetsByCommand,
|
|
86
|
+
claimed,
|
|
87
|
+
conflicts,
|
|
88
|
+
warn: false
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
for (const action of [...config.actions, ...(config.detail.actions ?? [])]) {
|
|
92
|
+
if (reservedActionIds.has(action.id)) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const keys = toBindingArray(config.keybindOverrides?.[action.id] ?? action.key);
|
|
96
|
+
addBindings({
|
|
97
|
+
keys,
|
|
98
|
+
owner: action.id,
|
|
99
|
+
commandId: `action:${action.id}`,
|
|
100
|
+
target: { type: "action", id: action.id },
|
|
101
|
+
commandBindings,
|
|
102
|
+
flatBindings,
|
|
103
|
+
targetKeys,
|
|
104
|
+
targetsByCommand,
|
|
105
|
+
claimed,
|
|
106
|
+
conflicts,
|
|
107
|
+
warn: true
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (process.env.NODE_ENV !== "production") {
|
|
111
|
+
for (const warning of conflicts.values()) {
|
|
112
|
+
process.stderr.write(`${warning}\n`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const commandIds = Array.from(commandBindings.keys());
|
|
116
|
+
const defaultKeymapBindings = Object.fromEntries(Array.from(commandBindings.entries()));
|
|
117
|
+
const resolveCommand = createKeymap(commandIds, defaultKeymapBindings);
|
|
118
|
+
return {
|
|
119
|
+
bindings: flatBindings,
|
|
120
|
+
keysByTarget: targetKeys,
|
|
121
|
+
resolve: (event) => {
|
|
122
|
+
const command = resolveCommand(event);
|
|
123
|
+
return command === undefined ? undefined : targetsByCommand.get(command);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function addBindings(opts) {
|
|
128
|
+
const accepted = [];
|
|
129
|
+
for (const key of opts.keys) {
|
|
130
|
+
const canonical = canonicalizeBinding(key);
|
|
131
|
+
if (canonical === undefined) {
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const existing = opts.claimed.get(canonical);
|
|
135
|
+
if (existing !== undefined) {
|
|
136
|
+
if (existing !== opts.owner && opts.warn) {
|
|
137
|
+
opts.conflicts.set(`${opts.owner}:${canonical}`, `Explorer key binding conflict: ${key} for ${opts.owner} is already bound to ${existing}`);
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
opts.claimed.set(canonical, opts.owner);
|
|
142
|
+
opts.flatBindings.set(canonical, opts.target);
|
|
143
|
+
accepted.push(key);
|
|
144
|
+
}
|
|
145
|
+
if (accepted.length > 0) {
|
|
146
|
+
opts.commandBindings.set(opts.commandId, accepted);
|
|
147
|
+
opts.targetKeys.set(targetKey(opts.target), accepted);
|
|
148
|
+
opts.targetsByCommand.set(opts.commandId, opts.target);
|
|
149
|
+
}
|
|
150
|
+
return accepted;
|
|
151
|
+
}
|
|
152
|
+
function targetKey(target) {
|
|
153
|
+
return `${target.type}:${target.id}`;
|
|
154
|
+
}
|
|
155
|
+
function toBindingArray(value) {
|
|
156
|
+
if (value === undefined) {
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
return Array.isArray(value) ? value : [value];
|
|
160
|
+
}
|
|
161
|
+
function createKeymap(commands, defaultBindings) {
|
|
162
|
+
const bindings = new Map();
|
|
163
|
+
const sequences = new Set();
|
|
164
|
+
let pendingSequence = "";
|
|
165
|
+
for (const command of commands) {
|
|
166
|
+
const commandBindings = defaultBindings[command]
|
|
167
|
+
.map(parseBinding)
|
|
168
|
+
.filter((binding) => binding !== undefined);
|
|
169
|
+
for (const binding of commandBindings) {
|
|
170
|
+
if (binding.sequence !== undefined) {
|
|
171
|
+
sequences.add(binding.sequence);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
bindings.set(command, commandBindings);
|
|
175
|
+
}
|
|
176
|
+
return (event) => {
|
|
177
|
+
for (const command of commands) {
|
|
178
|
+
const commandBindings = bindings.get(command);
|
|
179
|
+
if (commandBindings?.some((binding) => matchesSingleKey(binding, event))) {
|
|
180
|
+
pendingSequence = "";
|
|
181
|
+
return command;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const token = eventToSequenceToken(event);
|
|
185
|
+
if (token === undefined) {
|
|
186
|
+
pendingSequence = "";
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
pendingSequence = `${pendingSequence}${token}`;
|
|
190
|
+
for (const command of commands) {
|
|
191
|
+
const commandBindings = bindings.get(command);
|
|
192
|
+
if (commandBindings?.some((binding) => binding.sequence === pendingSequence)) {
|
|
193
|
+
pendingSequence = "";
|
|
194
|
+
return command;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (hasSequencePrefix(sequences, pendingSequence)) {
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
pendingSequence = token;
|
|
201
|
+
if (hasSequencePrefix(sequences, pendingSequence)) {
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
pendingSequence = "";
|
|
205
|
+
return undefined;
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
function canonicalizeBinding(binding) {
|
|
209
|
+
const parsed = parseBinding(binding);
|
|
210
|
+
if (parsed === undefined) {
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
const modifiers = [
|
|
214
|
+
parsed.ctrl ? "ctrl" : undefined,
|
|
215
|
+
parsed.meta ? "meta" : undefined,
|
|
216
|
+
parsed.shift ? "shift" : undefined
|
|
217
|
+
].filter((modifier) => modifier !== undefined);
|
|
218
|
+
const key = parsed.name ?? parsed.ch;
|
|
219
|
+
if (parsed.sequence !== undefined) {
|
|
220
|
+
return parsed.sequence.toLowerCase();
|
|
221
|
+
}
|
|
222
|
+
return key === undefined ? undefined : [...modifiers, key.toLowerCase()].join("+");
|
|
223
|
+
}
|
|
224
|
+
function parseBinding(binding) {
|
|
225
|
+
const value = binding.trim();
|
|
226
|
+
if (value.length === 0) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
const parts = value.split("+").map((part) => part.trim()).filter(Boolean);
|
|
230
|
+
if (parts.length === 0) {
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
let ctrl = false;
|
|
234
|
+
let meta = false;
|
|
235
|
+
let shift = false;
|
|
236
|
+
const key = parts.at(-1);
|
|
237
|
+
if (key === undefined) {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
for (const modifier of parts.slice(0, -1)) {
|
|
241
|
+
const normalized = modifier.toLowerCase();
|
|
242
|
+
if (normalized === "ctrl" || normalized === "control") {
|
|
243
|
+
ctrl = true;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (normalized === "meta" || normalized === "alt") {
|
|
247
|
+
meta = true;
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (normalized === "shift") {
|
|
251
|
+
shift = true;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const normalizedKey = normalizeKeyName(key);
|
|
255
|
+
if (parts.length === 1 && isShiftedCharacter(normalizedKey)) {
|
|
256
|
+
shift = true;
|
|
257
|
+
}
|
|
258
|
+
if (normalizedKey.length === 1) {
|
|
259
|
+
return {
|
|
260
|
+
ch: normalizeBindingCharacter(normalizedKey, shift),
|
|
261
|
+
ctrl,
|
|
262
|
+
meta,
|
|
263
|
+
shift
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
if (!ctrl &&
|
|
267
|
+
!meta &&
|
|
268
|
+
!shift &&
|
|
269
|
+
!isNamedKey(normalizedKey) &&
|
|
270
|
+
isPrintableSequence(normalizedKey)) {
|
|
271
|
+
return {
|
|
272
|
+
sequence: normalizedKey,
|
|
273
|
+
ctrl,
|
|
274
|
+
meta,
|
|
275
|
+
shift
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
return {
|
|
279
|
+
name: normalizedKey.toLowerCase(),
|
|
280
|
+
ctrl,
|
|
281
|
+
meta,
|
|
282
|
+
shift
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
function matchesSingleKey(binding, event) {
|
|
286
|
+
if (binding.sequence !== undefined) {
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
if (binding.ctrl !== event.ctrl ||
|
|
290
|
+
binding.meta !== event.meta ||
|
|
291
|
+
binding.shift !== event.shift) {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
if (binding.ch !== undefined) {
|
|
295
|
+
if (binding.ch === " " && event.name === "space") {
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
return event.ch === binding.ch || event.name === binding.ch.toLowerCase();
|
|
299
|
+
}
|
|
300
|
+
if (binding.name !== undefined) {
|
|
301
|
+
return event.name === binding.name;
|
|
302
|
+
}
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
function eventToSequenceToken(event) {
|
|
306
|
+
if (event.ctrl || event.meta || event.ch === undefined) {
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
return event.ch;
|
|
310
|
+
}
|
|
311
|
+
function hasSequencePrefix(sequences, prefix) {
|
|
312
|
+
for (const sequence of sequences) {
|
|
313
|
+
if (sequence.startsWith(prefix)) {
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
function isShiftedCharacter(value) {
|
|
320
|
+
return value.length === 1 && value.toLowerCase() !== value && value.toUpperCase() === value;
|
|
321
|
+
}
|
|
322
|
+
function normalizeBindingCharacter(value, shift) {
|
|
323
|
+
if (!shift || value.toLowerCase() === value.toUpperCase()) {
|
|
324
|
+
return value;
|
|
325
|
+
}
|
|
326
|
+
return value.toUpperCase();
|
|
327
|
+
}
|
|
328
|
+
function normalizeKeyName(value) {
|
|
329
|
+
if (value.toLowerCase() === "space") {
|
|
330
|
+
return " ";
|
|
331
|
+
}
|
|
332
|
+
if (value === "↑") {
|
|
333
|
+
return "up";
|
|
334
|
+
}
|
|
335
|
+
if (value === "↓") {
|
|
336
|
+
return "down";
|
|
337
|
+
}
|
|
338
|
+
if (value === "←") {
|
|
339
|
+
return "left";
|
|
340
|
+
}
|
|
341
|
+
if (value === "→") {
|
|
342
|
+
return "right";
|
|
343
|
+
}
|
|
344
|
+
return value;
|
|
345
|
+
}
|
|
346
|
+
function isNamedKey(value) {
|
|
347
|
+
return namedKeys.has(value.toLowerCase());
|
|
348
|
+
}
|
|
349
|
+
function isPrintableSequence(value) {
|
|
350
|
+
if (Array.from(value).length <= 1) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
for (const char of value) {
|
|
354
|
+
const codePoint = char.codePointAt(0);
|
|
355
|
+
if (codePoint === undefined || codePoint < 0x20 || codePoint === 0x7f) {
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return true;
|
|
360
|
+
}
|
|
361
|
+
const namedKeys = new Set([
|
|
362
|
+
"backspace",
|
|
363
|
+
"delete",
|
|
364
|
+
"down",
|
|
365
|
+
"end",
|
|
366
|
+
"enter",
|
|
367
|
+
"escape",
|
|
368
|
+
"home",
|
|
369
|
+
"left",
|
|
370
|
+
"pagedown",
|
|
371
|
+
"pageup",
|
|
372
|
+
"return",
|
|
373
|
+
"right",
|
|
374
|
+
"tab",
|
|
375
|
+
"up"
|
|
376
|
+
]);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type ExplorerLayoutMode = "wide" | "medium" | "narrow-vertical" | "narrow-list-only" | "too-narrow";
|
|
2
|
+
export interface Rect {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ExplorerLayoutOptions {
|
|
9
|
+
cols: number;
|
|
10
|
+
rows: number;
|
|
11
|
+
detailHidden?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ExplorerLayout {
|
|
14
|
+
mode: ExplorerLayoutMode;
|
|
15
|
+
header: Rect;
|
|
16
|
+
list: Rect;
|
|
17
|
+
detail: Rect;
|
|
18
|
+
footer: Rect;
|
|
19
|
+
}
|
|
20
|
+
export declare function computeExplorerLayout(opts: ExplorerLayoutOptions): ExplorerLayout;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const HEADER_HEIGHT = 3;
|
|
2
|
+
const FOOTER_HEIGHT = 1;
|
|
3
|
+
export function computeExplorerLayout(opts) {
|
|
4
|
+
const cols = normalizeSize(opts.cols);
|
|
5
|
+
const rows = normalizeSize(opts.rows);
|
|
6
|
+
const mode = resolveMode(cols);
|
|
7
|
+
const footerHeight = rows > 0 ? Math.min(FOOTER_HEIGHT, rows) : 0;
|
|
8
|
+
const headerHeight = Math.min(HEADER_HEIGHT, Math.max(0, rows - footerHeight));
|
|
9
|
+
const contentY = headerHeight;
|
|
10
|
+
const contentHeight = Math.max(0, rows - headerHeight - footerHeight);
|
|
11
|
+
const footerY = headerHeight + contentHeight;
|
|
12
|
+
const header = { x: 0, y: 0, width: cols, height: headerHeight };
|
|
13
|
+
const footer = { x: 0, y: footerY, width: cols, height: footerHeight };
|
|
14
|
+
if (mode === "too-narrow" || mode === "narrow-list-only") {
|
|
15
|
+
return {
|
|
16
|
+
mode,
|
|
17
|
+
header,
|
|
18
|
+
list: { x: 0, y: contentY, width: cols, height: contentHeight },
|
|
19
|
+
detail: { x: 0, y: contentY + contentHeight, width: 0, height: 0 },
|
|
20
|
+
footer
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (opts.detailHidden === true) {
|
|
24
|
+
return {
|
|
25
|
+
mode,
|
|
26
|
+
header,
|
|
27
|
+
list: { x: 0, y: contentY, width: cols, height: contentHeight },
|
|
28
|
+
detail: { x: cols, y: contentY, width: 0, height: contentHeight },
|
|
29
|
+
footer
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (mode === "narrow-vertical") {
|
|
33
|
+
const listHeight = Math.ceil(contentHeight / 2);
|
|
34
|
+
const detailHeight = contentHeight - listHeight;
|
|
35
|
+
return {
|
|
36
|
+
mode,
|
|
37
|
+
header,
|
|
38
|
+
list: { x: 0, y: contentY, width: cols, height: listHeight },
|
|
39
|
+
detail: { x: 0, y: contentY + listHeight, width: cols, height: detailHeight },
|
|
40
|
+
footer
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const listWidth = mode === "wide" ? Math.floor((cols * 5) / 12) : Math.floor((cols * 2) / 5);
|
|
44
|
+
const detailWidth = cols - listWidth;
|
|
45
|
+
return {
|
|
46
|
+
mode,
|
|
47
|
+
header,
|
|
48
|
+
list: { x: 0, y: contentY, width: listWidth, height: contentHeight },
|
|
49
|
+
detail: { x: listWidth, y: contentY, width: detailWidth, height: contentHeight },
|
|
50
|
+
footer
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function resolveMode(cols) {
|
|
54
|
+
if (cols < 40) {
|
|
55
|
+
return "too-narrow";
|
|
56
|
+
}
|
|
57
|
+
if (cols < 80) {
|
|
58
|
+
return "narrow-list-only";
|
|
59
|
+
}
|
|
60
|
+
if (cols < 100) {
|
|
61
|
+
return "narrow-vertical";
|
|
62
|
+
}
|
|
63
|
+
if (cols < 120) {
|
|
64
|
+
return "medium";
|
|
65
|
+
}
|
|
66
|
+
return "wide";
|
|
67
|
+
}
|
|
68
|
+
function normalizeSize(value) {
|
|
69
|
+
if (!Number.isFinite(value)) {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
return Math.max(0, Math.floor(value));
|
|
73
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ActionRuntimeHandles } from "./actions.js";
|
|
2
|
+
import type { Effect, ExplorerEvent } from "./events.js";
|
|
3
|
+
import { type ExplorerState } from "./state.js";
|
|
4
|
+
type StepResult = {
|
|
5
|
+
state: ExplorerState;
|
|
6
|
+
effects: Effect[];
|
|
7
|
+
};
|
|
8
|
+
export declare function step(state: ExplorerState, event: ExplorerEvent, runtimeHandles?: ActionRuntimeHandles): StepResult;
|
|
9
|
+
export {};
|