tree structure: granular updates and retain open state - SolidJS