Giter Site home page Giter Site logo

cubing / cubing.js Goto Github PK

View Code? Open in Web Editor NEW
235.0 9.0 42.0 37.51 MB

๐Ÿ›  A library for displaying and working with twisty puzzles. Also currently home to the code for Twizzle.

Home Page: https://js.cubing.net/cubing/

License: GNU General Public License v3.0

JavaScript 0.53% Makefile 0.35% TypeScript 90.81% CSS 1.42% HTML 6.89% Shell 0.01%
library javascript cubing meta puzzle twistypuzzles puzzles rubik rubiks rubiks-cube

cubing.js's Introduction

cubing.js

cubing.js is a collection of JavaScript libraries, still under development.

Twizzle

Twizzle is the spiritual successor to alg.cubing.net, based on cubing.js. It is currently being developed at src/sites/alpha.twizzle.net. See the Twizzle Diaries video series for more information on Twizzle's vision and use cases.

Getting started

If you're just getting started, the easiest way to use cubing.js is through cdn.cubing.net:

<script src="https://cdn.cubing.net/js/cubing/twisty" type="module"></script>
<twisty-player alg="R U R' U R U2' R'"></twisty-player>

You can find more documentation at js.cubing.net/cubing/.

Using with node and npm

If you would like to use cubing.js as a library in your package-based projects, make sure you have node and npm installed (installing node will install npm as well). Once you have installed those, you can run:

npm install cubing

Then you can use modules like this:

import { Alg } from "cubing/alg";
import { TwistyPlayer } from "cubing/twisty";

Please note that cubing.js requires ES2022 module compatibility. See here.

Contributing

If you would like to contribute to the development of cubing.js, please refer to our contribution guidelines.

Developing cubing.js itself

Working on cubing.js requires the following tools:

On macOS, you can install these using Homebrew:

brew install git git-lfs node oven-sh/bun/bun

(On other platforms, you'll have to follow individual installation instructions. We recommend using WSL on Windows.)

Once you have these dependencies, you can run the cubing.js source like this (see the contribution guidelines for more details):

git clone https://github.com/cubing/cubing.js && cd cubing.js
make dev
# Now visit http://cubing.localhost:3333

To quickly check any changes for issues, try make test-fast. Run make test for more thorough testing options.

Developing on Windows

We recommend using Microsoft's Windows Subsystem for Linux (WSL) to develop cubing.js on Windows.

Release notes

For release versions and release notes, view the release history on GitHub: https://github.com/cubing/cubing.js/releases

License

This project is licensed under the Mozilla Public License. This means that cubing.js is free to use in any public or private project. We've selected this license so that cubing.js can be used in a large variety of use cases.

However, if you modify the source code of cubing.js to fit your needs then you must publish your modifications to the cubing.js source code (e.g. publish a fork put it on GitHub). See the full license for exact details.

Although you are no longer required to publish code that uses cubing.js, we encourage you to develop your projects as open-source. This way, others can learn from your work and build on it far into the future. It also allows us to tell how features are being used by projects in the community, and what new features are needed.

Fine Print

All original code in this project is dual-licensed as both GPL and MPL, but the codebase contains additional vendored code under the Apache, MIT, and Ubuntu Font licenses. This may affect you if you are forking the source code, as certain parts are not MPL-licensed on their own. But if you are just using cubing.js as a library, you can effectively treat all of cubing.js as if it was MPL-licensed.

Acknowledgments

As of this time, cubing.js primarily contains code by Lucas Garron (@lgarron) and Tom Rokicki (@rokicki). Significant parts of the cubing code also are from:

It also uses the three.js, comlink, and p-lazy libraries. Twizzle also uses the Ubuntu font.

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.