@supersoniks/concorde 4.9.97-visual-stack.0 → 4.9.98-visual-stack.1
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/build-infos.json +1 -1
- package/concorde-3d.bundle.js +201 -152
- package/concorde-3d.es.js +14621 -13823
- package/concorde-core.bundle.js +1 -1
- package/concorde-core.es.js +1 -1
- package/concorde-hugging-face-infer.bundle.js +1 -1
- package/concorde-hugging-face-infer.es.js +1 -1
- package/concorde-shader.bundle.js +31 -20
- package/concorde-shader.es.js +3236 -2865
- package/concorde-webgpu.bundle.js +43 -32
- package/concorde-webgpu.es.js +2977 -2618
- package/dist/concorde-3d.bundle.js +201 -152
- package/dist/concorde-3d.es.js +14621 -13823
- package/dist/concorde-core.bundle.js +1 -1
- package/dist/concorde-core.es.js +1 -1
- package/dist/concorde-hugging-face-infer.bundle.js +1 -1
- package/dist/concorde-hugging-face-infer.es.js +1 -1
- package/dist/concorde-shader.bundle.js +31 -20
- package/dist/concorde-shader.es.js +3236 -2865
- package/dist/concorde-webgpu.bundle.js +43 -32
- package/dist/concorde-webgpu.es.js +2977 -2618
- package/dist/js/core/components/functional/3d/3d.js +100 -2
- package/dist/js/core/components/functional/3d/3d.js.map +1 -1
- package/dist/js/core/components/functional/3d/constants.js +3 -0
- package/dist/js/core/components/functional/3d/constants.js.map +1 -1
- package/dist/js/core/components/functional/3d/ensure.js +6 -3
- package/dist/js/core/components/functional/3d/ensure.js.map +1 -1
- package/dist/js/core/components/functional/3d/form-params.js +2 -0
- package/dist/js/core/components/functional/3d/form-params.js.map +1 -1
- package/dist/js/core/components/functional/3d/frame-source.js +22 -0
- package/dist/js/core/components/functional/3d/frame-source.js.map +1 -0
- package/dist/js/core/components/functional/3d/life.js +2 -1
- package/dist/js/core/components/functional/3d/life.js.map +1 -1
- package/dist/js/core/components/functional/3d/out-publish.js +3 -2
- package/dist/js/core/components/functional/3d/out-publish.js.map +1 -1
- package/dist/js/core/components/functional/3d/playback.js +6 -1
- package/dist/js/core/components/functional/3d/playback.js.map +1 -1
- package/dist/js/core/components/functional/3d/post-bind.js +207 -0
- package/dist/js/core/components/functional/3d/post-bind.js.map +1 -0
- package/dist/js/core/components/functional/3d/post-channels.js +39 -0
- package/dist/js/core/components/functional/3d/post-channels.js.map +1 -0
- package/dist/js/core/components/functional/3d/post-fx.js +495 -0
- package/dist/js/core/components/functional/3d/post-fx.js.map +1 -0
- package/dist/js/core/components/functional/3d/props.js +142 -0
- package/dist/js/core/components/functional/3d/props.js.map +1 -1
- package/dist/js/core/components/functional/3d/reload.js +5 -0
- package/dist/js/core/components/functional/3d/reload.js.map +1 -1
- package/dist/js/core/components/functional/3d/runtime.js +80 -3
- package/dist/js/core/components/functional/3d/runtime.js.map +1 -1
- package/dist/js/core/components/functional/3d/scene-runtime.js +1 -1
- package/dist/js/core/components/functional/3d/scene-runtime.js.map +1 -1
- package/dist/js/core/components/functional/3d/tune.js +21 -0
- package/dist/js/core/components/functional/3d/tune.js.map +1 -1
- package/dist/js/core/components/functional/3d/updated.js +13 -1
- package/dist/js/core/components/functional/3d/updated.js.map +1 -1
- package/dist/js/core/components/functional/shader/gl-runtime.js +280 -31
- package/dist/js/core/components/functional/shader/gl-runtime.js.map +1 -1
- package/dist/js/core/components/functional/shader/shader.js +207 -61
- package/dist/js/core/components/functional/shader/shader.js.map +1 -1
- package/dist/js/core/components/functional/shader/shadertoy-prelude.js +39 -5
- package/dist/js/core/components/functional/shader/shadertoy-prelude.js.map +1 -1
- package/dist/js/core/components/functional/shader/types.js +58 -7
- package/dist/js/core/components/functional/shader/types.js.map +1 -1
- package/dist/js/core/components/functional/webgpu/gl-fallback.js +27 -6
- package/dist/js/core/components/functional/webgpu/gl-fallback.js.map +1 -1
- package/dist/js/core/components/functional/webgpu/gpu-runtime.js +115 -13
- package/dist/js/core/components/functional/webgpu/gpu-runtime.js.map +1 -1
- package/dist/js/core/components/functional/webgpu/helpers.js +8 -2
- package/dist/js/core/components/functional/webgpu/helpers.js.map +1 -1
- package/dist/js/core/components/functional/webgpu/webgpu.js +43 -1
- package/dist/js/core/components/functional/webgpu/webgpu.js.map +1 -1
- package/dist/js/core/utils/mediaRef.js +86 -0
- package/dist/js/core/utils/mediaRef.js.map +1 -1
- package/dist/types/core/components/functional/3d/3d.d.ts +31 -3
- package/dist/types/core/components/functional/3d/3d.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/constants.d.ts +1 -1
- package/dist/types/core/components/functional/3d/constants.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/ensure.d.ts +3 -0
- package/dist/types/core/components/functional/3d/ensure.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/form-params.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/frame-source.d.ts +23 -0
- package/dist/types/core/components/functional/3d/frame-source.d.ts.map +1 -0
- package/dist/types/core/components/functional/3d/life.d.ts +2 -0
- package/dist/types/core/components/functional/3d/life.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/out-publish.d.ts +1 -0
- package/dist/types/core/components/functional/3d/out-publish.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/playback.d.ts +9 -0
- package/dist/types/core/components/functional/3d/playback.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/post-bind.d.ts +52 -0
- package/dist/types/core/components/functional/3d/post-bind.d.ts.map +1 -0
- package/dist/types/core/components/functional/3d/post-channels.d.ts +40 -0
- package/dist/types/core/components/functional/3d/post-channels.d.ts.map +1 -0
- package/dist/types/core/components/functional/3d/post-fx.d.ts +73 -0
- package/dist/types/core/components/functional/3d/post-fx.d.ts.map +1 -0
- package/dist/types/core/components/functional/3d/props.d.ts +42 -0
- package/dist/types/core/components/functional/3d/props.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/reload.d.ts +3 -0
- package/dist/types/core/components/functional/3d/reload.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/runtime.d.ts +16 -1
- package/dist/types/core/components/functional/3d/runtime.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/scene-runtime.d.ts +1 -1
- package/dist/types/core/components/functional/3d/scene-runtime.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/tune.d.ts +5 -0
- package/dist/types/core/components/functional/3d/tune.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/types.d.ts +16 -0
- package/dist/types/core/components/functional/3d/types.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/updated.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/gl-runtime.d.ts +53 -2
- package/dist/types/core/components/functional/shader/gl-runtime.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/shader.d.ts +41 -9
- package/dist/types/core/components/functional/shader/shader.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/shadertoy-prelude.d.ts +16 -2
- package/dist/types/core/components/functional/shader/shadertoy-prelude.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/types.d.ts +35 -5
- package/dist/types/core/components/functional/shader/types.d.ts.map +1 -1
- package/dist/types/core/components/functional/webgpu/gl-fallback.d.ts +4 -0
- package/dist/types/core/components/functional/webgpu/gl-fallback.d.ts.map +1 -1
- package/dist/types/core/components/functional/webgpu/gpu-runtime.d.ts +14 -0
- package/dist/types/core/components/functional/webgpu/gpu-runtime.d.ts.map +1 -1
- package/dist/types/core/components/functional/webgpu/helpers.d.ts +1 -0
- package/dist/types/core/components/functional/webgpu/helpers.d.ts.map +1 -1
- package/dist/types/core/components/functional/webgpu/webgpu.d.ts +11 -1
- package/dist/types/core/components/functional/webgpu/webgpu.d.ts.map +1 -1
- package/dist/types/core/utils/mediaRef.d.ts +34 -0
- package/dist/types/core/utils/mediaRef.d.ts.map +1 -1
- package/package.json +49 -1
- package/src/core/components/functional/3d/3d.md +46 -3
- package/src/core/components/functional/3d/3d.spec.ts +42 -0
- package/src/core/components/functional/3d/3d.ts +112 -3
- package/src/core/components/functional/3d/constants.ts +3 -0
- package/src/core/components/functional/3d/ensure.ts +11 -3
- package/src/core/components/functional/3d/form-params.ts +2 -0
- package/src/core/components/functional/3d/frame-source.ts +30 -0
- package/src/core/components/functional/3d/life.ts +4 -1
- package/src/core/components/functional/3d/out-publish.ts +4 -3
- package/src/core/components/functional/3d/playback.ts +13 -1
- package/src/core/components/functional/3d/post-bind.ts +262 -0
- package/src/core/components/functional/3d/post-channels.spec.ts +36 -0
- package/src/core/components/functional/3d/post-channels.ts +69 -0
- package/src/core/components/functional/3d/post-fx.ts +594 -0
- package/src/core/components/functional/3d/props.ts +45 -0
- package/src/core/components/functional/3d/reload.ts +8 -0
- package/src/core/components/functional/3d/runtime.ts +93 -4
- package/src/core/components/functional/3d/scene-runtime.ts +3 -0
- package/src/core/components/functional/3d/tune.ts +21 -0
- package/src/core/components/functional/3d/types.ts +14 -0
- package/src/core/components/functional/3d/updated.ts +17 -1
- package/src/core/components/functional/shader/gl-runtime.ts +374 -36
- package/src/core/components/functional/shader/shader.md +36 -11
- package/src/core/components/functional/shader/shader.spec.ts +350 -3
- package/src/core/components/functional/shader/shader.ts +236 -59
- package/src/core/components/functional/shader/shadertoy-prelude.ts +49 -5
- package/src/core/components/functional/shader/types.ts +92 -13
- package/src/core/components/functional/webgpu/gl-fallback.ts +28 -4
- package/src/core/components/functional/webgpu/gpu-runtime.ts +154 -18
- package/src/core/components/functional/webgpu/helpers.ts +8 -2
- package/src/core/components/functional/webgpu/webgpu.md +13 -2
- package/src/core/components/functional/webgpu/webgpu.spec.ts +37 -0
- package/src/core/components/functional/webgpu/webgpu.ts +48 -1
- package/src/core/utils/mediaRef.spec.ts +61 -0
- package/src/core/utils/mediaRef.ts +108 -0
- package/src/docs/_misc/visual-stack.md +37 -3
- package/src/docs/components/docs-demo-sources.ts +42 -0
- package/src/docs/docs.ts +3 -0
- package/src/docs/example/docs-3d-post-depth-demo.ts +68 -0
- package/src/docs/example/docs-3d-shader-live-demo.ts +98 -0
- package/src/docs/example/docs-3d-webgpu-live-demo.ts +83 -0
- package/src/docs/example/docs-harris-webgpu-demo.ts +53 -55
- package/src/docs/search/docs-search.json +2583 -863
- package/src/tsconfig.json +36 -0
- package/src/tsconfig.tsbuildinfo +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"search": "
|
|
3
|
+
"search": "3D",
|
|
4
4
|
"files": {
|
|
5
|
-
"core/components/functional/
|
|
6
|
-
"title": "
|
|
5
|
+
"core/components/functional/3d/3d.md": {
|
|
6
|
+
"title": "3D",
|
|
7
7
|
"hashes": {
|
|
8
|
-
"
|
|
9
|
-
"count":
|
|
8
|
+
"3d": {
|
|
9
|
+
"count": 1,
|
|
10
10
|
"title": "",
|
|
11
11
|
"type": "page"
|
|
12
12
|
}
|
|
@@ -15,42 +15,12 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
"search": "
|
|
19
|
-
"files": {
|
|
20
|
-
"core/components/functional/date/date.md": {
|
|
21
|
-
"title": "Date",
|
|
22
|
-
"hashes": {
|
|
23
|
-
"no-attribute": {
|
|
24
|
-
"count": 1,
|
|
25
|
-
"title": "No attribute",
|
|
26
|
-
"type": "paragraph"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"search": "Displays the current date.\n",
|
|
34
|
-
"files": {
|
|
35
|
-
"core/components/functional/date/date.md": {
|
|
36
|
-
"title": "Date",
|
|
37
|
-
"hashes": {
|
|
38
|
-
"now": {
|
|
39
|
-
"count": 1,
|
|
40
|
-
"title": "Now",
|
|
41
|
-
"type": "paragraph"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"search": "Displays a date from a timestamp.\n",
|
|
18
|
+
"search": "sonic-3d — viewer Three.js (glTF / GLB), caméra orbit / perspective / ortho, outputs dataProvider paresseux.\n",
|
|
49
19
|
"files": {
|
|
50
|
-
"core/components/functional/
|
|
51
|
-
"title": "
|
|
20
|
+
"core/components/functional/3d/3d.md": {
|
|
21
|
+
"title": "3D",
|
|
52
22
|
"hashes": {
|
|
53
|
-
"
|
|
23
|
+
"3d": {
|
|
54
24
|
"count": 1,
|
|
55
25
|
"title": "",
|
|
56
26
|
"type": "paragraph"
|
|
@@ -60,112 +30,22 @@
|
|
|
60
30
|
}
|
|
61
31
|
},
|
|
62
32
|
{
|
|
63
|
-
"search": "
|
|
64
|
-
"files": {
|
|
65
|
-
"core/components/functional/date/date.md": {
|
|
66
|
-
"title": "Date",
|
|
67
|
-
"hashes": {
|
|
68
|
-
"date_string": {
|
|
69
|
-
"count": 1,
|
|
70
|
-
"title": "Date_string",
|
|
71
|
-
"type": "paragraph"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"search": "Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \n",
|
|
79
|
-
"files": {
|
|
80
|
-
"core/components/functional/date/date.md": {
|
|
81
|
-
"title": "Date",
|
|
82
|
-
"hashes": {
|
|
83
|
-
"start_date--end_date": {
|
|
84
|
-
"count": 1,
|
|
85
|
-
"title": "Start_date / end_date",
|
|
86
|
-
"type": "paragraph"
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"search": "ISO 639-1 Language Codes\n",
|
|
94
|
-
"files": {
|
|
95
|
-
"core/components/functional/date/date.md": {
|
|
96
|
-
"title": "Date",
|
|
97
|
-
"hashes": {
|
|
98
|
-
"language": {
|
|
99
|
-
"count": 1,
|
|
100
|
-
"title": "Language",
|
|
101
|
-
"type": "paragraph"
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"search": "For the list of supported timeZones, run Intl.supportedValuesOf('timeZone') in the console\n",
|
|
109
|
-
"files": {
|
|
110
|
-
"core/components/functional/date/date.md": {
|
|
111
|
-
"title": "Date",
|
|
112
|
-
"hashes": {
|
|
113
|
-
"time_zone": {
|
|
114
|
-
"count": 1,
|
|
115
|
-
"title": "Time_zone",
|
|
116
|
-
"type": "paragraph"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
"search": "Deprecated\n",
|
|
33
|
+
"search": "Import opt-in (hors bundle functional) :\n",
|
|
124
34
|
"files": {
|
|
125
|
-
"core/components/functional/
|
|
126
|
-
"title": "
|
|
35
|
+
"core/components/functional/3d/3d.md": {
|
|
36
|
+
"title": "3D",
|
|
127
37
|
"hashes": {
|
|
128
|
-
"
|
|
38
|
+
"3d": {
|
|
129
39
|
"count": 1,
|
|
130
|
-
"title": "
|
|
40
|
+
"title": "",
|
|
131
41
|
"type": "paragraph"
|
|
132
42
|
}
|
|
133
43
|
}
|
|
134
44
|
},
|
|
135
|
-
"core/components/functional/
|
|
136
|
-
"title": "
|
|
137
|
-
"hashes": {
|
|
138
|
-
"headersdataprovider": {
|
|
139
|
-
"count": 1,
|
|
140
|
-
"title": "HeadersDataProvider",
|
|
141
|
-
"type": "paragraph"
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"search": "Fetch",
|
|
149
|
-
"files": {
|
|
150
|
-
"core/components/functional/fetch/fetch.md": {
|
|
151
|
-
"title": "Fetch",
|
|
152
|
-
"hashes": {
|
|
153
|
-
"fetch": {
|
|
154
|
-
"count": 1,
|
|
155
|
-
"title": "",
|
|
156
|
-
"type": "page"
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"search": "New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL="/docs-mock-api") to try examples offline.\n",
|
|
164
|
-
"files": {
|
|
165
|
-
"core/components/functional/fetch/fetch.md": {
|
|
166
|
-
"title": "Fetch",
|
|
45
|
+
"core/components/functional/shader/shader.md": {
|
|
46
|
+
"title": "Shader",
|
|
167
47
|
"hashes": {
|
|
168
|
-
"
|
|
48
|
+
"shader": {
|
|
169
49
|
"count": 1,
|
|
170
50
|
"title": "",
|
|
171
51
|
"type": "paragraph"
|
|
@@ -175,12 +55,12 @@
|
|
|
175
55
|
}
|
|
176
56
|
},
|
|
177
57
|
{
|
|
178
|
-
"search": "
|
|
58
|
+
"search": "CDN (after the core): concorde-3d.bundle.js — see CDN addons.\n",
|
|
179
59
|
"files": {
|
|
180
|
-
"core/components/functional/
|
|
181
|
-
"title": "
|
|
60
|
+
"core/components/functional/3d/3d.md": {
|
|
61
|
+
"title": "3D",
|
|
182
62
|
"hashes": {
|
|
183
|
-
"
|
|
63
|
+
"3d": {
|
|
184
64
|
"count": 1,
|
|
185
65
|
"title": "",
|
|
186
66
|
"type": "paragraph"
|
|
@@ -190,44 +70,14 @@
|
|
|
190
70
|
}
|
|
191
71
|
},
|
|
192
72
|
{
|
|
193
|
-
"search": "
|
|
194
|
-
"files": {
|
|
195
|
-
"core/components/functional/fetch/fetch.md": {
|
|
196
|
-
"title": "Fetch",
|
|
197
|
-
"hashes": {
|
|
198
|
-
"basic-usage": {
|
|
199
|
-
"count": 1,
|
|
200
|
-
"title": "Basic usage",
|
|
201
|
-
"type": "paragraph"
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
"search": "If no endPoint is specified it will be filled by the dataProvider ID instead \n",
|
|
209
|
-
"files": {
|
|
210
|
-
"core/components/functional/fetch/fetch.md": {
|
|
211
|
-
"title": "Fetch",
|
|
212
|
-
"hashes": {
|
|
213
|
-
"dataprovider-as-an-endpoint": {
|
|
214
|
-
"count": 1,
|
|
215
|
-
"title": "DataProvider as an endPoint",
|
|
216
|
-
"type": "paragraph"
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
"search": "When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\nWe can use the dot syntax to target what we want to keep.\n",
|
|
73
|
+
"search": "DamagedHelmet (Khronos, jsDelivr). Orbit · zoom · pan · survol highlight · pick · double-clic = recentrer. Sans src : cube de démo. Molette : zoom tant qu’il reste de la marge ; aux bornes minDistance / maxDistance, le scroll page reprend.\n",
|
|
224
74
|
"files": {
|
|
225
|
-
"core/components/functional/
|
|
226
|
-
"title": "
|
|
75
|
+
"core/components/functional/3d/3d.md": {
|
|
76
|
+
"title": "3D",
|
|
227
77
|
"hashes": {
|
|
228
|
-
"
|
|
78
|
+
"démo-modèle-cdn": {
|
|
229
79
|
"count": 1,
|
|
230
|
-
"title": "
|
|
80
|
+
"title": "Démo (modèle CDN)",
|
|
231
81
|
"type": "paragraph"
|
|
232
82
|
}
|
|
233
83
|
}
|
|
@@ -235,89 +85,49 @@
|
|
|
235
85
|
}
|
|
236
86
|
},
|
|
237
87
|
{
|
|
238
|
-
"search": "
|
|
88
|
+
"search": "\n",
|
|
239
89
|
"files": {
|
|
240
|
-
"core/components/functional/
|
|
241
|
-
"title": "
|
|
90
|
+
"core/components/functional/3d/3d.md": {
|
|
91
|
+
"title": "3D",
|
|
242
92
|
"hashes": {
|
|
243
|
-
"
|
|
93
|
+
"démo-modèle-cdn": {
|
|
244
94
|
"count": 1,
|
|
245
|
-
"title": "
|
|
95
|
+
"title": "Démo (modèle CDN)",
|
|
246
96
|
"type": "paragraph"
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
"search": "if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named "text" which contains the text returned by the service.\n",
|
|
254
|
-
"files": {
|
|
255
|
-
"core/components/functional/fetch/fetch.md": {
|
|
256
|
-
"title": "Fetch",
|
|
257
|
-
"hashes": {
|
|
258
|
-
"text-mode": {
|
|
97
|
+
},
|
|
98
|
+
"form-auto-bind-formdataprovider": {
|
|
259
99
|
"count": 1,
|
|
260
|
-
"title": "
|
|
100
|
+
"title": "Form auto-bind (`formDataProvider`)",
|
|
261
101
|
"type": "paragraph"
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
"search": "The noLoader attribute disables display of the default loader\n",
|
|
269
|
-
"files": {
|
|
270
|
-
"core/components/functional/fetch/fetch.md": {
|
|
271
|
-
"title": "Fetch",
|
|
272
|
-
"hashes": {
|
|
273
|
-
"noloader": {
|
|
102
|
+
},
|
|
103
|
+
"sortie--dataprovider": {
|
|
274
104
|
"count": 1,
|
|
275
|
-
"title": "
|
|
105
|
+
"title": "Sortie / dataProvider",
|
|
276
106
|
"type": "paragraph"
|
|
277
107
|
}
|
|
278
108
|
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
"search": "if",
|
|
284
|
-
"files": {
|
|
109
|
+
},
|
|
285
110
|
"core/components/functional/if/if.md": {
|
|
286
111
|
"title": "if",
|
|
287
112
|
"hashes": {
|
|
288
113
|
"if": {
|
|
289
114
|
"count": 1,
|
|
290
115
|
"title": "",
|
|
291
|
-
"type": "
|
|
116
|
+
"type": "paragraph"
|
|
292
117
|
}
|
|
293
118
|
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
{
|
|
298
|
-
"search": "The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\n",
|
|
299
|
-
"files": {
|
|
300
|
-
"core/components/functional/if/if.md": {
|
|
301
|
-
"title": "if",
|
|
119
|
+
},
|
|
120
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
121
|
+
"title": "Hugging Face infer",
|
|
302
122
|
"hashes": {
|
|
303
|
-
"
|
|
123
|
+
"image--background-removal": {
|
|
304
124
|
"count": 1,
|
|
305
|
-
"title": "",
|
|
125
|
+
"title": "Image — `background-removal`",
|
|
306
126
|
"type": "paragraph"
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
"search": "\n",
|
|
314
|
-
"files": {
|
|
315
|
-
"core/components/functional/if/if.md": {
|
|
316
|
-
"title": "if",
|
|
317
|
-
"hashes": {
|
|
318
|
-
"if": {
|
|
127
|
+
},
|
|
128
|
+
"text--zero-shot-classification": {
|
|
319
129
|
"count": 1,
|
|
320
|
-
"title": "",
|
|
130
|
+
"title": "Text — `zero-shot-classification`",
|
|
321
131
|
"type": "paragraph"
|
|
322
132
|
}
|
|
323
133
|
}
|
|
@@ -392,27 +202,52 @@
|
|
|
392
202
|
}
|
|
393
203
|
}
|
|
394
204
|
},
|
|
395
|
-
"core/components/functional/
|
|
396
|
-
"title": "
|
|
205
|
+
"core/components/functional/shader/shader.md": {
|
|
206
|
+
"title": "Shader",
|
|
397
207
|
"hashes": {
|
|
398
|
-
"
|
|
208
|
+
"multipass-sur-une-photo": {
|
|
399
209
|
"count": 1,
|
|
400
|
-
"title": "
|
|
210
|
+
"title": "Multipass sur une photo",
|
|
401
211
|
"type": "paragraph"
|
|
402
212
|
},
|
|
403
|
-
"
|
|
213
|
+
"chaînage-deffets-officiel": {
|
|
404
214
|
"count": 1,
|
|
405
|
-
"title": "
|
|
215
|
+
"title": "Chaînage d’effets (officiel)",
|
|
406
216
|
"type": "paragraph"
|
|
407
217
|
},
|
|
408
|
-
"
|
|
218
|
+
"rollover--roll-out-hover-param": {
|
|
409
219
|
"count": 1,
|
|
410
|
-
"title": "
|
|
220
|
+
"title": "Rollover / roll-out (`hover-param`)",
|
|
411
221
|
"type": "paragraph"
|
|
412
222
|
},
|
|
413
|
-
"
|
|
223
|
+
"sortie--sampling-sample--dataprovider": {
|
|
414
224
|
"count": 1,
|
|
415
|
-
"title": "
|
|
225
|
+
"title": "Sortie / sampling (`sample` + dataProvider)",
|
|
226
|
+
"type": "paragraph"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"core/components/functional/submit/submit.md": {
|
|
231
|
+
"title": "Submit",
|
|
232
|
+
"hashes": {
|
|
233
|
+
"form-and-result-handling": {
|
|
234
|
+
"count": 1,
|
|
235
|
+
"title": "Form and result handling",
|
|
236
|
+
"type": "paragraph"
|
|
237
|
+
},
|
|
238
|
+
"native-html-form": {
|
|
239
|
+
"count": 1,
|
|
240
|
+
"title": "Native HTML form",
|
|
241
|
+
"type": "paragraph"
|
|
242
|
+
},
|
|
243
|
+
"sendasformdata": {
|
|
244
|
+
"count": 1,
|
|
245
|
+
"title": "sendAsFormData",
|
|
246
|
+
"type": "paragraph"
|
|
247
|
+
},
|
|
248
|
+
"submit-result-key": {
|
|
249
|
+
"count": 1,
|
|
250
|
+
"title": "submit-result-key",
|
|
416
251
|
"type": "paragraph"
|
|
417
252
|
},
|
|
418
253
|
"cleareddataonsuccess": {
|
|
@@ -437,6 +272,16 @@
|
|
|
437
272
|
}
|
|
438
273
|
}
|
|
439
274
|
},
|
|
275
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
276
|
+
"title": "WebGPU",
|
|
277
|
+
"hashes": {
|
|
278
|
+
"demo--particles-compute": {
|
|
279
|
+
"count": 1,
|
|
280
|
+
"title": "Demo — particles (compute)",
|
|
281
|
+
"type": "paragraph"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
},
|
|
440
285
|
"core/components/ui/form/checkbox/checkbox.md": {
|
|
441
286
|
"title": "Checkbox",
|
|
442
287
|
"hashes": {
|
|
@@ -462,31 +307,6 @@
|
|
|
462
307
|
}
|
|
463
308
|
}
|
|
464
309
|
},
|
|
465
|
-
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
466
|
-
"title": "Input-autocomplete",
|
|
467
|
-
"hashes": {
|
|
468
|
-
"simple": {
|
|
469
|
-
"count": 1,
|
|
470
|
-
"title": "Simple",
|
|
471
|
-
"type": "paragraph"
|
|
472
|
-
},
|
|
473
|
-
"valeur--paramètre-de-recherche": {
|
|
474
|
-
"count": 1,
|
|
475
|
-
"title": "Valeur ≠ paramètre de recherche",
|
|
476
|
-
"type": "paragraph"
|
|
477
|
-
},
|
|
478
|
-
"mode-select": {
|
|
479
|
-
"count": 1,
|
|
480
|
-
"title": "Mode select",
|
|
481
|
-
"type": "paragraph"
|
|
482
|
-
},
|
|
483
|
-
"navigation-clavier": {
|
|
484
|
-
"count": 1,
|
|
485
|
-
"title": "Navigation clavier",
|
|
486
|
-
"type": "paragraph"
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
},
|
|
490
310
|
"core/components/ui/form/radio/radio.md": {
|
|
491
311
|
"title": "Radio",
|
|
492
312
|
"hashes": {
|
|
@@ -520,54 +340,1474 @@
|
|
|
520
340
|
"core/components/ui/icon/icon.md": {
|
|
521
341
|
"title": "Icon",
|
|
522
342
|
"hashes": {
|
|
523
|
-
"custom": {
|
|
343
|
+
"custom": {
|
|
344
|
+
"count": 1,
|
|
345
|
+
"title": "Custom",
|
|
346
|
+
"type": "paragraph"
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
"core/components/ui/loader/loader.md": {
|
|
351
|
+
"title": "Loader",
|
|
352
|
+
"hashes": {
|
|
353
|
+
"fixed-mode": {
|
|
354
|
+
"count": 1,
|
|
355
|
+
"title": "Fixed mode",
|
|
356
|
+
"type": "paragraph"
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"docs/_misc/api-configuration.md": {
|
|
361
|
+
"title": "API configuration",
|
|
362
|
+
"hashes": {
|
|
363
|
+
"bearer-token-static": {
|
|
364
|
+
"count": 1,
|
|
365
|
+
"title": "Bearer token (static)",
|
|
366
|
+
"type": "paragraph"
|
|
367
|
+
},
|
|
368
|
+
"tokenprovider--basic-auth": {
|
|
369
|
+
"count": 1,
|
|
370
|
+
"title": "tokenProvider + Basic auth",
|
|
371
|
+
"type": "paragraph"
|
|
372
|
+
},
|
|
373
|
+
"http-498--stale-token-refresh": {
|
|
374
|
+
"count": 1,
|
|
375
|
+
"title": "HTTP 498 — stale token refresh",
|
|
376
|
+
"type": "paragraph"
|
|
377
|
+
},
|
|
378
|
+
"eventsapitoken": {
|
|
379
|
+
"count": 1,
|
|
380
|
+
"title": "eventsApiToken",
|
|
381
|
+
"type": "paragraph"
|
|
382
|
+
},
|
|
383
|
+
"wording-api": {
|
|
384
|
+
"count": 1,
|
|
385
|
+
"title": "Wording API",
|
|
386
|
+
"type": "paragraph"
|
|
387
|
+
},
|
|
388
|
+
"scoped-attributes-html--sonic-scope": {
|
|
389
|
+
"count": 1,
|
|
390
|
+
"title": "Scoped attributes (HTML / sonic-scope)",
|
|
391
|
+
"type": "paragraph"
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
"docs/_misc/visual-stack.md": {
|
|
396
|
+
"title": "Visual stack",
|
|
397
|
+
"hashes": {
|
|
398
|
+
"demo": {
|
|
399
|
+
"count": 1,
|
|
400
|
+
"title": "Demo",
|
|
401
|
+
"type": "paragraph"
|
|
402
|
+
},
|
|
403
|
+
"3d--shader-live-gpu-bridge": {
|
|
404
|
+
"count": 1,
|
|
405
|
+
"title": "3D → shader live (GPU bridge)",
|
|
406
|
+
"type": "paragraph"
|
|
407
|
+
},
|
|
408
|
+
"3d--webgpu-live": {
|
|
409
|
+
"count": 1,
|
|
410
|
+
"title": "3D → WebGPU live",
|
|
411
|
+
"type": "paragraph"
|
|
412
|
+
},
|
|
413
|
+
"post-fx--depth-in-sonic-3d": {
|
|
414
|
+
"count": 1,
|
|
415
|
+
"title": "Post FX + depth (in sonic-3d)",
|
|
416
|
+
"type": "paragraph"
|
|
417
|
+
},
|
|
418
|
+
"harris--patches--webgpu": {
|
|
419
|
+
"count": 1,
|
|
420
|
+
"title": "Harris → patches → WebGPU",
|
|
421
|
+
"type": "paragraph"
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"search": "Comme sonic-shader : si dataProvider (ou un ancêtre formDataProvider) contient des champs aux mêmes noms que l’API, ils pilotent le viewer sans JS.\n",
|
|
429
|
+
"files": {
|
|
430
|
+
"core/components/functional/3d/3d.md": {
|
|
431
|
+
"title": "3D",
|
|
432
|
+
"hashes": {
|
|
433
|
+
"form-auto-bind-formdataprovider": {
|
|
434
|
+
"count": 1,
|
|
435
|
+
"title": "Form auto-bind (`formDataProvider`)",
|
|
436
|
+
"type": "paragraph"
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"search": "Conseil : séparer out-data-provider du form. Les entrées pures (fov, exposure, autoRotate, src…) ne sont jamais réécrites en out sur un DP partagé. yaw / distance / pitch restent publiables ; un changement manuel d’orbit coupe autoRotate.\n",
|
|
444
|
+
"files": {
|
|
445
|
+
"core/components/functional/3d/3d.md": {
|
|
446
|
+
"title": "3D",
|
|
447
|
+
"hashes": {
|
|
448
|
+
"form-auto-bind-formdataprovider": {
|
|
449
|
+
"count": 1,
|
|
450
|
+
"title": "Form auto-bind (`formDataProvider`)",
|
|
451
|
+
"type": "paragraph"
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"search": "Gate paresseuse : un sonic-input name="yaw" ne déclenche pas la publication out (seul un lecteur sur ready / frame / cam* / hit*… le fait).\n",
|
|
459
|
+
"files": {
|
|
460
|
+
"core/components/functional/3d/3d.md": {
|
|
461
|
+
"title": "3D",
|
|
462
|
+
"hashes": {
|
|
463
|
+
"form-auto-bind-formdataprovider": {
|
|
464
|
+
"count": 1,
|
|
465
|
+
"title": "Form auto-bind (`formDataProvider`)",
|
|
466
|
+
"type": "paragraph"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"search": "Entrée : champs ci-dessus. Sortie (Sonic3dOutput) : cam* / target* / distance / yaw / pitch / pointer* / ready / hit*… With frame-out (or a listener on frameUrl / snapshot): lazy JPEG canvas capture → frameUrl + snapshot (SonicMediaRef). Event out. Publication paresseuse.\n",
|
|
474
|
+
"files": {
|
|
475
|
+
"core/components/functional/3d/3d.md": {
|
|
476
|
+
"title": "3D",
|
|
477
|
+
"hashes": {
|
|
478
|
+
"sortie--dataprovider": {
|
|
479
|
+
"count": 1,
|
|
480
|
+
"title": "Sortie / dataProvider",
|
|
481
|
+
"type": "paragraph"
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"search": "Le viewer lit asset ou src depuis le DP — la source (fetch, upload, HF) n’est pas couplée.\n",
|
|
489
|
+
"files": {
|
|
490
|
+
"core/components/functional/3d/3d.md": {
|
|
491
|
+
"title": "3D",
|
|
492
|
+
"hashes": {
|
|
493
|
+
"asset-neutre-hf-plus-tard": {
|
|
494
|
+
"count": 1,
|
|
495
|
+
"title": "Asset neutre (HF plus tard)",
|
|
496
|
+
"type": "paragraph"
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"search": "No shared WebGL context between sonic-3d and sonic-shader.\n",
|
|
504
|
+
"files": {
|
|
505
|
+
"core/components/functional/3d/3d.md": {
|
|
506
|
+
"title": "3D",
|
|
507
|
+
"hashes": {
|
|
508
|
+
"shader-bridging": {
|
|
509
|
+
"count": 1,
|
|
510
|
+
"title": "Shader bridging",
|
|
511
|
+
"type": "paragraph"
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"search": "Demo: Visual stack — 3D → shader live.\n",
|
|
519
|
+
"files": {
|
|
520
|
+
"core/components/functional/3d/3d.md": {
|
|
521
|
+
"title": "3D",
|
|
522
|
+
"hashes": {
|
|
523
|
+
"shader-bridging": {
|
|
524
|
+
"count": 1,
|
|
525
|
+
"title": "Shader bridging",
|
|
526
|
+
"type": "paragraph"
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"search": "Un sonic-shader / sonic-webgpu qui pointe #id s’enregistre via registerFrameConsumer : le 3D continue hors viewport (pas de dispose). Option explicite : play-offscreen.\n",
|
|
534
|
+
"files": {
|
|
535
|
+
"core/components/functional/3d/3d.md": {
|
|
536
|
+
"title": "3D",
|
|
537
|
+
"hashes": {
|
|
538
|
+
"shader-bridging": {
|
|
539
|
+
"count": 1,
|
|
540
|
+
"title": "Shader bridging",
|
|
541
|
+
"type": "paragraph"
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"search": "el.stopMotion() coupe autoRotate et l’inertie OrbitControls. Quand la caméra est immobile depuis ~8 frames : event rest + champ out moving: 0|1. Attribut damping (défaut 0.08, 0 = off).\n",
|
|
549
|
+
"files": {
|
|
550
|
+
"core/components/functional/3d/3d.md": {
|
|
551
|
+
"title": "3D",
|
|
552
|
+
"hashes": {
|
|
553
|
+
"arrêt-net": {
|
|
554
|
+
"count": 1,
|
|
555
|
+
"title": "Arrêt net",
|
|
556
|
+
"type": "paragraph"
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"search": "When post-image is set, the scene renders to an offscreen target with a depth texture, then ShaderToy-style passes run inside the same Three context (post-buffer-a…post-image). Same GLSL as sonic-shader (mainImage, iChannel0–3, uParam0–3, sonicLinearDepth).\n",
|
|
564
|
+
"files": {
|
|
565
|
+
"core/components/functional/3d/3d.md": {
|
|
566
|
+
"title": "3D",
|
|
567
|
+
"hashes": {
|
|
568
|
+
"post-fx-in-viewer": {
|
|
569
|
+
"count": 1,
|
|
570
|
+
"title": "Post FX (in-viewer)",
|
|
571
|
+
"type": "paragraph"
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"search": "Demo: Visual stack — post depth edges.\n",
|
|
579
|
+
"files": {
|
|
580
|
+
"core/components/functional/3d/3d.md": {
|
|
581
|
+
"title": "3D",
|
|
582
|
+
"hashes": {
|
|
583
|
+
"post-fx-in-viewer": {
|
|
584
|
+
"count": 1,
|
|
585
|
+
"title": "Post FX (in-viewer)",
|
|
586
|
+
"type": "paragraph"
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
"search": "Pick / orbit still use scene geometry; frame-out captures the final canvas after post.\n",
|
|
594
|
+
"files": {
|
|
595
|
+
"core/components/functional/3d/3d.md": {
|
|
596
|
+
"title": "3D",
|
|
597
|
+
"hashes": {
|
|
598
|
+
"post-fx-in-viewer": {
|
|
599
|
+
"count": 1,
|
|
600
|
+
"title": "Post FX (in-viewer)",
|
|
601
|
+
"type": "paragraph"
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
"search": "Date",
|
|
609
|
+
"files": {
|
|
610
|
+
"core/components/functional/date/date.md": {
|
|
611
|
+
"title": "Date",
|
|
612
|
+
"hashes": {
|
|
613
|
+
"date": {
|
|
614
|
+
"count": 2,
|
|
615
|
+
"title": "",
|
|
616
|
+
"type": "page"
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"search": "Nothing is displayed.\n",
|
|
624
|
+
"files": {
|
|
625
|
+
"core/components/functional/date/date.md": {
|
|
626
|
+
"title": "Date",
|
|
627
|
+
"hashes": {
|
|
628
|
+
"no-attribute": {
|
|
629
|
+
"count": 1,
|
|
630
|
+
"title": "No attribute",
|
|
631
|
+
"type": "paragraph"
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"search": "Displays the current date.\n",
|
|
639
|
+
"files": {
|
|
640
|
+
"core/components/functional/date/date.md": {
|
|
641
|
+
"title": "Date",
|
|
642
|
+
"hashes": {
|
|
643
|
+
"now": {
|
|
644
|
+
"count": 1,
|
|
645
|
+
"title": "Now",
|
|
646
|
+
"type": "paragraph"
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"search": "Displays a date from a timestamp.\n",
|
|
654
|
+
"files": {
|
|
655
|
+
"core/components/functional/date/date.md": {
|
|
656
|
+
"title": "Date",
|
|
657
|
+
"hashes": {
|
|
658
|
+
"date": {
|
|
659
|
+
"count": 1,
|
|
660
|
+
"title": "",
|
|
661
|
+
"type": "paragraph"
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"search": "Displays a date from a string.\n",
|
|
669
|
+
"files": {
|
|
670
|
+
"core/components/functional/date/date.md": {
|
|
671
|
+
"title": "Date",
|
|
672
|
+
"hashes": {
|
|
673
|
+
"date_string": {
|
|
674
|
+
"count": 1,
|
|
675
|
+
"title": "Date_string",
|
|
676
|
+
"type": "paragraph"
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
"search": "Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \n",
|
|
684
|
+
"files": {
|
|
685
|
+
"core/components/functional/date/date.md": {
|
|
686
|
+
"title": "Date",
|
|
687
|
+
"hashes": {
|
|
688
|
+
"start_date--end_date": {
|
|
689
|
+
"count": 1,
|
|
690
|
+
"title": "Start_date / end_date",
|
|
691
|
+
"type": "paragraph"
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"search": "ISO 639-1 Language Codes\n",
|
|
699
|
+
"files": {
|
|
700
|
+
"core/components/functional/date/date.md": {
|
|
701
|
+
"title": "Date",
|
|
702
|
+
"hashes": {
|
|
703
|
+
"language": {
|
|
704
|
+
"count": 1,
|
|
705
|
+
"title": "Language",
|
|
706
|
+
"type": "paragraph"
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"search": "For the list of supported timeZones, run Intl.supportedValuesOf('timeZone') in the console\n",
|
|
714
|
+
"files": {
|
|
715
|
+
"core/components/functional/date/date.md": {
|
|
716
|
+
"title": "Date",
|
|
717
|
+
"hashes": {
|
|
718
|
+
"time_zone": {
|
|
719
|
+
"count": 1,
|
|
720
|
+
"title": "Time_zone",
|
|
721
|
+
"type": "paragraph"
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
"search": "Deprecated\n",
|
|
729
|
+
"files": {
|
|
730
|
+
"core/components/functional/date/date.md": {
|
|
731
|
+
"title": "Date",
|
|
732
|
+
"hashes": {
|
|
733
|
+
"renderif": {
|
|
734
|
+
"count": 1,
|
|
735
|
+
"title": ".renderIf",
|
|
736
|
+
"type": "paragraph"
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
"core/components/functional/fetch/fetch.md": {
|
|
741
|
+
"title": "Fetch",
|
|
742
|
+
"hashes": {
|
|
743
|
+
"headersdataprovider": {
|
|
744
|
+
"count": 1,
|
|
745
|
+
"title": "HeadersDataProvider",
|
|
746
|
+
"type": "paragraph"
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
"search": "Fetch",
|
|
754
|
+
"files": {
|
|
755
|
+
"core/components/functional/fetch/fetch.md": {
|
|
756
|
+
"title": "Fetch",
|
|
757
|
+
"hashes": {
|
|
758
|
+
"fetch": {
|
|
759
|
+
"count": 1,
|
|
760
|
+
"title": "",
|
|
761
|
+
"type": "page"
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"search": "New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL="/docs-mock-api") to try examples offline.\n",
|
|
769
|
+
"files": {
|
|
770
|
+
"core/components/functional/fetch/fetch.md": {
|
|
771
|
+
"title": "Fetch",
|
|
772
|
+
"hashes": {
|
|
773
|
+
"fetch": {
|
|
774
|
+
"count": 1,
|
|
775
|
+
"title": "",
|
|
776
|
+
"type": "paragraph"
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
},
|
|
782
|
+
{
|
|
783
|
+
"search": "The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.\n",
|
|
784
|
+
"files": {
|
|
785
|
+
"core/components/functional/fetch/fetch.md": {
|
|
786
|
+
"title": "Fetch",
|
|
787
|
+
"hashes": {
|
|
788
|
+
"fetch": {
|
|
789
|
+
"count": 1,
|
|
790
|
+
"title": "",
|
|
791
|
+
"type": "paragraph"
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
"search": "In order to work properly the sonic-fetch component needs at least the following attributes. \n",
|
|
799
|
+
"files": {
|
|
800
|
+
"core/components/functional/fetch/fetch.md": {
|
|
801
|
+
"title": "Fetch",
|
|
802
|
+
"hashes": {
|
|
803
|
+
"basic-usage": {
|
|
804
|
+
"count": 1,
|
|
805
|
+
"title": "Basic usage",
|
|
806
|
+
"type": "paragraph"
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"search": "If no endPoint is specified it will be filled by the dataProvider ID instead \n",
|
|
814
|
+
"files": {
|
|
815
|
+
"core/components/functional/fetch/fetch.md": {
|
|
816
|
+
"title": "Fetch",
|
|
817
|
+
"hashes": {
|
|
818
|
+
"dataprovider-as-an-endpoint": {
|
|
819
|
+
"count": 1,
|
|
820
|
+
"title": "DataProvider as an endPoint",
|
|
821
|
+
"type": "paragraph"
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"search": "When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\nWe can use the dot syntax to target what we want to keep.\n",
|
|
829
|
+
"files": {
|
|
830
|
+
"core/components/functional/fetch/fetch.md": {
|
|
831
|
+
"title": "Fetch",
|
|
832
|
+
"hashes": {
|
|
833
|
+
"key": {
|
|
834
|
+
"count": 1,
|
|
835
|
+
"title": "Key",
|
|
836
|
+
"type": "paragraph"
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
"search": "For example if the data is {my:{data:{a:1,b:2}}} and the key is key="my.data", the data available in the dataProvider will be {a:1 , b:2}\n",
|
|
844
|
+
"files": {
|
|
845
|
+
"core/components/functional/fetch/fetch.md": {
|
|
846
|
+
"title": "Fetch",
|
|
847
|
+
"hashes": {
|
|
848
|
+
"key": {
|
|
849
|
+
"count": 1,
|
|
850
|
+
"title": "Key",
|
|
851
|
+
"type": "paragraph"
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"search": "if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named "text" which contains the text returned by the service.\n",
|
|
859
|
+
"files": {
|
|
860
|
+
"core/components/functional/fetch/fetch.md": {
|
|
861
|
+
"title": "Fetch",
|
|
862
|
+
"hashes": {
|
|
863
|
+
"text-mode": {
|
|
864
|
+
"count": 1,
|
|
865
|
+
"title": "Text mode",
|
|
866
|
+
"type": "paragraph"
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
"search": "The noLoader attribute disables display of the default loader\n",
|
|
874
|
+
"files": {
|
|
875
|
+
"core/components/functional/fetch/fetch.md": {
|
|
876
|
+
"title": "Fetch",
|
|
877
|
+
"hashes": {
|
|
878
|
+
"noloader": {
|
|
879
|
+
"count": 1,
|
|
880
|
+
"title": "NoLoader",
|
|
881
|
+
"type": "paragraph"
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
"search": "if",
|
|
889
|
+
"files": {
|
|
890
|
+
"core/components/functional/if/if.md": {
|
|
891
|
+
"title": "if",
|
|
892
|
+
"hashes": {
|
|
893
|
+
"if": {
|
|
894
|
+
"count": 1,
|
|
895
|
+
"title": "",
|
|
896
|
+
"type": "page"
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"search": "The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\n",
|
|
904
|
+
"files": {
|
|
905
|
+
"core/components/functional/if/if.md": {
|
|
906
|
+
"title": "if",
|
|
907
|
+
"hashes": {
|
|
908
|
+
"if": {
|
|
909
|
+
"count": 1,
|
|
910
|
+
"title": "",
|
|
911
|
+
"type": "paragraph"
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"search": "Plain HTML without Lit: HTML integration.\n",
|
|
919
|
+
"files": {
|
|
920
|
+
"core/components/functional/if/if.md": {
|
|
921
|
+
"title": "if",
|
|
922
|
+
"hashes": {
|
|
923
|
+
"if": {
|
|
924
|
+
"count": 1,
|
|
925
|
+
"title": "",
|
|
926
|
+
"type": "paragraph"
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
"search": "Hugging Face infer",
|
|
934
|
+
"files": {
|
|
935
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
936
|
+
"title": "Hugging Face infer",
|
|
937
|
+
"hashes": {
|
|
938
|
+
"hugging-face-infer": {
|
|
939
|
+
"count": 1,
|
|
940
|
+
"title": "",
|
|
941
|
+
"type": "page"
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
"search": "sonic-hugging-face-infer: 1 input → Hugging Face model → 1 output (readonly), computed in the browser with Transformers.js. Data never leaves the device.\n",
|
|
949
|
+
"files": {
|
|
950
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
951
|
+
"title": "Hugging Face infer",
|
|
952
|
+
"hashes": {
|
|
953
|
+
"hugging-face-infer": {
|
|
954
|
+
"count": 1,
|
|
955
|
+
"title": "",
|
|
956
|
+
"type": "paragraph"
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"search": "The name names the engine: other inference paths (server, browser AI, …) will get their own sonic-<engine>-infer, with the same attributes, states, and typed outputs.\n",
|
|
964
|
+
"files": {
|
|
965
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
966
|
+
"title": "Hugging Face infer",
|
|
967
|
+
"hashes": {
|
|
968
|
+
"hugging-face-infer": {
|
|
969
|
+
"count": 1,
|
|
970
|
+
"title": "",
|
|
971
|
+
"type": "paragraph"
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"search": "Each demo stays idle until you click Try. The model downloads only after consent.\n",
|
|
979
|
+
"files": {
|
|
980
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
981
|
+
"title": "Hugging Face infer",
|
|
982
|
+
"hashes": {
|
|
983
|
+
"examples": {
|
|
984
|
+
"count": 1,
|
|
985
|
+
"title": "Examples",
|
|
986
|
+
"type": "paragraph"
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"search": "Image + depth / shader chains: Visual stack.\n",
|
|
994
|
+
"files": {
|
|
995
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
996
|
+
"title": "Hugging Face infer",
|
|
997
|
+
"hashes": {
|
|
998
|
+
"text--zero-shot-classification": {
|
|
999
|
+
"count": 1,
|
|
1000
|
+
"title": "Text — `zero-shot-classification`",
|
|
1001
|
+
"type": "paragraph"
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
"search": "Same component, different allowlist alias. Common patterns:\n",
|
|
1009
|
+
"files": {
|
|
1010
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1011
|
+
"title": "Hugging Face infer",
|
|
1012
|
+
"hashes": {
|
|
1013
|
+
"other-tasks-markup": {
|
|
1014
|
+
"count": 1,
|
|
1015
|
+
"title": "Other tasks (markup)",
|
|
1016
|
+
"type": "paragraph"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
"search": "<!-- Translation FR → EN -->\n<sonic-hugging-face-infer\n model="fr-en"\n inputProvider="event.edito.description"\n outputProvider="event.edito.descriptionEn"\n load="consent"\n trigger="demand"\n triggerProvider="translateClick"\n></sonic-hugging-face-infer>\n",
|
|
1024
|
+
"files": {
|
|
1025
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1026
|
+
"title": "Hugging Face infer",
|
|
1027
|
+
"hashes": {
|
|
1028
|
+
"other-tasks-markup": {
|
|
1029
|
+
"count": 1,
|
|
1030
|
+
"title": "Other tasks (markup)",
|
|
1031
|
+
"type": "paragraph"
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
"search": "<!-- Dictation (Whisper) -->\n<sonic-hugging-face-infer\n model="whisper-tiny"\n inputProvider="voice.clipUrl"\n outputProvider="voice.transcript"\n load="consent"\n></sonic-hugging-face-infer>\n \n\n",
|
|
1039
|
+
"files": {
|
|
1040
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1041
|
+
"title": "Hugging Face infer",
|
|
1042
|
+
"hashes": {
|
|
1043
|
+
"other-tasks-markup": {
|
|
1044
|
+
"count": 1,
|
|
1045
|
+
"title": "Other tasks (markup)",
|
|
1046
|
+
"type": "paragraph"
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
},
|
|
1052
|
+
{
|
|
1053
|
+
"search": "Load concorde-hugging-face-infer.bundle.js after the core, then call ConcordeHF.configureHuggingFace(…) once. Details: CDN addons.\n",
|
|
1054
|
+
"files": {
|
|
1055
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1056
|
+
"title": "Hugging Face infer",
|
|
1057
|
+
"hashes": {
|
|
1058
|
+
"cdn-script--bootstrap": {
|
|
1059
|
+
"count": 1,
|
|
1060
|
+
"title": "CDN (script + bootstrap)",
|
|
1061
|
+
"type": "paragraph"
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
"search": "The script checks that ONNX Runtime binaries are exactly those expected by Transformers.js. Serve the folder with Cache-Control: public, max-age=31536000, immutable: the path includes the version and never changes. To upgrade: new folder, regression tests, then change version / url in config. The previous version can stay served.\n",
|
|
1069
|
+
"files": {
|
|
1070
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1071
|
+
"title": "Hugging Face infer",
|
|
1072
|
+
"hashes": {
|
|
1073
|
+
"1-pin-and-host-the-runtime": {
|
|
1074
|
+
"count": 1,
|
|
1075
|
+
"title": "1. Pin and host the runtime",
|
|
1076
|
+
"type": "paragraph"
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
"search": "The script prints size (sizeBytes) and license for you to verify.\n",
|
|
1084
|
+
"files": {
|
|
1085
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1086
|
+
"title": "Hugging Face infer",
|
|
1087
|
+
"hashes": {
|
|
1088
|
+
"2-host-models-pinned-revision": {
|
|
1089
|
+
"count": 1,
|
|
1090
|
+
"title": "2. Host models (pinned revision)",
|
|
1091
|
+
"type": "paragraph"
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1097
|
+
{
|
|
1098
|
+
"search": "Three ways to supply the runtime (runtime.source):\n",
|
|
1099
|
+
"files": {
|
|
1100
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1101
|
+
"title": "Hugging Face infer",
|
|
1102
|
+
"hashes": {
|
|
1103
|
+
"3-configure-once-at-startup": {
|
|
1104
|
+
"count": 1,
|
|
1105
|
+
"title": "3. Configure (once, at startup)",
|
|
1106
|
+
"type": "paragraph"
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
"search": "<!-- Catalog: runs when the browser is idle, cached in IndexedDB -->\n<sonic-hugging-face-infer\n model="multilingual-mini"\n inputProvider="events"\n outputProvider="search.vectors"\n options='{"text":"label + edito.sub_title + categories.title"}'\n load="idle"\n persistResults\n></sonic-hugging-face-infer>\n",
|
|
1114
|
+
"files": {
|
|
1115
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1116
|
+
"title": "Hugging Face infer",
|
|
1117
|
+
"hashes": {
|
|
1118
|
+
"markup": {
|
|
1119
|
+
"count": 1,
|
|
1120
|
+
"title": "Markup",
|
|
1121
|
+
"type": "paragraph"
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
{
|
|
1128
|
+
"search": "<!-- Query: on each keystroke (300 ms debounce) -->\n<sonic-hugging-face-infer\n model="multilingual-mini"\n inputProvider="searchForm.q"\n outputProvider="search.query"\n statusProvider="searchAiStatus"\n debounce="300"\n></sonic-hugging-face-infer>\n \n\n",
|
|
1129
|
+
"files": {
|
|
1130
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1131
|
+
"title": "Hugging Face infer",
|
|
1132
|
+
"hashes": {
|
|
1133
|
+
"markup": {
|
|
1134
|
+
"count": 1,
|
|
1135
|
+
"title": "Markup",
|
|
1136
|
+
"type": "paragraph"
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
"search": "Ranking combines several inputs (events, vectors, query). With the TypeScript API:\n",
|
|
1144
|
+
"files": {
|
|
1145
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1146
|
+
"title": "Hugging Face infer",
|
|
1147
|
+
"hashes": {
|
|
1148
|
+
"markup": {
|
|
1149
|
+
"count": 1,
|
|
1150
|
+
"title": "Markup",
|
|
1151
|
+
"type": "paragraph"
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
"search": "On the JSONata side, $cosine(a, b) and $rankBySimilarity(items, vectors, query, topN?, minScore?) are available in sonic-jsonata (one input: group data under the same DataProvider).\n",
|
|
1159
|
+
"files": {
|
|
1160
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1161
|
+
"title": "Hugging Face infer",
|
|
1162
|
+
"hashes": {
|
|
1163
|
+
"markup": {
|
|
1164
|
+
"count": 1,
|
|
1165
|
+
"title": "Markup",
|
|
1166
|
+
"type": "paragraph"
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
"search": "Methods: run(), loadModel(), accept(), decline().\n",
|
|
1174
|
+
"files": {
|
|
1175
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1176
|
+
"title": "Hugging Face infer",
|
|
1177
|
+
"hashes": {
|
|
1178
|
+
"attributes": {
|
|
1179
|
+
"count": 1,
|
|
1180
|
+
"title": "Attributes",
|
|
1181
|
+
"type": "paragraph"
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
"search": "Guards, regardless of policy: switch to consent on data-saver, slow network (2G), or when the model exceeds consentAboveMB. A cached model loads without prompting. Choice is stored per alias and revision (hf.revokeConsent(alias) to clear). Nothing downloads while the input is empty.\n",
|
|
1189
|
+
"files": {
|
|
1190
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1191
|
+
"title": "Hugging Face infer",
|
|
1192
|
+
"hashes": {
|
|
1193
|
+
"model-loading": {
|
|
1194
|
+
"count": 1,
|
|
1195
|
+
"title": "Model loading",
|
|
1196
|
+
"type": "paragraph"
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
"search": "Consent without JavaScript (SDUI):\n",
|
|
1204
|
+
"files": {
|
|
1205
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1206
|
+
"title": "Hugging Face infer",
|
|
1207
|
+
"hashes": {
|
|
1208
|
+
"model-loading": {
|
|
1209
|
+
"count": 1,
|
|
1210
|
+
"title": "Model loading",
|
|
1211
|
+
"type": "paragraph"
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
"search": "{outputProvider root}/_state_ → { status } (loading | ready | error | empty), like sonic-jsonata, for sonic-states.\n",
|
|
1219
|
+
"files": {
|
|
1220
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1221
|
+
"title": "Hugging Face infer",
|
|
1222
|
+
"hashes": {
|
|
1223
|
+
"states": {
|
|
1224
|
+
"count": 1,
|
|
1225
|
+
"title": "States",
|
|
1226
|
+
"type": "paragraph"
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
},
|
|
1232
|
+
{
|
|
1233
|
+
"search": "Detailed status on statusProvider:\n",
|
|
1234
|
+
"files": {
|
|
1235
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1236
|
+
"title": "Hugging Face infer",
|
|
1237
|
+
"hashes": {
|
|
1238
|
+
"states": {
|
|
1239
|
+
"count": 1,
|
|
1240
|
+
"title": "States",
|
|
1241
|
+
"type": "paragraph"
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
"search": "ONNX Runtime is a WASM binary in every case (≈ 27 MB, ≈ 6.6 MB compressed for 1.31), including WebGPU: it downloads with the first model from your CDN, then is cached. It is not part of the component.\n",
|
|
1249
|
+
"files": {
|
|
1250
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1251
|
+
"title": "Hugging Face infer",
|
|
1252
|
+
"hashes": {
|
|
1253
|
+
"webgpu-and-wasm": {
|
|
1254
|
+
"count": 1,
|
|
1255
|
+
"title": "WebGPU and WASM",
|
|
1256
|
+
"type": "paragraph"
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
"search": "What you control: CPU (WASM) execution when WebGPU is missing. Allowed per model (devices) and only under allowWasmUpToMB. Beyond that → unsupported; the page keeps working without the model.\n",
|
|
1264
|
+
"files": {
|
|
1265
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1266
|
+
"title": "Hugging Face infer",
|
|
1267
|
+
"hashes": {
|
|
1268
|
+
"webgpu-and-wasm": {
|
|
1269
|
+
"count": 1,
|
|
1270
|
+
"title": "WebGPU and WASM",
|
|
1271
|
+
"type": "paragraph"
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"search": "configureHuggingFace returns an API typed by the allowlist:\n",
|
|
1279
|
+
"files": {
|
|
1280
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1281
|
+
"title": "Hugging Face infer",
|
|
1282
|
+
"hashes": {
|
|
1283
|
+
"typescript": {
|
|
1284
|
+
"count": 1,
|
|
1285
|
+
"title": "TypeScript",
|
|
1286
|
+
"type": "paragraph"
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
},
|
|
1292
|
+
{
|
|
1293
|
+
"search": "Cleanup: hf.clearModel(alias), hf.clearAll() (models, WASM, and results).\n",
|
|
1294
|
+
"files": {
|
|
1295
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1296
|
+
"title": "Hugging Face infer",
|
|
1297
|
+
"hashes": {
|
|
1298
|
+
"typescript": {
|
|
1299
|
+
"count": 1,
|
|
1300
|
+
"title": "TypeScript",
|
|
1301
|
+
"type": "paragraph"
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"search": "Supported tasks: feature-extraction, text-classification, zero-shot-classification, translation, token-classification, fill-mask, question-answering, image-classification, zero-shot-image-classification, object-detection, zero-shot-object-detection, image-feature-extraction, image-segmentation, depth-estimation, background-removal, image-to-text, audio-classification, automatic-speech-recognition. No free-form LLM (text-generation, etc.).\n",
|
|
1309
|
+
"files": {
|
|
1310
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1311
|
+
"title": "Hugging Face infer",
|
|
1312
|
+
"hashes": {
|
|
1313
|
+
"tasks-and-light-models": {
|
|
1314
|
+
"count": 1,
|
|
1315
|
+
"title": "Tasks and light models",
|
|
1316
|
+
"type": "paragraph"
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"search": "Indicative sizes (quantized); verify with hf-vendor.mjs before allowlisting, including license:\n",
|
|
1324
|
+
"files": {
|
|
1325
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1326
|
+
"title": "Hugging Face infer",
|
|
1327
|
+
"hashes": {
|
|
1328
|
+
"tasks-and-light-models": {
|
|
1329
|
+
"count": 1,
|
|
1330
|
+
"title": "Tasks and light models",
|
|
1331
|
+
"type": "paragraph"
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"search": "Produced images (cutout, depth, segmentation) come out as { width, height, channels, blob, url } (PNG). url is an ObjectURL attached on the main thread at publish time — chainable into sonic-shader / sonic-jsonata ($mediaUrl) without app glue. Images are not stored in IndexedDB.\n",
|
|
1339
|
+
"files": {
|
|
1340
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1341
|
+
"title": "Hugging Face infer",
|
|
1342
|
+
"hashes": {
|
|
1343
|
+
"tasks-and-light-models": {
|
|
1344
|
+
"count": 1,
|
|
1345
|
+
"title": "Tasks and light models",
|
|
1346
|
+
"type": "paragraph"
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
},
|
|
1352
|
+
{
|
|
1353
|
+
"search": "End-to-end (depth + shader / Harris) : Visual stack.\n",
|
|
1354
|
+
"files": {
|
|
1355
|
+
"core/components/functional/infer/hugging-face/hugging-face-infer.md": {
|
|
1356
|
+
"title": "Hugging Face infer",
|
|
1357
|
+
"hashes": {
|
|
1358
|
+
"tasks-and-light-models": {
|
|
1359
|
+
"count": 1,
|
|
1360
|
+
"title": "Tasks and light models",
|
|
1361
|
+
"type": "paragraph"
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"search": "Jsonata",
|
|
1369
|
+
"files": {
|
|
1370
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1371
|
+
"title": "Jsonata",
|
|
1372
|
+
"hashes": {
|
|
1373
|
+
"jsonata": {
|
|
1374
|
+
"count": 1,
|
|
1375
|
+
"title": "",
|
|
1376
|
+
"type": "page"
|
|
1377
|
+
}
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
"search": "sonic-jsonata : 1 input → expression → 1 output (readonly).\n",
|
|
1384
|
+
"files": {
|
|
1385
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1386
|
+
"title": "Jsonata",
|
|
1387
|
+
"hashes": {
|
|
1388
|
+
"jsonata": {
|
|
1389
|
+
"count": 1,
|
|
1390
|
+
"title": "",
|
|
1391
|
+
"type": "paragraph"
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
"search": "Unidirectional (fetch → compute → display), unlike sonic-mix.\n",
|
|
1399
|
+
"files": {
|
|
1400
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1401
|
+
"title": "Jsonata",
|
|
1402
|
+
"hashes": {
|
|
1403
|
+
"jsonata": {
|
|
1404
|
+
"count": 1,
|
|
1405
|
+
"title": "",
|
|
1406
|
+
"type": "paragraph"
|
|
1407
|
+
}
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
"search": "Offline : serviceURL="/docs-mock-api" — Local API demos.\n",
|
|
1414
|
+
"files": {
|
|
1415
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1416
|
+
"title": "Jsonata",
|
|
1417
|
+
"hashes": {
|
|
1418
|
+
"jsonata": {
|
|
1419
|
+
"count": 1,
|
|
1420
|
+
"title": "",
|
|
1421
|
+
"type": "paragraph"
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
},
|
|
1427
|
+
{
|
|
1428
|
+
"search": "Change Top N → recalcul sans refetch.\n",
|
|
1429
|
+
"files": {
|
|
1430
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1431
|
+
"title": "Jsonata",
|
|
1432
|
+
"hashes": {
|
|
1433
|
+
"groupby--top-n": {
|
|
1434
|
+
"count": 1,
|
|
1435
|
+
"title": "Groupby + top N",
|
|
1436
|
+
"type": "paragraph"
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"search": "Change Tax % → même idée.\n",
|
|
1444
|
+
"files": {
|
|
1445
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1446
|
+
"title": "Jsonata",
|
|
1447
|
+
"hashes": {
|
|
1448
|
+
"totaux-somme--taxe": {
|
|
1449
|
+
"count": 1,
|
|
1450
|
+
"title": "Totaux (somme + taxe)",
|
|
1451
|
+
"type": "paragraph"
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
"search": "$ucFirst · $currency · $percent · $date · $toChart(items, labelKey, valueKey, datasetLabel?) · $cosine · $rankBySimilarity · $mediaUrl(x) (string | {url} | {blobUrl})\n",
|
|
1459
|
+
"files": {
|
|
1460
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1461
|
+
"title": "Jsonata",
|
|
1462
|
+
"hashes": {
|
|
1463
|
+
"helpers": {
|
|
1464
|
+
"count": 1,
|
|
1465
|
+
"title": "Helpers",
|
|
1466
|
+
"type": "paragraph"
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
},
|
|
1472
|
+
{
|
|
1473
|
+
"search": "Pas de DOM, pas de réseau, pas d’eval. $mediaUrl ne crée pas d’ObjectURL (les producteurs HF / extract publient déjà url).\n",
|
|
1474
|
+
"files": {
|
|
1475
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1476
|
+
"title": "Jsonata",
|
|
1477
|
+
"hashes": {
|
|
1478
|
+
"helpers": {
|
|
1479
|
+
"count": 1,
|
|
1480
|
+
"title": "Helpers",
|
|
1481
|
+
"type": "paragraph"
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"search": "Pour du multi-entrées ou une fonction TS : primitive derive.\n",
|
|
1489
|
+
"files": {
|
|
1490
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1491
|
+
"title": "Jsonata",
|
|
1492
|
+
"hashes": {
|
|
1493
|
+
"markup": {
|
|
1494
|
+
"count": 1,
|
|
1495
|
+
"title": "Markup",
|
|
1496
|
+
"type": "paragraph"
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"search": "Visual stack (3d → HF → jsonata → shader): Visual stack.\n",
|
|
1504
|
+
"files": {
|
|
1505
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1506
|
+
"title": "Jsonata",
|
|
1507
|
+
"hashes": {
|
|
1508
|
+
"markup": {
|
|
1509
|
+
"count": 1,
|
|
1510
|
+
"title": "Markup",
|
|
1511
|
+
"type": "paragraph"
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
},
|
|
1517
|
+
{
|
|
1518
|
+
"search": "{output}/_state_ → { status, error? } (loading | ready | error | empty). Brancher avec sonic-states.\n",
|
|
1519
|
+
"files": {
|
|
1520
|
+
"core/components/functional/jsonata/jsonata.md": {
|
|
1521
|
+
"title": "Jsonata",
|
|
1522
|
+
"hashes": {
|
|
1523
|
+
"states": {
|
|
1524
|
+
"count": 1,
|
|
1525
|
+
"title": "States",
|
|
1526
|
+
"type": "paragraph"
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
},
|
|
1532
|
+
{
|
|
1533
|
+
"search": "List",
|
|
1534
|
+
"files": {
|
|
1535
|
+
"core/components/functional/list/list.md": {
|
|
1536
|
+
"title": "List",
|
|
1537
|
+
"hashes": {
|
|
1538
|
+
"list": {
|
|
1539
|
+
"count": 1,
|
|
1540
|
+
"title": "",
|
|
1541
|
+
"type": "page"
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
"search": "Try offline: serviceURL="/docs-mock-api" and dataProvider="api/users" with key="data" — see Local API demos. Recommended patterns: Data flow.\n",
|
|
1549
|
+
"files": {
|
|
1550
|
+
"core/components/functional/list/list.md": {
|
|
1551
|
+
"title": "List",
|
|
1552
|
+
"hashes": {
|
|
1553
|
+
"list": {
|
|
1554
|
+
"count": 1,
|
|
1555
|
+
"title": "",
|
|
1556
|
+
"type": "paragraph"
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
},
|
|
1562
|
+
{
|
|
1563
|
+
"search": "The sonic-list component renders one row per entry in props (array from fetch or set on the element).\n",
|
|
1564
|
+
"files": {
|
|
1565
|
+
"core/components/functional/list/list.md": {
|
|
1566
|
+
"title": "List",
|
|
1567
|
+
"hashes": {
|
|
1568
|
+
"list": {
|
|
1569
|
+
"count": 1,
|
|
1570
|
+
"title": "",
|
|
1571
|
+
"type": "paragraph"
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
}
|
|
1576
|
+
},
|
|
1577
|
+
{
|
|
1578
|
+
"search": "List extends Subscriber and Fetcher:\n",
|
|
1579
|
+
"files": {
|
|
1580
|
+
"core/components/functional/list/list.md": {
|
|
1581
|
+
"title": "List",
|
|
1582
|
+
"hashes": {
|
|
1583
|
+
"list": {
|
|
1584
|
+
"count": 1,
|
|
1585
|
+
"title": "",
|
|
1586
|
+
"type": "paragraph"
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"search": "From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider="…/list-item/n" (hover rows with debug).\n",
|
|
1594
|
+
"files": {
|
|
1595
|
+
"core/components/functional/list/list.md": {
|
|
1596
|
+
"title": "List",
|
|
1597
|
+
"hashes": {
|
|
1598
|
+
"row-renderer-items--recommended": {
|
|
1599
|
+
"count": 1,
|
|
1600
|
+
"title": "Row renderer (`items`) — recommended",
|
|
1601
|
+
"type": "paragraph"
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
},
|
|
1607
|
+
{
|
|
1608
|
+
"search": "Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / <sonic-value> in a <template>).\n",
|
|
1609
|
+
"files": {
|
|
1610
|
+
"core/components/functional/list/list.md": {
|
|
1611
|
+
"title": "List",
|
|
1612
|
+
"hashes": {
|
|
1613
|
+
"row-renderer-items--recommended": {
|
|
1614
|
+
"count": 1,
|
|
1615
|
+
"title": "Row renderer (`items`) — recommended",
|
|
1616
|
+
"type": "paragraph"
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
},
|
|
1622
|
+
{
|
|
1623
|
+
"search": "Live demo + TypeScript source (one file, no Markdown copy):\n",
|
|
1624
|
+
"files": {
|
|
1625
|
+
"core/components/functional/list/list.md": {
|
|
1626
|
+
"title": "List",
|
|
1627
|
+
"hashes": {
|
|
1628
|
+
"row-renderer-items--recommended": {
|
|
1629
|
+
"count": 1,
|
|
1630
|
+
"title": "Row renderer (`items`) — recommended",
|
|
1631
|
+
"type": "paragraph"
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"search": "Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.first_name, …), same idea as replacing data-bind / <sonic-value> in a <template>.\n",
|
|
1639
|
+
"files": {
|
|
1640
|
+
"core/components/functional/list/list.md": {
|
|
1641
|
+
"title": "List",
|
|
1642
|
+
"hashes": {
|
|
1643
|
+
"row-renderer-items--recommended": {
|
|
1644
|
+
"count": 1,
|
|
1645
|
+
"title": "Row renderer (`items`) — recommended",
|
|
1646
|
+
"type": "paragraph"
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
},
|
|
1652
|
+
{
|
|
1653
|
+
"search": "Use metadata (even, odd, firstChild, …) or fields on each item (e.g. tpl with templateKey):\n",
|
|
1654
|
+
"files": {
|
|
1655
|
+
"core/components/functional/list/list.md": {
|
|
1656
|
+
"title": "List",
|
|
1657
|
+
"hashes": {
|
|
1658
|
+
"alternating-row-layouts": {
|
|
1659
|
+
"count": 1,
|
|
1660
|
+
"title": "Alternating row layouts",
|
|
1661
|
+
"type": "paragraph"
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
},
|
|
1667
|
+
{
|
|
1668
|
+
"search": "For plain HTML hosts, you can still declare <template> children (and data-value for templateKey, separator, no-item). That path is for HTML integration — not used in Concorde doc live demos.\n",
|
|
1669
|
+
"files": {
|
|
1670
|
+
"core/components/functional/list/list.md": {
|
|
1671
|
+
"title": "List",
|
|
1672
|
+
"hashes": {
|
|
1673
|
+
"html-template-children-integration-without-lit": {
|
|
1674
|
+
"count": 1,
|
|
1675
|
+
"title": "HTML `<template>` children (integration without Lit)",
|
|
1676
|
+
"type": "paragraph"
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"search": "Each list row still gets dataProvider="[list]/list-item/[index]".\n",
|
|
1684
|
+
"files": {
|
|
1685
|
+
"core/components/functional/list/list.md": {
|
|
1686
|
+
"title": "List",
|
|
1687
|
+
"hashes": {
|
|
1688
|
+
"html-template-children-integration-without-lit": {
|
|
1689
|
+
"count": 1,
|
|
1690
|
+
"title": "HTML `<template>` children (integration without Lit)",
|
|
1691
|
+
"type": "paragraph"
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
},
|
|
1697
|
+
{
|
|
1698
|
+
"search": "Mix",
|
|
1699
|
+
"files": {
|
|
1700
|
+
"core/components/functional/mix/mix.md": {
|
|
1701
|
+
"title": "Mix",
|
|
1702
|
+
"hashes": {
|
|
1703
|
+
"mix": {
|
|
1704
|
+
"count": 1,
|
|
1705
|
+
"title": "",
|
|
1706
|
+
"type": "page"
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
}
|
|
1710
|
+
}
|
|
1711
|
+
},
|
|
1712
|
+
{
|
|
1713
|
+
"search": "Mix allows you to mix several subsets of dataProvider in a new key/value structure which is itself associated with a new dataProvider. The data update is then bidirectional.\n",
|
|
1714
|
+
"files": {
|
|
1715
|
+
"core/components/functional/mix/mix.md": {
|
|
1716
|
+
"title": "Mix",
|
|
1717
|
+
"hashes": {
|
|
1718
|
+
"mix": {
|
|
1719
|
+
"count": 1,
|
|
1720
|
+
"title": "",
|
|
1721
|
+
"type": "paragraph"
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
"search": "Dot notation is supported to extract a sub-part of the data.\n",
|
|
1729
|
+
"files": {
|
|
1730
|
+
"core/components/functional/mix/mix.md": {
|
|
1731
|
+
"title": "Mix",
|
|
1732
|
+
"hashes": {
|
|
1733
|
+
"mix": {
|
|
1734
|
+
"count": 1,
|
|
1735
|
+
"title": "",
|
|
1736
|
+
"type": "paragraph"
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"search": "For example, if we declare dataproviders as follows :\n\nWe can rearrange the data as follows\n\nThen we can change values in both dataProviders programaticaly this way, they will stay in sync\n\nOr by using a form element\n\n",
|
|
1744
|
+
"files": {
|
|
1745
|
+
"core/components/functional/mix/mix.md": {
|
|
1746
|
+
"title": "Mix",
|
|
1747
|
+
"hashes": {
|
|
1748
|
+
"mix": {
|
|
1749
|
+
"count": 1,
|
|
1750
|
+
"title": "",
|
|
1751
|
+
"type": "paragraph"
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
"search": "Queue",
|
|
1759
|
+
"files": {
|
|
1760
|
+
"core/components/functional/queue/queue.md": {
|
|
1761
|
+
"title": "Queue",
|
|
1762
|
+
"hashes": {
|
|
1763
|
+
"queue": {
|
|
1764
|
+
"count": 1,
|
|
1765
|
+
"title": "",
|
|
1766
|
+
"type": "page"
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
},
|
|
1772
|
+
{
|
|
1773
|
+
"search": "Try offline: serviceURL="/docs-mock-api" — see Local API demos. Row rendering: Data flow (.items property binding).\n",
|
|
1774
|
+
"files": {
|
|
1775
|
+
"core/components/functional/queue/queue.md": {
|
|
1776
|
+
"title": "Queue",
|
|
1777
|
+
"hashes": {
|
|
1778
|
+
"queue": {
|
|
524
1779
|
"count": 1,
|
|
525
|
-
"title": "
|
|
1780
|
+
"title": "",
|
|
526
1781
|
"type": "paragraph"
|
|
527
1782
|
}
|
|
528
1783
|
}
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
"search": "sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).\n",
|
|
1789
|
+
"files": {
|
|
1790
|
+
"core/components/functional/queue/queue.md": {
|
|
1791
|
+
"title": "Queue",
|
|
532
1792
|
"hashes": {
|
|
533
|
-
"
|
|
1793
|
+
"queue": {
|
|
534
1794
|
"count": 1,
|
|
535
|
-
"title": "
|
|
1795
|
+
"title": "",
|
|
536
1796
|
"type": "paragraph"
|
|
537
1797
|
}
|
|
538
1798
|
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"search": "When the expression contains $offset and $limit, the queue:\n",
|
|
1804
|
+
"files": {
|
|
1805
|
+
"core/components/functional/queue/queue.md": {
|
|
1806
|
+
"title": "Queue",
|
|
542
1807
|
"hashes": {
|
|
543
|
-
"
|
|
544
|
-
"count": 1,
|
|
545
|
-
"title": "Bearer token (static)",
|
|
546
|
-
"type": "paragraph"
|
|
547
|
-
},
|
|
548
|
-
"tokenprovider--basic-auth": {
|
|
549
|
-
"count": 1,
|
|
550
|
-
"title": "tokenProvider + Basic auth",
|
|
551
|
-
"type": "paragraph"
|
|
552
|
-
},
|
|
553
|
-
"http-498--stale-token-refresh": {
|
|
554
|
-
"count": 1,
|
|
555
|
-
"title": "HTTP 498 — stale token refresh",
|
|
556
|
-
"type": "paragraph"
|
|
557
|
-
},
|
|
558
|
-
"eventsapitoken": {
|
|
559
|
-
"count": 1,
|
|
560
|
-
"title": "eventsApiToken",
|
|
561
|
-
"type": "paragraph"
|
|
562
|
-
},
|
|
563
|
-
"wording-api": {
|
|
564
|
-
"count": 1,
|
|
565
|
-
"title": "Wording API",
|
|
566
|
-
"type": "paragraph"
|
|
567
|
-
},
|
|
568
|
-
"scoped-attributes-html--sonic-scope": {
|
|
1808
|
+
"lazy-load--offset-and-limit": {
|
|
569
1809
|
"count": 1,
|
|
570
|
-
"title": "
|
|
1810
|
+
"title": "Lazy load — `$offset` and `$limit`",
|
|
571
1811
|
"type": "paragraph"
|
|
572
1812
|
}
|
|
573
1813
|
}
|
|
@@ -575,14 +1815,14 @@
|
|
|
575
1815
|
}
|
|
576
1816
|
},
|
|
577
1817
|
{
|
|
578
|
-
"search": "
|
|
1818
|
+
"search": "The doc mock implements this on GET /docs-mock-api/api/users?offset=…&per_page=… (paginateUsers in src/docs/mock-api/router.ts).\n",
|
|
579
1819
|
"files": {
|
|
580
|
-
"core/components/functional/
|
|
581
|
-
"title": "
|
|
1820
|
+
"core/components/functional/queue/queue.md": {
|
|
1821
|
+
"title": "Queue",
|
|
582
1822
|
"hashes": {
|
|
583
|
-
"
|
|
1823
|
+
"lazy-load--offset-and-limit": {
|
|
584
1824
|
"count": 1,
|
|
585
|
-
"title": "",
|
|
1825
|
+
"title": "Lazy load — `$offset` and `$limit`",
|
|
586
1826
|
"type": "paragraph"
|
|
587
1827
|
}
|
|
588
1828
|
}
|
|
@@ -590,29 +1830,29 @@
|
|
|
590
1830
|
}
|
|
591
1831
|
},
|
|
592
1832
|
{
|
|
593
|
-
"search": "
|
|
1833
|
+
"search": "Wrap the queue in a fixed height with overflow-y-auto so lazy load triggers when scrolling inside the box (same layout as the TS starter demo-queue-templates).\n",
|
|
594
1834
|
"files": {
|
|
595
|
-
"core/components/functional/
|
|
596
|
-
"title": "
|
|
1835
|
+
"core/components/functional/queue/queue.md": {
|
|
1836
|
+
"title": "Queue",
|
|
597
1837
|
"hashes": {
|
|
598
|
-
"
|
|
1838
|
+
"lazy-load--offset-and-limit": {
|
|
599
1839
|
"count": 1,
|
|
600
|
-
"title": "",
|
|
601
|
-
"type": "
|
|
1840
|
+
"title": "Lazy load — `$offset` and `$limit`",
|
|
1841
|
+
"type": "paragraph"
|
|
602
1842
|
}
|
|
603
1843
|
}
|
|
604
1844
|
}
|
|
605
1845
|
}
|
|
606
1846
|
},
|
|
607
1847
|
{
|
|
608
|
-
"search": "
|
|
1848
|
+
"search": "Try scrolling after load — batches of 4 users. Search e.g. George, Bluth, or zzz for empty results.\n",
|
|
609
1849
|
"files": {
|
|
610
|
-
"core/components/functional/
|
|
611
|
-
"title": "
|
|
1850
|
+
"core/components/functional/queue/queue.md": {
|
|
1851
|
+
"title": "Queue",
|
|
612
1852
|
"hashes": {
|
|
613
|
-
"
|
|
1853
|
+
"lazy-load--offset-and-limit": {
|
|
614
1854
|
"count": 1,
|
|
615
|
-
"title": "",
|
|
1855
|
+
"title": "Lazy load — `$offset` and `$limit`",
|
|
616
1856
|
"type": "paragraph"
|
|
617
1857
|
}
|
|
618
1858
|
}
|
|
@@ -620,14 +1860,14 @@
|
|
|
620
1860
|
}
|
|
621
1861
|
},
|
|
622
1862
|
{
|
|
623
|
-
"search": "
|
|
1863
|
+
"search": "Without $offset in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.\n",
|
|
624
1864
|
"files": {
|
|
625
|
-
"core/components/functional/
|
|
626
|
-
"title": "
|
|
1865
|
+
"core/components/functional/queue/queue.md": {
|
|
1866
|
+
"title": "Queue",
|
|
627
1867
|
"hashes": {
|
|
628
|
-
"
|
|
1868
|
+
"expression-example": {
|
|
629
1869
|
"count": 1,
|
|
630
|
-
"title": "",
|
|
1870
|
+
"title": "Expression example",
|
|
631
1871
|
"type": "paragraph"
|
|
632
1872
|
}
|
|
633
1873
|
}
|
|
@@ -635,14 +1875,14 @@
|
|
|
635
1875
|
}
|
|
636
1876
|
},
|
|
637
1877
|
{
|
|
638
|
-
"search": "
|
|
1878
|
+
"search": "One search field (name="q") on formDataProvider="filter". The queue listens via dataFilterProvider="filter" and, on change:\n",
|
|
639
1879
|
"files": {
|
|
640
|
-
"core/components/functional/
|
|
641
|
-
"title": "
|
|
1880
|
+
"core/components/functional/queue/queue.md": {
|
|
1881
|
+
"title": "Queue",
|
|
642
1882
|
"hashes": {
|
|
643
|
-
"
|
|
1883
|
+
"filter--datafilterprovider--q": {
|
|
644
1884
|
"count": 1,
|
|
645
|
-
"title": "",
|
|
1885
|
+
"title": "Filter — `dataFilterProvider` + `q`",
|
|
646
1886
|
"type": "paragraph"
|
|
647
1887
|
}
|
|
648
1888
|
}
|
|
@@ -650,14 +1890,14 @@
|
|
|
650
1890
|
}
|
|
651
1891
|
},
|
|
652
1892
|
{
|
|
653
|
-
"search": "
|
|
1893
|
+
"search": "Use filteredFields only when the form has extra fields that must not be sent to the API (e.g. filteredFields="rememberMe internalId").\n",
|
|
654
1894
|
"files": {
|
|
655
|
-
"core/components/functional/
|
|
656
|
-
"title": "
|
|
1895
|
+
"core/components/functional/queue/queue.md": {
|
|
1896
|
+
"title": "Queue",
|
|
657
1897
|
"hashes": {
|
|
658
|
-
"
|
|
1898
|
+
"filter--datafilterprovider--q": {
|
|
659
1899
|
"count": 1,
|
|
660
|
-
"title": "
|
|
1900
|
+
"title": "Filter — `dataFilterProvider` + `q`",
|
|
661
1901
|
"type": "paragraph"
|
|
662
1902
|
}
|
|
663
1903
|
}
|
|
@@ -665,14 +1905,14 @@
|
|
|
665
1905
|
}
|
|
666
1906
|
},
|
|
667
1907
|
{
|
|
668
|
-
"search": "
|
|
1908
|
+
"search": "The mock API filters before pagination — same haystack logic as the starter (filterDocsUsers in src/docs/mock-api/fixtures.ts, used by paginateUsers in router.ts / Service Worker):\n",
|
|
669
1909
|
"files": {
|
|
670
|
-
"core/components/functional/
|
|
671
|
-
"title": "
|
|
1910
|
+
"core/components/functional/queue/queue.md": {
|
|
1911
|
+
"title": "Queue",
|
|
672
1912
|
"hashes": {
|
|
673
|
-
"
|
|
1913
|
+
"filter--datafilterprovider--q": {
|
|
674
1914
|
"count": 1,
|
|
675
|
-
"title": "
|
|
1915
|
+
"title": "Filter — `dataFilterProvider` + `q`",
|
|
676
1916
|
"type": "paragraph"
|
|
677
1917
|
}
|
|
678
1918
|
}
|
|
@@ -680,14 +1920,14 @@
|
|
|
680
1920
|
}
|
|
681
1921
|
},
|
|
682
1922
|
{
|
|
683
|
-
"search": "
|
|
1923
|
+
"search": "Geo communes: expression uses $limit only (no $offset) — one request, one batch.\n",
|
|
684
1924
|
"files": {
|
|
685
|
-
"core/components/functional/
|
|
686
|
-
"title": "
|
|
1925
|
+
"core/components/functional/queue/queue.md": {
|
|
1926
|
+
"title": "Queue",
|
|
687
1927
|
"hashes": {
|
|
688
|
-
"
|
|
1928
|
+
"simple-batch-no-lazy-scroll": {
|
|
689
1929
|
"count": 1,
|
|
690
|
-
"title": "
|
|
1930
|
+
"title": "Simple batch (no lazy scroll)",
|
|
691
1931
|
"type": "paragraph"
|
|
692
1932
|
}
|
|
693
1933
|
}
|
|
@@ -695,14 +1935,14 @@
|
|
|
695
1935
|
}
|
|
696
1936
|
},
|
|
697
1937
|
{
|
|
698
|
-
"search": "
|
|
1938
|
+
"search": "Optional for hosts without Lit — see HTML integration.\n",
|
|
699
1939
|
"files": {
|
|
700
|
-
"core/components/functional/
|
|
701
|
-
"title": "
|
|
1940
|
+
"core/components/functional/queue/queue.md": {
|
|
1941
|
+
"title": "Queue",
|
|
702
1942
|
"hashes": {
|
|
703
|
-
"
|
|
1943
|
+
"html-template-children": {
|
|
704
1944
|
"count": 1,
|
|
705
|
-
"title": "
|
|
1945
|
+
"title": "HTML `<template>` children",
|
|
706
1946
|
"type": "paragraph"
|
|
707
1947
|
}
|
|
708
1948
|
}
|
|
@@ -710,29 +1950,29 @@
|
|
|
710
1950
|
}
|
|
711
1951
|
},
|
|
712
1952
|
{
|
|
713
|
-
"search": "
|
|
1953
|
+
"search": "Router",
|
|
714
1954
|
"files": {
|
|
715
|
-
"core/components/functional/
|
|
716
|
-
"title": "
|
|
1955
|
+
"core/components/functional/router/router.md": {
|
|
1956
|
+
"title": "Router",
|
|
717
1957
|
"hashes": {
|
|
718
|
-
"
|
|
1958
|
+
"router": {
|
|
719
1959
|
"count": 1,
|
|
720
|
-
"title": "
|
|
721
|
-
"type": "
|
|
1960
|
+
"title": "",
|
|
1961
|
+
"type": "page"
|
|
722
1962
|
}
|
|
723
1963
|
}
|
|
724
1964
|
}
|
|
725
1965
|
}
|
|
726
1966
|
},
|
|
727
1967
|
{
|
|
728
|
-
"search": "
|
|
1968
|
+
"search": "sonic-router watches document.location (pathname + hash) and renders the matching view.\n",
|
|
729
1969
|
"files": {
|
|
730
|
-
"core/components/functional/
|
|
731
|
-
"title": "
|
|
1970
|
+
"core/components/functional/router/router.md": {
|
|
1971
|
+
"title": "Router",
|
|
732
1972
|
"hashes": {
|
|
733
|
-
"
|
|
1973
|
+
"router": {
|
|
734
1974
|
"count": 1,
|
|
735
|
-
"title": "
|
|
1975
|
+
"title": "",
|
|
736
1976
|
"type": "paragraph"
|
|
737
1977
|
}
|
|
738
1978
|
}
|
|
@@ -740,27 +1980,27 @@
|
|
|
740
1980
|
}
|
|
741
1981
|
},
|
|
742
1982
|
{
|
|
743
|
-
"search": "
|
|
1983
|
+
"search": "From a Lit parent, pass a .routes map (property binding — same rule as .items on list): keys are path patterns, values are render functions. Use fallback when nothing matches.\n",
|
|
744
1984
|
"files": {
|
|
745
|
-
"core/components/functional/
|
|
746
|
-
"title": "
|
|
1985
|
+
"core/components/functional/router/router.md": {
|
|
1986
|
+
"title": "Router",
|
|
747
1987
|
"hashes": {
|
|
748
|
-
"
|
|
1988
|
+
"router": {
|
|
749
1989
|
"count": 1,
|
|
750
1990
|
"title": "",
|
|
751
|
-
"type": "
|
|
1991
|
+
"type": "paragraph"
|
|
752
1992
|
}
|
|
753
1993
|
}
|
|
754
1994
|
}
|
|
755
1995
|
}
|
|
756
1996
|
},
|
|
757
1997
|
{
|
|
758
|
-
"search": "
|
|
1998
|
+
"search": "Legacy HTML <template data-route="…"> remains for hosts without Lit — HTML integration.\n",
|
|
759
1999
|
"files": {
|
|
760
|
-
"core/components/functional/
|
|
761
|
-
"title": "
|
|
2000
|
+
"core/components/functional/router/router.md": {
|
|
2001
|
+
"title": "Router",
|
|
762
2002
|
"hashes": {
|
|
763
|
-
"
|
|
2003
|
+
"router": {
|
|
764
2004
|
"count": 1,
|
|
765
2005
|
"title": "",
|
|
766
2006
|
"type": "paragraph"
|
|
@@ -770,14 +2010,14 @@
|
|
|
770
2010
|
}
|
|
771
2011
|
},
|
|
772
2012
|
{
|
|
773
|
-
"search": "
|
|
2013
|
+
"search": "Route keys are matched against pathname + hash. A simple hash route #home matches when the location contains that segment.\n",
|
|
774
2014
|
"files": {
|
|
775
|
-
"core/components/functional/
|
|
776
|
-
"title": "
|
|
2015
|
+
"core/components/functional/router/router.md": {
|
|
2016
|
+
"title": "Router",
|
|
777
2017
|
"hashes": {
|
|
778
|
-
"
|
|
2018
|
+
"static-routes-no-parameters": {
|
|
779
2019
|
"count": 1,
|
|
780
|
-
"title": "",
|
|
2020
|
+
"title": "Static routes (no parameters)",
|
|
781
2021
|
"type": "paragraph"
|
|
782
2022
|
}
|
|
783
2023
|
}
|
|
@@ -785,14 +2025,14 @@
|
|
|
785
2025
|
}
|
|
786
2026
|
},
|
|
787
2027
|
{
|
|
788
|
-
"search": "
|
|
2028
|
+
"search": "On the doc site, the page URL is already a hash (#…/router.md/router). Demos append a second hash for in-page routes (#…/router#home), use href + autoActive="strict" on sonic-button for the active state, and history.replaceState on click so markdown is not reloaded (setDocsDemoSubHash in src/docs/docs-location.ts).\n",
|
|
789
2029
|
"files": {
|
|
790
|
-
"core/components/functional/
|
|
791
|
-
"title": "
|
|
2030
|
+
"core/components/functional/router/router.md": {
|
|
2031
|
+
"title": "Router",
|
|
792
2032
|
"hashes": {
|
|
793
|
-
"
|
|
2033
|
+
"static-routes-no-parameters": {
|
|
794
2034
|
"count": 1,
|
|
795
|
-
"title": "",
|
|
2035
|
+
"title": "Static routes (no parameters)",
|
|
796
2036
|
"type": "paragraph"
|
|
797
2037
|
}
|
|
798
2038
|
}
|
|
@@ -800,14 +2040,14 @@
|
|
|
800
2040
|
}
|
|
801
2041
|
},
|
|
802
2042
|
{
|
|
803
|
-
"search": "
|
|
2043
|
+
"search": "Two styles (see router.demo.ts and docs-router-params-demo):\n",
|
|
804
2044
|
"files": {
|
|
805
|
-
"core/components/functional/
|
|
806
|
-
"title": "
|
|
2045
|
+
"core/components/functional/router/router.md": {
|
|
2046
|
+
"title": "Router",
|
|
807
2047
|
"hashes": {
|
|
808
|
-
"
|
|
2048
|
+
"routes-with-parameters": {
|
|
809
2049
|
"count": 1,
|
|
810
|
-
"title": "
|
|
2050
|
+
"title": "Routes with parameters",
|
|
811
2051
|
"type": "paragraph"
|
|
812
2052
|
}
|
|
813
2053
|
}
|
|
@@ -815,14 +2055,14 @@
|
|
|
815
2055
|
}
|
|
816
2056
|
},
|
|
817
2057
|
{
|
|
818
|
-
"search": "
|
|
2058
|
+
"search": "Key uses :param segments. The render function receives an object { param: string }.\n",
|
|
819
2059
|
"files": {
|
|
820
|
-
"core/components/functional/
|
|
821
|
-
"title": "
|
|
2060
|
+
"core/components/functional/router/router.md": {
|
|
2061
|
+
"title": "Router",
|
|
822
2062
|
"hashes": {
|
|
823
|
-
"
|
|
2063
|
+
"url-pattern-name": {
|
|
824
2064
|
"count": 1,
|
|
825
|
-
"title": "
|
|
2065
|
+
"title": "Url-pattern (`:name`)",
|
|
826
2066
|
"type": "paragraph"
|
|
827
2067
|
}
|
|
828
2068
|
}
|
|
@@ -830,14 +2070,14 @@
|
|
|
830
2070
|
}
|
|
831
2071
|
},
|
|
832
2072
|
{
|
|
833
|
-
"search": "
|
|
2073
|
+
"search": "Key is a RegExp string with (\\d+) / (\\w+) groups. The render function receives an array of captured strings (in order).\n",
|
|
834
2074
|
"files": {
|
|
835
|
-
"core/components/functional/
|
|
836
|
-
"title": "
|
|
2075
|
+
"core/components/functional/router/router.md": {
|
|
2076
|
+
"title": "Router",
|
|
837
2077
|
"hashes": {
|
|
838
|
-
"
|
|
2078
|
+
"regexp-capturing-groups": {
|
|
839
2079
|
"count": 1,
|
|
840
|
-
"title": "
|
|
2080
|
+
"title": "RegExp (capturing groups)",
|
|
841
2081
|
"type": "paragraph"
|
|
842
2082
|
}
|
|
843
2083
|
}
|
|
@@ -845,14 +2085,14 @@
|
|
|
845
2085
|
}
|
|
846
2086
|
},
|
|
847
2087
|
{
|
|
848
|
-
"search": "
|
|
2088
|
+
"search": "With parameters you usually render data directly in Lit (${id}). The old <template data-route> + dataProviderExpression pattern scoped a dataProvider for data-bind / fetch children — prefer @subscribe or explicit props when using .routes.\n",
|
|
849
2089
|
"files": {
|
|
850
|
-
"core/components/functional/
|
|
851
|
-
"title": "
|
|
2090
|
+
"core/components/functional/router/router.md": {
|
|
2091
|
+
"title": "Router",
|
|
852
2092
|
"hashes": {
|
|
853
|
-
"
|
|
2093
|
+
"regexp-capturing-groups": {
|
|
854
2094
|
"count": 1,
|
|
855
|
-
"title": "
|
|
2095
|
+
"title": "RegExp (capturing groups)",
|
|
856
2096
|
"type": "paragraph"
|
|
857
2097
|
}
|
|
858
2098
|
}
|
|
@@ -860,14 +2100,14 @@
|
|
|
860
2100
|
}
|
|
861
2101
|
},
|
|
862
2102
|
{
|
|
863
|
-
"search": "
|
|
2103
|
+
"search": "Always use .routes=${…} in Lit templates: route handlers are functions and must be set as properties, not HTML attributes.\n",
|
|
864
2104
|
"files": {
|
|
865
|
-
"core/components/functional/
|
|
866
|
-
"title": "
|
|
2105
|
+
"core/components/functional/router/router.md": {
|
|
2106
|
+
"title": "Router",
|
|
867
2107
|
"hashes": {
|
|
868
|
-
"
|
|
2108
|
+
"routes-binding": {
|
|
869
2109
|
"count": 1,
|
|
870
|
-
"title": "
|
|
2110
|
+
"title": "`.routes` binding",
|
|
871
2111
|
"type": "paragraph"
|
|
872
2112
|
}
|
|
873
2113
|
}
|
|
@@ -875,14 +2115,14 @@
|
|
|
875
2115
|
}
|
|
876
2116
|
},
|
|
877
2117
|
{
|
|
878
|
-
"search": "
|
|
2118
|
+
"search": "Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the .routes map.\n",
|
|
879
2119
|
"files": {
|
|
880
|
-
"core/components/functional/
|
|
881
|
-
"title": "
|
|
2120
|
+
"core/components/functional/router/router.md": {
|
|
2121
|
+
"title": "Router",
|
|
882
2122
|
"hashes": {
|
|
883
|
-
"
|
|
2123
|
+
"sonic-redirect": {
|
|
884
2124
|
"count": 1,
|
|
885
|
-
"title": "
|
|
2125
|
+
"title": "`sonic-redirect`",
|
|
886
2126
|
"type": "paragraph"
|
|
887
2127
|
}
|
|
888
2128
|
}
|
|
@@ -890,14 +2130,14 @@
|
|
|
890
2130
|
}
|
|
891
2131
|
},
|
|
892
2132
|
{
|
|
893
|
-
"search": "
|
|
2133
|
+
"search": "Example: combine with .routes and submit for login / logout / profile steps.\n",
|
|
894
2134
|
"files": {
|
|
895
|
-
"core/components/functional/
|
|
896
|
-
"title": "
|
|
2135
|
+
"core/components/functional/router/router.md": {
|
|
2136
|
+
"title": "Router",
|
|
897
2137
|
"hashes": {
|
|
898
|
-
"
|
|
2138
|
+
"sonic-redirect": {
|
|
899
2139
|
"count": 1,
|
|
900
|
-
"title": "
|
|
2140
|
+
"title": "`sonic-redirect`",
|
|
901
2141
|
"type": "paragraph"
|
|
902
2142
|
}
|
|
903
2143
|
}
|
|
@@ -905,44 +2145,44 @@
|
|
|
905
2145
|
}
|
|
906
2146
|
},
|
|
907
2147
|
{
|
|
908
|
-
"search": "
|
|
2148
|
+
"search": "sonic-router-demo (router.demo.ts) — home, user profile (#user/:id/:slug), products RegExp, fallback 404.\n",
|
|
909
2149
|
"files": {
|
|
910
|
-
"core/components/functional/
|
|
911
|
-
"title": "
|
|
2150
|
+
"core/components/functional/router/router.md": {
|
|
2151
|
+
"title": "Router",
|
|
912
2152
|
"hashes": {
|
|
913
|
-
"
|
|
2153
|
+
"package-demo": {
|
|
914
2154
|
"count": 1,
|
|
915
|
-
"title": "",
|
|
916
|
-
"type": "
|
|
2155
|
+
"title": "Package demo",
|
|
2156
|
+
"type": "paragraph"
|
|
917
2157
|
}
|
|
918
2158
|
}
|
|
919
2159
|
}
|
|
920
2160
|
}
|
|
921
2161
|
},
|
|
922
2162
|
{
|
|
923
|
-
"search": "
|
|
2163
|
+
"search": "SDUI",
|
|
924
2164
|
"files": {
|
|
925
|
-
"core/components/functional/
|
|
926
|
-
"title": "
|
|
2165
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2166
|
+
"title": "SDUI",
|
|
927
2167
|
"hashes": {
|
|
928
|
-
"
|
|
2168
|
+
"sdui": {
|
|
929
2169
|
"count": 1,
|
|
930
2170
|
"title": "",
|
|
931
|
-
"type": "
|
|
2171
|
+
"type": "page"
|
|
932
2172
|
}
|
|
933
2173
|
}
|
|
934
2174
|
}
|
|
935
2175
|
}
|
|
936
2176
|
},
|
|
937
2177
|
{
|
|
938
|
-
"search": "
|
|
2178
|
+
"search": "SDUI stands for Server Driven User Interfaces.\nBasically, it generates a user interface based on a JSON SDUI Descriptor.\n",
|
|
939
2179
|
"files": {
|
|
940
|
-
"core/components/functional/
|
|
941
|
-
"title": "
|
|
2180
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2181
|
+
"title": "SDUI",
|
|
942
2182
|
"hashes": {
|
|
943
|
-
"
|
|
2183
|
+
"what-is-sdui": {
|
|
944
2184
|
"count": 1,
|
|
945
|
-
"title": "",
|
|
2185
|
+
"title": "What is SDUI?",
|
|
946
2186
|
"type": "paragraph"
|
|
947
2187
|
}
|
|
948
2188
|
}
|
|
@@ -950,14 +2190,14 @@
|
|
|
950
2190
|
}
|
|
951
2191
|
},
|
|
952
2192
|
{
|
|
953
|
-
"search": "
|
|
2193
|
+
"search": "SDUI extends the mixin Subscriber.\nThis means that you must set a dataProvider with an id pointing to the publisher that will hold your SDUI Descriptor.\nThis also means that it has a reactive property named props that you can set with the JSON SDUI Descriptor in order to configure it.\n",
|
|
954
2194
|
"files": {
|
|
955
|
-
"core/components/functional/
|
|
956
|
-
"title": "
|
|
2195
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2196
|
+
"title": "SDUI",
|
|
957
2197
|
"hashes": {
|
|
958
|
-
"
|
|
2198
|
+
"subscriber-extension": {
|
|
959
2199
|
"count": 1,
|
|
960
|
-
"title": "",
|
|
2200
|
+
"title": "Subscriber extension:",
|
|
961
2201
|
"type": "paragraph"
|
|
962
2202
|
}
|
|
963
2203
|
}
|
|
@@ -965,29 +2205,29 @@
|
|
|
965
2205
|
}
|
|
966
2206
|
},
|
|
967
2207
|
{
|
|
968
|
-
"search": "
|
|
2208
|
+
"search": "SDUI extends the mixin Fetcher as Fetch and List.\n",
|
|
969
2209
|
"files": {
|
|
970
|
-
"core/components/functional/
|
|
971
|
-
"title": "
|
|
2210
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2211
|
+
"title": "SDUI",
|
|
972
2212
|
"hashes": {
|
|
973
|
-
"
|
|
2213
|
+
"fetcher-extension": {
|
|
974
2214
|
"count": 1,
|
|
975
|
-
"title": "",
|
|
976
|
-
"type": "
|
|
2215
|
+
"title": "Fetcher extension:",
|
|
2216
|
+
"type": "paragraph"
|
|
977
2217
|
}
|
|
978
2218
|
}
|
|
979
2219
|
}
|
|
980
2220
|
}
|
|
981
2221
|
},
|
|
982
2222
|
{
|
|
983
|
-
"search": "
|
|
2223
|
+
"search": "In this case, it will parse the JSON coming from the request.\nThe JSON must comply with the SDUI descriptor format.\n",
|
|
984
2224
|
"files": {
|
|
985
|
-
"core/components/functional/
|
|
986
|
-
"title": "
|
|
2225
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2226
|
+
"title": "SDUI",
|
|
987
2227
|
"hashes": {
|
|
988
|
-
"
|
|
2228
|
+
"fetcher-extension": {
|
|
989
2229
|
"count": 1,
|
|
990
|
-
"title": "",
|
|
2230
|
+
"title": "Fetcher extension:",
|
|
991
2231
|
"type": "paragraph"
|
|
992
2232
|
}
|
|
993
2233
|
}
|
|
@@ -995,14 +2235,14 @@
|
|
|
995
2235
|
}
|
|
996
2236
|
},
|
|
997
2237
|
{
|
|
998
|
-
"search": "
|
|
2238
|
+
"search": "As a fetcher, invalidating the publisher or updating the endpoint will trigger a new fetch and update accordingly.\n",
|
|
999
2239
|
"files": {
|
|
1000
|
-
"core/components/functional/
|
|
1001
|
-
"title": "
|
|
2240
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2241
|
+
"title": "SDUI",
|
|
1002
2242
|
"hashes": {
|
|
1003
|
-
"
|
|
2243
|
+
"fetcher-extension": {
|
|
1004
2244
|
"count": 1,
|
|
1005
|
-
"title": "",
|
|
2245
|
+
"title": "Fetcher extension:",
|
|
1006
2246
|
"type": "paragraph"
|
|
1007
2247
|
}
|
|
1008
2248
|
}
|
|
@@ -1010,14 +2250,14 @@
|
|
|
1010
2250
|
}
|
|
1011
2251
|
},
|
|
1012
2252
|
{
|
|
1013
|
-
"search": "
|
|
2253
|
+
"search": "It has no shadowdom, and its display style is set to contents, so an empty SDUI has the fewest impact on the layout.\n",
|
|
1014
2254
|
"files": {
|
|
1015
|
-
"core/components/functional/
|
|
1016
|
-
"title": "
|
|
2255
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2256
|
+
"title": "SDUI",
|
|
1017
2257
|
"hashes": {
|
|
1018
|
-
"
|
|
2258
|
+
"rendering": {
|
|
1019
2259
|
"count": 1,
|
|
1020
|
-
"title": "
|
|
2260
|
+
"title": "Rendering:",
|
|
1021
2261
|
"type": "paragraph"
|
|
1022
2262
|
}
|
|
1023
2263
|
}
|
|
@@ -1025,14 +2265,14 @@
|
|
|
1025
2265
|
}
|
|
1026
2266
|
},
|
|
1027
2267
|
{
|
|
1028
|
-
"search": "
|
|
2268
|
+
"search": "An SDUINode represents an HTMLElement.\n",
|
|
1029
2269
|
"files": {
|
|
1030
|
-
"core/components/functional/
|
|
1031
|
-
"title": "
|
|
2270
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2271
|
+
"title": "SDUI",
|
|
1032
2272
|
"hashes": {
|
|
1033
|
-
"
|
|
2273
|
+
"descriptor": {
|
|
1034
2274
|
"count": 1,
|
|
1035
|
-
"title": "
|
|
2275
|
+
"title": "Descriptor",
|
|
1036
2276
|
"type": "paragraph"
|
|
1037
2277
|
}
|
|
1038
2278
|
}
|
|
@@ -1040,14 +2280,14 @@
|
|
|
1040
2280
|
}
|
|
1041
2281
|
},
|
|
1042
2282
|
{
|
|
1043
|
-
"search": "
|
|
2283
|
+
"search": "TypeScript definition:\n",
|
|
1044
2284
|
"files": {
|
|
1045
|
-
"core/components/functional/
|
|
1046
|
-
"title": "
|
|
2285
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2286
|
+
"title": "SDUI",
|
|
1047
2287
|
"hashes": {
|
|
1048
|
-
"
|
|
2288
|
+
"descriptor": {
|
|
1049
2289
|
"count": 1,
|
|
1050
|
-
"title": "
|
|
2290
|
+
"title": "Descriptor",
|
|
1051
2291
|
"type": "paragraph"
|
|
1052
2292
|
}
|
|
1053
2293
|
}
|
|
@@ -1055,14 +2295,14 @@
|
|
|
1055
2295
|
}
|
|
1056
2296
|
},
|
|
1057
2297
|
{
|
|
1058
|
-
"search": "
|
|
2298
|
+
"search": "Summary of properties:\n",
|
|
1059
2299
|
"files": {
|
|
1060
|
-
"core/components/functional/
|
|
1061
|
-
"title": "
|
|
2300
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2301
|
+
"title": "SDUI",
|
|
1062
2302
|
"hashes": {
|
|
1063
|
-
"
|
|
2303
|
+
"descriptor": {
|
|
1064
2304
|
"count": 1,
|
|
1065
|
-
"title": "
|
|
2305
|
+
"title": "Descriptor",
|
|
1066
2306
|
"type": "paragraph"
|
|
1067
2307
|
}
|
|
1068
2308
|
}
|
|
@@ -1070,14 +2310,14 @@
|
|
|
1070
2310
|
}
|
|
1071
2311
|
},
|
|
1072
2312
|
{
|
|
1073
|
-
"search": "
|
|
2313
|
+
"search": "Use it if you prefer to define your node entirely using an HTML string.\n",
|
|
1074
2314
|
"files": {
|
|
1075
|
-
"core/components/functional/
|
|
1076
|
-
"title": "
|
|
2315
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2316
|
+
"title": "SDUI",
|
|
1077
2317
|
"hashes": {
|
|
1078
|
-
"
|
|
2318
|
+
"markup": {
|
|
1079
2319
|
"count": 1,
|
|
1080
|
-
"title": "
|
|
2320
|
+
"title": "Markup",
|
|
1081
2321
|
"type": "paragraph"
|
|
1082
2322
|
}
|
|
1083
2323
|
}
|
|
@@ -1085,14 +2325,14 @@
|
|
|
1085
2325
|
}
|
|
1086
2326
|
},
|
|
1087
2327
|
{
|
|
1088
|
-
"search": "
|
|
2328
|
+
"search": "Here we use the field tagName of SDUINode to create an element with tag name sonic-input.\n",
|
|
1089
2329
|
"files": {
|
|
1090
|
-
"core/components/functional/
|
|
1091
|
-
"title": "
|
|
2330
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2331
|
+
"title": "SDUI",
|
|
1092
2332
|
"hashes": {
|
|
1093
|
-
"
|
|
2333
|
+
"tag-name": {
|
|
1094
2334
|
"count": 1,
|
|
1095
|
-
"title": "
|
|
2335
|
+
"title": "Tag name",
|
|
1096
2336
|
"type": "paragraph"
|
|
1097
2337
|
}
|
|
1098
2338
|
}
|
|
@@ -1100,14 +2340,14 @@
|
|
|
1100
2340
|
}
|
|
1101
2341
|
},
|
|
1102
2342
|
{
|
|
1103
|
-
"search": "
|
|
2343
|
+
"search": "A string key/value pair storing each attribute name/value of the HTML element created.\nAs no tag name is defined, a div element is created.\nHere we define the style attribute to create a tiny red square.\n",
|
|
1104
2344
|
"files": {
|
|
1105
|
-
"core/components/functional/
|
|
1106
|
-
"title": "
|
|
2345
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2346
|
+
"title": "SDUI",
|
|
1107
2347
|
"hashes": {
|
|
1108
|
-
"
|
|
2348
|
+
"attributes": {
|
|
1109
2349
|
"count": 1,
|
|
1110
|
-
"title": "
|
|
2350
|
+
"title": "Attributes",
|
|
1111
2351
|
"type": "paragraph"
|
|
1112
2352
|
}
|
|
1113
2353
|
}
|
|
@@ -1115,14 +2355,14 @@
|
|
|
1115
2355
|
}
|
|
1116
2356
|
},
|
|
1117
2357
|
{
|
|
1118
|
-
"search": "
|
|
2358
|
+
"search": "Children of the current node can be added using the field nodes recursively.\n",
|
|
1119
2359
|
"files": {
|
|
1120
|
-
"core/components/functional/
|
|
1121
|
-
"title": "
|
|
2360
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2361
|
+
"title": "SDUI",
|
|
1122
2362
|
"hashes": {
|
|
1123
|
-
"
|
|
2363
|
+
"nodes": {
|
|
1124
2364
|
"count": 1,
|
|
1125
|
-
"title": "
|
|
2365
|
+
"title": "Nodes",
|
|
1126
2366
|
"type": "paragraph"
|
|
1127
2367
|
}
|
|
1128
2368
|
}
|
|
@@ -1130,14 +2370,14 @@
|
|
|
1130
2370
|
}
|
|
1131
2371
|
},
|
|
1132
2372
|
{
|
|
1133
|
-
"search": "
|
|
2373
|
+
"search": "As no tag name is defined, a div element is created, and then we use innerHTML to add content to it.\n",
|
|
1134
2374
|
"files": {
|
|
1135
|
-
"core/components/functional/
|
|
1136
|
-
"title": "
|
|
2375
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2376
|
+
"title": "SDUI",
|
|
1137
2377
|
"hashes": {
|
|
1138
|
-
"
|
|
2378
|
+
"innerhtml": {
|
|
1139
2379
|
"count": 1,
|
|
1140
|
-
"title": "
|
|
2380
|
+
"title": "InnerHTML",
|
|
1141
2381
|
"type": "paragraph"
|
|
1142
2382
|
}
|
|
1143
2383
|
}
|
|
@@ -1145,14 +2385,14 @@
|
|
|
1145
2385
|
}
|
|
1146
2386
|
},
|
|
1147
2387
|
{
|
|
1148
|
-
"search": "
|
|
2388
|
+
"search": "Use them if you want to wrap the component with some HTML string.\n",
|
|
1149
2389
|
"files": {
|
|
1150
|
-
"core/components/functional/
|
|
1151
|
-
"title": "
|
|
2390
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2391
|
+
"title": "SDUI",
|
|
1152
2392
|
"hashes": {
|
|
1153
|
-
"
|
|
2393
|
+
"prefix-and-suffix": {
|
|
1154
2394
|
"count": 1,
|
|
1155
|
-
"title": "
|
|
2395
|
+
"title": "Prefix and suffix",
|
|
1156
2396
|
"type": "paragraph"
|
|
1157
2397
|
}
|
|
1158
2398
|
}
|
|
@@ -1160,29 +2400,29 @@
|
|
|
1160
2400
|
}
|
|
1161
2401
|
},
|
|
1162
2402
|
{
|
|
1163
|
-
"search": "
|
|
2403
|
+
"search": "The libraryKey of SDUINode is an identifier that points to an SDUINode description in the library to be used as a model for this node.\n",
|
|
1164
2404
|
"files": {
|
|
1165
|
-
"core/components/functional/
|
|
1166
|
-
"title": "
|
|
2405
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2406
|
+
"title": "SDUI",
|
|
1167
2407
|
"hashes": {
|
|
1168
|
-
"
|
|
2408
|
+
"library-key-and-contentelementselector": {
|
|
1169
2409
|
"count": 1,
|
|
1170
|
-
"title": "",
|
|
1171
|
-
"type": "
|
|
2410
|
+
"title": "Library key and contentElementSelector",
|
|
2411
|
+
"type": "paragraph"
|
|
1172
2412
|
}
|
|
1173
2413
|
}
|
|
1174
2414
|
}
|
|
1175
2415
|
}
|
|
1176
2416
|
},
|
|
1177
2417
|
{
|
|
1178
|
-
"search": "
|
|
2418
|
+
"search": "Note that the SDUI has a default library containing some basic component definitions useful for form declaration (see default-library.json).\n",
|
|
1179
2419
|
"files": {
|
|
1180
|
-
"core/components/functional/
|
|
1181
|
-
"title": "
|
|
2420
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2421
|
+
"title": "SDUI",
|
|
1182
2422
|
"hashes": {
|
|
1183
|
-
"
|
|
2423
|
+
"library-key-and-contentelementselector": {
|
|
1184
2424
|
"count": 1,
|
|
1185
|
-
"title": "",
|
|
2425
|
+
"title": "Library key and contentElementSelector",
|
|
1186
2426
|
"type": "paragraph"
|
|
1187
2427
|
}
|
|
1188
2428
|
}
|
|
@@ -1190,14 +2430,14 @@
|
|
|
1190
2430
|
}
|
|
1191
2431
|
},
|
|
1192
2432
|
{
|
|
1193
|
-
"search": "
|
|
2433
|
+
"search": "This example uses the library key submit which points to a sonic-submit containing a button also coming from the library.\n",
|
|
1194
2434
|
"files": {
|
|
1195
|
-
"core/components/functional/
|
|
1196
|
-
"title": "
|
|
2435
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2436
|
+
"title": "SDUI",
|
|
1197
2437
|
"hashes": {
|
|
1198
|
-
"
|
|
2438
|
+
"library-key-and-contentelementselector": {
|
|
1199
2439
|
"count": 1,
|
|
1200
|
-
"title": "",
|
|
2440
|
+
"title": "Library key and contentElementSelector",
|
|
1201
2441
|
"type": "paragraph"
|
|
1202
2442
|
}
|
|
1203
2443
|
}
|
|
@@ -1205,14 +2445,14 @@
|
|
|
1205
2445
|
}
|
|
1206
2446
|
},
|
|
1207
2447
|
{
|
|
1208
|
-
"search": "
|
|
2448
|
+
"search": "The element named button in the library is a sonic-button of type success containing a check icon as a prefix.\n",
|
|
1209
2449
|
"files": {
|
|
1210
|
-
"core/components/functional/
|
|
1211
|
-
"title": "
|
|
2450
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2451
|
+
"title": "SDUI",
|
|
1212
2452
|
"hashes": {
|
|
1213
|
-
"
|
|
2453
|
+
"library-key-and-contentelementselector": {
|
|
1214
2454
|
"count": 1,
|
|
1215
|
-
"title": "",
|
|
2455
|
+
"title": "Library key and contentElementSelector",
|
|
1216
2456
|
"type": "paragraph"
|
|
1217
2457
|
}
|
|
1218
2458
|
}
|
|
@@ -1220,14 +2460,14 @@
|
|
|
1220
2460
|
}
|
|
1221
2461
|
},
|
|
1222
2462
|
{
|
|
1223
|
-
"search": "
|
|
2463
|
+
"search": "Since the submit library element contains an attribute contentElementSelector with the value sonic-button, the "injected content" is put inside the button.\n",
|
|
1224
2464
|
"files": {
|
|
1225
|
-
"core/components/functional/
|
|
1226
|
-
"title": "
|
|
2465
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2466
|
+
"title": "SDUI",
|
|
1227
2467
|
"hashes": {
|
|
1228
|
-
"
|
|
2468
|
+
"library-key-and-contentelementselector": {
|
|
1229
2469
|
"count": 1,
|
|
1230
|
-
"title": "
|
|
2470
|
+
"title": "Library key and contentElementSelector",
|
|
1231
2471
|
"type": "paragraph"
|
|
1232
2472
|
}
|
|
1233
2473
|
}
|
|
@@ -1235,14 +2475,14 @@
|
|
|
1235
2475
|
}
|
|
1236
2476
|
},
|
|
1237
2477
|
{
|
|
1238
|
-
"search": "
|
|
2478
|
+
"search": "We used innerHTML for the sake of simplicity, but you can use nodes to add any complex content.\n",
|
|
1239
2479
|
"files": {
|
|
1240
|
-
"core/components/functional/
|
|
1241
|
-
"title": "
|
|
2480
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2481
|
+
"title": "SDUI",
|
|
1242
2482
|
"hashes": {
|
|
1243
|
-
"
|
|
2483
|
+
"library-key-and-contentelementselector": {
|
|
1244
2484
|
"count": 1,
|
|
1245
|
-
"title": "
|
|
2485
|
+
"title": "Library key and contentElementSelector",
|
|
1246
2486
|
"type": "paragraph"
|
|
1247
2487
|
}
|
|
1248
2488
|
}
|
|
@@ -1250,14 +2490,14 @@
|
|
|
1250
2490
|
}
|
|
1251
2491
|
},
|
|
1252
2492
|
{
|
|
1253
|
-
"search": "
|
|
2493
|
+
"search": "This special field lets you inject the content at any place in the HTML flow already set inside the parent SDUI component by using a CSS selector.\n",
|
|
1254
2494
|
"files": {
|
|
1255
|
-
"core/components/functional/
|
|
1256
|
-
"title": "
|
|
2495
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2496
|
+
"title": "SDUI",
|
|
1257
2497
|
"hashes": {
|
|
1258
|
-
"
|
|
2498
|
+
"parentelementselector": {
|
|
1259
2499
|
"count": 1,
|
|
1260
|
-
"title": "
|
|
2500
|
+
"title": "parentElementSelector",
|
|
1261
2501
|
"type": "paragraph"
|
|
1262
2502
|
}
|
|
1263
2503
|
}
|
|
@@ -1265,14 +2505,14 @@
|
|
|
1265
2505
|
}
|
|
1266
2506
|
},
|
|
1267
2507
|
{
|
|
1268
|
-
"search": "
|
|
2508
|
+
"search": "⚠️ Note that it doesn't work with top-level nodes.\n",
|
|
1269
2509
|
"files": {
|
|
1270
|
-
"core/components/functional/
|
|
1271
|
-
"title": "
|
|
2510
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2511
|
+
"title": "SDUI",
|
|
1272
2512
|
"hashes": {
|
|
1273
|
-
"
|
|
2513
|
+
"parentelementselector": {
|
|
1274
2514
|
"count": 1,
|
|
1275
|
-
"title": "
|
|
2515
|
+
"title": "parentElementSelector",
|
|
1276
2516
|
"type": "paragraph"
|
|
1277
2517
|
}
|
|
1278
2518
|
}
|
|
@@ -1280,14 +2520,14 @@
|
|
|
1280
2520
|
}
|
|
1281
2521
|
},
|
|
1282
2522
|
{
|
|
1283
|
-
"search": "
|
|
2523
|
+
"search": "The transformers let you transform the structure of the SDUI Descriptor into a new one before parsing and rendering it.\n",
|
|
1284
2524
|
"files": {
|
|
1285
|
-
"core/components/functional/
|
|
1286
|
-
"title": "
|
|
2525
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2526
|
+
"title": "SDUI",
|
|
1287
2527
|
"hashes": {
|
|
1288
|
-
"
|
|
2528
|
+
"transformers": {
|
|
1289
2529
|
"count": 1,
|
|
1290
|
-
"title": "
|
|
2530
|
+
"title": "Transformers:",
|
|
1291
2531
|
"type": "paragraph"
|
|
1292
2532
|
}
|
|
1293
2533
|
}
|
|
@@ -1295,14 +2535,14 @@
|
|
|
1295
2535
|
}
|
|
1296
2536
|
},
|
|
1297
2537
|
{
|
|
1298
|
-
"search": "
|
|
2538
|
+
"search": "To enable it, you must fill the transformation attribute of the component with a URL pointing to a Transform descriptor.\n",
|
|
1299
2539
|
"files": {
|
|
1300
|
-
"core/components/functional/
|
|
1301
|
-
"title": "
|
|
2540
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2541
|
+
"title": "SDUI",
|
|
1302
2542
|
"hashes": {
|
|
1303
|
-
"
|
|
2543
|
+
"transformers": {
|
|
1304
2544
|
"count": 1,
|
|
1305
|
-
"title": "
|
|
2545
|
+
"title": "Transformers:",
|
|
1306
2546
|
"type": "paragraph"
|
|
1307
2547
|
}
|
|
1308
2548
|
}
|
|
@@ -1310,14 +2550,14 @@
|
|
|
1310
2550
|
}
|
|
1311
2551
|
},
|
|
1312
2552
|
{
|
|
1313
|
-
"search": "
|
|
2553
|
+
"search": "Each key of the library will be merged with the current library in the SDUI Descriptor, by replacing or creating items library key by key.\n",
|
|
1314
2554
|
"files": {
|
|
1315
|
-
"core/components/functional/
|
|
1316
|
-
"title": "
|
|
2555
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2556
|
+
"title": "SDUI",
|
|
1317
2557
|
"hashes": {
|
|
1318
|
-
"
|
|
2558
|
+
"the-library": {
|
|
1319
2559
|
"count": 1,
|
|
1320
|
-
"title": "
|
|
2560
|
+
"title": "The library:",
|
|
1321
2561
|
"type": "paragraph"
|
|
1322
2562
|
}
|
|
1323
2563
|
}
|
|
@@ -1325,14 +2565,14 @@
|
|
|
1325
2565
|
}
|
|
1326
2566
|
},
|
|
1327
2567
|
{
|
|
1328
|
-
"search": "
|
|
2568
|
+
"search": "Each transform represents an action that will be done on the SDUI descriptor before the creation of the entire UI.\n",
|
|
1329
2569
|
"files": {
|
|
1330
|
-
"core/components/functional/
|
|
1331
|
-
"title": "
|
|
2570
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2571
|
+
"title": "SDUI",
|
|
1332
2572
|
"hashes": {
|
|
1333
|
-
"
|
|
2573
|
+
"the-transform-actions": {
|
|
1334
2574
|
"count": 1,
|
|
1335
|
-
"title": "
|
|
2575
|
+
"title": "The transform actions:",
|
|
1336
2576
|
"type": "paragraph"
|
|
1337
2577
|
}
|
|
1338
2578
|
}
|
|
@@ -1340,14 +2580,14 @@
|
|
|
1340
2580
|
}
|
|
1341
2581
|
},
|
|
1342
2582
|
{
|
|
1343
|
-
"search": "
|
|
2583
|
+
"search": "The action that will be done is a verb:\n",
|
|
1344
2584
|
"files": {
|
|
1345
|
-
"core/components/functional/
|
|
1346
|
-
"title": "
|
|
2585
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2586
|
+
"title": "SDUI",
|
|
1347
2587
|
"hashes": {
|
|
1348
|
-
"
|
|
2588
|
+
"the-transform-actions": {
|
|
1349
2589
|
"count": 1,
|
|
1350
|
-
"title": "
|
|
2590
|
+
"title": "The transform actions:",
|
|
1351
2591
|
"type": "paragraph"
|
|
1352
2592
|
}
|
|
1353
2593
|
}
|
|
@@ -1355,14 +2595,14 @@
|
|
|
1355
2595
|
}
|
|
1356
2596
|
},
|
|
1357
2597
|
{
|
|
1358
|
-
"search": "
|
|
2598
|
+
"search": "This is an HTML attribute to set on the component if needed. In this case, the component will not treat its props value directly as an SDUI descriptor. Internally, it will basically extract the SDUIDescriptor by doing something like this: const sduiDescriptor = this.props[this.sduikey].\n",
|
|
1359
2599
|
"files": {
|
|
1360
|
-
"core/components/functional/
|
|
1361
|
-
"title": "
|
|
2600
|
+
"core/components/functional/sdui/sdui.md": {
|
|
2601
|
+
"title": "SDUI",
|
|
1362
2602
|
"hashes": {
|
|
1363
|
-
"
|
|
2603
|
+
"sduikey": {
|
|
1364
2604
|
"count": 1,
|
|
1365
|
-
"title": "
|
|
2605
|
+
"title": "sduiKey",
|
|
1366
2606
|
"type": "paragraph"
|
|
1367
2607
|
}
|
|
1368
2608
|
}
|
|
@@ -1370,29 +2610,29 @@
|
|
|
1370
2610
|
}
|
|
1371
2611
|
},
|
|
1372
2612
|
{
|
|
1373
|
-
"search": "
|
|
2613
|
+
"search": "This is an HTML attribute to set on the component if needed. In this case, the component will automatically create a sonic-toast-message-subscriber component. The data found in props[messageKey] will be treated as the data expected by the sonic-toast-message-subscriber. So, by respecting the format of data supported by this component, you will be able to show multiple toasts in the result of a request.\n",
|
|
1374
2614
|
"files": {
|
|
1375
2615
|
"core/components/functional/sdui/sdui.md": {
|
|
1376
2616
|
"title": "SDUI",
|
|
1377
2617
|
"hashes": {
|
|
1378
|
-
"
|
|
2618
|
+
"messagekey": {
|
|
1379
2619
|
"count": 1,
|
|
1380
|
-
"title": "",
|
|
1381
|
-
"type": "
|
|
2620
|
+
"title": "messageKey",
|
|
2621
|
+
"type": "paragraph"
|
|
1382
2622
|
}
|
|
1383
2623
|
}
|
|
1384
2624
|
}
|
|
1385
2625
|
}
|
|
1386
2626
|
},
|
|
1387
2627
|
{
|
|
1388
|
-
"search": "
|
|
2628
|
+
"search": "Example of JSON with messageKey=messages:\n\n",
|
|
1389
2629
|
"files": {
|
|
1390
2630
|
"core/components/functional/sdui/sdui.md": {
|
|
1391
2631
|
"title": "SDUI",
|
|
1392
2632
|
"hashes": {
|
|
1393
|
-
"
|
|
2633
|
+
"messagekey": {
|
|
1394
2634
|
"count": 1,
|
|
1395
|
-
"title": "
|
|
2635
|
+
"title": "messageKey",
|
|
1396
2636
|
"type": "paragraph"
|
|
1397
2637
|
}
|
|
1398
2638
|
}
|
|
@@ -1400,14 +2640,14 @@
|
|
|
1400
2640
|
}
|
|
1401
2641
|
},
|
|
1402
2642
|
{
|
|
1403
|
-
"search": "
|
|
2643
|
+
"search": "This is an HTML attribute to set on the component if needed. You can set a URL pointing to a JSON describing a library with the same structure as the library in the SDUIDescriptor. The component will simply override its library with the given one.\n",
|
|
1404
2644
|
"files": {
|
|
1405
2645
|
"core/components/functional/sdui/sdui.md": {
|
|
1406
2646
|
"title": "SDUI",
|
|
1407
2647
|
"hashes": {
|
|
1408
|
-
"
|
|
2648
|
+
"library": {
|
|
1409
2649
|
"count": 1,
|
|
1410
|
-
"title": "
|
|
2650
|
+
"title": "library",
|
|
1411
2651
|
"type": "paragraph"
|
|
1412
2652
|
}
|
|
1413
2653
|
}
|
|
@@ -1415,14 +2655,14 @@
|
|
|
1415
2655
|
}
|
|
1416
2656
|
},
|
|
1417
2657
|
{
|
|
1418
|
-
"search": "
|
|
2658
|
+
"search": "Here is a little playground to let you test some simple tricks.\n",
|
|
1419
2659
|
"files": {
|
|
1420
2660
|
"core/components/functional/sdui/sdui.md": {
|
|
1421
2661
|
"title": "SDUI",
|
|
1422
2662
|
"hashes": {
|
|
1423
|
-
"
|
|
2663
|
+
"playground": {
|
|
1424
2664
|
"count": 1,
|
|
1425
|
-
"title": "
|
|
2665
|
+
"title": "Playground",
|
|
1426
2666
|
"type": "paragraph"
|
|
1427
2667
|
}
|
|
1428
2668
|
}
|
|
@@ -1430,29 +2670,29 @@
|
|
|
1430
2670
|
}
|
|
1431
2671
|
},
|
|
1432
2672
|
{
|
|
1433
|
-
"search": "
|
|
2673
|
+
"search": "Shader",
|
|
1434
2674
|
"files": {
|
|
1435
|
-
"core/components/functional/
|
|
1436
|
-
"title": "
|
|
2675
|
+
"core/components/functional/shader/shader.md": {
|
|
2676
|
+
"title": "Shader",
|
|
1437
2677
|
"hashes": {
|
|
1438
|
-
"
|
|
2678
|
+
"shader": {
|
|
1439
2679
|
"count": 1,
|
|
1440
|
-
"title": "
|
|
1441
|
-
"type": "
|
|
2680
|
+
"title": "",
|
|
2681
|
+
"type": "page"
|
|
1442
2682
|
}
|
|
1443
2683
|
}
|
|
1444
2684
|
}
|
|
1445
2685
|
}
|
|
1446
2686
|
},
|
|
1447
2687
|
{
|
|
1448
|
-
"search": "
|
|
2688
|
+
"search": "sonic-shader — renderer WebGL2 compatible ShaderToy (pass Image + buffers A–D + Common).\n",
|
|
1449
2689
|
"files": {
|
|
1450
|
-
"core/components/functional/
|
|
1451
|
-
"title": "
|
|
2690
|
+
"core/components/functional/shader/shader.md": {
|
|
2691
|
+
"title": "Shader",
|
|
1452
2692
|
"hashes": {
|
|
1453
|
-
"
|
|
2693
|
+
"shader": {
|
|
1454
2694
|
"count": 1,
|
|
1455
|
-
"title": "
|
|
2695
|
+
"title": "",
|
|
1456
2696
|
"type": "paragraph"
|
|
1457
2697
|
}
|
|
1458
2698
|
}
|
|
@@ -1460,14 +2700,14 @@
|
|
|
1460
2700
|
}
|
|
1461
2701
|
},
|
|
1462
2702
|
{
|
|
1463
|
-
"search": "
|
|
2703
|
+
"search": "For WGSL / WebGPU (1 pass, same DP glue): sonic-webgpu.\n",
|
|
1464
2704
|
"files": {
|
|
1465
|
-
"core/components/functional/
|
|
1466
|
-
"title": "
|
|
2705
|
+
"core/components/functional/shader/shader.md": {
|
|
2706
|
+
"title": "Shader",
|
|
1467
2707
|
"hashes": {
|
|
1468
|
-
"
|
|
2708
|
+
"shader": {
|
|
1469
2709
|
"count": 1,
|
|
1470
|
-
"title": "
|
|
2710
|
+
"title": "",
|
|
1471
2711
|
"type": "paragraph"
|
|
1472
2712
|
}
|
|
1473
2713
|
}
|
|
@@ -1475,14 +2715,14 @@
|
|
|
1475
2715
|
}
|
|
1476
2716
|
},
|
|
1477
2717
|
{
|
|
1478
|
-
"search": "
|
|
2718
|
+
"search": "CDN (after the core): concorde-shader.bundle.js — see CDN addons.\n",
|
|
1479
2719
|
"files": {
|
|
1480
|
-
"core/components/functional/
|
|
1481
|
-
"title": "
|
|
2720
|
+
"core/components/functional/shader/shader.md": {
|
|
2721
|
+
"title": "Shader",
|
|
1482
2722
|
"hashes": {
|
|
1483
|
-
"
|
|
2723
|
+
"shader": {
|
|
1484
2724
|
"count": 1,
|
|
1485
|
-
"title": "
|
|
2725
|
+
"title": "",
|
|
1486
2726
|
"type": "paragraph"
|
|
1487
2727
|
}
|
|
1488
2728
|
}
|
|
@@ -1490,14 +2730,14 @@
|
|
|
1490
2730
|
}
|
|
1491
2731
|
},
|
|
1492
2732
|
{
|
|
1493
|
-
"search": "
|
|
2733
|
+
"search": "Uniforms supportés : iResolution, iTime, iTimeDelta, iFrame, iFrameRate, iMouse, iDate, iChannel0–3, iChannelResolution, iChannelTime, iSampleRate, uParam0–3.\n",
|
|
1494
2734
|
"files": {
|
|
1495
|
-
"core/components/functional/
|
|
1496
|
-
"title": "
|
|
2735
|
+
"core/components/functional/shader/shader.md": {
|
|
2736
|
+
"title": "Shader",
|
|
1497
2737
|
"hashes": {
|
|
1498
|
-
"
|
|
2738
|
+
"shader": {
|
|
1499
2739
|
"count": 1,
|
|
1500
|
-
"title": "
|
|
2740
|
+
"title": "",
|
|
1501
2741
|
"type": "paragraph"
|
|
1502
2742
|
}
|
|
1503
2743
|
}
|
|
@@ -1505,14 +2745,14 @@
|
|
|
1505
2745
|
}
|
|
1506
2746
|
},
|
|
1507
2747
|
{
|
|
1508
|
-
"search": "
|
|
2748
|
+
"search": "Textures channel0–3 : images, vidéos (.webm / .mp4 / …), ou éléments page via #id (<img>, <video>, <canvas>, sonic-3d / sonic-webgpu / sonic-shader).\n",
|
|
1509
2749
|
"files": {
|
|
1510
|
-
"core/components/functional/
|
|
1511
|
-
"title": "
|
|
2750
|
+
"core/components/functional/shader/shader.md": {
|
|
2751
|
+
"title": "Shader",
|
|
1512
2752
|
"hashes": {
|
|
1513
|
-
"
|
|
2753
|
+
"shader": {
|
|
1514
2754
|
"count": 1,
|
|
1515
|
-
"title": "
|
|
2755
|
+
"title": "",
|
|
1516
2756
|
"type": "paragraph"
|
|
1517
2757
|
}
|
|
1518
2758
|
}
|
|
@@ -1520,14 +2760,14 @@
|
|
|
1520
2760
|
}
|
|
1521
2761
|
},
|
|
1522
2762
|
{
|
|
1523
|
-
"search": "
|
|
2763
|
+
"search": "Buffer A simule une height-map d’ondes (ripple) ; Image réfracte la photo via le gradient — sans teinte. Glisser la souris pour faire des vagues.\n",
|
|
1524
2764
|
"files": {
|
|
1525
|
-
"core/components/functional/
|
|
1526
|
-
"title": "
|
|
2765
|
+
"core/components/functional/shader/shader.md": {
|
|
2766
|
+
"title": "Shader",
|
|
1527
2767
|
"hashes": {
|
|
1528
|
-
"
|
|
2768
|
+
"multipass-sur-une-photo": {
|
|
1529
2769
|
"count": 1,
|
|
1530
|
-
"title": "
|
|
2770
|
+
"title": "Multipass sur une photo",
|
|
1531
2771
|
"type": "paragraph"
|
|
1532
2772
|
}
|
|
1533
2773
|
}
|
|
@@ -1535,14 +2775,14 @@
|
|
|
1535
2775
|
}
|
|
1536
2776
|
},
|
|
1537
2777
|
{
|
|
1538
|
-
"search": "
|
|
2778
|
+
"search": "Photo + depth parallax (HF): Visual stack.\n",
|
|
1539
2779
|
"files": {
|
|
1540
|
-
"core/components/functional/
|
|
1541
|
-
"title": "
|
|
2780
|
+
"core/components/functional/shader/shader.md": {
|
|
2781
|
+
"title": "Shader",
|
|
1542
2782
|
"hashes": {
|
|
1543
|
-
"
|
|
2783
|
+
"multipass-sur-une-photo": {
|
|
1544
2784
|
"count": 1,
|
|
1545
|
-
"title": "
|
|
2785
|
+
"title": "Multipass sur une photo",
|
|
1546
2786
|
"type": "paragraph"
|
|
1547
2787
|
}
|
|
1548
2788
|
}
|
|
@@ -1550,14 +2790,14 @@
|
|
|
1550
2790
|
}
|
|
1551
2791
|
},
|
|
1552
2792
|
{
|
|
1553
|
-
"search": "
|
|
2793
|
+
"search": "Live 3D → shader (no JPEG): Visual stack.\n",
|
|
1554
2794
|
"files": {
|
|
1555
|
-
"core/components/functional/
|
|
1556
|
-
"title": "
|
|
2795
|
+
"core/components/functional/shader/shader.md": {
|
|
2796
|
+
"title": "Shader",
|
|
1557
2797
|
"hashes": {
|
|
1558
|
-
"
|
|
2798
|
+
"multipass-sur-une-photo": {
|
|
1559
2799
|
"count": 1,
|
|
1560
|
-
"title": "
|
|
2800
|
+
"title": "Multipass sur une photo",
|
|
1561
2801
|
"type": "paragraph"
|
|
1562
2802
|
}
|
|
1563
2803
|
}
|
|
@@ -1565,14 +2805,14 @@
|
|
|
1565
2805
|
}
|
|
1566
2806
|
},
|
|
1567
2807
|
{
|
|
1568
|
-
"search": "
|
|
2808
|
+
"search": "Règle : brancher des passes dans un sonic-shader (buffers A–D → Image), pas deux composants via dataProvider — sauf pont live #élément (copie canvas chaque frame).\n",
|
|
1569
2809
|
"files": {
|
|
1570
|
-
"core/components/functional/
|
|
1571
|
-
"title": "
|
|
2810
|
+
"core/components/functional/shader/shader.md": {
|
|
2811
|
+
"title": "Shader",
|
|
1572
2812
|
"hashes": {
|
|
1573
|
-
"
|
|
2813
|
+
"chaînage-deffets-officiel": {
|
|
1574
2814
|
"count": 1,
|
|
1575
|
-
"title": "
|
|
2815
|
+
"title": "Chaînage d’effets (officiel)",
|
|
1576
2816
|
"type": "paragraph"
|
|
1577
2817
|
}
|
|
1578
2818
|
}
|
|
@@ -1580,14 +2820,14 @@
|
|
|
1580
2820
|
}
|
|
1581
2821
|
},
|
|
1582
2822
|
{
|
|
1583
|
-
"search": "
|
|
2823
|
+
"search": "Les passes intermédiaires sont déjà offscreen (FBO). Pas besoin d’un second sonic-shader invisible pour du multipass interne.\n",
|
|
1584
2824
|
"files": {
|
|
1585
|
-
"core/components/functional/
|
|
1586
|
-
"title": "
|
|
2825
|
+
"core/components/functional/shader/shader.md": {
|
|
2826
|
+
"title": "Shader",
|
|
1587
2827
|
"hashes": {
|
|
1588
|
-
"
|
|
2828
|
+
"chaînage-deffets-officiel": {
|
|
1589
2829
|
"count": 1,
|
|
1590
|
-
"title": "
|
|
2830
|
+
"title": "Chaînage d’effets (officiel)",
|
|
1591
2831
|
"type": "paragraph"
|
|
1592
2832
|
}
|
|
1593
2833
|
}
|
|
@@ -1595,14 +2835,14 @@
|
|
|
1595
2835
|
}
|
|
1596
2836
|
},
|
|
1597
2837
|
{
|
|
1598
|
-
"search": "
|
|
2838
|
+
"search": "Deux instances séparées ne partagent pas leurs textures WebGL (contextes distincts). Le pont live #id copie le canvas source ; frame-out JPEG reste pour export / freeze.\nDémo pédagogique : Buffer A = Sobel → Image = overlay + param0.\n",
|
|
1599
2839
|
"files": {
|
|
1600
|
-
"core/components/functional/
|
|
1601
|
-
"title": "
|
|
2840
|
+
"core/components/functional/shader/shader.md": {
|
|
2841
|
+
"title": "Shader",
|
|
1602
2842
|
"hashes": {
|
|
1603
|
-
"
|
|
2843
|
+
"chaînage-deffets-officiel": {
|
|
1604
2844
|
"count": 1,
|
|
1605
|
-
"title": "
|
|
2845
|
+
"title": "Chaînage d’effets (officiel)",
|
|
1606
2846
|
"type": "paragraph"
|
|
1607
2847
|
}
|
|
1608
2848
|
}
|
|
@@ -1610,14 +2850,14 @@
|
|
|
1610
2850
|
}
|
|
1611
2851
|
},
|
|
1612
2852
|
{
|
|
1613
|
-
"search": "
|
|
2853
|
+
"search": "Exemple de câblage :\n",
|
|
1614
2854
|
"files": {
|
|
1615
|
-
"core/components/functional/
|
|
1616
|
-
"title": "
|
|
2855
|
+
"core/components/functional/shader/shader.md": {
|
|
2856
|
+
"title": "Shader",
|
|
1617
2857
|
"hashes": {
|
|
1618
|
-
"
|
|
2858
|
+
"chaînage-deffets-officiel": {
|
|
1619
2859
|
"count": 1,
|
|
1620
|
-
"title": "
|
|
2860
|
+
"title": "Chaînage d’effets (officiel)",
|
|
1621
2861
|
"type": "paragraph"
|
|
1622
2862
|
}
|
|
1623
2863
|
}
|
|
@@ -1625,14 +2865,14 @@
|
|
|
1625
2865
|
}
|
|
1626
2866
|
},
|
|
1627
2867
|
{
|
|
1628
|
-
"search": "
|
|
2868
|
+
"search": "Au survol, le composant anime un uParamN de 0 → 1 (et l’inverse au leave), avec easing hover-speed. Le shader lit ce param pour mixer l’effet on/off (zoom, aberration, ripple…). play-on-hover n’anime que pendant le hover / la transition.\n",
|
|
1629
2869
|
"files": {
|
|
1630
|
-
"core/components/functional/
|
|
1631
|
-
"title": "
|
|
2870
|
+
"core/components/functional/shader/shader.md": {
|
|
2871
|
+
"title": "Shader",
|
|
1632
2872
|
"hashes": {
|
|
1633
|
-
"
|
|
2873
|
+
"rollover--roll-out-hover-param": {
|
|
1634
2874
|
"count": 1,
|
|
1635
|
-
"title": "
|
|
2875
|
+
"title": "Rollover / roll-out (`hover-param`)",
|
|
1636
2876
|
"type": "paragraph"
|
|
1637
2877
|
}
|
|
1638
2878
|
}
|
|
@@ -1640,14 +2880,14 @@
|
|
|
1640
2880
|
}
|
|
1641
2881
|
},
|
|
1642
2882
|
{
|
|
1643
|
-
"search": "
|
|
2883
|
+
"search": "Type : ShaderHoverParam = 0 | 1 | 2 | 3 | "param0"…"param3" | "".\n",
|
|
1644
2884
|
"files": {
|
|
1645
|
-
"core/components/functional/
|
|
1646
|
-
"title": "
|
|
2885
|
+
"core/components/functional/shader/shader.md": {
|
|
2886
|
+
"title": "Shader",
|
|
1647
2887
|
"hashes": {
|
|
1648
|
-
"
|
|
2888
|
+
"rollover--roll-out-hover-param": {
|
|
1649
2889
|
"count": 1,
|
|
1650
|
-
"title": "
|
|
2890
|
+
"title": "Rollover / roll-out (`hover-param`)",
|
|
1651
2891
|
"type": "paragraph"
|
|
1652
2892
|
}
|
|
1653
2893
|
}
|
|
@@ -1655,14 +2895,14 @@
|
|
|
1655
2895
|
}
|
|
1656
2896
|
},
|
|
1657
2897
|
{
|
|
1658
|
-
"search": "
|
|
2898
|
+
"search": "dataProvider est bidirectionnel : param0… en entrée ; en sortie mouseX / mouseY / hovering / frame (+ param0… si out-data-provider est séparé, ou le slot hover-param seul si le DP est partagé avec le formulaire). Avec sample, lit la couleur sous le curseur → sampleR/G/B/A + sampleLuma (SonicShaderOutput). Event out (payload complet, y compris les params). Optionnel : out-data-provider pour séparer l’écriture.\n",
|
|
1659
2899
|
"files": {
|
|
1660
|
-
"core/components/functional/
|
|
1661
|
-
"title": "
|
|
2900
|
+
"core/components/functional/shader/shader.md": {
|
|
2901
|
+
"title": "Shader",
|
|
1662
2902
|
"hashes": {
|
|
1663
|
-
"
|
|
2903
|
+
"sortie--sampling-sample--dataprovider": {
|
|
1664
2904
|
"count": 1,
|
|
1665
|
-
"title": "
|
|
2905
|
+
"title": "Sortie / sampling (`sample` + dataProvider)",
|
|
1666
2906
|
"type": "paragraph"
|
|
1667
2907
|
}
|
|
1668
2908
|
}
|
|
@@ -1670,14 +2910,14 @@
|
|
|
1670
2910
|
}
|
|
1671
2911
|
},
|
|
1672
2912
|
{
|
|
1673
|
-
"search": "
|
|
2913
|
+
"search": "Publication paresseuse : rien n’est écrit (ni readPixels) tant qu’aucun champ méta/sample n’a de lecteur DP (@handle(frame) / @subscribe / sonic-value…) et qu’aucun listener out n’est branché. Un sonic-input name="param0" ne compte pas comme consommateur out (évite le write-back qui remettait les champs à 0). Dès qu’un vrai consommateur apparaît, les maj partent au rythme de out-interval. Avec sample, le readPixels suit le même gate.\n",
|
|
1674
2914
|
"files": {
|
|
1675
|
-
"core/components/functional/
|
|
1676
|
-
"title": "
|
|
2915
|
+
"core/components/functional/shader/shader.md": {
|
|
2916
|
+
"title": "Shader",
|
|
1677
2917
|
"hashes": {
|
|
1678
|
-
"
|
|
2918
|
+
"sortie--sampling-sample--dataprovider": {
|
|
1679
2919
|
"count": 1,
|
|
1680
|
-
"title": "
|
|
2920
|
+
"title": "Sortie / sampling (`sample` + dataProvider)",
|
|
1681
2921
|
"type": "paragraph"
|
|
1682
2922
|
}
|
|
1683
2923
|
}
|
|
@@ -1685,14 +2925,14 @@
|
|
|
1685
2925
|
}
|
|
1686
2926
|
},
|
|
1687
2927
|
{
|
|
1688
|
-
"search": "
|
|
2928
|
+
"search": "Pattern typique — écoute frame + lecture massive :\n",
|
|
1689
2929
|
"files": {
|
|
1690
|
-
"core/components/functional/
|
|
1691
|
-
"title": "
|
|
2930
|
+
"core/components/functional/shader/shader.md": {
|
|
2931
|
+
"title": "Shader",
|
|
1692
2932
|
"hashes": {
|
|
1693
|
-
"
|
|
2933
|
+
"sortie--sampling-sample--dataprovider": {
|
|
1694
2934
|
"count": 1,
|
|
1695
|
-
"title": "
|
|
2935
|
+
"title": "Sortie / sampling (`sample` + dataProvider)",
|
|
1696
2936
|
"type": "paragraph"
|
|
1697
2937
|
}
|
|
1698
2938
|
}
|
|
@@ -1700,14 +2940,14 @@
|
|
|
1700
2940
|
}
|
|
1701
2941
|
},
|
|
1702
2942
|
{
|
|
1703
|
-
"search": "
|
|
2943
|
+
"search": "A GPU pass writes a score mask (R channel) into a buffer; extract scans it, crops patches around peaks, and publishes scalars + blobUrl for downstream use.\n",
|
|
1704
2944
|
"files": {
|
|
1705
|
-
"core/components/functional/
|
|
1706
|
-
"title": "
|
|
2945
|
+
"core/components/functional/shader/shader.md": {
|
|
2946
|
+
"title": "Shader",
|
|
1707
2947
|
"hashes": {
|
|
1708
|
-
"
|
|
2948
|
+
"extraction-patches--singularities-extract": {
|
|
1709
2949
|
"count": 1,
|
|
1710
|
-
"title": "
|
|
2950
|
+
"title": "Extraction patches / singularities (`extract`)",
|
|
1711
2951
|
"type": "paragraph"
|
|
1712
2952
|
}
|
|
1713
2953
|
}
|
|
@@ -1715,14 +2955,14 @@
|
|
|
1715
2955
|
}
|
|
1716
2956
|
},
|
|
1717
2957
|
{
|
|
1718
|
-
"search": "
|
|
2958
|
+
"search": "detect scores: mask R channel (prefer a soft map, not hard-clipped), then renormalized to the best peak in the batch (1 = strongest). findPeaks sorts and keeps the top ones (NMS ≈ min(patch/3, 16) px).\n",
|
|
1719
2959
|
"files": {
|
|
1720
|
-
"core/components/functional/
|
|
1721
|
-
"title": "
|
|
2960
|
+
"core/components/functional/shader/shader.md": {
|
|
2961
|
+
"title": "Shader",
|
|
1722
2962
|
"hashes": {
|
|
1723
|
-
"
|
|
2963
|
+
"extraction-patches--singularities-extract": {
|
|
1724
2964
|
"count": 1,
|
|
1725
|
-
"title": "
|
|
2965
|
+
"title": "Extraction patches / singularities (`extract`)",
|
|
1726
2966
|
"type": "paragraph"
|
|
1727
2967
|
}
|
|
1728
2968
|
}
|
|
@@ -1730,14 +2970,14 @@
|
|
|
1730
2970
|
}
|
|
1731
2971
|
},
|
|
1732
2972
|
{
|
|
1733
|
-
"search": "
|
|
2973
|
+
"search": "Lazy: no readPixels without a DP reader / extract event listener.\n",
|
|
1734
2974
|
"files": {
|
|
1735
|
-
"core/components/functional/
|
|
1736
|
-
"title": "
|
|
2975
|
+
"core/components/functional/shader/shader.md": {
|
|
2976
|
+
"title": "Shader",
|
|
1737
2977
|
"hashes": {
|
|
1738
|
-
"
|
|
2978
|
+
"extraction-patches--singularities-extract": {
|
|
1739
2979
|
"count": 1,
|
|
1740
|
-
"title": "
|
|
2980
|
+
"title": "Extraction patches / singularities (`extract`)",
|
|
1741
2981
|
"type": "paragraph"
|
|
1742
2982
|
}
|
|
1743
2983
|
}
|
|
@@ -1745,14 +2985,14 @@
|
|
|
1745
2985
|
}
|
|
1746
2986
|
},
|
|
1747
2987
|
{
|
|
1748
|
-
"search": "
|
|
2988
|
+
"search": "Live Harris → patches → WebGPU: Visual stack.\n",
|
|
1749
2989
|
"files": {
|
|
1750
|
-
"core/components/functional/
|
|
1751
|
-
"title": "
|
|
2990
|
+
"core/components/functional/shader/shader.md": {
|
|
2991
|
+
"title": "Shader",
|
|
1752
2992
|
"hashes": {
|
|
1753
|
-
"
|
|
2993
|
+
"extraction-patches--singularities-extract": {
|
|
1754
2994
|
"count": 1,
|
|
1755
|
-
"title": "
|
|
2995
|
+
"title": "Extraction patches / singularities (`extract`)",
|
|
1756
2996
|
"type": "paragraph"
|
|
1757
2997
|
}
|
|
1758
2998
|
}
|
|
@@ -1760,14 +3000,14 @@
|
|
|
1760
3000
|
}
|
|
1761
3001
|
},
|
|
1762
3002
|
{
|
|
1763
|
-
"search": "
|
|
3003
|
+
"search": "Par défaut, les buffers A–D sont en RGBA8 (unsigned). Un tenseur Harris naïf (Ix*Ix, Iy*Iy, Ix*Iy) perd le signe de IxIy et sature les carrés → bords au lieu de coins.\n",
|
|
1764
3004
|
"files": {
|
|
1765
|
-
"core/components/functional/
|
|
1766
|
-
"title": "
|
|
3005
|
+
"core/components/functional/shader/shader.md": {
|
|
3006
|
+
"title": "Shader",
|
|
1767
3007
|
"hashes": {
|
|
1768
|
-
"
|
|
3008
|
+
"précision-des-buffers-buffer-format": {
|
|
1769
3009
|
"count": 1,
|
|
1770
|
-
"title": "
|
|
3010
|
+
"title": "Précision des buffers (`buffer-format`)",
|
|
1771
3011
|
"type": "paragraph"
|
|
1772
3012
|
}
|
|
1773
3013
|
}
|
|
@@ -1775,14 +3015,14 @@
|
|
|
1775
3015
|
}
|
|
1776
3016
|
},
|
|
1777
3017
|
{
|
|
1778
|
-
"search": "
|
|
3018
|
+
"search": "Repli auto en rgba8 si EXT_color_buffer_float est absent (console.warn une fois). L’attribut reflété active-buffer-format indique le format réellement utilisé. La passe Image reste le canvas RGBA8.\n",
|
|
1779
3019
|
"files": {
|
|
1780
|
-
"core/components/functional/
|
|
1781
|
-
"title": "
|
|
3020
|
+
"core/components/functional/shader/shader.md": {
|
|
3021
|
+
"title": "Shader",
|
|
1782
3022
|
"hashes": {
|
|
1783
|
-
"
|
|
3023
|
+
"précision-des-buffers-buffer-format": {
|
|
1784
3024
|
"count": 1,
|
|
1785
|
-
"title": "
|
|
3025
|
+
"title": "Précision des buffers (`buffer-format`)",
|
|
1786
3026
|
"type": "paragraph"
|
|
1787
3027
|
}
|
|
1788
3028
|
}
|
|
@@ -1790,14 +3030,14 @@
|
|
|
1790
3030
|
}
|
|
1791
3031
|
},
|
|
1792
3032
|
{
|
|
1793
|
-
"search": "
|
|
3033
|
+
"search": "Un shader qui garde un état via self (feedback frame précédente) n’est plus réinitialisé quand il sort de l’écran : avec release-offscreen="auto" (défaut), seuls le RAF et les vidéos sont mis en pause ; les FBO restent. Forcer release-offscreen (attribut booléen / true) restaure l’ancien comportement (libération hors viewport même avec self).\n",
|
|
1794
3034
|
"files": {
|
|
1795
|
-
"core/components/functional/
|
|
1796
|
-
"title": "
|
|
3035
|
+
"core/components/functional/shader/shader.md": {
|
|
3036
|
+
"title": "Shader",
|
|
1797
3037
|
"hashes": {
|
|
1798
|
-
"
|
|
3038
|
+
"état-et-visibilité": {
|
|
1799
3039
|
"count": 1,
|
|
1800
|
-
"title": "
|
|
3040
|
+
"title": "État et visibilité",
|
|
1801
3041
|
"type": "paragraph"
|
|
1802
3042
|
}
|
|
1803
3043
|
}
|
|
@@ -1805,14 +3045,14 @@
|
|
|
1805
3045
|
}
|
|
1806
3046
|
},
|
|
1807
3047
|
{
|
|
1808
|
-
"search": "
|
|
3048
|
+
"search": "Changer channel0…3 / *-ch* re-lie les textures sans recompiler ni vider les buffers.\n",
|
|
1809
3049
|
"files": {
|
|
1810
|
-
"core/components/functional/
|
|
1811
|
-
"title": "
|
|
3050
|
+
"core/components/functional/shader/shader.md": {
|
|
3051
|
+
"title": "Shader",
|
|
1812
3052
|
"hashes": {
|
|
1813
|
-
"
|
|
3053
|
+
"état-et-visibilité": {
|
|
1814
3054
|
"count": 1,
|
|
1815
|
-
"title": "
|
|
3055
|
+
"title": "État et visibilité",
|
|
1816
3056
|
"type": "paragraph"
|
|
1817
3057
|
}
|
|
1818
3058
|
}
|
|
@@ -1820,14 +3060,14 @@
|
|
|
1820
3060
|
}
|
|
1821
3061
|
},
|
|
1822
3062
|
{
|
|
1823
|
-
"search": "
|
|
3063
|
+
"search": "Assigne le GLSL via .image (et .bufferA, …) depuis JS / Lit.\n",
|
|
1824
3064
|
"files": {
|
|
1825
|
-
"core/components/functional/
|
|
1826
|
-
"title": "
|
|
3065
|
+
"core/components/functional/shader/shader.md": {
|
|
3066
|
+
"title": "Shader",
|
|
1827
3067
|
"hashes": {
|
|
1828
|
-
"
|
|
3068
|
+
"markup": {
|
|
1829
3069
|
"count": 1,
|
|
1830
|
-
"title": "
|
|
3070
|
+
"title": "Markup",
|
|
1831
3071
|
"type": "paragraph"
|
|
1832
3072
|
}
|
|
1833
3073
|
}
|
|
@@ -1835,14 +3075,14 @@
|
|
|
1835
3075
|
}
|
|
1836
3076
|
},
|
|
1837
3077
|
{
|
|
1838
|
-
"search": "
|
|
3078
|
+
"search": "error — compile / link / WebGL (detail.message, detail.pass, detail.infoLog).\n",
|
|
1839
3079
|
"files": {
|
|
1840
|
-
"core/components/functional/
|
|
1841
|
-
"title": "
|
|
3080
|
+
"core/components/functional/shader/shader.md": {
|
|
3081
|
+
"title": "Shader",
|
|
1842
3082
|
"hashes": {
|
|
1843
|
-
"
|
|
3083
|
+
"events": {
|
|
1844
3084
|
"count": 1,
|
|
1845
|
-
"title": "
|
|
3085
|
+
"title": "Events",
|
|
1846
3086
|
"type": "paragraph"
|
|
1847
3087
|
}
|
|
1848
3088
|
}
|
|
@@ -1850,14 +3090,14 @@
|
|
|
1850
3090
|
}
|
|
1851
3091
|
},
|
|
1852
3092
|
{
|
|
1853
|
-
"search": "
|
|
3093
|
+
"search": "out — snapshot SonicShaderOutput (throttlé par out-interval, seulement s’il y a un listener) : souris, params, samples.\n",
|
|
1854
3094
|
"files": {
|
|
1855
|
-
"core/components/functional/
|
|
1856
|
-
"title": "
|
|
3095
|
+
"core/components/functional/shader/shader.md": {
|
|
3096
|
+
"title": "Shader",
|
|
1857
3097
|
"hashes": {
|
|
1858
|
-
"
|
|
3098
|
+
"events": {
|
|
1859
3099
|
"count": 1,
|
|
1860
|
-
"title": "
|
|
3100
|
+
"title": "Events",
|
|
1861
3101
|
"type": "paragraph"
|
|
1862
3102
|
}
|
|
1863
3103
|
}
|
|
@@ -1865,14 +3105,14 @@
|
|
|
1865
3105
|
}
|
|
1866
3106
|
},
|
|
1867
3107
|
{
|
|
1868
|
-
"search": "
|
|
3108
|
+
"search": "extract — snapshot ShaderExtractOutput (throttlé, paresseux) : patches manuels + détectés.\n",
|
|
1869
3109
|
"files": {
|
|
1870
|
-
"core/components/functional/
|
|
1871
|
-
"title": "
|
|
3110
|
+
"core/components/functional/shader/shader.md": {
|
|
3111
|
+
"title": "Shader",
|
|
1872
3112
|
"hashes": {
|
|
1873
|
-
"
|
|
3113
|
+
"events": {
|
|
1874
3114
|
"count": 1,
|
|
1875
|
-
"title": "
|
|
3115
|
+
"title": "Events",
|
|
1876
3116
|
"type": "paragraph"
|
|
1877
3117
|
}
|
|
1878
3118
|
}
|
|
@@ -2399,6 +3639,141 @@
|
|
|
2399
3639
|
}
|
|
2400
3640
|
}
|
|
2401
3641
|
},
|
|
3642
|
+
{
|
|
3643
|
+
"search": "WebGPU",
|
|
3644
|
+
"files": {
|
|
3645
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3646
|
+
"title": "WebGPU",
|
|
3647
|
+
"hashes": {
|
|
3648
|
+
"webgpu": {
|
|
3649
|
+
"count": 1,
|
|
3650
|
+
"title": "",
|
|
3651
|
+
"type": "page"
|
|
3652
|
+
}
|
|
3653
|
+
}
|
|
3654
|
+
}
|
|
3655
|
+
}
|
|
3656
|
+
},
|
|
3657
|
+
{
|
|
3658
|
+
"search": "sonic-webgpu — GPU compute / effects (companion to sonic-shader, not a clone).\n",
|
|
3659
|
+
"files": {
|
|
3660
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3661
|
+
"title": "WebGPU",
|
|
3662
|
+
"hashes": {
|
|
3663
|
+
"webgpu": {
|
|
3664
|
+
"count": 1,
|
|
3665
|
+
"title": "",
|
|
3666
|
+
"type": "paragraph"
|
|
3667
|
+
}
|
|
3668
|
+
}
|
|
3669
|
+
}
|
|
3670
|
+
}
|
|
3671
|
+
},
|
|
3672
|
+
{
|
|
3673
|
+
"search": "Opt-in import:\n",
|
|
3674
|
+
"files": {
|
|
3675
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3676
|
+
"title": "WebGPU",
|
|
3677
|
+
"hashes": {
|
|
3678
|
+
"webgpu": {
|
|
3679
|
+
"count": 1,
|
|
3680
|
+
"title": "",
|
|
3681
|
+
"type": "paragraph"
|
|
3682
|
+
}
|
|
3683
|
+
}
|
|
3684
|
+
}
|
|
3685
|
+
}
|
|
3686
|
+
},
|
|
3687
|
+
{
|
|
3688
|
+
"search": "Harris → patches → WebGPU mosaic: Visual stack.\n",
|
|
3689
|
+
"files": {
|
|
3690
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3691
|
+
"title": "WebGPU",
|
|
3692
|
+
"hashes": {
|
|
3693
|
+
"webgpu": {
|
|
3694
|
+
"count": 1,
|
|
3695
|
+
"title": "",
|
|
3696
|
+
"type": "paragraph"
|
|
3697
|
+
}
|
|
3698
|
+
}
|
|
3699
|
+
}
|
|
3700
|
+
}
|
|
3701
|
+
},
|
|
3702
|
+
{
|
|
3703
|
+
"search": "Simulation: param0 = speed, param1 = mouse attraction. WebGPU compute when available, otherwise CPU.\n",
|
|
3704
|
+
"files": {
|
|
3705
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3706
|
+
"title": "WebGPU",
|
|
3707
|
+
"hashes": {
|
|
3708
|
+
"demo--particles-compute": {
|
|
3709
|
+
"count": 1,
|
|
3710
|
+
"title": "Demo — particles (compute)",
|
|
3711
|
+
"type": "paragraph"
|
|
3712
|
+
}
|
|
3713
|
+
}
|
|
3714
|
+
}
|
|
3715
|
+
}
|
|
3716
|
+
},
|
|
3717
|
+
{
|
|
3718
|
+
"search": "Comme sonic-shader : channel0="#plateau" copie le canvas source chaque frameSeq (copyExternalImageToTexture). La texture GPU est réutilisée tant que la taille ne change pas (pas de createTexture / rebuild bind group chaque frame).\n",
|
|
3719
|
+
"files": {
|
|
3720
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3721
|
+
"title": "WebGPU",
|
|
3722
|
+
"hashes": {
|
|
3723
|
+
"live-bridge-id": {
|
|
3724
|
+
"count": 1,
|
|
3725
|
+
"title": "Live bridge (`#id`)",
|
|
3726
|
+
"type": "paragraph"
|
|
3727
|
+
}
|
|
3728
|
+
}
|
|
3729
|
+
}
|
|
3730
|
+
}
|
|
3731
|
+
},
|
|
3732
|
+
{
|
|
3733
|
+
"search": "Demo: Visual stack — 3D → WebGPU live.\n",
|
|
3734
|
+
"files": {
|
|
3735
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3736
|
+
"title": "WebGPU",
|
|
3737
|
+
"hashes": {
|
|
3738
|
+
"live-bridge-id": {
|
|
3739
|
+
"count": 1,
|
|
3740
|
+
"title": "Live bridge (`#id`)",
|
|
3741
|
+
"type": "paragraph"
|
|
3742
|
+
}
|
|
3743
|
+
}
|
|
3744
|
+
}
|
|
3745
|
+
}
|
|
3746
|
+
},
|
|
3747
|
+
{
|
|
3748
|
+
"search": "Same MediaRef / DP bridge as the rest of the stack. Live textures entre composants : pont #id / { element } (copie canvas), pas de contexte WebGPU partagé avec sonic-shader.\n",
|
|
3749
|
+
"files": {
|
|
3750
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3751
|
+
"title": "WebGPU",
|
|
3752
|
+
"hashes": {
|
|
3753
|
+
"chaining": {
|
|
3754
|
+
"count": 1,
|
|
3755
|
+
"title": "Chaining",
|
|
3756
|
+
"type": "paragraph"
|
|
3757
|
+
}
|
|
3758
|
+
}
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
},
|
|
3762
|
+
{
|
|
3763
|
+
"search": "concorde-webgpu.bundle.js after the core.\n",
|
|
3764
|
+
"files": {
|
|
3765
|
+
"core/components/functional/webgpu/webgpu.md": {
|
|
3766
|
+
"title": "WebGPU",
|
|
3767
|
+
"hashes": {
|
|
3768
|
+
"cdn": {
|
|
3769
|
+
"count": 1,
|
|
3770
|
+
"title": "CDN",
|
|
3771
|
+
"type": "paragraph"
|
|
3772
|
+
}
|
|
3773
|
+
}
|
|
3774
|
+
}
|
|
3775
|
+
}
|
|
3776
|
+
},
|
|
2402
3777
|
{
|
|
2403
3778
|
"search": "Alert",
|
|
2404
3779
|
"files": {
|
|
@@ -2510,24 +3885,174 @@
|
|
|
2510
3885
|
"core/components/ui/form/checkbox/checkbox.md": {
|
|
2511
3886
|
"title": "Checkbox",
|
|
2512
3887
|
"hashes": {
|
|
2513
|
-
"checkbox": {
|
|
3888
|
+
"checkbox": {
|
|
3889
|
+
"count": 1,
|
|
3890
|
+
"title": "",
|
|
3891
|
+
"type": "page"
|
|
3892
|
+
}
|
|
3893
|
+
}
|
|
3894
|
+
}
|
|
3895
|
+
}
|
|
3896
|
+
},
|
|
3897
|
+
{
|
|
3898
|
+
"search": "Checked blacklistFlags values are sent to the mock API (?blacklistFlags=racist,sexist,…), which excludes jokes whose flags match (see filterDocsJokes in src/docs/mock-api/fixtures.ts).\n",
|
|
3899
|
+
"files": {
|
|
3900
|
+
"core/components/ui/form/checkbox/checkbox.md": {
|
|
3901
|
+
"title": "Checkbox",
|
|
3902
|
+
"hashes": {
|
|
3903
|
+
"example-of-use--blacklist--queue": {
|
|
3904
|
+
"count": 1,
|
|
3905
|
+
"title": "Example of use — blacklist + queue",
|
|
3906
|
+
"type": "paragraph"
|
|
3907
|
+
}
|
|
3908
|
+
}
|
|
3909
|
+
}
|
|
3910
|
+
}
|
|
3911
|
+
},
|
|
3912
|
+
{
|
|
3913
|
+
"search": "Fieldset",
|
|
3914
|
+
"files": {
|
|
3915
|
+
"core/components/ui/form/fieldset/fieldset.md": {
|
|
3916
|
+
"title": "Fieldset",
|
|
3917
|
+
"hashes": {
|
|
3918
|
+
"fieldset": {
|
|
3919
|
+
"count": 1,
|
|
3920
|
+
"title": "",
|
|
3921
|
+
"type": "page"
|
|
3922
|
+
}
|
|
3923
|
+
}
|
|
3924
|
+
}
|
|
3925
|
+
}
|
|
3926
|
+
},
|
|
3927
|
+
{
|
|
3928
|
+
"search": "Form-actions",
|
|
3929
|
+
"files": {
|
|
3930
|
+
"core/components/ui/form/form-actions/form-actions.md": {
|
|
3931
|
+
"title": "Form-actions",
|
|
3932
|
+
"hashes": {
|
|
3933
|
+
"form-actions": {
|
|
3934
|
+
"count": 1,
|
|
3935
|
+
"title": "",
|
|
3936
|
+
"type": "page"
|
|
3937
|
+
}
|
|
3938
|
+
}
|
|
3939
|
+
}
|
|
3940
|
+
}
|
|
3941
|
+
},
|
|
3942
|
+
{
|
|
3943
|
+
"search": "Form-layout",
|
|
3944
|
+
"files": {
|
|
3945
|
+
"core/components/ui/form/form-layout/form-layout.md": {
|
|
3946
|
+
"title": "Form-layout",
|
|
3947
|
+
"hashes": {
|
|
3948
|
+
"form-layout": {
|
|
3949
|
+
"count": 1,
|
|
3950
|
+
"title": "",
|
|
3951
|
+
"type": "page"
|
|
3952
|
+
}
|
|
3953
|
+
}
|
|
3954
|
+
}
|
|
3955
|
+
}
|
|
3956
|
+
},
|
|
3957
|
+
{
|
|
3958
|
+
"search": "Input",
|
|
3959
|
+
"files": {
|
|
3960
|
+
"core/components/ui/form/input/input.md": {
|
|
3961
|
+
"title": "Input",
|
|
3962
|
+
"hashes": {
|
|
3963
|
+
"input": {
|
|
3964
|
+
"count": 1,
|
|
3965
|
+
"title": "",
|
|
3966
|
+
"type": "page"
|
|
3967
|
+
}
|
|
3968
|
+
}
|
|
3969
|
+
}
|
|
3970
|
+
}
|
|
3971
|
+
},
|
|
3972
|
+
{
|
|
3973
|
+
"search": "Liste des types\n",
|
|
3974
|
+
"files": {
|
|
3975
|
+
"core/components/ui/form/input/input.md": {
|
|
3976
|
+
"title": "Input",
|
|
3977
|
+
"hashes": {
|
|
3978
|
+
"type": {
|
|
3979
|
+
"count": 1,
|
|
3980
|
+
"title": "Type",
|
|
3981
|
+
"type": "paragraph"
|
|
3982
|
+
}
|
|
3983
|
+
}
|
|
3984
|
+
}
|
|
3985
|
+
}
|
|
3986
|
+
},
|
|
3987
|
+
{
|
|
3988
|
+
"search": "Filter with formDataProvider + name="contains" (mock API: substring on joke text). Caption and rows via Lit (@subscribe, .items on sonic-queue):\n",
|
|
3989
|
+
"files": {
|
|
3990
|
+
"core/components/ui/form/input/input.md": {
|
|
3991
|
+
"title": "Input",
|
|
3992
|
+
"hashes": {
|
|
3993
|
+
"example-of-use--search--queue": {
|
|
3994
|
+
"count": 1,
|
|
3995
|
+
"title": "Example of use — search + queue",
|
|
3996
|
+
"type": "paragraph"
|
|
3997
|
+
}
|
|
3998
|
+
}
|
|
3999
|
+
}
|
|
4000
|
+
}
|
|
4001
|
+
},
|
|
4002
|
+
{
|
|
4003
|
+
"search": "Input-autocomplete",
|
|
4004
|
+
"files": {
|
|
4005
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4006
|
+
"title": "Input-autocomplete",
|
|
4007
|
+
"hashes": {
|
|
4008
|
+
"input-autocomplete": {
|
|
4009
|
+
"count": 1,
|
|
4010
|
+
"title": "",
|
|
4011
|
+
"type": "page"
|
|
4012
|
+
}
|
|
4013
|
+
}
|
|
4014
|
+
}
|
|
4015
|
+
}
|
|
4016
|
+
},
|
|
4017
|
+
{
|
|
4018
|
+
"search": "The input-autocomplete component brings input and queue together in order to create a suggest behavior. This is why this component is partially configured as a form input and as a queue.\n",
|
|
4019
|
+
"files": {
|
|
4020
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4021
|
+
"title": "Input-autocomplete",
|
|
4022
|
+
"hashes": {
|
|
4023
|
+
"input-autocomplete": {
|
|
4024
|
+
"count": 1,
|
|
4025
|
+
"title": "",
|
|
4026
|
+
"type": "paragraph"
|
|
4027
|
+
}
|
|
4028
|
+
}
|
|
4029
|
+
}
|
|
4030
|
+
}
|
|
4031
|
+
},
|
|
4032
|
+
{
|
|
4033
|
+
"search": "Please note that only basic text input params and methods are implemented at this time. You should also be sure to understand the behavior of a queue in order to take full advantage of the input-autocomplete component.\n",
|
|
4034
|
+
"files": {
|
|
4035
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4036
|
+
"title": "Input-autocomplete",
|
|
4037
|
+
"hashes": {
|
|
4038
|
+
"input-autocomplete": {
|
|
2514
4039
|
"count": 1,
|
|
2515
4040
|
"title": "",
|
|
2516
|
-
"type": "
|
|
4041
|
+
"type": "paragraph"
|
|
2517
4042
|
}
|
|
2518
4043
|
}
|
|
2519
4044
|
}
|
|
2520
4045
|
}
|
|
2521
4046
|
},
|
|
2522
4047
|
{
|
|
2523
|
-
"search": "
|
|
4048
|
+
"search": "Here are some of the features of the input-autocomplete component:\n",
|
|
2524
4049
|
"files": {
|
|
2525
|
-
"core/components/ui/form/
|
|
2526
|
-
"title": "
|
|
4050
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4051
|
+
"title": "Input-autocomplete",
|
|
2527
4052
|
"hashes": {
|
|
2528
|
-
"
|
|
4053
|
+
"input-autocomplete": {
|
|
2529
4054
|
"count": 1,
|
|
2530
|
-
"title": "
|
|
4055
|
+
"title": "",
|
|
2531
4056
|
"type": "paragraph"
|
|
2532
4057
|
}
|
|
2533
4058
|
}
|
|
@@ -2535,74 +4060,74 @@
|
|
|
2535
4060
|
}
|
|
2536
4061
|
},
|
|
2537
4062
|
{
|
|
2538
|
-
"search": "
|
|
4063
|
+
"search": "Doc examples below use HTML binding on suggestion rows. The Lit equivalent uses an items callback with the row object (see docs-queue-geo-demo in src/docs/example/docs-queue-demos.ts). Embedding without Lit: HTML integration.\n",
|
|
2539
4064
|
"files": {
|
|
2540
|
-
"core/components/ui/form/
|
|
2541
|
-
"title": "
|
|
4065
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4066
|
+
"title": "Input-autocomplete",
|
|
2542
4067
|
"hashes": {
|
|
2543
|
-
"
|
|
4068
|
+
"input-autocomplete": {
|
|
2544
4069
|
"count": 1,
|
|
2545
4070
|
"title": "",
|
|
2546
|
-
"type": "
|
|
4071
|
+
"type": "paragraph"
|
|
2547
4072
|
}
|
|
2548
4073
|
}
|
|
2549
4074
|
}
|
|
2550
4075
|
}
|
|
2551
4076
|
},
|
|
2552
4077
|
{
|
|
2553
|
-
"search": "
|
|
4078
|
+
"search": "If you are looking for a component to provide a suggest behavior, the input-autocomplete component is a good option. \n",
|
|
2554
4079
|
"files": {
|
|
2555
|
-
"core/components/ui/form/
|
|
2556
|
-
"title": "
|
|
4080
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4081
|
+
"title": "Input-autocomplete",
|
|
2557
4082
|
"hashes": {
|
|
2558
|
-
"
|
|
4083
|
+
"input-autocomplete": {
|
|
2559
4084
|
"count": 1,
|
|
2560
4085
|
"title": "",
|
|
2561
|
-
"type": "
|
|
4086
|
+
"type": "paragraph"
|
|
2562
4087
|
}
|
|
2563
4088
|
}
|
|
2564
4089
|
}
|
|
2565
4090
|
}
|
|
2566
4091
|
},
|
|
2567
4092
|
{
|
|
2568
|
-
"search": "
|
|
4093
|
+
"search": "In this example, the input will use its name as the search parameter when calling the service responsible for autocompletion.\n",
|
|
2569
4094
|
"files": {
|
|
2570
|
-
"core/components/ui/form/
|
|
2571
|
-
"title": "
|
|
4095
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4096
|
+
"title": "Input-autocomplete",
|
|
2572
4097
|
"hashes": {
|
|
2573
|
-
"
|
|
4098
|
+
"simple-example": {
|
|
2574
4099
|
"count": 1,
|
|
2575
|
-
"title": "",
|
|
2576
|
-
"type": "
|
|
4100
|
+
"title": "Simple Example",
|
|
4101
|
+
"type": "paragraph"
|
|
2577
4102
|
}
|
|
2578
4103
|
}
|
|
2579
4104
|
}
|
|
2580
4105
|
}
|
|
2581
4106
|
},
|
|
2582
4107
|
{
|
|
2583
|
-
"search": "
|
|
4108
|
+
"search": "The template is used to render the list items of results.\nThe list items are responsible for making a selection.\n",
|
|
2584
4109
|
"files": {
|
|
2585
|
-
"core/components/ui/form/input/input.md": {
|
|
2586
|
-
"title": "Input",
|
|
4110
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4111
|
+
"title": "Input-autocomplete",
|
|
2587
4112
|
"hashes": {
|
|
2588
|
-
"
|
|
4113
|
+
"simple-example": {
|
|
2589
4114
|
"count": 1,
|
|
2590
|
-
"title": "",
|
|
2591
|
-
"type": "
|
|
4115
|
+
"title": "Simple Example",
|
|
4116
|
+
"type": "paragraph"
|
|
2592
4117
|
}
|
|
2593
4118
|
}
|
|
2594
4119
|
}
|
|
2595
4120
|
}
|
|
2596
4121
|
},
|
|
2597
4122
|
{
|
|
2598
|
-
"search": "
|
|
4123
|
+
"search": "This time, we added buttons with the same name as the input while keeping the same data provider.\nThe result is that when you select an item, the input takes the value of the selected item, completing the classic suggest behavior.\n",
|
|
2599
4124
|
"files": {
|
|
2600
|
-
"core/components/ui/form/input/input.md": {
|
|
2601
|
-
"title": "Input",
|
|
4125
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4126
|
+
"title": "Input-autocomplete",
|
|
2602
4127
|
"hashes": {
|
|
2603
|
-
"
|
|
4128
|
+
"simple-example": {
|
|
2604
4129
|
"count": 1,
|
|
2605
|
-
"title": "
|
|
4130
|
+
"title": "Simple Example",
|
|
2606
4131
|
"type": "paragraph"
|
|
2607
4132
|
}
|
|
2608
4133
|
}
|
|
@@ -2610,14 +4135,14 @@
|
|
|
2610
4135
|
}
|
|
2611
4136
|
},
|
|
2612
4137
|
{
|
|
2613
|
-
"search": "
|
|
4138
|
+
"search": "In this example, the search parameter is separated from the name of the input. This means that the input will use the name "nom" as the search parameter, but the form data provider will be filled with the data named "siren" from the selected list item.\n",
|
|
2614
4139
|
"files": {
|
|
2615
|
-
"core/components/ui/form/input/input.md": {
|
|
2616
|
-
"title": "Input",
|
|
4140
|
+
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
4141
|
+
"title": "Input-autocomplete",
|
|
2617
4142
|
"hashes": {
|
|
2618
|
-
"
|
|
4143
|
+
"value-different-from-search-parameter": {
|
|
2619
4144
|
"count": 1,
|
|
2620
|
-
"title": "
|
|
4145
|
+
"title": "Value different from search parameter",
|
|
2621
4146
|
"type": "paragraph"
|
|
2622
4147
|
}
|
|
2623
4148
|
}
|
|
@@ -2625,29 +4150,29 @@
|
|
|
2625
4150
|
}
|
|
2626
4151
|
},
|
|
2627
4152
|
{
|
|
2628
|
-
"search": "
|
|
4153
|
+
"search": "To do this, we need to use the searchParam attribute on the input element. This attribute specifies the name of the search parameter that will be used.\n",
|
|
2629
4154
|
"files": {
|
|
2630
4155
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2631
4156
|
"title": "Input-autocomplete",
|
|
2632
4157
|
"hashes": {
|
|
2633
|
-
"
|
|
4158
|
+
"value-different-from-search-parameter": {
|
|
2634
4159
|
"count": 1,
|
|
2635
|
-
"title": "",
|
|
2636
|
-
"type": "
|
|
4160
|
+
"title": "Value different from search parameter",
|
|
4161
|
+
"type": "paragraph"
|
|
2637
4162
|
}
|
|
2638
4163
|
}
|
|
2639
4164
|
}
|
|
2640
4165
|
}
|
|
2641
4166
|
},
|
|
2642
4167
|
{
|
|
2643
|
-
"search": "
|
|
4168
|
+
"search": "We also need to use the name and value attribute on the list items. This attribute specifies the value of the data provider that will be used for the selected list item.\n",
|
|
2644
4169
|
"files": {
|
|
2645
4170
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2646
4171
|
"title": "Input-autocomplete",
|
|
2647
4172
|
"hashes": {
|
|
2648
|
-
"
|
|
4173
|
+
"value-different-from-search-parameter": {
|
|
2649
4174
|
"count": 1,
|
|
2650
|
-
"title": "",
|
|
4175
|
+
"title": "Value different from search parameter",
|
|
2651
4176
|
"type": "paragraph"
|
|
2652
4177
|
}
|
|
2653
4178
|
}
|
|
@@ -2655,14 +4180,14 @@
|
|
|
2655
4180
|
}
|
|
2656
4181
|
},
|
|
2657
4182
|
{
|
|
2658
|
-
"search": "
|
|
4183
|
+
"search": "By using these attributes, we can separate the search parameter from the name of the input and still fill the form data provider with the data from the selected list item.\n",
|
|
2659
4184
|
"files": {
|
|
2660
4185
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2661
4186
|
"title": "Input-autocomplete",
|
|
2662
4187
|
"hashes": {
|
|
2663
|
-
"
|
|
4188
|
+
"value-different-from-search-parameter": {
|
|
2664
4189
|
"count": 1,
|
|
2665
|
-
"title": "",
|
|
4190
|
+
"title": "Value different from search parameter",
|
|
2666
4191
|
"type": "paragraph"
|
|
2667
4192
|
}
|
|
2668
4193
|
}
|
|
@@ -2670,14 +4195,14 @@
|
|
|
2670
4195
|
}
|
|
2671
4196
|
},
|
|
2672
4197
|
{
|
|
2673
|
-
"search": "
|
|
4198
|
+
"search": "This example is the same as the previous one, except that the select attribute is used. This attribute changes the look and feel of the component slightly.\n",
|
|
2674
4199
|
"files": {
|
|
2675
4200
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2676
4201
|
"title": "Input-autocomplete",
|
|
2677
4202
|
"hashes": {
|
|
2678
|
-
"
|
|
4203
|
+
"select-autocomplete--value-different-from-search-parameter": {
|
|
2679
4204
|
"count": 1,
|
|
2680
|
-
"title": "
|
|
4205
|
+
"title": "Select autocomplete / value different from search parameter",
|
|
2681
4206
|
"type": "paragraph"
|
|
2682
4207
|
}
|
|
2683
4208
|
}
|
|
@@ -2685,14 +4210,14 @@
|
|
|
2685
4210
|
}
|
|
2686
4211
|
},
|
|
2687
4212
|
{
|
|
2688
|
-
"search": "
|
|
4213
|
+
"search": "Now the text is less free because, you must select either something from the list given by the service, or nothing else.\n",
|
|
2689
4214
|
"files": {
|
|
2690
4215
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2691
4216
|
"title": "Input-autocomplete",
|
|
2692
4217
|
"hashes": {
|
|
2693
|
-
"
|
|
4218
|
+
"select-autocomplete--value-different-from-search-parameter": {
|
|
2694
4219
|
"count": 1,
|
|
2695
|
-
"title": "
|
|
4220
|
+
"title": "Select autocomplete / value different from search parameter",
|
|
2696
4221
|
"type": "paragraph"
|
|
2697
4222
|
}
|
|
2698
4223
|
}
|
|
@@ -2700,14 +4225,14 @@
|
|
|
2700
4225
|
}
|
|
2701
4226
|
},
|
|
2702
4227
|
{
|
|
2703
|
-
"search": "
|
|
4228
|
+
"search": "The following code shows how to use the select attribute in an autocomplete input:\n",
|
|
2704
4229
|
"files": {
|
|
2705
4230
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2706
4231
|
"title": "Input-autocomplete",
|
|
2707
4232
|
"hashes": {
|
|
2708
|
-
"
|
|
4233
|
+
"select-autocomplete--value-different-from-search-parameter": {
|
|
2709
4234
|
"count": 1,
|
|
2710
|
-
"title": "
|
|
4235
|
+
"title": "Select autocomplete / value different from search parameter",
|
|
2711
4236
|
"type": "paragraph"
|
|
2712
4237
|
}
|
|
2713
4238
|
}
|
|
@@ -2715,14 +4240,14 @@
|
|
|
2715
4240
|
}
|
|
2716
4241
|
},
|
|
2717
4242
|
{
|
|
2718
|
-
"search": "data-keyboard-nav
|
|
4243
|
+
"search": "At the moment you can enable keyboard up/down by adding an attribut "data-keyboard-nav" on the component and its listItems\n",
|
|
2719
4244
|
"files": {
|
|
2720
4245
|
"core/components/ui/form/input-autocomplete/input-autocomplete.md": {
|
|
2721
4246
|
"title": "Input-autocomplete",
|
|
2722
4247
|
"hashes": {
|
|
2723
|
-
"navigation
|
|
4248
|
+
"keyboard-navigation": {
|
|
2724
4249
|
"count": 1,
|
|
2725
|
-
"title": "
|
|
4250
|
+
"title": "keyboard navigation",
|
|
2726
4251
|
"type": "paragraph"
|
|
2727
4252
|
}
|
|
2728
4253
|
}
|
|
@@ -3239,6 +4764,21 @@
|
|
|
3239
4764
|
}
|
|
3240
4765
|
}
|
|
3241
4766
|
},
|
|
4767
|
+
{
|
|
4768
|
+
"search": "Opt-in addons (HF / shader / WebGPU): Visual stack.\n",
|
|
4769
|
+
"files": {
|
|
4770
|
+
"docs/_core-concept/dataFlow.md": {
|
|
4771
|
+
"title": "Data flow",
|
|
4772
|
+
"hashes": {
|
|
4773
|
+
"quick-map": {
|
|
4774
|
+
"count": 1,
|
|
4775
|
+
"title": "Quick map",
|
|
4776
|
+
"type": "paragraph"
|
|
4777
|
+
}
|
|
4778
|
+
}
|
|
4779
|
+
}
|
|
4780
|
+
}
|
|
4781
|
+
},
|
|
3242
4782
|
{
|
|
3243
4783
|
"search": "Skill: concorde-get-set-dp in the package ai/ folder.\n",
|
|
3244
4784
|
"files": {
|
|
@@ -7129,6 +8669,96 @@
|
|
|
7129
8669
|
}
|
|
7130
8670
|
}
|
|
7131
8671
|
},
|
|
8672
|
+
{
|
|
8673
|
+
"search": "CDN addons",
|
|
8674
|
+
"files": {
|
|
8675
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8676
|
+
"title": "CDN addons",
|
|
8677
|
+
"hashes": {
|
|
8678
|
+
"cdn-addons": {
|
|
8679
|
+
"count": 1,
|
|
8680
|
+
"title": "",
|
|
8681
|
+
"type": "page"
|
|
8682
|
+
}
|
|
8683
|
+
}
|
|
8684
|
+
}
|
|
8685
|
+
}
|
|
8686
|
+
},
|
|
8687
|
+
{
|
|
8688
|
+
"search": "Heavy opt-in features stay out of concorde-core.bundle.js. Load the core bundle first, then the addon you need.\n",
|
|
8689
|
+
"files": {
|
|
8690
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8691
|
+
"title": "CDN addons",
|
|
8692
|
+
"hashes": {
|
|
8693
|
+
"cdn-addons": {
|
|
8694
|
+
"count": 1,
|
|
8695
|
+
"title": "",
|
|
8696
|
+
"type": "paragraph"
|
|
8697
|
+
}
|
|
8698
|
+
}
|
|
8699
|
+
}
|
|
8700
|
+
}
|
|
8701
|
+
},
|
|
8702
|
+
{
|
|
8703
|
+
"search": "npm: @supersoniks/concorde/bundle/3d, …/bundle/shader, …/bundle/webgpu, …/bundle/hugging-face-infer (IIFE). ESM twins: …/bundle/3d/es, etc.\n",
|
|
8704
|
+
"files": {
|
|
8705
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8706
|
+
"title": "CDN addons",
|
|
8707
|
+
"hashes": {
|
|
8708
|
+
"cdn-addons": {
|
|
8709
|
+
"count": 1,
|
|
8710
|
+
"title": "",
|
|
8711
|
+
"type": "paragraph"
|
|
8712
|
+
}
|
|
8713
|
+
}
|
|
8714
|
+
}
|
|
8715
|
+
}
|
|
8716
|
+
},
|
|
8717
|
+
{
|
|
8718
|
+
"search": "Scripts in the descriptor are awaited before nodes are created. A failed loadJS throws (no UI parse without deps). Prefer the IIFE .bundle.js files. Descriptors (js[], markup, innerHTML) must be trusted.\n",
|
|
8719
|
+
"files": {
|
|
8720
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8721
|
+
"title": "CDN addons",
|
|
8722
|
+
"hashes": {
|
|
8723
|
+
"sdui-js": {
|
|
8724
|
+
"count": 1,
|
|
8725
|
+
"title": "SDUI (`js[]`)",
|
|
8726
|
+
"type": "paragraph"
|
|
8727
|
+
}
|
|
8728
|
+
}
|
|
8729
|
+
}
|
|
8730
|
+
}
|
|
8731
|
+
},
|
|
8732
|
+
{
|
|
8733
|
+
"search": "The CE alone is not enough: configure runtime + allowlist once (page script or app entry). The IIFE exposes window.ConcordeHF.\n",
|
|
8734
|
+
"files": {
|
|
8735
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8736
|
+
"title": "CDN addons",
|
|
8737
|
+
"hashes": {
|
|
8738
|
+
"hugging-face--minimal-bootstrap": {
|
|
8739
|
+
"count": 1,
|
|
8740
|
+
"title": "Hugging Face — minimal bootstrap",
|
|
8741
|
+
"type": "paragraph"
|
|
8742
|
+
}
|
|
8743
|
+
}
|
|
8744
|
+
}
|
|
8745
|
+
}
|
|
8746
|
+
},
|
|
8747
|
+
{
|
|
8748
|
+
"search": "Peer deps (npm, optional): three@0.180.0, @huggingface/transformers@4.3.0. Not needed when using the CDN IIFE addons (Three is inlined in concorde-3d; Transformers.js stays on its own CDN via configureHuggingFace).\n",
|
|
8749
|
+
"files": {
|
|
8750
|
+
"docs/_getting-started/cdn-addons.md": {
|
|
8751
|
+
"title": "CDN addons",
|
|
8752
|
+
"hashes": {
|
|
8753
|
+
"hugging-face--minimal-bootstrap": {
|
|
8754
|
+
"count": 1,
|
|
8755
|
+
"title": "Hugging Face — minimal bootstrap",
|
|
8756
|
+
"type": "paragraph"
|
|
8757
|
+
}
|
|
8758
|
+
}
|
|
8759
|
+
}
|
|
8760
|
+
}
|
|
8761
|
+
},
|
|
7132
8762
|
{
|
|
7133
8763
|
"search": "Manual installation (Vite)",
|
|
7134
8764
|
"files": {
|
|
@@ -7655,7 +9285,7 @@
|
|
|
7655
9285
|
}
|
|
7656
9286
|
},
|
|
7657
9287
|
{
|
|
7658
|
-
"search": "In the case where it can be directly used in a page, it should also be globally referenced,
|
|
9288
|
+
"search": "In the case where it can be directly used in a page, it should also be globally referenced. Heavy / optional features (3d, shader, webgpu, hugging-face) use CDN addon bundles — see CDN addons — and must not be added to functional.ts / ui.ts.\n",
|
|
7659
9289
|
"files": {
|
|
7660
9290
|
"docs/_getting-started/create-a-component.md": {
|
|
7661
9291
|
"title": "Creating components",
|
|
@@ -9325,12 +10955,12 @@
|
|
|
9325
10955
|
}
|
|
9326
10956
|
},
|
|
9327
10957
|
{
|
|
9328
|
-
"search": "
|
|
10958
|
+
"search": "HTML integration (no Lit)",
|
|
9329
10959
|
"files": {
|
|
9330
|
-
"docs/_misc/
|
|
9331
|
-
"title": "
|
|
10960
|
+
"docs/_misc/html-integration.md": {
|
|
10961
|
+
"title": "HTML integration (no Lit)",
|
|
9332
10962
|
"hashes": {
|
|
9333
|
-
"
|
|
10963
|
+
"html-integration-no-lit": {
|
|
9334
10964
|
"count": 1,
|
|
9335
10965
|
"title": "",
|
|
9336
10966
|
"type": "page"
|
|
@@ -9340,12 +10970,12 @@
|
|
|
9340
10970
|
}
|
|
9341
10971
|
},
|
|
9342
10972
|
{
|
|
9343
|
-
"search": "
|
|
10973
|
+
"search": "Some hosts (legacy PHP pages, static HTML) embed Concorde components without a Lit build step. They can use HTML attributes such as data-bind, dataProvider, and formDataProvider on tags directly in the page.\n",
|
|
9344
10974
|
"files": {
|
|
9345
|
-
"docs/_misc/
|
|
9346
|
-
"title": "
|
|
10975
|
+
"docs/_misc/html-integration.md": {
|
|
10976
|
+
"title": "HTML integration (no Lit)",
|
|
9347
10977
|
"hashes": {
|
|
9348
|
-
"
|
|
10978
|
+
"html-integration-no-lit": {
|
|
9349
10979
|
"count": 1,
|
|
9350
10980
|
"title": "",
|
|
9351
10981
|
"type": "paragraph"
|
|
@@ -9355,14 +10985,14 @@
|
|
|
9355
10985
|
}
|
|
9356
10986
|
},
|
|
9357
10987
|
{
|
|
9358
|
-
"search": "
|
|
10988
|
+
"search": "That style is not what we demonstrate in this doc site: live examples are Lit components under src/docs/example/, registered once and reused from Markdown via tags like <docs-joke-search-demo>.\n",
|
|
9359
10989
|
"files": {
|
|
9360
|
-
"docs/_misc/
|
|
9361
|
-
"title": "
|
|
10990
|
+
"docs/_misc/html-integration.md": {
|
|
10991
|
+
"title": "HTML integration (no Lit)",
|
|
9362
10992
|
"hashes": {
|
|
9363
|
-
"
|
|
10993
|
+
"html-integration-no-lit": {
|
|
9364
10994
|
"count": 1,
|
|
9365
|
-
"title": "
|
|
10995
|
+
"title": "",
|
|
9366
10996
|
"type": "paragraph"
|
|
9367
10997
|
}
|
|
9368
10998
|
}
|
|
@@ -9370,14 +11000,14 @@
|
|
|
9370
11000
|
}
|
|
9371
11001
|
},
|
|
9372
11002
|
{
|
|
9373
|
-
"search": "
|
|
11003
|
+
"search": "New application code in TypeScript should use @subscribe, formDataProvider + name, and Lit templates — not HTML data-bind.\n",
|
|
9374
11004
|
"files": {
|
|
9375
|
-
"docs/_misc/
|
|
9376
|
-
"title": "
|
|
11005
|
+
"docs/_misc/html-integration.md": {
|
|
11006
|
+
"title": "HTML integration (no Lit)",
|
|
9377
11007
|
"hashes": {
|
|
9378
|
-
"
|
|
11008
|
+
"html-integration-no-lit": {
|
|
9379
11009
|
"count": 1,
|
|
9380
|
-
"title": "
|
|
11010
|
+
"title": "",
|
|
9381
11011
|
"type": "paragraph"
|
|
9382
11012
|
}
|
|
9383
11013
|
}
|
|
@@ -9385,14 +11015,29 @@
|
|
|
9385
11015
|
}
|
|
9386
11016
|
},
|
|
9387
11017
|
{
|
|
9388
|
-
"search": "
|
|
11018
|
+
"search": "Visual stack",
|
|
11019
|
+
"files": {
|
|
11020
|
+
"docs/_misc/visual-stack.md": {
|
|
11021
|
+
"title": "Visual stack",
|
|
11022
|
+
"hashes": {
|
|
11023
|
+
"visual-stack": {
|
|
11024
|
+
"count": 1,
|
|
11025
|
+
"title": "",
|
|
11026
|
+
"type": "page"
|
|
11027
|
+
}
|
|
11028
|
+
}
|
|
11029
|
+
}
|
|
11030
|
+
}
|
|
11031
|
+
},
|
|
11032
|
+
{
|
|
11033
|
+
"search": "Examples of chaining opt-in addons (HF, shader, WebGPU, 3D). Outside the main “functional” flow.\n",
|
|
9389
11034
|
"files": {
|
|
9390
|
-
"docs/_misc/
|
|
9391
|
-
"title": "
|
|
11035
|
+
"docs/_misc/visual-stack.md": {
|
|
11036
|
+
"title": "Visual stack",
|
|
9392
11037
|
"hashes": {
|
|
9393
|
-
"
|
|
11038
|
+
"visual-stack": {
|
|
9394
11039
|
"count": 1,
|
|
9395
|
-
"title": "
|
|
11040
|
+
"title": "",
|
|
9396
11041
|
"type": "paragraph"
|
|
9397
11042
|
}
|
|
9398
11043
|
}
|
|
@@ -9400,14 +11045,14 @@
|
|
|
9400
11045
|
}
|
|
9401
11046
|
},
|
|
9402
11047
|
{
|
|
9403
|
-
"search": "
|
|
11048
|
+
"search": "Photo → sonic-hugging-face-infer (depth) → sonic-shader (parallax) → extract → sonic-jsonata (stats / thresholds).\n",
|
|
9404
11049
|
"files": {
|
|
9405
|
-
"docs/_misc/
|
|
9406
|
-
"title": "
|
|
11050
|
+
"docs/_misc/visual-stack.md": {
|
|
11051
|
+
"title": "Visual stack",
|
|
9407
11052
|
"hashes": {
|
|
9408
|
-
"
|
|
11053
|
+
"hf-depth--parallax": {
|
|
9409
11054
|
"count": 1,
|
|
9410
|
-
"title": "
|
|
11055
|
+
"title": "HF depth → parallax",
|
|
9411
11056
|
"type": "paragraph"
|
|
9412
11057
|
}
|
|
9413
11058
|
}
|
|
@@ -9415,14 +11060,14 @@
|
|
|
9415
11060
|
}
|
|
9416
11061
|
},
|
|
9417
11062
|
{
|
|
9418
|
-
"search": "
|
|
11063
|
+
"search": "Do not pipe texture channels through jsonata on every frame / slider: that forces rebuilds. JSONata is for scalar derivatives, not the media bus.\n",
|
|
9419
11064
|
"files": {
|
|
9420
|
-
"docs/_misc/
|
|
9421
|
-
"title": "
|
|
11065
|
+
"docs/_misc/visual-stack.md": {
|
|
11066
|
+
"title": "Visual stack",
|
|
9422
11067
|
"hashes": {
|
|
9423
|
-
"
|
|
11068
|
+
"golden-rule": {
|
|
9424
11069
|
"count": 1,
|
|
9425
|
-
"title": "
|
|
11070
|
+
"title": "Golden rule",
|
|
9426
11071
|
"type": "paragraph"
|
|
9427
11072
|
}
|
|
9428
11073
|
}
|
|
@@ -9430,29 +11075,29 @@
|
|
|
9430
11075
|
}
|
|
9431
11076
|
},
|
|
9432
11077
|
{
|
|
9433
|
-
"search": "
|
|
11078
|
+
"search": "sonic-3d and sonic-shader keep separate WebGL contexts. For realtime post, point a channel at the 3D host with #id — the shader copies the canvas each frame (texImage2D), no JPEG.\n",
|
|
9434
11079
|
"files": {
|
|
9435
|
-
"docs/_misc/
|
|
9436
|
-
"title": "
|
|
11080
|
+
"docs/_misc/visual-stack.md": {
|
|
11081
|
+
"title": "Visual stack",
|
|
9437
11082
|
"hashes": {
|
|
9438
|
-
"
|
|
11083
|
+
"3d--shader-live-gpu-bridge": {
|
|
9439
11084
|
"count": 1,
|
|
9440
|
-
"title": "",
|
|
9441
|
-
"type": "
|
|
11085
|
+
"title": "3D → shader live (GPU bridge)",
|
|
11086
|
+
"type": "paragraph"
|
|
9442
11087
|
}
|
|
9443
11088
|
}
|
|
9444
11089
|
}
|
|
9445
11090
|
}
|
|
9446
11091
|
},
|
|
9447
11092
|
{
|
|
9448
|
-
"search": "
|
|
11093
|
+
"search": "Also accepted: <img>, <video>, <canvas>, or another Concorde host that implements SonicFrameSource (getFrameCanvas + frameSeq). DP form: { element: "#plateau" } or { element: el }.\n",
|
|
9449
11094
|
"files": {
|
|
9450
|
-
"docs/_misc/
|
|
9451
|
-
"title": "
|
|
11095
|
+
"docs/_misc/visual-stack.md": {
|
|
11096
|
+
"title": "Visual stack",
|
|
9452
11097
|
"hashes": {
|
|
9453
|
-
"
|
|
11098
|
+
"3d--shader-live-gpu-bridge": {
|
|
9454
11099
|
"count": 1,
|
|
9455
|
-
"title": "",
|
|
11100
|
+
"title": "3D → shader live (GPU bridge)",
|
|
9456
11101
|
"type": "paragraph"
|
|
9457
11102
|
}
|
|
9458
11103
|
}
|
|
@@ -9460,14 +11105,14 @@
|
|
|
9460
11105
|
}
|
|
9461
11106
|
},
|
|
9462
11107
|
{
|
|
9463
|
-
"search": "
|
|
11108
|
+
"search": "frame-out (JPEG ObjectURL) remains for export / HF / freeze — not for live post.\n",
|
|
9464
11109
|
"files": {
|
|
9465
|
-
"docs/_misc/
|
|
9466
|
-
"title": "
|
|
11110
|
+
"docs/_misc/visual-stack.md": {
|
|
11111
|
+
"title": "Visual stack",
|
|
9467
11112
|
"hashes": {
|
|
9468
|
-
"
|
|
11113
|
+
"3d--shader-live-gpu-bridge": {
|
|
9469
11114
|
"count": 1,
|
|
9470
|
-
"title": "",
|
|
11115
|
+
"title": "3D → shader live (GPU bridge)",
|
|
9471
11116
|
"type": "paragraph"
|
|
9472
11117
|
}
|
|
9473
11118
|
}
|
|
@@ -9475,14 +11120,14 @@
|
|
|
9475
11120
|
}
|
|
9476
11121
|
},
|
|
9477
11122
|
{
|
|
9478
|
-
"search": "
|
|
11123
|
+
"search": "Same #id bridge as the shader: sonic-webgpu channel0="#plateau-gpu" copies the 3D canvas each frameSeq via copyExternalImageToTexture (persistent texture — no recreate when size is stable).\n",
|
|
9479
11124
|
"files": {
|
|
9480
|
-
"docs/_misc/
|
|
9481
|
-
"title": "
|
|
11125
|
+
"docs/_misc/visual-stack.md": {
|
|
11126
|
+
"title": "Visual stack",
|
|
9482
11127
|
"hashes": {
|
|
9483
|
-
"
|
|
11128
|
+
"3d--webgpu-live": {
|
|
9484
11129
|
"count": 1,
|
|
9485
|
-
"title": "",
|
|
11130
|
+
"title": "3D → WebGPU live",
|
|
9486
11131
|
"type": "paragraph"
|
|
9487
11132
|
}
|
|
9488
11133
|
}
|
|
@@ -9490,14 +11135,89 @@
|
|
|
9490
11135
|
}
|
|
9491
11136
|
},
|
|
9492
11137
|
{
|
|
9493
|
-
"search": "
|
|
11138
|
+
"search": "Scene → offscreen color + depth → GLSL passes (post-*) in the same WebGL context. Use post-image-ch1="depth" for edge / DoF-style effects without a second component.\n",
|
|
9494
11139
|
"files": {
|
|
9495
|
-
"docs/_misc/
|
|
9496
|
-
"title": "
|
|
11140
|
+
"docs/_misc/visual-stack.md": {
|
|
11141
|
+
"title": "Visual stack",
|
|
9497
11142
|
"hashes": {
|
|
9498
|
-
"
|
|
11143
|
+
"post-fx--depth-in-sonic-3d": {
|
|
9499
11144
|
"count": 1,
|
|
9500
|
-
"title": "",
|
|
11145
|
+
"title": "Post FX + depth (in sonic-3d)",
|
|
11146
|
+
"type": "paragraph"
|
|
11147
|
+
}
|
|
11148
|
+
}
|
|
11149
|
+
}
|
|
11150
|
+
}
|
|
11151
|
+
},
|
|
11152
|
+
{
|
|
11153
|
+
"search": "sonic-shader detects corners (Harris, buffer-format="rgba16f" + NMS 5×5 / shape filter) and extracts patches → channel0…3 on sonic-webgpu (kernel="image"): GPU mosaic.\n",
|
|
11154
|
+
"files": {
|
|
11155
|
+
"docs/_misc/visual-stack.md": {
|
|
11156
|
+
"title": "Visual stack",
|
|
11157
|
+
"hashes": {
|
|
11158
|
+
"harris--patches--webgpu": {
|
|
11159
|
+
"count": 1,
|
|
11160
|
+
"title": "Harris → patches → WebGPU",
|
|
11161
|
+
"type": "paragraph"
|
|
11162
|
+
}
|
|
11163
|
+
}
|
|
11164
|
+
}
|
|
11165
|
+
}
|
|
11166
|
+
},
|
|
11167
|
+
{
|
|
11168
|
+
"search": "Use buffer-format="rgba16f" so signed IxIy / non-clamped Ix² survive the buffer (RGBA8 zeros negatives and saturates). See Shader — buffer precision.\n",
|
|
11169
|
+
"files": {
|
|
11170
|
+
"docs/_misc/visual-stack.md": {
|
|
11171
|
+
"title": "Visual stack",
|
|
11172
|
+
"hashes": {
|
|
11173
|
+
"harris--patches--webgpu": {
|
|
11174
|
+
"count": 1,
|
|
11175
|
+
"title": "Harris → patches → WebGPU",
|
|
11176
|
+
"type": "paragraph"
|
|
11177
|
+
}
|
|
11178
|
+
}
|
|
11179
|
+
}
|
|
11180
|
+
}
|
|
11181
|
+
},
|
|
11182
|
+
{
|
|
11183
|
+
"search": "Channel rebinds and release-offscreen="auto" (keep FBO state when a pass uses self) : Shader — état et visibilité.\n",
|
|
11184
|
+
"files": {
|
|
11185
|
+
"docs/_misc/visual-stack.md": {
|
|
11186
|
+
"title": "Visual stack",
|
|
11187
|
+
"hashes": {
|
|
11188
|
+
"harris--patches--webgpu": {
|
|
11189
|
+
"count": 1,
|
|
11190
|
+
"title": "Harris → patches → WebGPU",
|
|
11191
|
+
"type": "paragraph"
|
|
11192
|
+
}
|
|
11193
|
+
}
|
|
11194
|
+
}
|
|
11195
|
+
}
|
|
11196
|
+
},
|
|
11197
|
+
{
|
|
11198
|
+
"search": "sonic-3d live sources keep playing off-screen when a #id consumer is registered (or play-offscreen) — see 3D — bridging.\n",
|
|
11199
|
+
"files": {
|
|
11200
|
+
"docs/_misc/visual-stack.md": {
|
|
11201
|
+
"title": "Visual stack",
|
|
11202
|
+
"hashes": {
|
|
11203
|
+
"harris--patches--webgpu": {
|
|
11204
|
+
"count": 1,
|
|
11205
|
+
"title": "Harris → patches → WebGPU",
|
|
11206
|
+
"type": "paragraph"
|
|
11207
|
+
}
|
|
11208
|
+
}
|
|
11209
|
+
}
|
|
11210
|
+
}
|
|
11211
|
+
},
|
|
11212
|
+
{
|
|
11213
|
+
"search": "SonicMediaRef / SonicFrameSource / toMediaUrl / cloneMediaRef — @supersoniks/concorde/core/utils/mediaRef.\n",
|
|
11214
|
+
"files": {
|
|
11215
|
+
"docs/_misc/visual-stack.md": {
|
|
11216
|
+
"title": "Visual stack",
|
|
11217
|
+
"hashes": {
|
|
11218
|
+
"media-contract": {
|
|
11219
|
+
"count": 1,
|
|
11220
|
+
"title": "Media contract",
|
|
9501
11221
|
"type": "paragraph"
|
|
9502
11222
|
}
|
|
9503
11223
|
}
|