Repository: fabricjs/fabric.js
Pull request #9892 (2024-05-26 18:21:37)

test(): Convert Animation tests to jest
Jest.fakeTimers make the animation tests running very quick while the junit setup was based on setTimeout and waits.

codesandbox[bot]: #### Review or Edit in CodeSandbox

Open the branch in <a href="https://codesandbox.io/p/github/fabricjs/fabric.js/animation-tests?mode=review&utm_source=gh_app">Web Editor</a> &bull; <a href="https://codesandbox.io/p/vscode?owner=fabricjs&repo=fabric.js&branch=animation-tests&utm_source=gh_app">VS Code</a> &bull; <a href="https://codesandbox.io/p/vscode?owner=fabricjs&repo=fabric.js&branch=animation-tests&insiders=true&utm_source=gh_app">Insiders</a><br>
<details>
<summary>Open Preview</summary>
<ul><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/animation-tests?task=next&port=3000&redirect=true&utm_source=gh_app">Run Next Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/animation-tests?task=node&port=8080&redirect=true&utm_source=gh_app">Run Node Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/animation-tests?task=vanilla&port=1234&redirect=true&utm_source=gh_app">Run Vanilla Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/animation-tests?task=vue&port=5173&redirect=true&utm_source=gh_app">Run Vue Template</a></li></ul>
</details>

<!-- open-in-codesandbox:complete -->

github-actions[bot]: <!-- BUILD STATS COMMENT -->
**Build Stats**

 | file / KB (diff) | bundled | minified | 
 | --- | --- | --- | 
 | fabric | 917.337 (**0**) | 305.636 (**0**) | 

