# 0.10.0

### Bug Fix
- Fix cable flow animation
- Fix route cable connection after being moved from other port
- Fix cable detach for route port
- Fix error when container offset is not defined
- Fix skeleton check and error handler
- Fix route cable connection inside of a function node
- Fix node movement for different dpi
- Skip copying fields that start with specific character
- Prevent creating function input node more than once

### Feature
- Add tools for import skeleton
- Add button port component and add startIndex on import event
- Add support to extract Blackprint docs from `.sf` file
- Add support to move container with Macbook's trackpad
- Allow move connected route cable with Shift + Drag

### Breaking Changes
- Blackprint Engine v0.10 is required (for more information please see the changelog)

# 0.9.1

### Bug Fix
- Fix error when calculating container on initialization
- Fix node suggestion and cable rect
- Fix missing input component on first function node
- Throw error when trying to reset offset on detached container
- Watch changes of `data.name` as node title (for internal node)

### Feature
- Add support for moving/scaling container using script
- Add function to select/deselect node/cable in the container space
- Improve TypeScript definition file

### Minor changes
- Rename some internal property name

# 0.9.0

### Bug Fix
- Fix cable rotation override on export/import
- Fix for creating paused engine instance
- Remove unused cable when scanning inactive node

### Breaking Changes
- Blackprint Engine v0.9 is required (for more information please see the changelog)

# 0.8.15

### Bug Fix
- Fix container zoom with mouse wheel

# 0.8.13

### Bug Fix
- Fix error when reloading the instance

# 0.8.12

### Minor changes
- Implement internal changes from the `engine-js` v0.8.12

# 0.8.11

### Feature
- Add options to disable cleaning the instance when importing JSON

### Bug Fix
- Fix pending render when visiting function node
- Fix incorrect reference when outputing error

# 0.8.10

### Deprecation
- Instance's exported JSON schema was updated, please import and re-export your old exported JSON before v1.0. The old schema will still importable on `engine-js`, but it will show a deprecation notice.

### Bug Fix
- Fix copying node data when creating new node

# 0.8.9

### Features
- Add event nodes feature
- Add support for importing events
- Improve cable rotation override's menu

### Bug Fix
- Fix container re-initialization
- Fix clone node and throw error when component was not found
- Fix settings for disabling cable visualization
- Fix cable flow visualization warnings
- Fix container rendering when using pending render option
- Fix node's z-index when exporting selected node

# 0.8.8

### Features
- Add support for cable branch on route cable

### Bug Fix
- Fix error when suggesting cable from route cable
- Improve cable glow
- Show variable's title from title field instead of name

# 0.8.7

### Minor changes
- Remove `console.log` used by me for debugging 😅

# 0.8.6

### Improvement
- Improve typings for port's type definition
- Improve cable glow animation

### Features
- Show node description on dropdown menu

### Bug Fix
- Fix error when using `registerInterface` as decorator
- Fix unemitted event
- Avoid browser interface loading when not in Browser environment
- Assign default style for `sf-m`

# 0.8.5

### Improvement
- Improve TypeScript definitions

### Bug Fix
- Fix container zoom using right click and mouse wheel
- Fix some error on Safari browser
- Hide internal BP namespace

# 0.8.4

### Bug Fix
- Fix type definition that not published to NPM
- Fix interface error when bundling using Vite

# 0.8.3

### Features
- Improve module exports
- Add feature to import skeleton nodes for sketch

### Bug Fix
- Fix and improve TypeScript definition file
- Fix package exports
- Skip interface calculation if element haven't been rendered/exist
- Add relative position for port stylesheet
- Fix container that can't be interacted when import was failed

### Note
There's also a deprecation for `engine-js` make sure to visit the [CHANGELOG.md](https://github.com/Blackprint/engine-js/blob/master/CHANGELOG.md).

# 0.8.2

### Bug Fix
- Destroy space after the instance was destroyed

# 0.8.1

### Features
- Add feature to lock the instance

