1var _____WB$wombat$assign$function_____=function(name){return (globalThis._wb_wombat && globalThis._wb_wombat.local_init && globalThis._wb_wombat.local_init(name))||globalThis[name];};if(!globalThis.__WB_pmw){globalThis.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{ 2let window = _____WB$wombat$assign$function_____("window"); 3let self = _____WB$wombat$assign$function_____("self"); 4let document = _____WB$wombat$assign$function_____("document"); 5let location = _____WB$wombat$assign$function_____("location"); 6let top = _____WB$wombat$assign$function_____("top"); 7let parent = _____WB$wombat$assign$function_____("parent"); 8let frames = _____WB$wombat$assign$function_____("frames"); 9let opener = _____WB$wombat$assign$function_____("opener"); 10"use strict";(self.webpackChunk_motion_canvas_docs=self.webpackChunk_motion_canvas_docs||[]).push([[9535],{876:(t,a,e)=>{e.d(a,{Zo:()=>l,kt:()=>f});var n=e(2784);function o(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function i(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,n)}return e}function r(t){for(var a=1;a<arguments.length;a++){var e=null!=arguments[a]?arguments[a]:{};a%2?i(Object(e),!0).forEach((function(a){o(t,a,e[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):i(Object(e)).forEac
10h((function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a))}))}return t}function s(t,a){if(null==t)return{};var e,n,o=function(t,a){if(null==t)return{};var e,n,o={},i=Object.keys(t);for(n=0;n<i.length;n++)e=i[n],a.indexOf(e)>=0||(o[e]=t[e]);return o}(t,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],a.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var c=n.createContext({}),m=function(t){var a=n.useContext(c),e=a;return t&&(e="function"==typeof t?t(a):r(r({},a),t)),e},l=function(t){var a=m(t.components);return n.createElement(c.Provider,{value:a},t.children)},p="mdxType",u={inlineCode:"code",wrapper:function(t){var a=t.children;return n.createElement(n.Fragment,{},a)}},h=n.forwardRef((function(t,a){var e=t.components,o=t.mdxType,i=t.originalType,c=t.parentName,l=s(t,["components","mdxType","originalType","parentName"]),p=m(e),h=o,f=p["".concat(c,".").concat(h)]||p[h]||u[h]||i;return e?n.createElement(f,r(r({ref:a},l),{},{components:e})):n.createElement(f,r({ref:a},l))}));function f(t,a){var e=arguments,o=a&&a.mdxType;if("string"==typeof t||o){var i=e.length,r=new Array(i);r[0]=h;var s={};for(var c in a)hasOwnProperty.call(a,c)&&(s[c]=a[c]);s.originalType=t,s[p]="string"==typeof t?t:o,r[1]=s;for(var m=2;m<i;m++)r[m]=e[m];return n.createElement.apply(null,r)}return n.createElement.apply(null,e)}h.displayName="MDXCreateElement"},7978:(t,a,e)=>{e.r(a),e.d(a,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>m});var n=e(7896),o=(e(2784),e(876));const i={slug:"version-2.4.0",title:"Motion Canvas v2.4.0",authors:"aarthificial"},r=void 0,s={permalink:"/blog/version-2.4.0",editUrl:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/blob/main/packages/docs/blog/2023-02-18-version-2.4.0.mdx",source:"@site/blog/2023-02-18-version-2.4.0.mdx",title:"Motion Canvas v2.4.0",description:"Features",date:"2023-02-18T00:00:00.000Z",formattedDate:"February 18, 2023",tags:[],readingTime:.945,hasTruncateMarker:!1,authors:[{name:"Jacob",title:"Motion Canvas Creator",url:"http://web.archive.org/web/20230222201817/https://twitter.com/aarthificial",imageURL:"http://web.archive.org/web/20230222201817/https://github.com/aarthificial.png",key:"aarthificial"}],frontMatter:{slug:"version-2.4.0",title:"Motion Canvas v2.4.0",authors:"aarthificial"},prevItem:{title:"Motion Canvas v2.5.0",permalink:"/blog/version-2.5.0"},nextItem:{title:"Motion Canvas v2.3.0",permalink:"/blog/version-2.3.0"}},c={authorsImageUrls:[void 0]},m=[{value:"Features",id:"features",level:3},{value:"Bug Fixes",id:"bug-fixes",level:3}],l={toc:m};function p(t){let{components:a,...e}=t;return(0,o.kt)("wrapper",(0,n.Z)({},l,e,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h3",{id:"features"},"Features"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/signals#default-values"},(0,o.kt)("inlineCode",{parentName:"a"},"DEFAULT"))," signal values. ",(0,o.kt)("inlineCode",{parentName:"li"},"lineHeight")," now\nsupports percentages.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/259"},"#259"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/18f61a668420dec8afba52d52a6557e7a7919ba2"},"18f61a6"),")"),(0,o.kt)("li",{parentName:"ul"},"New ",(0,o.kt)("a",{parentName:"li",href:"/api/2d/components/Node#moveBelow"},(0,o.kt)("inlineCode",{parentName:"a"},"moveBelow")),",\n",(0,o.kt)("a",{parentName:"li",href:"/api/2d/components/Node#moveAbove"},(0,o.kt)("inlineCode",{parentName:"a"},"moveAbove"))," and\n",(0,o.kt)("a",{parentName:"li",href:"/api/2d/components/Node#moveTo"},(0,o.kt)("inlineCode",{parentName:"a"},"moveTo"))," methods for rearranging the nodes.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/365"},"#365"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/16752a3b8ae74
1061b33d6208a9675729f374e8324"},"16752a3"),")"),(0,o.kt)("li",{parentName:"ul"},"New ",(0,o.kt)("a",{parentName:"li",href:"/docs/code-block"},(0,o.kt)("inlineCode",{parentName:"a"},"CodeBlock"))," documentation\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/302"},"#302"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/73f7221536e09d5cf77f75ca173d1a7637d5b98f"},"73f7221"),")"),(0,o.kt)("li",{parentName:"ul"},"The editor now warns about duplicated time events.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/341"},"#341"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/053b2a6c22c4e726e3962fdaf0a2e8d149889a9b"},"053b2a6"),")"),(0,o.kt)("li",{parentName:"ul"},"We now have a search bar on the documentation website.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/335"},"#335"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/48f74a60d54cc52c7f069a9ec39071c99163bd19"},"48f74a6"),")"),(0,o.kt)("li",{parentName:"ul"},"You can now open the documentation from within the editor.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/346"},"#346"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/fc4ee5d028312904ed9e11c5341ac00f36e7242b"},"fc4ee5d"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SHIFT + ->")," moves to the last frame.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/354"},"#354"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/4b8170971400c5bf4fe690a58d3f44c3e1d00b94"},"4b81709"),"),\ncloses ",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/353"},"#353")),(0,o.kt)("li",{parentName:"ul"},"Flexbox ",(0,o.kt)("inlineCode",{parentName:"li"},"gap")," is now represented by a ",(0,o.kt)("inlineCode",{parentName:"li"},"Vector2")," signal.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/355"},"#355"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/3cae97ea704d0533020fa87326dacadcc037d517"},"3cae97e"),"),\ncloses ",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/352"},"#352")),(0,o.kt)("li",{parentName:"ul"},"New ",(0,o.kt)("a",{parentName:"li",href:"/api/core/types/Matrix2D"},(0,o.kt)("inlineCode",{parentName:"a"},"Matrix2D"))," type.\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/340"},"#340"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/66b41e6beaca5c2ba4b6bd1a7e68ca16d183b0e9"},"66b41e6"),")")),(0,o.kt)("h3",{id:"bug-fixes"},"Bug Fixes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"2d:")," fix Gradient and Pattern signals\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/376"},"#376"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/6e0dc8af8d19f93fd6a42addca2b3a2958b4dd33"},"6e0dc8a"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"2d:")," fix layout calculation for nodes not explicitly added to view\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/331"},"#331"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/528e2d5a0abec99819e022d2848b256ece9f869a"},"528e2d5"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"}
10,"2d:")," format whitespaces according to HTML\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/372"},"#372"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/83fb565742d98f060c0400c8cbaf9961b69f34d0"},"83fb565"),"),\ncloses ",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/370"},"#370")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"core:")," playback speed is reset after saving with faulty code\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/204"},"#204"),").\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/339"},"#339"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/6771e5e17edcdc4cce074d7da0962cf71ba6c228"},"6771e5e"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"docs:")," fix search\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/336"},"#336"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/e44ec02539a67f099471a6aa84f673a236494687"},"e44ec02"),")"),(0,o.kt)("li",{parentName:"ul"},"typo on codeblock remove comments\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/368"},"#368"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/2025adc6e7aa11d81b6f5f6989e8eae18cf86cb7"},"2025adc"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"ui:")," fix inspector tab\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/374"},"#374"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/c4cb378c2f9d972bb41542bbe3b3aa314fa1f3ad"},"c4cb378"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"vite-plugin:")," fix js template\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/337"},"#337"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/3b33d73416541d491b633bada29f085f5489f6c2"},"3b33d73"),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"vite-plugin:")," ignore query param in devserver\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/issues/351"},"#351"),")\n(",(0,o.kt)("a",{parentName:"li",href:"http://web.archive.org/web/20230222201817/https://github.com/motion-canvas/motion-canvas/commit/5644d72d36adcdc817f0856aaff0be5507338cb8"},"5644d72"),")")))}p.isMDXComponent=!0}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.