github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>84.37%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>90.32%</b></td><td><b>61.54%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts'>Collection.ts</a></td><td><b>78.47%</b></td><td><b>42.62%</b></td><td><b>87.10%</b></td><td><b>85.82%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L329'>329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Collection.ts#L350'>350</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>89.86%</b></td><td><b>69.23%</b></td><td>100%</td><td><b>94%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/CommonMethods.ts#L61'>61</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts'>Intersection.ts</a></td><td><b>85.29%</b></td><td><b>49.46%</b></td><td>100%</td><td><b>97.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L184-L188'>184&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L289'>289</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Intersection.ts#L297'>297</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts'>Observable.ts</a></td><td><b>80.33%</b></td><td><b>55.81%</b></td><td><b>93.75%</b></td><td><b>87.10%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L84-L85'>84&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts'>Point.ts</a></td><td><b>90.27%</b></td><td><b>61.22%</b></td><td>100%</td><td><b>93.60%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L285'>285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts'>Shadow.ts</a></td><td><b>87.45%</b></td><td><b>73.91%</b></td><td>100%</td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L203'>203</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/cache.ts'>cache.ts</a></td><td><b>84.88%</b></td><td><b>45.45%</b></td><td>100%</td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts'>config.ts</a></td><td><b>87.73%</b></td><td><b>55%</b></td><td><b>66.67%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>93.33%</b></td><td><b>76.92%</b></td><td><b>85.71%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>90.56%</b></td><td><b>65.48%</b></td><td><b>76.92%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>73.08%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>87.60%</b></td><td><b>55.56%</b></td><td>100%</td><td><b>96.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>79.37%</b></td><td><b>46.67%</b></td><td>100%</td><td><b>89.36%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/utils.ts#L40-L44'>40&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>70.18%</b></td><td><b>90.91%</b></td><td><b>80%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L130-L138'>130&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L153-L164'>153&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L174'>174</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L176-L181'>176&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>89.33%</b></td><td><b>91.67%</b></td><td>100%</td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L115'>115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>76.02%</b></td><td><b>40.24%</b></td><td><b>92.86%</b></td><td><b>85.52%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1007-L1008'>1007&ndash;1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1012-L1013'>1012&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1286-L1290'>1286&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1320'>1320</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1383-L1400'>1383&ndash;1400</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1406-L1411'>1406&ndash;1411</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1479-L1490'>1479&ndash;1490</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1492-L1495'>1492&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L947-L953'>947&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L963-L964'>963&ndash;964</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L966-L970'>966&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>85.37%</b></td><td><b>53.82%</b></td><td>100%</td><td><b>94.34%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1266'>1266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1269'>1269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1288'>1288</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1290'>1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1294'>1294</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1312-L1319'>1312&ndash;1319</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1322'>1322</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1325'>1325</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1334-L1335'>1334&ndash;1335</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1339-L1348'>1339&ndash;1348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1352'>1352</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1354-L1355'>1354&ndash;1355</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1361-L1366'>1361&ndash;1366</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L1370'>1370</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L362'>362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L384'>384</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L462'>462</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L513'>513</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L515'>515</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L591'>591</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L596'>596</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L673'>673</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L701'>701</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L992'>992</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/SelectableCanvas.ts#L994-L995'>994&ndash;995</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts'>StaticCanvas.ts</a></td><td><b>75.93%</b></td><td><b>70.11%</b></td><td><b>98.91%</b></td><td><b>75.43%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1003'>1003</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1009'>1009</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1014'>1014</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1024'>1024</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1026-L1032'>1026&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1042'>1042</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1045'>1045</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1048-L1054'>1048&ndash;1054</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1056-L1057'>1056&ndash;1057</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1059-L1080'>1059&ndash;1080</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1087-L1089'>1087&ndash;1089</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1091'>1091</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1099'>1099</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1107'>1107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1107-L1108'>1107&ndash;1108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1108-L1109'>1108&ndash;1109</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1111'>1111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1111-L1116'>1111&ndash;1116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1129'>1129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1134-L1136'>1134&ndash;1136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1144'>1144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1146'>1146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1153-L1157'>1153&ndash;1157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1159'>1159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1161-L1164'>1161&ndash;1164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1167'>1167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1169'>1169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1178'>1178</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1180-L1181'>1180&ndash;1181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1188-L1191'>1188&ndash;1191</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1193'>1193</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1199-L1202'>1199&ndash;1202</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1206-L1207'>1206&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1217'>1217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1223-L1225'>1223&ndash;1225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1227-L1232'>1227&ndash;1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1232'>1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1232-L1236'>1232&ndash;1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1236-L1241'>1236&ndash;1241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1243-L1250'>1243&ndash;1250</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1279-L1280'>1279&ndash;1280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1282-L1283'>1282&ndash;1283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1285-L1287'>1285&ndash;1287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1289-L1295'>1289&ndash;1295</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1299'>1299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1301-L1314'>1301&ndash;1314</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1322-L1323'>1322&ndash;1323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1333'>1333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1344'>1344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1385-L1389'>1385&ndash;1389</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1391'>1391</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1393'>1393</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1395-L1399'>1395&ndash;1399</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1418'>1418</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1433'>1433</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1448'>1448</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1468'>1468</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1501'>1501</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1505'>1505</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L1516-L1518'>1516&ndash;1518</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L428'>428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanvas.ts#L439'>439</a>, <a href='https://github.com/fabricjs/fabric.js/blob/6f557921b5d0780939696feb374723980435cbf2/src/canvas/StaticCanv
github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>84.37%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>90.32%</b></td><td><b>61.54%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts'>Collection.ts</a></td><td><b>78.47%</b></td><td><b>42.62%</b></td><td><b>87.10%</b></td><td><b>85.82%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L329'>329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Collection.ts#L350'>350</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>89.86%</b></td><td><b>69.23%</b></td><td>100%</td><td><b>94%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/CommonMethods.ts#L61'>61</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts'>Intersection.ts</a></td><td><b>85.25%</b></td><td><b>48.91%</b></td><td>100%</td><td><b>97.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L184-L188'>184&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L289'>289</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Intersection.ts#L297'>297</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts'>Observable.ts</a></td><td><b>80.33%</b></td><td><b>55.81%</b></td><td><b>93.75%</b></td><td><b>87.10%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L84-L85'>84&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts'>Point.ts</a></td><td><b>90.27%</b></td><td><b>61.22%</b></td><td>100%</td><td><b>93.60%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L285'>285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts'>Shadow.ts</a></td><td><b>87.85%</b></td><td><b>78.26%</b></td><td>100%</td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L203'>203</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/cache.ts'>cache.ts</a></td><td><b>84.88%</b></td><td><b>45.45%</b></td><td>100%</td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts'>config.ts</a></td><td><b>87.73%</b></td><td><b>55%</b></td><td><b>66.67%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>93.33%</b></td><td><b>76.92%</b></td><td><b>85.71%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>90.56%</b></td><td><b>65.48%</b></td><td><b>76.92%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>73.08%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>87.60%</b></td><td><b>55.56%</b></td><td>100%</td><td><b>96.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>79.37%</b></td><td><b>46.67%</b></td><td>100%</td><td><b>89.36%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/utils.ts#L40-L44'>40&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>70.18%</b></td><td><b>90.91%</b></td><td><b>80%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L130-L138'>130&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L153-L164'>153&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L174'>174</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L176-L181'>176&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>89.33%</b></td><td><b>91.67%</b></td><td>100%</td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L115'>115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>75.49%</b></td><td><b>39.76%</b></td><td><b>92.86%</b></td><td><b>84.92%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1007-L1008'>1007&ndash;1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1012-L1013'>1012&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1063-L1068'>1063&ndash;1068</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1128'>1128</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1286-L1290'>1286&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1320'>1320</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1383-L1400'>1383&ndash;1400</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1406-L1411'>1406&ndash;1411</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1479-L1490'>1479&ndash;1490</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1492-L1495'>1492&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L947-L953'>947&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L963-L964'>963&ndash;964</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L966-L970'>966&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>85.37%</b></td><td><b>53.82%</b></td><td>100%</td><td><b>94.34%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1266'>1266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1269'>1269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1288'>1288</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1290'>1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1294'>1294</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1312-L1319'>1312&ndash;1319</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1322'>1322</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1325'>1325</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1334-L1335'>1334&ndash;1335</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1339-L1348'>1339&ndash;1348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1352'>1352</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1354-L1355'>1354&ndash;1355</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1361-L1366'>1361&ndash;1366</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L1370'>1370</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L362'>362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L384'>384</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L462'>462</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L513'>513</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L515'>515</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L591'>591</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L596'>596</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L673'>673</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L701'>701</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L992'>992</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/SelectableCanvas.ts#L994-L995'>994&ndash;995</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts'>StaticCanvas.ts</a></td><td><b>75.93%</b></td><td><b>70.11%</b></td><td><b>98.91%</b></td><td><b>75.43%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1003'>1003</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1009'>1009</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1014'>1014</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1024'>1024</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1026-L1032'>1026&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1042'>1042</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1045'>1045</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1048-L1054'>1048&ndash;1054</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1056-L1057'>1056&ndash;1057</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1059-L1080'>1059&ndash;1080</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1087-L1089'>1087&ndash;1089</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1091'>1091</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1099'>1099</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1107'>1107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1107-L1108'>1107&ndash;1108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1108-L1109'>1108&ndash;1109</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1111'>1111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1111-L1116'>1111&ndash;1116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1129'>1129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1134-L1136'>1134&ndash;1136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1144'>1144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1146'>1146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1153-L1157'>1153&ndash;1157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1159'>1159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1161-L1164'>1161&ndash;1164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1167'>1167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1169'>1169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1178'>1178</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1180-L1181'>1180&ndash;1181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1188-L1191'>1188&ndash;1191</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1193'>1193</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1199-L1202'>1199&ndash;1202</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1206-L1207'>1206&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1217'>1217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1223-L1225'>1223&ndash;1225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1227-L1232'>1227&ndash;1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1232'>1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1232-L1236'>1232&ndash;1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1236-L1241'>1236&ndash;1241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1243-L1250'>1243&ndash;1250</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1279-L1280'>1279&ndash;1280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1282-L1283'>1282&ndash;1283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1285-L1287'>1285&ndash;1287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1289-L1295'>1289&ndash;1295</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1299'>1299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1301-L1314'>1301&ndash;1314</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1322-L1323'>1322&ndash;1323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1333'>1333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1344'>1344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1385-L1389'>1385&ndash;1389</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1391'>1391</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1393'>1393</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1395-L1399'>1395&ndash;1399</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1418'>1418</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1433'>1433</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1448'>1448</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1468'>1468</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1501'>1501</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1505'>1505</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7f931f91d84793e700b1df3a2ba7a257c6062e20/src/canvas/StaticCanvas.ts#L1516-L1
github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>84.19%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>90.32%</b></td><td><b>61.54%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts'>Collection.ts</a></td><td><b>78.47%</b></td><td><b>42.62%</b></td><td><b>87.10%</b></td><td><b>85.82%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L329'>329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Collection.ts#L350'>350</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>89.86%</b></td><td><b>69.23%</b></td><td>100%</td><td><b>94%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/CommonMethods.ts#L61'>61</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts'>Intersection.ts</a></td><td><b>85.25%</b></td><td><b>48.91%</b></td><td>100%</td><td><b>97.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L184-L188'>184&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L289'>289</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Intersection.ts#L297'>297</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts'>Observable.ts</a></td><td><b>80.33%</b></td><td><b>55.81%</b></td><td><b>93.75%</b></td><td><b>87.10%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L84-L85'>84&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts'>Point.ts</a></td><td><b>90.27%</b></td><td><b>61.22%</b></td><td>100%</td><td><b>93.60%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L285'>285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts'>Shadow.ts</a></td><td><b>87.85%</b></td><td><b>78.26%</b></td><td>100%</td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L203'>203</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/cache.ts'>cache.ts</a></td><td><b>84.88%</b></td><td><b>45.45%</b></td><td>100%</td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts'>config.ts</a></td><td><b>87.73%</b></td><td><b>55%</b></td><td><b>66.67%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>93.33%</b></td><td><b>76.92%</b></td><td><b>85.71%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>90.56%</b></td><td><b>65.48%</b></td><td><b>76.92%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>73.08%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>87.60%</b></td><td><b>55.56%</b></td><td>100%</td><td><b>96.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>79.37%</b></td><td><b>46.67%</b></td><td>100%</td><td><b>89.36%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/utils.ts#L40-L44'>40&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>70.18%</b></td><td><b>90.91%</b></td><td><b>80%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L130-L138'>130&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L153-L164'>153&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L174'>174</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L176-L181'>176&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>89.33%</b></td><td><b>91.67%</b></td><td>100%</td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L115'>115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>74.04%</b></td><td><b>39.52%</b></td><td><b>92.86%</b></td><td><b>82.96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1007-L1008'>1007&ndash;1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1011-L1013'>1011&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1063-L1068'>1063&ndash;1068</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1286-L1290'>1286&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1320'>1320</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1362'>1362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1384-L1400'>1384&ndash;1400</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1406-L1411'>1406&ndash;1411</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1479-L1490'>1479&ndash;1490</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1492-L1495'>1492&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L733-L734'>733&ndash;734</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L803'>803</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L833-L834'>833&ndash;834</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L841'>841</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L843'>843</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L845'>845</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L847-L851'>847&ndash;851</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L854-L861'>854&ndash;861</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L879'>879</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L948-L953'>948&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L963-L964'>963&ndash;964</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L966-L970'>966&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>85.37%</b></td><td><b>53.82%</b></td><td>100%</td><td><b>94.34%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1266'>1266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1269'>1269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1288'>1288</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1290'>1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1294'>1294</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1312-L1319'>1312&ndash;1319</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1322'>1322</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1325'>1325</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1334-L1335'>1334&ndash;1335</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1339-L1348'>1339&ndash;1348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1352'>1352</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1354-L1355'>1354&ndash;1355</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1361-L1366'>1361&ndash;1366</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L1370'>1370</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L362'>362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L384'>384</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L462'>462</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L513'>513</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L515'>515</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L591'>591</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L596'>596</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L673'>673</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L701'>701</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L992'>992</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/SelectableCanvas.ts#L994-L995'>994&ndash;995</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts'>StaticCanvas.ts</a></td><td><b>75.93%</b></td><td><b>70.11%</b></td><td><b>98.91%</b></td><td><b>75.43%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1003'>1003</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1009'>1009</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1014'>1014</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1024'>1024</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1026-L1032'>1026&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1042'>1042</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1045'>1045</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1048-L1054'>1048&ndash;1054</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1056-L1057'>1056&ndash;1057</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1059-L1080'>1059&ndash;1080</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1087-L1089'>1087&ndash;1089</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1091'>1091</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1099'>1099</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1107'>1107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1107-L1108'>1107&ndash;1108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1108-L1109'>1108&ndash;1109</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1111'>1111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1111-L1116'>1111&ndash;1116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1129'>1129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1134-L1136'>1134&ndash;1136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1144'>1144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1146'>1146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1153-L1157'>1153&ndash;1157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1159'>1159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1161-L1164'>1161&ndash;1164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1167'>1167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1169'>1169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1178'>1178</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1180-L1181'>1180&ndash;1181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1188-L1191'>1188&ndash;1191</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1193'>1193</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1199-L1202'>1199&ndash;1202</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1206-L1207'>1206&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1217'>1217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1223-L1225'>1223&ndash;1225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1227-L1232'>1227&ndash;1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1232'>1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1232-L1236'>1232&ndash;1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1236-L1241'>1236&ndash;1241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1243-L1250'>1243&ndash;1250</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1279-L1280'>1279&ndash;1280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1282-L1283'>1282&ndash;1283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1285-L1287'>1285&ndash;1287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1289-L1295'>1289&ndash;1295</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1299'>1299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1301-L1314'>1301&ndash;1314</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1322-L1323'>1322&ndash;1323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1333'>1333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1344'>1344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/c6e7eaa3c7cbe913138cee87afc354daa72d4e22/src/canvas/StaticCanvas.ts#L1385-L1389'>1385&ndash;1389</a>, <a href='https://github.co
github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>84.18%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>90.32%</b></td><td><b>61.54%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts'>Collection.ts</a></td><td><b>78.47%</b></td><td><b>42.62%</b></td><td><b>87.10%</b></td><td><b>85.82%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L329'>329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Collection.ts#L350'>350</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>89.86%</b></td><td><b>69.23%</b></td><td>100%</td><td><b>94%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/CommonMethods.ts#L61'>61</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts'>Intersection.ts</a></td><td><b>85.25%</b></td><td><b>48.91%</b></td><td>100%</td><td><b>97.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L184-L188'>184&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L289'>289</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Intersection.ts#L297'>297</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts'>Observable.ts</a></td><td><b>80.33%</b></td><td><b>55.81%</b></td><td><b>93.75%</b></td><td><b>87.10%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L84-L85'>84&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts'>Point.ts</a></td><td><b>90.27%</b></td><td><b>61.22%</b></td><td>100%</td><td><b>93.60%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L285'>285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts'>Shadow.ts</a></td><td><b>87.45%</b></td><td><b>73.91%</b></td><td>100%</td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L203'>203</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/cache.ts'>cache.ts</a></td><td><b>84.88%</b></td><td><b>45.45%</b></td><td>100%</td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts'>config.ts</a></td><td><b>87.73%</b></td><td><b>55%</b></td><td><b>66.67%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>93.33%</b></td><td><b>76.92%</b></td><td><b>85.71%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>90.56%</b></td><td><b>65.48%</b></td><td><b>76.92%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>73.08%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>87.60%</b></td><td><b>55.56%</b></td><td>100%</td><td><b>96.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>79.37%</b></td><td><b>46.67%</b></td><td>100%</td><td><b>89.36%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/utils.ts#L40-L44'>40&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>70.18%</b></td><td><b>90.91%</b></td><td><b>80%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L130-L138'>130&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L153-L164'>153&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L174'>174</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L176-L181'>176&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>89.33%</b></td><td><b>91.67%</b></td><td>100%</td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L115'>115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>74.04%</b></td><td><b>39.52%</b></td><td><b>92.86%</b></td><td><b>82.96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1007-L1008'>1007&ndash;1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1011-L1013'>1011&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1063-L1068'>1063&ndash;1068</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1286-L1290'>1286&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1320'>1320</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1362'>1362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1384-L1400'>1384&ndash;1400</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1406-L1411'>1406&ndash;1411</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1479-L1490'>1479&ndash;1490</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1492-L1495'>1492&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L733-L734'>733&ndash;734</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L803'>803</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L833-L834'>833&ndash;834</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L841'>841</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L843'>843</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L845'>845</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L847-L851'>847&ndash;851</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L854-L861'>854&ndash;861</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L879'>879</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L948-L953'>948&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L963-L964'>963&ndash;964</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L966-L970'>966&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>85.35%</b></td><td><b>53.54%</b></td><td>100%</td><td><b>94.34%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1266'>1266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1269'>1269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1288'>1288</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1290'>1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1294'>1294</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1312-L1319'>1312&ndash;1319</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1322'>1322</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1325'>1325</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1334-L1335'>1334&ndash;1335</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1339-L1348'>1339&ndash;1348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1352'>1352</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1354-L1355'>1354&ndash;1355</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1361-L1366'>1361&ndash;1366</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L1370'>1370</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L362'>362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L384'>384</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L462'>462</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L513'>513</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L515'>515</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L591'>591</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L596'>596</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L673'>673</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L701'>701</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L992'>992</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/SelectableCanvas.ts#L994-L995'>994&ndash;995</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts'>StaticCanvas.ts</a></td><td><b>75.93%</b></td><td><b>70.11%</b></td><td><b>98.91%</b></td><td><b>75.43%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1003'>1003</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1009'>1009</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1014'>1014</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1024'>1024</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1026-L1032'>1026&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1042'>1042</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1045'>1045</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1048-L1054'>1048&ndash;1054</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1056-L1057'>1056&ndash;1057</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1059-L1080'>1059&ndash;1080</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1087-L1089'>1087&ndash;1089</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1091'>1091</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1099'>1099</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1107'>1107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1107-L1108'>1107&ndash;1108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1108-L1109'>1108&ndash;1109</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1111'>1111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1111-L1116'>1111&ndash;1116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1129'>1129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1134-L1136'>1134&ndash;1136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1144'>1144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1146'>1146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1153-L1157'>1153&ndash;1157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1159'>1159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1161-L1164'>1161&ndash;1164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1167'>1167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1169'>1169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1178'>1178</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1180-L1181'>1180&ndash;1181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1188-L1191'>1188&ndash;1191</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1193'>1193</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1199-L1202'>1199&ndash;1202</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1206-L1207'>1206&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1217'>1217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1223-L1225'>1223&ndash;1225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1227-L1232'>1227&ndash;1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1232'>1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1232-L1236'>1232&ndash;1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1236-L1241'>1236&ndash;1241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1243-L1250'>1243&ndash;1250</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1279-L1280'>1279&ndash;1280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1282-L1283'>1282&ndash;1283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1285-L1287'>1285&ndash;1287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1289-L1295'>1289&ndash;1295</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1299'>1299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1301-L1314'>1301&ndash;1314</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1322-L1323'>1322&ndash;1323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1333'>1333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1344'>1344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7c2591fd1379519ac25d0cd38e617ee2fdc43037/src/canvas/StaticCanvas.ts#L1385-L1389'>1385&ndash;1389</a>, <a href='https://github.co
github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>83.27%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>88.71%</b></td><td><b>53.85%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/ClassRegistry.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts'>Collection.ts</a></td><td><b>71.39%</b></td><td><b>31.15%</b></td><td><b>45.16%</b></td><td><b>83.91%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L180-L181'>180&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L219'>219</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L263'>263</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L283'>283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L306'>306</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L327-L328'>327&ndash;328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L328-L329'>328&ndash;329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L337-L344'>337&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L350'>350</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L75'>75</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Collection.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>88.57%</b></td><td><b>64.29%</b></td><td><b>83.33%</b></td><td><b>96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/CommonMethods.ts#L9'>9</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts'>Intersection.ts</a></td><td><b>81.47%</b></td><td><b>41.94%</b></td><td><b>73.33%</b></td><td><b>96.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L105'>105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L132-L133'>132&ndash;133</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L184-L190'>184&ndash;190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L289-L291'>289&ndash;291</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L78'>78</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Intersection.ts#L80'>80</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts'>Observable.ts</a></td><td><b>71.20%</b></td><td><b>45.45%</b></td><td><b>31.25%</b></td><td><b>85.48%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L165'>165</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L167'>167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L43'>43</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L78'>78</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L82-L85'>82&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts'>Point.ts</a></td><td><b>84.43%</b></td><td><b>61.22%</b></td><td><b>41.18%</b></td><td><b>92.38%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L284-L285'>284&ndash;285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L294-L297'>294&ndash;297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts'>Shadow.ts</a></td><td><b>79.35%</b></td><td><b>13.04%</b></td><td><b>33.33%</b></td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L146-L147'>146&ndash;147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L147-L148'>147&ndash;148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L201'>201</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L201'>201</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L203-L204'>203&ndash;204</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L204'>204</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/cache.ts'>cache.ts</a></td><td><b>83.72%</b></td><td><b>45.45%</b></td><td><b>75%</b></td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts'>config.ts</a></td><td><b>82.21%</b></td><td><b>20%</b></td><td><b>44.44%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L123'>123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L131-L132'>131&ndash;132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>86.67%</b></td><td><b>76.92%</b></td><td><b>28.57%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>89%</b></td><td><b>65.06%</b></td><td><b>53.85%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>69.23%</b></td><td><b>33.33%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L42'>41&ndash;42</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L42-L44'>42&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L58'>58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>86.78%</b></td><td><b>55.56%</b></td><td><b>71.43%</b></td><td><b>97.70%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L88'>88</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>62.90%</b></td><td><b>7.14%</b></td><td>100%</td><td><b>78.72%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L28-L32'>28&ndash;32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L34-L35'>34&ndash;35</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L39-L44'>39&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>54.39%</b></td><td><b>3.03%</b></td><td><b>10%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L113'>113</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L113-L114'>113&ndash;114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L117-L119'>117&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L119'>119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L130-L132'>130&ndash;132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L132-L138'>132&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L153-L160'>153&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L160-L164'>160&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L174-L175'>174&ndash;175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L175'>175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L175'>175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L175-L176'>175&ndash;176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L176-L182'>176&ndash;182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L182'>182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L182'>182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L182-L183'>182&ndash;183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>78.67%</b></td><td><b>8.33%</b></td><td><b>14.29%</b></td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L114-L115'>114&ndash;115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>73.15%</b></td><td><b>30.47%</b></td><td><b>76.79%</b></td><td><b>85.26%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1008'>1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1012-L1013'>1012&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1022'>1022</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1031-L1032'>1031&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1047'>1047</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1049'>1049</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1056'>1056</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1058'>1058</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1260'>1260</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1285-L1290'>1285&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1293'>1293</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1320-L1321'>1320&ndash;1321</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1383-L1401'>1383&ndash;1401</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1401-L1403'>1401&ndash;1403</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1403-L1404'>1403&ndash;1404</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1406-L1412'>1406&ndash;1412</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1412'>1412</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1468'>1468</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1479-L1495'>1479&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L318'>318</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L323'>323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L343'>343</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L431'>431</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L703'>703</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L830'>830</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L839-L840'>839&ndash;840</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L844'>844</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L853'>853</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L870'>870</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L870'>870</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L906'>906</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L947-L953'>947&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L964-L970'>964&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>82.71%</b></td><td><b>48.92%</b></td><td><b>78.18%</b></td><td><b>93.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1213'>1213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/2862fe09ebd172a27f11a478adb480ad0aa5f473/src/canvas/SelectableCanvas.ts#L126
asturur: node qunit test from 32 secs to 6 secs.
Of course jest is slower, but that is fine, eventually will get faster with time
github-actions[bot]: Coverage after merging <b>animation-tests</b> into <b>master</b> will be<table><tbody><tr><th>84.41%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>90.32%</b></td><td><b>61.54%</b></td><td>100%</td><td><b>97.73%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/ClassRegistry.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/ClassRegistry.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts'>Collection.ts</a></td><td><b>78.47%</b></td><td><b>42.62%</b></td><td><b>87.10%</b></td><td><b>85.82%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L138'>138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L329'>329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Collection.ts#L350'>350</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>91.43%</b></td><td><b>71.43%</b></td><td>100%</td><td><b>96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/CommonMethods.ts#L52'>52</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts'>Intersection.ts</a></td><td><b>85.25%</b></td><td><b>48.91%</b></td><td>100%</td><td><b>97.30%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L184-L188'>184&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L289'>289</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Intersection.ts#L297'>297</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts'>Observable.ts</a></td><td><b>79.89%</b></td><td><b>54.55%</b></td><td><b>93.75%</b></td><td><b>87.10%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L145'>145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L167'>167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L84-L85'>84&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts'>Point.ts</a></td><td><b>90.27%</b></td><td><b>61.22%</b></td><td>100%</td><td><b>93.60%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L285'>285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L317'>317</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts'>Shadow.ts</a></td><td><b>87.85%</b></td><td><b>78.26%</b></td><td>100%</td><td><b>88.37%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L152-L157'>152&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L203'>203</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L213'>213</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L230-L237'>230&ndash;237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L241-L242'>241&ndash;242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Shadow.ts#L38-L41'>38&ndash;41</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/cache.ts'>cache.ts</a></td><td><b>84.88%</b></td><td><b>45.45%</b></td><td>100%</td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts'>config.ts</a></td><td><b>87.73%</b></td><td><b>55%</b></td><td><b>66.67%</b></td><td><b>94.03%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L134-L137'>134&ndash;137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L142-L143'>142&ndash;143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/config.ts#L152'>152</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>93.33%</b></td><td><b>76.92%</b></td><td><b>85.71%</b></td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>90.54%</b></td><td><b>65.06%</b></td><td><b>76.92%</b></td><td><b>99.29%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutManager.ts#L269'>269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutManager.ts#L333'>333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutManager.ts#L344'>344</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>73.08%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>87.60%</b></td><td><b>55.56%</b></td><td>100%</td><td><b>96.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L74'>74</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>72.58%</b></td><td><b>50%</b></td><td>100%</td><td><b>78.72%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/utils.ts#L29-L32'>29&ndash;32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/utils.ts#L34-L35'>34&ndash;35</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/LayoutManager/LayoutStrategies/utils.ts#L40-L44'>40&ndash;44</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>70.18%</b></td><td><b>90.91%</b></td><td><b>80%</b></td><td><b>65.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L130-L138'>130&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L153-L164'>153&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L174'>174</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L176-L181'>176&ndash;181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L204-L205'>204&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L207-L209'>207&ndash;209</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>89.33%</b></td><td><b>91.67%</b></td><td>100%</td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L115'>115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>97.06%</b></td><td><b>87.50%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PatternBrush.ts#L21'>21</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>91.06%</b></td><td><b>82.35%</b></td><td>100%</td><td><b>93.81%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L122-L123'>122&ndash;123</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L152-L154'>152&ndash;154</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L285-L286'>285&ndash;286</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L68-L69'>68&ndash;69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/PencilBrush.ts#L84-L85'>84&ndash;85</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L107-L108'>107&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L110-L111'>110&ndash;111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L118-L119'>118&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L121'>121</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L123-L127'>123&ndash;127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L136'>136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L148-L151'>148&ndash;151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L153-L156'>153&ndash;156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L160-L161'>160&ndash;161</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L163'>163</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L165-L168'>165&ndash;168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L17'>17</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L171'>171</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L178-L179'>178&ndash;179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L18'>18</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L183-L184'>183&ndash;184</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L186'>186</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L193-L194'>193&ndash;194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L20'>20</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L211'>211</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L22-L24'>22&ndash;24</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L28'>28</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L32'>32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L60'>60</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L84-L86'>84&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L94-L96'>94&ndash;96</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/brushes/SprayBrush.ts#L98-L99'>98&ndash;99</a></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>74.04%</b></td><td><b>39.52%</b></td><td><b>92.86%</b></td><td><b>82.96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1004'>1004</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1007-L1008'>1007&ndash;1008</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1011-L1013'>1011&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1018'>1018</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1063-L1068'>1063&ndash;1068</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1126'>1126</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1130'>1130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1137'>1137</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1203-L1207'>1203&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1286-L1290'>1286&ndash;1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1320'>1320</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1337'>1337</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1362'>1362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1384-L1400'>1384&ndash;1400</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1406-L1411'>1406&ndash;1411</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1414-L1415'>1414&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1417'>1417</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1421'>1421</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1423-L1424'>1423&ndash;1424</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1426-L1428'>1426&ndash;1428</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1432'>1432</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1434'>1434</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1436-L1438'>1436&ndash;1438</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1441-L1446'>1441&ndash;1446</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1449-L1451'>1449&ndash;1451</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1454'>1454</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1456'>1456</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1470'>1470</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1477'>1477</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1479-L1490'>1479&ndash;1490</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1492-L1495'>1492&ndash;1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1495'>1495</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1497'>1497</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1501-L1502'>1501&ndash;1502</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1505-L1506'>1505&ndash;1506</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1509-L1511'>1509&ndash;1511</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1514'>1514</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L1522'>1522</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L354'>354</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L369'>369</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L388'>388</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L443'>443</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L559-L563'>559&ndash;563</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L566-L567'>566&ndash;567</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L569'>569</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L579'>579</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L582-L583'>582&ndash;583</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L585'>585</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L588-L590'>588&ndash;590</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L602'>602</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L609-L613'>609&ndash;613</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L615-L620'>615&ndash;620</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L622-L626'>622&ndash;626</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L659'>659</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L661'>661</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L668-L672'>668&ndash;672</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L674-L679'>674&ndash;679</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L681'>681</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L683-L684'>683&ndash;684</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L686-L689'>686&ndash;689</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L691-L692'>691&ndash;692</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L733-L734'>733&ndash;734</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L747'>747</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L783-L786'>783&ndash;786</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L789'>789</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L791'>791</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L794'>794</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L796'>796</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L798'>798</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L803'>803</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L824'>824</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L833-L834'>833&ndash;834</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L841'>841</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L843'>843</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L845'>845</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L847-L851'>847&ndash;851</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L854-L861'>854&ndash;861</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L879'>879</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L886-L887'>886&ndash;887</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L932-L933'>932&ndash;933</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L935-L936'>935&ndash;936</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L938'>938</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L948-L953'>948&ndash;953</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L956'>956</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L963-L964'>963&ndash;964</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L966-L970'>966&ndash;970</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L972'>972</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L974'>974</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L995-L996'>995&ndash;996</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/Canvas.ts#L999'>999</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/CanvasOptions.ts'>CanvasOptions.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts'>SelectableCanvas.ts</a></td><td><b>85.35%</b></td><td><b>53.54%</b></td><td>100%</td><td><b>94.34%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1021'>1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1089-L1093'>1089&ndash;1093</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1139-L1140'>1139&ndash;1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1142-L1143'>1142&ndash;1143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1172'>1172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1174-L1175'>1174&ndash;1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1175'>1175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1177'>1177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1216'>1216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1218'>1218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1220'>1220</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1238'>1238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1242'>1242</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1245'>1245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1266'>1266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1269'>1269</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1288'>1288</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1290'>1290</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1294'>1294</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1312-L1319'>1312&ndash;1319</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1322'>1322</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1325'>1325</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1334-L1335'>1334&ndash;1335</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1339-L1348'>1339&ndash;1348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1352'>1352</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1354-L1355'>1354&ndash;1355</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1361-L1366'>1361&ndash;1366</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L1370'>1370</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L362'>362</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L384'>384</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L462'>462</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L513'>513</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L515'>515</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L591'>591</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L596'>596</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L673'>673</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L701'>701</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L992'>992</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/SelectableCanvas.ts#L994-L995'>994&ndash;995</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts'>StaticCanvas.ts</a></td><td><b>75.93%</b></td><td><b>70.11%</b></td><td><b>98.91%</b></td><td><b>75.43%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1003'>1003</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1009'>1009</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1012'>1012</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1014'>1014</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1024'>1024</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1026-L1032'>1026&ndash;1032</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1042'>1042</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1045'>1045</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1048-L1054'>1048&ndash;1054</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1056-L1057'>1056&ndash;1057</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1059-L1080'>1059&ndash;1080</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1087-L1089'>1087&ndash;1089</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1091'>1091</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1099'>1099</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1105'>1105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1107'>1107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1107-L1108'>1107&ndash;1108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1108-L1109'>1108&ndash;1109</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1111'>1111</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1111-L1116'>1111&ndash;1116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1129'>1129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1134-L1136'>1134&ndash;1136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1140'>1140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1144'>1144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1146'>1146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1148'>1148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1153-L1157'>1153&ndash;1157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1159'>1159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1161-L1164'>1161&ndash;1164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1167'>1167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1169'>1169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1178'>1178</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1180-L1181'>1180&ndash;1181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1188-L1191'>1188&ndash;1191</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1193'>1193</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1199-L1202'>1199&ndash;1202</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1206-L1207'>1206&ndash;1207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1217'>1217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1223-L1225'>1223&ndash;1225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1227-L1232'>1227&ndash;1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1232'>1232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1232-L1236'>1232&ndash;1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1236'>1236</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1236-L1241'>1236&ndash;1241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1243-L1250'>1243&ndash;1250</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1279-L1280'>1279&ndash;1280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1282-L1283'>1282&ndash;1283</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1285-L1287'>1285&ndash;1287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1289-L1295'>1289&ndash;1295</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1299'>1299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1301-L1314'>1301&ndash;1314</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1322-L1323'>1322&ndash;1323</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1333'>1333</a>, <a href='https://github.com/fabricjs/fabric.js/blob/7bcc27af347f3b780a390b5f2eb492f5d310415e/src/canvas/StaticCanvas.ts#L1344'>1344</a>, <a href=

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eca531316..ae10ad934 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
 
 ## [next]
 
