Commit Graph

321 Commits

Author SHA1 Message Date
Steve Sanderson 7e76490844 Refactor RenderTreeDiffComputer to use more "ref local" for less array dereferencing 2018-01-29 12:56:41 +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 2107a1927f In RazorCompiler, support temporary <c:MyComponent /> syntax 2018-01-24 10:43:23 -08:00
Steve Sanderson 04fa5f4b71 Since ArrayRange is now what the tree builder APIs expose, ArrayBuilder can be internal 2018-01-24 08:58:16 -08:00
Steve Sanderson 9da3260eb7 Avoid some struct copying during array building 2018-01-23 23:50:21 -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 cc2d097c99 More comments on thinking around child components and wrapper elements 2018-01-23 20:38:01 -08:00
Steve Sanderson 5d5931d3c5 Clarify comments about components needing wrapper elements 2018-01-23 17:21:45 -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 0ea4c930e9 Remove redundant property 2018-01-22 16:53:41 -08:00
Steve Sanderson 2c3925a05c Apply render tree diffs on JS side 2018-01-22 16:02:52 -08:00
Steve Sanderson 584e363110 Pass the tree edits to JS code on render 2018-01-22 09:26:14 -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 b038117961 Force VS to treat all Blazor cshtml components as inheriting from BlazorComponent so that helpers like @onclick appear in intellisense 2018-01-18 10:05:07 +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 3deab026c8 Stop spurious VS "cannot override ExecuteAsync" errors even if you don't specify a base class 2018-01-18 00:07:54 +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 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 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 a03cb48c7a When compiling Razor components, take base namespace from host project 2018-01-14 14:40:57 +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 5b3f05bdc1 Begin emitting C# classes for Razor components 2018-01-11 11:51:27 +00:00
Steve Sanderson 3f522ab216 Begin ability to have .cshtml files in Blazor apps 2018-01-11 11:11:47 +00:00
Steve Sanderson 8d4491d4b8 Begin Razor build command 2018-01-11 10:31:49 +00:00
Steve Sanderson 863826ab9d Begin on compilation infrastructure for Razor components 2018-01-10 16:34:37 +00:00
Steve Sanderson 247015fabb Move interop-related TS code into its own directory 2018-01-10 12:36:37 +00:00
Steve Sanderson 111e83c976 Clean up usage of RenderComponentArgs in TS by explicitly defining accessors 2018-01-10 12:31:25 +00:00
Steve Sanderson 950250d1f7 Improve naming for direct memory access APIs in Platform interface 2018-01-10 12:15:26 +00:00
Steve Sanderson 0187384638 Clean up how JS functions are registered and located for invocation from .NET 2018-01-10 11:55:52 +00:00
Steve Sanderson 7bbf2b54aa Enable TypeScript strict mode 2018-01-10 10:42:08 +00:00
Steve Sanderson a729a8d5c5 Improve XML docs on BrowserRenderer 2018-01-09 15:23:27 +00:00
Steve Sanderson 07e31c6318 Unit tests relating to Renderer GC behavior 2018-01-09 15:08:27 +00:00
Steve Sanderson c95747af3e Remove some implementation code that isn't strictly needed (so far, at least) 2018-01-09 13:52:56 +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 5238dd9bc4 Allow NPM to reorder the package-lock.json file 2018-01-04 14:28:18 +00:00
Steve Sanderson a24fee4690 Set some projects back to netcoreapp until there's a way of referencing netcoreapp build tools from netstandard projects 2018-01-04 14:28:03 +00:00
Steve Sanderson 5453b58f31 Initial basic component rendering. Does not yet do any tree diffing. APIs will change. 2018-01-04 14:11:37 +00:00
Steve Sanderson d3092dd787 Change libraries from netcoreapp2.0 to netstandard2.0 where possible 2018-01-03 15:37:31 +00:00
Steve Sanderson 78d12da33e Implement simplified RegisteredFunction.Invoke that uses JSON for marshalling 2018-01-03 14:13:04 +00:00
Steve Sanderson 54c2431e88 Rename Invoke to InvokeUnmarshalled 2018-01-03 12:01:20 +00:00
Steve Sanderson 7daec15a8e Add TS part of RegisteredFunction API 2017-12-15 20:01:23 +00:00
Steve Sanderson 9e92c21a2f Simplify code by not inlining quite so much 2017-12-15 19:50:36 +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 99a08da321 Add API for unmarshalled .NET -> JS invocations (passing and returning .NET heap object pointers) 2017-12-15 14:26:40 +00:00
Steve Sanderson 748903c62f Rebuild client apps when any source file changes 2017-12-15 13:28:40 +00:00
Steve Sanderson fe6105a902 Support JS invocations that return undefined 2017-12-15 11:40:43 +00:00
Steve Sanderson d1069e2d1e Begin on Microsoft.Blazor.Browser project 2017-12-15 11:31:05 +00:00
Steve Sanderson 809528676b Rename Microsoft.Blazor.Browser project to Microsoft.Blazor.Browser.JS 2017-12-15 11:24:03 +00:00
Steve Sanderson 4135f04901 Improve incremental build support 2017-12-14 19:54:00 +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 64770bfb23 Remove redundant file following Build/BuildTools split 2017-12-14 15:37:43 +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 7390af1681 Make the BuildTools project consumable either as a NuGet package or locally by importing a .proj 2017-12-13 11:10:41 +00:00
Steve Sanderson 91e1cd1030 Use (project).blazor.config to allow calling UseBlazor with just an assembly name. Allows ReferenceOutputAssembly=false. 2017-12-12 19:48:15 +00:00
Steve Sanderson d0096ec78e On build, emit <clientproject>.blazor.config to the output dir - transitively into host projects too 2017-12-12 17:18:35 +00:00
Steve Sanderson c4fea86603 Inject blazor.js script tag (with all references) automatically 2017-12-12 00:36:09 +00:00
Steve Sanderson aff369e86d Improve assembly resolution. Standalone hosting now works again. 2017-12-11 21:06:37 +00:00
Steve Sanderson 9ec79ae9f7 Start making standalone hosting work again by automatically locating the client app assembly 2017-12-11 19:45:02 +00:00
Steve Sanderson 9117263114 Load .NET assemblies from the ReferencedAssemblyFileProvider only 2017-12-11 19:18:19 +00:00
Steve Sanderson 3b01daf15a Begin on serving .NET assemblies from ReferencedAssemblyFileProvider 2017-12-11 17:32:30 +00:00
Steve Sanderson 9b95b68dbf Rename client bin dir to _bin so it can be served under default config 2017-12-11 17:24:42 +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 4b247e8050 Make ReferencedAssemblyFileProviderTest more useful 2017-12-11 16:11:13 +00:00
Steve Sanderson 5ec2a5eb1e Use new InMemoryFileProvider behaviours to clean up ReferencedAssemblyFileProvider 2017-12-11 15:14:07 +00:00
Steve Sanderson 867cb66b97 Use new file provider to serve Microsoft.Blazor.Browser and Microsoft.Blazor.Mono contents 2017-12-11 14:05:00 +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 4138b3a049 Make Blazor apps actually start up Mono and execute the specified .NET entrypoint 2017-12-08 17:06:40 +00:00
Steve Sanderson 4d764d78df Beginning UseBlazorDevelopmentServer middleware and HostedInAspNet sample 2017-12-08 14:42:59 +00:00
Steve Sanderson da4df729ee Verify that the local Node.js version is 8.3.0+ (for NPM 5) before using it to build the static resources
Verify that the local Node.js version is 9.2.0+ before using it to build
the static resources
2017-12-08 13:09:18 +00:00
Steve Sanderson 5b5b3892d3 Auto-restore NPM dependencies on build 2017-12-08 10:27:46 +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 aedb146ea4 Enable incremental compilation for Webpack target 2017-12-07 00:03:19 +00:00
Steve Sanderson e2a7d4fa40 Serve blazor.js in standalone site 2017-12-06 23:35:16 +00:00
Steve Sanderson a63b695db8 Begin on DevHost and sample of standalone app 2017-12-06 23:17:23 +00:00
Steve Sanderson 3688d12ab7 Begin on Microsoft.Blazor.Browser (TS portion of runtime) 2017-12-06 22:38:26 +00:00
Steve Sanderson 3ca7aa853e Rename "runtime" -> "src" because it is all the source 2017-12-06 21:48:48 +00:00