Skip to content

Commit

Permalink
🔖 4.0.0 [skip ci]
Browse files Browse the repository at this point in the history
# [v4.0.0](v3.1.8...v4.0.0) (2022-10-04)

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

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

# [4.0.0](v3.1.8...v4.0.0) (2022-10-04)

### Bug Fixes

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

### Code Refactoring

* **grid:** rename at() to add() and make it accept multiple coordinates ([e63f650](e63f650))

### Features

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

### Performance Improvements

* **grid:** improve grid creation ([0748558](0748558))
* **grid:** replace generators with iterable-returning functions ([20655d1](20655d1))
* tiny improvements ([a58c7eb](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.
  • Loading branch information
semantic-release-bot committed Oct 4, 2022
1 parent 69f4305 commit 179155e
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "honeycomb-grid",
"version": "4.0.0-beta.8",
"version": "4.0.0",
"description": "Create hexagon grids easily",
"source": "src/index.ts",
"main": "dist/honeycomb-grid.umd.js",
Expand Down

0 comments on commit 179155e

Please sign in to comment.