+- test(): Convert Animation tests to jest [#9892](https://github.com/fabricjs/fabric.js/pull/9892)
 - perf(ObjectGeometry): replace cache key string with array [#9887](https://github.com/fabricjs/fabric.js/pull/9887)
 - docs(): Improve JSDOCs for BlendImage [#9876](https://github.com/fabricjs/fabric.js/pull/9876)
 - fix(Group): Pass down the abort signal from group to objects [#9890](https://github.com/fabricjs/fabric.js/pull/9890)
diff --git a/jest.config.js b/jest.config.js
index 2655b71f4..ef31a4d04 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -70,7 +70,7 @@ module.exports = {
   // globals: {},
 
   // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
-  // maxWorkers: "50%",
+  maxWorkers: '75%',
 
   // An array of directory names to be searched recursively up from the requiring module's location
   // moduleDirectories: [
diff --git a/src/shapes/Object/AnimatableObject.ts b/src/shapes/Object/AnimatableObject.ts
index 08456f105..561d23a38 100644
--- a/src/shapes/Object/AnimatableObject.ts
+++ b/src/shapes/Object/AnimatableObject.ts
@@ -56,16 +56,14 @@ export abstract class AnimatableObject<
     const propIsColor = (
       this.constructor as typeof AnimatableObject
     ).colorProperties.includes(path[path.length - 1]);
-    const { easing, duration, abort, startValue, onChange, onComplete } =
-      options;
+    const { abort, startValue, onChange, onComplete } = options;
     const animationOptions = {
+      ...options,
       target: this,
       // path.reduce... is the current value in case start value isn't provided
       startValue:
         startValue ?? path.reduce((deep: any, key) => deep[key], this),
       endValue,
-      easing,
-      duration,
       abort: abort?.bind(this),
       onChange: (
         value: number | number[] | string,
diff --git a/src/util/animation/__snapshots__/animations.spec.ts.snap b/src/util/animation/__snapshots__/animations.spec.ts.snap
new file mode 100644
index 000000000..0ec83fd80
--- /dev/null
+++ b/src/util/animation/__snapshots__/animations.spec.ts.snap
@@ -0,0 +1,2772 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`animate animateColor change percentage is calculated from a changed value 1`] = `
+[
+  0,
+  0.03529411764705882,
+  0.13333333333333333,
+  0.29411764705882354,
+  0.4980392156862745,
+  0.7411764705882353,
+  1,
+]
+`;
+
+exports[`easing defaultEasing 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0031",
+    "val": "0.3083",
+  },
+  {
+    "percentage": "0.0123",
+    "val": "1.2312",
+  },
+  {
+    "percentage": "0.0276",
+    "val": "2.7630",
+  },
+  {
+    "percentage": "0.0489",
+    "val": "4.8943",
+  },
+  {
+    "percentage": "0.0761",
+    "val": "7.6120",
+  },
+  {
+    "percentage": "0.1090",
+    "val": "10.8993",
+  },
+  {
+    "percentage": "0.1474",
+    "val": "14.7360",
+  },
+  {
+    "percentage": "0.1910",
+    "val": "19.0983",
+  },
+  {
+    "percentage": "0.2396",
+    "val": "23.9594",
+  },
+  {
+    "percentage": "0.2929",
+    "val": "29.2893",
+  },
+  {
+    "percentage": "0.3506",
+    "val": "35.0552",
+  },
+  {
+    "percentage": "0.4122",
+    "val": "41.2215",
+  },
+  {
+    "percentage": "0.4775",
+    "val": "47.7501",
+  },
+  {
+    "percentage": "0.5460",
+    "val": "54.6010",
+  },
+  {
+    "percentage": "0.6173",
+    "val": "61.7317",
+  },
+  {
+    "percentage": "0.6910",
+    "val": "69.0983",
+  },
+  {
+    "percentage": "0.7666",
+    "val": "76.6555",
+  },
+  {
+    "percentage": "0.8436",
+    "val": "84.3566",
+  },
+  {
+    "percentage": "0.9215",
+    "val": "92.1541",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInBack 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "-0.3916",
+  },
+  {
+    "percentage": "0.0143",
+    "val": "-1.4314",
+  },
+  {
+    "percentage": "0.0292",
+    "val": "-2.9168",
+  },
+  {
+    "percentage": "0.0465",
+    "val": "-4.6451",
+  },
+  {
+    "percentage": "0.0641",
+    "val": "-6.4137",
+  },
+  {
+    "percentage": "0.0802",
+    "val": "-8.0200",
+  },
+  {
+    "percentage": "0.0926",
+    "val": "-9.2613",
+  },
+  {
+    "percentage": "0.0994",
+    "val": "-9.9352",
+  },
+  {
+    "percentage": "0.0984",
+    "val": "-9.8388",
+  },
+  {
+    "percentage": "0.0877",
+    "val": "-8.7698",
+  },
+  {
+    "percentage": "0.0653",
+    "val": "-6.5253",
+  },
+  {
+    "percentage": "0.0290",
+    "val": "-2.9028",
+  },
+  {
+    "percentage": "0.0230",
+    "val": "2.3004",
+  },
+  {
+    "percentage": "0.0929",
+    "val": "9.2868",
+  },
+  {
+    "percentage": "0.1826",
+    "val": "18.2590",
+  },
+  {
+    "percentage": "0.2942",
+    "val": "29.4198",
+  },
+  {
+    "percentage": "0.4297",
+    "val": "42.9716",
+  },
+  {
+    "percentage": "0.5912",
+    "val": "59.1172",
+  },
+  {
+    "percentage": "0.7806",
+    "val": "78.0591",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInBounce 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0155",
+    "val": "1.5469",
+  },
+  {
+    "percentage": "0.0119",
+    "val": "1.1875",
+  },
+  {
+    "percentage": "0.0548",
+    "val": "5.4844",
+  },
+  {
+    "percentage": "0.0600",
+    "val": "6.0000",
+  },
+  {
+    "percentage": "0.0273",
+    "val": "2.7344",
+  },
+  {
+    "percentage": "0.0694",
+    "val": "6.9375",
+  },
+  {
+    "percentage": "0.1673",
+    "val": "16.7344",
+  },
+  {
+    "percentage": "0.2275",
+    "val": "22.7500",
+  },
+  {
+    "percentage": "0.2498",
+    "val": "24.9844",
+  },
+  {
+    "percentage": "0.2344",
+    "val": "23.4375",
+  },
+  {
+    "percentage": "0.1811",
+    "val": "18.1094",
+  },
+  {
+    "percentage": "0.0900",
+    "val": "9.0000",
+  },
+  {
+    "percentage": "0.0736",
+    "val": "7.3594",
+  },
+  {
+    "percentage": "0.3194",
+    "val": "31.9375",
+  },
+  {
+    "percentage": "0.5273",
+    "val": "52.7344",
+  },
+  {
+    "percentage": "0.6975",
+    "val": "69.7500",
+  },
+  {
+    "percentage": "0.8298",
+    "val": "82.9844",
+  },
+  {
+    "percentage": "0.9244",
+    "val": "92.4375",
+  },
+  {
+    "percentage": "0.9811",
+    "val": "98.1094",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInCirc 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0013",
+    "val": "0.1251",
+  },
+  {
+    "percentage": "0.0050",
+    "val": "0.5013",
+  },
+  {
+    "percentage": "0.0113",
+    "val": "1.1314",
+  },
+  {
+    "percentage": "0.0202",
+    "val": "2.0204",
+  },
+  {
+    "percentage": "0.0318",
+    "val": "3.1754",
+  },
+  {
+    "percentage": "0.0461",
+    "val": "4.6061",
+  },
+  {
+    "percentage": "0.0633",
+    "val": "6.3250",
+  },
+  {
+    "percentage": "0.0835",
+    "val": "8.3485",
+  },
+  {
+    "percentage": "0.1070",
+    "val": "10.6971",
+  },
+  {
+    "percentage": "0.1340",
+    "val": "13.3975",
+  },
+  {
+    "percentage": "0.1648",
+    "val": "16.4835",
+  },
+  {
+    "percentage": "0.2000",
+    "val": "20.0000",
+  },
+  {
+    "percentage": "0.2401",
+    "val": "24.0066",
+  },
+  {
+    "percentage": "0.2859",
+    "val": "28.5857",
+  },
+  {
+    "percentage": "0.3386",
+    "val": "33.8562",
+  },
+  {
+    "percentage": "0.4000",
+    "val": "40.0000",
+  },
+  {
+    "percentage": "0.4732",
+    "val": "47.3217",
+  },
+  {
+    "percentage": "0.5641",
+    "val": "56.4110",
+  },
+  {
+    "percentage": "0.6878",
+    "val": "68.7750",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInCubic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0001",
+    "val": "0.0125",
+  },
+  {
+    "percentage": "0.0010",
+    "val": "0.1000",
+  },
+  {
+    "percentage": "0.0034",
+    "val": "0.3375",
+  },
+  {
+    "percentage": "0.0080",
+    "val": "0.8000",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "1.5625",
+  },
+  {
+    "percentage": "0.0270",
+    "val": "2.7000",
+  },
+  {
+    "percentage": "0.0429",
+    "val": "4.2875",
+  },
+  {
+    "percentage": "0.0640",
+    "val": "6.4000",
+  },
+  {
+    "percentage": "0.0911",
+    "val": "9.1125",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "12.5000",
+  },
+  {
+    "percentage": "0.1664",
+    "val": "16.6375",
+  },
+  {
+    "percentage": "0.2160",
+    "val": "21.6000",
+  },
+  {
+    "percentage": "0.2746",
+    "val": "27.4625",
+  },
+  {
+    "percentage": "0.3430",
+    "val": "34.3000",
+  },
+  {
+    "percentage": "0.4219",
+    "val": "42.1875",
+  },
+  {
+    "percentage": "0.5120",
+    "val": "51.2000",
+  },
+  {
+    "percentage": "0.6141",
+    "val": "61.4125",
+  },
+  {
+    "percentage": "0.7290",
+    "val": "72.9000",
+  },
+  {
+    "percentage": "0.8574",
+    "val": "85.7375",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInElastic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0007",
+    "val": "0.0691",
+  },
+  {
+    "percentage": "0.0020",
+    "val": "0.1953",
+  },
+  {
+    "percentage": "0.0014",
+    "val": "0.1381",
+  },
+  {
+    "percentage": "0.0020",
+    "val": "-0.1953",
+  },
+  {
+    "percentage": "0.0055",
+    "val": "-0.5524",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "-0.3906",
+  },
+  {
+    "percentage": "0.0055",
+    "val": "0.5524",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "1.5625",
+  },
+  {
+    "percentage": "0.0110",
+    "val": "1.1049",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "-1.5625",
+  },
+  {
+    "percentage": "0.0442",
+    "val": "-4.4194",
+  },
+  {
+    "percentage": "0.0312",
+    "val": "-3.1250",
+  },
+  {
+    "percentage": "0.0442",
+    "val": "4.4194",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "12.5000",
+  },
+  {
+    "percentage": "0.0884",
+    "val": "8.8388",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "-12.5000",
+  },
+  {
+    "percentage": "0.3536",
+    "val": "-35.3553",
+  },
+  {
+    "percentage": "0.2500",
+    "val": "-25.0000",
+  },
+  {
+    "percentage": "0.3536",
+    "val": "35.3553",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInExpo 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0014",
+    "val": "0.1381",
+  },
+  {
+    "percentage": "0.0020",
+    "val": "0.1953",
+  },
+  {
+    "percentage": "0.0028",
+    "val": "0.2762",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "0.3906",
+  },
+  {
+    "percentage": "0.0055",
+    "val": "0.5524",
+  },
+  {
+    "percentage": "0.0078",
+    "val": "0.7813",
+  },
+  {
+    "percentage": "0.0110",
+    "val": "1.1049",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "1.5625",
+  },
+  {
+    "percentage": "0.0221",
+    "val": "2.2097",
+  },
+  {
+    "percentage": "0.0313",
+    "val": "3.1250",
+  },
+  {
+    "percentage": "0.0442",
+    "val": "4.4194",
+  },
+  {
+    "percentage": "0.0625",
+    "val": "6.2500",
+  },
+  {
+    "percentage": "0.0884",
+    "val": "8.8388",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "12.5000",
+  },
+  {
+    "percentage": "0.1768",
+    "val": "17.6777",
+  },
+  {
+    "percentage": "0.2500",
+    "val": "25.0000",
+  },
+  {
+    "percentage": "0.3536",
+    "val": "35.3553",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.7071",
+    "val": "70.7107",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutBack 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0112",
+    "val": "-1.1177",
+  },
+  {
+    "percentage": "0.0375",
+    "val": "-3.7519",
+  },
+  {
+    "percentage": "0.0682",
+    "val": "-6.8240",
+  },
+  {
+    "percentage": "0.0926",
+    "val": "-9.2556",
+  },
+  {
+    "percentage": "0.0997",
+    "val": "-9.9682",
+  },
+  {
+    "percentage": "0.0788",
+    "val": "-7.8833",
+  },
+  {
+    "percentage": "0.0192",
+    "val": "-1.9226",
+  },
+  {
+    "percentage": "0.0899",
+    "val": "8.9926",
+  },
+  {
+    "percentage": "0.2594",
+    "val": "25.9406",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.7406",
+    "val": "74.0594",
+  },
+  {
+    "percentage": "0.9101",
+    "val": "91.0074",
+  },
+  {
+    "percentage": "1.0192",
+    "val": "101.9226",
+  },
+  {
+    "percentage": "1.0788",
+    "val": "107.8833",
+  },
+  {
+    "percentage": "1.0997",
+    "val": "109.9682",
+  },
+  {
+    "percentage": "1.0926",
+    "val": "109.2556",
+  },
+  {
+    "percentage": "1.0682",
+    "val": "106.8240",
+  },
+  {
+    "percentage": "1.0375",
+    "val": "103.7519",
+  },
+  {
+    "percentage": "1.0112",
+    "val": "101.1177",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutBounce 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0059",
+    "val": "0.5938",
+  },
+  {
+    "percentage": "0.0300",
+    "val": "3.0000",
+  },
+  {
+    "percentage": "0.0347",
+    "val": "3.4688",
+  },
+  {
+    "percentage": "0.1138",
+    "val": "11.3750",
+  },
+  {
+    "percentage": "0.1172",
+    "val": "11.7188",
+  },
+  {
+    "percentage": "0.0450",
+    "val": "4.5000",
+  },
+  {
+    "percentage": "0.1597",
+    "val": "15.9688",
+  },
+  {
+    "percentage": "0.3488",
+    "val": "34.8750",
+  },
+  {
+    "percentage": "0.4622",
+    "val": "46.2188",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.5378",
+    "val": "53.7813",
+  },
+  {
+    "percentage": "0.6512",
+    "val": "65.1250",
+  },
+  {
+    "percentage": "0.8403",
+    "val": "84.0313",
+  },
+  {
+    "percentage": "0.9550",
+    "val": "95.5000",
+  },
+  {
+    "percentage": "0.8828",
+    "val": "88.2813",
+  },
+  {
+    "percentage": "0.8862",
+    "val": "88.6250",
+  },
+  {
+    "percentage": "0.9653",
+    "val": "96.5313",
+  },
+  {
+    "percentage": "0.9700",
+    "val": "97.0000",
+  },
+  {
+    "percentage": "0.9941",
+    "val": "99.4063",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutCirc 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0025",
+    "val": "0.2506",
+  },
+  {
+    "percentage": "0.0101",
+    "val": "1.0102",
+  },
+  {
+    "percentage": "0.0230",
+    "val": "2.3030",
+  },
+  {
+    "percentage": "0.0417",
+    "val": "4.1742",
+  },
+  {
+    "percentage": "0.0670",
+    "val": "6.6987",
+  },
+  {
+    "percentage": "0.1000",
+    "val": "10.0000",
+  },
+  {
+    "percentage": "0.1429",
+    "val": "14.2929",
+  },
+  {
+    "percentage": "0.2000",
+    "val": "20.0000",
+  },
+  {
+    "percentage": "0.2821",
+    "val": "28.2055",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.7179",
+    "val": "71.7945",
+  },
+  {
+    "percentage": "0.8000",
+    "val": "80.0000",
+  },
+  {
+    "percentage": "0.8571",
+    "val": "85.7071",
+  },
+  {
+    "percentage": "0.9000",
+    "val": "90.0000",
+  },
+  {
+    "percentage": "0.9330",
+    "val": "93.3013",
+  },
+  {
+    "percentage": "0.9583",
+    "val": "95.8258",
+  },
+  {
+    "percentage": "0.9770",
+    "val": "97.6970",
+  },
+  {
+    "percentage": "0.9899",
+    "val": "98.9898",
+  },
+  {
+    "percentage": "0.9975",
+    "val": "99.7494",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutCubic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0005",
+    "val": "0.0500",
+  },
+  {
+    "percentage": "0.0040",
+    "val": "0.4000",
+  },
+  {
+    "percentage": "0.0135",
+    "val": "1.3500",
+  },
+  {
+    "percentage": "0.0320",
+    "val": "3.2000",
+  },
+  {
+    "percentage": "0.0625",
+    "val": "6.2500",
+  },
+  {
+    "percentage": "0.1080",
+    "val": "10.8000",
+  },
+  {
+    "percentage": "0.1715",
+    "val": "17.1500",
+  },
+  {
+    "percentage": "0.2560",
+    "val": "25.6000",
+  },
+  {
+    "percentage": "0.3645",
+    "val": "36.4500",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.6355",
+    "val": "63.5500",
+  },
+  {
+    "percentage": "0.7440",
+    "val": "74.4000",
+  },
+  {
+    "percentage": "0.8285",
+    "val": "82.8500",
+  },
+  {
+    "percentage": "0.8920",
+    "val": "89.2000",
+  },
+  {
+    "percentage": "0.9375",
+    "val": "93.7500",
+  },
+  {
+    "percentage": "0.9680",
+    "val": "96.8000",
+  },
+  {
+    "percentage": "0.9865",
+    "val": "98.6500",
+  },
+  {
+    "percentage": "0.9960",
+    "val": "99.6000",
+  },
+  {
+    "percentage": "0.9995",
+    "val": "99.9500",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutElastic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0010",
+    "val": "0.0977",
+  },
+  {
+    "percentage": "0.0003",
+    "val": "0.0339",
+  },
+  {
+    "percentage": "0.0037",
+    "val": "-0.3671",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "-0.3906",
+  },
+  {
+    "percentage": "0.0120",
+    "val": "1.1969",
+  },
+  {
+    "percentage": "0.0239",
+    "val": "2.3939",
+  },
+  {
+    "percentage": "0.0312",
+    "val": "-3.1250",
+  },
+  {
+    "percentage": "0.1175",
+    "val": "-11.7462",
+  },
+  {
+    "percentage": "0.0434",
+    "val": "4.3412",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.9566",
+    "val": "95.6588",
+  },
+  {
+    "percentage": "1.1175",
+    "val": "111.7462",
+  },
+  {
+    "percentage": "1.0313",
+    "val": "103.1250",
+  },
+  {
+    "percentage": "0.9761",
+    "val": "97.6061",
+  },
+  {
+    "percentage": "0.9880",
+    "val": "98.8031",
+  },
+  {
+    "percentage": "1.0039",
+    "val": "100.3906",
+  },
+  {
+    "percentage": "1.0037",
+    "val": "100.3671",
+  },
+  {
+    "percentage": "0.9997",
+    "val": "99.9661",
+  },
+  {
+    "percentage": "0.9990",
+    "val": "99.9023",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutExpo 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0010",
+    "val": "0.0977",
+  },
+  {
+    "percentage": "0.0020",
+    "val": "0.1953",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "0.3906",
+  },
+  {
+    "percentage": "0.0078",
+    "val": "0.7813",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "1.5625",
+  },
+  {
+    "percentage": "0.0313",
+    "val": "3.1250",
+  },
+  {
+    "percentage": "0.0625",
+    "val": "6.2500",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "12.5000",
+  },
+  {
+    "percentage": "0.2500",
+    "val": "25.0000",
+  },
+  {
+    "percentage": "1.5000",
+    "val": "-150.0000",
+  },
+  {
+    "percentage": "1.2500",
+    "val": "-125.0000",
+  },
+  {
+    "percentage": "1.1250",
+    "val": "-112.5000",
+  },
+  {
+    "percentage": "1.0625",
+    "val": "-106.2500",
+  },
+  {
+    "percentage": "1.0313",
+    "val": "-103.1250",
+  },
+  {
+    "percentage": "1.0156",
+    "val": "-101.5625",
+  },
+  {
+    "percentage": "1.0078",
+    "val": "-100.7813",
+  },
+  {
+    "percentage": "1.0039",
+    "val": "-100.3906",
+  },
+  {
+    "percentage": "1.0020",
+    "val": "-100.1953",
+  },
+  {
+    "percentage": "1.0010",
+    "val": "-100.0977",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutQuad 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0050",
+    "val": "0.5000",
+  },
+  {
+    "percentage": "0.0200",
+    "val": "2.0000",
+  },
+  {
+    "percentage": "0.0450",
+    "val": "4.5000",
+  },
+  {
+    "percentage": "0.0800",
+    "val": "8.0000",
+  },
+  {
+    "percentage": "0.1250",
+    "val": "12.5000",
+  },
+  {
+    "percentage": "0.1800",
+    "val": "18.0000",
+  },
+  {
+    "percentage": "0.2450",
+    "val": "24.5000",
+  },
+  {
+    "percentage": "0.3200",
+    "val": "32.0000",
+  },
+  {
+    "percentage": "0.4050",
+    "val": "40.5000",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.5950",
+    "val": "59.5000",
+  },
+  {
+    "percentage": "0.6800",
+    "val": "68.0000",
+  },
+  {
+    "percentage": "0.7550",
+    "val": "75.5000",
+  },
+  {
+    "percentage": "0.8200",
+    "val": "82.0000",
+  },
+  {
+    "percentage": "0.8750",
+    "val": "87.5000",
+  },
+  {
+    "percentage": "0.9200",
+    "val": "92.0000",
+  },
+  {
+    "percentage": "0.9550",
+    "val": "95.5000",
+  },
+  {
+    "percentage": "0.9800",
+    "val": "98.0000",
+  },
+  {
+    "percentage": "0.9950",
+    "val": "99.5000",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutQuart 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0001",
+    "val": "0.0050",
+  },
+  {
+    "percentage": "0.0008",
+    "val": "0.0800",
+  },
+  {
+    "percentage": "0.0040",
+    "val": "0.4050",
+  },
+  {
+    "percentage": "0.0128",
+    "val": "1.2800",
+  },
+  {
+    "percentage": "0.0313",
+    "val": "3.1250",
+  },
+  {
+    "percentage": "0.0648",
+    "val": "6.4800",
+  },
+  {
+    "percentage": "0.1200",
+    "val": "12.0050",
+  },
+  {
+    "percentage": "0.2048",
+    "val": "20.4800",
+  },
+  {
+    "percentage": "0.3281",
+    "val": "32.8050",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.6720",
+    "val": "67.1950",
+  },
+  {
+    "percentage": "0.7952",
+    "val": "79.5200",
+  },
+  {
+    "percentage": "0.8800",
+    "val": "87.9950",
+  },
+  {
+    "percentage": "0.9352",
+    "val": "93.5200",
+  },
+  {
+    "percentage": "0.9688",
+    "val": "96.8750",
+  },
+  {
+    "percentage": "0.9872",
+    "val": "98.7200",
+  },
+  {
+    "percentage": "0.9960",
+    "val": "99.5950",
+  },
+  {
+    "percentage": "0.9992",
+    "val": "99.9200",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "99.9950",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutQuint 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0000",
+    "val": "0.0005",
+  },
+  {
+    "percentage": "0.0002",
+    "val": "0.0160",
+  },
+  {
+    "percentage": "0.0012",
+    "val": "0.1215",
+  },
+  {
+    "percentage": "0.0051",
+    "val": "0.5120",
+  },
+  {
+    "percentage": "0.0156",
+    "val": "1.5625",
+  },
+  {
+    "percentage": "0.0389",
+    "val": "3.8880",
+  },
+  {
+    "percentage": "0.0840",
+    "val": "8.4035",
+  },
+  {
+    "percentage": "0.1638",
+    "val": "16.3840",
+  },
+  {
+    "percentage": "0.2952",
+    "val": "29.5245",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.7048",
+    "val": "70.4755",
+  },
+  {
+    "percentage": "0.8362",
+    "val": "83.6160",
+  },
+  {
+    "percentage": "0.9160",
+    "val": "91.5965",
+  },
+  {
+    "percentage": "0.9611",
+    "val": "96.1120",
+  },
+  {
+    "percentage": "0.9844",
+    "val": "98.4375",
+  },
+  {
+    "percentage": "0.9949",
+    "val": "99.4880",
+  },
+  {
+    "percentage": "0.9988",
+    "val": "99.8785",
+  },
+  {
+    "percentage": "0.9998",
+    "val": "99.9840",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "99.9995",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInOutSine 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0062",
+    "val": "0.6156",
+  },
+  {
+    "percentage": "0.0245",
+    "val": "2.4472",
+  },
+  {
+    "percentage": "0.0545",
+    "val": "5.4497",
+  },
+  {
+    "percentage": "0.0955",
+    "val": "9.5492",
+  },
+  {
+    "percentage": "0.1464",
+    "val": "14.6447",
+  },
+  {
+    "percentage": "0.2061",
+    "val": "20.6107",
+  },
+  {
+    "percentage": "0.2730",
+    "val": "27.3005",
+  },
+  {
+    "percentage": "0.3455",
+    "val": "34.5492",
+  },
+  {
+    "percentage": "0.4218",
+    "val": "42.1783",
+  },
+  {
+    "percentage": "0.5000",
+    "val": "50.0000",
+  },
+  {
+    "percentage": "0.5782",
+    "val": "57.8217",
+  },
+  {
+    "percentage": "0.6545",
+    "val": "65.4508",
+  },
+  {
+    "percentage": "0.7270",
+    "val": "72.6995",
+  },
+  {
+    "percentage": "0.7939",
+    "val": "79.3893",
+  },
+  {
+    "percentage": "0.8536",
+    "val": "85.3553",
+  },
+  {
+    "percentage": "0.9045",
+    "val": "90.4508",
+  },
+  {
+    "percentage": "0.9455",
+    "val": "94.5503",
+  },
+  {
+    "percentage": "0.9755",
+    "val": "97.5528",
+  },
+  {
+    "percentage": "0.9938",
+    "val": "99.3844",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInQuad 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0025",
+    "val": "0.2500",
+  },
+  {
+    "percentage": "0.0100",
+    "val": "1.0000",
+  },
+  {
+    "percentage": "0.0225",
+    "val": "2.2500",
+  },
+  {
+    "percentage": "0.0400",
+    "val": "4.0000",
+  },
+  {
+    "percentage": "0.0625",
+    "val": "6.2500",
+  },
+  {
+    "percentage": "0.0900",
+    "val": "9.0000",
+  },
+  {
+    "percentage": "0.1225",
+    "val": "12.2500",
+  },
+  {
+    "percentage": "0.1600",
+    "val": "16.0000",
+  },
+  {
+    "percentage": "0.2025",
+    "val": "20.2500",
+  },
+  {
+    "percentage": "0.2500",
+    "val": "25.0000",
+  },
+  {
+    "percentage": "0.3025",
+    "val": "30.2500",
+  },
+  {
+    "percentage": "0.3600",
+    "val": "36.0000",
+  },
+  {
+    "percentage": "0.4225",
+    "val": "42.2500",
+  },
+  {
+    "percentage": "0.4900",
+    "val": "49.0000",
+  },
+  {
+    "percentage": "0.5625",
+    "val": "56.2500",
+  },
+  {
+    "percentage": "0.6400",
+    "val": "64.0000",
+  },
+  {
+    "percentage": "0.7225",
+    "val": "72.2500",
+  },
+  {
+    "percentage": "0.8100",
+    "val": "81.0000",
+  },
+  {
+    "percentage": "0.9025",
+    "val": "90.2500",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInQuart 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0000",
+    "val": "0.0006",
+  },
+  {
+    "percentage": "0.0001",
+    "val": "0.0100",
+  },
+  {
+    "percentage": "0.0005",
+    "val": "0.0506",
+  },
+  {
+    "percentage": "0.0016",
+    "val": "0.1600",
+  },
+  {
+    "percentage": "0.0039",
+    "val": "0.3906",
+  },
+  {
+    "percentage": "0.0081",
+    "val": "0.8100",
+  },
+  {
+    "percentage": "0.0150",
+    "val": "1.5006",
+  },
+  {
+    "percentage": "0.0256",
+    "val": "2.5600",
+  },
+  {
+    "percentage": "0.0410",
+    "val": "4.1006",
+  },
+  {
+    "percentage": "0.0625",
+    "val": "6.2500",
+  },
+  {
+    "percentage": "0.0915",
+    "val": "9.1506",
+  },
+  {
+    "percentage": "0.1296",
+    "val": "12.9600",
+  },
+  {
+    "percentage": "0.1785",
+    "val": "17.8506",
+  },
+  {
+    "percentage": "0.2401",
+    "val": "24.0100",
+  },
+  {
+    "percentage": "0.3164",
+    "val": "31.6406",
+  },
+  {
+    "percentage": "0.4096",
+    "val": "40.9600",
+  },
+  {
+    "percentage": "0.5220",
+    "val": "52.2006",
+  },
+  {
+    "percentage": "0.6561",
+    "val": "65.6100",
+  },
+  {
+    "percentage": "0.8145",
+    "val": "81.4506",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInQuint 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0000",
+    "val": "0.0010",
+  },
+  {
+    "percentage": "0.0001",
+    "val": "0.0076",
+  },
+  {
+    "percentage": "0.0003",
+    "val": "0.0320",
+  },
+  {
+    "percentage": "0.0010",
+    "val": "0.0977",
+  },
+  {
+    "percentage": "0.0024",
+    "val": "0.2430",
+  },
+  {
+    "percentage": "0.0053",
+    "val": "0.5252",
+  },
+  {
+    "percentage": "0.0102",
+    "val": "1.0240",
+  },
+  {
+    "percentage": "0.0185",
+    "val": "1.8453",
+  },
+  {
+    "percentage": "0.0313",
+    "val": "3.1250",
+  },
+  {
+    "percentage": "0.0503",
+    "val": "5.0328",
+  },
+  {
+    "percentage": "0.0778",
+    "val": "7.7760",
+  },
+  {
+    "percentage": "0.1160",
+    "val": "11.6029",
+  },
+  {
+    "percentage": "0.1681",
+    "val": "16.8070",
+  },
+  {
+    "percentage": "0.2373",
+    "val": "23.7305",
+  },
+  {
+    "percentage": "0.3277",
+    "val": "32.7680",
+  },
+  {
+    "percentage": "0.4437",
+    "val": "44.3705",
+  },
+  {
+    "percentage": "0.5905",
+    "val": "59.0490",
+  },
+  {
+    "percentage": "0.7738",
+    "val": "77.3781",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeInSine 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0031",
+    "val": "0.3083",
+  },
+  {
+    "percentage": "0.0123",
+    "val": "1.2312",
+  },
+  {
+    "percentage": "0.0276",
+    "val": "2.7630",
+  },
+  {
+    "percentage": "0.0489",
+    "val": "4.8943",
+  },
+  {
+    "percentage": "0.0761",
+    "val": "7.6120",
+  },
+  {
+    "percentage": "0.1090",
+    "val": "10.8993",
+  },
+  {
+    "percentage": "0.1474",
+    "val": "14.7360",
+  },
+  {
+    "percentage": "0.1910",
+    "val": "19.0983",
+  },
+  {
+    "percentage": "0.2396",
+    "val": "23.9594",
+  },
+  {
+    "percentage": "0.2929",
+    "val": "29.2893",
+  },
+  {
+    "percentage": "0.3506",
+    "val": "35.0552",
+  },
+  {
+    "percentage": "0.4122",
+    "val": "41.2215",
+  },
+  {
+    "percentage": "0.4775",
+    "val": "47.7501",
+  },
+  {
+    "percentage": "0.5460",
+    "val": "54.6010",
+  },
+  {
+    "percentage": "0.6173",
+    "val": "61.7317",
+  },
+  {
+    "percentage": "0.6910",
+    "val": "69.0983",
+  },
+  {
+    "percentage": "0.7666",
+    "val": "76.6555",
+  },
+  {
+    "percentage": "0.8436",
+    "val": "84.3566",
+  },
+  {
+    "percentage": "0.9215",
+    "val": "92.1541",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutBack 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.2194",
+    "val": "21.9409",
+  },
+  {
+    "percentage": "0.4088",
+    "val": "40.8828",
+  },
+  {
+    "percentage": "0.5703",
+    "val": "57.0284",
+  },
+  {
+    "percentage": "0.7058",
+    "val": "70.5802",
+  },
+  {
+    "percentage": "0.8174",
+    "val": "81.7410",
+  },
+  {
+    "percentage": "0.9071",
+    "val": "90.7132",
+  },
+  {
+    "percentage": "0.9770",
+    "val": "97.6996",
+  },
+  {
+    "percentage": "1.0290",
+    "val": "102.9028",
+  },
+  {
+    "percentage": "1.0653",
+    "val": "106.5253",
+  },
+  {
+    "percentage": "1.0877",
+    "val": "108.7698",
+  },
+  {
+    "percentage": "1.0984",
+    "val": "109.8388",
+  },
+  {
+    "percentage": "1.0994",
+    "val": "109.9352",
+  },
+  {
+    "percentage": "1.0926",
+    "val": "109.2613",
+  },
+  {
+    "percentage": "1.0802",
+    "val": "108.0200",
+  },
+  {
+    "percentage": "1.0641",
+    "val": "106.4137",
+  },
+  {
+    "percentage": "1.0465",
+    "val": "104.6451",
+  },
+  {
+    "percentage": "1.0292",
+    "val": "102.9168",
+  },
+  {
+    "percentage": "1.0143",
+    "val": "101.4314",
+  },
+  {
+    "percentage": "1.0039",
+    "val": "100.3916",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutBounce 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0189",
+    "val": "1.8906",
+  },
+  {
+    "percentage": "0.0756",
+    "val": "7.5625",
+  },
+  {
+    "percentage": "0.1702",
+    "val": "17.0156",
+  },
+  {
+    "percentage": "0.3025",
+    "val": "30.2500",
+  },
+  {
+    "percentage": "0.4727",
+    "val": "47.2656",
+  },
+  {
+    "percentage": "0.6806",
+    "val": "68.0625",
+  },
+  {
+    "percentage": "0.9264",
+    "val": "92.6406",
+  },
+  {
+    "percentage": "0.9100",
+    "val": "91.0000",
+  },
+  {
+    "percentage": "0.8189",
+    "val": "81.8906",
+  },
+  {
+    "percentage": "0.7656",
+    "val": "76.5625",
+  },
+  {
+    "percentage": "0.7502",
+    "val": "75.0156",
+  },
+  {
+    "percentage": "0.7725",
+    "val": "77.2500",
+  },
+  {
+    "percentage": "0.8327",
+    "val": "83.2656",
+  },
+  {
+    "percentage": "0.9306",
+    "val": "93.0625",
+  },
+  {
+    "percentage": "0.9727",
+    "val": "97.2656",
+  },
+  {
+    "percentage": "0.9400",
+    "val": "94.0000",
+  },
+  {
+    "percentage": "0.9452",
+    "val": "94.5156",
+  },
+  {
+    "percentage": "0.9881",
+    "val": "98.8125",
+  },
+  {
+    "percentage": "0.9845",
+    "val": "98.4531",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutCirc 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.3122",
+    "val": "31.2250",
+  },
+  {
+    "percentage": "0.4359",
+    "val": "43.5890",
+  },
+  {
+    "percentage": "0.5268",
+    "val": "52.6783",
+  },
+  {
+    "percentage": "0.6000",
+    "val": "60.0000",
+  },
+  {
+    "percentage": "0.6614",
+    "val": "66.1438",
+  },
+  {
+    "percentage": "0.7141",
+    "val": "71.4143",
+  },
+  {
+    "percentage": "0.7599",
+    "val": "75.9934",
+  },
+  {
+    "percentage": "0.8000",
+    "val": "80.0000",
+  },
+  {
+    "percentage": "0.8352",
+    "val": "83.5165",
+  },
+  {
+    "percentage": "0.8660",
+    "val": "86.6025",
+  },
+  {
+    "percentage": "0.8930",
+    "val": "89.3029",
+  },
+  {
+    "percentage": "0.9165",
+    "val": "91.6515",
+  },
+  {
+    "percentage": "0.9367",
+    "val": "93.6750",
+  },
+  {
+    "percentage": "0.9539",
+    "val": "95.3939",
+  },
+  {
+    "percentage": "0.9682",
+    "val": "96.8246",
+  },
+  {
+    "percentage": "0.9798",
+    "val": "97.9796",
+  },
+  {
+    "percentage": "0.9887",
+    "val": "98.8686",
+  },
+  {
+    "percentage": "0.9950",
+    "val": "99.4987",
+  },
+  {
+    "percentage": "0.9987",
+    "val": "99.8749",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutCubic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.1426",
+    "val": "14.2625",
+  },
+  {
+    "percentage": "0.2710",
+    "val": "27.1000",
+  },
+  {
+    "percentage": "0.3859",
+    "val": "38.5875",
+  },
+  {
+    "percentage": "0.4880",
+    "val": "48.8000",
+  },
+  {
+    "percentage": "0.5781",
+    "val": "57.8125",
+  },
+  {
+    "percentage": "0.6570",
+    "val": "65.7000",
+  },
+  {
+    "percentage": "0.7254",
+    "val": "72.5375",
+  },
+  {
+    "percentage": "0.7840",
+    "val": "78.4000",
+  },
+  {
+    "percentage": "0.8336",
+    "val": "83.3625",
+  },
+  {
+    "percentage": "0.8750",
+    "val": "87.5000",
+  },
+  {
+    "percentage": "0.9089",
+    "val": "90.8875",
+  },
+  {
+    "percentage": "0.9360",
+    "val": "93.6000",
+  },
+  {
+    "percentage": "0.9571",
+    "val": "95.7125",
+  },
+  {
+    "percentage": "0.9730",
+    "val": "97.3000",
+  },
+  {
+    "percentage": "0.9844",
+    "val": "98.4375",
+  },
+  {
+    "percentage": "0.9920",
+    "val": "99.2000",
+  },
+  {
+    "percentage": "0.9966",
+    "val": "99.6625",
+  },
+  {
+    "percentage": "0.9990",
+    "val": "99.9000",
+  },
+  {
+    "percentage": "0.9999",
+    "val": "99.9875",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutElastic 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.6464",
+    "val": "64.6447",
+  },
+  {
+    "percentage": "1.2500",
+    "val": "125.0000",
+  },
+  {
+    "percentage": "1.3536",
+    "val": "135.3553",
+  },
+  {
+    "percentage": "1.1250",
+    "val": "112.5000",
+  },
+  {
+    "percentage": "0.9116",
+    "val": "91.1612",
+  },
+  {
+    "percentage": "0.8750",
+    "val": "87.5000",
+  },
+  {
+    "percentage": "0.9558",
+    "val": "95.5806",
+  },
+  {
+    "percentage": "1.0313",
+    "val": "103.1250",
+  },
+  {
+    "percentage": "1.0442",
+    "val": "104.4194",
+  },
+  {
+    "percentage": "1.0156",
+    "val": "101.5625",
+  },
+  {
+    "percentage": "0.9890",
+    "val": "98.8951",
+  },
+  {
+    "percentage": "0.9844",
+    "val": "98.4375",
+  },
+  {
+    "percentage": "0.9945",
+    "val": "99.4476",
+  },
+  {
+    "percentage": "1.0039",
+    "val": "100.3906",
+  },
+  {
+    "percentage": "1.0055",
+    "val": "100.5524",
+  },
+  {
+    "percentage": "1.0020",
+    "val": "100.1953",
+  },
+  {
+    "percentage": "0.9986",
+    "val": "99.8619",
+  },
+  {
+    "percentage": "0.9980",
+    "val": "99.8047",
+  },
+  {
+    "percentage": "0.9993",
+    "val": "99.9309",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutExpo 1`] = `
+[
+  {
+    "percentage": "2.0000",
+    "val": "-200.0000",
+  },
+  {
+    "percentage": "1.7071",
+    "val": "-170.7107",
+  },
+  {
+    "percentage": "1.5000",
+    "val": "-150.0000",
+  },
+  {
+    "percentage": "1.3536",
+    "val": "-135.3553",
+  },
+  {
+    "percentage": "1.2500",
+    "val": "-125.0000",
+  },
+  {
+    "percentage": "1.1768",
+    "val": "-117.6777",
+  },
+  {
+    "percentage": "1.1250",
+    "val": "-112.5000",
+  },
+  {
+    "percentage": "1.0884",
+    "val": "-108.8388",
+  },
+  {
+    "percentage": "1.0625",
+    "val": "-106.2500",
+  },
+  {
+    "percentage": "1.0442",
+    "val": "-104.4194",
+  },
+  {
+    "percentage": "1.0313",
+    "val": "-103.1250",
+  },
+  {
+    "percentage": "1.0221",
+    "val": "-102.2097",
+  },
+  {
+    "percentage": "1.0156",
+    "val": "-101.5625",
+  },
+  {
+    "percentage": "1.0110",
+    "val": "-101.1049",
+  },
+  {
+    "percentage": "1.0078",
+    "val": "-100.7813",
+  },
+  {
+    "percentage": "1.0055",
+    "val": "-100.5524",
+  },
+  {
+    "percentage": "1.0039",
+    "val": "-100.3906",
+  },
+  {
+    "percentage": "1.0028",
+    "val": "-100.2762",
+  },
+  {
+    "percentage": "1.0020",
+    "val": "-100.1953",
+  },
+  {
+    "percentage": "1.0014",
+    "val": "-100.1381",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutQuad 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0975",
+    "val": "9.7500",
+  },
+  {
+    "percentage": "0.1900",
+    "val": "19.0000",
+  },
+  {
+    "percentage": "0.2775",
+    "val": "27.7500",
+  },
+  {
+    "percentage": "0.3600",
+    "val": "36.0000",
+  },
+  {
+    "percentage": "0.4375",
+    "val": "43.7500",
+  },
+  {
+    "percentage": "0.5100",
+    "val": "51.0000",
+  },
+  {
+    "percentage": "0.5775",
+    "val": "57.7500",
+  },
+  {
+    "percentage": "0.6400",
+    "val": "64.0000",
+  },
+  {
+    "percentage": "0.6975",
+    "val": "69.7500",
+  },
+  {
+    "percentage": "0.7500",
+    "val": "75.0000",
+  },
+  {
+    "percentage": "0.7975",
+    "val": "79.7500",
+  },
+  {
+    "percentage": "0.8400",
+    "val": "84.0000",
+  },
+  {
+    "percentage": "0.8775",
+    "val": "87.7500",
+  },
+  {
+    "percentage": "0.9100",
+    "val": "91.0000",
+  },
+  {
+    "percentage": "0.9375",
+    "val": "93.7500",
+  },
+  {
+    "percentage": "0.9600",
+    "val": "96.0000",
+  },
+  {
+    "percentage": "0.9775",
+    "val": "97.7500",
+  },
+  {
+    "percentage": "0.9900",
+    "val": "99.0000",
+  },
+  {
+    "percentage": "0.9975",
+    "val": "99.7500",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutQuart 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.1855",
+    "val": "18.5494",
+  },
+  {
+    "percentage": "0.3439",
+    "val": "34.3900",
+  },
+  {
+    "percentage": "0.4780",
+    "val": "47.7994",
+  },
+  {
+    "percentage": "0.5904",
+    "val": "59.0400",
+  },
+  {
+    "percentage": "0.6836",
+    "val": "68.3594",
+  },
+  {
+    "percentage": "0.7599",
+    "val": "75.9900",
+  },
+  {
+    "percentage": "0.8215",
+    "val": "82.1494",
+  },
+  {
+    "percentage": "0.8704",
+    "val": "87.0400",
+  },
+  {
+    "percentage": "0.9085",
+    "val": "90.8494",
+  },
+  {
+    "percentage": "0.9375",
+    "val": "93.7500",
+  },
+  {
+    "percentage": "0.9590",
+    "val": "95.8994",
+  },
+  {
+    "percentage": "0.9744",
+    "val": "97.4400",
+  },
+  {
+    "percentage": "0.9850",
+    "val": "98.4994",
+  },
+  {
+    "percentage": "0.9919",
+    "val": "99.1900",
+  },
+  {
+    "percentage": "0.9961",
+    "val": "99.6094",
+  },
+  {
+    "percentage": "0.9984",
+    "val": "99.8400",
+  },
+  {
+    "percentage": "0.9995",
+    "val": "99.9494",
+  },
+  {
+    "percentage": "0.9999",
+    "val": "99.9900",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "99.9994",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutQuint 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.2262",
+    "val": "22.6219",
+  },
+  {
+    "percentage": "0.4095",
+    "val": "40.9510",
+  },
+  {
+    "percentage": "0.5563",
+    "val": "55.6295",
+  },
+  {
+    "percentage": "0.6723",
+    "val": "67.2320",
+  },
+  {
+    "percentage": "0.7627",
+    "val": "76.2695",
+  },
+  {
+    "percentage": "0.8319",
+    "val": "83.1930",
+  },
+  {
+    "percentage": "0.8840",
+    "val": "88.3971",
+  },
+  {
+    "percentage": "0.9222",
+    "val": "92.2240",
+  },
+  {
+    "percentage": "0.9497",
+    "val": "94.9672",
+  },
+  {
+    "percentage": "0.9688",
+    "val": "96.8750",
+  },
+  {
+    "percentage": "0.9815",
+    "val": "98.1547",
+  },
+  {
+    "percentage": "0.9898",
+    "val": "98.9760",
+  },
+  {
+    "percentage": "0.9947",
+    "val": "99.4748",
+  },
+  {
+    "percentage": "0.9976",
+    "val": "99.7570",
+  },
+  {
+    "percentage": "0.9990",
+    "val": "99.9023",
+  },
+  {
+    "percentage": "0.9997",
+    "val": "99.9680",
+  },
+  {
+    "percentage": "0.9999",
+    "val": "99.9924",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "99.9990",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
+
+exports[`easing easeOutSine 1`] = `
+[
+  {
+    "percentage": "0.0000",
+    "val": "0.0000",
+  },
+  {
+    "percentage": "0.0785",
+    "val": "7.8459",
+  },
+  {
+    "percentage": "0.1564",
+    "val": "15.6434",
+  },
+  {
+    "percentage": "0.2334",
+    "val": "23.3445",
+  },
+  {
+    "percentage": "0.3090",
+    "val": "30.9017",
+  },
+  {
+    "percentage": "0.3827",
+    "val": "38.2683",
+  },
+  {
+    "percentage": "0.4540",
+    "val": "45.3990",
+  },
+  {
+    "percentage": "0.5225",
+    "val": "52.2499",
+  },
+  {
+    "percentage": "0.5878",
+    "val": "58.7785",
+  },
+  {
+    "percentage": "0.6494",
+    "val": "64.9448",
+  },
+  {
+    "percentage": "0.7071",
+    "val": "70.7107",
+  },
+  {
+    "percentage": "0.7604",
+    "val": "76.0406",
+  },
+  {
+    "percentage": "0.8090",
+    "val": "80.9017",
+  },
+  {
+    "percentage": "0.8526",
+    "val": "85.2640",
+  },
+  {
+    "percentage": "0.8910",
+    "val": "89.1007",
+  },
+  {
+    "percentage": "0.9239",
+    "val": "92.3880",
+  },
+  {
+    "percentage": "0.9511",
+    "val": "95.1057",
+  },
+  {
+    "percentage": "0.9724",
+    "val": "97.2370",
+  },
+  {
+    "percentage": "0.9877",
+    "val": "98.7688",
+  },
+  {
+    "percentage": "0.9969",
+    "val": "99.6917",
+  },
+  {
+    "percentage": "1.0000",
+    "val": "100.0000",
+  },
+]
+`;
diff --git a/src/util/animation/animations.spec.ts b/src/util/animation/animations.spec.ts
new file mode 100644
index 000000000..e8154ac62
--- /dev/null
+++ b/src/util/animation/animations.spec.ts
@@ -0,0 +1,486 @@
+import { runningAnimations } from './AnimationRegistry';
+import { animateColor, animate } from './animate';
+import * as ease from './easing';
+import { Color } from '../../color/Color';
+import { FabricObject } from '../../shapes/Object/FabricObject';
+import { ValueAnimation } from './ValueAnimation';
+import { Shadow } from '../../Shadow';
+
+jest.useFakeTimers();
+const findAnimationsByTarget = (target: any) =>
+  runningAnimations.filter(({ target: t }) => target === t);
+
+describe('animate', () => {
+  afterEach(() => {
+    // 'runningAnimations should be empty at the end of a test'
+    expect(runningAnimations.length).toBe(0);
+    runningAnimations.cancelAll();
+    jest.runAllTimers();
+  });
+  it('animateColor', async () => {
+    let expectRun = 0;
+    animateColor({
+      startValue: 'red',
+      endValue: 'blue',
+      duration: 16,
+      onComplete: function (val, changePerc, timePerc) {
+        // 'color is blue'
+        expect(val).toBe('rgba(0,0,255,1)');
+        // 'change percentage is 100%'
+        expect(changePerc).toBe(1);
+        // 'time percentage is 100%'
+        expect(timePerc).toBe(1);
+        expectRun += 1;
+      },
+      onChange: (val, complete) => {
+        if (complete !== 1) {
+          //  'color is not blue'
+          expectRun += 1;
+          expect(val).not.toBe('rgba(0,0,255,1)');
+        } else {
+          // 'color is blue'
+          expectRun += 1;
+          expect(val).toBe('rgba(0,0,255,1)');
+        }
+        // 'expected type is String'
+        expect(typeof val === 'string').toBe(true);
+      },
+    });
+    jest.advanceTimersByTime(32);
+    expect(expectRun).toEqual(3);
+  });
+  it('animateColor change percentage is calculated from a changed value', async () => {
+    const duration = 96;
+    const changePercSnap: number[] = [];
+    animateColor({
+      startValue: 'red',
+      endValue: 'blue',
+      duration,
+      onChange: function (val, changePerc) {
+        changePercSnap.push(changePerc);
+      },
+      onComplete: function (val, changePerc, timePerc) {
+        // 'color is blue'
+        expect(val).toBe('rgba(0,0,255,1)');
+        // 'change percentage is 100%'
+        expect(changePerc).toBe(1);
+        // 'time percentage is 100%'
+        expect(timePerc).toBe(1);
+      },
+    });
+    jest.advanceTimersByTime(duration + 16);
+    expect(changePercSnap).toMatchSnapshot();
+  });
+  it('animateColor with opacity', async () => {
+    const duration = 16;
+    animateColor({
+      startValue: 'rgba(255, 0, 0, 0.9)',
+      endValue: 'rgba(0, 0, 255, 0.7)',
+      duration: 16,
+      onComplete: function (val, changePerc, timePerc) {
+        // 'color is animated on all 4 values'
+        expect(val).toEqual('rgba(0,0,255,0.7)');
+      },
+    });
+    jest.advanceTimersByTime(duration + 16);
+  });
+  it('animateColor, opacity out of bounds value are ignored', async () => {
+    const duration = 16;
+    animateColor({
+      startValue: 'red',
+      endValue: [255, 255, 255, 3],
+      duration,
+      onChange: (val) => {
+        // 'alpha diff should be ignored'
+        expect(new Color(val).getAlpha()).toEqual(1);
+      },
+      onComplete: function (val) {
+        // 'color is normalized to max values';
+        expect(val).toEqual('rgba(255,255,255,1)');
+      },
+    });
+    jest.advanceTimersByTime(duration + 16);
+  });
+  it('animateColor opacity only', async () => {
+    let called = false;
+    const duration = 96;
+    animateColor({
+      startValue: 'rgba(255, 0, 0, 0.9)',
+      endValue: 'rgba(255, 0, 0, 0.7)',
+      duration: 96,
+      onChange: function (val, changePerc) {
+        const alpha = new Color(val).getAlpha();
+        // 'valueProgress should match'
+        expect(changePerc).toBe((0.9 - alpha) / (0.9 - 0.7));
+        called = true;
+      },
+      onComplete: function (val, changePerc, timePerc) {
+        // 'color is animated on all 4 values';
+        expect(val).toBe('rgba(255,0,0,0.7)');
+      },
+    });
+    jest.advanceTimersByTime(duration + 16);
+    expect(called).toBe(true);
+  });
+  it('endValue', async () => {
+    const duration = 16;
+    animate({
+      startValue: 2,
+      endValue: 5,
+      duration,
+      onComplete: function (val, changePerc, timePerc) {
+        //  'endValue is respected')
+        expect(val).toBe(5);
+        // , 'change percentage is 100%')
+        expect(changePerc).toBe(1);
+        // , 'time percentage is 100%'
+        expect(timePerc).toBe(1);
+      },
+    });
+    jest.advanceTimersByTime(duration + 16);
+  });
+  it('animation context', async () => {
+    const options = { foo: 'bar' };
+    const context = animate(options);
+    expect(context.state).toBe('pending');
+    expect(typeof context.abort === 'function').toBe(true);
+    expect(context.duration).toEqual(500);
+    expect(runningAnimations.length).toBe(1);
+    jest.advanceTimersByTime(32);
+    expect(context.state).toBe('running');
+    jest.advanceTimersByTime(1000);
+    expect(context.state).toBe('completed');
+    // 'animation should not exist in registry'
+    expect(runningAnimations.length).toBe(0);
+  });
+  it('runningAnimations', async () => {
+    expect(runningAnimations instanceof Array).toBe(true);
+    expect(typeof runningAnimations.cancelAll === 'function').toBe(true);
+    expect(typeof runningAnimations.cancelByTarget === 'function').toBe(true);
+    expect(typeof runningAnimations.cancelByCanvas === 'function').toBe(true);
+    expect(runningAnimations.length).toBe(0);
+    const target = { foo: 'bar' };
+    const context = animate({
+      target,
+    });
+    jest.advanceTimersByTime(32);
+    // 'should have registered animation'
+    expect(runningAnimations.length).toBe(1);
+    expect(context.state).toBe('running');
+    // 'animation should exist in registry'
+    expect(runningAnimations.indexOf(context)).toBe(0);
+    const byTarget = findAnimationsByTarget(target);
+    //  'should have found registered animation by target'
+    expect(byTarget.length).toBe(1);
+    //  'should have found registered animation by target'
+    expect(byTarget[0]).toEqual(context);
+    jest.advanceTimersByTime(1000);
+    expect(context.state).toBe('completed');
+    expect(runningAnimations.length).toBe(0);
+  });
+  it('runningAnimations with abort', async () => {
+    let abort = false;
+    const options = {
+      abort() {
+        return abort;
+      },
+    };
+    const context = animate(options);
+    jest.advanceTimersByTime(100);
+    expect(runningAnimations.length).toBe(1);
+    expect(runningAnimations.indexOf(context)).toBe(0);
+    expect(context.state).toBe('running');
+    abort = true;
+    jest.advanceTimersByTime(100);
+    expect(runningAnimations.length).toBe(0);
+    expect(runningAnimations.indexOf(context)).toBe(-1);
+    expect(context.state).toBe('aborted');
+  });
+  it('runningAnimations with imperative abort', async () => {
+    const options = { foo: 'bar' };
+    const context = animate(options);
+    expect(context.state).toBe('pending');
+    jest.advanceTimersByTime(32);
+    expect(context.state).toBe('running');
+    context.abort();
+    jest.advanceTimersByTime(32);
+    expect(context.state).toBe('aborted');
+  });
+  it('runningAnimations cancelAll', async () => {
+    const options = { foo: 'bar' };
+    animate(options);
+    animate(options);
+    animate(options);
+    animate(options);
+    expect(runningAnimations.length).toBe(4);
+    expect(typeof runningAnimations.cancelAll === 'function').toBe(true);
+    const cancelledAnimations = runningAnimations.cancelAll();
+    expect(cancelledAnimations.length).toBe(4);
+    expect(runningAnimations.length).toBe(0);
+    //  make sure splice didn't destroy instance
+    expect(runningAnimations instanceof Array).toBe(true);
+  });
+  it('runningAnimations cancelByCanvas', async () => {
+    const canvas = { pip: 'py' };
+    animate({ foo: 'bar', target: 'pip' });
+    animate({ foo: 'bar', target: { canvas: 'pip' } });
+    animate({ foo: 'bar' });
+    animate({ target: { canvas } });
+    // 'should have registered animations'
+    expect(runningAnimations.length).toBe(4);
+    let cancelledAnimations = runningAnimations.cancelByCanvas();
+    // 'should return empty array'
+    expect(cancelledAnimations.length).toBe(0);
+    // animations are still all there
+    expect(runningAnimations.length).toBe(4);
+    cancelledAnimations = runningAnimations.cancelByCanvas(canvas);
+    // 'should return cancelled animations'
+    expect(cancelledAnimations.length).toBe(1);
+    expect(cancelledAnimations[0].target.canvas).toBe(canvas);
+    // 'should have left registered animation'
+    expect(runningAnimations.length).toBe(3);
+    jest.advanceTimersByTime(1000);
+  });
+  it('runningAnimations cancelByTarget', async () => {
+    const options = { foo: 'bar', target: 'pip' },
+      opt2 = { bar: 'baz' };
+    animate(options);
+    animate(options);
+    animate(options);
+    const baz = animate(opt2);
+    expect(runningAnimations.length).toBe(4);
+    let cancelledAnimations = runningAnimations.cancelByTarget();
+    expect(cancelledAnimations.length).toBe(0);
+    expect(runningAnimations.length).toBe(4);
+    cancelledAnimations = runningAnimations.cancelByTarget('pip');
+    expect(cancelledAnimations.length).toBe(3);
+    expect(runningAnimations.length).toBe(1);
+    expect(runningAnimations[0]).toBe(baz);
+    jest.advanceTimersByTime(1000);
+  });
+  it('animate', async () => {
+    const object = new FabricObject({
+      left: 20,
+      top: 30,
+      width: 40,
+      height: 50,
+      angle: 43,
+    });
+    expect(typeof object.animate === 'function').toBe(true);
+    const context = object.animate({ left: 40 });
+    expect(Object.keys(context)).toEqual(['left']);
+    expect(context.left instanceof ValueAnimation).toBe(true);
+    expect(runningAnimations.length).toBe(1);
+    expect(runningAnimations[0].target).toBe(object);
+    jest.advanceTimersByTime(1000);
+    expect(Math.round(object.left)).toBe(40);
+  });
+  it('animate with increment and without options', async () => {
+    const object = new FabricObject({
+      left: 20,
+      top: 30,
+      width: 40,
+      height: 50,
+      angle: 43,
+    });
+    object.animate({ left: object.left + 40 });
+    jest.advanceTimersByTime(1000);
+    expect(Math.round(object.left)).toBe(60);
+  });
+  it('animate with keypath', async () => {
+    const object = new FabricObject({
+      left: 20,
+      top: 30,
+      width: 40,
+      height: 50,
+      angle: 43,
+      shadow: new Shadow({ offsetX: 20 }),
+    });
+    object.animate({ 'shadow.offsetX': 100 });
+    jest.advanceTimersByTime(1000);
+    expect(Math.round(object.shadow!.offsetX)).toBe(100);
+  });
+  it('animate with color', async () => {
+    const object = new FabricObject(),
+      properties = FabricObject.colorProperties;
+    properties.forEach((prop, index) => {
+      object.set(prop, 'red');
+      object.animate({ [prop]: 'blue' });
+      expect(runningAnimations.length).toBe(index + 1);
+      expect(findAnimationsByTarget(object).length).toBe(index + 1);
+    });
+    jest.advanceTimersByTime(1000);
+    properties.forEach((prop) => {
+      expect(object[prop]).toBe('rgba(0,0,255,1)');
+    });
+  });
+  it('animate with decrement', async () => {
+    const object = new FabricObject({
+      left: 20,
+      top: 30,
+      width: 40,
+      height: 50,
+      angle: 43,
+    });
+
+    object.animate({ left: object.left - 40 });
+    jest.advanceTimersByTime(1000);
+    expect(Math.round(object.left)).toBe(-20);
+  });
+  it('animate multiple properties', async () => {
+    const object = new FabricObject({ left: 123, top: 124 });
+    const context = object.animate({ left: 223, top: 224 });
+    expect(Object.keys(context)).toEqual(['left', 'top']);
+    expect(context.left instanceof ValueAnimation).toBe(true);
+    expect(context.top instanceof ValueAnimation).toBe(true);
+    jest.advanceTimersByTime(1000);
+    expect(Math.round(object.get('left'))).toBe(223);
+    expect(Math.round(object.get('top'))).toBe(224);
+  });
+  it('animate multiple properties with callback', async () => {
+    const object = new FabricObject({ left: 0, top: 0 });
+
+    let changedInvocations = 0;
+    let completeInvocations = 0;
+
+    object.animate(
+      { left: 1, top: 1 },
+      {
+        duration: 10,
+        onChange: function () {
+          changedInvocations++;
+        },
+        onComplete: function () {
+          completeInvocations++;
+        },
+      }
+    );
+    jest.advanceTimersByTime(32);
+    expect(Math.round(object.get('left'))).toBe(1);
+    expect(Math.round(object.get('top'))).toBe(1);
+    expect(changedInvocations).toBe(4);
+    expect(completeInvocations).toBe(2);
+  });
+  it('animate with list of values', async () => {
+    let run = 0;
+    const duration = 96;
+    animate({
+      startValue: [1, 2, 3],
+      endValue: [2, 4, 6],
+      duration,
+      onChange: (currentValue, valueProgress) => {
+        expect(runningAnimations.length).toBe(1);
+        expect(Array.isArray(currentValue)).toBe(true);
+        expect(Object.isFrozen(runningAnimations[0].value)).toBe(true);
+        expect(runningAnimations[0].value).toEqual(currentValue);
+        expect(currentValue.length).toBe(3);
+        expect(currentValue[0]).toBeLessThanOrEqual(2);
+        try {
+          currentValue[0] = 200;
+          // catch the frozen status
+          expect(true).toBe(false);
+        } catch (e) {
+          expect(e).toBeInstanceOf(Error);
+        }
+        run++;
+      },
+      onComplete: (endValue) => {
+        expect(Object.isFrozen(endValue)).toBe(true);
+        expect(endValue.length).toBe(3);
+        expect(endValue).toEqual([2, 4, 6]);
+      },
+    });
+    jest.advanceTimersByTime(duration + 20);
+    expect(run).toBeGreaterThanOrEqual(3);
+    jest.advanceTimersByTime(duration + 20);
+  });
+  it('abort function is calle with object as context', async () => {
+    const object = new FabricObject({ left: 123, top: 124 });
+    let context: any;
+    object.animate(
+      { left: 223, top: 224 },
+      {
+        abort: function () {
+          // eslint-disable-next-line @typescript-eslint/no-this-alias
+          context = this;
+          return true;
+        },
+      }
+    );
+    jest.advanceTimersByTime(100);
+    expect(Math.round(object.get('left'))).toBe(123);
+    expect(Math.round(object.get('top'))).toBe(124);
+    expect(context).toBe(object);
+    jest.advanceTimersByTime(500);
+  });
+  it('animate with imperative abort', async () => {
+    const object = new FabricObject({ left: 123, top: 124 });
+
+    let called = 0;
+    const context = object._animate('left', 223, {
+      abort: function () {
+        called++;
+        return false;
+      },
+    });
+
+    expect(typeof context.abort === 'function').toBe(true);
+    expect(context.state).toBe('pending');
+    context.abort();
+    expect(context.state).toBe('aborted');
+    jest.advanceTimersByTime(100);
+    expect(Math.round(object.get('left'))).toBe(123);
+    expect(called).toBe(0);
+  });
+  it('animate with delay', async () => {
+    const object = new FabricObject({ left: 123, top: 124 });
+    const delay = 500;
+    const offset = 20;
+    const duration = 200;
+    const context = object._animate('left', 223, {
+      delay,
+      duration,
+    });
+    expect(context.state).toBe('pending');
+    jest.advanceTimersByTime(delay - offset);
+    expect(context.state).toBe('pending');
+    jest.advanceTimersByTime(offset * 2);
+    expect(context.state).toBe('running');
+    jest.advanceTimersByTime(duration + offset);
+    expect(context.state).toBe('completed');
+  });
+});
+
+describe('easing', () => {
+  afterEach(() => {
+    jest.clearAllTimers();
+    jest.runAllTimers();
+  });
+  Object.entries(ease).map(([easingName, easingFunction]) => {
+    it(easingName, async () => {
+      const duration = 320;
+      const snapshot: any[] = [];
+      expect(typeof ease.easeInQuad === 'function').toBe(true);
+      const object = new FabricObject({ left: 0 });
+      object.animate(
+        { left: 100 },
+        {
+          onComplete: function () {
+            // 'animation ended correctly'
+            expect(Math.round(object.left)).toBe(100);
+          },
+          duration,
+          onChange: function (val, percentage) {
+            snapshot.push({
+              val: val.toFixed(4),
+              percentage: percentage.toFixed(4),
+            });
+          },
+          easing: easingFunction,
+        }
+      );
+      jest.advanceTimersByTime(duration + 16);
+      expect(snapshot).toMatchSnapshot();
+    });
+  });
+});


Test patch:
diff --git a/test/unit/animation.js b/test/unit/animation.js
deleted file mode 100644
index 46b1275bb..000000000
--- a/test/unit/animation.js
+++ /dev/null
@@ -1,926 +0,0 @@
-(function () {
-
-  const findAnimationsByTarget = target => fabric.runningAnimations.filter(({ target: t }) => target === t);
-
-  QUnit.module('animate', {
-    afterEach: function (assert) {
-      assert.equal(fabric.runningAnimations.length, 0, 'runningAnimations should be empty at the end of a test');
-      fabric.runningAnimations.cancelAll();
-    }
-  });
-
-  QUnit.test('animateColor', function(assert) {
-    var done = assert.async();
-    function testing(val, complete) {
-      if (complete !== 1) {
-        assert.notEqual(val, 'rgba(0,0,255,1)', 'color is not blue');
-      }
-      else {
-        assert.equal(val, 'rgba(0,0,255,1)', 'color is blue');
-      }
-      assert.ok(typeof val === 'string', 'expected type is String');
-    }
-    assert.ok(typeof fabric.util.animateColor === 'function', 'animateColor is a function');
-    fabric.util.animateColor({
-      startValue: 'red',
-      endValue: 'blue',
-      duration: 16,
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 'rgba(0,0,255,1)', 'color is blue');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        done();
-      },
-      onChange: testing,
-    });
-  });
-
-  QUnit.test('animateColor change percentage is calculated from a changed value', function (assert) {
-    const done = assert.async();
-    let called = false;
-    fabric.util.animateColor({
-      startValue: 'red',
-      endValue: 'blue',
-      duration: 96,
-      onChange: function (val, changePerc) {
-        called && assert.ok(changePerc !== 0, 'change percentage');
-        called = true;
-      },
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 'rgba(0,0,255,1)', 'color is blue');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        done();
-      }
-    });
-  });
-
-  QUnit.test('animateColor with opacity', function (assert) {
-    var done = assert.async();
-    fabric.util.animateColor({
-      startValue: 'rgba(255, 0, 0, 0.9)',
-      endValue: 'rgba(0, 0, 255, 0.7)',
-      duration: 16,
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 'rgba(0,0,255,0.7)', 'color is animated on all 4 values');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        done();
-      }
-    });
-  });
-
-  QUnit.test('animateColor, opacity out of bounds value are ignored', function (assert) {
-    var done = assert.async();
-    fabric.util.animateColor({
-      startValue: 'red',
-      endValue: [255, 255, 255, 3],
-      duration: 16,
-      onChange: val => {
-        assert.equal(new fabric.Color(val).getAlpha(), 1, 'alpha diff should be ignored')
-      },
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 'rgba(255,255,255,1)', 'color is normalized to max values');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        done();
-      }
-    });
-  });
-
-  QUnit.test('animateColor opacity only', function (assert) {
-    var done = assert.async();
-    let called = false;
-    fabric.util.animateColor({
-      startValue: 'rgba(255, 0, 0, 0.9)',
-      endValue: 'rgba(255, 0, 0, 0.7)',
-      duration: 96,
-      onChange: function (val, changePerc) {
-        const alpha = new fabric.Color(val).getAlpha();
-        assert.equal(changePerc, (0.9 - alpha) / (0.9 - 0.7), 'valueProgress should match');
-        called = true;
-      },
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 'rgba(255,0,0,0.7)', 'color is animated on all 4 values');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        assert.ok(called);
-        done();
-      }
-    });
-  });
-
-  QUnit.test('endValue', function (assert) {
-    var done = assert.async();
-    fabric.util.animate({
-      startValue: 2,
-      endValue: 5,
-      duration: 16,
-      onComplete: function (val, changePerc, timePerc) {
-        assert.equal(val, 5, 'endValue is respected');
-        assert.equal(changePerc, 1, 'change percentage is 100%');
-        assert.equal(timePerc, 1, 'time percentage is 100%');
-        done();
-      }
-    });
-  });
-
-  QUnit.test('animation context', function (assert) {
-    var done = assert.async();
-    var options = { foo: 'bar' };
-    const context = fabric.util.animate(options);
-    assert.equal(context.state, 'pending', 'state');
-    assert.ok(typeof context.abort === 'function', 'context');
-    assert.equal(context.duration, 500, 'defaults');
-    assert.propEqual(options, { foo: 'bar' }, 'options were mutated');
-    setTimeout(function () {
-      assert.equal(context.state, 'completed', 'state');
-      assert.equal(fabric.runningAnimations.length, 0, 'animation should not exist in registry');
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('fabric.runningAnimations', function (assert) {
-    var done = assert.async();
-    assert.ok(fabric.runningAnimations instanceof Array);
-    assert.ok(typeof fabric.runningAnimations.cancelAll === 'function');
-    assert.ok(typeof fabric.runningAnimations.cancelByTarget === 'function');
-    assert.ok(typeof fabric.runningAnimations.cancelByCanvas === 'function');
-    assert.equal(fabric.runningAnimations.length, 0, 'should have registered animation');
-    var context, target = { foo: 'bar' };
-    var options = {
-      target,
-      onChange() {
-        assert.equal(context.state, 'running', 'state');
-        assert.equal(fabric.runningAnimations.indexOf(context), 0, 'animation should exist in registry');
-      },
-      onComplete() {
-        setTimeout(() => {
-          assert.equal(context.state, 'completed', 'state');
-          assert.equal(fabric.runningAnimations.length, 0, 'should have unregistered animation');
-          done();
-        }, 0);
-      }
-    };
-    context = fabric.util.animate(options);
-    assert.equal(fabric.runningAnimations.length, 1, 'should have registered animation');
-    assert.equal(fabric.runningAnimations.indexOf(context), 0, 'animation should exist in registry');
-    var byTarget = findAnimationsByTarget(target);
-    assert.equal(byTarget.length, 1, 'should have found registered animation by target');
-    assert.deepEqual(byTarget[0], context, 'should have found registered animation by target');
-    delete byTarget[0].target;
-    assert.equal(findAnimationsByTarget(target), 0, 'should not have found registered animation by target');
-  });
-
-  QUnit.test('fabric.runningAnimations with abort', function (assert) {
-    var done = assert.async();
-    var _abort = false;
-    var options = {
-      onStart() {
-        setTimeout(() => {
-          _abort = true;
-        }, 100);
-      },
-      abort() {
-        if (_abort) {
-          setTimeout(() => {
-            assert.equal(fabric.runningAnimations.length, 0, 'should have unregistered animation');
-            done();
-          }, 0);
-        }
-        assert.equal(fabric.runningAnimations.indexOf(context), 0, 'animation should exist in registry');
-        return _abort;
-      }
-    };
-    var context = fabric.util.animate(options);
-    assert.equal(fabric.runningAnimations.length, 1, 'should have registered animation');
-    assert.equal(fabric.runningAnimations.indexOf(context), 0, 'animation should exist in registry');
-  });
-
-  QUnit.test('fabric.runningAnimations with imperative abort', function (assert) {
-    var options = { foo: 'bar' };
-    var context = fabric.util.animate(options);
-    assert.equal(context.state, 'pending', 'state');
-    assert.equal(fabric.runningAnimations.length, 1, 'should have registered animation');
-    assert.equal(fabric.runningAnimations.indexOf(context), 0, 'animation should exist in registry');
-    context.abort();
-    assert.equal(context.state, 'aborted', 'state');
-    assert.equal(fabric.runningAnimations.length, 0, 'should have unregistered animation');
-  });
-
-  QUnit.test('fabric.runningAnimations cancelAll', function (assert) {
-    var options = { foo: 'bar' };
-    fabric.util.animate(options);
-    fabric.util.animate(options);
-    fabric.util.animate(options);
-    fabric.util.animate(options);
-    assert.equal(fabric.runningAnimations.length, 4, 'should have registered animations');
-    var cancelledAnimations = fabric.runningAnimations.cancelAll();
-    assert.equal(cancelledAnimations.length, 4, 'should return cancelled animations');
-    assert.equal(fabric.runningAnimations.length, 0, 'should have registered animations');
-    //  make sure splice didn't destroy instance
-    assert.ok(fabric.runningAnimations instanceof Array);
-    assert.ok(typeof fabric.runningAnimations.cancelAll === 'function');
-  });
-
-  QUnit.test('fabric.runningAnimations cancelByCanvas', function (assert) {
-    var done = assert.async();
-    var canvas = { pip: 'py' };
-    fabric.util.animate({ foo: 'bar', target: 'pip' });
-    fabric.util.animate({ foo: 'bar', target: { canvas: 'pip' } });
-    fabric.util.animate({ foo: 'bar' });
-    fabric.util.animate({ target: { canvas } });
-    assert.equal(fabric.runningAnimations.length, 4, 'should have registered animations');
-    var cancelledAnimations = fabric.runningAnimations.cancelByCanvas();
-    assert.equal(cancelledAnimations.length, 0, 'should return empty array');
-    assert.equal(fabric.runningAnimations.length, 4, 'should have registered animations');
-    cancelledAnimations = fabric.runningAnimations.cancelByCanvas(canvas);
-    assert.equal(cancelledAnimations.length, 1, 'should return cancelled animations');
-    assert.equal(cancelledAnimations[0].target.canvas, canvas, 'should return cancelled animations by canvas');
-    assert.equal(fabric.runningAnimations.length, 3, 'should have left registered animation');
-    setTimeout(() => {
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('fabric.runningAnimations cancelByTarget', function (assert) {
-    var done = assert.async();
-    var options = { foo: 'bar', target: 'pip' }, opt2 = { bar: 'baz' };
-    fabric.util.animate(options);
-    fabric.util.animate(options);
-    fabric.util.animate(options);
-    const baz = fabric.util.animate(opt2);
-    assert.equal(fabric.runningAnimations.length, 4, 'should have registered animations');
-    var cancelledAnimations = fabric.runningAnimations.cancelByTarget();
-    assert.equal(cancelledAnimations.length, 0, 'should return empty array');
-    assert.equal(fabric.runningAnimations.length, 4, 'should have registered animations');
-    cancelledAnimations = fabric.runningAnimations.cancelByTarget('pip');
-    assert.equal(cancelledAnimations.length, 3, 'should return cancelled animations');
-    assert.equal(fabric.runningAnimations.length, 1, 'should have left 1 registered animation');
-    assert.strictEqual(fabric.runningAnimations[0], baz, 'should have left 1 registered animation');
-    setTimeout(() => {
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 20, top: 30, width: 40, height: 50, angle: 43 });
-
-    assert.ok(typeof object.animate === 'function');
-
-    const context = object.animate({ left: 40 });
-    assert.deepEqual(Object.keys(context), ['left'], 'should return a map of animation classes');
-    assert.equal(context.left.constructor.name, 'ValueAnimation', 'should be instance of ValueAnimation');
-    assert.equal(fabric.runningAnimations.length, 1, 'should have 1 registered animation');
-    assert.equal(fabric.runningAnimations[0].target, object, 'animation.target should be set');
-
-    setTimeout(function() {
-
-      assert.equal(40, Math.round(object.left), 'left has been animated to 40');
-      done();
-
-    }, 1000);
-  });
-
-  QUnit.test('animate with increment', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 20, top: 30, width: 40, height: 50, angle: 43 });
-
-    object.animate({ left: object.left + 40 });
-    assert.ok(true, 'animate without options does not crash');
-
-    setTimeout(function() {
-
-      assert.equal(Math.round(object.left), 60, 'left has been increased by 40');
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate with keypath', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 20, top: 30, width: 40, height: 50, angle: 43, shadow: { offsetX: 20 } });
-
-    object.animate({ 'shadow.offsetX': 100 });
-    assert.ok(true, 'animate without options does not crash');
-
-    setTimeout(function() {
-      assert.equal(Math.round(object.shadow.offsetX), 100, 'property has been animated');
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate with color', function(assert) {
-    var done = assert.async(),
-        object = new fabric.Object(),
-        properties = fabric.Object.colorProperties;
-
-    properties.forEach(function (prop, index) {
-      object.set(prop, 'red');
-      object.animate({ [prop]: 'blue' });
-      assert.ok(true, 'animate without options does not crash');
-      assert.equal(fabric.runningAnimations.length, index + 1, 'should have 1 registered animation');
-      assert.equal(findAnimationsByTarget(object).length, index + 1, 'animation.target should be set');
-
-      setTimeout(function () {
-        assert.equal(object[prop], new fabric.Color('blue').toRgba(), 'property [' + prop + '] has been animated');
-      }, 1000);
-    });
-
-    setTimeout(function () {
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate with decrement', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 20, top: 30, width: 40, height: 50, angle: 43 });
-
-    object.animate({ left: object.left - 40 });
-    assert.ok(true, 'animate without options does not crash');
-
-    setTimeout(function() {
-
-      assert.equal(Math.round(object.left), -20, 'left has been decreased by 40');
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate multiple properties', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 123, top: 124 });
-    const context = object.animate({ left: 223, top: 224 });
-    assert.deepEqual(Object.keys(context), ['left', 'top'], 'should return a map of animation classes');
-    assert.equal(context.left.constructor.name, 'ValueAnimation', 'should be instance of ValueAnimation');
-    assert.equal(context.top.constructor.name, 'ValueAnimation', 'should be instance of ValueAnimation');
-    setTimeout(function() {
-      assert.equal(223, Math.round(object.get('left')));
-      assert.equal(224, Math.round(object.get('top')));
-      done();
-    }, 1000);
-  });
-
-  QUnit.test('animate multiple properties with callback', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 0, top: 0 });
-
-    var changedInvocations = 0;
-    var completeInvocations = 0;
-
-    object.animate({ left: 1, top: 1 }, {
-      duration: 1,
-      onChange: function() {
-        changedInvocations++;
-      },
-      onComplete: function() {
-        completeInvocations++;
-      }
-    });
-
-    setTimeout(function() {
-
-      assert.equal(Math.round(object.get('left')), 1);
-      assert.equal(Math.round(object.get('top')), 1);
-
-      assert.ok(changedInvocations > 0);
-      assert.equal(completeInvocations, 2, 'the callbacks get call for each animation');
-
-      done();
-
-    }, 1000);
-  });
-
-  QUnit.test('animate with list of values', function(assert) {
-    var done = assert.async();
-    var run = false;
-
-    fabric.util.animate({
-      startValue: [1, 2, 3],
-      endValue: [2, 4, 6],
-      duration: 96,
-      onChange: function(currentValue, valueProgress) {
-        assert.equal(fabric.runningAnimations.length, 1, 'runningAnimations should not be empty');
-        assert.ok(Array.isArray(currentValue), 'should be array');
-        assert.ok(Object.isFrozen(fabric.runningAnimations[0].value), 'should be frozen');
-        assert.deepEqual(fabric.runningAnimations[0].value, currentValue);
-        assert.equal(currentValue.length, 3);
-        currentValue.forEach(function(v) {
-          assert.ok(v > 0, 'confirm values are not invalid numbers');
-        })
-        assert.equal(valueProgress, currentValue[0] - 1, 'should match');
-        // Make sure mutations are not kept
-        assert.ok(currentValue[0] <= 2, 'mutating callback values must not persist');
-        currentValue[0] = 200;
-        run = true;
-      },
-      onComplete: function (endValue) {
-        assert.ok(Object.isFrozen(endValue), 'should be frozen');
-        assert.equal(endValue.length, 3);
-        assert.deepEqual(endValue, [2, 4, 6]);
-        assert.equal(run, true, 'something run');
-        done();
-      }
-    })
-  });
-
-  QUnit.test('animate with abort', function(assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 123, top: 124 });
-
-    var context;
-    object.animate({ left: 223, top: 224 }, {
-      abort: function() {
-        context = this;
-        return true;
-      }
-    });
-
-    setTimeout(function() {
-      assert.equal(123, Math.round(object.get('left')));
-      assert.equal(124, Math.round(object.get('top')));
-      assert.equal(context, object, 'abort should be called in context of an object');
-      done();
-    }, 100);
-  });
-
-  QUnit.test('animate with imperative abort', function (assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 123, top: 124 });
-
-    let called = 0;
-    const context = object._animate('left', 223, {
-      abort: function () {
-        called++;
-        return false;
-      }
-    });
-
-    assert.ok(typeof context.abort === 'function');
-    assert.equal(context.state, 'pending', 'state');
-    context.abort();
-    assert.equal(context.state, 'aborted', 'state');
-
-    setTimeout(function () {
-      assert.equal(Math.round(object.get('left')), 123);
-      assert.equal(called, 0, 'declarative abort should be called once before imperative abort cancels the run');
-      done();
-    }, 100);
-  });
-
-  QUnit.test('animate with delay', function (assert) {
-    var done = assert.async();
-    var object = new fabric.Object({ left: 123, top: 124 });
-    var t = new Date();
-    const context = object._animate('left', 223, {
-      onStart: function () {
-        assert.equal(context.state, 'running', 'state');
-        assert.gte(new Date() - t, 500, 'animation delay');
-        return false;
-      },
-      onComplete: done,
-      delay: 500
-    });
-    assert.equal(context.state, 'pending', 'state');
-  });
-
-  QUnit.test('animate easing easeInQuad', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInQuad === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInQuad
-    });
-  });
-
-  QUnit.test('animate easing easeOutQuad', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutQuad === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutQuad
-    });
-  });
-
-  QUnit.test('animate easing easeInOutQuad', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutQuad === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutQuad
-    });
-  });
-
-  QUnit.test('animate easing easeInCubic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInCubic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInCubic
-    });
-  });
-
-  QUnit.test('animate easing easeOutCubic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutCubic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutCubic
-    });
-  });
-
-  QUnit.test('animate easing easeInOutCubic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutCubic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutCubic
-    });
-  });
-
-  QUnit.test('animate easing easeInQuart', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInQuart === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInQuart
-    });
-  });
-
-  QUnit.test('animate easing easeOutQuart', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutQuart === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutQuart
-    });
-  });
-
-  QUnit.test('animate easing easeInOutQuart', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutQuart === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutQuart
-    });
-  });
-
-  QUnit.test('animate easing easeInQuint', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInQuint === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInQuint
-    });
-  });
-
-  QUnit.test('animate easing easeOutQuint', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutQuint === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutQuint
-    });
-  });
-
-
-  // easeInOutQuint: easeInOutQuint,
-  QUnit.test('animate easing easeInOutQuint', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutQuint === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutQuint
-    });
-  });
-
-  // easeInSine: easeInSine,
-  QUnit.test('animate easing easeInSine', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInSine === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInSine
-    });
-  });
-
-  // easeOutSine: easeOutSine,
-  QUnit.test('animate easing easeOutSine', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutSine === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutSine
-    });
-  });
-
-  // easeInOutSine: easeInOutSine,
-  QUnit.test('animate easing easeInOutSine', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutSine === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutSine
-    });
-  });
-
-  // easeInExpo: easeInExpo,
-  QUnit.test('animate easing easeInExpo', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInExpo === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInExpo
-    });
-  });
-
-  // easeOutExpo: easeOutExpo,
-  QUnit.test('animate easing easeOutExpo', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutExpo === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutExpo
-    });
-  });
-
-  // easeInOutExpo: easeInOutExpo,
-  QUnit.test('animate easing easeInOutExpo', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutExpo === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutExpo
-    });
-  });
-
-  // easeInCirc: easeInCirc,
-  QUnit.test('animate easing easeInCirc', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInCirc === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInCirc
-    });
-  });
-
-  // easeOutCirc: easeOutCirc,
-  QUnit.test('animate easing easeOutCirc', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutCirc === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutCirc
-    });
-  });
-
-  // easeInOutCirc: easeInOutCirc,
-  QUnit.test('animate easing easeInOutCirc', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutCirc === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutCirc
-    });
-  });
-
-  // easeInElastic: easeInElastic,
-  QUnit.test('animate easing easeInElastic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInElastic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInElastic
-    });
-  });
-
-  // easeOutElastic: easeOutElastic,
-  QUnit.test('animate easing easeOutElastic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutElastic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutElastic
-    });
-  });
-
-  // easeInOutElastic: easeInOutElastic,
-  QUnit.test('animate easing easeInOutElastic', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutElastic === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutElastic
-    });
-  });
-
-  // easeInBack: easeInBack,
-  QUnit.test('animate easing easeInBack', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInBack === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInBack
-    });
-  });
-
-  // easeOutBack: easeOutBack,
-  QUnit.test('animate easing easeOutBack', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutBack === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutBack
-    });
-  });
-
-  // easeInOutBack: easeInOutBack,
-  QUnit.test('animate easing easeInOutBack', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutBack === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutBack
-    });
-  });
-
-  // easeInBounce: easeInBounce,
-  QUnit.test('animate easing easeInBounce', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInBounce === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInBounce
-    });
-  });
-
-  // easeOutBounce: easeOutBounce,
-  QUnit.test('animate easing easeOutBounce', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeOutBounce === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeOutBounce
-    });
-  });
-
-  // easeInOutBounce: easeInOutBounce
-  QUnit.test('animate easing easeInOutBounce', function(assert) {
-    var done = assert.async();
-    assert.ok(typeof fabric.util.ease.easeInOutBounce === 'function');
-    var object = new fabric.Object({ left: 0 });
-    object.animate({ left: 100 }, {
-      onComplete: function() {
-        assert.equal(Math.round(object.left), 100, 'animation ended correctly');
-        done();
-      },
-      duration: 160,
-      easing: fabric.util.ease.easeInOutBounce
-    });
-  });
-
-})();