### Bug Fix
- Avoid processing element in function node when before being rendered
- Fix port input in function node and fix the resize observer
- Fix route port connection and array input data
- Fix node type defined on node constructor's static property
- Emit some event to root instance
- Hide default port input box on port that have connection
- Simplify interface style binding when port resync is allowed
- Skip default value's port input box for internal nodes

# 0.8.0

### Features
- Add VirtualType and improve the node suggestion

### Bug Fix
- Fix cable `<circle>` style for Firefox
- Fix error for route port's element
- Improve style for port's input box
- Fix layout shift when showing route port
- Fix error when port element was disabled

### Breaking Changes
- Blackprint Engine v0.8 is required (for more information please see the changelog)

# 0.7.5

### Features
- Add `json.importing` event

### Bug Fix
- Emit `cable.created` event when creating route cable
- Fix route port connection and recalculation
- Fix port switches initialization and port name

# 0.7.4

### Features
- Improve TypeScript definition file
- Trigger port `value` event when changing default port value

### Bug Fix
- Fix menu event's preventDefault
- Fix error when sketch is imported on Node.js for unit testing

# 0.7.3

### Features
- Emit `port.default.changed` instance event when default value was changed

### Bug Fix
- Fix route data flow when default value was changed
- Fix execution order for checking inactive node
- Fix node creation using dropdown on scaled container
- Skip default component if the developer already added a component

# 0.7.2

### Features
- Add space between capitalized letters for port name
- Use `Shift + Left Click` to detach cable from a port
- Add feature to detect inactive node
- Add menu and options on `menu.create.node` event data

### Bug Fix
- Fix minor bug when registering docs
- Fix weird cable flow animation on newest browser
- Fix and improve inactive node recheck
- Fix interface size recalculation
- Fix inline node documentation

# 0.7.1

### Features
- Add feature to allow output resyncronization
- Add `skipSuggestTypeAny` for skip node suggestion
- Add support for documenting ports with `StructOf` feature
- Add dropdown menu for using to allow output resync
- Add `preventDefault` on `menu` event

### Bug Fix
- Fix error when re-adding port documentation
- Fix incorrect input element wrap
- Skip exporting object or symbol
- Skip importing docs when windowless settings is turned on

# 0.7.0

### Features
- Add feature to split port with structure
- Add feature to use default input port data
- Add type for input box in port's default value
- Add zoom feature for touch screen
- Add callback when a node was created from menu
- Add feature to change cable orientation
- Add JSDocs extractor for Blackprint documenter
- Add `.registerDocs` for adding description to nodes and port
- Add TypeScript definition file
- Add route port feature
- Add default event handler for unsupported dynamic port
- Add node for using function port as variable node
- Emit event when constructing nodes menu
- Emit event when the cable is being drag
- Emit event when moving node and some modification
- Emit internal event when splitting port and add unit test
- Redesign node for variable and environment
- Use data export handler if `.exportData` exist on iface

### Bug Fix
- Fix route error when there are no update function
- Fix incorrect route cable position when the container was scaled
- Fix error when the hot reload find an `undefined` port
- Fix bug for touch screen
- Fix dropdown event and cable for touch screen
- Fix incorrect cable position when the container was moved
- Fix cable position on cloned window and simplify implementation
- Fix container offset when being used from different container style
- Fix header info that was not cloned when using multiple container
- Fix flow visualization when using multiple container
- Fix style recalculation and source resolver
- Fix hot reload
- Fix recalculation for route cable and update style
- Fix error when cable list haven't been initialized
- Fix incorrect minimap container scale
- Fix cable branch creation inside a function
- Fix editor's left side panel
- Fix `cable.disconnect` event that not emitted on iface
- Fix minimal export for function and add option to skip comment
- Fix import index and node `z-index`
- Allow recalculation when no nodes on container
- Skip flow visualization if cable path is not defined

### Breaking Changes
- Blackprint Engine v0.7 is required (for more information please see the changelog)

# 0.6.9

