ripple 0.3.68 → 0.3.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -0
- package/package.json +3 -3
- package/src/jsx-runtime.d.ts +2 -2
- package/src/runtime/element.js +1 -1
- package/src/runtime/index-client.js +11 -11
- package/src/runtime/index-server.js +7 -4
- package/src/runtime/internal/client/bindings.js +1 -1
- package/src/runtime/internal/client/blocks.js +13 -4
- package/src/runtime/internal/client/component.js +55 -0
- package/src/runtime/internal/client/composite.js +4 -2
- package/src/runtime/internal/client/expression.js +65 -7
- package/src/runtime/internal/client/hmr.js +54 -43
- package/src/runtime/internal/client/index.js +5 -1
- package/src/runtime/internal/client/portal.js +70 -69
- package/src/runtime/internal/client/render.js +3 -0
- package/src/runtime/internal/server/index.js +92 -8
- package/tests/client/__snapshots__/html.test.tsrx.snap +3 -3
- package/tests/client/array/array.copy-within.test.tsrx +33 -31
- package/tests/client/array/array.derived.test.tsrx +186 -169
- package/tests/client/array/array.iteration.test.tsrx +40 -37
- package/tests/client/array/array.mutations.test.tsrx +113 -101
- package/tests/client/array/array.static.test.tsrx +119 -101
- package/tests/client/array/array.to-methods.test.tsrx +24 -21
- package/tests/client/async-suspend.test.tsrx +247 -246
- package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +0 -1
- package/tests/client/basic/basic.attributes.test.tsrx +428 -423
- package/tests/client/basic/basic.collections.test.tsrx +109 -102
- package/tests/client/basic/basic.components.test.tsrx +323 -205
- package/tests/client/basic/basic.errors.test.tsrx +91 -91
- package/tests/client/basic/basic.events.test.tsrx +114 -115
- package/tests/client/basic/basic.get-set.test.tsrx +97 -87
- package/tests/client/basic/basic.hmr.test.tsrx +19 -16
- package/tests/client/basic/basic.reactivity.test.tsrx +199 -191
- package/tests/client/basic/basic.rendering.test.tsrx +272 -182
- package/tests/client/basic/basic.styling.test.tsrx +23 -22
- package/tests/client/basic/basic.utilities.test.tsrx +10 -8
- package/tests/client/boundaries.test.tsrx +26 -26
- package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +5 -5
- package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +5 -5
- package/tests/client/compiler/compiler.assignments.test.tsrx +77 -81
- package/tests/client/compiler/compiler.attributes.test.tsrx +15 -15
- package/tests/client/compiler/compiler.basic.test.tsrx +322 -314
- package/tests/client/compiler/compiler.regex.test.tsrx +44 -47
- package/tests/client/compiler/compiler.tracked-access.test.tsrx +38 -38
- package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
- package/tests/client/compiler/compiler.typescript.test.tsrx +2 -2
- package/tests/client/composite/composite.dynamic-components.test.tsrx +47 -48
- package/tests/client/composite/composite.generics.test.tsrx +168 -192
- package/tests/client/composite/composite.props.test.tsrx +97 -81
- package/tests/client/composite/composite.reactivity.test.tsrx +177 -147
- package/tests/client/composite/composite.render.test.tsrx +122 -105
- package/tests/client/computed-properties.test.tsrx +28 -28
- package/tests/client/context.test.tsrx +21 -21
- package/tests/client/css/global-additional-cases.test.tsrx +58 -58
- package/tests/client/css/global-advanced-selectors.test.tsrx +16 -16
- package/tests/client/css/global-at-rules.test.tsrx +10 -10
- package/tests/client/css/global-basic.test.tsrx +14 -14
- package/tests/client/css/global-classes-ids.test.tsrx +14 -14
- package/tests/client/css/global-combinators.test.tsrx +10 -10
- package/tests/client/css/global-complex-nesting.test.tsrx +14 -14
- package/tests/client/css/global-edge-cases.test.tsrx +18 -18
- package/tests/client/css/global-keyframes.test.tsrx +12 -12
- package/tests/client/css/global-nested.test.tsrx +10 -10
- package/tests/client/css/global-pseudo.test.tsrx +12 -12
- package/tests/client/css/global-scoping.test.tsrx +20 -20
- package/tests/client/css/style-identifier.test.tsrx +126 -259
- package/tests/client/date.test.tsrx +146 -133
- package/tests/client/dynamic-elements.test.tsrx +398 -365
- package/tests/client/events.test.tsrx +292 -290
- package/tests/client/for.test.tsrx +156 -153
- package/tests/client/head.test.tsrx +105 -96
- package/tests/client/html.test.tsrx +122 -26
- package/tests/client/input-value.test.tsrx +1361 -1314
- package/tests/client/lazy-array.test.tsrx +16 -13
- package/tests/client/lazy-destructuring.test.tsrx +257 -213
- package/tests/client/map.test.tsrx +65 -60
- package/tests/client/media-query.test.tsrx +22 -20
- package/tests/client/object.test.tsrx +87 -81
- package/tests/client/portal.test.tsrx +57 -51
- package/tests/client/ref.test.tsrx +233 -202
- package/tests/client/return.test.tsrx +71 -2560
- package/tests/client/set.test.tsrx +54 -45
- package/tests/client/svg.test.tsrx +216 -186
- package/tests/client/switch.test.tsrx +194 -193
- package/tests/client/track-async-hydration.test.tsrx +18 -14
- package/tests/client/tracked-index-access.test.tsrx +28 -18
- package/tests/client/try.test.tsrx +675 -548
- package/tests/client/tsx.test.tsrx +373 -311
- package/tests/client/typescript-generics.test.tsrx +145 -145
- package/tests/client/url/url.derived.test.tsrx +33 -28
- package/tests/client/url/url.parsing.test.tsrx +61 -51
- package/tests/client/url/url.partial-removal.test.tsrx +56 -48
- package/tests/client/url/url.reactivity.test.tsrx +142 -125
- package/tests/client/url/url.serialization.test.tsrx +13 -11
- package/tests/client/url-search-params/url-search-params.derived.test.tsrx +34 -29
- package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +25 -21
- package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +50 -45
- package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +111 -99
- package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +49 -43
- package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +14 -12
- package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +16 -14
- package/tests/hydration/basic.test.js +3 -3
- package/tests/hydration/compiled/client/basic.js +586 -651
- package/tests/hydration/compiled/client/composite.js +79 -104
- package/tests/hydration/compiled/client/events.js +140 -148
- package/tests/hydration/compiled/client/for.js +1005 -1018
- package/tests/hydration/compiled/client/head.js +124 -134
- package/tests/hydration/compiled/client/hmr.js +41 -48
- package/tests/hydration/compiled/client/html-in-template.js +38 -41
- package/tests/hydration/compiled/client/html.js +970 -1314
- package/tests/hydration/compiled/client/if-children.js +234 -249
- package/tests/hydration/compiled/client/if.js +182 -189
- package/tests/hydration/compiled/client/mixed-control-flow.js +347 -303
- package/tests/hydration/compiled/client/nested-control-flow.js +1084 -832
- package/tests/hydration/compiled/client/portal.js +65 -85
- package/tests/hydration/compiled/client/reactivity.js +84 -90
- package/tests/hydration/compiled/client/return.js +38 -1939
- package/tests/hydration/compiled/client/switch.js +218 -224
- package/tests/hydration/compiled/client/track-async-serialization.js +250 -259
- package/tests/hydration/compiled/client/try.js +123 -132
- package/tests/hydration/compiled/server/basic.js +773 -831
- package/tests/hydration/compiled/server/composite.js +166 -191
- package/tests/hydration/compiled/server/events.js +170 -184
- package/tests/hydration/compiled/server/for.js +851 -909
- package/tests/hydration/compiled/server/head.js +206 -216
- package/tests/hydration/compiled/server/hmr.js +64 -72
- package/tests/hydration/compiled/server/html-in-template.js +42 -76
- package/tests/hydration/compiled/server/html.js +1362 -1667
- package/tests/hydration/compiled/server/if-children.js +419 -445
- package/tests/hydration/compiled/server/if.js +194 -208
- package/tests/hydration/compiled/server/mixed-control-flow.js +249 -257
- package/tests/hydration/compiled/server/nested-control-flow.js +491 -515
- package/tests/hydration/compiled/server/portal.js +152 -160
- package/tests/hydration/compiled/server/reactivity.js +94 -106
- package/tests/hydration/compiled/server/return.js +28 -2172
- package/tests/hydration/compiled/server/switch.js +274 -286
- package/tests/hydration/compiled/server/track-async-serialization.js +340 -358
- package/tests/hydration/compiled/server/try.js +167 -185
- package/tests/hydration/components/basic.tsrx +320 -272
- package/tests/hydration/components/composite.tsrx +44 -32
- package/tests/hydration/components/events.tsrx +101 -91
- package/tests/hydration/components/for.tsrx +510 -452
- package/tests/hydration/components/head.tsrx +87 -80
- package/tests/hydration/components/hmr.tsrx +22 -17
- package/tests/hydration/components/html-in-template.tsrx +22 -17
- package/tests/hydration/components/html.tsrx +525 -443
- package/tests/hydration/components/if-children.tsrx +158 -148
- package/tests/hydration/components/if.tsrx +109 -95
- package/tests/hydration/components/mixed-control-flow.tsrx +100 -96
- package/tests/hydration/components/nested-control-flow.tsrx +215 -203
- package/tests/hydration/components/portal.tsrx +41 -34
- package/tests/hydration/components/reactivity.tsrx +37 -27
- package/tests/hydration/components/return.tsrx +12 -556
- package/tests/hydration/components/switch.tsrx +120 -114
- package/tests/hydration/components/track-async-serialization.tsrx +107 -91
- package/tests/hydration/components/try.tsrx +55 -40
- package/tests/hydration/html.test.js +4 -4
- package/tests/hydration/return.test.js +13 -532
- package/tests/server/await.test.tsrx +3 -3
- package/tests/server/basic.attributes.test.tsrx +264 -195
- package/tests/server/basic.components.test.tsrx +296 -169
- package/tests/server/basic.test.tsrx +300 -198
- package/tests/server/compiler.test.tsrx +62 -60
- package/tests/server/composite.props.test.tsrx +77 -63
- package/tests/server/composite.test.tsrx +168 -192
- package/tests/server/context.test.tsrx +18 -12
- package/tests/server/dynamic-elements.test.tsrx +197 -180
- package/tests/server/for.test.tsrx +85 -78
- package/tests/server/head.test.tsrx +50 -43
- package/tests/server/html-nesting-validation.test.tsrx +8 -8
- package/tests/server/if.test.tsrx +57 -51
- package/tests/server/lazy-destructuring.test.tsrx +366 -294
- package/tests/server/return.test.tsrx +76 -1355
- package/tests/server/streaming-ssr.test.tsrx +4 -75
- package/tests/server/style-identifier.test.tsrx +169 -131
- package/tests/server/switch.test.tsrx +91 -85
- package/tests/server/track-async-serialization.test.tsrx +105 -85
- package/tests/server/try.test.tsrx +374 -280
- package/tests/utils/compiler-compat-config.test.js +2 -2
- package/tests/utils/runtime-imports.test.js +10 -0
- package/types/index.d.ts +8 -0
- package/tests/client/__snapshots__/html.test.rsrx.snap +0 -40
|
@@ -1,111 +1,118 @@
|
|
|
1
1
|
import { track } from 'ripple';
|
|
2
2
|
|
|
3
3
|
// Static title
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
export function StaticTitle() {
|
|
5
|
+
return <>
|
|
6
|
+
<head>
|
|
7
|
+
<title>{'Static Test Title'}</title>
|
|
8
|
+
</head>
|
|
9
|
+
<div>{'Content'}</div>
|
|
10
|
+
</>;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
// Reactive title
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
export function ReactiveTitle() {
|
|
15
|
+
return <>
|
|
16
|
+
let &[title] = track('Initial Title');
|
|
17
|
+
<head>
|
|
18
|
+
<title>{title}</title>
|
|
19
|
+
</head>
|
|
20
|
+
<div>
|
|
21
|
+
<span>{title}</span>
|
|
22
|
+
</div>
|
|
23
|
+
</>;
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
// Multiple head elements
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
export function MultipleHeadElements() {
|
|
28
|
+
return <>
|
|
29
|
+
<head>
|
|
30
|
+
<title>{'Page Title'}</title>
|
|
31
|
+
<meta name="description" content="Page description" />
|
|
32
|
+
<link rel="stylesheet" href="/styles.css" />
|
|
33
|
+
</head>
|
|
34
|
+
<div>{'Page content'}</div>
|
|
35
|
+
</>;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
// Head with reactive meta tags
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
export function ReactiveMetaTags() {
|
|
40
|
+
return <>
|
|
41
|
+
let &[description] = track('Initial description');
|
|
42
|
+
<head>
|
|
43
|
+
<title>{'My Page'}</title>
|
|
44
|
+
<meta name="description" content={description} />
|
|
45
|
+
</head>
|
|
46
|
+
<div>{description}</div>
|
|
47
|
+
</>;
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
// Title with template literal
|
|
48
|
-
export
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
export function TitleWithTemplate() {
|
|
52
|
+
return <>
|
|
53
|
+
let &[name] = track('World');
|
|
54
|
+
<head>
|
|
55
|
+
<title>{`Hello ${name}!`}</title>
|
|
56
|
+
</head>
|
|
57
|
+
<div>{name}</div>
|
|
58
|
+
</>;
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
// Empty title
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
export function EmptyTitle() {
|
|
63
|
+
return <>
|
|
64
|
+
<head>
|
|
65
|
+
<title>{''}</title>
|
|
66
|
+
</head>
|
|
67
|
+
<div>{'Empty title test'}</div>
|
|
68
|
+
</>;
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
// Title with conditional content
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
export function ConditionalTitle() {
|
|
73
|
+
return <>
|
|
74
|
+
let &[showPrefix] = track(true);
|
|
75
|
+
let &[title] = track('Main Page');
|
|
76
|
+
<head>
|
|
77
|
+
<title>{showPrefix ? 'App - ' + title : title}</title>
|
|
78
|
+
</head>
|
|
79
|
+
<div>{title}</div>
|
|
80
|
+
</>;
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
// Title with computed value
|
|
79
|
-
export
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
export function ComputedTitle() {
|
|
85
|
+
return <>
|
|
86
|
+
let &[count] = track(0);
|
|
87
|
+
let prefix = 'Count: ';
|
|
88
|
+
<head>
|
|
89
|
+
<title>{prefix + count}</title>
|
|
90
|
+
</head>
|
|
91
|
+
<div>
|
|
92
|
+
<span>{count}</span>
|
|
93
|
+
</div>
|
|
94
|
+
</>;
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
// Multiple head blocks (edge case)
|
|
92
|
-
export
|
|
93
|
-
|
|
94
|
-
<
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
export function MultipleHeadBlocks() {
|
|
99
|
+
return <>
|
|
100
|
+
<head>
|
|
101
|
+
<title>{'First Head'}</title>
|
|
102
|
+
</head>
|
|
103
|
+
<div>{'Content'}</div>
|
|
104
|
+
<head>
|
|
105
|
+
<meta name="author" content="Test Author" />
|
|
106
|
+
</head>
|
|
107
|
+
</>;
|
|
102
108
|
}
|
|
103
109
|
|
|
104
110
|
// Head with style tag
|
|
105
|
-
export
|
|
106
|
-
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
+
export function HeadWithStyle() {
|
|
112
|
+
return <>
|
|
113
|
+
<head>
|
|
114
|
+
<title>{'Styled Page'}</title>
|
|
115
|
+
</head>
|
|
116
|
+
<div>{'Styled content'}</div>
|
|
117
|
+
</>;
|
|
111
118
|
}
|
|
@@ -8,27 +8,32 @@ import { track } from 'ripple';
|
|
|
8
8
|
|
|
9
9
|
// A layout component similar to docs-layout: a root div wrapping child components
|
|
10
10
|
// where the children contain conditional content (if blocks)
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export function Layout({ children }: { children: any }) {
|
|
12
|
+
return <>
|
|
13
|
+
<div class="layout">
|
|
14
|
+
<nav class="nav">{'Navigation'}</nav>
|
|
15
|
+
<main class="main">{children}</main>
|
|
16
|
+
</div>
|
|
17
|
+
</>;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
// A child component with an if block (the key source of deep hydrate_node)
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
export function Content() {
|
|
22
|
+
return <>
|
|
23
|
+
let &[visible] = track(true);
|
|
24
|
+
<div class="content">
|
|
25
|
+
if (visible) {
|
|
26
|
+
<p class="text">{'Hello world'}</p>
|
|
27
|
+
}
|
|
28
|
+
</div>
|
|
29
|
+
</>;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
// The top-level component combining Layout + Content (mimics docs layout + page)
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
33
|
+
export function LayoutWithContent() {
|
|
34
|
+
return <>
|
|
35
|
+
<Layout>
|
|
36
|
+
<Content />
|
|
37
|
+
</Layout>
|
|
38
|
+
</>;
|
|
34
39
|
}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
// Test case for hydration error with
|
|
1
|
+
// Test case for hydration error with innerHTML inside template elements
|
|
2
2
|
// Reproduces issue from website-new/src/pages/docs/comparison.tsrx
|
|
3
3
|
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export function SimpleTemplateHtml() {
|
|
5
|
+
return <>
|
|
6
|
+
const data = 'test data';
|
|
7
|
+
<template id="data1" innerHTML={data} />
|
|
8
|
+
</>;
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
export function TemplateWithJSON() {
|
|
12
|
+
return <>
|
|
13
|
+
const jsonData = JSON.stringify({ message: 'hello', count: 42 });
|
|
14
|
+
<template id="data2" innerHTML={jsonData} />
|
|
15
|
+
</>;
|
|
12
16
|
}
|
|
13
17
|
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
export function TemplateAroundIfBlock() {
|
|
19
|
+
return <>
|
|
20
|
+
const show = true;
|
|
21
|
+
<div>
|
|
22
|
+
<template id="before" innerHTML="before" />
|
|
23
|
+
if (show) {
|
|
24
|
+
<span class="inside">{'inside'}</span>
|
|
25
|
+
}
|
|
26
|
+
<template id="after" innerHTML="after" />
|
|
27
|
+
</div>
|
|
28
|
+
</>;
|
|
24
29
|
}
|