# scrollable-string

> Generate a diff friendly string that is bounded by a configurable scroll box

Latest version **1.4.0** (published 2017-12-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install scrollable-string
pnpm add scrollable-string
yarn add scrollable-string
bun add scrollable-string
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.4.0 |
| Published | 2017-12-29 |
| First published | 2017-09-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 18 |
| Author | Mathias Buus |
| Maintainers | watson, mafintosh |

## Links

- npm: https://www.npmjs.com/package/scrollable-string
- Repository: https://github.com/mafintosh/scrollable-string
- Issues: https://github.com/mafintosh/scrollable-string/issues
- npm.io page: https://npm.io/package/scrollable-string

## Recent versions

- 1.4.0 (latest) — 2017-12-29
- 1.3.1 — 2017-12-28
- 1.3.0 — 2017-09-29
- 1.2.0 — 2017-09-29
- 1.1.2 — 2017-09-19
- 1.1.1 — 2017-09-19
- 1.1.0 — 2017-09-19
- 1.0.1 — 2017-09-19
- 1.0.0 — 2017-09-19

## README

# scrollable-string

Generate a diff friendly string that is bounded by a configurable scroll box.

```
npm install scrollable-string
```

[![Build Status](https://travis-ci.org/mafintosh/scrollable-string.svg?branch=master)](https://travis-ci.org/mafintosh/scrollable-string)

Made for usage with [ansi-diff-stream](https://github.com/mafintosh/ansi-diff-stream) and friends

## Usage

``` js
var scrollable = require('scrollable-string')

var multiLineString = `
  foo
  bar
  baz
`

var str = scrollable(multiLineString, {
  maxHeight: 2 // max 32 rows high
})

console.log(str.toString()) // prints foo\nbar\n
str.down()
console.log(str.toString()) // prints bar\nbaz\n
str.down()
console.log(str.toString()) // still prints bar\nbaz\n
```

## API

#### `var str = scrollable(string, [options])`

Create a new scrollable string. Options include:

``` js
{
  maxHeight: 32, // max rows height
  minHeight: 0 // min height (will pad the input string)
}
```

#### Event: `update`

Emitted after either `str.up()` or `str.down()` have been sucessfully
called.

#### `var moved = str.setPosition(pos)`

Set absolute scroll position.

Returns `true` if the position changed, `false` if not.

#### `var moved = str.up()`

Move the view-port up.

Returns `true` if the position changed, `false` if not.

#### `var moved = str.down()`

Move the view-port down.

Returns `true` if the position changed, `false` if not.

#### `var moved = str.move(inc)`

Move the view-port up or down, i.e `str.move(-5)` to move 5 lines up.

Returns `true` if the position changed, `false` if not.

#### `var moved = str.bottom()`

Move to bottom.

Returns `true` if the position changed, `false` if not.

#### `var moved = str.top()`

Move to top.

Returns `true` if the position changed, `false` if not.

#### `var rows = str.height()`

Returns the height of the string in rows.

#### `var changed = str.resize(options)`

Resize the view-port. Takes same options as the constructor.

Returns `true` if either the position or the height changed, `false` if not.

#### `var string = str.toString()`

Returns the string rendered by the view-port.

#### `var percentage = str.pct()`

Returns the current scroll position in percent (a number between `0` and
`1`).

#### `var bool = str.atBottom()`

Check if the view-port is at the bottom.

#### `var bool = str.atTop()`

Check if the view-port is at the top.

#### `var bool = str.scrollable()`

Check if the view-port is not at the top or bottom.

## License

MIT

---
_Source: https://npm.io/package/scrollable-string · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