### Features
- Add support for exporting custom function and variable
- Add feature to recalculate cable position
- Add utils to modify enumerable property
- Add feature for creating custom function node
- Rename file and add styles for variable node
- Add feature to export selected nodes only
- Emit event when double clicking a function node
- Emit event when JSON was imported
- Emit port hover event on iface
- Finishing custom variable and function node

### Bug Fix
- Fix module list for custom function node
- Fix import for custom variable nodes
- Fix for copying custom function node
- Fix node suggestion for any type data
- Small CSS fix for safari browser
- Fix cable position when being connected to a port
- Fix selection on disconnected cable
- Fix incorrect node order
- Fix cable position when using connectCable
- Fix `undefined` class value
- Skip connection if no cable found
- Use internal namespace when using unregistered node
- Deselect nodes and cable when creating cable
- Avoid moving other node when the node is not selected

# 0.6.8

### Features
- Add `cable.dropped` event

### Bug Fix
- Fix `hidden` property that was not being set
- Make some properties configurable

# 0.6.7

### Bug Fix
- Fix iface init that wasn't being called on windowless mode
- Fix `instance.clearNodes`
- Round the position of cable branch when exporting to JSON

# 0.6.6

### Bug Fix
- Fix feature for inserting component into a port
- Fix sf-space reference

### Features
- Add parameter to disable swap
- Add event when selecting nodes or cables
- Show namespace on error when creating node

# 0.6.5

### Bug Fix
- Automatically move the cable if it's dropped behind any node
- Fix nodes that can't be moved when have decoration
- Fix unscaled position value and remove ToDo comment
- Fix incorrect cable position when dropped on header
- Fix hide port on pointerleave
- Fix incorrect cable position when dropped on header

### Features
- Add `node.click` event when a node header was clicked
- Add `port.cable.test` event
- Add new shortcut for scaling container (right click + mouse wheel)
- Add feature to hide unused port
- Prepare feature for variable and function node

# 0.6.4

### Bug Fix
- Avoid zoom in for minimap
- Use import from remote instance instead if exist
- Fix incorrect event name when deleting node
- Minor changes for fixing remote sketch
- Avoid moving cable that connected to branch
- Fix cable event for remote sketch
- Minor code changes to make it efficient
- Fix middle position for connected cable
- Fix incorrect cable location when connect using script

### Features
- Add event emit when the node or port was hovered
- Add information on how to run unit test
- Remote control is now in `Alpha Stage`
- Emit remote event on `id` changes
- Update keyboard shortcut

# 0.6.3

### Bug Fix
- Fix error when not using development mode
- Fix incorrect position when trying to create node with dropdown menu
- Fix incorrect location for some features when the container get scaled
- Cancel selection when moving container for touchscreen
- Fix scale and movement for different screen ratio
- Fix some issue with container scaling

# 0.6.2

### Bug Fix
- Fix error on unit test
- Fix incorrect dropdown position
- Fix some error when Sketch is being run on Jest environment
- Fix some bug and some minor modification

### Features
- Add options to skip some import data
- Add bulk delete feature for nodes
- Add `moduleAdded` event

# 0.6.1

### Bug Fix
- Fix `registerNode` and `registerInterface` to be used for decorator
- Fix and improve performance for cable position
- Add support for engine's ghost port

# 0.6.0

### Features
- Improved node suggestion
- Edit node description and title
- Select nodes with left click
- Move selected nodes and branch cable together
- Add node comment

### Breaking Changes
- Blackprint Engine v0.6 is required (for more information please see the changelog)
- `Blackprint.Sketch.suggestFromPort` is now changed to `Blackprint.Sketch.suggestNodeForPort`
- `Blackprint.Sketch.suggestByRef` is now removed, please use `suggestNode` instead

# 0.5.2

### Features
- Add support for touch devices
- Double click the path will create new cable branch

### Bug Fix
- Improve rendering performance
- Fix cable branch arrangement
- Fix some low impact bugs

# 0.5.1

