gitextract_jq_9codb/ ├── .editorconfig ├── .gitattributes ├── .github/ │ └── workflows/ │ └── test.yml ├── .gitignore ├── .npmrc ├── benchmark/ │ ├── simple/ │ │ ├── index.ts │ │ └── simple.tsx │ └── static/ │ ├── index.ts │ └── static.tsx ├── examples/ │ ├── alternate-screen/ │ │ ├── alternate-screen.tsx │ │ └── index.ts │ ├── aria/ │ │ ├── aria.tsx │ │ └── index.ts │ ├── borders/ │ │ ├── borders.tsx │ │ └── index.ts │ ├── box-backgrounds/ │ │ ├── box-backgrounds.tsx │ │ └── index.ts │ ├── chat/ │ │ ├── chat.tsx │ │ └── index.ts │ ├── concurrent-suspense/ │ │ ├── concurrent-suspense.tsx │ │ └── index.ts │ ├── counter/ │ │ ├── counter.tsx │ │ └── index.ts │ ├── cursor-ime/ │ │ ├── cursor-ime.tsx │ │ └── index.ts │ ├── incremental-rendering/ │ │ ├── incremental-rendering.tsx │ │ └── index.ts │ ├── jest/ │ │ ├── index.ts │ │ ├── jest.tsx │ │ ├── summary.tsx │ │ └── test.tsx │ ├── justify-content/ │ │ ├── index.ts │ │ └── justify-content.tsx │ ├── render-throttle/ │ │ └── index.tsx │ ├── router/ │ │ ├── index.ts │ │ └── router.tsx │ ├── select-input/ │ │ ├── index.ts │ │ └── select-input.tsx │ ├── static/ │ │ ├── index.ts │ │ └── static.tsx │ ├── subprocess-output/ │ │ ├── index.ts │ │ └── subprocess-output.tsx │ ├── suspense/ │ │ ├── index.ts │ │ └── suspense.tsx │ ├── table/ │ │ ├── index.ts │ │ └── table.tsx │ ├── terminal-resize/ │ │ ├── index.ts │ │ └── terminal-resize.tsx │ ├── use-focus/ │ │ ├── index.ts │ │ └── use-focus.tsx │ ├── use-focus-with-id/ │ │ ├── index.ts │ │ └── use-focus-with-id.tsx │ ├── use-input/ │ │ ├── index.ts │ │ └── use-input.tsx │ ├── use-stderr/ │ │ ├── index.ts │ │ └── use-stderr.tsx │ ├── use-stdout/ │ │ ├── index.ts │ │ └── use-stdout.tsx │ └── use-transition/ │ ├── index.ts │ └── use-transition.tsx ├── license ├── media/ │ └── demo.js ├── package.json ├── readme.md ├── recipes/ │ └── routing.md ├── src/ │ ├── ansi-tokenizer.ts │ ├── colorize.ts │ ├── components/ │ │ ├── AccessibilityContext.ts │ │ ├── App.tsx │ │ ├── AppContext.ts │ │ ├── BackgroundContext.ts │ │ ├── Box.tsx │ │ ├── CursorContext.ts │ │ ├── ErrorBoundary.tsx │ │ ├── ErrorOverview.tsx │ │ ├── FocusContext.ts │ │ ├── Newline.tsx │ │ ├── Spacer.tsx │ │ ├── Static.tsx │ │ ├── StderrContext.ts │ │ ├── StdinContext.ts │ │ ├── StdoutContext.ts │ │ ├── Text.tsx │ │ └── Transform.tsx │ ├── cursor-helpers.ts │ ├── devtools-window-polyfill.ts │ ├── devtools.ts │ ├── dom.ts │ ├── get-max-width.ts │ ├── global.d.ts │ ├── hooks/ │ │ ├── use-app.ts │ │ ├── use-box-metrics.ts │ │ ├── use-cursor.ts │ │ ├── use-focus-manager.ts │ │ ├── use-focus.ts │ │ ├── use-input.ts │ │ ├── use-is-screen-reader-enabled.ts │ │ ├── use-paste.ts │ │ ├── use-stderr.ts │ │ ├── use-stdin.ts │ │ ├── use-stdout.ts │ │ └── use-window-size.ts │ ├── index.ts │ ├── ink.tsx │ ├── input-parser.ts │ ├── instances.ts │ ├── kitty-keyboard.ts │ ├── log-update.ts │ ├── measure-element.ts │ ├── measure-text.ts │ ├── output.ts │ ├── parse-keypress.ts │ ├── reconciler.ts │ ├── render-background.ts │ ├── render-border.ts │ ├── render-node-to-output.ts │ ├── render-to-string.ts │ ├── render.ts │ ├── renderer.ts │ ├── sanitize-ansi.ts │ ├── squash-text-nodes.ts │ ├── styles.ts │ ├── utils.ts │ ├── wrap-text.ts │ └── write-synchronized.ts ├── test/ │ ├── alternate-screen-example.tsx │ ├── ansi-tokenizer.ts │ ├── background.tsx │ ├── borders.tsx │ ├── components.tsx │ ├── cursor-helpers.tsx │ ├── cursor.tsx │ ├── display.tsx │ ├── errors.tsx │ ├── exit.tsx │ ├── fixtures/ │ │ ├── alternate-screen-full-board-win.tsx │ │ ├── ci-debug-after-exit.tsx │ │ ├── ci-debug.tsx │ │ ├── ci.tsx │ │ ├── clear.tsx │ │ ├── console.tsx │ │ ├── erase-with-state-change.tsx │ │ ├── erase-with-static.tsx │ │ ├── erase.tsx │ │ ├── exit-double-raw-mode.tsx │ │ ├── exit-normally.tsx │ │ ├── exit-on-exit-with-error-value-property.tsx │ │ ├── exit-on-exit-with-error.tsx │ │ ├── exit-on-exit-with-result.tsx │ │ ├── exit-on-exit-with-value-object.tsx │ │ ├── exit-on-exit.tsx │ │ ├── exit-on-finish.tsx │ │ ├── exit-on-unmount.tsx │ │ ├── exit-raw-on-exit-with-error.tsx │ │ ├── exit-raw-on-exit.tsx │ │ ├── exit-raw-on-unmount.tsx │ │ ├── exit-with-static.tsx │ │ ├── exit-with-thrown-error.tsx │ │ ├── fullscreen-no-extra-newline.tsx │ │ ├── issue-442-full-height.tsx │ │ ├── issue-450-fixture-helpers.tsx │ │ ├── issue-450-full-height-rerender-with-marker.tsx │ │ ├── issue-450-full-height-rerender.tsx │ │ ├── issue-450-full-height-with-static-rerender.tsx │ │ ├── issue-450-grow-to-fullscreen-rerender.tsx │ │ ├── issue-450-grow-to-overflow-rerender.tsx │ │ ├── issue-450-height-minus-one-rerender.tsx │ │ ├── issue-450-initial-fullscreen.tsx │ │ ├── issue-450-initial-overflow.tsx │ │ ├── issue-450-shrink-from-fullscreen-rerender.tsx │ │ ├── issue-450-shrink-from-overflow-rerender.tsx │ │ ├── issue-450-static-shrink-from-fullscreen-rerender.tsx │ │ ├── issue-725-child-process.tsx │ │ ├── use-input-ctrl-c.tsx │ │ ├── use-input-discrete-priority.tsx │ │ ├── use-input-kitty.tsx │ │ ├── use-input-many.tsx │ │ ├── use-input-multiple.tsx │ │ ├── use-input.tsx │ │ ├── use-paste.tsx │ │ └── use-stdout.tsx │ ├── flex-align-content.tsx │ ├── flex-align-items.tsx │ ├── flex-align-self.tsx │ ├── flex-direction.tsx │ ├── flex-justify-content.tsx │ ├── flex-wrap.tsx │ ├── flex.tsx │ ├── focus.tsx │ ├── gap.tsx │ ├── helpers/ │ │ ├── create-stdin.ts │ │ ├── create-stdout.ts │ │ ├── force-colors.ts │ │ ├── render-to-string.ts │ │ ├── run.ts │ │ ├── term.ts │ │ └── test-renderer.ts │ ├── hooks-use-input-kitty.tsx │ ├── hooks-use-input-navigation.tsx │ ├── hooks-use-input.tsx │ ├── hooks-use-paste.tsx │ ├── hooks.tsx │ ├── input-parser.ts │ ├── kitty-keyboard.tsx │ ├── log-update.tsx │ ├── margin.tsx │ ├── measure-element.tsx │ ├── measure-text.tsx │ ├── overflow.tsx │ ├── padding.tsx │ ├── position.tsx │ ├── reconciler.tsx │ ├── render-to-string.tsx │ ├── render.tsx │ ├── sanitize-ansi.ts │ ├── screen-reader.tsx │ ├── terminal-resize.tsx │ ├── text-width.tsx │ ├── text.tsx │ ├── tsconfig.json │ ├── use-box-metrics.tsx │ ├── width-height.tsx │ └── write-synchronized.tsx ├── tsconfig.json └── xo.config.ts