Commit Graph

309 Commits

Author SHA1 Message Date
Steve Sanderson 58ae5dea9a Additional methods on ParameterCollection to simplify usage 2018-02-22 15:03:49 +00:00
Steve Sanderson 3e30655ea4 Low-level NavLink implementation 2018-02-22 15:03:49 +00:00
Steve Sanderson 25b76bc6dc Skip rerendering child components if their params are definitely unchanged 2018-02-22 13:23:52 +00:00
Steve Sanderson 08d7b77d38 Avoid component syntax confusion by making it a compile-time error. Fixes #145 2018-02-22 11:07:03 +00:00
Steve Sanderson 1a31634b70 Capture component child content as a RenderFragment parameter. 2018-02-22 11:07:03 +00:00
Steve Sanderson bd455453d6 Report line/column when reporting mismatching tags 2018-02-22 11:07:03 +00:00
Steve Sanderson 0665d30e19 In RazorCompiler, reject malformed documents with mismatching tags 2018-02-22 11:07:03 +00:00
Steve Sanderson 95023c0300 In RazorCompiler, support components with children 2018-02-22 11:07:03 +00:00
Steve Sanderson d67bf63864 Update to SpaServices.Extensions 2.0.0 2018-02-22 11:07:03 +00:00
Steve Sanderson 6f25663a32 In UriHelper, cache current absolute URL 2018-02-21 10:22:03 +00:00
Steve Sanderson b764029ce0 Fix comment 2018-02-21 10:22:03 +00:00
Steve Sanderson fc9cb1af65 Add E2E tests for BrowserRouter, plus implement querystring/hash support 2018-02-21 10:22:03 +00:00
Steve Sanderson 8bc7c92683 Support hosting at non-root URL. Prove it by updating BasicTestApp to serve from non-root location. 2018-02-21 10:22:03 +00:00
Steve Sanderson 7073429cd5 Clean up and include routing unit tests 2018-02-21 10:22:03 +00:00
Steve Sanderson 78a19c07e9 In RazorCompiler, allow HTML comments 2018-02-21 10:22:03 +00:00
Steve Sanderson 7370d748c6 Initial, minimal BrowserRouter implementation. No config besides subclassing yet. 2018-02-21 10:22:03 +00:00
Steve Sanderson 0b5294a8f5 Enable SPA fallback routing on server 2018-02-21 10:22:03 +00:00
Steve Sanderson 58af3e1638 Allow blazor-boot script to be served from apps not hosted at domain root 2018-02-21 10:22:03 +00:00
Steve Sanderson 796d915526 Make spelling one step closer to correctness 2018-02-20 09:47:19 +00:00
Eugene Bekker ea2019ac39 Update a reference to the new API style 2018-02-20 09:40:09 +00:00
Eugene Bekker 79a4016b13 Refactoring middleware configuration API 2018-02-20 09:40:09 +00:00
Steve Sanderson a4c74234b4 Introduce deliberate misspelling 2018-02-19 15:14:08 +00:00
Steve Sanderson 608da4c78b Specifying entrypoint: Add tests and other stylistic tweaks 2018-02-19 14:22:03 +00:00
Eugene Bekker 1653e56b98 Adding ability to qualify the entry point of the main assembly 2018-02-19 14:11:25 +00:00
Steve Sanderson 1e0836167d Make temporary "layout" and "implements" syntax work with _ViewImports hierarchies 2018-02-19 12:48:08 +00:00
Steve Sanderson f649de2976 Support _ViewImports.cshtml files hierarchically 2018-02-18 23:57:20 +00:00
Steve Sanderson 782ca0137d Support "@inherits ..." directive 2018-02-18 22:03:15 +00:00
Steve Sanderson f6d6714251 Serve static content from wwwroot 2018-02-16 15:56:22 +00:00
Steve Sanderson 69498f68f9 Add LayoutDisplay component and use it in StandaloneApp 2018-02-16 15:04:57 +00:00
Steve Sanderson f54df27c21 Define ILayoutComponent so there's compile-time validation that layouts are defined correctly 2018-02-16 15:04:51 +00:00
Steve Sanderson 7139cb70c5 Support temporary @(Implements<MyInterfaceType>()) syntax 2018-02-16 12:39:38 +00:00
Steve Sanderson 9e333e31c5 Support temporary @(Layout<MyLayoutType>()) syntax 2018-02-16 12:10:44 +00:00
Steve Sanderson f91d1d4803 Better handling of render-after-disposed scenarios 2018-02-16 12:10:44 +00:00
Steve Sanderson 7ad88a9406 Fix ArrayBuilder capacity expansion bug 2018-02-16 10:10:13 +00:00
Steve Sanderson ad2c63ca37 Make OpenRegion/CloseRegion not public because they are only to support AddContent(seq, fragment) 2018-02-16 10:10:12 +00:00
Steve Sanderson 41aae0b7e6 Add ability to append RenderFragment into a RenderTreeBuilder 2018-02-16 10:10:11 +00:00
Steve Sanderson 29a6175ac1 Define RenderFragment concept 2018-02-16 10:10:10 +00:00
Steve Sanderson 1ac5ee25c1 Rename RenderTreeBuilder's AddText to AddContent, since it will be used for other types too 2018-02-16 10:10:08 +00:00
Steve Sanderson acc5b9461b Add ability to add component frame using runtime type object instead of generic param 2018-02-16 10:10:07 +00:00
Steve Sanderson 535b601d55 Multitargeted generate AngleSharp twice, so minimise the chance of either seeing the other in an incomplete state during build 2018-02-15 17:26:07 +00:00
Steve Sanderson b529f2b913 Avoid confusion with client apps not rebuilding after changing Blazor library code 2018-02-15 16:45:30 +00:00
Steve Sanderson af0085f550 Add *.cshtml for UpToDateCheckInput for VS 2018-02-15 16:14:48 +00:00
Steve Sanderson dcbd7a27eb Workaround file locked issue during build 2018-02-15 15:59:00 +00:00
Steve Sanderson 2ebfddc237 Switch client apps to netstandard2.0 to fix type load errors
Do a "git clean -xdf" on your local copy if you get runtime errors after
updating to this.
2018-02-15 10:20:31 +00:00
Steve Sanderson e046dfca6d Build net461 Razor extensions target on Windows only 2018-02-15 10:20:51 +00:00
Steve Sanderson 2da17602ed Support "Region" frames in JS-side code
They only appear in a prepended subtree, because the .NET-side diffing
code resolves them out if they are top-level to any given edit
2018-02-14 23:41:25 +00:00
Steve Sanderson 848f24536a Support "Region" frames in diffing 2018-02-14 23:41:24 +00:00
Steve Sanderson a9822216f1 Add the concept of a "Region" render tree frame 2018-02-14 23:41:24 +00:00
Ryan Nowak 043e623d5b Split Razor extensibility into its own assembly
This functionality will need to cross-compile to desktop framework
(net461) so that we can use it in VS. VS doesn't yet have netstandard2.0
support.
2018-02-14 14:08:14 -08:00
Steve Sanderson af98672b17 Remove redundant WeakValueDictionary 2018-02-13 19:52:44 +00:00
Steve Sanderson 0eb0555303 Eliminate IComponent.BuildRenderTree to guarantee that components are only rendered by themselves 2018-02-13 19:47:37 +00:00
Steve Sanderson 70a3ee3d98 Remove externally-callable Renderer.RenderInNewBatch() now that rendering is triggered by components themselves 2018-02-13 17:06:00 +00:00
Steve Sanderson 804ab2d89f Add IHandleEvent concept so components can define their own lifecycle around events 2018-02-13 16:42:21 +00:00
Steve Sanderson a889cd3152 Beginning lifecycle methods on BlazorComponent 2018-02-13 15:55:37 +00:00
Steve Sanderson d98a6153f7 In RazorCompiler, have BuildRenderTree overrides call base implementation 2018-02-13 15:53:59 +00:00
Steve Sanderson 861154764c Introduce IComponent.SetParameters, moving parameter-setting and rerendering logic into component base class 2018-02-13 15:00:53 +00:00
Steve Sanderson 37217db73a Implement ParameterCollection 2018-02-13 13:14:55 +00:00
Steve Sanderson 695ddc0fd6 Add Init/RenderHandle concepts so components can rerender themselves arbitrarily (e.g., after internal state change) 2018-02-13 11:49:33 +00:00
Steve Sanderson 7bb4bbbe5c In IndexHtmlFileProvider, preserve original source formatting 2018-02-12 23:05:47 +00:00
Eugene Bekker b38718d77f Require <script type="blazor-boot"> to define script injection location 2018-02-12 21:49:27 +00:00
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
Mark Gaze 89796cae2c Fixed BlazorBuildToolsExe path to remove backslash in path, (missed in PR #43) 2018-02-07 16:30:26 +00:00
Mark Gaze 5a4bc2e6d6 Added quotes to paths in build that cause the build to fail when directory has a space in the path #44 2018-02-07 16:30:26 +00:00
Brian Allred 5da3c172b5 Make build target path platform agnostic 2018-02-07 10:27:33 +00:00
Steve Sanderson 48627db47f ArrayRange and RenderTreeDiff are readonly structs, so use fields directly 2018-02-07 10:27:32 +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 b59e68a84d Clarify why ArrayBuilder<T> exists 2018-02-05 17:20:34 +00:00
Steve Sanderson fdd0c124a1 Convert RenderTreeEdit to a readonly struct of fields 2018-02-05 00:50:02 +00:00
Steve Sanderson 848b7dc5df Now that RenderTreeFrame is properly readonly (and because the usage is so low-level) can use fields directly 2018-02-05 00:37:03 +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 aae72c8136 In RenderTreeFrame, use explicit [FieldOffset] to shrink the struct from 40 bytes to 28 bytes (in 32-bit mode) or 32 bytes (in 64-bit mode) 2018-02-04 23:23:34 +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 cc053ddbbf Better validation of C# class names in RazorCompiler 2018-01-31 10:23:49 +00:00
Steve Sanderson 50a5baa872 Dispose components on removal 2018-01-30 10:00:30 +00:00
Steve Sanderson 8839a6c558 In TypeScript, regard System_Array type as generic, even though the type param refers to the entry pointer type, not the element type 2018-01-29 22:07:16 +00:00
Steve Sanderson 855d93ce67 Improve TS annotations when calling readObjectField/readStructField 2018-01-29 21:47:55 +00:00
Steve Sanderson c81d537ea3 Pass entire RenderBatch to JS side in one call 2018-01-29 21:43:49 +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 97d575f599 Refactor BrowserRenderer.ts to avoid tracking unnecessary child index stack 2018-01-29 12:56:41 +00:00
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