Honeycomb Versions Save

Create hex grids easily, in node or the browser.

v4.1.5

5 months ago

v4.1.5 (2023-11-20)

🐛 Bug Fixes

4.1.5 (2023-11-20)

v4.1.4

10 months ago

v4.1.4 (2023-07-18)

🐛 Bug Fixes

4.1.4 (2023-07-18)

v4.1.3

10 months ago

v4.1.3 (2023-07-14)

🐛 Bug Fixes

4.1.3 (2023-07-14)

v4.1.2

10 months ago

v4.1.2 (2023-07-14)

🐛 Bug Fixes

4.1.2 (2023-07-14)

v4.1.1

1 year ago

v4.1.1 (2023-05-16)

🐛 Bug Fixes

  • 00b2567 Rings created with a radius never skip the first hex (Issues: #100)

4.1.1 (2023-05-16)

v4.1.0

1 year ago

v4.1.0 (2023-05-13)

✨ New Features

  • 2af4707 add optional 2nd argument to Grid.fromJSON() (Issues: #99)

4.1.0 (2023-05-13)

v4.0.1

1 year ago

v4.0.1 (2022-10-13)

🐛 Bug Fixes

  • 07af072 grid.neighborOf() now uses grid.getHex() primarily (Issues: #91)

4.0.1 (2022-10-13)

v4.0.0

1 year ago

v4.0.0 (2022-10-04)

✨ New Features

  • e08bc46 add, update and remove several Grid methods
  • fbac697 add some methods to Grid
  • f74f0d9 add completeCubeCoordinates() function
  • 0db7e22 add translate() function
  • 442e723 add pixelWidth and pixelHeight getters to Grid
  • 6b29a12 Hex is now a class
  • 5825ff0 update grid-related code to use Hex class
  • 6fc63cb rename functions and add util
  • e3cafe0 Hex's toString() returns constructor name
  • b369f1b hexes now only have q and r in the instance
  • 46ab7f2 grids now also accept iterables of coordinates
  • 6acb7e7 make `hexPrototype` public in `Grid`
  • 97e2838 add static `settings` prop to `Hex` (Issues: #86)

🐛 Bug Fixes

  • 38daeb0 fix Grid's traverse() (Issues: #84)
  • 5b6f730 fix release
  • b5a3895 another attempt to fix the release
  • 8f09aa4 actually build the project in ci 🥲
  • 921726d don't add /dist to git 🫤
  • 8115d61 use prepare hook for husky
  • 8e5d2b3 a spiral's radius now excludes the center
  • 3ed0fa5 fix bug in pointToHex()

4.0.0 (2022-10-04)

Bug Fixes

  • grid: fix bug where internal hexes were cleared after Grid run() was called (cb6c65d), closes #67
  • grid: fix incorrect width or height calculation in Grid.rectangleFromOpposingCorners() (3b4bb7c)
  • grid: fix neighborOf() (and functions that use it like move()) (3b8cdf6)
  • grid: grid's update() now always returns a grid that iterates over hexes in its store (b2a0298), closes #68
  • grid: grids are now iterable again (e.g.: [...grid] or for (const hex of grid) {})) (c142a68)
  • hex: createHex() now also accepts tuple coordinates (8f5196e)
  • hex: fix typing issue for createHexPrototype() (d6e24b4)
  • hex: when overriding a hex prototype method, this is now correctly typed (8df5488), closes 1#comment116992054_66162731
  • move (internal) util to fix circular dependency (be57fee)

Code Refactoring

  • grid: rename at() to add() and make it accept multiple coordinates (e63f650)

Features

  • add benny for running benchmarks (in node) (63a932f)
  • add parcel-bundler and playground (2845088)
  • coordinates: expand the HexCoordinates type to include a tuple of axial or cube coordinates (ca41673)
  • createHexPrototype() adds several readonly properties (WIP) (6af96e1)
  • first functionality of v4.0 (WIP) (fcd005a)
  • fix reference to type declaration and improve typing of createHexPrototype() (2c53678)
  • grid/neighborof: returns a hex instead of just coordinates (fa9f2f0)
  • grid/transduce: add transduce function (efd9c2e)
  • grid/transducers: add inGrid() transducer (97660e4)
  • grid/transducers: add tap() (28797cf)
  • grid/traversers: add repeatWith traverser (8e400af)
  • grid/traversers: re-implement rays, ring and spiral (9c84121)
  • grid/traversers: revert back to outputting arrays (282f1f1)
  • grid: a grid can now be created with an optional traverser (e56ced8)
  • grid: add distance function and method that returns the amount of hexes between 2 hexes (7a2de46)
  • grid: add from() static method that accepts an iterable of hexes and returns a new grid (83b25ad)
  • grid: add GridStore type and make sure the toString() Hex method is called to create an id (99192b2)
  • grid: add HexCache class and use it as a start to cache hexes in grid (2b4afeb)
  • grid: add hexes() and cursor() methods to Grid (5738045)
  • grid: add map() method to Grid (3716e6c)
  • grid: add NoOpCache and use it as the default cache in Grid (30d7a87)
  • grid: add optional argument to move() traverser to move in the same direction multiple times (f8b96ad)
  • grid: add rays() traverser (50e707d)
  • grid: add ring() traverser (256879f)
  • grid: add setStore helper function and add set method to GridStore interface (10125c1)
  • grid: add size getter and hasHex() method (eb41e71)
  • grid: add spiral() traverser (d433af0)
  • grid: add update() method to Grid (ec0dfce)
  • grid: call copy() on the initial cursor hex in Grid.traverse() (98c7054)
  • grid: change how a grid's store is set (2376845)
  • grid: grids can now be created/traversed with a single traverser or an array of traversers (890ce96)
  • grid: improve types and name some anonymous functions for better debugging (383dfbd)
  • grid: improve typing of Grid methods and traverse commands (193531d)
  • grid: line() now accepts either "line as vector" options or "line between" options (2fe7f1d)
  • grid: make CompassDirection a union type (6a65b87)
  • grid: more or less settled on Grid API (2cd5c1e)
  • grid: move traversers to traversers folder and add utils folder with forEach and map (751be5a)
  • grid: pass cursor along with hexes in getPrevHexState() for a ~20% performance increase (a90f083)
  • grid: pass getHex() function to all traversers, this way they can use the cache (64ec33b)
  • grid: prevent iterators to be run again when run() is called more than once (2e39a3b)
  • grid: rectangle() traverser and grid method now accept opposing corners as arguments (b8bab92)
  • grid: reimplement traverse to not be a generator (3a7a09e)
  • grid: remove map method, add filter and takeWhile methods and add inStore helper function (956a2a0)
  • grid: remove move() alias of line() and update signature of line() (5205e93)
  • grid: rename HexCache to CoordinatesCache and expand API, add toString() to hex (6a0ca15)
  • grid: rename the move() traverser to line() and make move() an alias (7663738)
  • grid: restrict Grid.traverse() to the hexes in the grid (from the previous iteration, if any) (c25249b)
  • grid: rewrite the rectangle traverser and update Grid.rectangle() to use it, add Compass class (3e0ca95)
  • grid: subsequent traverse() calls now stop when attempting to traverse outside the grid (1aa8f73)
  • grid: traverse functions don't create hexes anymore (bdfb22b)
  • grid: traverse() now also accept transducers (8efa19d)
  • grid: traversers no longer accept both a start and at option, only either or none (XOR) (231acf6)
  • grid: update grid rectangle method to only within previous grid (b242c94)
  • grid: update rectangle() to behave as most traversers should (5415029)
  • grid: update ring() to behave as most traversers should (e1cdc81)
  • grid: use single Compass enum, make move() accept ambiguous directions, improve grid.rectangle (2bf8d1e)
  • grid: various changes, mainly traverse() and update() methods (a79be39)
  • grid: WIP: rewrite grid things to use iterables and transducers (3c97979)
  • hex,grid: add round() and pointToCube() functions and pointToHex() method to Grid (b302c08)
  • hex,grid: traversers return hexes (as before), fix move() traverser, add neighborOf() function (b2da583)
  • hex: add center() function and method (c0730b5)
  • hex: add corners(), width() and height() functions (e9e98da)
  • hex: add equals() method to hex prototype (f519448)
  • hex: add functions to convert hexes to points (7e1e3da)
  • hex: add isHex() function and overload corners() to either accept a hex or hex settings (893c829)
  • hex: createHex() now also accepts a hex (instance) and if it does copies it (43d0109)
  • hex: hexCoordinates now also include offset coordinates (dd39813)
  • hex: normalize and assert all required hex prototype properties in createHexPrototype() (9cf0511)
  • hex: rename createToPoint() to hexToPoint() and make it accept a hex (4227737)
  • hex: rename offsetToAxial() to offsetToCube() and make it return cube coordinates (52d89f8)
  • hex: rename size to dimensions and normalize dimensions in createHexPrototype() (4c08684)
  • hex: set hex origin relative to center of hex (0db666d)
  • hex: store s cube coordinate when passed to createHex, otherwise use getter (9a9b4a9)
  • hex: the equals() function and hex method can now compare different kinds of hex coordinates (5dc14d0)
  • hex: toString() now also accepts cube coordinates (1c552c4)
  • hex: use axial coordinates by default (775e711)
  • remove cartesian coordinates for now (dc959e7)
  • remove transducers (072ead5)
  • set [Symbol.toStringTag] on Grid and hex prototype (a189f77)
  • traversers/line: add support for "stop" coordinates and update tests (2cf143b)
  • traversers/ring: it now also accepts a radius (fafdcee)

Performance Improvements

  • grid: improve grid creation (0748558)
  • grid: replace generators with iterable-returning functions (20655d1)
  • tiny improvements (a58c7eb)

BREAKING CHANGES

  • grid: When rectangle() isn't passed start coordinates it now excludes its first hex (the cursor, usually { q: 0, r: 0 }). In other words: you probably want to pass start coordinates when using rectangle()
  • grid: Remove move() alias of line(). line() now accepts an object with options: direction, length, at and start.
  • grid: The at() traverser is renamed to add()
  • hex: offsetToAxial() is now offsetToCube()
  • hex: toString() now only accepts axial coordinates
  • grid: Remove the of() static grid method, because it's a rather redundant as it does the same as the constructor. Also update the inStore function to be used directly as a grid iterator method callback (before change: grid.each(inStore()), after change: grid.each(inStore)). Remove setStore() because it's ambiguous how the store should be set: hexes could be removed/added/updated from the store.

v4.0.0-beta.8

1 year ago

v4.0.0-beta.8 (2022-09-03)

✨ New Features

  • 97e2838 add static `settings` prop to `Hex` (Issues: #86)

4.0.0-beta.8 (2022-09-03)

v4.0.0-beta.7

1 year ago

v4.0.0-beta.7 (2022-08-30)

🐛 Bug Fixes

4.0.0-beta.7 (2022-08-30)