# Changelog

## [1.2.4](https://github.com/chrisrzhou/react-wordcloud/compare/v1.2.4...v1.2.3) (2020-07-21)

- Added `...rest` props (@davidjb)
- Added `tooltipOptions` to `options` (@davidjb) to configure `tippy` tooltips.
- Added `svgAttributes` and `textAttributes` to `options` to configure attributes on `svg` and `text` nodes.
- Development: updated dependencies, XO lint rules, use absolute imports with `~`, spaces over tabs, `microbundle` over `rollup`, `npm` over `yarn`.
- Updated docs

## [1.2.3](https://github.com/chrisrzhou/react-wordcloud/compare/v1.2.3...v1.2.2) (2020-05-02)

Add `randomSeed` option to provide and control a seed for the random function when `deterministic` option is set to `true`.

## [1.2.2](https://github.com/chrisrzhou/react-wordcloud/compare/v1.2.2...v1.2.1) (2020-03-14)

### Typescript fix

Fix incorrect `'linearl'` literal type value for `Scale`.

## [1.2.1](https://github.com/chrisrzhou/react-wordcloud/compare/v1.2.0...v1.2.1) (2020-03-13)

Cleanup and fix `index.d.ts`.

## [1.2.0](https://github.com/chrisrzhou/react-wordcloud/compare/v1.1.1...v1.2.0) (2020-03-07)

This release is largely internal refactoring and updating dependencies, as well as 'de-typescripting' the codebase

### API additions:

- Improve rendering performance for larger clouds and multiple cloud instances with the `options.enableOptimizations` flag.

### Small Typescript breaking changes:

- `Spiral` and `Scale` enums are removed in favor of whitelisted string values. As part of moving to ambient declarations, these enums will not materialize in the compiled code.

### Internal code changes:

- Update underlying dependencies via `yarn upgrade --latest`. Remove a ton of unneeded dependencies and correctly move `@types/*` deps to `devDependencies`.
- Remove custom `eslint`, `prettier` config and use `xo` for a simpler linting setup.
- Add `husky` pre-push hook.
- Update and improve documentation with `docz@2.2.0`. Improved various doc pages (`Common Issues`) and added the `Optimizations` and `Home` page
- Take the approach in various projects (e.g. [three](https://github.com/mrdoob/three.js/)) to "de-typescript" the codebase and use `*.d.ts` files for typing in development. Continue to expose Typescript types to consumers.

## [1.1.1](https://github.com/chrisrzhou/react-wordcloud/compare/v1.1.0...v1.1.1) (2019-09-27)

- Update dependencies and fix `eval` error in `seedrandom` package ([link](https://github.com/davidbau/seedrandom/issues/64)).

## [1.1.0](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.8...v1.1.0) (2019-09-08)

- Update dev configs + dependencies. Check with `yarn audit`.
- Add documentation for `Options` and `Callbacks` props.
- Remove ignored Typescript errors, and fix typings in `render.ts`.
- Simplify code in `hooks.ts`.
- Simplify typed code.
- Expose `MouseEvent` object in `onWordClick`, `onWordMouseOut` and `onWordMouseOver` callbacks.

### Minor Typescript API Changes

- Exported Typescript types for component props have been changed slightly due to refactoring.

## [1.0.8](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.7...v1.0.8) (2019-06-08)

Correctly type optional `callbacks` and `options` props. Remove enums in favor of simpler union types.

## [1.0.7](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.6...v1.0.7) (2019-06-08)

Fix emitted types.

## [1.0.6](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.5...v1.0.6) (2019-06-08)

- Support deterministic behavior for randomn layout and colors by configuring the `options.deterministic` field. This makes testing and creating fixed wordcloud views convenient.
- Expose Typescript types.
- Use various `d3-*` packages instead of importing `d3` entirely.
- Update `docz` and docs. Add Codesandbox examples.
- Move prettier rules from `.eslintrc.js` to `.prettierrc.js`. This supports better formatting in MDX files with VSCode.

## [1.0.5](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.4...v1.0.5) (2019-03-16)

### New

- Added `FAQ` page explaining common 'bugs', and updated `Options` page with more examples
- Handled recursive attempts to layout 'bad' clouds. Provide a console warning when max attempts have been made to layout 'bad' clouds.
- Changed default `minSize` and `options.fontSizes` value to make things less buggy.

### Bug fixes

- Fixed a bug where `rotationAngles` was mutated.

## [1.0.4](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.3...v1.0.4) (2019-03-16)

Improve and simplify React hooks code after detailed understanding of: https://overreacted.io/a-complete-guide-to-useeffect/

### Bug fixes

- Handle words that don't fit in the boundary of the SVG by applying a font-size scale factor
- Handle large number of words

## [1.0.3](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.2...v1.0.3) (2019-03-14)

### Bug fixes

- https://github.com/chrisrzhou/react-wordcloud/issues/5
- https://github.com/chrisrzhou/react-wordcloud/issues/11

Tooltip bug is fixed by programmatically creating and destroying the `tippy` instance. Word implosion and missing words are related to https://github.com/jasondavies/d3-cloud/issues/36, and is fixed with a recursive solution.

## [1.0.2](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.1...v1.0.2) (2019-03-06)

Thanks to @warlock for transferring the NPM `react-wordcloud` to me!
Updating `package.json` and pushing package to NPM.

## [1.0.1](https://github.com/chrisrzhou/react-wordcloud/compare/v1.0.0...v1.0.1) (2019-03-06)

Change `word.count` to `word.key` because the weight of the word could be a float.

## [1.0.0](https://github.com/chrisrzhou/react-wordcloud/compare/v0.1.1...v1.0.0) (2019-03-03)

### Features

As part of learning and ramping up with better JS tools and frameworks, v1.0.0 is a modern rewrite that focuses on:

- Simplifying and decoupling React/D3 code with React hooks.
- Document examples with `docz`.
- Typescript support.
- Minimize build size with `rollup` and `bundlesize`.

### Breaking Changes

Compared to v0, there are a number of breaking changes.

- **React Dependency**: You need at least `react^16.8.3` installed to access hook functionality.
- **Features**: Most features of the component still remain the same (e.g. tooltips, min/max font size, responsive).
- **Props**: Many v0 props have been merged into `options` and `callbacks` with potentially different names.
- **Development**: Previous developments were done in `flow` and a lot of dev dependencies have changed. The scripts in `package.json` should help handle most of these changes.
