Giter Club home page Giter Club logo

chessboard2's Introduction

chessboard2 JavaScript Library npm ISC License

An updated version of chessboard.js.

  • better mobile support
  • no dependencies
  • written in ClojureScript
  • improved API

Development Status

March 2023: Development in progress. Getting close to an initial v2 release. Pretty usable for most projects in it's current state.

In-progress documentation available at https://chessboardjs.com/v2/examples

Download and Install

Instructions are available here.

@chrisoakman/chessboard2 on npm

Or use via CDN:

<!-- add stylesheet via CDN: -->
<link rel="stylesheet"
      href="https://unpkg.com/@chrisoakman/[email protected]/dist/chessboard2.min.css"
      integrity="sha384-MZONbGYADvdl4hLalNF4d+E/6BVdYIty2eSgtkCbjG7iQJAe35a7ujTk1roZIdJ+"
      crossorigin="anonymous">

<!-- add JS via CDN: -->
<script src="https://unpkg.com/@chrisoakman/[email protected]/dist/chessboard2.min.js"
        integrity="sha384-zl6zz0W4cEX3M2j9+bQ2hv9af6SF5pTFrnm/blYYjBmqSS3tdJChVrY9nenhLyNg"
        crossorigin="anonymous"></script>

Naming and Versioning

chessboard2 is a distinct project from chessboard.js. The project name is "chessboard2" 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 chessboard2 at v2.0.0 for it's "initial release". There will not be a v1.0.0 major release of chessboard2.

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:

## initial setup: install node_modules/ folder
yarn install

## produce website/chessboard2.js and build the local website
npm run build

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

In order to create and publish a release:

## 1) update CHANGELOG
## 2) make sure flags/runtime-checks? is set to false
## 3) update package.json version
## 4) create a git commit
## 5) create git tag: "git tag -a v1.4 -m "my version 1.4" "
## 6) push git tag to GitHub: git push origin <tagname>

## 7) create fresh build
npm run release

## 8) sanity-check the result files
npm publish --dry-run

## 9) publish
npm publish --access=public

Tests

## Unit Tests
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
  • version the position? increment by 1 every time the position changes
  • review the speed shorthand times. ie: what should "slow" and "superslow" feel like?

API

  • getItems() return all items
  • "pulse" a piece with some simple animations
  • "bounce" a piece?
  • animate an arrow
  • removeArrow(<arrowId>, <arrowId>, etc)

HTML / DOM Design

TODO: 27 Oct 2022 this is currently inaccurate. Need to fix and create accurate write-up of how it works

  • 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

License

ISC License

chessboard2's People

Contributors

oakmac avatar aurmer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.