Terminalde tepki verin: Ink 7.0, giriş işlemeyi kökten yeniden işliyor

Sürüm 7.0.0 ile React Ink tabanlı CLI kütüphanesi, minimum gereksinimlerini önemli ölçüde artırıyor ve giriş işlemeyi radikal bir şekilde elden geçiriyor. Aynı zamanda etkileşim, düzen ve animasyon için yeni API'ler eklenecek. Bundan sonra bakımcıların Node.js 22'ye ve 19.2 sürümünden itibaren React'a ihtiyacı olacak. Değişiklikler mevcut projelerde ayarlamalar yapılmasını gerektiriyor ancak aynı zamanda daha karmaşık terminal kullanıcı arayüzlerine de olanak sağlıyor.

Duyurudan sonra devamını okuyun

Ink ile etkileşimli komut satırı uygulamaları, React bileşenleriyle bildirimsel olarak geliştirilebilir. Geliştiriciler, doğrudan ANSI kaçış dizileri ve düşük seviyeli terminal API'leri ile çalışmak yerine, CLI arayüzlerini durum yönetimi, bileşen yapısı ve kancalarla web kullanıcı arayüzlerine benzer şekilde tanımlar.

Ink dahili olarak artık Reacts'ı kullanıyor useEffectEventgiriş işleyicilerinin her oluşturulduklarında yeniden kaydolmalarını önlemek için. Bu, olay işlemeyi dengeler ve performans yükünü azaltır.

Klavye giriş işlemesinde de düzeltmeler yapıldı. Yani Ink artık net bir şekilde ayrım yapıyor key.backspace VE key.delete. Birçok terminal, her iki anahtar için de aynı bayt dizilerini gönderir; bu da geçmişte yanlış yorumlamalara yol açmıştır. Şu ana kadar kim key.delete müdahaleye tepki gösterdi Backspace mantığını değiştirmeli. Ayrıca Mürekkep key.meta artık Esc tuşuna bastığınızda: key.meta artık yalnızca alt/meta kombinasyonlarını temsil ediyor, key.escape ayrı olarak gösterilmektedir.

Yeni kanca usePaste panodan yapıştırılan metni bağımsız bir olay olarak ele alır. Bunu yapmak için Ink, terminalin parantez içine yapıştırma modunu etkinleştirerek yapıştırılan metnin sürekli bir dize olarak gelmesini sağlar. Bu mod olmadan, yapıştırma işlemi bir dizi tek tuşa basma olayı olarak görünecektir: bu, örneğin giriş alanları veya REPL benzeri arayüzlerde sorunludur.

Yeni kanca duyarlı düzenler sağlar useWindowSize sütunlar ve satırlar halinde terminalin geçerli boyutunu belirler ve değişiklik meydana geldiğinde otomatik olarak yeniden oluşturmayı tetikler. Örneğin tablolar veya düzenler farklı terminal boyutlarına dinamik olarak uyarlanabilir.

Duyurudan sonra devamını okuyun

İle useBoxMetrics Geliştiriciler, tarayıcıdaki DOM ölçümleriyle karşılaştırılabilir şekilde çalışma zamanında düzen kapsayıcılarının gerçek boyutunu belirler. Bu, içeriğin oluşturulan boyuta göre konumlandırılması veya kesilmesi gerektiğinde daha hassas düzen mantığına yol açar.

Kanca useAnimation Yerleşik bir animasyon mekanizmasıyla birlikte gelir. Yapılandırılabilir aralıklarla sayılan ve duraklatılabilen bir çerçeve sayacı sağlar. Demonte edildiğinde otomatik olarak temizlenir. Tipik uygulamalar; döndürücüler, ilerleme göstergeleri veya ASCII animasyonlarıdır.

Oluşturma için alternatif bir ekran modu eklendi. aradığınızda etkinleştirirsiniz render()uygulama, Vim gibi programlardan bilinen veya bilinmeyen bir davranış olan terminalin ikinci ekran arabelleğini kullanır. Çıktıktan sonra terminal orijinal içerikleri geri yükler. Bu, yeni seçenekle entegre edilebilir interactive CI işlem hatları veya kanal senaryoları gibi etkileşimli ortamların otomatik algılanmasını değiştirin.

Düzen sistemi ayrıca uzantıları da alır. Bileşen <Box> şimdi destekle aspectRatio, alignContent, position="static" gibi konum bilgilerinin yanı sıra top, right, bottom VE left. Katılmak maxWidth VE maxHeight. İle borderBackgroundColor İlk kez çerçevelerin arka plan rengini içerikten bağımsız olarak ayarlamak mümkün oluyor. Metin için Ink seçeneği çalıştırır wrap="hard" a: Satırları mevcut genişliğe tam olarak uyarak doldurur ve ayrıca kelimenin ortasında durur: yakın hizalanmış tablo veya tek aralıklı düzenler için kullanışlıdır.

Odaklanmayı yönetirken kanca şunları sağlar: useFocusManager şimdi aynı zamanda o anda odaklanılan öğenin kimliği. Bu, daha karmaşık etkileşimleri kontrol etmeyi ve sorunları gidermeyi kolaylaştırır.

İşlevsel yeniliklere ek olarak sürüm 7.0.0, çeşitli kararlılık sorunlarını da giderir. Bunlar arasında CJK metinleri ve emojilerle ilgili görüntüleme hataları, giriş işlemede bilinmeyen şifrelerden kaynaklanan çökmelerin yanı sıra sondaki satır sonları ve çakışan yazma süreçleriyle ilgili işleme hataları yer alıyor.

Yeni sürüm 7.0.0 hakkındaki tüm bilgileri Ink'in GitHub proje sayfasındaki sürüm notlarında bulabilirsiniz.


(fo)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir