@navios/commander-tui 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +69 -1
- package/dist/base/src/adapters/index.d.ts +2 -0
- package/dist/base/src/adapters/index.d.ts.map +1 -0
- package/dist/base/src/adapters/interface.d.ts +45 -0
- package/dist/base/src/adapters/interface.d.ts.map +1 -0
- package/dist/base/src/components/index.d.ts +2 -0
- package/dist/base/src/components/index.d.ts.map +1 -0
- package/dist/base/src/context/index.d.ts +2 -0
- package/dist/base/src/context/index.d.ts.map +1 -0
- package/dist/base/src/factories/index.d.ts +3 -0
- package/dist/base/src/factories/index.d.ts.map +1 -0
- package/dist/base/src/factories/isomorphic-logger.factory.d.ts +8 -0
- package/dist/base/src/factories/isomorphic-logger.factory.d.ts.map +1 -0
- package/dist/base/src/factories/screen.factory.d.ts +8 -0
- package/dist/base/src/factories/screen.factory.d.ts.map +1 -0
- package/dist/base/src/filter/filter_engine.d.ts +19 -0
- package/dist/base/src/filter/filter_engine.d.ts.map +1 -0
- package/dist/base/src/filter/index.d.ts +2 -0
- package/dist/base/src/filter/index.d.ts.map +1 -0
- package/dist/base/src/hooks/index.d.ts +2 -0
- package/dist/base/src/hooks/index.d.ts.map +1 -0
- package/dist/base/src/index.d.ts +16 -0
- package/dist/base/src/index.d.ts.map +1 -0
- package/dist/base/src/interfaces/index.d.ts +2 -0
- package/dist/base/src/interfaces/index.d.ts.map +1 -0
- package/dist/base/src/interfaces/isomorphic-logger.d.ts +9 -0
- package/dist/base/src/interfaces/isomorphic-logger.d.ts.map +1 -0
- package/dist/base/src/keyboard/create_bindings.d.ts +26 -0
- package/dist/base/src/keyboard/create_bindings.d.ts.map +1 -0
- package/dist/base/src/keyboard/index.d.ts +3 -0
- package/dist/base/src/keyboard/index.d.ts.map +1 -0
- package/dist/base/src/keyboard/keyboard_manager.d.ts +63 -0
- package/dist/base/src/keyboard/keyboard_manager.d.ts.map +1 -0
- package/dist/base/src/overrides/console.logger.override.d.ts +3 -0
- package/dist/base/src/overrides/console.logger.override.d.ts.map +1 -0
- package/dist/base/src/overrides/index.d.ts +3 -0
- package/dist/base/src/overrides/index.d.ts.map +1 -0
- package/dist/base/src/overrides/missing-adapter.override.d.ts +6 -0
- package/dist/base/src/overrides/missing-adapter.override.d.ts.map +1 -0
- package/dist/base/src/schemas/index.d.ts +4 -0
- package/dist/base/src/schemas/index.d.ts.map +1 -0
- package/dist/base/src/schemas/logger-options.d.ts +21 -0
- package/dist/base/src/schemas/logger-options.d.ts.map +1 -0
- package/dist/base/src/schemas/prompt-options.d.ts +12 -0
- package/dist/base/src/schemas/prompt-options.d.ts.map +1 -0
- package/dist/base/src/schemas/screen-options.d.ts +10 -0
- package/dist/base/src/schemas/screen-options.d.ts.map +1 -0
- package/dist/base/src/services/index.d.ts +5 -0
- package/dist/base/src/services/index.d.ts.map +1 -0
- package/dist/base/src/services/logger.d.ts +52 -0
- package/dist/base/src/services/logger.d.ts.map +1 -0
- package/dist/base/src/services/prompt.d.ts +31 -0
- package/dist/base/src/services/prompt.d.ts.map +1 -0
- package/dist/base/src/services/screen.d.ts +161 -0
- package/dist/base/src/services/screen.d.ts.map +1 -0
- package/dist/base/src/services/screen_manager.d.ts +130 -0
- package/dist/base/src/services/screen_manager.d.ts.map +1 -0
- package/dist/base/src/themes/dark.d.ts +7 -0
- package/dist/base/src/themes/dark.d.ts.map +1 -0
- package/dist/base/src/themes/high-contrast.d.ts +7 -0
- package/dist/base/src/themes/high-contrast.d.ts.map +1 -0
- package/dist/base/src/themes/index.d.ts +5 -0
- package/dist/base/src/themes/index.d.ts.map +1 -0
- package/dist/base/src/themes/light.d.ts +6 -0
- package/dist/base/src/themes/light.d.ts.map +1 -0
- package/dist/base/src/themes/utils.d.ts +22 -0
- package/dist/base/src/themes/utils.d.ts.map +1 -0
- package/dist/base/src/tokens/adapter.d.ts +9 -0
- package/dist/base/src/tokens/adapter.d.ts.map +1 -0
- package/dist/base/src/tokens/index.d.ts +6 -0
- package/dist/base/src/tokens/index.d.ts.map +1 -0
- package/dist/base/src/tokens/logger.d.ts +44 -0
- package/dist/base/src/tokens/logger.d.ts.map +1 -0
- package/dist/base/src/tokens/prompt.d.ts +12 -0
- package/dist/base/src/tokens/prompt.d.ts.map +1 -0
- package/dist/base/src/tokens/screen-manager.d.ts +8 -0
- package/dist/base/src/tokens/screen-manager.d.ts.map +1 -0
- package/dist/base/src/tokens/screen.d.ts +10 -0
- package/dist/base/src/tokens/screen.d.ts.map +1 -0
- package/dist/base/src/types/file.types.d.ts +40 -0
- package/dist/base/src/types/file.types.d.ts.map +1 -0
- package/dist/base/src/types/filter.types.d.ts +31 -0
- package/dist/base/src/types/filter.types.d.ts.map +1 -0
- package/dist/base/src/types/index.d.ts +9 -0
- package/dist/base/src/types/index.d.ts.map +1 -0
- package/dist/base/src/types/keyboard.types.d.ts +83 -0
- package/dist/base/src/types/keyboard.types.d.ts.map +1 -0
- package/dist/base/src/types/log.types.d.ts +39 -0
- package/dist/base/src/types/log.types.d.ts.map +1 -0
- package/dist/base/src/types/message.types.d.ts +82 -0
- package/dist/base/src/types/message.types.d.ts.map +1 -0
- package/dist/base/src/types/prompt.types.d.ts +85 -0
- package/dist/base/src/types/prompt.types.d.ts.map +1 -0
- package/dist/base/src/types/screen.types.d.ts +79 -0
- package/dist/base/src/types/screen.types.d.ts.map +1 -0
- package/dist/base/src/types/theme.types.d.ts +217 -0
- package/dist/base/src/types/theme.types.d.ts.map +1 -0
- package/dist/base/src/utils/colors/file-colors.d.ts +10 -0
- package/dist/base/src/utils/colors/file-colors.d.ts.map +1 -0
- package/dist/base/src/utils/colors/helpers.d.ts +26 -0
- package/dist/base/src/utils/colors/helpers.d.ts.map +1 -0
- package/dist/base/src/utils/colors/index.d.ts +8 -0
- package/dist/base/src/utils/colors/index.d.ts.map +1 -0
- package/dist/base/src/utils/colors/log-colors.d.ts +19 -0
- package/dist/base/src/utils/colors/log-colors.d.ts.map +1 -0
- package/dist/base/src/utils/colors/progress-colors.d.ts +25 -0
- package/dist/base/src/utils/colors/progress-colors.d.ts.map +1 -0
- package/dist/base/src/utils/colors/prompt-colors.d.ts +22 -0
- package/dist/base/src/utils/colors/prompt-colors.d.ts.map +1 -0
- package/dist/base/src/utils/colors/sidebar-colors.d.ts +50 -0
- package/dist/base/src/utils/colors/sidebar-colors.d.ts.map +1 -0
- package/dist/base/src/utils/colors/table-colors.d.ts +12 -0
- package/dist/base/src/utils/colors/table-colors.d.ts.map +1 -0
- package/dist/base/src/utils/filetype.d.ts +19 -0
- package/dist/base/src/utils/filetype.d.ts.map +1 -0
- package/dist/base/src/utils/format.d.ts +9 -0
- package/dist/base/src/utils/format.d.ts.map +1 -0
- package/dist/base/src/utils/index.d.ts +5 -0
- package/dist/base/src/utils/index.d.ts.map +1 -0
- package/dist/base/src/utils/stdout-printer.d.ts +6 -0
- package/dist/base/src/utils/stdout-printer.d.ts.map +1 -0
- package/dist/base/tsconfig.base.tsbuildinfo +1 -0
- package/dist/react/src/adapters/react/components/file/file_log.d.ts +35 -0
- package/dist/react/src/adapters/react/components/file/file_log.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/file/index.d.ts +2 -0
- package/dist/react/src/adapters/react/components/file/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/filter/filter_bar.d.ts +7 -0
- package/dist/react/src/adapters/react/components/filter/filter_bar.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/filter/index.d.ts +2 -0
- package/dist/react/src/adapters/react/components/filter/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/help/help_overlay.d.ts +6 -0
- package/dist/react/src/adapters/react/components/help/help_overlay.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/help/index.d.ts +2 -0
- package/dist/react/src/adapters/react/components/help/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/log/index.d.ts +2 -0
- package/dist/react/src/adapters/react/components/log/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/log/log_message.d.ts +28 -0
- package/dist/react/src/adapters/react/components/log/log_message.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/prompt/index.d.ts +3 -0
- package/dist/react/src/adapters/react/components/prompt/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/prompt/prompt_renderer.d.ts +6 -0
- package/dist/react/src/adapters/react/components/prompt/prompt_renderer.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/group_renderer.d.ts +14 -0
- package/dist/react/src/adapters/react/components/screen/group_renderer.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/index.d.ts +7 -0
- package/dist/react/src/adapters/react/components/screen/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/loading_message.d.ts +6 -0
- package/dist/react/src/adapters/react/components/screen/loading_message.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/message_renderer.d.ts +6 -0
- package/dist/react/src/adapters/react/components/screen/message_renderer.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/progress_message.d.ts +6 -0
- package/dist/react/src/adapters/react/components/screen/progress_message.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/screen_bridge.d.ts +14 -0
- package/dist/react/src/adapters/react/components/screen/screen_bridge.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen/table_message.d.ts +6 -0
- package/dist/react/src/adapters/react/components/screen/table_message.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/screen_manager_bridge.d.ts +8 -0
- package/dist/react/src/adapters/react/components/screen_manager_bridge.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/sidebar/index.d.ts +4 -0
- package/dist/react/src/adapters/react/components/sidebar/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar.d.ts +11 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar_item.d.ts +9 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar_item.d.ts.map +1 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar_separator.d.ts +2 -0
- package/dist/react/src/adapters/react/components/sidebar/sidebar_separator.d.ts.map +1 -0
- package/dist/react/src/adapters/react/context/index.d.ts +2 -0
- package/dist/react/src/adapters/react/context/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/context/logger_context.d.ts +53 -0
- package/dist/react/src/adapters/react/context/logger_context.d.ts.map +1 -0
- package/dist/react/src/adapters/react/hooks/index.d.ts +2 -0
- package/dist/react/src/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react/hooks/use_theme.d.ts +7 -0
- package/dist/react/src/adapters/react/hooks/use_theme.d.ts.map +1 -0
- package/dist/react/src/adapters/react/index.d.ts +13 -0
- package/dist/react/src/adapters/react/index.d.ts.map +1 -0
- package/dist/react/tsconfig.react.tsbuildinfo +1 -0
- package/dist/solid/src/adapters/solid/components/file/file_log.d.ts +35 -0
- package/dist/solid/src/adapters/solid/components/file/file_log.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/file/index.d.ts +2 -0
- package/dist/solid/src/adapters/solid/components/file/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/filter/filter_bar.d.ts +7 -0
- package/dist/solid/src/adapters/solid/components/filter/filter_bar.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/filter/index.d.ts +2 -0
- package/dist/solid/src/adapters/solid/components/filter/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/help/help_overlay.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/help/help_overlay.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/help/index.d.ts +2 -0
- package/dist/solid/src/adapters/solid/components/help/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/log/index.d.ts +2 -0
- package/dist/solid/src/adapters/solid/components/log/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/log/log_message.d.ts +31 -0
- package/dist/solid/src/adapters/solid/components/log/log_message.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/prompt/index.d.ts +3 -0
- package/dist/solid/src/adapters/solid/components/prompt/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/prompt/prompt_renderer.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/prompt/prompt_renderer.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/group_renderer.d.ts +14 -0
- package/dist/solid/src/adapters/solid/components/screen/group_renderer.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/index.d.ts +7 -0
- package/dist/solid/src/adapters/solid/components/screen/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/loading_message.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/screen/loading_message.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/message_renderer.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/screen/message_renderer.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/progress_message.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/screen/progress_message.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/screen_bridge.d.ts +14 -0
- package/dist/solid/src/adapters/solid/components/screen/screen_bridge.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen/table_message.d.ts +6 -0
- package/dist/solid/src/adapters/solid/components/screen/table_message.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/screen_manager_bridge.d.ts +8 -0
- package/dist/solid/src/adapters/solid/components/screen_manager_bridge.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/sidebar/index.d.ts +4 -0
- package/dist/solid/src/adapters/solid/components/sidebar/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar.d.ts +11 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar_item.d.ts +9 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar_item.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar_separator.d.ts +2 -0
- package/dist/solid/src/adapters/solid/components/sidebar/sidebar_separator.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/context/index.d.ts +3 -0
- package/dist/solid/src/adapters/solid/context/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/context/logger_context.d.ts +52 -0
- package/dist/solid/src/adapters/solid/context/logger_context.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/hooks/index.d.ts +2 -0
- package/dist/solid/src/adapters/solid/hooks/index.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/hooks/use_theme.d.ts +7 -0
- package/dist/solid/src/adapters/solid/hooks/use_theme.d.ts.map +1 -0
- package/dist/solid/src/adapters/solid/index.d.ts +13 -0
- package/dist/solid/src/adapters/solid/index.d.ts.map +1 -0
- package/dist/solid/tsconfig.solid.tsbuildinfo +1 -0
- package/dist/tsconfig.base.tsbuildinfo +1 -0
- package/dist/tsconfig.react.tsbuildinfo +1 -0
- package/dist/tsconfig.solid.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/adapters/react/index.cjs +1768 -0
- package/lib/adapters/react/index.cjs.map +1 -0
- package/lib/adapters/react/index.d.cts +80 -0
- package/lib/adapters/react/index.d.mts +80 -0
- package/lib/adapters/react/index.mjs +1760 -0
- package/lib/adapters/react/index.mjs.map +1 -0
- package/lib/adapters/solid/index.cjs +3855 -0
- package/lib/adapters/solid/index.cjs.map +1 -0
- package/lib/adapters/solid/index.d.cts +74 -0
- package/lib/adapters/solid/index.d.mts +74 -0
- package/lib/adapters/solid/index.mjs +3847 -0
- package/lib/adapters/solid/index.mjs.map +1 -0
- package/lib/filter_engine-DXqu9Vaq.cjs +1836 -0
- package/lib/filter_engine-DXqu9Vaq.cjs.map +1 -0
- package/lib/filter_engine-DmqhEhpA.mjs +1609 -0
- package/lib/filter_engine-DmqhEhpA.mjs.map +1 -0
- package/lib/index.cjs +1693 -1087
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +274 -1129
- package/lib/index.d.mts +294 -1149
- package/lib/index.mjs +1640 -1032
- package/lib/index.mjs.map +1 -1
- package/lib/interface-CTHQ08aY.d.mts +699 -0
- package/lib/interface-DQEIz9Mb.d.cts +699 -0
- package/package.json +25 -1
- package/project.json +2 -2
- package/src/__tests__/components/filter_bar.spec.tsx +1 -1
- package/src/__tests__/components/loading_message.spec.tsx +1 -1
- package/src/__tests__/components/log_message.spec.tsx +1 -1
- package/src/__tests__/components/progress_message.spec.tsx +1 -1
- package/src/__tests__/components/prompt_renderer.spec.tsx +1 -1
- package/src/__tests__/components/sidebar.spec.tsx +1 -1
- package/src/__tests__/services/logger.spec.ts +5 -3
- package/src/__tests__/utils/render-utils.tsx +1 -1
- package/src/adapters/index.ts +2 -0
- package/src/adapters/interface.ts +50 -0
- package/src/{components → adapters/react/components}/file/file_log.tsx +2 -2
- package/src/{components → adapters/react/components}/filter/filter_bar.tsx +2 -2
- package/src/{components → adapters/react/components}/help/help_overlay.tsx +2 -2
- package/src/{components → adapters/react/components}/log/log_message.tsx +2 -2
- package/src/{components → adapters/react/components}/prompt/prompt_renderer.tsx +1 -1
- package/src/{components → adapters/react/components}/screen/group_renderer.tsx +1 -1
- package/src/{components → adapters/react/components}/screen/loading_message.tsx +2 -3
- package/src/{components → adapters/react/components}/screen/message_renderer.tsx +1 -1
- package/src/{components → adapters/react/components}/screen/progress_message.tsx +1 -1
- package/src/{components → adapters/react/components}/screen/screen_bridge.tsx +2 -2
- package/src/{components → adapters/react/components}/screen/table_message.tsx +2 -2
- package/src/{components → adapters/react/components}/screen_manager_bridge.tsx +5 -5
- package/src/{components → adapters/react/components}/sidebar/sidebar.tsx +1 -1
- package/src/{components → adapters/react/components}/sidebar/sidebar_item.tsx +1 -1
- package/src/adapters/react/context/index.ts +1 -0
- package/src/{context → adapters/react/context}/logger_context.tsx +2 -2
- package/src/adapters/react/hooks/index.ts +1 -0
- package/src/{hooks → adapters/react/hooks}/use_theme.ts +1 -1
- package/src/adapters/react/index.ts +39 -0
- package/src/adapters/solid/components/file/file_log.tsx +221 -0
- package/src/adapters/solid/components/file/index.ts +1 -0
- package/src/adapters/solid/components/filter/filter_bar.tsx +84 -0
- package/src/adapters/solid/components/filter/index.ts +1 -0
- package/src/adapters/solid/components/help/help_overlay.tsx +106 -0
- package/src/adapters/solid/components/help/index.ts +1 -0
- package/src/adapters/solid/components/log/index.ts +1 -0
- package/src/adapters/solid/components/log/log_message.tsx +92 -0
- package/src/adapters/solid/components/prompt/index.ts +2 -0
- package/src/adapters/solid/components/prompt/prompt_renderer.tsx +350 -0
- package/src/adapters/solid/components/screen/group_renderer.tsx +61 -0
- package/src/adapters/solid/components/screen/index.ts +6 -0
- package/src/adapters/solid/components/screen/loading_message.tsx +39 -0
- package/src/adapters/solid/components/screen/message_renderer.tsx +122 -0
- package/src/adapters/solid/components/screen/progress_message.tsx +61 -0
- package/src/adapters/solid/components/screen/screen_bridge.tsx +155 -0
- package/src/adapters/solid/components/screen/table_message.tsx +58 -0
- package/src/adapters/solid/components/screen_manager_bridge.tsx +243 -0
- package/src/adapters/solid/components/sidebar/index.ts +3 -0
- package/src/adapters/solid/components/sidebar/sidebar.tsx +108 -0
- package/src/adapters/solid/components/sidebar/sidebar_item.tsx +55 -0
- package/src/adapters/solid/components/sidebar/sidebar_separator.tsx +13 -0
- package/src/adapters/solid/context/index.ts +2 -0
- package/src/adapters/solid/context/logger_context.tsx +95 -0
- package/src/adapters/solid/hooks/index.ts +1 -0
- package/src/adapters/solid/hooks/use_theme.ts +12 -0
- package/src/adapters/solid/index.tsx +43 -0
- package/src/adapters/solid/jsx.d.ts +98 -0
- package/src/components/index.ts +3 -15
- package/src/context/index.ts +3 -1
- package/src/factories/index.ts +1 -0
- package/src/factories/isomorphic-logger.factory.ts +22 -0
- package/src/factories/screen.factory.ts +2 -2
- package/src/hooks/index.ts +3 -1
- package/src/index.ts +10 -0
- package/src/interfaces/index.ts +1 -0
- package/src/interfaces/isomorphic-logger.ts +9 -0
- package/src/keyboard/create_bindings.ts +2 -2
- package/src/overrides/index.ts +1 -0
- package/src/overrides/missing-adapter.override.ts +20 -0
- package/src/services/index.ts +1 -1
- package/src/services/logger.ts +1 -1
- package/src/services/screen.ts +3 -3
- package/src/services/{screen_manager.tsx → screen_manager.ts} +22 -11
- package/src/tokens/adapter.ts +10 -0
- package/src/tokens/index.ts +2 -0
- package/src/tokens/logger.ts +9 -0
- package/src/tokens/screen-manager.ts +9 -0
- package/src/types/screen.types.ts +1 -1
- package/src/utils/format.ts +3 -2
- package/tsconfig.base.json +31 -0
- package/tsconfig.json +6 -12
- package/tsconfig.react.json +16 -0
- package/tsconfig.solid.json +16 -0
- package/tsdown.config.mts +69 -16
- package/vitest.config.mts +20 -0
- package/lib/index.d.cts.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/screen_manager_bridge-Cp2p1Ix3.cjs +0 -3
- package/lib/screen_manager_bridge-D2BBwKcF.mjs +0 -3046
- package/lib/screen_manager_bridge-D2BBwKcF.mjs.map +0 -1
- package/lib/screen_manager_bridge-DT-l0rxa.mjs +0 -3
- package/lib/screen_manager_bridge-hMUrLiBP.cjs +0 -3369
- package/lib/screen_manager_bridge-hMUrLiBP.cjs.map +0 -1
- /package/src/{components → adapters/react/components}/file/index.ts +0 -0
- /package/src/{components → adapters/react/components}/filter/index.ts +0 -0
- /package/src/{components → adapters/react/components}/help/index.ts +0 -0
- /package/src/{components → adapters/react/components}/log/index.ts +0 -0
- /package/src/{components → adapters/react/components}/prompt/index.ts +0 -0
- /package/src/{components → adapters/react/components}/screen/index.ts +0 -0
- /package/src/{components → adapters/react/components}/sidebar/index.ts +0 -0
- /package/src/{components → adapters/react/components}/sidebar/sidebar_separator.tsx +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["value","children","memo","e","i","sources","insert","createTextNode","insertNode","createSlotNode","dispose","mergeProps2","children","useContext2","BaseRenderable2","TextNodeRenderable2","isTextNodeRenderable2","TextRenderable2","TextNodeRenderable3","TextRenderable3","InputRenderable2","SelectRenderable2","TabSelectRenderable2"],"sources":["../../../../../node_modules/solid-js/dist/solid.js","../../../../../node_modules/@opentui/solid/index.js","../../../src/adapters/solid/context/logger_context.tsx","../../../src/adapters/solid/hooks/use_theme.ts","../../../src/adapters/solid/components/filter/filter_bar.tsx","../../../src/adapters/solid/components/help/help_overlay.tsx","../../../src/adapters/solid/components/prompt/prompt_renderer.tsx","../../../src/adapters/solid/components/file/file_log.tsx","../../../src/adapters/solid/components/log/log_message.tsx","../../../src/adapters/solid/components/screen/loading_message.tsx","../../../src/adapters/solid/components/screen/progress_message.tsx","../../../src/adapters/solid/components/screen/table_message.tsx","../../../src/adapters/solid/components/screen/message_renderer.tsx","../../../src/adapters/solid/components/screen/group_renderer.tsx","../../../src/adapters/solid/components/screen/screen_bridge.tsx","../../../src/adapters/solid/components/sidebar/sidebar_item.tsx","../../../src/adapters/solid/components/sidebar/sidebar_separator.tsx","../../../src/adapters/solid/components/sidebar/sidebar.tsx","../../../src/adapters/solid/components/screen_manager_bridge.tsx","../../../src/adapters/solid/index.tsx"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const len = keys.length;\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = len > 1 ? keys.flat() : keys[0];\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.includes(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.includes(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.includes(k));\n }\n }, propTraps));\n return res;\n }\n const objects = [];\n for (let i = 0; i <= len; i++) {\n objects[i] = {};\n }\n for (const propName of Object.getOwnPropertyNames(props)) {\n let keyIndex = len;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].includes(propName)) {\n keyIndex = i;\n break;\n }\n }\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n isDefaultDesc ? objects[keyIndex][propName] = desc.value : Object.defineProperty(objects[keyIndex], propName, desc);\n }\n return objects;\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","// @bun\n// index.ts\nimport { CliRenderer, createCliRenderer, engine as engine2 } from \"@opentui/core\";\nimport { createTestRenderer } from \"@opentui/core/testing\";\n\n// src/elements/index.ts\nimport {\n ASCIIFontRenderable,\n BoxRenderable,\n CodeRenderable,\n DiffRenderable,\n InputRenderable as InputRenderable2,\n LineNumberRenderable,\n ScrollBoxRenderable,\n SelectRenderable as SelectRenderable2,\n TabSelectRenderable as TabSelectRenderable2,\n TextareaRenderable,\n TextAttributes,\n TextNodeRenderable as TextNodeRenderable3,\n TextRenderable as TextRenderable3\n} from \"@opentui/core\";\n\n// src/elements/hooks.ts\nimport {\n engine,\n Timeline\n} from \"@opentui/core\";\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\";\nvar RendererContext = createContext();\nvar useRenderer = () => {\n const renderer = useContext(RendererContext);\n if (!renderer) {\n throw new Error(\"No renderer found\");\n }\n return renderer;\n};\nvar onResize = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"resize\", callback);\n });\n onCleanup(() => {\n renderer.off(\"resize\", callback);\n });\n};\nvar useTerminalDimensions = () => {\n const renderer = useRenderer();\n const [terminalDimensions, setTerminalDimensions] = createSignal({ width: renderer.width, height: renderer.height });\n const callback = (width, height) => {\n setTerminalDimensions({ width, height });\n };\n onResize(callback);\n return terminalDimensions;\n};\nvar useKeyboard = (callback, options) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"keypress\", callback);\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback);\n }\n });\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback);\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback);\n }\n });\n};\nvar usePaste = (callback) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"paste\", callback);\n });\n onCleanup(() => {\n keyHandler.off(\"paste\", callback);\n });\n};\nvar useKeyHandler = useKeyboard;\nvar useSelectionHandler = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"selection\", callback);\n });\n onCleanup(() => {\n renderer.off(\"selection\", callback);\n });\n};\nvar useTimeline = (options = {}) => {\n const timeline = new Timeline(options);\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n });\n onCleanup(() => {\n timeline.pause();\n engine.unregister(timeline);\n });\n return timeline;\n};\n// src/elements/extras.ts\nimport { createEffect, createMemo as createMemo2, getOwner, onCleanup as onCleanup2, runWithOwner, splitProps, untrack as untrack2 } from \"solid-js\";\n\n// src/reconciler.ts\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable\n} from \"@opentui/core\";\nimport { useContext as useContext2 } from \"solid-js\";\n\n// src/renderer/universal.js\nimport { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js\";\nvar memo = (fn) => createMemo(() => fn());\nfunction createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial)\n initial = [];\n if (typeof accessor !== \"function\")\n return insertExpression(parent, accessor, initial, marker);\n createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\")\n current = current();\n if (value === current)\n return current;\n const t = typeof value, multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\")\n value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else\n node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), current = value);\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\")\n v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi)\n return current = replacement;\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else\n reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, multi && current || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi)\n return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else\n replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length;i < len; i++) {\n let item = array[i], t;\n if (item == null || item === true || item === false)\n ;\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\")\n item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else\n normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = getNextSibling(a[aEnd - 1]), map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after;\n while (bStart < bEnd)\n insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart]))\n removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart, sequence = 1, t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence)\n break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index)\n insertNode(parentNode, b[bStart++], node);\n } else\n replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else\n aStart++;\n } else\n removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while (removed = getFirstChild(parent))\n removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return replacement;\n }\n const node = replacement || createSlotNode();\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1;i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else\n isParent && removeNode(parent, el);\n } else\n inserted = true;\n }\n } else\n insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length;i < len; i++)\n insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\")\n continue;\n const value = props[prop];\n if (value === prevProps[prop])\n continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot((dispose) => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren));\n } else\n spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\n// src/renderer/index.ts\nimport { mergeProps as mergeProps2 } from \"solid-js\";\nfunction createRenderer2(options) {\n const renderer = createRenderer(options);\n renderer.mergeProps = mergeProps2;\n return renderer;\n}\n\n// src/utils/id-counter.ts\nvar idCounter = new Map;\nfunction getNextId(elementType) {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0);\n }\n const value = idCounter.get(elementType) + 1;\n idCounter.set(elementType, value);\n return `${elementType}-${value}`;\n}\n\n// src/utils/log.ts\nvar log = (...args) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args);\n }\n};\n\n// src/reconciler.ts\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\nvar logId = (node) => {\n if (!node)\n return;\n return node.id;\n};\nvar getNodeChildren = (node) => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map((c) => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.findIndex((el) => el.id === anchor.id);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n if (node instanceof SlotRenderable) {\n node.parent = null;\n node = node.getSlotChild(parent);\n }\n parent.remove(node.id);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(value, { id });\n}\nfunction createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n return parent;\n}\nvar {\n render: _render,\n effect,\n memo: memo2,\n createComponent: createComponent2,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps: mergeProps3,\n use\n} = createRenderer2({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext2(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, { id });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode))\n return;\n textNode.replace(value, 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable))\n return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event)\n break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop])\n continue;\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n node[name] = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n break;\n default:\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return;\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});\n\n// src/elements/extras.ts\nfunction Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(), mount = () => props.mount || renderer.root, owner = getOwner();\n let content;\n createEffect(() => {\n content || (content = runWithOwner(owner, () => createMemo2(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"), renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup2(() => el.remove(container.id));\n }, undefined, { render: true });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo2(component);\n return createMemo2(() => {\n const component2 = cached();\n switch (typeof component2) {\n case \"function\":\n return untrack2(() => component2(props));\n case \"string\":\n const el = createElement(component2);\n spread(el, props);\n return el;\n default:\n break;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n// src/elements/slot.ts\nimport { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2, Yoga } from \"@opentui/core\";\n\nclass SlotBaseRenderable extends BaseRenderable2 {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(id) {}\n insertBefore(obj, anchor) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getRenderable(id) {\n return;\n }\n getChildrenCount() {\n return 0;\n }\n requestRender() {}\n findDescendantById(id) {\n return;\n }\n}\n\nclass TextSlotRenderable extends TextNodeRenderable2 {\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super({ id });\n this._visible = false;\n this.slotParent = parent;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.slotParent?.destroy();\n super.destroy();\n }\n}\n\nclass LayoutSlotRenderable extends SlotBaseRenderable {\n yogaNode;\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super(id);\n this._visible = false;\n this.slotParent = parent;\n this.yogaNode = Yoga.default.Node.create();\n this.yogaNode.setDisplay(Yoga.Display.None);\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {}\n updateLayout() {}\n onRemove() {}\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n super.destroy();\n this.slotParent?.destroy();\n }\n}\n\nclass SlotRenderable extends SlotBaseRenderable {\n layoutNode;\n textNode;\n destroyed = false;\n constructor(id) {\n super(id);\n this._visible = false;\n }\n getSlotChild(parent) {\n if (isTextNodeRenderable2(parent) || parent instanceof TextRenderable2) {\n if (!this.textNode) {\n this.textNode = new TextSlotRenderable(`slot-text-${this.id}`, this);\n }\n return this.textNode;\n }\n if (!this.layoutNode) {\n this.layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}`, this);\n }\n return this.layoutNode;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n if (this.layoutNode) {\n this.layoutNode.destroy();\n }\n if (this.textNode) {\n this.textNode.destroy();\n }\n }\n}\n\n// src/elements/index.ts\nclass SpanRenderable extends TextNodeRenderable3 {\n _ctx;\n constructor(_ctx, options) {\n super(options);\n this._ctx = _ctx;\n }\n}\nvar textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"];\n\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options, modifier) {\n super(null, options);\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD;\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC;\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE;\n }\n }\n}\n\nclass BoldSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"b\");\n }\n}\n\nclass ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"i\");\n }\n}\n\nclass UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"u\");\n }\n}\n\nclass LineBreakRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n super(null, options);\n this.add();\n }\n add() {\n return super.add(`\n`);\n }\n}\n\nclass LinkRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n const linkOptions = {\n ...options,\n link: { url: options.href }\n };\n super(null, linkOptions);\n }\n}\nvar baseComponents = {\n box: BoxRenderable,\n text: TextRenderable3,\n input: InputRenderable2,\n select: SelectRenderable2,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable2,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable\n};\nvar componentCatalogue = { ...baseComponents };\nfunction extend(objects) {\n Object.assign(componentCatalogue, objects);\n}\nfunction getComponentCatalogue() {\n return componentCatalogue;\n}\n\n// index.ts\nvar render = async (node, rendererOrConfig = {}) => {\n let isDisposed = false;\n let dispose;\n const renderer = rendererOrConfig instanceof CliRenderer ? rendererOrConfig : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n rendererOrConfig.onDestroy?.();\n }\n });\n if (rendererOrConfig instanceof CliRenderer) {\n renderer.on(\"destroy\", () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n });\n }\n engine2.attach(renderer);\n dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), renderer.root);\n};\nvar testRender = async (node, renderConfig = {}) => {\n let isDisposed = false;\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n renderConfig.onDestroy?.();\n }\n });\n engine2.attach(testSetup.renderer);\n const dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return testSetup.renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), testSetup.renderer.root);\n return testSetup;\n};\nexport {\n useTimeline,\n useTerminalDimensions,\n useSelectionHandler,\n useRenderer,\n usePaste,\n useKeyboard,\n useKeyHandler,\n use,\n textNodeKeys,\n testRender,\n spread,\n setProp,\n render,\n onResize,\n mergeProps3 as mergeProps,\n memo2 as memo,\n insertNode,\n insert,\n getComponentCatalogue,\n extend,\n effect,\n createTextNode,\n createSlotNode,\n createElement,\n createDynamic,\n createComponent2 as createComponent,\n componentCatalogue,\n baseComponents,\n _render,\n UnderlineSpanRenderable,\n TextSlotRenderable,\n SlotRenderable,\n RendererContext,\n Portal,\n LinkRenderable,\n LineBreakRenderable,\n LayoutSlotRenderable,\n ItalicSpanRenderable,\n Dynamic,\n BoldSpanRenderable\n};\n","import { SyntaxStyle, type TreeSitterClient } from '@opentui/core'\nimport { createContext, useContext, createMemo, type ParentProps } from 'solid-js'\n\nimport { darkTheme, resolveTheme } from '../../../themes/index.ts'\n\nimport type { LoggerContextValue, LogLevelColorMap, Theme, ThemePreset } from '../../../types/index.ts'\n\nconst LoggerContext = createContext<LoggerContextValue>()\n\nexport interface LoggerProviderProps extends ParentProps {\n /** Custom syntax style for code highlighting */\n syntaxStyle?: SyntaxStyle\n\n /** Tree-sitter client for parsing */\n treeSitterClient?: TreeSitterClient\n\n /**\n * Theme configuration.\n * Can be a preset name (\"dark\", \"light\", \"high-contrast\") or a Theme object.\n * @default \"dark\"\n */\n theme?: Theme | ThemePreset\n\n /**\n * @deprecated Use `theme` instead. Custom log level colors.\n * If both `theme` and `levelColors` are provided, `levelColors` takes precedence.\n */\n levelColors?: Partial<LogLevelColorMap>\n}\n\n/**\n * LoggerProvider - Provides shared context for logger components.\n *\n * This context provides:\n * - Shared SyntaxStyle instance for consistent code highlighting\n * - Optional TreeSitterClient for advanced parsing\n * - Theme configuration for consistent styling\n * - Log level color configuration (for backwards compatibility)\n *\n * @example\n * // Using a preset theme\n * <LoggerProvider theme=\"dark\">\n * <ScreenManager screens={screens} activeScreenId={activeId}>\n * <Screen name=\"Logs\">\n * <LogMessage level=\"info\">Hello</LogMessage>\n * </Screen>\n * </ScreenManager>\n * </LoggerProvider>\n *\n * @example\n * // Using a custom theme\n * <LoggerProvider theme={myCustomTheme}>\n * ...\n * </LoggerProvider>\n */\nexport function LoggerProvider(props: LoggerProviderProps) {\n // Create or use provided SyntaxStyle\n const syntaxStyle = createMemo(() => props.syntaxStyle ?? SyntaxStyle.create())\n\n // Resolve theme (could be a preset name or a theme object)\n const theme = createMemo(() => resolveTheme(props.theme ?? 'dark'))\n\n // Derive levelColors from theme, allowing custom overrides for backwards compatibility\n const levelColors = createMemo(() => ({\n ...theme().logLevels,\n ...props.levelColors,\n }))\n\n const value = createMemo<LoggerContextValue>(() => ({\n syntaxStyle: syntaxStyle(),\n treeSitterClient: props.treeSitterClient,\n levelColors: levelColors(),\n theme: theme(),\n }))\n\n return <LoggerContext.Provider value={value()}>{props.children}</LoggerContext.Provider>\n}\n\n/**\n * Hook to access logger context.\n * Returns default values if used outside LoggerProvider.\n */\nexport function useLoggerContext(): LoggerContextValue {\n const context = useContext(LoggerContext)\n if (!context) {\n // Return defaults if not in a provider (allows standalone usage)\n return {\n syntaxStyle: undefined,\n treeSitterClient: undefined,\n levelColors: darkTheme.logLevels,\n theme: darkTheme,\n }\n }\n return context\n}\n","import { useLoggerContext } from '../context/index.ts'\n\nimport type { Theme } from '../../../types/index.ts'\n\n/**\n * Hook to access the current theme.\n * Returns the theme from LoggerContext.\n */\nexport function useTheme(): Theme {\n const { theme } = useLoggerContext()\n return theme\n}\n","import { TextAttributes } from '@opentui/core'\nimport { Show, For } from 'solid-js'\n\nimport type { LogLevel } from '@navios/core'\n\nimport { useTheme } from '../../hooks/index.ts'\nimport { ALL_LOG_LEVELS } from '../../../../types/index.ts'\n\nimport type { FilterState, LevelCounts } from '../../../../types/index.ts'\n\nexport interface FilterBarProps {\n filter: FilterState\n levelCounts: LevelCounts\n}\n\nconst LEVEL_LABELS: Record<LogLevel, string> = {\n verbose: 'V',\n debug: 'D',\n log: 'L',\n warn: 'W',\n error: 'E',\n fatal: 'F',\n}\n\nexport function FilterBar(props: FilterBarProps) {\n const theme = useTheme()\n const isSearchFocused = () => props.filter.focusedField === 'search'\n\n return (\n <box\n flexDirection=\"column\"\n backgroundColor={theme.filter.background}\n borderColor={theme.filter.border}\n border={['bottom']}\n paddingLeft={1}\n paddingRight={1}\n >\n {/* Search input row */}\n <box flexDirection=\"row\" gap={1}>\n <text fg={isSearchFocused() ? theme.colors.primary : theme.filter.textDim}>/</text>\n <text fg={props.filter.searchQuery ? theme.filter.inputText : theme.filter.inputPlaceholder}>\n {props.filter.searchQuery || 'Search logs...'}\n </text>\n <Show when={isSearchFocused()}>\n <text fg={theme.filter.cursor} attributes={TextAttributes.BLINK}>\n _\n </text>\n </Show>\n </box>\n\n {/* Level filters row */}\n <box flexDirection=\"row\" gap={1}>\n <text fg={theme.filter.textDim}>Levels:</text>\n <For each={ALL_LOG_LEVELS}>\n {(level, index) => {\n const isEnabled = () => props.filter.enabledLevels.has(level)\n const count = () => props.levelCounts[level]\n const levelColor = () => theme.logLevels[level].border\n const isLevelsFocused = () => props.filter.focusedField === 'levels'\n\n return (\n <box flexDirection=\"row\">\n <text\n fg={isEnabled() ? levelColor() : theme.filter.inactiveLevel}\n attributes={isLevelsFocused() ? TextAttributes.BOLD : undefined}\n >\n {index() + 1}:{LEVEL_LABELS[level]}\n </text>\n <Show when={count() > 0}>\n <text fg={theme.filter.textDim}>({count() > 99 ? '99+' : count()})</text>\n </Show>\n </box>\n )\n }}\n </For>\n </box>\n\n {/* Hints */}\n <box flexDirection=\"row\">\n <text fg={theme.filter.textDim}>Tab: switch fields | 1-7: toggle levels | Esc: close</text>\n </box>\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { For, Show, createMemo } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\nimport { formatKeyBinding } from '../../../../keyboard/index.ts'\n\nimport type { KeyBinding, KeyBindingCategory } from '../../../../types/index.ts'\n\nexport interface HelpOverlayProps {\n bindings: KeyBinding[]\n}\n\nconst CATEGORY_ORDER: KeyBindingCategory[] = ['general', 'navigation', 'screen', 'filter', 'prompt']\n\nconst CATEGORY_LABELS: Record<KeyBindingCategory, string> = {\n general: 'General',\n navigation: 'Navigation',\n screen: 'Screen',\n filter: 'Filter',\n prompt: 'Prompts',\n}\n\nfunction groupByCategory(bindings: KeyBinding[]): Record<KeyBindingCategory, KeyBinding[]> {\n const grouped: Record<KeyBindingCategory, KeyBinding[]> = {\n general: [],\n navigation: [],\n screen: [],\n filter: [],\n prompt: [],\n }\n\n for (const binding of bindings) {\n if (binding.description) {\n grouped[binding.category].push(binding)\n }\n }\n\n return grouped\n}\n\nexport function HelpOverlay(props: HelpOverlayProps) {\n const theme = useTheme()\n const grouped = createMemo(() => groupByCategory(props.bindings))\n\n return (\n <box\n position=\"absolute\"\n top={1}\n left={2}\n right={2}\n bottom={1}\n backgroundColor={theme.help.background}\n borderColor={theme.help.border}\n border={['top', 'bottom', 'left', 'right']}\n flexDirection=\"column\"\n paddingLeft={2}\n paddingRight={2}\n paddingTop={1}\n paddingBottom={1}\n >\n {/* Header */}\n <box marginBottom={1}>\n <text fg={theme.help.title} attributes={TextAttributes.BOLD}>\n Keyboard Shortcuts\n </text>\n </box>\n\n {/* Categories */}\n <scrollbox scrollY flexGrow={1}>\n <box flexDirection=\"column\" gap={1}>\n <For each={CATEGORY_ORDER}>\n {(category) => {\n const categoryBindings = () => grouped()[category]\n\n return (\n <Show when={categoryBindings().length > 0}>\n <box flexDirection=\"column\">\n <text fg={theme.help.category} attributes={TextAttributes.BOLD}>\n {CATEGORY_LABELS[category]}\n </text>\n\n <For each={categoryBindings()}>\n {(binding) => (\n <box flexDirection=\"row\" paddingLeft={2}>\n <text fg={theme.help.key} width={14}>\n {formatKeyBinding(binding)}\n </text>\n <text fg={theme.help.description}>{binding.description}</text>\n </box>\n )}\n </For>\n </box>\n </Show>\n )\n }}\n </For>\n </box>\n </scrollbox>\n\n {/* Footer */}\n <box marginTop={1} borderColor={theme.separator.line} border={['top']} paddingTop={1}>\n <text fg={theme.help.hint}>Press ? or Esc to close</text>\n </box>\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { Show, For, Switch, Match } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\n\nimport type {\n PromptData,\n ChoicePromptData,\n ConfirmPromptData,\n InputPromptData,\n MultiChoicePromptData,\n PromptTheme,\n} from '../../../../types/index.ts'\n\nexport interface PromptRendererProps {\n prompt: PromptData\n}\n\nexport function PromptRenderer(props: PromptRendererProps) {\n const theme = useTheme()\n // Calculate timeout remaining if applicable\n const timeoutRemaining = () => getTimeoutRemaining(props.prompt)\n\n return (\n <Switch fallback={null}>\n <Match when={props.prompt.type === 'choice'}>\n <ChoicePromptRenderer\n prompt={props.prompt as ChoicePromptData}\n timeoutRemaining={timeoutRemaining()}\n colors={theme.prompt}\n />\n </Match>\n <Match when={props.prompt.type === 'confirm'}>\n <ConfirmPromptRenderer\n prompt={props.prompt as ConfirmPromptData}\n timeoutRemaining={timeoutRemaining()}\n colors={theme.prompt}\n />\n </Match>\n <Match when={props.prompt.type === 'input'}>\n <InputPromptRenderer\n prompt={props.prompt as InputPromptData}\n timeoutRemaining={timeoutRemaining()}\n colors={theme.prompt}\n />\n </Match>\n <Match when={props.prompt.type === 'multiChoice'}>\n <MultiChoicePromptRenderer\n prompt={props.prompt as MultiChoicePromptData}\n timeoutRemaining={timeoutRemaining()}\n colors={theme.prompt}\n />\n </Match>\n </Switch>\n )\n}\n\nfunction getTimeoutRemaining(prompt: PromptData): number | null {\n if (!prompt.timeout || !prompt.timeoutStarted) return null\n const elapsed = Date.now() - prompt.timeoutStarted\n const remaining = Math.max(0, prompt.timeout - elapsed)\n return Math.ceil(remaining / 1000)\n}\n\nfunction TimeoutIndicator(props: { seconds: number | null; colors: PromptTheme }) {\n return (\n <Show when={props.seconds !== null}>\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n {' '}\n (auto-select in {props.seconds}s)\n </text>\n </Show>\n )\n}\n\ninterface ChoicePromptRendererProps {\n prompt: ChoicePromptData\n timeoutRemaining: number | null\n colors: PromptTheme\n}\n\nfunction ChoicePromptRenderer(props: ChoicePromptRendererProps) {\n return (\n <box\n flexDirection=\"column\"\n borderColor={props.colors.focusBorder}\n border={['left']}\n paddingLeft={1}\n paddingRight={1}\n gap={1}\n >\n {/* Question */}\n <box flexDirection=\"row\">\n <text fg={props.colors.question} attributes={TextAttributes.BOLD}>\n ? {props.prompt.question}\n </text>\n <TimeoutIndicator seconds={props.timeoutRemaining} colors={props.colors} />\n </box>\n\n {/* Choices */}\n <box flexDirection=\"column\">\n <For each={props.prompt.choices}>\n {(choice, index) => {\n const isSelected = () => index() === props.prompt.selectedIndex\n const showInput = () => isSelected() && choice.input && props.prompt.inputMode\n\n return (\n <box flexDirection=\"row\">\n {/* Selection indicator */}\n <text fg={isSelected() ? props.colors.optionSelected : 'transparent'}>{'>'} </text>\n\n {/* Choice label */}\n <text\n fg={isSelected() ? props.colors.optionText : props.colors.optionTextDim}\n attributes={isSelected() ? TextAttributes.BOLD : undefined}\n >\n {choice.label}\n </text>\n\n {/* Input field (if applicable) */}\n <Show when={showInput()}>\n <box flexDirection=\"row\" marginLeft={1}>\n <text fg={props.colors.inputText}>: </text>\n <text fg={props.colors.inputText}>{props.prompt.inputValue}</text>\n <text fg={props.colors.inputCursor} attributes={TextAttributes.BLINK}>\n _\n </text>\n </box>\n </Show>\n\n {/* Show hint for input option when selected but not in input mode */}\n <Show when={isSelected() && choice.input && !props.prompt.inputMode}>\n <text fg={props.colors.optionTextDim}> (press Enter to type)</text>\n </Show>\n </box>\n )\n }}\n </For>\n </box>\n\n {/* Instructions */}\n <Show\n when={props.prompt.inputMode}\n fallback={\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n ↑/↓ to navigate, Enter to select\n </text>\n }\n >\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n Type your answer, Enter to submit, Esc to cancel\n </text>\n </Show>\n </box>\n )\n}\n\ninterface ConfirmPromptRendererProps {\n prompt: ConfirmPromptData\n timeoutRemaining: number | null\n colors: PromptTheme\n}\n\nfunction ConfirmPromptRenderer(props: ConfirmPromptRendererProps) {\n const confirmSelected = () => props.prompt.selectedValue === true\n const cancelSelected = () => props.prompt.selectedValue === false\n\n return (\n <box\n flexDirection=\"column\"\n borderColor={props.colors.focusBorder}\n border={['left']}\n paddingLeft={1}\n paddingRight={1}\n gap={1}\n >\n {/* Question */}\n <box flexDirection=\"row\">\n <text fg={props.colors.question} attributes={TextAttributes.BOLD}>\n ? {props.prompt.question}\n </text>\n <TimeoutIndicator seconds={props.timeoutRemaining} colors={props.colors} />\n </box>\n\n {/* Buttons */}\n <box flexDirection=\"row\" gap={2}>\n {/* Confirm button */}\n <box\n backgroundColor={confirmSelected() ? props.colors.buttonSelectedBackground : undefined}\n paddingLeft={1}\n paddingRight={1}\n >\n <text\n fg={confirmSelected() ? props.colors.confirmButton : props.colors.optionTextDim}\n attributes={confirmSelected() ? TextAttributes.BOLD : undefined}\n >\n {confirmSelected() ? '>' : ' '} {props.prompt.confirmText}\n </text>\n </box>\n\n {/* Cancel button */}\n <box\n backgroundColor={cancelSelected() ? props.colors.buttonSelectedBackground : undefined}\n paddingLeft={1}\n paddingRight={1}\n >\n <text\n fg={cancelSelected() ? props.colors.cancelButton : props.colors.optionTextDim}\n attributes={cancelSelected() ? TextAttributes.BOLD : undefined}\n >\n {cancelSelected() ? '>' : ' '} {props.prompt.cancelText}\n </text>\n </box>\n </box>\n\n {/* Instructions */}\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n ←/→ to select, Enter to confirm\n </text>\n </box>\n )\n}\n\ninterface InputPromptRendererProps {\n prompt: InputPromptData\n timeoutRemaining: number | null\n colors: PromptTheme\n}\n\nfunction InputPromptRenderer(props: InputPromptRendererProps) {\n const hasValue = () => props.prompt.value.length > 0\n\n return (\n <box\n flexDirection=\"column\"\n borderColor={props.colors.focusBorder}\n border={['left']}\n paddingLeft={1}\n paddingRight={1}\n gap={1}\n >\n {/* Question */}\n <box flexDirection=\"row\">\n <text fg={props.colors.question} attributes={TextAttributes.BOLD}>\n ? {props.prompt.question}\n </text>\n <TimeoutIndicator seconds={props.timeoutRemaining} colors={props.colors} />\n </box>\n\n {/* Input field */}\n <box flexDirection=\"row\" borderColor={props.colors.inputBorder} border={['left']} paddingLeft={1}>\n <text fg={hasValue() ? props.colors.inputText : props.colors.inputPlaceholder}>\n {hasValue() ? props.prompt.value : props.prompt.placeholder}\n </text>\n <text fg={props.colors.inputCursor} attributes={TextAttributes.BLINK}>\n _\n </text>\n </box>\n\n {/* Instructions */}\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n Type your answer, Enter to submit\n </text>\n </box>\n )\n}\n\ninterface MultiChoicePromptRendererProps {\n prompt: MultiChoicePromptData\n timeoutRemaining: number | null\n colors: PromptTheme\n}\n\nfunction MultiChoicePromptRenderer(props: MultiChoicePromptRendererProps) {\n const selectedCount = () => props.prompt.selectedIndices.size\n const canSubmit = () => selectedCount() >= props.prompt.minSelect\n\n return (\n <box\n flexDirection=\"column\"\n borderColor={props.colors.focusBorder}\n border={['left']}\n paddingLeft={1}\n paddingRight={1}\n gap={1}\n >\n {/* Question */}\n <box flexDirection=\"row\">\n <text fg={props.colors.question} attributes={TextAttributes.BOLD}>\n ? {props.prompt.question}\n </text>\n <text fg={props.colors.optionTextDim}>\n {' '}\n ({selectedCount()}/{props.prompt.maxSelect} selected)\n </text>\n <TimeoutIndicator seconds={props.timeoutRemaining} colors={props.colors} />\n </box>\n\n {/* Choices */}\n <box flexDirection=\"column\">\n <For each={props.prompt.choices}>\n {(choice, index) => {\n const isFocused = () => index() === props.prompt.focusedIndex\n const isChecked = () => props.prompt.selectedIndices.has(index())\n\n return (\n <box flexDirection=\"row\">\n {/* Focus indicator */}\n <text fg={isFocused() ? props.colors.optionSelected : 'transparent'}>{'>'} </text>\n\n {/* Checkbox */}\n <text fg={isChecked() ? props.colors.optionSelected : props.colors.optionTextDim}>\n {isChecked() ? '[✓]' : '[ ]'}{' '}\n </text>\n\n {/* Choice label */}\n <text\n fg={isFocused() ? props.colors.optionText : props.colors.optionTextDim}\n attributes={isFocused() ? TextAttributes.BOLD : undefined}\n >\n {choice.label}\n </text>\n </box>\n )\n }}\n </For>\n </box>\n\n {/* Instructions */}\n <box flexDirection=\"column\">\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n ↑/↓ to navigate, Space to toggle\n </text>\n <Show\n when={canSubmit()}\n fallback={\n <text fg={props.colors.cancelButton} attributes={TextAttributes.DIM}>\n Select at least {props.prompt.minSelect} option\n {props.prompt.minSelect > 1 ? 's' : ''}\n </text>\n }\n >\n <text fg={props.colors.optionTextDim} attributes={TextAttributes.DIM}>\n Enter to confirm\n </text>\n </Show>\n </box>\n </box>\n )\n}\n","import { Show, For, createMemo } from 'solid-js'\n\nimport { useLoggerContext } from '../../context/index.ts'\nimport { ERROR_HIGHLIGHT_COLORS, HEADER_COLORS, resolveFiletype } from '../../../../utils/index.ts'\n\nimport type {\n FileLogProps,\n FileLogFullProps,\n FileLogDiffProps,\n FileLogPartialProps,\n} from '../../../../types/index.ts'\n\n/**\n * FileLog - Displays file content, diffs, or partial files with error highlighting.\n *\n * Three modes:\n * 1. \"full\" - Display complete file with syntax highlighting\n * 2. \"diff\" - Display unified diff using <diff> component\n * 3. \"partial\" - Display file excerpt with optional error line highlighting\n *\n * @example Full file\n * <FileLog\n * mode=\"full\"\n * filePath=\"src/index.ts\"\n * content={fileContent}\n * />\n *\n * @example Diff\n * <FileLog\n * mode=\"diff\"\n * filePath=\"src/api.ts\"\n * diff={unifiedDiff}\n * view=\"unified\"\n * />\n *\n * @example Partial with error\n * <FileLog\n * mode=\"partial\"\n * filePath=\"src/utils.ts\"\n * content={excerpt}\n * startLine={42}\n * errorLines={[45, 46]}\n * />\n */\nexport function FileLog(props: FileLogProps) {\n const { syntaxStyle, treeSitterClient } = useLoggerContext()\n\n // Auto-detect filetype from path\n const filetype = () => props.filetype ?? resolveFiletype(props.filePath)\n const showHeader = () => props.showHeader ?? true\n const showLineNumbers = () => props.showLineNumbers ?? true\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n {/* File header */}\n <Show when={showHeader()}>\n <box\n backgroundColor={props.headerBackgroundColor ?? HEADER_COLORS.background}\n paddingLeft={1}\n paddingRight={1}\n border={['bottom']}\n borderColor={HEADER_COLORS.border}\n >\n <text fg={HEADER_COLORS.text}>{props.filePath}</text>\n </box>\n </Show>\n\n {/* Content based on mode */}\n <Show when={props.mode === 'full'}>\n <FileLogFull\n {...(props as FileLogFullProps)}\n filetype={filetype()}\n syntaxStyle={syntaxStyle}\n treeSitterClient={treeSitterClient}\n showLineNumbers={showLineNumbers()}\n />\n </Show>\n\n <Show when={props.mode === 'diff'}>\n <FileLogDiff\n {...(props as FileLogDiffProps)}\n filetype={filetype()}\n syntaxStyle={syntaxStyle}\n treeSitterClient={treeSitterClient}\n />\n </Show>\n\n <Show when={props.mode === 'partial'}>\n <FileLogPartial\n {...(props as FileLogPartialProps)}\n filetype={filetype()}\n syntaxStyle={syntaxStyle}\n treeSitterClient={treeSitterClient}\n showLineNumbers={showLineNumbers()}\n />\n </Show>\n </box>\n )\n}\n\ninterface FileLogInternalProps {\n filetype?: string\n syntaxStyle?: ReturnType<typeof useLoggerContext>['syntaxStyle']\n treeSitterClient?: ReturnType<typeof useLoggerContext>['treeSitterClient']\n}\n\n/**\n * Full file display with syntax highlighting.\n */\nfunction FileLogFull(props: FileLogFullProps & FileLogInternalProps) {\n return (\n <Show\n when={props.syntaxStyle}\n fallback={\n <box paddingLeft={1} paddingRight={1}>\n <text>{props.content}</text>\n </box>\n }\n >\n <code\n content={props.content}\n filetype={props.filetype}\n syntaxStyle={props.syntaxStyle}\n treeSitterClient={props.treeSitterClient}\n />\n </Show>\n )\n}\n\n/**\n * Diff display using the built-in <diff> component.\n */\nfunction FileLogDiff(props: FileLogDiffProps & FileLogInternalProps) {\n const view = () => props.view ?? 'unified'\n\n return (\n <Show\n when={props.syntaxStyle}\n fallback={\n <box paddingLeft={1} paddingRight={1}>\n <text>{props.diff}</text>\n </box>\n }\n >\n <diff\n diff={props.diff}\n view={view()}\n filetype={props.filetype}\n syntaxStyle={props.syntaxStyle}\n treeSitterClient={props.treeSitterClient}\n />\n </Show>\n )\n}\n\n/**\n * Partial file display with error line highlighting.\n *\n * This component renders a file excerpt and highlights specific lines\n * as errors using box overlays with colored backgrounds.\n */\nfunction FileLogPartial(props: FileLogPartialProps & FileLogInternalProps) {\n // Parse content into lines for error highlighting\n const lines = createMemo(() => props.content.split('\\n'))\n\n // Calculate which lines are errors (relative to startLine)\n const errorLineSet = createMemo(() => new Set(props.errorLines ?? []))\n\n // Error colors\n const errorBg = () => props.errorLineBackground ?? ERROR_HIGHLIGHT_COLORS.background\n const errorBorder = () => props.errorLineBorderColor ?? ERROR_HIGHLIGHT_COLORS.border\n\n // Line number width based on max line number\n const maxLineNum = () => props.startLine + lines().length - 1\n const lineNumWidth = () => Math.max(4, String(maxLineNum()).length + 1)\n\n return (\n <box flexDirection=\"column\">\n <For each={lines()}>\n {(line, index) => {\n const lineNumber = () => props.startLine + index()\n const isError = () => errorLineSet().has(lineNumber())\n\n return (\n <box\n flexDirection=\"row\"\n backgroundColor={isError() ? errorBg() : undefined}\n border={isError() ? ['left'] : undefined}\n borderColor={isError() ? errorBorder() : undefined}\n >\n {/* Line number gutter */}\n <Show when={props.showLineNumbers}>\n <box\n width={lineNumWidth()}\n backgroundColor={\n isError() ? ERROR_HIGHLIGHT_COLORS.gutterBackground : HEADER_COLORS.background\n }\n paddingRight={1}\n >\n <text fg=\"#6B7280\">{String(lineNumber()).padStart(lineNumWidth() - 1)}</text>\n </box>\n </Show>\n\n {/* Code line */}\n <box flexGrow={1} paddingLeft={1}>\n <Show when={props.syntaxStyle} fallback={<text>{line}</text>}>\n <code\n content={line}\n filetype={props.filetype}\n syntaxStyle={props.syntaxStyle}\n treeSitterClient={props.treeSitterClient}\n />\n </Show>\n </box>\n </box>\n )\n }}\n </For>\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { Show, type JSX } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\nimport { VARIANT_COLORS } from '../../../../utils/index.ts'\n\nimport type { LogMessageProps } from '../../../../types/index.ts'\n\n/**\n * LogMessage - A chat-like styled log message with level-based coloring.\n *\n * Features:\n * - Left border with prominent color based on log level\n * - Subtle tinted background matching the log level\n * - Optional timestamp and label display\n * - Supports both simple text and complex children\n * - Optional variant for semantic styling (e.g., 'success', 'trace')\n *\n * @example\n * <LogMessage level=\"error\">\n * Connection failed: timeout after 30s\n * </LogMessage>\n *\n * @example\n * <LogMessage level=\"log\" timestamp={new Date()} label=\"API\">\n * Request completed successfully\n * </LogMessage>\n *\n * @example\n * <LogMessage level=\"log\" variant=\"success\">\n * Operation completed successfully\n * </LogMessage>\n */\nexport function LogMessage(props: LogMessageProps & { children?: JSX.Element }) {\n const theme = useTheme()\n\n // Get colors: variant colors take precedence over level colors\n const levelColors = () => (props.variant ? VARIANT_COLORS[props.variant] : theme.logLevels[props.level])\n\n // Resolve final colors (custom overrides level colors)\n const borderColor = () => props.borderColor ?? levelColors().border\n const backgroundColor = () => props.backgroundColor ?? levelColors().background\n\n // Text color: use level-specific text color if defined, otherwise use foreground\n const textColor = () => levelColors().text ?? theme.colors.foreground\n\n // Determine border sides based on style\n const borderSides = (): ('left' | 'top' | 'bottom')[] =>\n props.borderStyle === 'thin' || props.borderStyle === undefined ? ['left'] : ['left', 'top', 'bottom']\n\n // Format timestamp if provided\n const formattedTimestamp = () => {\n if (!props.timestamp) return null\n return props.timestamp instanceof Date ? props.timestamp.toLocaleTimeString() : props.timestamp\n }\n\n return (\n <box\n flexDirection=\"column\"\n border={borderSides()}\n borderColor={borderColor()}\n backgroundColor={backgroundColor()}\n paddingLeft={props.padding ?? 1}\n paddingRight={props.padding ?? 1}\n marginBottom={props.margin ?? 0}\n >\n {/* Header row with timestamp and label */}\n <Show when={formattedTimestamp() || props.label}>\n <box flexDirection=\"row\" gap={1}>\n <Show when={formattedTimestamp()}>\n <text fg={theme.colors.muted}>{formattedTimestamp()}</text>\n </Show>\n <Show when={props.label}>\n <text fg={levelColors().border} attributes={TextAttributes.BOLD}>\n [{props.label}]\n </text>\n </Show>\n </box>\n </Show>\n\n {/* Message content */}\n <text fg={textColor()}>{props.children}</text>\n\n {/* Stack trace (for trace level) */}\n <Show when={props.trace}>\n <box marginTop={1}>\n <text fg={theme.colors.muted}>{props.trace}</text>\n </box>\n </Show>\n </box>\n )\n}\n","import { createSignal, createEffect, onCleanup } from 'solid-js'\n\nimport { LogMessage } from '../log/index.ts'\n\nimport type { LoadingMessageData, LogMessageVariant } from '../../../../types/index.ts'\n\nconst SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']\n\nexport interface LoadingMessageProps {\n message: LoadingMessageData\n}\n\nexport function LoadingMessage(props: LoadingMessageProps) {\n const [frameIndex, setFrameIndex] = createSignal(0)\n\n createEffect(() => {\n if (props.message.status === 'loading') {\n const interval = setInterval(() => {\n setFrameIndex((prev) => (prev + 1) % SPINNER_FRAMES.length)\n }, 80)\n\n onCleanup(() => clearInterval(interval))\n }\n })\n\n // Map loading status to log level and variant for display\n const level = () => (props.message.status === 'fail' ? 'error' : 'log')\n const variant = (): LogMessageVariant | undefined =>\n props.message.status === 'success' ? 'success' : undefined\n\n const displayContent = () => props.message.resolvedContent ?? props.message.content\n const spinner = () => (props.message.status === 'loading' ? SPINNER_FRAMES[frameIndex()] + ' ' : '')\n\n return (\n <LogMessage level={level()} variant={variant()} timestamp={props.message.timestamp}>\n {spinner() + displayContent()}\n </LogMessage>\n )\n}\n","import { useTheme } from '../../hooks/index.ts'\n\nimport type { ProgressMessageData } from '../../../../types/index.ts'\n\nexport interface ProgressMessageProps {\n message: ProgressMessageData\n}\n\nexport function ProgressMessage(props: ProgressMessageProps) {\n const theme = useTheme()\n\n const percent = () => Math.round((props.message.current / props.message.total) * 100)\n const barWidth = 20\n const filled = () => Math.round((percent() / 100) * barWidth)\n const empty = () => barWidth - filled()\n\n const barFilled = () => '█'.repeat(filled())\n const barEmpty = () => '░'.repeat(empty())\n\n // Determine colors based on status\n const borderColor = () =>\n props.message.status === 'complete'\n ? theme.progress.complete\n : props.message.status === 'failed'\n ? theme.progress.failed\n : theme.progress.border\n\n const backgroundColor = () =>\n props.message.status === 'complete'\n ? theme.progress.completeBackground\n : props.message.status === 'failed'\n ? theme.progress.failedBackground\n : theme.progress.background\n\n const barColor = () =>\n props.message.status === 'complete'\n ? theme.progress.complete\n : props.message.status === 'failed'\n ? theme.progress.failed\n : theme.progress.barFilled\n\n const displayLabel = () => props.message.resolvedContent ?? props.message.label\n\n return (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={borderColor()}\n backgroundColor={backgroundColor()}\n paddingLeft={1}\n paddingRight={1}\n >\n <box flexDirection=\"row\" gap={1}>\n <text fg={barColor()}>[{barFilled()}</text>\n <text fg={theme.progress.barEmpty}>{barEmpty()}]</text>\n <text fg={theme.progress.textDim}>{percent()}%</text>\n <text fg={theme.progress.text}>{displayLabel()}</text>\n </box>\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { For, Show, createMemo } from 'solid-js'\n\nimport { TABLE_COLORS } from '../../../../utils/index.ts'\n\nimport type { TableMessageData } from '../../../../types/index.ts'\n\nexport interface TableMessageProps {\n message: TableMessageData\n}\n\nexport function TableMessage(props: TableMessageProps) {\n // Calculate column widths\n const colWidths = createMemo(() =>\n props.message.headers.map((h, i) => {\n const headerLen = h.length\n const maxRowLen =\n props.message.rows.length > 0\n ? Math.max(...props.message.rows.map((r) => (r[i] ?? '').length))\n : 0\n return Math.max(headerLen, maxRowLen)\n }),\n )\n\n const pad = (str: string, width: number) => str.padEnd(width)\n\n const headerRow = createMemo(() =>\n props.message.headers.map((h, i) => pad(h, colWidths()[i] ?? 0)).join(' │ '),\n )\n\n const separator = createMemo(() => colWidths().map((w) => '─'.repeat(w)).join('─┼─'))\n\n const dataRows = createMemo(() =>\n props.message.rows.map((row) => row.map((cell, i) => pad(cell, colWidths()[i] ?? 0)).join(' │ ')),\n )\n\n return (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={TABLE_COLORS.border}\n backgroundColor={TABLE_COLORS.background}\n paddingLeft={1}\n paddingRight={1}\n >\n <Show when={props.message.title}>\n <text fg={TABLE_COLORS.title} attributes={TextAttributes.BOLD}>\n {props.message.title}\n </text>\n </Show>\n <text fg={TABLE_COLORS.headerText} attributes={TextAttributes.BOLD}>\n {headerRow()}\n </text>\n <text fg={TABLE_COLORS.separator}>{separator()}</text>\n <For each={dataRows()}>{(row) => <text fg={TABLE_COLORS.cellText}>{row}</text>}</For>\n </box>\n )\n}\n","import { Switch, Match } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\nimport { FileLog } from '../file/index.ts'\nimport { LogMessage } from '../log/index.ts'\n\nimport type {\n MessageData,\n LogMessageData,\n FileMessageData,\n DiffMessageData,\n FileErrorMessageData,\n LoadingMessageData,\n ProgressMessageData,\n GroupMessageData,\n TableMessageData,\n} from '../../../../types/index.ts'\n\nimport { GroupMessageRenderer } from './group_renderer.tsx'\nimport { LoadingMessage } from './loading_message.tsx'\nimport { ProgressMessage } from './progress_message.tsx'\nimport { TableMessage } from './table_message.tsx'\n\nexport interface MessageRendererProps {\n message: MessageData\n}\n\nexport function MessageRenderer(props: MessageRendererProps) {\n const theme = useTheme()\n const msg = () => props.message\n\n return (\n <Switch fallback={null}>\n <Match when={msg().type === 'log' && (msg() as LogMessageData)}>\n {(logMsg) => (\n <LogMessage\n level={logMsg().level}\n timestamp={logMsg().timestamp}\n variant={logMsg().variant}\n label={logMsg().label}\n trace={logMsg().trace}\n >\n {logMsg().content}\n </LogMessage>\n )}\n </Match>\n\n <Match when={msg().type === 'file' && (msg() as FileMessageData)}>\n {(fileMsg) => (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={theme.file.border}\n backgroundColor={theme.file.background}\n >\n <FileLog\n mode=\"full\"\n filePath={fileMsg().filePath}\n content={fileMsg().content}\n headerBackgroundColor={theme.file.headerBackground}\n />\n </box>\n )}\n </Match>\n\n <Match when={msg().type === 'diff' && (msg() as DiffMessageData)}>\n {(diffMsg) => (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={theme.file.border}\n backgroundColor={theme.file.background}\n >\n <FileLog\n mode=\"diff\"\n filePath={diffMsg().filePath}\n diff={diffMsg().diff}\n view={diffMsg().view}\n headerBackgroundColor={theme.file.headerBackground}\n />\n </box>\n )}\n </Match>\n\n <Match when={msg().type === 'fileError' && (msg() as FileErrorMessageData)}>\n {(errorMsg) => (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={theme.file.border}\n backgroundColor={theme.file.background}\n >\n <FileLog\n mode=\"partial\"\n filePath={errorMsg().filePath}\n content={errorMsg().content}\n startLine={errorMsg().startLine}\n errorLines={errorMsg().errorLines}\n headerBackgroundColor={theme.file.headerBackground}\n />\n </box>\n )}\n </Match>\n\n <Match when={msg().type === 'loading' && (msg() as LoadingMessageData)}>\n {(loadingMsg) => <LoadingMessage message={loadingMsg()} />}\n </Match>\n\n <Match when={msg().type === 'progress' && (msg() as ProgressMessageData)}>\n {(progressMsg) => <ProgressMessage message={progressMsg()} />}\n </Match>\n\n <Match when={msg().type === 'group' && (msg() as GroupMessageData)}>\n {(groupMsg) => <GroupMessageRenderer message={groupMsg()} />}\n </Match>\n\n <Match when={msg().type === 'table' && (msg() as TableMessageData)}>\n {(tableMsg) => <TableMessage message={tableMsg()} />}\n </Match>\n </Switch>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { For, Show } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\n\nimport type { MessageData, GroupMessageData } from '../../../../types/index.ts'\n\nimport { MessageRenderer } from './message_renderer.tsx'\n\nexport interface GroupRendererProps {\n label: string\n messages: MessageData[]\n}\n\nexport function GroupRenderer(props: GroupRendererProps) {\n const theme = useTheme()\n\n return (\n <box\n flexDirection=\"column\"\n border={['left']}\n borderColor={theme.group.border}\n backgroundColor={theme.group.background}\n paddingLeft={1}\n >\n {/* Group header */}\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={theme.group.icon}>▼ </text>\n <text fg={theme.group.headerText} attributes={TextAttributes.BOLD}>\n {props.label}\n </text>\n </box>\n\n {/* Group content */}\n <box flexDirection=\"column\" gap={1}>\n <For each={props.messages}>{(msg) => <MessageRenderer message={msg} />}</For>\n </box>\n </box>\n )\n}\n\nexport interface GroupMessageRendererProps {\n message: GroupMessageData\n}\n\n/**\n * Fallback renderer for group markers (when not processed at higher level)\n */\nexport function GroupMessageRenderer(props: GroupMessageRendererProps) {\n const theme = useTheme()\n\n return (\n <Show when={!props.message.isEnd}>\n <box flexDirection=\"row\" borderColor={theme.group.border} border={['left']} paddingLeft={1}>\n <text fg={theme.group.headerText} attributes={TextAttributes.BOLD}>\n ▼ {props.message.label}\n </text>\n </box>\n </Show>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { createSignal, createEffect, createMemo, For, Show, onCleanup } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\nimport { PromptRenderer } from '../prompt/index.ts'\n\nimport type { ScreenInstance } from '../../../../services/index.ts'\nimport type { MessageData } from '../../../../types/index.ts'\n\nimport { GroupRenderer } from './group_renderer.tsx'\nimport { MessageRenderer } from './message_renderer.tsx'\n\nexport interface ScreenBridgeProps {\n screen: ScreenInstance\n focused: boolean\n /** Pre-filtered messages (if filtering is active) */\n filteredMessages?: MessageData[]\n /** Whether any filter is currently active */\n isFiltering?: boolean\n /** Total message count (before filtering) */\n totalMessages?: number\n}\n\n// Helper to process messages and organize them into groups\ninterface ProcessedMessage {\n type: 'single' | 'group'\n message?: MessageData\n label?: string\n messages?: MessageData[]\n}\n\nfunction processMessagesIntoGroups(messages: MessageData[]): ProcessedMessage[] {\n const result: ProcessedMessage[] = []\n let i = 0\n\n while (i < messages.length) {\n const msg = messages[i]!\n\n if (msg.type === 'group' && !msg.isEnd) {\n // Start of a group - collect all messages until groupEnd\n const groupLabel = msg.label\n const groupMessages: MessageData[] = []\n i++ // Move past the group start\n\n while (i < messages.length) {\n const innerMsg = messages[i]!\n if (innerMsg.type === 'group' && innerMsg.isEnd) {\n i++ // Move past the group end\n break\n }\n groupMessages.push(innerMsg)\n i++\n }\n\n result.push({\n type: 'group',\n label: groupLabel,\n messages: groupMessages,\n })\n } else if (msg.type === 'group' && msg.isEnd) {\n // Stray group end - skip it\n i++\n } else {\n // Regular message\n result.push({ type: 'single', message: msg })\n i++\n }\n }\n\n return result\n}\n\nexport function ScreenBridge(props: ScreenBridgeProps) {\n const theme = useTheme()\n const [version, setVersion] = createSignal(0)\n\n // Subscribe to screen changes\n createEffect(() => {\n const unsub = props.screen.onChange(() => setVersion((v) => v + 1))\n onCleanup(() => unsub())\n })\n\n // Use filtered messages if provided, otherwise get from screen\n const messages = createMemo(() => {\n version() // Track version for reactivity\n return props.filteredMessages ?? props.screen.getMessages()\n })\n\n const activePrompt = createMemo(() => {\n version() // Track version for reactivity\n return props.screen.getActivePrompt()\n })\n\n const processedMessages = createMemo(() => processMessagesIntoGroups(messages()))\n\n // Calculate filter stats\n const filteredCount = () => messages().length\n const total = () => props.totalMessages ?? messages().length\n const showFilterStatus = () => props.isFiltering && filteredCount() !== total()\n\n return (\n <box flexDirection=\"column\" flexGrow={1}>\n {/* Screen header */}\n <box\n backgroundColor={theme.header.background}\n borderColor={props.focused ? theme.sidebar.focusBorder : theme.header.border}\n border={['bottom']}\n paddingLeft={1}\n paddingRight={1}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n >\n <text fg={theme.header.text} attributes={TextAttributes.BOLD}>\n {props.screen.getName()}\n </text>\n <Show when={showFilterStatus()}>\n <text fg={theme.sidebar.textDim}>\n {filteredCount()}/{total()} messages\n </text>\n </Show>\n </box>\n\n {/* Scrollable content area */}\n <scrollbox\n flexGrow={1}\n scrollY\n stickyScroll\n stickyStart=\"bottom\"\n contentOptions={{\n paddingLeft: 1,\n paddingRight: 1,\n paddingTop: 1,\n paddingBottom: 1,\n gap: 1,\n }}\n >\n <For each={processedMessages()}>\n {(item) => (\n <Show\n when={item.type === 'group'}\n fallback={<MessageRenderer message={item.message!} />}\n >\n <GroupRenderer label={item.label!} messages={item.messages!} />\n </Show>\n )}\n </For>\n\n {/* Render active prompt at the end of messages */}\n <Show when={activePrompt()}>\n <PromptRenderer prompt={activePrompt()!} />\n </Show>\n </scrollbox>\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { Show } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\n\nimport type { ScreenInstance } from '../../../../services/index.ts'\n\nexport interface SidebarItemProps {\n screen: ScreenInstance\n isSelected: boolean\n isActive: boolean\n focused: boolean\n}\n\nexport function SidebarItem(props: SidebarItemProps) {\n const theme = useTheme()\n const status = () => props.screen.getStatus()\n const statusIndicator = () => theme.statusIndicators[status()]\n\n // Determine background color based on state\n const backgroundColor = () => {\n if (props.isSelected && props.focused) {\n return theme.sidebar.selectedBackground\n } else if (props.isActive) {\n return theme.sidebar.selectedBackground + '80'\n }\n return undefined\n }\n\n return (\n <box flexDirection=\"row\" paddingLeft={1} paddingRight={1} backgroundColor={backgroundColor()}>\n {/* Selection indicator */}\n <text fg={props.isSelected && props.focused ? theme.sidebar.focusBorder : 'transparent'}>\n {'>'}{' '}\n </text>\n\n {/* Status indicator */}\n <text fg={statusIndicator().color}>{statusIndicator().icon} </text>\n\n {/* Screen name */}\n <text fg={props.isActive ? theme.sidebar.text : theme.sidebar.textDim} flexGrow={1}>\n {props.screen.getName()}\n </text>\n\n {/* Badge if present */}\n <Show when={props.screen.getBadgeCount() > 0}>\n <box backgroundColor={theme.sidebar.badge} paddingLeft={1} paddingRight={1}>\n <text fg={theme.colors.foreground} attributes={TextAttributes.BOLD}>\n {props.screen.getBadgeCount() > 99 ? '99+' : props.screen.getBadgeCount()}\n </text>\n </box>\n </Show>\n </box>\n )\n}\n","import { useTheme } from '../../hooks/index.ts'\n\nexport function SidebarSeparator() {\n const theme = useTheme()\n\n return (\n <box flexDirection=\"row\" paddingTop={1}>\n <box flexGrow={1} />\n <text fg={theme.separator.line}>· · ·</text>\n <box flexGrow={1} />\n </box>\n )\n}\n","import { TextAttributes } from '@opentui/core'\nimport { For, Show, createMemo } from 'solid-js'\n\nimport { useTheme } from '../../hooks/index.ts'\n\nimport type { ScreenInstance } from '../../../../services/index.ts'\n\nimport { SidebarItem } from './sidebar_item.tsx'\nimport { SidebarSeparator } from './sidebar_separator.tsx'\n\nexport interface SidebarProps {\n screens: ScreenInstance[]\n selectedIndex: number\n activeScreenId: string\n focused: boolean\n width: number\n title: string\n}\n\nexport function Sidebar(props: SidebarProps) {\n const theme = useTheme()\n\n // Separate screens: only \"pending\" status on top, everything else below\n const pendingScreens = createMemo(() => {\n const result: { screen: ScreenInstance; originalIndex: number }[] = []\n props.screens.forEach((screen, index) => {\n if (screen.getStatus() === 'pending') {\n result.push({ screen, originalIndex: index })\n }\n })\n return result\n })\n\n const otherScreens = createMemo(() => {\n const result: { screen: ScreenInstance; originalIndex: number }[] = []\n props.screens.forEach((screen, index) => {\n if (screen.getStatus() !== 'pending') {\n result.push({ screen, originalIndex: index })\n }\n })\n return result\n })\n\n const hasPending = () => pendingScreens().length > 0\n const hasOther = () => otherScreens().length > 0\n const showSeparator = () => hasPending() && hasOther()\n\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n borderColor={props.focused ? theme.sidebar.focusBorder : theme.sidebar.border}\n border={['right']}\n >\n {/* Sidebar header */}\n <box\n backgroundColor={theme.header.background}\n paddingLeft={1}\n paddingRight={1}\n borderColor={theme.header.border}\n border={['bottom']}\n >\n <text fg={theme.header.text} attributes={TextAttributes.BOLD}>\n {props.title}\n </text>\n </box>\n\n {/* Screen list */}\n <scrollbox scrollY stickyScroll={false} flexGrow={1} contentOptions={{ flexGrow: 1 }}>\n <box flexDirection=\"column\">\n {/* Pending screens (active work) */}\n <For each={pendingScreens()}>\n {({ screen, originalIndex }) => (\n <SidebarItem\n screen={screen}\n isSelected={originalIndex === props.selectedIndex}\n isActive={screen.getId() === props.activeScreenId}\n focused={props.focused}\n />\n )}\n </For>\n\n {/* Separator between pending and other screens */}\n <Show when={showSeparator()}>\n <SidebarSeparator />\n </Show>\n\n {/* Other screens (waiting, success, fail) */}\n <For each={otherScreens()}>\n {({ screen, originalIndex }) => (\n <SidebarItem\n screen={screen}\n isSelected={originalIndex === props.selectedIndex}\n isActive={screen.getId() === props.activeScreenId}\n focused={props.focused}\n />\n )}\n </For>\n </box>\n </scrollbox>\n\n {/* Footer with keybindings hint */}\n <box paddingLeft={1} paddingRight={1} borderColor={theme.sidebar.border} border={['top']}>\n <text fg={theme.sidebar.text}>q: exit | Tab: focus | ?: help</text>\n </box>\n </box>\n )\n}\n","import { useKeyboard } from '@opentui/solid'\nimport { createSignal, createEffect, createMemo, onCleanup, Show } from 'solid-js'\n\nimport { LoggerProvider } from '../context/index.ts'\nimport { FilterEngine } from '../../../filter/index.ts'\nimport { KeyboardManager, createDefaultBindings, handlePrintableInput } from '../../../keyboard/index.ts'\nimport {\n ALL_LOG_LEVELS,\n createDefaultFilterState,\n hasActiveFilter,\n type FilterState,\n type KeyboardContext,\n type Theme,\n} from '../../../types/index.ts'\n\nimport type { ScreenManagerInstance } from '../../../services/index.ts'\n\nimport { FilterBar } from './filter/filter_bar.tsx'\nimport { HelpOverlay } from './help/help_overlay.tsx'\nimport { ScreenBridge } from './screen/screen_bridge.tsx'\nimport { Sidebar } from './sidebar/sidebar.tsx'\n\nexport interface ScreenManagerBridgeProps {\n manager: ScreenManagerInstance\n theme?: Theme\n}\n\nexport function ScreenManagerBridge(props: ScreenManagerBridgeProps) {\n const [version, setVersion] = createSignal(0)\n const [showHelp, setShowHelp] = createSignal(false)\n const [filter, setFilter] = createSignal<FilterState>(createDefaultFilterState())\n\n // Subscribe to manager changes\n createEffect(() => {\n const unsub = props.manager.onChange(() => setVersion((v) => v + 1))\n onCleanup(() => unsub())\n })\n\n // Helper functions for keyboard bindings\n const getActiveScreen = () => props.manager.getActiveScreen()\n\n const toggleHelp = () => {\n setShowHelp((prev) => !prev)\n }\n\n const toggleFilter = () => {\n setFilter((prev) => ({\n ...prev,\n isVisible: !prev.isVisible,\n focusedField: 'search',\n }))\n }\n\n const closeFilter = () => {\n setFilter((prev) => ({ ...prev, isVisible: false }))\n }\n\n const filterAppendChar = (char: string) => {\n setFilter((prev) => ({\n ...prev,\n searchQuery: prev.searchQuery + char,\n }))\n }\n\n const filterDeleteChar = () => {\n setFilter((prev) => ({\n ...prev,\n searchQuery: prev.searchQuery.slice(0, -1),\n }))\n }\n\n const filterToggleLevel = (index: number) => {\n setFilter((prev) => {\n const level = ALL_LOG_LEVELS[index]\n if (!level) return prev\n\n const newLevels = new Set(prev.enabledLevels)\n if (newLevels.has(level)) {\n newLevels.delete(level)\n } else {\n newLevels.add(level)\n }\n\n return { ...prev, enabledLevels: newLevels }\n })\n }\n\n const filterCycleField = () => {\n setFilter((prev) => ({\n ...prev,\n focusedField: prev.focusedField === 'search' ? 'levels' : 'search',\n }))\n }\n\n // Create keyboard manager with bindings\n const keyboardManager = createMemo(() => {\n const km = new KeyboardManager()\n const bindings = createDefaultBindings({\n manager: props.manager,\n getActiveScreen,\n toggleHelp,\n toggleFilter,\n closeFilter,\n filterAppendChar,\n filterDeleteChar,\n filterToggleLevel,\n filterCycleField,\n })\n km.addBindings(bindings)\n return km\n })\n\n // Keyboard handler\n const handleKeyboard = (key: { name: string; ctrl?: boolean; meta?: boolean; sequence?: string }) => {\n const screens = props.manager.getScreens()\n const activeScreen = props.manager.getActiveScreen()\n\n const context: KeyboardContext = {\n hasSidebar: screens.length > 1,\n focusArea: props.manager.focusArea,\n hasPrompt: activeScreen?.hasActivePrompt() ?? false,\n inInputMode: activeScreen?.isPromptInInputMode() ?? false,\n isFilterActive: filter().isVisible,\n isHelpVisible: showHelp(),\n }\n\n // Try keyboard manager first\n if (keyboardManager().handleKey(key, context)) {\n return\n }\n\n // Handle printable characters (for input mode and filter)\n handlePrintableInput(key, context, {\n manager: props.manager,\n getActiveScreen,\n toggleHelp,\n toggleFilter,\n closeFilter,\n filterAppendChar,\n filterDeleteChar,\n filterToggleLevel,\n filterCycleField,\n })\n }\n\n // Handle keyboard input\n useKeyboard(handleKeyboard)\n\n // Derived state\n const screens = () => {\n version() // Track for reactivity\n return props.manager.getScreens()\n }\n\n const activeScreen = () => {\n version() // Track for reactivity\n return props.manager.getActiveScreen()\n }\n\n const activeScreenId = () => activeScreen()?.getId() ?? screens()[0]?.getId() ?? ''\n const bindOptions = () => props.manager.getBindOptions()\n const hasSidebar = () => screens().length > 1\n\n // Subscribe to active screen version for level counts\n const [activeScreenVersion, setActiveScreenVersion] = createSignal(0)\n\n createEffect(() => {\n const screen = activeScreen()\n if (screen) {\n const unsub = screen.onChange(() => setActiveScreenVersion((v) => v + 1))\n onCleanup(() => unsub())\n }\n })\n\n // Get level counts for filter bar\n const levelCounts = createMemo(() => {\n activeScreenVersion() // Track for reactivity\n const screen = activeScreen()\n if (!screen) {\n return {\n verbose: 0,\n debug: 0,\n log: 0,\n warn: 0,\n error: 0,\n fatal: 0,\n }\n }\n return FilterEngine.countByLevel(screen.getMessages())\n })\n\n // Filter messages for the active screen\n const filteredMessages = createMemo(() => {\n activeScreenVersion() // Track for reactivity\n const screen = activeScreen()\n if (!screen) return []\n return FilterEngine.filterMessages(screen.getMessages(), filter())\n })\n\n const isFiltering = createMemo(() => hasActiveFilter(filter()))\n\n return (\n <LoggerProvider theme={props.theme}>\n <box flexDirection=\"row\" flexGrow={1}>\n {/* Sidebar */}\n <Show when={hasSidebar()}>\n <Sidebar\n screens={screens()}\n selectedIndex={props.manager.selectedIndex}\n activeScreenId={activeScreenId()}\n focused={props.manager.focusArea === 'sidebar'}\n width={bindOptions().sidebarWidth ?? 25}\n title={bindOptions().sidebarTitle ?? 'Screens'}\n />\n </Show>\n\n {/* Main content area */}\n <box flexDirection=\"column\" flexGrow={1}>\n {/* Filter bar */}\n <Show when={filter().isVisible}>\n <FilterBar filter={filter()} levelCounts={levelCounts()} />\n </Show>\n\n {/* Screen content */}\n <Show when={activeScreen()}>\n <ScreenBridge\n screen={activeScreen()!}\n focused={props.manager.focusArea === 'content'}\n filteredMessages={filteredMessages()}\n isFiltering={isFiltering()}\n totalMessages={activeScreen()!.getMessages().length}\n />\n </Show>\n </box>\n\n {/* Help overlay */}\n <Show when={showHelp()}>\n <HelpOverlay bindings={keyboardManager().getBindingsForHelp()} />\n </Show>\n </box>\n </LoggerProvider>\n )\n}\n","import { Injectable } from '@navios/core'\nimport { render as solidRender } from '@opentui/solid'\n\nimport type { CliRenderer } from '@opentui/core'\n\nimport { Adapter } from '../../tokens/adapter.js'\n\nimport type { AdapterInterface, AdapterRoot, AdapterRenderProps } from '../interface.js'\n\nimport { ScreenManagerBridge } from './components/screen_manager_bridge.js'\n\n/**\n * Solid adapter for TUI rendering.\n * Automatically registers to DI when this module is imported.\n */\n@Injectable({ token: Adapter })\nexport class SolidAdapter implements AdapterInterface {\n createRoot(renderer: CliRenderer): AdapterRoot {\n let renderPromise: Promise<void> | undefined\n\n return {\n render(element: unknown): void {\n // Solid's render returns a Promise<void>\n // We start the render and let it run asynchronously\n renderPromise = solidRender(element as () => any, renderer)\n },\n unmount(): void {\n // Solid's render doesn't provide a dispose function in @opentui/solid\n // The unmount is handled by the renderer itself\n renderPromise = undefined\n },\n }\n }\n\n renderToRoot(root: AdapterRoot, props: AdapterRenderProps): void {\n // @ts-expect-error This is a workaround to avoid type errors\n root.render(() => <ScreenManagerBridge {...props} />)\n }\n}\n\n// Re-export context and hooks for external use\nexport * from './context/index.js'\nexport * from './hooks/index.js'\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|