### Features
- Add `node.destroy` as an alternative for `iface.destroy`, this will be called by the engine and shouldn't be manually called
- Add `instance.deleteNode` to delete node manually by using code
- Add cable branching feature for output port
- Add feature to create branch on connected cable
- Add merge branch for single cable
- Add options for `importJSON`
- Clicked nodes will be moved on front of the other nodes (z-index)
- Add decoration on small header template
- Automatically put cable on suitable port when it's dropped on top of a node

### Breaking Changes
- Blackprint Engine v0.5 is required (for more information please see the changelog)
- Moving the container with left click is removed, please use right/middle click instead
- `importJSON` now will clear the instance first

### Bug Fix
- Fix batch load when being loaded from CDN

# 0.4.4

- Tidy up
- Improve some element style

# 0.4.3

### Feature
- Add `suggestNode` and `suggestFromPort` for suggesting possible related node (may not 100% accurate)
- CTRL + right clicking on port and detached cable will use `suggestNode` feature
- Add options to disable export for environment and module URL
- Add header menu for creating similar node

### Bug Fix
- Fix error when right clicking cable
- Fix DropDown when being called after a delay
- Fix cable deletion for disconnected cable

# 0.4.2

### Bug Fix
- Fix incorrect default value
- Move `iface.imported` call order near `node.imported`

### Feature
- `Blackprint.Engine` is now using `CustomEvent`
- You can now connect cable with script

# 0.4.1

### Bug Fix
- Fix race condition when importing module from the URL

# 0.4.0

### Bug Fix
- Fix default node styles
- Avoid multiple constructor call

### Feature
- Simplify JSON export by removing empty field
- Sort DropDown menu by name

### Breaking Changes
- Blackprint Engine v0.4 is required
- Zoom now using CTRL + Mouse Scroll

# 0.3.0

### Bug Fix
- Fix minimap and the cloned window
- Fix DropDown position based on current window size and spawn position
- Fix JSON exporter for current version
- Fix node highlight when being hovered from menu

### Feature
- Add options to prettify the JSON export
- Minimap will keep it's position and auto scaled when the sketch getting larger
- Add Blackprint event listener and output any error message to console if no listener
- Add icon feature for the drop down
- Interfaces now can be accessed from `instance.iface[id]`
- Add custom environment data
- Load module from URL (default to disabled)
- Add support for using Decorator when registering node/interface
- Add support for listening to all event with "\*"
- Add SmallNotif (Toast) on the top right of the screen
- Add headmarks and other additional header element for nodes

### Breaking Changes
Because the implementation will be similar with [engine-php](https://github.com/Blackprint/engine-php) and [engine-go](https://github.com/Blackprint/engine-go).
This changes is supposed to improve efficiency, and reduce possible future breaking changes.<br>

- For sketch (browser only): `Blackprint.registerInterface()` was renamed to `Blackprint.Sketch.registerInterface()`
- For non-sketch: `Blackprint.Engine.registerInterface()` was renamed to `Blackprint.registerInterface()`
- When using class for `Blackprint.registerInterface` or `Blackprint.Sketch.registerInterface`, the class must extends `Blackprint.Interface`

Please see engine-js's [breaking changes](https://github.com/Blackprint/engine-js/releases) for `v0.3.0` for additional information.

# 0.2.0

### Breaking Changes
- `Blackprint.Interpreter` is changed into `Blackprint.Engine`
- Package on NPM registry was moved to `@blackprint/...`
- `iface.options` now changed to `iface.data`, you will need to replace `options` from the exported JSON into `data`
- `iface.id` now changed to `iface.i`, you will need to replace `id` from the exported JSON into `i`
- `iface.id` now being used for named ID, and `iface.i` still being the generated index for the nodes

# [0.1.1](https://github.com/Blackprint/Blackprint/releases/tag/v0.1.1) (2020-10-17)

### Notes
- Still in development, any contribution welcome
- Please always specify the fixed version when using for your project
- Usually v0.\*.0 will have breaking changes, while v0.0.\* can have new feature or bug fixes