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