A functional toolbox for grid-based data.
Using npm
npm install gridl Using yarn
yarn add gridl ES6 modules
import { createGrid } from "gridl/core";Nodejs
const { createGrid } = require("gridl/_umd");See the website for detailed information and getting started guides.
import { createGrid } from "gridl/core"; const grid = createGrid({ columnCount: 4, rowCount: 3, createCell: (pos, idx) => (pos.y < 2 ? idx : "x"), }); // creates the following data object // => { // x: 0, // y: 0, // cellCount: 12, // columnCount: 4, // rowCount: 3, // array2D: [ // [ 0, 1, 2, 3], // [ 4, 5, 6, 7], // ["x", "x", "x", "x"], // ], // }Easily select cells, columns, rows, sub grids or neighbouring cells with selector functions. Read more about selectors in the getting started section or have a look at the API docs.
import { createGridFromArray2D, selectCell } from "gridl/core"; const grid = createGridFromArray2D([ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ]); // get the cell value at position = {x: 1, y: 2} selectCell({ grid, x: 2, y: 1 }); // => 6 // get the column at x = 2 selectColumn({ grid, x: 2 }); // => [2, 6, 10] // get the row at y = 1 selectRow({ grid, y: 1 }); // => [4, 5, 6, 7];Perform all kinds of data transformations on your grid, such as add, remove, rotate, swap, mirror and more. Read more about transformers in the getting started section or have a look at the API docs.
import { createGridFromArray2D } from "gridl/core"; import { addRowTop } from "gridl/transformers"; const grid = createGridFromArray2D([ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ]); const newGrid = addRowTop(["x", "x", "x", "x"])(grid); // resulting grid: // { // x: 0, // y: 0, // cellCount: 12, // columnCount: 4, // rowCount: 4, // array2D: [ // ["x", "x", "x", "x"], // [ 0, 1, 2, 3], // [ 4, 5, 6, 7], // [ 8, 9, 10, 11], // ], // }Traverse over your grid in variety of ways. Choose from a predefined set of iterators or just come up with your own one. Read more about walkers in the getting started section or have a look at the API docs.
import { createWalker } from "gridl/core"; const grid = createGridFromArray2D([ [1, 1, 1], [1, 1, 1], ]); const walker = createWalker(grid); walker.next(); // => {value: {index: 0, position: {x: 0, y: 0}}, done: false} walker.next(); // => {value: {index: 1, position: {x: 1, y: 0}}, done: false} walker.next(); // => {value: {index: 2, position: {x: 2, y: 0}}, done: false} walker.next(); // => {value: {index: 3, position: {x: 0, y: 1}}, done: false} walker.next(); // => {value: {index: 4, position: {x: 1, y: 1}}, done: false} walker.next(); // => {value: {index: 5, position: {x: 2, y: 1}}, done: false} walker.next(); // => {value: undefined, done: true}Report issues, bugs and feature request on the github issues page.
MIT © Sascha Klatt