* feat: base history plugin
* feat: mount history api to graph
* test: history unit and integration test
* refactor: simplify compute draw data
* test: update snapshots
* feat: history event emitter and site demo
* refactor(utils): union support multiple bboxes
* fix(test): fix test env
* refactor(utils): add getBBoxSize, multiple and divide support number
* refactor(spec): adjust animation, add extra viewport options
* refactor(behaviors): zoom canvas set pointer position as origin when wheel
* refactor(behaviors): drag-canvas use graph api
* feat(runtime): support fit api
* refactor(test): update test case and snapshot use x,y
* refactor(animation): add getAnimation util to get global animation config
* refactor(utils): remove getElementsBBox, and extend union to getCombinedBBox
* chore(test): support alias in test cases
* chore(test): adjust test utils, add toMatchSnapshot
* chore(tests): use path alias in tests
* feat(utils): add parseSize util
* chore: set vite alias config
* fix(elements): fix elements types and remove edge sourcePoints
* refactor(tests): adapt size and remove sourcePoint, update snapshots
* refactor(runtime): remove sleep usage
* refactor(runtime): rename dataController in context to model
* feat(utils): add isVisible and update uitls
* refactor(layout): update layout types and register built-in layouts
* feat(utils): add deduplicate util
* refactor(utils): update inferDefaultValue to infer position
* refactor(element): add updateNodeLikePosition method to update position immediately
* feat(runtime): data controller support call methods without trace
* fix(animation): it's neccessary to reserve commonEffectTiming config
* fix(test): fix test case issue
* feat(utils): add tree data converter utils
* refactor(runtime): update element controller, add get element api, and updateByLayoutResult method
* feat(utils): add layout utils
* refactor(layout): add built-in layouts
* refactor(elements): add built-in edges
* feat(runtime): add layout controller
* test(layout): add and update test snapshot
* test: update test case
* refactor(utils): remove transformGraphDataToTreeData
* fix: fix issue occured in rebase
* refactor(layout): add built-in layout registration
* refactor(spec): support config global animation
* test(runtime): update element controller snapshots
* fix(elements): fix issue that edge lack of default control points
* refactor(runtime): support tree layout
* fix(elements): fix issue that unexpect loop edge infer
* fix(runtime): fix layout error, support global animation, optimize updateNodeLikePosition method
* test(layout): add static layout test case
* refactor(test): update dendrogram snapshot
* fix(utils): fix pickLayoutResult test case
* refactor(types): add positions type
* refactor(runtime): optimize element updateNodeLikePosition perf
* fix(test): fix test case types issue
* test(demo): update test demos
* refactor(utils): modify transformTreeDataToGraphData default getNodeData
* refactor(runtime): data controller provide getParentData API
* refactor(runtime): rename sneak to silence
* refactor(layout): add comment
* refactor(registry): use console.error instead of throw when plugin duplicated
* feat(themes): add theme plugin type definition
* feat(palettes): add palette utils and plugin type definition
* feat(utils): add computeElementCallbackStyle util
* refactor(spec): edge data style support config sourcePort and targetPort
* refactor(animation): adjust executor to adapt undefined animation
* test(spec): fix spec animation test case
* feat(palettes): add built-in palettes
* refactor(utils): adjust palette default logic
* feat(theme): add built in theme
* feat(runtime): add element controller
* refactor(spec): rename port to anchor
* test(registry): update registry test case
* refactor(palettes): remove built in palettes to canstants
* refactor(runtime): data controler remove event emit and provide getChanges API
* refactor(registry): register built-in nodes and edges
* refactor(runtime): adapt data controller changes, store animation result
* refactor(runtime): element style callback returns index and element data extractly
* fix(animation): remove parseAnimation to avoid circular dependencies
* test: update test case
* refactor: adjust demo env
* refactor(animation): executor support specific modifiedStyle, and provide default style value infer
* refactor(themes): update built-in themes
* refactor(utils): update createAnimationsProxy to avoid sync onframe and onfinish to all instances
* refactor(runtime): refactor cavas init function
* refactor(spec): support to disable animation
* test: update test spec
* test: update test case
* refactor(runtime): update element controller and integration cases
* chore: update editor config
* refactor(runtime): update render logic and fix issue that data states change