Hook’lar ve konsol REPL’i

useInput, useFocus, useViewport, useConsoleStats ve window.text.

Hook’lar bileşenleri girdiye, odağa ve görünüm alanına bağlar.

useInput

useInput((e) => {  if (e.key === "up") setIndex((i) => i - 1);  if (e.ctrl && e.key === "p") setPaletteOpen(true);});
AlanAçıklama
key"up" "return" "escape" "tab"…
inputTuşun ürettiği metin
ctrl meta shift altDeğiştirici tuşlar
stopPropagation()Daha düşük öncelikli işleyicileri durdurma

⌘⌥J ve ⌘R gibi tarayıcı kısayolları her zaman engellenmeden geçer.

usePaste ve useWheel aynı seçenekleri alır. ambient seçeneğinin useWheel üzerinde etkisi yoktur.

SeçenekAçıklama
isActivefalse, bileşeni kaldırmadan işleyiciyi devre dışı bırakır (varsayılan true)
priorityDaha yüksek öncelikler önce çalışır (varsayılan 0). Odaklanmış bileşenler FOCUSED_INPUT_PRIORITY (10) kullanır
globalBu bileşenin dışında bir <Modal> açıkken girdi almaya devam eder (varsayılan false)
ambientBu işleyiciyi odak ipucu için hesaba katmaz (varsayılan false)

Dev Overlay kısayolu (F2 veya Ctrl+`) ambient olarak işaretlidir; bu nedenle başka klavye girdisi olmayan bir sayfada ipucu gösterilmez.

useInput((e) => {  if (e.key === "f2") toggleOverlay();}, { ambient: true });

usePaste ve useWheel

usePaste((e) => insert(e.text));useWheel((e) => scrollBy(e.rows));

useKeyState (deneysel)

@textjs/react/experimental, basılı tutulan fiziksel tuşları KeyboardEvent.code ("KeyW", "ArrowUp", "ControlLeft") ile izlemek için useKeyState hook’unu dışa aktarır. keys.isDown(code) değerini sorgulamak veya keys.pressed değerini okumak React’in yeniden render etmesini tetiklemez. Tuşlara basıldığı ve tuşlar bırakıldığı anda tepki vermek için bir geri çağırım geçirin.

import { useKeyState } from "@textjs/react/experimental";const keys = useKeyState((e) => {  if (e.code === "Space" && e.down) fire();});

Sayfa odağı kaybettiğinde basılı tutulan tuşlar otomatik olarak bırakılır. Deneysel dışa aktarımların nasıl sürümlendiği için Uyumluluğu bozan değişiklikler bölümüne bakın.

useViewport

const { cols, rows, focused, paused } = useViewport();

usePageFocus

usePageFocus(), sayfanın odakta olup olmadığını döndürür. Tuş vuruşları uygulamaya ancak sayfa odaktayken ulaşır. useViewport().focused ile aynı değeri verir, ancak yalnızca odak değiştiğinde yeniden render eder.

const focused = usePageFocus();

Sayfa odakta değilken uygulamada bir useInput veya usePaste işleyicisi, bir useKeyState hook’u ya da Tab ile ulaşılabilen bir odak hedefi varsa konsol karesinin son satırı, üzerinde “Klavyeyi kullanmak için sayfaya tıklayın” yazan kehribar rengi bir çubuğa dönüşür. ambient olarak işaretlenmiş işleyiciler hesaba katılmaz. İpucu terminalde, testlerde veya satır içi yansılarda görünmez. Sistemin azaltılmış hareket ayarı açık değilse ipucu her göründüğünde yaklaşık 6 saniye yanıp söner. Ne zaman görüneceğine kendiniz karar vermek için text.config.ts dosyasında veya createConsoleRoot içinde focusHint: false ayarlayın ve <FocusHint> render edin:

<FocusHint active={editing} />

useConsoleStats

const { totalMs, spanCount } = useConsoleStats({ interval: 250 });

useApp

const { exit, pause, resume } = useApp();

window.text REPL’i

Her uygulama window.text nesnesine yardımcılar ekler. Bunları DevTools komut istemine yazın.

text.help()text.resize(120, 36)   // pin the grid sizetext.responsive(true)  // fit the docked console againtext.pause()text.stats()text.wireframe()text.copyText()
Bu sayfayı GitHub’da düzenle