Skip to content
This repository was archived by the owner on Oct 29, 2024. It is now read-only.

Commit 7a5c057

Browse files
authored
Merge pull request #313 from chiragpat/rehydrate_builder
Add new rehydrate option to renderComponent clientside api
2 parents 716d8c0 + d388a4e commit 7a5c057

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/@glimmer/core/src/render-component/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
EnvironmentDelegate,
66
DynamicScopeImpl,
77
renderSync,
8+
rehydrationBuilder,
89
} from '@glimmer/runtime';
910
import {
1011
Cursor as GlimmerCursor,
@@ -32,6 +33,7 @@ export interface RenderComponentOptions {
3233
element: Element;
3334
args?: Dict<unknown>;
3435
owner?: object;
36+
rehydrate?: boolean;
3537
}
3638

3739
type ResolveFn = () => void;
@@ -72,7 +74,8 @@ async function renderComponent(
7274
{ document },
7375
new ClientEnvDelegate(),
7476
args,
75-
owner
77+
owner,
78+
options.rehydrate ? rehydrationBuilder : clientBuilder
7679
);
7780
const result = renderSync(env, iterator);
7881
results.push(result);

packages/@glimmer/core/test/interactive/render-test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,17 @@ module(`[@glimmer/core] interactive rendering tests`, () => {
3434

3535
assert.equal(containerElement.innerHTML, '<p>foo</p>bar<h1>Hello Glimmer!</h1>');
3636
});
37+
38+
test('rehydrates a component from existing markup when rehydrate option is set', async (assert) => {
39+
const containerElement = document.createElement('div');
40+
containerElement.innerHTML =
41+
'<!--%+b:0%--><!--%+b:1%--><h1>Hello World</h1><!--%-b:1%--><!--%-b:0%-->';
42+
43+
await render(createTemplate(`<h1>Hello World</h1>`), {
44+
element: containerElement,
45+
rehydrate: true,
46+
});
47+
48+
assert.equal(containerElement.innerHTML, '<h1>Hello World</h1>');
49+
});
3750
});

0 commit comments

Comments
 (0)