ہکس اور کونسول 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 پر کوئی اثر نہیں ہوتا۔

آپشنتفصیل
isActivefalse ہینڈلر کو ان ماؤنٹ کیے بغیر بند کرتا ہے (ڈیفالٹ 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()
⁦GitHub⁩ پر اس صفحے میں ترمیم کریں