الخطافات و 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)

اختصار لوحة التطوير (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 ثوانٍ، إلا إذا كان إعداد تقليل الحركة في النظام مفعّلًا. للتحكم في وقت ظهوره، اضبط focusHint: false في text.config.ts أو createConsoleRoot واعرض <FocusHint>:

<FocusHint active={editing} />

useConsoleStats

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

useApp

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

بيئة REPL في window.text

يضيف كل تطبيق أدوات مساعدة إلى 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