Commit Graph

205 Commits

Author SHA1 Message Date
Steve Sanderson e37e22aa27 Further renderer refactoring 2018-02-10 10:55:44 +00:00
Steve Sanderson 5a9c41af0e Make AngleSharp not strong-named. Change assembly name to Microsoft.AspNetCore.Blazor.AngleSharp to ensure no conflicts with other usages. 2018-02-09 17:37:21 +00:00
Steve Sanderson 15ddcd03b0 Major refactor of responsibilities in rendering code. Not quite done
with this yet either.
2018-02-09 14:50:07 +00:00
Steve Sanderson 91314ee8c8 Rename RenderTreeDiffComputer -> RenderTreeDiffBuilder 2018-02-08 15:50:14 +00:00
Steve Sanderson b8ed7bc2c5 Track event handlers via explicit IDs rather than by index into frames
array
2018-02-08 15:31:45 +00:00
Steve Sanderson 83fa72bc7e Have RenderTreeDiff build its own array of referenced frames rather than pointing to the latest render tree
This is in preparation for supporting multiple diffs for the same
component in a single batch (which means we can't rely on there being at
most only new render tree per component)
2018-02-07 10:27:32 +00:00
Steve Sanderson 33932f41fc Replace "DescendantsEndIndex" concept with "SubtreeLength"
In other words, use relative addressing so that frame data is
independent of its position in the array
2018-02-07 10:27:32 +00:00
Steve Sanderson 93f17219ea Rename OpenComponentElement -> OpenComponent for consistency 2018-02-05 00:19:44 +00:00
Steve Sanderson 1fda744770 Make RenderTreeFrame properly readonly to allow more pass-by-ref cases 2018-02-05 00:16:08 +00:00
Steve Sanderson f1332919bc Rename RenderTreeNode -> RenderTreeFrame (and correspondingly, "node" ->
"frame" everywhere)
2018-02-04 22:21:29 +00:00
Steve Sanderson 76dafa819f Mechanism for components running logic when parents change their properties 2018-01-31 16:19:01 +00:00
Steve Sanderson 1c9c74c801 In RazorCompiler, fix bug about attribute nodes having wrong sequence
numbers. Make tests explicit about sequence numbers.
2018-01-31 10:23:56 +00:00
Steve Sanderson 50a5baa872 Dispose components on removal 2018-01-30 10:00:30 +00:00
Steve Sanderson 55592f583b Update RendererTests to be more explicit about batch expectations 2018-01-29 20:28:38 +00:00
Steve Sanderson 080e6395cb Move to batched rendering 2018-01-29 20:16:42 +00:00
Steve Sanderson 27d0ce4da9 Begin differentiating between rendering as a new batch on in an existing batch (even though batches don't exist yet) 2018-01-29 16:47:52 +00:00
Steve Sanderson 7799c36d50 Add E2E test to show adding and removing child components dynamically 2018-01-29 12:56:42 +00:00
Steve Sanderson 772e3a1a44 Clean up E2E tests now elements are retained via diffing 2018-01-29 12:56:41 +00:00
Steve Sanderson 4f496f649a Add E2E test showing we can pass properties to child components and auto re-render them on change 2018-01-29 12:56:40 +00:00
Steve Sanderson 882096755b Rerender child components when their parameters change 2018-01-26 14:25:26 -08:00
Steve Sanderson 94ad26a479 Update properties on retained child components 2018-01-26 11:58:43 -08:00
Steve Sanderson 9f7dab3096 Better error handling when setting properties on child components 2018-01-26 10:10:06 -08:00
Steve Sanderson 3940ca8b60 For components, allow attribute values to be arbitrary objects 2018-01-26 09:54:35 -08:00
Steve Sanderson 1b4fa4781a Give attribute nodes a single object-valued value so they can be used for component properties too. 2018-01-26 09:40:48 -08:00
Steve Sanderson 9dcb1c4fc4 Begin on setting properties on child components 2018-01-26 08:47:53 -08:00
Steve Sanderson 0aa164073d Rename Microsoft.Blazor.* -> Microsoft.AspNetCore.Blazor.* everywhere 2018-01-24 15:48:38 -08:00
Steve Sanderson 9e90ff3689 Rename AddComponentElement->OpenComponentElement for clarity (you have to close it too) 2018-01-24 15:26:27 -08:00
Steve Sanderson 2469558410 Preserve child component instances across renders. Move instantiation into the diffing phase. 2018-01-24 14:29:46 -08:00
Steve Sanderson 23c2816bcd Change ParentChildComponent test to use Razor. Add E2E tests showing events on child components work. 2018-01-24 11:04:30 -08:00
Steve Sanderson 2107a1927f In RazorCompiler, support temporary <c:MyComponent /> syntax 2018-01-24 10:43:23 -08:00
Steve Sanderson 6e4d0dbca4 Move common resizable-array logic into shared ArrayBuilder. Replace ArraySegment with ArrayRange since Offset is never used. 2018-01-23 23:30:48 -08:00
Steve Sanderson b049c7f574 Fix diffing for consecutive text nodes 2018-01-23 09:43:14 -08:00
Steve Sanderson df321b9b8d Make RenderTreeEdit specify which sibling node it acts on, so we can eliminate the Continue concept and no longer track indices on JS side 2018-01-22 20:17:32 -08:00
Steve Sanderson 5435582c0e Update rendering APIs to supply the diff as well as the final state 2018-01-22 08:54:03 -08:00
Steve Sanderson bea15241f2 Various renames of diff-related types, plus XML docs for newly-public types. 2018-01-22 08:31:07 -08:00
Steve Sanderson 7c30d51be9 In tree diffs, omit trailing Continue entries and skip over unmodified subtrees 2018-01-22 01:55:10 +00:00
Steve Sanderson b021e19598 In diffing, support elements with descendants 2018-01-21 21:30:01 +00:00
Steve Sanderson 0a5e27fdcf Support diffing attributes. This required tracking 'sequence' values on attributes too. 2018-01-21 20:57:11 +00:00
Steve Sanderson 7a1abbaca3 In tree diffing, better handle scenario where both old and new sequences loop back but to different locations 2018-01-21 19:37:34 +00:00
Steve Sanderson 6b37494e7c Begin on RenderTree diffing. Doesn't yet recurse into elements to handle attributes/children. 2018-01-21 18:53:09 +00:00
Steve Sanderson a0b354e0eb Add concept of 'sequence' to RenderTreeNode. This is in preparation for diffing. 2018-01-21 11:51:26 +00:00
Steve Sanderson 374d19c1a4 Move child component instantiation into a post-render phase to bring it closer to how it will work with rendertree diffing
This is also needed to make it possible to have a helper to insert
Component nodes from Razor without doing anything messy to pass the
RenderTreeBuilder into that heper.
2018-01-18 00:29:00 +00:00
Steve Sanderson d1f96153d3 Implement basics of @onclick()-type shorthand syntax 2018-01-16 18:01:06 +00:00
Steve Sanderson 946e25462e In RazorCompiler, support @using statements 2018-01-16 17:17:22 +00:00
Steve Sanderson 7cd5228b7f In RazorCompiler, support attributes whose values are C# code blocks (treated as event handlers) 2018-01-16 16:58:47 +00:00
Steve Sanderson 5949045319 In RazorCompiler, support expressions with non-string or null values 2018-01-16 16:30:29 +00:00
Steve Sanderson 8c2a32b87c Remove a .csproj.user file that shouldn't be tracked in source control 2018-01-16 16:16:48 +00:00
Steve Sanderson 7bbb2b6660 In RazorCompiler, support attribute values of type UIEventHandler 2018-01-16 16:15:46 +00:00
Steve Sanderson 3a7b6b2178 In Razor compiler, support attributes with interpolated expressions 2018-01-16 15:24:34 +00:00
Steve Sanderson b690aeee28 In RazorCompiler, support attributes with C# expression values 2018-01-16 13:15:13 +00:00
Steve Sanderson 5aa6ccaff7 Convert TextOnlyComponent to Razor format 2018-01-16 12:36:10 +00:00
Steve Sanderson 80b371c647 In RazorCompiler, support string-valued attributes 2018-01-16 12:23:12 +00:00
Steve Sanderson 1c1fd69bf2 In RazorCompiler, support self-closing and void elements 2018-01-16 11:50:40 +00:00
Steve Sanderson a64ece0319 In RazorCompiler, support HTML elements 2018-01-16 11:36:55 +00:00
Steve Sanderson 75b083911c Add AngleSharp with temporary InternalsVisibleTo 2018-01-16 11:11:49 +00:00
Steve Sanderson 604aa14518 Use Razor component in StandaloneApp sample 2018-01-15 23:11:54 +00:00
Steve Sanderson 7e40427ffe Razor compilation: Support text literals and C# code 2018-01-15 23:11:48 +00:00
Steve Sanderson 3ccdc1d16f Begin integrating with real Razor compiler 2018-01-14 16:37:01 +00:00
Steve Sanderson a32b857d96 When compiling Razor files, generate namespace based on directory path 2018-01-14 14:35:13 +00:00
Steve Sanderson 654c16fb44 Begin unit tests for RazorCompiler 2018-01-12 15:08:10 +00:00
Steve Sanderson f8cbed2326 Update unit tests to reflect updated Mono BCL. Much of this will disappear once we start optimizing the BCL. 2018-01-12 14:16:41 +00:00
Steve Sanderson 34d3eb5b72 Unit tests for Renderer 2018-01-09 17:21:50 +00:00
Steve Sanderson 07e31c6318 Unit tests relating to Renderer GC behavior 2018-01-09 15:08:27 +00:00
Steve Sanderson 04f9c476a8 Update StandaloneApp to render a component. Remove some redundant code. 2018-01-09 13:45:15 +00:00
Steve Sanderson 6585667ce6 Refactor most of the rendering logic into Microsoft.Blazor, keeping only browser-specific parts in Microsoft.Blazor.Browser 2018-01-09 13:33:49 +00:00
Steve Sanderson 674024ed61 Rename UITree -> RenderTree, UIEventInfo -> UIEventArgs 2018-01-09 09:55:14 +00:00
Steve Sanderson 5793bf700a Add ability to render child components 2018-01-08 14:21:48 +00:00
Steve Sanderson 04c582647a Add support for passing parameters to UI event handlers (e.g., which key was pressed) 2018-01-08 11:31:10 +00:00
Steve Sanderson 23f7120b75 Basic parameterless events support (e.g., button click) 2018-01-05 22:16:29 +00:00
Steve Sanderson f7cb54121b Add DOM rendering capability for attributes 2018-01-05 17:50:03 +00:00
Steve Sanderson 0db6f5cc5d Add concept of "attributes" to UITree. So far the values are only allowed to be strings, but this will have to change later. 2018-01-05 17:28:26 +00:00
Steve Sanderson f0a78d13bf Begin tracking association between components and DOM elements so that components can be refresh their own display 2018-01-05 14:31:06 +00:00
Steve Sanderson dfd6c4a1c2 Begin E2E testing for BasicTestApp and component rendering in browser 2018-01-04 17:35:58 +00:00
Steve Sanderson ce04fde7bd Begin adding BasicTestApp for more E2E tests 2018-01-04 15:37:32 +00:00
Steve Sanderson 5e25ab16a2 Add unit tests for UITreeBuilder 2018-01-04 15:25:14 +00:00
Steve Sanderson 04064f983c Add test to more explicitly cover both 'params array' and 'generics'-style interop APIs 2017-12-15 19:41:20 +00:00
Steve Sanderson 09eccb52c5 Remove old marshalled-interop API and update MonoSanity sample to use newer API 2017-12-15 19:16:15 +00:00
Steve Sanderson fe6105a902 Support JS invocations that return undefined 2017-12-15 11:40:43 +00:00
Steve Sanderson 67f7559950 On exception when calling JS from .NET, return JS stack trace to .NET invoker 2017-12-15 11:05:28 +00:00
Steve Sanderson 6eede7b109 Low-level MonoSanity tests for invoking JS from .NET code 2017-12-15 10:57:44 +00:00
Steve Sanderson c72f9a1977 Simplify in-memory file provider usage by initializing with byte[], not Stream 2017-12-14 15:48:01 +00:00
Steve Sanderson a4b85ddf53 Split BuildTools into "Build" (for end-user app builds) and "BuildTools" (for building this repo only) 2017-12-14 15:32:28 +00:00
Steve Sanderson c49a67dcf0 Tidy up build filesystem providers code 2017-12-14 15:12:18 +00:00
Steve Sanderson 85cc7aee34 Use CompositeMountedFileProvider to simplify build logic 2017-12-14 14:48:36 +00:00
Steve Sanderson a81ad1830f Implement CompositeMountedFileProvider 2017-12-14 14:31:55 +00:00
Steve Sanderson aa63da5151 Write out all client app files to disk at build time instead of serving dynamically at runtime 2017-12-14 11:59:55 +00:00
Steve Sanderson 39b64c1bc3 Add tests for IndexHtmlFileProvider, plus minor cleanups 2017-12-13 12:33:47 +00:00
Steve Sanderson affc66c24e Move Server.Test project to correct location on disk 2017-12-13 11:15:31 +00:00
Steve Sanderson fb8a01a138 Fix tests in preceding commit 2017-12-11 17:00:32 +00:00
Steve Sanderson 667f2cc007 Split Mono files provider into "Js" and "Bcl" parts, as they are used for different things 2017-12-11 16:56:31 +00:00
Steve Sanderson 0ed4a4eba5 Implement directory-capable InMemoryFileProvider 2017-12-11 14:01:34 +00:00
Steve Sanderson c439787ab5 Begin implementing ReferencedAssemblyFileProvider 2017-12-09 00:53:44 +00:00
Steve Sanderson 4618edead4 Rename BlazorStandalone sample to StandaloneApp for consistency 2017-12-08 17:36:29 +00:00
Steve Sanderson 4c15a74d14 Begin E2E testing for HostedInAspNet sample 2017-12-08 17:27:29 +00:00
Steve Sanderson 82b2128bd9 Remove HelloWorld static site (it's now superseded by more relevant E2E samples) 2017-12-07 12:08:11 +00:00
Steve Sanderson bee5c176de Add comment about StaticSiteServerFixture 2017-12-07 12:06:07 +00:00
Steve Sanderson 6cad4e3b84 Make E2E tests even more E2E by using ASP.NET Core apps' BuildWebHost method 2017-12-07 11:57:34 +00:00
Steve Sanderson 0ac789221e Begin E2E testing for DevHost-based projects 2017-12-07 11:49:05 +00:00
Steve Sanderson a59bfa3cb9 Refactor E2E tests fixtures/base classes for better composability 2017-12-07 10:39:46 +00:00
Steve Sanderson 3ca7aa853e Rename "runtime" -> "src" because it is all the source 2017-12-06 21:48:48 +00:00
Steve Sanderson 2c6156a149 Add missing test 2017-12-06 16:01:13 +00:00
Steve Sanderson 5aaed3d75a Add E2E tests for MonoSanity sample 2017-12-06 15:57:06 +00:00
Steve Sanderson 32dae87b00 Make MonoSanity sample actually run some .NET code via Mono 2017-12-06 14:29:29 +00:00
Steve Sanderson c841016783 Move and rename E2E test project for consistency 2017-12-06 12:26:20 +00:00
Steve Sanderson 47c8af1c54 Add ability to serve Mono static files 2017-12-06 12:13:22 +00:00