# @chrisoakman/chessboardjs2

> JavaScript Chess Board Component v2

Latest version **0.1.0** (published 2022-10-13) · ISC license · 0 weekly downloads

## Install

```sh
npm install @chrisoakman/chessboardjs2
pnpm add @chrisoakman/chessboardjs2
yarn add @chrisoakman/chessboardjs2
bun add @chrisoakman/chessboardjs2
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2022-10-13 |
| First published | 2022-10-13 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 184.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 112 |
| Author | Chris Oakman |
| Maintainers | chrisoakman |

## Links

- npm: https://www.npmjs.com/package/@chrisoakman/chessboardjs2
- Repository: https://github.com/oakmac/chessboardjs2
- Homepage: https://chessboardjs.com/v2
- Issues: https://github.com/oakmac/chessboardjs2/issues
- npm.io page: https://npm.io/package/@chrisoakman/chessboardjs2

## Recent versions

- 0.1.0 (latest) — 2022-10-13

## README

# chessboardjs2 javascript library

An updated version of [chessboard.js]. Written in [ClojureScript], no dependencies, improved API.

## Development Status

**October 2022**: Development in progress. Not recommended using for anything public-facing.

## Naming and Versioning

chessboardjs2 is a completely distinct project from [chessboard.js]. The project
name is "chessboardjs2" and the version of the library will be independent of the
version of original [chessboard.js].

To remove any confusion for users, I will release chessboardjs2 at v2.0.0 for it's
"initial release". There will not be a v1.0.0 major release of chessboardjs2.

It is possible (although unlikely) that chessboard.js will have a v2.0.0 branch.

## Development Setup

Make sure that [node.js], [yarn], and a modern version of the JVM are installed (for [shadow-cljs]), then:

[node.js]:https://nodejs.org
[yarn]:https://yarnpkg.com/
[shadow-cljs]:https://github.com/thheller/shadow-cljs

```sh
## initial setup: install node_modules/ folder
yarn install

## produce website/chessboard2.js and build the local website
npx shadow-cljs release chessboard2 && ./scripts/website.js

## run a local web server on port 3232
npm run local-dev
```

## Tests

```sh
## Unit Tests
npx shadow-cljs compile node-tests
## or
npm run test

## Cypress
npm run cypress
```

## TODO before go-live

- [ ] variadic `removeArrow`, `removeCircle`, `removePiece` functions
- [ ] add "Rings"
  - are these separate from Circles or just an added config value?
- [ ] custom Items
  - add Duck to board, add toaster SVG
- [ ] notation should be configurable
- [ ] version the position? increment by 1 every time the position changes
- [ ] review the speed shorthand times. ie: what should "slow" and "superslow" feel like?
- [ ] draggable pieces on the board
- [ ] tap-to-move should work great

## API

- everything that chessboardjs v1 has
- `getItems()` return all items
- "pulse" a piece with some simple animations
- "bounce" a piece?
- animate an arrow
- `isAnimating` boolean
- `arrows()` returns array of the arrows on the board
- `addArrow(src, dest, '#color')`
- `addArrow({src, dest, color})`
- `removeArrow(<arrowId>, <arrowId>, etc)`
- use a `data-chessboard-draggable` property to allow items to be dropped to the board

## HTML / DOM Design

- the board-container has CSS `position: relative` and known `width` and `height` values
- the board contains DOM elements (called "items"), all of which have `position: absolute`
  - squares (usually 64)
  - pieces
  - arrows
  - dots
  - X's
  - your custom element!
- chessboard keeps an internal register of the location of these elements on the board
  and will update their position in response to a change

## Notes

- [duck chess](https://duckchess.com/) should be implementable

## License

[ISC License](LICENSE.md)

[ClojureScript]:https://clojurescript.org/
[chessboard.js]:https://github.com/oakmac/chessboardjs

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