ہکس اور کونسول REPL
useInput، useFocus، useViewport، useConsoleStats اور window.text۔
ہکس کمپوننٹس کو ان پٹ، فوکس اور ویوپورٹ سے جوڑتے ہیں۔
useInput
useInput((e) => { if (e.key === "up") setIndex((i) => i - 1); if (e.ctrl && e.key === "p") setPaletteOpen(true);});| فیلڈ | تفصیل |
|---|---|
key | "up" "return" "escape" "tab"… |
input | کلید سے پیدا ہونے والا متن |
ctrl meta shift alt | موڈیفائرز |
stopPropagation() | کم ترجیح والے ہینڈلرز کو روکیں |
براؤزر کے شارٹ کٹس جیسے ⌘⌥J اور ⌘R ہمیشہ آگے پہنچتے ہیں۔
usePaste اور useWheel ایک ہی آپشنز لیتے ہیں۔ ambient کا useWheel پر کوئی اثر نہیں ہوتا۔
| آپشن | تفصیل |
|---|---|
isActive | false ہینڈلر کو ان ماؤنٹ کیے بغیر بند کرتا ہے (ڈیفالٹ true) |
priority | زیادہ ترجیح والے پہلے چلتے ہیں (ڈیفالٹ 0)۔ فوکس والے کمپوننٹس FOCUSED_INPUT_PRIORITY (10) استعمال کرتے ہیں |
global | اس کمپوننٹ سے باہر کوئی <Modal> کھلا ہو تو بھی ان پٹ وصول کرتے رہیں (ڈیفالٹ false) |
ambient | اس ہینڈلر کو فوکس کے اشارے کے لیے شمار نہ کریں (ڈیفالٹ false) |
Dev Overlay کا شارٹ کٹ (F2 یا Ctrl+`) ایمبیئنٹ ہے، اس لیے جس صفحے پر کی بورڈ کا کوئی اور ان پٹ نہ ہو وہاں اشارہ نہیں دکھتا۔
useInput((e) => { if (e.key === "f2") toggleOverlay();}, { ambient: true });usePaste اور useWheel
usePaste((e) => insert(e.text));useWheel((e) => scrollBy(e.rows));useKeyState (تجرباتی)
@textjs/react/experimental، useKeyState کو ایکسپورٹ کرتا ہے تاکہ دبا کر رکھی گئی فزیکل کلیدوں کو KeyboardEvent.code ("KeyW"، "ArrowUp"، "ControlLeft") سے ٹریک کیا جا سکے۔ keys.isDown(code) کو پول کرنے یا keys.pressed کو پڑھنے سے React دوبارہ رینڈر نہیں کرتا۔ کلیدوں کے دبنے اور چھوڑے جانے پر اسی وقت ردعمل دینے کے لیے ایک کال بیک پاس کریں۔
import { useKeyState } from "@textjs/react/experimental";const keys = useKeyState((e) => { if (e.code === "Space" && e.down) fire();});صفحے کا فوکس ختم ہونے پر دبا کر رکھی گئی کلیدیں خودکار طور پر ریلیز ہو جاتی ہیں۔ تجرباتی ایکسپورٹس کی ورژننگ کے لیے مطابقت توڑنے والی تبدیلیاں دیکھیں۔
useViewport
const { cols, rows, focused, paused } = useViewport();usePageFocus
usePageFocus() بتاتا ہے کہ صفحے پر فوکس ہے یا نہیں۔ کلیدوں کا ان پٹ ایپ تک صرف اسی وقت پہنچتا ہے جب صفحے پر فوکس ہو۔ اس کی ویلیو useViewport().focused جیسی ہے، لیکن یہ صرف فوکس بدلنے پر دوبارہ رینڈر کرتا ہے۔
const focused = usePageFocus();جب صفحے پر فوکس نہ ہو اور ایپ میں useInput یا usePaste ہینڈلر، useKeyState ہک یا ایسا فوکس ٹارگٹ ہو جہاں Tab سے پہنچا جا سکے، تو کونسول فریم کی آخری قطار ایک عنبری پٹی بن جاتی ہے جس پر لکھا ہوتا ہے “کی بورڈ استعمال کرنے کے لیے صفحے پر کلک کریں”۔ ambient والے ہینڈلرز شمار نہیں ہوتے۔ یہ اشارہ ٹرمینل، ٹیسٹس یا ان لائن مررز میں نہیں دکھتا۔ ہر بار ظاہر ہونے پر یہ اشارہ تقریباً 6 سیکنڈ تک جھپکتا ہے، سوائے اس کے کہ سسٹم کی حرکت کم کرنے کی ترتیب آن ہو۔ یہ خود طے کرنے کے لیے کہ اشارہ کب دکھے، text.config.ts فائل یا createConsoleRoot میں focusHint: false سیٹ کریں اور <FocusHint> رینڈر کریں:
<FocusHint active={editing} />useConsoleStats
const { totalMs, spanCount } = useConsoleStats({ interval: 250 });useApp
const { exit, pause, resume } = useApp();window.text کا REPL
ہر ایپ window.text میں ہیلپرز شامل کرتی ہے۔ انہیں DevTools کے پرامپٹ میں ٹائپ کریں۔
text.help()text.resize(120, 36) // pin the grid sizetext.responsive(true) // fit the docked console againtext.pause()text.stats()text.wireframe()text.copyText()