open-index/open-npm huggingface dataset:
npm package: @profiscience/knockout-contrib-bindings
Description: Knockout JS Binding Handlers
Author: Casey Webb
Latest version: 1.0.0-alpha.6

# @profiscience/knockout-contrib-bindings

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

> This is a metapackage including all `@profiscience/knockout-contrib-bindings-*` packages

Custom bindings for [KnockoutJS][]

### Contents
- [ctrlClick](../bindings.ctrlClick)
- [jquery](../bindings.jquery)
- [shiftClick](../bindings.shiftClick)
- [toggle](../bindings.toggle)

### Usage

Importing a package will add it to Knockout's global registry. You can import a single binding, or all of them.

```javascript
// import all
import '@profiscience/knockout-contrib-bindings'

// import single
import '@profiscience/knockout-contrib-bindings/jquery'
```

[KnockoutJS]: https://knockoutjs.com

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings.svg?maxAge=2592000
npm package: @profiscience/knockout-contrib-bindings-alt-click
Description: KnockoutJS Alt+Click Binding
Author: Casey Webb
Latest version: 1.0.1

# @profiscience/knockout-contrib-bindings-alt-click

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.altClick
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.altClick

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.altClick&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.altClick

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.altClick&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.altClick

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-alt-click
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-alt-click.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-alt-click&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-alt-click.svg?maxAge=2592000

Built-in [click binding][], filtered for alt+click

__NOTE:__ Consider mobile users (where there is no access to alt) when using this binding

## Usage

```typescript
// register as "altClick"
import '@profiscience/knockout-contrib-bindings-alt-click'

// register as custom name
import * as ko from 'knockout'
import { altClickBindingHandler } from '@profiscience/knockout-contrib-bindings-alt-click'
ko.bindingHandlers['click.alt'] = altClickBindingHandler
```

```html
<div data-bind="altClick: (event, data) => console.log(data)"></div>
```

