xico2k/termwind-plugin-live

The live plugin for Termwind.

dev-main 2023-03-06 16:54 UTC

This package is auto-updated.

Last update: 2024-05-06 19:24:41 UTC


README

Termwind logo

Termwind Live Plugin

GitHub Workflow Status (master) Total Downloads Latest Version License

Termwind Live Plugin allows you to make your cli content live.

Installation

Requires PHP 8.0+

Require Termwind Live Plugin using Composer:

composer require xico2k/termwind-plugin-live

Usage

use function Termwind\Live\live;

live(function () {
    static $total = 0;

    return sprintf('The content was refreshed %d times.', ++$total);
})->refreshEvery(seconds: 1);

refreshEvery()

The refreshEvery methods may be used to update the content by certain amount of time.

Methods available:

  • refreshEvery(milliseconds: 0, seconds: 0)
  • refreshEverySeconds($seconds)
  • refreshEveryMilliseconds($seconds)
// Seconds
live(fn () => 'foo')->refreshEverySeconds(1); // or
live(fn () => 'foo')->refreshEvery(seconds: 1);

// Milliseconds
live(fn () => 'foo')->refreshEveryMilliseconds(250); // or
live(fn () => 'foo')->refreshEvery(milliseconds: 1);

while(Closure $condition)

The while() method may be used to update the content while the condition is true.

live(fn () => 'Loading...')
    ->while(fn () => $process->running());

showCursor() and hideCursor()

The showCursor() and hideCursor() methods may be used to show/hide the cursor on your cli.

live('Loading...')
    ->hideCursor()
    ->while(fn () => $process->running())
    ->showCursor();

clear()

The clear() method may be used to clear the live output.

live('Loading...')
    ->while(fn () => $process->running())
    ->clear();

RefreshEvent

The RefreshEvent is passed to the Closure and provides a way to stop the execution.

use Termwind\Live\Events\RefreshEvent;

live(function (RefreshEvent $event) {
    $shouldStop = true; // Call to check something...

    if ($shouldStop) {
        $event->stop();
    }

    return 'foo';
})->refreshEvery(seconds: 1);

Termwind Live Plugin is an open-sourced software licensed under the MIT license.