[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-click-alt
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.click.alt

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.alt
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.click.alt
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.alt&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.click.alt
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.alt&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.click.alt
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-click-alt
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-click-alt.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-click-alt&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-click-alt.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Built-in [click binding][], filtered for alt+click

**NOTE:** Consider mobile users (where there is no access to alt) when using this binding

## Usage

Accepts a function with the same API as the built-in [click-binding][]

```html
<div data-bind="click.alt: (event, data) => console.log(data)"></div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-click-ctrl
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.click.ctrl

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.click.shift
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.click.shift
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.click.shift
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-click-shift
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-click-shift.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-click-shift&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-click-shift.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Built-in [click binding][], filtered for ctrl+click

**NOTE:** Consider MacOS (where meta+click is more intuitive) and mobile users (where there is no access to ctrl) when using this binding

## Usage

Accepts a function with the same API as the built-in [click-binding][]

```html
<div data-bind="click.ctrl: (event, data) => console.log(data)"></div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-click-meta
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.click.meta

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.meta
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.click.meta
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.meta&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.click.meta
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.meta&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.click.meta
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-click-meta
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-click-meta.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-click-meta&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-click-meta.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Built-in [click binding][], filtered for meta+click

**NOTE:** Consider mobile users (where there is no access to meta) when using this binding

## Usage

Accepts a function with the same API as the built-in [click-binding][]

```html
<div data-bind="click.meta: (event, data) => console.log(data)"></div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-click-shift
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.click.shift

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.click.shift
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.click.shift
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.click.shift&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.click.shift
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-click-shift
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-click-shift.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-click-shift&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-click-shift.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Built-in [click binding][], filtered for shift+click

**NOTE:** Consider mobile users (where there is no access to shift) when using this binding

## Usage

Accepts a function with the same API as the built-in [click-binding][]

```html
<div data-bind="click.shift: (event, data) => console.log(data)"></div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-ctrl-click
Description: KnockoutJS Ctrl+Click Binding
Author: Casey Webb
Latest version: 1.0.1

# @profiscience/knockout-contrib-bindings-ctrl-click

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.ctrlClick
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.ctrlClick

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.ctrlClick&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.ctrlClick

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.ctrlClick&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.ctrlClick

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-ctrl-click
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-ctrl-click.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-ctrl-click&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-ctrl-click.svg?maxAge=2592000

Built-in [click binding][], filtered for ctrl+click

__NOTE:__ Consider MacOS (where meta+click is more intuitive) and mobile users (where there is no access to ctrl) when using this binding

## Usage

```typescript
// register as "ctrlClick"
import '@profiscience/knockout-contrib-bindings-ctrl-click'

// register as custom name
import * as ko from 'knockout'
import { ctrlClickBindingHandler } from '@profiscience/knockout-contrib-bindings-ctrl-click'
ko.bindingHandlers['click.ctrl'] = ctrlClickBindingHandler
```

```html
<div data-bind="ctrlClick: (event, data) => console.log(data)"></div>
```

[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-draggable
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 1.1.2

# bindings.draggable

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.draggable
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.draggable
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.draggable&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.draggable
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.draggable&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.draggable
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-draggable
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-draggable.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-draggable&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-draggable.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Drag and drop list re-ordering

## Usage

```html
<ul class="draggable-list-container" data-bind="foreach: foos">
  <li class="draggable-item-container">
    <i
      class="fa fa-bars"
      data-bind="draggable: {
        listContainerSelector: '.draggable-list-container',
        itemContainerSelector: '.draggable-item-container',
        list: $parent.foos,
        item: $data
      }"
    ></i>
  </li>
</ul>
```

```css
.draggable-list-container {
  /* position must be anything BUT static */
  position: relative;
}
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
npm package: @profiscience/knockout-contrib-bindings-infinite-scroll
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 1.1.2

# bindings.infiniteScroll

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.infiniteScroll
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.infiniteScroll
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.infiniteScroll&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.infiniteScroll
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.infiniteScroll&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.infiniteScroll
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-infinite-scroll
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-infinite-scroll.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-infinite-scroll&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-infinite-scroll.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Call a function when the end of an element is reached

## Usage

```html
<div data-bind="foreach: todos, infiniteScroll: fetchMoreTodos">...</div>
```

**with a custom offset**

By default the infinite scroll will trigger 1500px before reaching the bottom of the bound element. This can be customized, for example to preload slower APIs sooner you could define a larger offset.

```html
<div
  data-bind="foreach: todos, infiniteScroll: { handler: fetchMoreTodos, offset: 2000 }"
>
  ...
</div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
npm package: @profiscience/knockout-contrib-bindings-jquery
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.jquery

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.jquery
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.jquery
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.jquery&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.jquery
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.jquery&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.jquery
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-jquery
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-jquery.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-jquery&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-jquery.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage and has a peer dependency on jquery and knockout-punches

Invoke a jQuery plugin on an element

## Usage

```html
<div id="my-element" data-bind="$.somePlugin: pluginOpts"></div>
```

...is equivalent to calling `$('#my-element').somePlugin(pluginOpts)`, without having to worry about when the element is rendered.

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
npm package: @profiscience/knockout-contrib-bindings-meta-click
Description: KnockoutJS Meta+Click Binding
Author: Casey Webb
Latest version: 1.0.1

# @profiscience/knockout-contrib-bindings-meta-click

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.metaClick
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.metaClick

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.metaClick&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.metaClick

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.metaClick&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.metaClick

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-meta-click
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-meta-click.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-meta-click&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-meta-click.svg?maxAge=2592000

Built-in [click binding][], filtered for meta+click

__NOTE:__ Consider mobile users (where there is no access to meta) when using this binding

## Usage

```typescript
// register as "metaClick"
import '@profiscience/knockout-contrib-bindings-meta-click'

// register as custom name
import * as ko from 'knockout'
import { metaClickBindingHandler } from '@profiscience/knockout-contrib-bindings-meta-click'
ko.bindingHandlers['click.meta'] = metaClickBindingHandler
```

```html
<div data-bind="metaClick: (event, data) => console.log(data)"></div>
```

[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-repeat
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 1.1.1

# bindings.repeat

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.repeat
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.repeat
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.repeat&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.repeat
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.repeat&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.repeat
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-repeat
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-repeat.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-repeat&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-repeat.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Repeat a template `n` times

## Usage

```html
<ol data-bind="repeat: 5">
  <li data-bind="text: $index()"></li>
</ol>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
npm package: @profiscience/knockout-contrib-bindings-shift-click
Description: Shift Click Binding for KnockoutJS
Author: Casey Webb
Latest version: 1.0.1

# @profiscience/knockout-contrib-bindings-shift-click

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.shiftClick
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.shiftClick

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.shiftClick&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.shiftClick

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.shiftClick&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.shiftClick

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-shift-click
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-shift-click.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-shift-click&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-shift-click.svg?maxAge=2592000

Built-in [click binding][], filtered for shift+click

__NOTE:__ Consider mobile users (where there is no access to shift) when using this binding

## Usage

```typescript
// register as "shiftClick"
import '@profiscience/knockout-contrib-bindings-shift-click'

// register as custom name
import * as ko from 'knockout'
import { shiftClickBindingHandler } from '@profiscience/knockout-contrib-bindings-shift-click'
ko.bindingHandlers['click.shift'] = shiftClickBindingHandler
```

```html
<div data-bind="shiftClick: (event, data) => console.log(data)"></div>
```

[click binding]: https://knockoutjs.com/documentation/click-binding.html
npm package: @profiscience/knockout-contrib-bindings-toggle
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.2

# bindings.toggle

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.toggle
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/bindings.toggle
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.toggle&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/bindings.toggle
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/bindings.toggle&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/bindings.toggle
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-bindings-toggle
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-bindings-toggle.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-bindings-toggle&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-bindings-toggle.svg?maxAge=2592000

> This package is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Toggle an observable boolean on click. Disable with optional `toggleDisable` binding.

## Usage

```html
<div data-bind="toggle: myObsBool, toggleDisable: ko.observable(false)"></div>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
npm package: @profiscience/knockout-contrib-components
Description: Knockout JS Components
Author: Casey Webb
Latest version: 1.0.0-alpha.36

# @profiscience/knockout-contrib-components

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

> This is a metapackage including all `@profiscience/knockout-contrib-components-*` packages

[Custom components](https://knockoutjs.com/documentation/component-overview.html) for [KnockoutJS][]

Styled with [Bootstrap v4][]

<!-- TOC -->
### Contents
- [flash-message](../components.flash-message)
<!-- /TOC -->

### Usage

Importing a component will add it to Knockout's global registry with the `contrib` prefix. e.g. `<contrib-flash-message></contrib-flash-message>`

You may import a single binding, or all of them.

```javascript
// import all
import '@profiscience/knockout-contrib-components'

// import single
import '@profiscience/knockout-contrib-components/flash-message' 
```

[KnockoutJS]: https://knockoutjs.com
[Bootstrap v4]: https://getbootstrap.com/
[CSS modules]: https://github.com/css-modules/css-modules
[Webpack]: https://webpack.js.org

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/components

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/components

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/components

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-components
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-components.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-components&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-components.svg?maxAge=2592000
npm package: @profiscience/knockout-contrib-components-flash-message
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.19

# components.flash-message

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.flash-message
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/components.flash-message
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.flash-message&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/components.flash-message
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.flash-message&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/components.flash-message
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-components-flash-message
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-components-flash-message.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-components-flash-message&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-components-flash-message.svg?maxAge=2592000

> **NOTE:** This packages is intended for consumption via the [@profiscience/knockout-contrib metapackage](../_)

Flash message component for use with [@profiscience/knockout-contrib-router-middleware-flash-message](../router.middleware.flashMessage).

## Usage

```typescript
import * as ko from 'knockout'
import { flashMessageComponentConfig } from '@profiscience/knockout-contrib'

ko.components.register('contrib-flash-message', flashMessageComponentConfig)
```

```html
<contrib-flash-message></contrib-flash-message>
```
npm package: @profiscience/knockout-contrib-components-markdown
Description: Markdown Component for KnockoutJS
Author: Casey Webb
Latest version: 0.0.8

# @profiscience/knockout-contrib-components-markdown

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.markdown
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/components.markdown

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.markdown&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/components.markdown

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/components.markdown&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/components.markdown

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-components-markdown
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-components-markdown.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-components-markdown&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-components-markdown.svg?maxAge=2592000

**NOTE:** It is recommended to use the [@profiscience/knockout-contrib-components metapackage](../components)

@todo description

## Usage

```typescript
import '@profiscience/knockout-contrib-components/markdown'
```
```html
<markdown></markdown>
```

## Params

@todo document params
npm package: @profiscience/knockout-contrib-filters-date-format
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.4

# filters.date.format

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/filters.date.format
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/filters.date.format
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/filters.date.format&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/filters.date.format
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/filters.date.format&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/filters.date.format
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-filters-date-format
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-filters-date-format.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-filters-date-format&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-filters-date-format.svg?maxAge=2592000

> This packages is intended for consumption via the [@profiscience/knockout-contrib][] metapackage

Formats a date using [date-fn's format function][date-fns-format]

## Usage

See the documentation for [format][date-fns-format] from date-fns for date formatting string options

```html
<span data-bind="text: new Date() | date.format:'YYYY-MM-DD'"></span>
```

[@profiscience/knockout-contrib]: https://github.com/Profiscience/knockout-contrib
[date-fns-format]: https://date-fns.org/v1.29.0/docs/format
npm package: @profiscience/knockout-contrib-jest-matchers
Description: [![Version][npm-version-shield]][npm] [![Dependency Status][david-dm-shield]][david-dm] [![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer] [![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev] [![Downloads][npm-stats-shield]][npm-sta
Author: Casey Webb
Latest version: 2.0.4

# jest-matchers

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

Matchers for testing KnockoutJS with [jest][]

# API

- `toBeObservable()`

# Usage

_This package is **NOT** included in the metapackage. Install it with `yarn add @profiscience/knockout-contrib-jest-matches`, or the equivalent for your package manager (npm, pnpm, etc.)._

```javascript
import '@profiscience/knockout-contrib-jest-matchers'

expect(ko.observable(true)).toBeObservable()
```

[jest]: https://facebook.github.io/jest/
[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/jest-matchers
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/jest-matchers
[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/jest-matchers&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/jest-matchers
[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/jest-matchers&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/jest-matchers
[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-jest-matchers
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-jest-matchers.svg
[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-jest-matchers&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-jest-matchers.svg?maxAge=2592000
npm package: @profiscience/knockout-contrib-model-mixins-disposal-aggregator
Description: @TODO
Author: Casey Webb
Latest version: 2.0.2

# @profiscience/knockout-contrib-model-mixins-disposal-aggregator

@TODO

> In the meantime, see the [tests](./test.ts) and [example usage](https://github.com/caseyWebb/knockout-realworld).
npm package: @profiscience/knockout-contrib-model-mixins-query
Description: > This package is intended to be consumed via the [@profiscience/knockout-contrib](../_) metapackage
Author: Casey Webb
Latest version: 1.1.21

# model.mixins.query

> This package is intended to be consumed via the [@profiscience/knockout-contrib](../_) metapackage

Adds a `.query` property using the [query](../query) package for persistent, stateless data model params.

In other words, initializes data model params via the querystring, and mirrors changes so that the same query will be applied if the page is reloaded. Useful for making bookmark-able pages.

See the [query](../query) package for more details.

## Usage

```typescript
import {
  DataModelConstructorBuilder,
  QueryMixin,
} from '@profiscience/knockout-contrib'

class MyDataModel extends DataModelConstructorBuilder.Mixin(
  QueryMixin(
    { someQuerystringParameter: '' } /* Query options (see query package) */,
    'my-data-model' /* (optionally) supply a query group */
  )
)<any> {}

const model = new MyDataModel()

// if querystring contains `?someQuerystringParameter=foo`
model.query.someQuerystringParameter() === 'foo'

// update querystring to `?someQuerystringParameter=bar`
model.query.someQuerystringParameter('bar')

// query params are mirrored on `.params`, so it plays well will mixins
// that follow the correct conventions w/o additional buy in
model.params.someQuerystringParameter()
```
npm package: @profiscience/knockout-contrib-observable-fn
Description: Knockout JS Observable Functions
Author: Casey Webb
Latest version: 1.0.0-alpha.12

# @profiscience/knockout-contrib-observable-fn

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

> This is a metapackage including all `@profiscience/knockout-contrib-observable-fn-*` packages

Extends the observable prototype. See [Adding custom functions using "fn"](https://knockoutjs.com/documentation/fn.html)

<!-- TOC -->
### Contents
- [increment](../observable.fn.increment)
- [subscribeOnce](../observable.fn.subscribeOnce)
- [toString](../observable.fn.toString)
<!-- /TOC -->

### Usage

Importing a function will add it to the prototype of all subsequently created observables.

You may import a single function, or all of them.

```javascript
// import all
import '@profiscience/knockout-contrib-observable-fn'

// import single
import '@profiscience/knockout-contrib-observable-fn/increment'
```

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/observable.fn

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/observable.fn

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/observable.fn

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-observable-fn
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-observable-fn.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-observable-fn&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-observable-fn.svg?maxAge=2592000
npm package: @profiscience/knockout-contrib-observable-fn-increment
Description: KnockoutJS Observable.fn.increment()
Author: Casey Webb
Latest version: 1.0.0-alpha.8

# @profiscience/knockout-contrib-observable-fn-increment

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn.increment
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/observable.fn.increment

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn.increment&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/observable.fn.increment

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/observable.fn.increment&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/observable.fn.increment

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-observable-fn-increment
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-observable-fn-increment.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-observable-fn-increment&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-observable-fn-increment.svg?maxAge=2592000

**NOTE:** It is recommended to use the [@profiscience/knockout-contrib-observable-fn metapackage](../observable.fn)

Increments/decrements numeric observables

## Usage

```javascript
import '@profiscience/knockout-contrib-observable-fn/increment'

const foo = ko.observable(0)

foo.increment()   // 1
foo.increment(3)  // 4
foo.decrement()   // 3
foo.decrement(2)  // 1
```