@supersoniks/concorde 4.3.0 → 4.4.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/README.md +0 -62
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +583 -672
- package/concorde-core.es.js +7159 -9743
- package/dist/concorde-core.bundle.js +583 -672
- package/dist/concorde-core.es.js +7159 -9743
- package/docs/assets/index-DP1oMukw.js +4949 -0
- package/docs/assets/index-DZtxIZCW.css +1 -0
- package/docs/index.html +2 -2
- package/docs/src/docs/{_misc → _decorators}/ancestor-attribute.md +15 -31
- package/docs/src/docs/_decorators/bind.md +164 -0
- package/docs/src/docs/_decorators/get.md +65 -0
- package/docs/src/docs/_decorators/publish.md +54 -0
- package/docs/src/docs/_decorators/subscribe.md +36 -0
- package/docs/src/docs/_misc/dataProviderKey.md +135 -0
- package/docs/src/docs/_misc/endpoint.md +42 -0
- package/docs/src/docs/search/docs-search.json +850 -710
- package/docs/src/tsconfig.json +43 -4
- package/package.json +5 -5
- package/vite/config.js +25 -6
- package/vite.config.mts +2 -0
- package/docs/assets/index-B0IJ9I_B.js +0 -4918
- package/docs/assets/index-B3QHEJTV.css +0 -1
- package/docs/src/docs/_misc/bind.md +0 -436
- package/docs/src/docs/_misc/key.md +0 -135
- /package/docs/src/docs/{_misc → _decorators}/auto-subscribe.md +0 -0
- /package/docs/src/docs/{_misc → _decorators}/on-assign.md +0 -0
- /package/docs/src/docs/{_misc → _decorators}/wait-for-ancestors.md +0 -0
|
@@ -3000,12 +3000,12 @@
|
|
|
3000
3000
|
}
|
|
3001
3001
|
},
|
|
3002
3002
|
{
|
|
3003
|
-
"search": "
|
|
3003
|
+
"search": "@ancestorAttribute",
|
|
3004
3004
|
"files": {
|
|
3005
|
-
"docs/
|
|
3006
|
-
"title": "
|
|
3005
|
+
"docs/_decorators/ancestor-attribute.md": {
|
|
3006
|
+
"title": "@ancestorAttribute",
|
|
3007
3007
|
"hashes": {
|
|
3008
|
-
"
|
|
3008
|
+
"ancestorattribute": {
|
|
3009
3009
|
"count": 1,
|
|
3010
3010
|
"title": "",
|
|
3011
3011
|
"type": "page"
|
|
@@ -3015,14 +3015,14 @@
|
|
|
3015
3015
|
}
|
|
3016
3016
|
},
|
|
3017
3017
|
{
|
|
3018
|
-
"search": "The
|
|
3018
|
+
"search": "The @ancestorAttribute decorator automatically injects the value of an ancestor's attribute into a class property at the time of connectedCallback.\n",
|
|
3019
3019
|
"files": {
|
|
3020
|
-
"docs/
|
|
3021
|
-
"title": "
|
|
3020
|
+
"docs/_decorators/ancestor-attribute.md": {
|
|
3021
|
+
"title": "@ancestorAttribute",
|
|
3022
3022
|
"hashes": {
|
|
3023
|
-
"
|
|
3023
|
+
"ancestorattribute": {
|
|
3024
3024
|
"count": 1,
|
|
3025
|
-
"title": "
|
|
3025
|
+
"title": "",
|
|
3026
3026
|
"type": "paragraph"
|
|
3027
3027
|
}
|
|
3028
3028
|
}
|
|
@@ -3030,14 +3030,14 @@
|
|
|
3030
3030
|
}
|
|
3031
3031
|
},
|
|
3032
3032
|
{
|
|
3033
|
-
"search": "
|
|
3033
|
+
"search": "This decorator uses HTML.getAncestorAttributeValue to traverse up the DOM tree from the current element and find the first ancestor that has the specified attribute. The value of this attribute is then assigned to the decorated property.\n",
|
|
3034
3034
|
"files": {
|
|
3035
|
-
"docs/
|
|
3036
|
-
"title": "
|
|
3035
|
+
"docs/_decorators/ancestor-attribute.md": {
|
|
3036
|
+
"title": "@ancestorAttribute",
|
|
3037
3037
|
"hashes": {
|
|
3038
|
-
"
|
|
3038
|
+
"principle": {
|
|
3039
3039
|
"count": 1,
|
|
3040
|
-
"title": "
|
|
3040
|
+
"title": "Principle",
|
|
3041
3041
|
"type": "paragraph"
|
|
3042
3042
|
}
|
|
3043
3043
|
}
|
|
@@ -3045,14 +3045,14 @@
|
|
|
3045
3045
|
}
|
|
3046
3046
|
},
|
|
3047
3047
|
{
|
|
3048
|
-
"search": "
|
|
3048
|
+
"search": "The component reads dataProvider and testAttribute from its ancestor wrapper.\n",
|
|
3049
3049
|
"files": {
|
|
3050
|
-
"docs/
|
|
3051
|
-
"title": "
|
|
3050
|
+
"docs/_decorators/ancestor-attribute.md": {
|
|
3051
|
+
"title": "@ancestorAttribute",
|
|
3052
3052
|
"hashes": {
|
|
3053
|
-
"
|
|
3053
|
+
"basic-example": {
|
|
3054
3054
|
"count": 1,
|
|
3055
|
-
"title": "
|
|
3055
|
+
"title": "Basic example",
|
|
3056
3056
|
"type": "paragraph"
|
|
3057
3057
|
}
|
|
3058
3058
|
}
|
|
@@ -3060,29 +3060,34 @@
|
|
|
3060
3060
|
}
|
|
3061
3061
|
},
|
|
3062
3062
|
{
|
|
3063
|
-
"search": "
|
|
3063
|
+
"search": "This decorator is particularly useful for:\n",
|
|
3064
3064
|
"files": {
|
|
3065
|
-
"docs/
|
|
3066
|
-
"title": "
|
|
3065
|
+
"docs/_decorators/ancestor-attribute.md": {
|
|
3066
|
+
"title": "@ancestorAttribute",
|
|
3067
3067
|
"hashes": {
|
|
3068
|
-
"
|
|
3068
|
+
"use-cases": {
|
|
3069
3069
|
"count": 1,
|
|
3070
|
-
"title": "
|
|
3070
|
+
"title": "Use cases",
|
|
3071
3071
|
"type": "paragraph"
|
|
3072
3072
|
}
|
|
3073
3073
|
}
|
|
3074
|
-
}
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
{
|
|
3078
|
-
"search": "Shortcut imports work by default in JavaScript, but in TypeScript, they are activated by choice as they inject data into tsconfig.json. Here is the command:\n",
|
|
3079
|
-
"files": {
|
|
3080
|
-
"docs/_getting-started/concorde-outside.md": {
|
|
3081
|
-
"title": "Installation",
|
|
3074
|
+
},
|
|
3075
|
+
"docs/_decorators/auto-subscribe.md": {
|
|
3076
|
+
"title": "@autoSubscribe",
|
|
3082
3077
|
"hashes": {
|
|
3083
|
-
"
|
|
3078
|
+
"use-cases": {
|
|
3084
3079
|
"count": 1,
|
|
3085
|
-
"title": "
|
|
3080
|
+
"title": "Use cases",
|
|
3081
|
+
"type": "paragraph"
|
|
3082
|
+
}
|
|
3083
|
+
}
|
|
3084
|
+
},
|
|
3085
|
+
"docs/_decorators/on-assign.md": {
|
|
3086
|
+
"title": "@onAssign",
|
|
3087
|
+
"hashes": {
|
|
3088
|
+
"use-cases": {
|
|
3089
|
+
"count": 1,
|
|
3090
|
+
"title": "Use cases",
|
|
3086
3091
|
"type": "paragraph"
|
|
3087
3092
|
}
|
|
3088
3093
|
}
|
|
@@ -3090,29 +3095,29 @@
|
|
|
3090
3095
|
}
|
|
3091
3096
|
},
|
|
3092
3097
|
{
|
|
3093
|
-
"search": "
|
|
3098
|
+
"search": "@autoSubscribe",
|
|
3094
3099
|
"files": {
|
|
3095
|
-
"docs/
|
|
3096
|
-
"title": "
|
|
3100
|
+
"docs/_decorators/auto-subscribe.md": {
|
|
3101
|
+
"title": "@autoSubscribe",
|
|
3097
3102
|
"hashes": {
|
|
3098
|
-
"
|
|
3103
|
+
"autosubscribe": {
|
|
3099
3104
|
"count": 1,
|
|
3100
|
-
"title": "
|
|
3101
|
-
"type": "
|
|
3105
|
+
"title": "",
|
|
3106
|
+
"type": "page"
|
|
3102
3107
|
}
|
|
3103
3108
|
}
|
|
3104
3109
|
}
|
|
3105
3110
|
}
|
|
3106
3111
|
},
|
|
3107
3112
|
{
|
|
3108
|
-
"search": "The
|
|
3113
|
+
"search": "The @autoSubscribe decorator automatically detects which publishers are accessed within a method and subscribes to them. When any of these publishers change, the method is automatically re-executed.\n",
|
|
3109
3114
|
"files": {
|
|
3110
|
-
"docs/
|
|
3111
|
-
"title": "
|
|
3115
|
+
"docs/_decorators/auto-subscribe.md": {
|
|
3116
|
+
"title": "@autoSubscribe",
|
|
3112
3117
|
"hashes": {
|
|
3113
|
-
"
|
|
3118
|
+
"autosubscribe": {
|
|
3114
3119
|
"count": 1,
|
|
3115
|
-
"title": "
|
|
3120
|
+
"title": "",
|
|
3116
3121
|
"type": "paragraph"
|
|
3117
3122
|
}
|
|
3118
3123
|
}
|
|
@@ -3120,14 +3125,14 @@
|
|
|
3120
3125
|
}
|
|
3121
3126
|
},
|
|
3122
3127
|
{
|
|
3123
|
-
"search": "
|
|
3128
|
+
"search": "This decorator wraps a method to track which publishers are accessed during its execution. It then subscribes to all accessed publishers, and when any of them change, the method is re-executed. This provides automatic reactivity without manually managing subscriptions.\n",
|
|
3124
3129
|
"files": {
|
|
3125
|
-
"docs/
|
|
3126
|
-
"title": "
|
|
3130
|
+
"docs/_decorators/auto-subscribe.md": {
|
|
3131
|
+
"title": "@autoSubscribe",
|
|
3127
3132
|
"hashes": {
|
|
3128
|
-
"
|
|
3133
|
+
"principle": {
|
|
3129
3134
|
"count": 1,
|
|
3130
|
-
"title": "
|
|
3135
|
+
"title": "Principle",
|
|
3131
3136
|
"type": "paragraph"
|
|
3132
3137
|
}
|
|
3133
3138
|
}
|
|
@@ -3135,29 +3140,29 @@
|
|
|
3135
3140
|
}
|
|
3136
3141
|
},
|
|
3137
3142
|
{
|
|
3138
|
-
"search": "
|
|
3143
|
+
"search": "@bind",
|
|
3139
3144
|
"files": {
|
|
3140
|
-
"docs/
|
|
3141
|
-
"title": "
|
|
3145
|
+
"docs/_decorators/bind.md": {
|
|
3146
|
+
"title": "@bind",
|
|
3142
3147
|
"hashes": {
|
|
3143
|
-
"
|
|
3148
|
+
"bind": {
|
|
3144
3149
|
"count": 1,
|
|
3145
|
-
"title": "
|
|
3146
|
-
"type": "
|
|
3150
|
+
"title": "",
|
|
3151
|
+
"type": "page"
|
|
3147
3152
|
}
|
|
3148
3153
|
}
|
|
3149
3154
|
}
|
|
3150
3155
|
}
|
|
3151
3156
|
},
|
|
3152
3157
|
{
|
|
3153
|
-
"search": "
|
|
3158
|
+
"search": "Binds a class property to a path in a publisher. The property updates when publisher data changes.\n",
|
|
3154
3159
|
"files": {
|
|
3155
|
-
"docs/
|
|
3156
|
-
"title": "
|
|
3160
|
+
"docs/_decorators/bind.md": {
|
|
3161
|
+
"title": "@bind",
|
|
3157
3162
|
"hashes": {
|
|
3158
|
-
"
|
|
3163
|
+
"bind": {
|
|
3159
3164
|
"count": 1,
|
|
3160
|
-
"title": "
|
|
3165
|
+
"title": "",
|
|
3161
3166
|
"type": "paragraph"
|
|
3162
3167
|
}
|
|
3163
3168
|
}
|
|
@@ -3165,14 +3170,14 @@
|
|
|
3165
3170
|
}
|
|
3166
3171
|
},
|
|
3167
3172
|
{
|
|
3168
|
-
"search": "
|
|
3173
|
+
"search": "For Lit re-renders, also add @state() on the same property.\n",
|
|
3169
3174
|
"files": {
|
|
3170
|
-
"docs/
|
|
3171
|
-
"title": "
|
|
3175
|
+
"docs/_decorators/bind.md": {
|
|
3176
|
+
"title": "@bind",
|
|
3172
3177
|
"hashes": {
|
|
3173
|
-
"
|
|
3178
|
+
"bind": {
|
|
3174
3179
|
"count": 1,
|
|
3175
|
-
"title": "
|
|
3180
|
+
"title": "",
|
|
3176
3181
|
"type": "paragraph"
|
|
3177
3182
|
}
|
|
3178
3183
|
}
|
|
@@ -3180,14 +3185,14 @@
|
|
|
3180
3185
|
}
|
|
3181
3186
|
},
|
|
3182
3187
|
{
|
|
3183
|
-
"search": "
|
|
3188
|
+
"search": "See also: @subscribe, @publish, @get.\n",
|
|
3184
3189
|
"files": {
|
|
3185
|
-
"docs/
|
|
3186
|
-
"title": "
|
|
3190
|
+
"docs/_decorators/bind.md": {
|
|
3191
|
+
"title": "@bind",
|
|
3187
3192
|
"hashes": {
|
|
3188
|
-
"
|
|
3193
|
+
"bind": {
|
|
3189
3194
|
"count": 1,
|
|
3190
|
-
"title": "
|
|
3195
|
+
"title": "",
|
|
3191
3196
|
"type": "paragraph"
|
|
3192
3197
|
}
|
|
3193
3198
|
}
|
|
@@ -3195,14 +3200,14 @@
|
|
|
3195
3200
|
}
|
|
3196
3201
|
},
|
|
3197
3202
|
{
|
|
3198
|
-
"search": "
|
|
3203
|
+
"search": "The decorator subscribes via PublisherManager using dot notation. Publisher updates flow into the decorated property.\n",
|
|
3199
3204
|
"files": {
|
|
3200
|
-
"docs/
|
|
3201
|
-
"title": "
|
|
3205
|
+
"docs/_decorators/bind.md": {
|
|
3206
|
+
"title": "@bind",
|
|
3202
3207
|
"hashes": {
|
|
3203
|
-
"
|
|
3208
|
+
"principle": {
|
|
3204
3209
|
"count": 1,
|
|
3205
|
-
"title": "
|
|
3210
|
+
"title": "Principle",
|
|
3206
3211
|
"type": "paragraph"
|
|
3207
3212
|
}
|
|
3208
3213
|
}
|
|
@@ -3210,14 +3215,14 @@
|
|
|
3210
3215
|
}
|
|
3211
3216
|
},
|
|
3212
3217
|
{
|
|
3213
|
-
"search": "
|
|
3218
|
+
"search": "@bind accepts either a string path (legacy) or a DataProviderKey<T>. The property type must match T. Use reflect: true to push local writes back to the publisher (see below). See DataProviderKey.\n",
|
|
3214
3219
|
"files": {
|
|
3215
|
-
"docs/
|
|
3216
|
-
"title": "
|
|
3220
|
+
"docs/_decorators/bind.md": {
|
|
3221
|
+
"title": "@bind",
|
|
3217
3222
|
"hashes": {
|
|
3218
|
-
"
|
|
3223
|
+
"dataproviderkey-strict-typing": {
|
|
3219
3224
|
"count": 1,
|
|
3220
|
-
"title": "
|
|
3225
|
+
"title": "`DataProviderKey` (strict typing)",
|
|
3221
3226
|
"type": "paragraph"
|
|
3222
3227
|
}
|
|
3223
3228
|
}
|
|
@@ -3225,29 +3230,29 @@
|
|
|
3225
3230
|
}
|
|
3226
3231
|
},
|
|
3227
3232
|
{
|
|
3228
|
-
"search": "
|
|
3233
|
+
"search": "Two-way sync: reads from the publisher and local assignments call publisher.set(...). An internal guard avoids infinite loops.\n",
|
|
3229
3234
|
"files": {
|
|
3230
|
-
"docs/
|
|
3231
|
-
"title": "
|
|
3235
|
+
"docs/_decorators/bind.md": {
|
|
3236
|
+
"title": "@bind",
|
|
3232
3237
|
"hashes": {
|
|
3233
|
-
"
|
|
3238
|
+
"reflect-reflect-true": {
|
|
3234
3239
|
"count": 1,
|
|
3235
|
-
"title": "",
|
|
3236
|
-
"type": "
|
|
3240
|
+
"title": "Reflect (`reflect: true`)",
|
|
3241
|
+
"type": "paragraph"
|
|
3237
3242
|
}
|
|
3238
3243
|
}
|
|
3239
3244
|
}
|
|
3240
3245
|
}
|
|
3241
3246
|
},
|
|
3242
3247
|
{
|
|
3243
|
-
"search": "
|
|
3248
|
+
"search": "Use ${prop} or ${this.prop} inside a normal string literal (not a JS template literal with backticks). @bind re-subscribes when a reactive dependency changes.\n",
|
|
3244
3249
|
"files": {
|
|
3245
|
-
"docs/
|
|
3246
|
-
"title": "
|
|
3250
|
+
"docs/_decorators/bind.md": {
|
|
3251
|
+
"title": "@bind",
|
|
3247
3252
|
"hashes": {
|
|
3248
|
-
"
|
|
3253
|
+
"dynamic-paths": {
|
|
3249
3254
|
"count": 1,
|
|
3250
|
-
"title": "
|
|
3255
|
+
"title": "Dynamic paths",
|
|
3251
3256
|
"type": "paragraph"
|
|
3252
3257
|
}
|
|
3253
3258
|
}
|
|
@@ -3255,14 +3260,14 @@
|
|
|
3255
3260
|
}
|
|
3256
3261
|
},
|
|
3257
3262
|
{
|
|
3258
|
-
"search": "
|
|
3263
|
+
"search": "Properties referenced in the pattern must be reactive (@property, etc.) or you must call requestUpdate manually.\n",
|
|
3259
3264
|
"files": {
|
|
3260
|
-
"docs/
|
|
3261
|
-
"title": "
|
|
3265
|
+
"docs/_decorators/bind.md": {
|
|
3266
|
+
"title": "@bind",
|
|
3262
3267
|
"hashes": {
|
|
3263
|
-
"
|
|
3268
|
+
"dynamic-paths": {
|
|
3264
3269
|
"count": 1,
|
|
3265
|
-
"title": "
|
|
3270
|
+
"title": "Dynamic paths",
|
|
3266
3271
|
"type": "paragraph"
|
|
3267
3272
|
}
|
|
3268
3273
|
}
|
|
@@ -3270,14 +3275,14 @@
|
|
|
3270
3275
|
}
|
|
3271
3276
|
},
|
|
3272
3277
|
{
|
|
3273
|
-
"search": "
|
|
3278
|
+
"search": "Works with any component that has the usual DOM lifecycle (LitElement, Subscriber mixin, etc.).\n",
|
|
3274
3279
|
"files": {
|
|
3275
|
-
"docs/
|
|
3276
|
-
"title": "
|
|
3280
|
+
"docs/_decorators/bind.md": {
|
|
3281
|
+
"title": "@bind",
|
|
3277
3282
|
"hashes": {
|
|
3278
|
-
"
|
|
3283
|
+
"notes": {
|
|
3279
3284
|
"count": 1,
|
|
3280
|
-
"title": "
|
|
3285
|
+
"title": "Notes",
|
|
3281
3286
|
"type": "paragraph"
|
|
3282
3287
|
}
|
|
3283
3288
|
}
|
|
@@ -3285,14 +3290,14 @@
|
|
|
3285
3290
|
}
|
|
3286
3291
|
},
|
|
3287
3292
|
{
|
|
3288
|
-
"search": "
|
|
3293
|
+
"search": "Shared data: Sharing data.\n",
|
|
3289
3294
|
"files": {
|
|
3290
|
-
"docs/
|
|
3291
|
-
"title": "
|
|
3295
|
+
"docs/_decorators/bind.md": {
|
|
3296
|
+
"title": "@bind",
|
|
3292
3297
|
"hashes": {
|
|
3293
|
-
"
|
|
3298
|
+
"notes": {
|
|
3294
3299
|
"count": 1,
|
|
3295
|
-
"title": "
|
|
3300
|
+
"title": "Notes",
|
|
3296
3301
|
"type": "paragraph"
|
|
3297
3302
|
}
|
|
3298
3303
|
}
|
|
@@ -3300,29 +3305,29 @@
|
|
|
3300
3305
|
}
|
|
3301
3306
|
},
|
|
3302
3307
|
{
|
|
3303
|
-
"search": "
|
|
3308
|
+
"search": "@get",
|
|
3304
3309
|
"files": {
|
|
3305
|
-
"docs/
|
|
3306
|
-
"title": "
|
|
3310
|
+
"docs/_decorators/get.md": {
|
|
3311
|
+
"title": "@get",
|
|
3307
3312
|
"hashes": {
|
|
3308
|
-
"
|
|
3313
|
+
"get": {
|
|
3309
3314
|
"count": 1,
|
|
3310
|
-
"title": "
|
|
3311
|
-
"type": "
|
|
3315
|
+
"title": "",
|
|
3316
|
+
"type": "page"
|
|
3312
3317
|
}
|
|
3313
3318
|
}
|
|
3314
3319
|
}
|
|
3315
3320
|
}
|
|
3316
3321
|
},
|
|
3317
3322
|
{
|
|
3318
|
-
"search": "
|
|
3323
|
+
"search": "Loads data through API.getDetailed. The decorated property is ApiGetResult<T> | null: request, response (or null for dataProvider(...) resolution without HTTP), and typed result.\n",
|
|
3319
3324
|
"files": {
|
|
3320
|
-
"docs/
|
|
3321
|
-
"title": "
|
|
3325
|
+
"docs/_decorators/get.md": {
|
|
3326
|
+
"title": "@get",
|
|
3322
3327
|
"hashes": {
|
|
3323
|
-
"
|
|
3328
|
+
"get": {
|
|
3324
3329
|
"count": 1,
|
|
3325
|
-
"title": "
|
|
3330
|
+
"title": "",
|
|
3326
3331
|
"type": "paragraph"
|
|
3327
3332
|
}
|
|
3328
3333
|
}
|
|
@@ -3330,14 +3335,14 @@
|
|
|
3330
3335
|
}
|
|
3331
3336
|
},
|
|
3332
3337
|
{
|
|
3333
|
-
"search": "
|
|
3338
|
+
"search": "Pass an Endpoint<T> as the first argument. Import get and ApiGetResult from @supersoniks/concorde/decorators, and Endpoint from @supersoniks/concorde/utils/endpoint.\n",
|
|
3334
3339
|
"files": {
|
|
3335
|
-
"docs/
|
|
3336
|
-
"title": "
|
|
3340
|
+
"docs/_decorators/get.md": {
|
|
3341
|
+
"title": "@get",
|
|
3337
3342
|
"hashes": {
|
|
3338
|
-
"
|
|
3343
|
+
"get": {
|
|
3339
3344
|
"count": 1,
|
|
3340
|
-
"title": "
|
|
3345
|
+
"title": "",
|
|
3341
3346
|
"type": "paragraph"
|
|
3342
3347
|
}
|
|
3343
3348
|
}
|
|
@@ -3345,14 +3350,14 @@
|
|
|
3345
3350
|
}
|
|
3346
3351
|
},
|
|
3347
3352
|
{
|
|
3348
|
-
"search": "
|
|
3353
|
+
"search": "Same demo service as sonic-queue (geo.api.gouv.fr). Publisher setup lives in decorators-demo-geo.ts and decorators-demo-subscribe-publish-get-demos.ts.\n",
|
|
3349
3354
|
"files": {
|
|
3350
|
-
"docs/
|
|
3351
|
-
"title": "
|
|
3355
|
+
"docs/_decorators/get.md": {
|
|
3356
|
+
"title": "@get",
|
|
3352
3357
|
"hashes": {
|
|
3353
|
-
"
|
|
3358
|
+
"minimal-example": {
|
|
3354
3359
|
"count": 1,
|
|
3355
|
-
"title": "
|
|
3360
|
+
"title": "Minimal example",
|
|
3356
3361
|
"type": "paragraph"
|
|
3357
3362
|
}
|
|
3358
3363
|
}
|
|
@@ -3360,14 +3365,14 @@
|
|
|
3360
3365
|
}
|
|
3361
3366
|
},
|
|
3362
3367
|
{
|
|
3363
|
-
"search": "
|
|
3368
|
+
"search": "Dynamic config and endpoint path (demo-api-get-configuration-key in doc sources):\n",
|
|
3364
3369
|
"files": {
|
|
3365
|
-
"docs/
|
|
3366
|
-
"title": "
|
|
3370
|
+
"docs/_decorators/get.md": {
|
|
3371
|
+
"title": "@get",
|
|
3367
3372
|
"hashes": {
|
|
3368
|
-
"
|
|
3373
|
+
"live-demos": {
|
|
3369
3374
|
"count": 1,
|
|
3370
|
-
"title": "
|
|
3375
|
+
"title": "Live demos",
|
|
3371
3376
|
"type": "paragraph"
|
|
3372
3377
|
}
|
|
3373
3378
|
}
|
|
@@ -3375,14 +3380,14 @@
|
|
|
3375
3380
|
}
|
|
3376
3381
|
},
|
|
3377
3382
|
{
|
|
3378
|
-
"search": "
|
|
3383
|
+
"search": "Scoped @get with @publish / @subscribe on the payload (see @publish and @subscribe) — wrap under an ancestor with serviceURL="https://geo.api.gouv.fr/":\n",
|
|
3379
3384
|
"files": {
|
|
3380
|
-
"docs/
|
|
3381
|
-
"title": "
|
|
3385
|
+
"docs/_decorators/get.md": {
|
|
3386
|
+
"title": "@get",
|
|
3382
3387
|
"hashes": {
|
|
3383
|
-
"
|
|
3388
|
+
"live-demos": {
|
|
3384
3389
|
"count": 1,
|
|
3385
|
-
"title": "
|
|
3390
|
+
"title": "Live demos",
|
|
3386
3391
|
"type": "paragraph"
|
|
3387
3392
|
}
|
|
3388
3393
|
}
|
|
@@ -3390,14 +3395,14 @@
|
|
|
3390
3395
|
}
|
|
3391
3396
|
},
|
|
3392
3397
|
{
|
|
3393
|
-
"search": "
|
|
3398
|
+
"search": "Stale responses are ignored if the path or generation changed before the request finished.\n",
|
|
3394
3399
|
"files": {
|
|
3395
|
-
"docs/
|
|
3396
|
-
"title": "
|
|
3400
|
+
"docs/_decorators/get.md": {
|
|
3401
|
+
"title": "@get",
|
|
3397
3402
|
"hashes": {
|
|
3398
|
-
"
|
|
3403
|
+
"live-demos": {
|
|
3399
3404
|
"count": 1,
|
|
3400
|
-
"title": "
|
|
3405
|
+
"title": "Live demos",
|
|
3401
3406
|
"type": "paragraph"
|
|
3402
3407
|
}
|
|
3403
3408
|
}
|
|
@@ -3405,29 +3410,29 @@
|
|
|
3405
3410
|
}
|
|
3406
3411
|
},
|
|
3407
3412
|
{
|
|
3408
|
-
"search": "
|
|
3413
|
+
"search": "@onAssign",
|
|
3409
3414
|
"files": {
|
|
3410
|
-
"docs/
|
|
3411
|
-
"title": "
|
|
3415
|
+
"docs/_decorators/on-assign.md": {
|
|
3416
|
+
"title": "@onAssign",
|
|
3412
3417
|
"hashes": {
|
|
3413
|
-
"
|
|
3418
|
+
"onassign": {
|
|
3414
3419
|
"count": 1,
|
|
3415
|
-
"title": "
|
|
3416
|
-
"type": "
|
|
3420
|
+
"title": "",
|
|
3421
|
+
"type": "page"
|
|
3417
3422
|
}
|
|
3418
3423
|
}
|
|
3419
3424
|
}
|
|
3420
3425
|
}
|
|
3421
3426
|
},
|
|
3422
3427
|
{
|
|
3423
|
-
"search": "
|
|
3428
|
+
"search": "The @onAssign decorator allows you to execute a method when one or more publishers are updated. The method is called only when all specified publishers have been assigned values.\n",
|
|
3424
3429
|
"files": {
|
|
3425
|
-
"docs/
|
|
3426
|
-
"title": "
|
|
3430
|
+
"docs/_decorators/on-assign.md": {
|
|
3431
|
+
"title": "@onAssign",
|
|
3427
3432
|
"hashes": {
|
|
3428
|
-
"
|
|
3433
|
+
"onassign": {
|
|
3429
3434
|
"count": 1,
|
|
3430
|
-
"title": "
|
|
3435
|
+
"title": "",
|
|
3431
3436
|
"type": "paragraph"
|
|
3432
3437
|
}
|
|
3433
3438
|
}
|
|
@@ -3435,14 +3440,14 @@
|
|
|
3435
3440
|
}
|
|
3436
3441
|
},
|
|
3437
3442
|
{
|
|
3438
|
-
"search": "
|
|
3443
|
+
"search": "This decorator subscribes to one or more publishers via the PublisherManager. When all specified publishers have been assigned values (via set), the decorated method is called with all the values as arguments.\n",
|
|
3439
3444
|
"files": {
|
|
3440
|
-
"docs/
|
|
3441
|
-
"title": "
|
|
3445
|
+
"docs/_decorators/on-assign.md": {
|
|
3446
|
+
"title": "@onAssign",
|
|
3442
3447
|
"hashes": {
|
|
3443
|
-
"
|
|
3448
|
+
"principle": {
|
|
3444
3449
|
"count": 1,
|
|
3445
|
-
"title": "
|
|
3450
|
+
"title": "Principle",
|
|
3446
3451
|
"type": "paragraph"
|
|
3447
3452
|
}
|
|
3448
3453
|
}
|
|
@@ -3450,14 +3455,14 @@
|
|
|
3450
3455
|
}
|
|
3451
3456
|
},
|
|
3452
3457
|
{
|
|
3453
|
-
"search": "
|
|
3458
|
+
"search": "This is particularly useful when you need to wait for multiple data sources to be ready before executing logic.\n",
|
|
3454
3459
|
"files": {
|
|
3455
|
-
"docs/
|
|
3456
|
-
"title": "
|
|
3460
|
+
"docs/_decorators/on-assign.md": {
|
|
3461
|
+
"title": "@onAssign",
|
|
3457
3462
|
"hashes": {
|
|
3458
|
-
"
|
|
3463
|
+
"principle": {
|
|
3459
3464
|
"count": 1,
|
|
3460
|
-
"title": "
|
|
3465
|
+
"title": "Principle",
|
|
3461
3466
|
"type": "paragraph"
|
|
3462
3467
|
}
|
|
3463
3468
|
}
|
|
@@ -3465,14 +3470,14 @@
|
|
|
3465
3470
|
}
|
|
3466
3471
|
},
|
|
3467
3472
|
{
|
|
3468
|
-
"search": "
|
|
3473
|
+
"search": "The path uses dot notation to navigate through the publisher structure:\n",
|
|
3469
3474
|
"files": {
|
|
3470
|
-
"docs/
|
|
3471
|
-
"title": "
|
|
3475
|
+
"docs/_decorators/on-assign.md": {
|
|
3476
|
+
"title": "@onAssign",
|
|
3472
3477
|
"hashes": {
|
|
3473
|
-
"
|
|
3478
|
+
"path-syntax": {
|
|
3474
3479
|
"count": 1,
|
|
3475
|
-
"title": "
|
|
3480
|
+
"title": "Path syntax",
|
|
3476
3481
|
"type": "paragraph"
|
|
3477
3482
|
}
|
|
3478
3483
|
}
|
|
@@ -3480,14 +3485,14 @@
|
|
|
3480
3485
|
}
|
|
3481
3486
|
},
|
|
3482
3487
|
{
|
|
3483
|
-
"search": "
|
|
3488
|
+
"search": "You can now build the paths dynamically by referencing the host class properties inside the strings passed to @onAssign. Two placeholder syntaxes are supported:\n",
|
|
3484
3489
|
"files": {
|
|
3485
|
-
"docs/
|
|
3486
|
-
"title": "
|
|
3490
|
+
"docs/_decorators/on-assign.md": {
|
|
3491
|
+
"title": "@onAssign",
|
|
3487
3492
|
"hashes": {
|
|
3488
|
-
"
|
|
3493
|
+
"dynamic-path-driven-by-class-properties": {
|
|
3489
3494
|
"count": 1,
|
|
3490
|
-
"title": "
|
|
3495
|
+
"title": "Dynamic path driven by class properties",
|
|
3491
3496
|
"type": "paragraph"
|
|
3492
3497
|
}
|
|
3493
3498
|
}
|
|
@@ -3495,29 +3500,29 @@
|
|
|
3495
3500
|
}
|
|
3496
3501
|
},
|
|
3497
3502
|
{
|
|
3498
|
-
"search": "
|
|
3503
|
+
"search": "Each placeholder is replaced at runtime with the current value of the corresponding property. @onAssign automatically watches those properties and:\n",
|
|
3499
3504
|
"files": {
|
|
3500
|
-
"docs/
|
|
3501
|
-
"title": "
|
|
3505
|
+
"docs/_decorators/on-assign.md": {
|
|
3506
|
+
"title": "@onAssign",
|
|
3502
3507
|
"hashes": {
|
|
3503
|
-
"
|
|
3508
|
+
"dynamic-path-driven-by-class-properties": {
|
|
3504
3509
|
"count": 1,
|
|
3505
|
-
"title": "",
|
|
3506
|
-
"type": "
|
|
3510
|
+
"title": "Dynamic path driven by class properties",
|
|
3511
|
+
"type": "paragraph"
|
|
3507
3512
|
}
|
|
3508
3513
|
}
|
|
3509
3514
|
}
|
|
3510
3515
|
}
|
|
3511
3516
|
},
|
|
3512
3517
|
{
|
|
3513
|
-
"search": "
|
|
3518
|
+
"search": "⚠️ Use classic string literals: @onAssign("${dataProvider}.${profileId}", "settings.${profileId}"). Do not use template literals (backticks), otherwise JavaScript would try to interpolate the value immediately.\n",
|
|
3514
3519
|
"files": {
|
|
3515
|
-
"docs/
|
|
3516
|
-
"title": "
|
|
3520
|
+
"docs/_decorators/on-assign.md": {
|
|
3521
|
+
"title": "@onAssign",
|
|
3517
3522
|
"hashes": {
|
|
3518
|
-
"
|
|
3523
|
+
"dynamic-path-driven-by-class-properties": {
|
|
3519
3524
|
"count": 1,
|
|
3520
|
-
"title": "",
|
|
3525
|
+
"title": "Dynamic path driven by class properties",
|
|
3521
3526
|
"type": "paragraph"
|
|
3522
3527
|
}
|
|
3523
3528
|
}
|
|
@@ -3525,14 +3530,14 @@
|
|
|
3525
3530
|
}
|
|
3526
3531
|
},
|
|
3527
3532
|
{
|
|
3528
|
-
"search": "
|
|
3533
|
+
"search": "Additional constraints:\n",
|
|
3529
3534
|
"files": {
|
|
3530
|
-
"docs/
|
|
3531
|
-
"title": "
|
|
3535
|
+
"docs/_decorators/on-assign.md": {
|
|
3536
|
+
"title": "@onAssign",
|
|
3532
3537
|
"hashes": {
|
|
3533
|
-
"
|
|
3538
|
+
"dynamic-path-driven-by-class-properties": {
|
|
3534
3539
|
"count": 1,
|
|
3535
|
-
"title": "
|
|
3540
|
+
"title": "Dynamic path driven by class properties",
|
|
3536
3541
|
"type": "paragraph"
|
|
3537
3542
|
}
|
|
3538
3543
|
}
|
|
@@ -3540,29 +3545,29 @@
|
|
|
3540
3545
|
}
|
|
3541
3546
|
},
|
|
3542
3547
|
{
|
|
3543
|
-
"search": "
|
|
3548
|
+
"search": "@publish",
|
|
3544
3549
|
"files": {
|
|
3545
|
-
"docs/
|
|
3546
|
-
"title": "
|
|
3550
|
+
"docs/_decorators/publish.md": {
|
|
3551
|
+
"title": "@publish",
|
|
3547
3552
|
"hashes": {
|
|
3548
|
-
"
|
|
3553
|
+
"publish": {
|
|
3549
3554
|
"count": 1,
|
|
3550
|
-
"title": "
|
|
3551
|
-
"type": "
|
|
3555
|
+
"title": "",
|
|
3556
|
+
"type": "page"
|
|
3552
3557
|
}
|
|
3553
3558
|
}
|
|
3554
3559
|
}
|
|
3555
3560
|
}
|
|
3556
3561
|
},
|
|
3557
3562
|
{
|
|
3558
|
-
"search": "
|
|
3563
|
+
"search": "Write-only binding: assigning to the property publishes to the DataProviderKey path. No read subscription (inverse of @subscribe).\n",
|
|
3559
3564
|
"files": {
|
|
3560
|
-
"docs/
|
|
3561
|
-
"title": "
|
|
3565
|
+
"docs/_decorators/publish.md": {
|
|
3566
|
+
"title": "@publish",
|
|
3562
3567
|
"hashes": {
|
|
3563
|
-
"
|
|
3568
|
+
"publish": {
|
|
3564
3569
|
"count": 1,
|
|
3565
|
-
"title": "
|
|
3570
|
+
"title": "",
|
|
3566
3571
|
"type": "paragraph"
|
|
3567
3572
|
}
|
|
3568
3573
|
}
|
|
@@ -3570,14 +3575,14 @@
|
|
|
3570
3575
|
}
|
|
3571
3576
|
},
|
|
3572
3577
|
{
|
|
3573
|
-
"search": "
|
|
3578
|
+
"search": "Similar to the “reflect” half of @bind without listening to the publisher.\n",
|
|
3574
3579
|
"files": {
|
|
3575
|
-
"docs/
|
|
3576
|
-
"title": "
|
|
3580
|
+
"docs/_decorators/publish.md": {
|
|
3581
|
+
"title": "@publish",
|
|
3577
3582
|
"hashes": {
|
|
3578
|
-
"
|
|
3583
|
+
"publish": {
|
|
3579
3584
|
"count": 1,
|
|
3580
|
-
"title": "
|
|
3585
|
+
"title": "",
|
|
3581
3586
|
"type": "paragraph"
|
|
3582
3587
|
}
|
|
3583
3588
|
}
|
|
@@ -3585,14 +3590,14 @@
|
|
|
3585
3590
|
}
|
|
3586
3591
|
},
|
|
3587
3592
|
{
|
|
3588
|
-
"search": "
|
|
3593
|
+
"search": "Dynamic paths use the same placeholder rules as @bind / @subscribe.\n",
|
|
3589
3594
|
"files": {
|
|
3590
|
-
"docs/
|
|
3591
|
-
"title": "
|
|
3595
|
+
"docs/_decorators/publish.md": {
|
|
3596
|
+
"title": "@publish",
|
|
3592
3597
|
"hashes": {
|
|
3593
|
-
"
|
|
3598
|
+
"example": {
|
|
3594
3599
|
"count": 1,
|
|
3595
|
-
"title": "
|
|
3600
|
+
"title": "Example",
|
|
3596
3601
|
"type": "paragraph"
|
|
3597
3602
|
}
|
|
3598
3603
|
}
|
|
@@ -3600,12 +3605,12 @@
|
|
|
3600
3605
|
}
|
|
3601
3606
|
},
|
|
3602
3607
|
{
|
|
3603
|
-
"search": "
|
|
3608
|
+
"search": "@subscribe",
|
|
3604
3609
|
"files": {
|
|
3605
|
-
"docs/
|
|
3606
|
-
"title": "
|
|
3610
|
+
"docs/_decorators/subscribe.md": {
|
|
3611
|
+
"title": "@subscribe",
|
|
3607
3612
|
"hashes": {
|
|
3608
|
-
"
|
|
3613
|
+
"subscribe": {
|
|
3609
3614
|
"count": 1,
|
|
3610
3615
|
"title": "",
|
|
3611
3616
|
"type": "page"
|
|
@@ -3615,12 +3620,12 @@
|
|
|
3615
3620
|
}
|
|
3616
3621
|
},
|
|
3617
3622
|
{
|
|
3618
|
-
"search": "
|
|
3623
|
+
"search": "Read-only binding: only DataProviderKey<T> (no legacy string path). No reflect option — the publisher updates the property, not the other way around.\n",
|
|
3619
3624
|
"files": {
|
|
3620
|
-
"docs/
|
|
3621
|
-
"title": "
|
|
3625
|
+
"docs/_decorators/subscribe.md": {
|
|
3626
|
+
"title": "@subscribe",
|
|
3622
3627
|
"hashes": {
|
|
3623
|
-
"
|
|
3628
|
+
"subscribe": {
|
|
3624
3629
|
"count": 1,
|
|
3625
3630
|
"title": "",
|
|
3626
3631
|
"type": "paragraph"
|
|
@@ -3630,12 +3635,12 @@
|
|
|
3630
3635
|
}
|
|
3631
3636
|
},
|
|
3632
3637
|
{
|
|
3633
|
-
"search": "
|
|
3638
|
+
"search": "For bidirectional binding or string paths, use @bind.\n",
|
|
3634
3639
|
"files": {
|
|
3635
|
-
"docs/
|
|
3636
|
-
"title": "
|
|
3640
|
+
"docs/_decorators/subscribe.md": {
|
|
3641
|
+
"title": "@subscribe",
|
|
3637
3642
|
"hashes": {
|
|
3638
|
-
"
|
|
3643
|
+
"subscribe": {
|
|
3639
3644
|
"count": 1,
|
|
3640
3645
|
"title": "",
|
|
3641
3646
|
"type": "paragraph"
|
|
@@ -3645,14 +3650,14 @@
|
|
|
3645
3650
|
}
|
|
3646
3651
|
},
|
|
3647
3652
|
{
|
|
3648
|
-
"search": "
|
|
3653
|
+
"search": "See also DataProviderKey.\n",
|
|
3649
3654
|
"files": {
|
|
3650
|
-
"docs/
|
|
3651
|
-
"title": "
|
|
3655
|
+
"docs/_decorators/subscribe.md": {
|
|
3656
|
+
"title": "@subscribe",
|
|
3652
3657
|
"hashes": {
|
|
3653
|
-
"
|
|
3658
|
+
"demo": {
|
|
3654
3659
|
"count": 1,
|
|
3655
|
-
"title": "",
|
|
3660
|
+
"title": "Demo",
|
|
3656
3661
|
"type": "paragraph"
|
|
3657
3662
|
}
|
|
3658
3663
|
}
|
|
@@ -3660,29 +3665,29 @@
|
|
|
3660
3665
|
}
|
|
3661
3666
|
},
|
|
3662
3667
|
{
|
|
3663
|
-
"search": "
|
|
3668
|
+
"search": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3664
3669
|
"files": {
|
|
3665
|
-
"docs/
|
|
3666
|
-
"title": "
|
|
3670
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3671
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3667
3672
|
"hashes": {
|
|
3668
|
-
"
|
|
3673
|
+
"awaitconnectedancestors-and-dispatchconnectedevent": {
|
|
3669
3674
|
"count": 1,
|
|
3670
|
-
"title": "
|
|
3671
|
-
"type": "
|
|
3675
|
+
"title": "",
|
|
3676
|
+
"type": "page"
|
|
3672
3677
|
}
|
|
3673
3678
|
}
|
|
3674
3679
|
}
|
|
3675
3680
|
}
|
|
3676
3681
|
},
|
|
3677
3682
|
{
|
|
3678
|
-
"search": "
|
|
3683
|
+
"search": "The @awaitConnectedAncestors and @dispatchConnectedEvent decorators delay a web component's initialization until its matching ancestors have executed their connectedCallback. This is when contextual elements (publisher, dataProvider, etc.) are configured.\n",
|
|
3679
3684
|
"files": {
|
|
3680
|
-
"docs/
|
|
3681
|
-
"title": "
|
|
3685
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3686
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3682
3687
|
"hashes": {
|
|
3683
|
-
"
|
|
3688
|
+
"awaitconnectedancestors-and-dispatchconnectedevent": {
|
|
3684
3689
|
"count": 1,
|
|
3685
|
-
"title": "
|
|
3690
|
+
"title": "",
|
|
3686
3691
|
"type": "paragraph"
|
|
3687
3692
|
}
|
|
3688
3693
|
}
|
|
@@ -3690,14 +3695,14 @@
|
|
|
3690
3695
|
}
|
|
3691
3696
|
},
|
|
3692
3697
|
{
|
|
3693
|
-
"search": "The
|
|
3698
|
+
"search": "When a child component attaches to the DOM, its ancestors may not yet be initialized (especially if custom element definitions are loaded asynchronously). The @awaitConnectedAncestors decorator delays the component's connectedCallback until all ancestors matching the provided CSS selectors have executed their connectedCallback.\n",
|
|
3694
3699
|
"files": {
|
|
3695
|
-
"docs/
|
|
3696
|
-
"title": "
|
|
3700
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3701
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3697
3702
|
"hashes": {
|
|
3698
|
-
"
|
|
3703
|
+
"principle": {
|
|
3699
3704
|
"count": 1,
|
|
3700
|
-
"title": "
|
|
3705
|
+
"title": "Principle",
|
|
3701
3706
|
"type": "paragraph"
|
|
3702
3707
|
}
|
|
3703
3708
|
}
|
|
@@ -3705,14 +3710,14 @@
|
|
|
3705
3710
|
}
|
|
3706
3711
|
},
|
|
3707
3712
|
{
|
|
3708
|
-
"search": "
|
|
3713
|
+
"search": "The @dispatchConnectedEvent decorator allows ancestors to signal they are ready by dispatching the sonic-connected event at the end of their connectedCallback. The event bubbles, so it can be listened to from anywhere (e.g. document.addEventListener(CONNECTED, handler)).\n",
|
|
3709
3714
|
"files": {
|
|
3710
|
-
"docs/
|
|
3711
|
-
"title": "
|
|
3715
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3716
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3712
3717
|
"hashes": {
|
|
3713
|
-
"
|
|
3718
|
+
"principle": {
|
|
3714
3719
|
"count": 1,
|
|
3715
|
-
"title": "
|
|
3720
|
+
"title": "Principle",
|
|
3716
3721
|
"type": "paragraph"
|
|
3717
3722
|
}
|
|
3718
3723
|
}
|
|
@@ -3720,14 +3725,14 @@
|
|
|
3720
3725
|
}
|
|
3721
3726
|
},
|
|
3722
3727
|
{
|
|
3723
|
-
"search": "
|
|
3728
|
+
"search": "Ancestors that are not web components (no hyphen in tag name) are considered connected by default and do not need to emit the event.\n",
|
|
3724
3729
|
"files": {
|
|
3725
|
-
"docs/
|
|
3726
|
-
"title": "
|
|
3730
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3731
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3727
3732
|
"hashes": {
|
|
3728
|
-
"
|
|
3733
|
+
"principle": {
|
|
3729
3734
|
"count": 1,
|
|
3730
|
-
"title": "
|
|
3735
|
+
"title": "Principle",
|
|
3731
3736
|
"type": "paragraph"
|
|
3732
3737
|
}
|
|
3733
3738
|
}
|
|
@@ -3735,14 +3740,14 @@
|
|
|
3735
3740
|
}
|
|
3736
3741
|
},
|
|
3737
3742
|
{
|
|
3738
|
-
"search": "
|
|
3743
|
+
"search": "An ancestor container decorated with @dispatchConnectedEvent() signals when it is ready. A child component decorated with @awaitConnectedAncestors("demo-wait-ancestor-container[dataProvider]") waits for this container to be initialized before initializing itself. Parameters are CSS selectors (element.matches()).\n",
|
|
3739
3744
|
"files": {
|
|
3740
|
-
"docs/
|
|
3741
|
-
"title": "
|
|
3745
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3746
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3742
3747
|
"hashes": {
|
|
3743
3748
|
"basic-example": {
|
|
3744
3749
|
"count": 1,
|
|
3745
|
-
"title": "Basic
|
|
3750
|
+
"title": "Basic example",
|
|
3746
3751
|
"type": "paragraph"
|
|
3747
3752
|
}
|
|
3748
3753
|
}
|
|
@@ -3750,29 +3755,29 @@
|
|
|
3750
3755
|
}
|
|
3751
3756
|
},
|
|
3752
3757
|
{
|
|
3753
|
-
"search": "
|
|
3758
|
+
"search": "The parent is registered via customElements.define() (vanilla JS) rather than @customElement, so it can be defined later—e.g. when the user clicks a button. This demonstrates the child waiting until the parent exists.\n",
|
|
3754
3759
|
"files": {
|
|
3755
|
-
"docs/
|
|
3756
|
-
"title": "
|
|
3760
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3761
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3757
3762
|
"hashes": {
|
|
3758
|
-
"
|
|
3763
|
+
"basic-example": {
|
|
3759
3764
|
"count": 1,
|
|
3760
|
-
"title": "",
|
|
3761
|
-
"type": "
|
|
3765
|
+
"title": "Basic example",
|
|
3766
|
+
"type": "paragraph"
|
|
3762
3767
|
}
|
|
3763
3768
|
}
|
|
3764
3769
|
}
|
|
3765
3770
|
}
|
|
3766
3771
|
},
|
|
3767
3772
|
{
|
|
3768
|
-
"search": "
|
|
3773
|
+
"search": "The child waits for all specified ancestors. Register outer first, then inner — the child initializes only when both are ready.\n",
|
|
3769
3774
|
"files": {
|
|
3770
|
-
"docs/
|
|
3771
|
-
"title": "
|
|
3775
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3776
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3772
3777
|
"hashes": {
|
|
3773
|
-
"
|
|
3778
|
+
"multiple-ancestors": {
|
|
3774
3779
|
"count": 1,
|
|
3775
|
-
"title": "
|
|
3780
|
+
"title": "Multiple ancestors",
|
|
3776
3781
|
"type": "paragraph"
|
|
3777
3782
|
}
|
|
3778
3783
|
}
|
|
@@ -3780,14 +3785,14 @@
|
|
|
3780
3785
|
}
|
|
3781
3786
|
},
|
|
3782
3787
|
{
|
|
3783
|
-
"search": "
|
|
3788
|
+
"search": "When the parent is defined at load and already in the DOM, the child initializes immediately (no delay).\n",
|
|
3784
3789
|
"files": {
|
|
3785
|
-
"docs/
|
|
3786
|
-
"title": "
|
|
3790
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3791
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3787
3792
|
"hashes": {
|
|
3788
|
-
"
|
|
3793
|
+
"ancestors-already-connected": {
|
|
3789
3794
|
"count": 1,
|
|
3790
|
-
"title": "
|
|
3795
|
+
"title": "Ancestors already connected",
|
|
3791
3796
|
"type": "paragraph"
|
|
3792
3797
|
}
|
|
3793
3798
|
}
|
|
@@ -3795,14 +3800,14 @@
|
|
|
3795
3800
|
}
|
|
3796
3801
|
},
|
|
3797
3802
|
{
|
|
3798
|
-
"search": "
|
|
3803
|
+
"search": "Static (both in DOM from start):\n",
|
|
3799
3804
|
"files": {
|
|
3800
|
-
"docs/
|
|
3801
|
-
"title": "
|
|
3805
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3806
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3802
3807
|
"hashes": {
|
|
3803
|
-
"
|
|
3808
|
+
"ancestors-already-connected": {
|
|
3804
3809
|
"count": 1,
|
|
3805
|
-
"title": "
|
|
3810
|
+
"title": "Ancestors already connected",
|
|
3806
3811
|
"type": "paragraph"
|
|
3807
3812
|
}
|
|
3808
3813
|
}
|
|
@@ -3810,29 +3815,29 @@
|
|
|
3810
3815
|
}
|
|
3811
3816
|
},
|
|
3812
3817
|
{
|
|
3813
|
-
"search": "
|
|
3818
|
+
"search": "Dynamic (child added on button click):\n",
|
|
3814
3819
|
"files": {
|
|
3815
|
-
"docs/
|
|
3816
|
-
"title": "
|
|
3820
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3821
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3817
3822
|
"hashes": {
|
|
3818
|
-
"
|
|
3823
|
+
"ancestors-already-connected": {
|
|
3819
3824
|
"count": 1,
|
|
3820
|
-
"title": "",
|
|
3821
|
-
"type": "
|
|
3825
|
+
"title": "Ancestors already connected",
|
|
3826
|
+
"type": "paragraph"
|
|
3822
3827
|
}
|
|
3823
3828
|
}
|
|
3824
3829
|
}
|
|
3825
3830
|
}
|
|
3826
3831
|
},
|
|
3827
3832
|
{
|
|
3828
|
-
"search": "
|
|
3833
|
+
"search": "Parameters are CSS selectors matched via element.matches() — e.g. "sonic-subscriber", "sonic-subscriber[dataProvider]", ".my-container", or multiple: "sonic-subscriber", "sonic-sdui".\n",
|
|
3829
3834
|
"files": {
|
|
3830
|
-
"docs/
|
|
3831
|
-
"title": "
|
|
3835
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3836
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3832
3837
|
"hashes": {
|
|
3833
|
-
"
|
|
3838
|
+
"css-selector-support": {
|
|
3834
3839
|
"count": 1,
|
|
3835
|
-
"title": "
|
|
3840
|
+
"title": "CSS selector support",
|
|
3836
3841
|
"type": "paragraph"
|
|
3837
3842
|
}
|
|
3838
3843
|
}
|
|
@@ -3840,14 +3845,14 @@
|
|
|
3840
3845
|
}
|
|
3841
3846
|
},
|
|
3842
3847
|
{
|
|
3843
|
-
"search": "
|
|
3848
|
+
"search": "These decorators are particularly useful for:\n",
|
|
3844
3849
|
"files": {
|
|
3845
|
-
"docs/
|
|
3846
|
-
"title": "
|
|
3850
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3851
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3847
3852
|
"hashes": {
|
|
3848
|
-
"
|
|
3853
|
+
"use-cases": {
|
|
3849
3854
|
"count": 1,
|
|
3850
|
-
"title": "
|
|
3855
|
+
"title": "Use cases",
|
|
3851
3856
|
"type": "paragraph"
|
|
3852
3857
|
}
|
|
3853
3858
|
}
|
|
@@ -3855,14 +3860,14 @@
|
|
|
3855
3860
|
}
|
|
3856
3861
|
},
|
|
3857
3862
|
{
|
|
3858
|
-
"search": "
|
|
3863
|
+
"search": "The sonic-connected event bubbles, so you can listen to it from anywhere:\n",
|
|
3859
3864
|
"files": {
|
|
3860
|
-
"docs/
|
|
3861
|
-
"title": "
|
|
3865
|
+
"docs/_decorators/wait-for-ancestors.md": {
|
|
3866
|
+
"title": "@awaitConnectedAncestors and @dispatchConnectedEvent",
|
|
3862
3867
|
"hashes": {
|
|
3863
|
-
"
|
|
3868
|
+
"listening-to-the-connected-event": {
|
|
3864
3869
|
"count": 1,
|
|
3865
|
-
"title": "
|
|
3870
|
+
"title": "Listening to the connected event",
|
|
3866
3871
|
"type": "paragraph"
|
|
3867
3872
|
}
|
|
3868
3873
|
}
|
|
@@ -3870,29 +3875,29 @@
|
|
|
3870
3875
|
}
|
|
3871
3876
|
},
|
|
3872
3877
|
{
|
|
3873
|
-
"search": "
|
|
3878
|
+
"search": "Installation",
|
|
3874
3879
|
"files": {
|
|
3875
|
-
"docs/_getting-started/
|
|
3876
|
-
"title": "
|
|
3880
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3881
|
+
"title": "Installation",
|
|
3877
3882
|
"hashes": {
|
|
3878
|
-
"
|
|
3883
|
+
"installation": {
|
|
3879
3884
|
"count": 1,
|
|
3880
|
-
"title": "
|
|
3881
|
-
"type": "
|
|
3885
|
+
"title": "",
|
|
3886
|
+
"type": "page"
|
|
3882
3887
|
}
|
|
3883
3888
|
}
|
|
3884
3889
|
}
|
|
3885
3890
|
}
|
|
3886
3891
|
},
|
|
3887
3892
|
{
|
|
3888
|
-
"search": "
|
|
3893
|
+
"search": "The easiest way to use Concorde is by using the Concorde starter.The following command creates a new Vite project in TypeScript mode with Tailwind and an example component to get started.\n",
|
|
3889
3894
|
"files": {
|
|
3890
|
-
"docs/_getting-started/
|
|
3891
|
-
"title": "
|
|
3895
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3896
|
+
"title": "Installation",
|
|
3892
3897
|
"hashes": {
|
|
3893
|
-
"
|
|
3898
|
+
"starter": {
|
|
3894
3899
|
"count": 1,
|
|
3895
|
-
"title": "
|
|
3900
|
+
"title": "Starter",
|
|
3896
3901
|
"type": "paragraph"
|
|
3897
3902
|
}
|
|
3898
3903
|
}
|
|
@@ -3900,14 +3905,14 @@
|
|
|
3900
3905
|
}
|
|
3901
3906
|
},
|
|
3902
3907
|
{
|
|
3903
|
-
"search": "
|
|
3908
|
+
"search": "For a more manual configuration, you can refer to the following sections. \nHowever, the Tailwind configuration is not mentioned at the moment.\n",
|
|
3904
3909
|
"files": {
|
|
3905
|
-
"docs/_getting-started/
|
|
3906
|
-
"title": "
|
|
3910
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3911
|
+
"title": "Installation",
|
|
3907
3912
|
"hashes": {
|
|
3908
|
-
"
|
|
3913
|
+
"brand-new-vite-project": {
|
|
3909
3914
|
"count": 1,
|
|
3910
|
-
"title": "
|
|
3915
|
+
"title": "Brand New Vite Project",
|
|
3911
3916
|
"type": "paragraph"
|
|
3912
3917
|
}
|
|
3913
3918
|
}
|
|
@@ -3915,14 +3920,14 @@
|
|
|
3915
3920
|
}
|
|
3916
3921
|
},
|
|
3917
3922
|
{
|
|
3918
|
-
"search": "
|
|
3923
|
+
"search": "Using Lit with TypeScript requires the following configuration in the "compilerOptions" section of the tsconfig.json file:\n",
|
|
3919
3924
|
"files": {
|
|
3920
|
-
"docs/_getting-started/
|
|
3921
|
-
"title": "
|
|
3925
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3926
|
+
"title": "Installation",
|
|
3922
3927
|
"hashes": {
|
|
3923
|
-
"
|
|
3928
|
+
"creating-the-project": {
|
|
3924
3929
|
"count": 1,
|
|
3925
|
-
"title": "
|
|
3930
|
+
"title": "Creating the Project",
|
|
3926
3931
|
"type": "paragraph"
|
|
3927
3932
|
}
|
|
3928
3933
|
}
|
|
@@ -3930,14 +3935,14 @@
|
|
|
3930
3935
|
}
|
|
3931
3936
|
},
|
|
3932
3937
|
{
|
|
3933
|
-
"search": "
|
|
3938
|
+
"search": "Navigate to the project folder created and perform the installation:\n",
|
|
3934
3939
|
"files": {
|
|
3935
|
-
"docs/_getting-started/
|
|
3936
|
-
"title": "
|
|
3940
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3941
|
+
"title": "Installation",
|
|
3937
3942
|
"hashes": {
|
|
3938
|
-
"
|
|
3943
|
+
"installing-concorde": {
|
|
3939
3944
|
"count": 1,
|
|
3940
|
-
"title": "
|
|
3945
|
+
"title": "Installing Concorde",
|
|
3941
3946
|
"type": "paragraph"
|
|
3942
3947
|
}
|
|
3943
3948
|
}
|
|
@@ -3945,14 +3950,14 @@
|
|
|
3945
3950
|
}
|
|
3946
3951
|
},
|
|
3947
3952
|
{
|
|
3948
|
-
"search": "
|
|
3953
|
+
"search": "Shortcut imports work by default in JavaScript, but in TypeScript, they are activated by choice as they inject data into tsconfig.json. Here is the command:\n",
|
|
3949
3954
|
"files": {
|
|
3950
|
-
"docs/_getting-started/
|
|
3951
|
-
"title": "
|
|
3955
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3956
|
+
"title": "Installation",
|
|
3952
3957
|
"hashes": {
|
|
3953
|
-
"
|
|
3958
|
+
"shortcut-imports": {
|
|
3954
3959
|
"count": 1,
|
|
3955
|
-
"title": "
|
|
3960
|
+
"title": "Shortcut Imports",
|
|
3956
3961
|
"type": "paragraph"
|
|
3957
3962
|
}
|
|
3958
3963
|
}
|
|
@@ -3960,14 +3965,14 @@
|
|
|
3960
3965
|
}
|
|
3961
3966
|
},
|
|
3962
3967
|
{
|
|
3963
|
-
"search": "
|
|
3968
|
+
"search": "Shortcut imports replace the actual paths with aliases as follows:\n",
|
|
3964
3969
|
"files": {
|
|
3965
|
-
"docs/_getting-started/
|
|
3966
|
-
"title": "
|
|
3970
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3971
|
+
"title": "Installation",
|
|
3967
3972
|
"hashes": {
|
|
3968
|
-
"
|
|
3973
|
+
"shortcut-imports": {
|
|
3969
3974
|
"count": 1,
|
|
3970
|
-
"title": "
|
|
3975
|
+
"title": "Shortcut Imports",
|
|
3971
3976
|
"type": "paragraph"
|
|
3972
3977
|
}
|
|
3973
3978
|
}
|
|
@@ -3975,14 +3980,14 @@
|
|
|
3975
3980
|
}
|
|
3976
3981
|
},
|
|
3977
3982
|
{
|
|
3978
|
-
"search": "The
|
|
3983
|
+
"search": "The original paths remain accessible. Shortcut imports are used for the examples later in this documentation.\n",
|
|
3979
3984
|
"files": {
|
|
3980
|
-
"docs/_getting-started/
|
|
3981
|
-
"title": "
|
|
3985
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
3986
|
+
"title": "Installation",
|
|
3982
3987
|
"hashes": {
|
|
3983
|
-
"
|
|
3988
|
+
"shortcut-imports": {
|
|
3984
3989
|
"count": 1,
|
|
3985
|
-
"title": "
|
|
3990
|
+
"title": "Shortcut Imports",
|
|
3986
3991
|
"type": "paragraph"
|
|
3987
3992
|
}
|
|
3988
3993
|
}
|
|
@@ -3990,14 +3995,14 @@
|
|
|
3990
3995
|
}
|
|
3991
3996
|
},
|
|
3992
3997
|
{
|
|
3993
|
-
"search": "
|
|
3998
|
+
"search": "Import needed component in main.ts or wherever you want to use it:\n",
|
|
3994
3999
|
"files": {
|
|
3995
|
-
"docs/_getting-started/
|
|
3996
|
-
"title": "
|
|
4000
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4001
|
+
"title": "Installation",
|
|
3997
4002
|
"hashes": {
|
|
3998
|
-
"
|
|
4003
|
+
"simple-integration-in-html": {
|
|
3999
4004
|
"count": 1,
|
|
4000
|
-
"title": "
|
|
4005
|
+
"title": "Simple Integration in HTML",
|
|
4001
4006
|
"type": "paragraph"
|
|
4002
4007
|
}
|
|
4003
4008
|
}
|
|
@@ -4005,14 +4010,14 @@
|
|
|
4005
4010
|
}
|
|
4006
4011
|
},
|
|
4007
4012
|
{
|
|
4008
|
-
"search": "
|
|
4013
|
+
"search": "Then in the render function ofyour component or in the HTML of the web page that includes the compiled JS, use the component as follows:\n",
|
|
4009
4014
|
"files": {
|
|
4010
|
-
"docs/_getting-started/
|
|
4011
|
-
"title": "
|
|
4015
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4016
|
+
"title": "Installation",
|
|
4012
4017
|
"hashes": {
|
|
4013
|
-
"
|
|
4018
|
+
"simple-integration-in-html": {
|
|
4014
4019
|
"count": 1,
|
|
4015
|
-
"title": "
|
|
4020
|
+
"title": "Simple Integration in HTML",
|
|
4016
4021
|
"type": "paragraph"
|
|
4017
4022
|
}
|
|
4018
4023
|
}
|
|
@@ -4020,14 +4025,14 @@
|
|
|
4020
4025
|
}
|
|
4021
4026
|
},
|
|
4022
4027
|
{
|
|
4023
|
-
"search": "
|
|
4028
|
+
"search": "For example, create a file my-element.ts at the root:\n",
|
|
4024
4029
|
"files": {
|
|
4025
|
-
"docs/_getting-started/
|
|
4026
|
-
"title": "
|
|
4030
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4031
|
+
"title": "Installation",
|
|
4027
4032
|
"hashes": {
|
|
4028
|
-
"
|
|
4033
|
+
"using-a-mixin-to-create-a-new-lit-component": {
|
|
4029
4034
|
"count": 1,
|
|
4030
|
-
"title": "
|
|
4035
|
+
"title": "Using a Mixin to Create a New Lit Component",
|
|
4031
4036
|
"type": "paragraph"
|
|
4032
4037
|
}
|
|
4033
4038
|
}
|
|
@@ -4035,14 +4040,14 @@
|
|
|
4035
4040
|
}
|
|
4036
4041
|
},
|
|
4037
4042
|
{
|
|
4038
|
-
"search": "
|
|
4043
|
+
"search": "@customElement("my-element")\nexport class SonicComponent extends Fetcher(Subscriber(LitElement)) {\n @property() email = "";\n @property() first_name = "";\n @property() last_name = "";\n",
|
|
4039
4044
|
"files": {
|
|
4040
|
-
"docs/_getting-started/
|
|
4041
|
-
"title": "
|
|
4045
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4046
|
+
"title": "Installation",
|
|
4042
4047
|
"hashes": {
|
|
4043
|
-
"
|
|
4048
|
+
"using-a-mixin-to-create-a-new-lit-component": {
|
|
4044
4049
|
"count": 1,
|
|
4045
|
-
"title": "
|
|
4050
|
+
"title": "Using a Mixin to Create a New Lit Component",
|
|
4046
4051
|
"type": "paragraph"
|
|
4047
4052
|
}
|
|
4048
4053
|
}
|
|
@@ -4050,14 +4055,14 @@
|
|
|
4050
4055
|
}
|
|
4051
4056
|
},
|
|
4052
4057
|
{
|
|
4053
|
-
"search": "
|
|
4058
|
+
"search": " render() {\n return html<div> ${this.first_name} ${this.last_name} : ${this.email} </div>;\n }\n}\n \n\n",
|
|
4054
4059
|
"files": {
|
|
4055
|
-
"docs/_getting-started/
|
|
4056
|
-
"title": "
|
|
4060
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4061
|
+
"title": "Installation",
|
|
4057
4062
|
"hashes": {
|
|
4058
|
-
"
|
|
4063
|
+
"using-a-mixin-to-create-a-new-lit-component": {
|
|
4059
4064
|
"count": 1,
|
|
4060
|
-
"title": "
|
|
4065
|
+
"title": "Using a Mixin to Create a New Lit Component",
|
|
4061
4066
|
"type": "paragraph"
|
|
4062
4067
|
}
|
|
4063
4068
|
}
|
|
@@ -4065,12 +4070,42 @@
|
|
|
4065
4070
|
}
|
|
4066
4071
|
},
|
|
4067
4072
|
{
|
|
4068
|
-
"search": "
|
|
4073
|
+
"search": "Import component main.ts or main.js or any other component that uses it to be compiled\n",
|
|
4069
4074
|
"files": {
|
|
4070
|
-
"docs/
|
|
4071
|
-
"title": "
|
|
4075
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4076
|
+
"title": "Installation",
|
|
4072
4077
|
"hashes": {
|
|
4073
|
-
"
|
|
4078
|
+
"using-a-mixin-to-create-a-new-lit-component": {
|
|
4079
|
+
"count": 1,
|
|
4080
|
+
"title": "Using a Mixin to Create a New Lit Component",
|
|
4081
|
+
"type": "paragraph"
|
|
4082
|
+
}
|
|
4083
|
+
}
|
|
4084
|
+
}
|
|
4085
|
+
}
|
|
4086
|
+
},
|
|
4087
|
+
{
|
|
4088
|
+
"search": "In the HTML of a JS or TS component or in the HTML of the web page containing the compiled JS:\n",
|
|
4089
|
+
"files": {
|
|
4090
|
+
"docs/_getting-started/concorde-outside.md": {
|
|
4091
|
+
"title": "Installation",
|
|
4092
|
+
"hashes": {
|
|
4093
|
+
"using-a-mixin-to-create-a-new-lit-component": {
|
|
4094
|
+
"count": 1,
|
|
4095
|
+
"title": "Using a Mixin to Create a New Lit Component",
|
|
4096
|
+
"type": "paragraph"
|
|
4097
|
+
}
|
|
4098
|
+
}
|
|
4099
|
+
}
|
|
4100
|
+
}
|
|
4101
|
+
},
|
|
4102
|
+
{
|
|
4103
|
+
"search": "Creating components",
|
|
4104
|
+
"files": {
|
|
4105
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4106
|
+
"title": "Creating components",
|
|
4107
|
+
"hashes": {
|
|
4108
|
+
"creating-components": {
|
|
4074
4109
|
"count": 1,
|
|
4075
4110
|
"title": "",
|
|
4076
4111
|
"type": "page"
|
|
@@ -4080,14 +4115,14 @@
|
|
|
4080
4115
|
}
|
|
4081
4116
|
},
|
|
4082
4117
|
{
|
|
4083
|
-
"search": "
|
|
4118
|
+
"search": "In this document, we consider the src directory of the project as the root.\nWe describe how we organize our components as an example, however it depends on your project.\n",
|
|
4084
4119
|
"files": {
|
|
4085
|
-
"docs/
|
|
4086
|
-
"title": "
|
|
4120
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4121
|
+
"title": "Creating components",
|
|
4087
4122
|
"hashes": {
|
|
4088
|
-
"
|
|
4123
|
+
"where-to-put-it": {
|
|
4089
4124
|
"count": 1,
|
|
4090
|
-
"title": "",
|
|
4125
|
+
"title": "Where to put it?",
|
|
4091
4126
|
"type": "paragraph"
|
|
4092
4127
|
}
|
|
4093
4128
|
}
|
|
@@ -4095,14 +4130,14 @@
|
|
|
4095
4130
|
}
|
|
4096
4131
|
},
|
|
4097
4132
|
{
|
|
4098
|
-
"search": "
|
|
4133
|
+
"search": "In concorde each component is currently organized in the following directory structure (at least we try):\n",
|
|
4099
4134
|
"files": {
|
|
4100
|
-
"docs/
|
|
4101
|
-
"title": "
|
|
4135
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4136
|
+
"title": "Creating components",
|
|
4102
4137
|
"hashes": {
|
|
4103
|
-
"
|
|
4138
|
+
"where-to-put-it": {
|
|
4104
4139
|
"count": 1,
|
|
4105
|
-
"title": "
|
|
4140
|
+
"title": "Where to put it?",
|
|
4106
4141
|
"type": "paragraph"
|
|
4107
4142
|
}
|
|
4108
4143
|
}
|
|
@@ -4110,14 +4145,14 @@
|
|
|
4110
4145
|
}
|
|
4111
4146
|
},
|
|
4112
4147
|
{
|
|
4113
|
-
"search": "
|
|
4148
|
+
"search": "You can copy example.ts from the source to the desired destination to start with.\nThis file contains a web component in the form of a class that extends the Subscriber mixin, with a reactive property and a render function.\n",
|
|
4114
4149
|
"files": {
|
|
4115
|
-
"docs/
|
|
4116
|
-
"title": "
|
|
4150
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4151
|
+
"title": "Creating components",
|
|
4117
4152
|
"hashes": {
|
|
4118
|
-
"
|
|
4153
|
+
"starting-from-a-simple-model": {
|
|
4119
4154
|
"count": 1,
|
|
4120
|
-
"title": "
|
|
4155
|
+
"title": "Starting from a Simple Model",
|
|
4121
4156
|
"type": "paragraph"
|
|
4122
4157
|
}
|
|
4123
4158
|
}
|
|
@@ -4125,44 +4160,59 @@
|
|
|
4125
4160
|
}
|
|
4126
4161
|
},
|
|
4127
4162
|
{
|
|
4128
|
-
"search": "
|
|
4163
|
+
"search": "@customElement("sonic-example")\nexport class SonicComponent extends Subscriber(LitElement) {\n @property() text = "Example";\n render() {\n return html${this.text};\n }\n}\n \n\n",
|
|
4129
4164
|
"files": {
|
|
4130
|
-
"docs/
|
|
4131
|
-
"title": "
|
|
4165
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4166
|
+
"title": "Creating components",
|
|
4132
4167
|
"hashes": {
|
|
4133
|
-
"
|
|
4168
|
+
"starting-from-a-simple-model": {
|
|
4134
4169
|
"count": 1,
|
|
4135
|
-
"title": "
|
|
4170
|
+
"title": "Starting from a Simple Model",
|
|
4136
4171
|
"type": "paragraph"
|
|
4137
4172
|
}
|
|
4138
4173
|
}
|
|
4139
|
-
}
|
|
4140
|
-
|
|
4141
|
-
|
|
4174
|
+
}
|
|
4175
|
+
}
|
|
4176
|
+
},
|
|
4177
|
+
{
|
|
4178
|
+
"search": "You can remove the dependency on Subscriber if automatic population of the component with external data is not required.\nFor example, for a UI component:\n",
|
|
4179
|
+
"files": {
|
|
4180
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4181
|
+
"title": "Creating components",
|
|
4142
4182
|
"hashes": {
|
|
4143
|
-
"
|
|
4183
|
+
"starting-from-a-simple-model": {
|
|
4144
4184
|
"count": 1,
|
|
4145
|
-
"title": "
|
|
4185
|
+
"title": "Starting from a Simple Model",
|
|
4146
4186
|
"type": "paragraph"
|
|
4147
4187
|
}
|
|
4148
4188
|
}
|
|
4149
|
-
}
|
|
4150
|
-
|
|
4151
|
-
|
|
4189
|
+
}
|
|
4190
|
+
}
|
|
4191
|
+
},
|
|
4192
|
+
{
|
|
4193
|
+
"search": "@customElement("sonic-example")\nexport class SonicComponent extends LitElement {\n @property() text = "Example";\n render() {\n return html${this.text};\n }\n}\n \n\n",
|
|
4194
|
+
"files": {
|
|
4195
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4196
|
+
"title": "Creating components",
|
|
4152
4197
|
"hashes": {
|
|
4153
|
-
"
|
|
4198
|
+
"starting-from-a-simple-model": {
|
|
4154
4199
|
"count": 1,
|
|
4155
|
-
"title": "
|
|
4200
|
+
"title": "Starting from a Simple Model",
|
|
4156
4201
|
"type": "paragraph"
|
|
4157
4202
|
}
|
|
4158
4203
|
}
|
|
4159
|
-
}
|
|
4160
|
-
|
|
4161
|
-
|
|
4204
|
+
}
|
|
4205
|
+
}
|
|
4206
|
+
},
|
|
4207
|
+
{
|
|
4208
|
+
"search": "Regarding Subscriber, see:\n",
|
|
4209
|
+
"files": {
|
|
4210
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4211
|
+
"title": "Creating components",
|
|
4162
4212
|
"hashes": {
|
|
4163
|
-
"
|
|
4213
|
+
"starting-from-a-simple-model": {
|
|
4164
4214
|
"count": 1,
|
|
4165
|
-
"title": "
|
|
4215
|
+
"title": "Starting from a Simple Model",
|
|
4166
4216
|
"type": "paragraph"
|
|
4167
4217
|
}
|
|
4168
4218
|
}
|
|
@@ -4170,29 +4220,29 @@
|
|
|
4170
4220
|
}
|
|
4171
4221
|
},
|
|
4172
4222
|
{
|
|
4173
|
-
"search": "
|
|
4223
|
+
"search": "The class name is not necessarily important. However, it is important to give it a component name prefixed with "sonic" (or a prefix of your own) using the dedicated metadata already present in the copied document. For example, a button component would be named as follows:\n",
|
|
4174
4224
|
"files": {
|
|
4175
|
-
"docs/
|
|
4176
|
-
"title": "
|
|
4225
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4226
|
+
"title": "Creating components",
|
|
4177
4227
|
"hashes": {
|
|
4178
|
-
"
|
|
4228
|
+
"naming-the-component": {
|
|
4179
4229
|
"count": 1,
|
|
4180
|
-
"title": "",
|
|
4181
|
-
"type": "
|
|
4230
|
+
"title": "Naming the Component",
|
|
4231
|
+
"type": "paragraph"
|
|
4182
4232
|
}
|
|
4183
4233
|
}
|
|
4184
4234
|
}
|
|
4185
4235
|
}
|
|
4186
4236
|
},
|
|
4187
4237
|
{
|
|
4188
|
-
"search": "
|
|
4238
|
+
"search": "For less generic components with a specific destination, we advise to include the destination in the name.\nFor example, for a "title" component in the "event" destination, the name would be simply:\n",
|
|
4189
4239
|
"files": {
|
|
4190
|
-
"docs/
|
|
4191
|
-
"title": "
|
|
4240
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4241
|
+
"title": "Creating components",
|
|
4192
4242
|
"hashes": {
|
|
4193
|
-
"
|
|
4243
|
+
"naming-the-component": {
|
|
4194
4244
|
"count": 1,
|
|
4195
|
-
"title": "",
|
|
4245
|
+
"title": "Naming the Component",
|
|
4196
4246
|
"type": "paragraph"
|
|
4197
4247
|
}
|
|
4198
4248
|
}
|
|
@@ -4200,14 +4250,14 @@
|
|
|
4200
4250
|
}
|
|
4201
4251
|
},
|
|
4202
4252
|
{
|
|
4203
|
-
"search": "
|
|
4253
|
+
"search": "To do this, study the functioning of https://lit.dev and also refer to Subscriber.\n",
|
|
4204
4254
|
"files": {
|
|
4205
|
-
"docs/
|
|
4206
|
-
"title": "
|
|
4255
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4256
|
+
"title": "Creating components",
|
|
4207
4257
|
"hashes": {
|
|
4208
|
-
"
|
|
4258
|
+
"creating-reactive-properties-and-modifying-the-render-function": {
|
|
4209
4259
|
"count": 1,
|
|
4210
|
-
"title": "
|
|
4260
|
+
"title": "Creating Reactive Properties and Modifying the Render Function",
|
|
4211
4261
|
"type": "paragraph"
|
|
4212
4262
|
}
|
|
4213
4263
|
}
|
|
@@ -4215,29 +4265,29 @@
|
|
|
4215
4265
|
}
|
|
4216
4266
|
},
|
|
4217
4267
|
{
|
|
4218
|
-
"search": "
|
|
4268
|
+
"search": "The HTML structure of a component should remain as simple as possible.\n",
|
|
4219
4269
|
"files": {
|
|
4220
|
-
"docs/
|
|
4221
|
-
"title": "
|
|
4270
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4271
|
+
"title": "Creating components",
|
|
4222
4272
|
"hashes": {
|
|
4223
|
-
"
|
|
4273
|
+
"html-structure-of-a-component": {
|
|
4224
4274
|
"count": 1,
|
|
4225
|
-
"title": "",
|
|
4226
|
-
"type": "
|
|
4275
|
+
"title": "HTML Structure of a Component",
|
|
4276
|
+
"type": "paragraph"
|
|
4227
4277
|
}
|
|
4228
4278
|
}
|
|
4229
4279
|
}
|
|
4230
4280
|
}
|
|
4231
4281
|
},
|
|
4232
4282
|
{
|
|
4233
|
-
"search": "
|
|
4283
|
+
"search": "Ideally, there should be only one additional level of elements in addition to slots.\n",
|
|
4234
4284
|
"files": {
|
|
4235
|
-
"docs/
|
|
4236
|
-
"title": "
|
|
4285
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4286
|
+
"title": "Creating components",
|
|
4237
4287
|
"hashes": {
|
|
4238
|
-
"
|
|
4288
|
+
"html-structure-of-a-component": {
|
|
4239
4289
|
"count": 1,
|
|
4240
|
-
"title": "",
|
|
4290
|
+
"title": "HTML Structure of a Component",
|
|
4241
4291
|
"type": "paragraph"
|
|
4242
4292
|
}
|
|
4243
4293
|
}
|
|
@@ -4245,14 +4295,14 @@
|
|
|
4245
4295
|
}
|
|
4246
4296
|
},
|
|
4247
4297
|
{
|
|
4248
|
-
"search": "
|
|
4298
|
+
"search": "This leads to the creation of more components and thus raises questions about the hierarchical organization of files. However, this tends to atomize their roles.\n",
|
|
4249
4299
|
"files": {
|
|
4250
|
-
"docs/
|
|
4251
|
-
"title": "
|
|
4300
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4301
|
+
"title": "Creating components",
|
|
4252
4302
|
"hashes": {
|
|
4253
|
-
"
|
|
4303
|
+
"html-structure-of-a-component": {
|
|
4254
4304
|
"count": 1,
|
|
4255
|
-
"title": "",
|
|
4305
|
+
"title": "HTML Structure of a Component",
|
|
4256
4306
|
"type": "paragraph"
|
|
4257
4307
|
}
|
|
4258
4308
|
}
|
|
@@ -4260,14 +4310,14 @@
|
|
|
4260
4310
|
}
|
|
4261
4311
|
},
|
|
4262
4312
|
{
|
|
4263
|
-
"search": "
|
|
4313
|
+
"search": "To compile the component, it needs to be referenced somewhere through an import statement. In particular, it is important to reference it in any component that uses it.\n",
|
|
4264
4314
|
"files": {
|
|
4265
|
-
"docs/
|
|
4266
|
-
"title": "
|
|
4315
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4316
|
+
"title": "Creating components",
|
|
4267
4317
|
"hashes": {
|
|
4268
|
-
"
|
|
4318
|
+
"referencing-it": {
|
|
4269
4319
|
"count": 1,
|
|
4270
|
-
"title": "
|
|
4320
|
+
"title": "Referencing It",
|
|
4271
4321
|
"type": "paragraph"
|
|
4272
4322
|
}
|
|
4273
4323
|
}
|
|
@@ -4275,14 +4325,14 @@
|
|
|
4275
4325
|
}
|
|
4276
4326
|
},
|
|
4277
4327
|
{
|
|
4278
|
-
"search": "
|
|
4328
|
+
"search": "In the case where it can be directly used in a page, it should also be globally referenced, especially considering the creation of specific bundles in the future.\n",
|
|
4279
4329
|
"files": {
|
|
4280
|
-
"docs/
|
|
4281
|
-
"title": "
|
|
4330
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4331
|
+
"title": "Creating components",
|
|
4282
4332
|
"hashes": {
|
|
4283
|
-
"
|
|
4333
|
+
"referencing-it": {
|
|
4284
4334
|
"count": 1,
|
|
4285
|
-
"title": "
|
|
4335
|
+
"title": "Referencing It",
|
|
4286
4336
|
"type": "paragraph"
|
|
4287
4337
|
}
|
|
4288
4338
|
}
|
|
@@ -4290,24 +4340,29 @@
|
|
|
4290
4340
|
}
|
|
4291
4341
|
},
|
|
4292
4342
|
{
|
|
4293
|
-
"search": "
|
|
4343
|
+
"search": "Here's where we add imports based on the component's location inside concorde as an example\n",
|
|
4294
4344
|
"files": {
|
|
4295
|
-
"docs/
|
|
4296
|
-
"title": "
|
|
4345
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4346
|
+
"title": "Creating components",
|
|
4297
4347
|
"hashes": {
|
|
4298
|
-
"
|
|
4348
|
+
"referencing-it": {
|
|
4299
4349
|
"count": 1,
|
|
4300
|
-
"title": "
|
|
4350
|
+
"title": "Referencing It",
|
|
4301
4351
|
"type": "paragraph"
|
|
4302
4352
|
}
|
|
4303
4353
|
}
|
|
4304
|
-
}
|
|
4305
|
-
|
|
4306
|
-
|
|
4354
|
+
}
|
|
4355
|
+
}
|
|
4356
|
+
},
|
|
4357
|
+
{
|
|
4358
|
+
"search": "As a reminder, the component is simply integrated into the context by adding a tag with the component's name, for example:\n",
|
|
4359
|
+
"files": {
|
|
4360
|
+
"docs/_getting-started/create-a-component.md": {
|
|
4361
|
+
"title": "Creating components",
|
|
4307
4362
|
"hashes": {
|
|
4308
|
-
"
|
|
4363
|
+
"using-it": {
|
|
4309
4364
|
"count": 1,
|
|
4310
|
-
"title": "
|
|
4365
|
+
"title": "Using It",
|
|
4311
4366
|
"type": "paragraph"
|
|
4312
4367
|
}
|
|
4313
4368
|
}
|
|
@@ -4315,14 +4370,29 @@
|
|
|
4315
4370
|
}
|
|
4316
4371
|
},
|
|
4317
4372
|
{
|
|
4318
|
-
"search": "
|
|
4373
|
+
"search": "My first subscriber component",
|
|
4319
4374
|
"files": {
|
|
4320
|
-
"docs/
|
|
4321
|
-
"title": "
|
|
4375
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4376
|
+
"title": "My first subscriber component",
|
|
4322
4377
|
"hashes": {
|
|
4323
|
-
"
|
|
4378
|
+
"my-first-subscriber-component": {
|
|
4324
4379
|
"count": 1,
|
|
4325
|
-
"title": "
|
|
4380
|
+
"title": "",
|
|
4381
|
+
"type": "page"
|
|
4382
|
+
}
|
|
4383
|
+
}
|
|
4384
|
+
}
|
|
4385
|
+
}
|
|
4386
|
+
},
|
|
4387
|
+
{
|
|
4388
|
+
"search": "Learn how to build a subscriber component, styled with tailwind, \nwhich could be used as a regular component or could be filled from a dataprovider.\n",
|
|
4389
|
+
"files": {
|
|
4390
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4391
|
+
"title": "My first subscriber component",
|
|
4392
|
+
"hashes": {
|
|
4393
|
+
"my-first-subscriber-component": {
|
|
4394
|
+
"count": 1,
|
|
4395
|
+
"title": "",
|
|
4326
4396
|
"type": "paragraph"
|
|
4327
4397
|
}
|
|
4328
4398
|
}
|
|
@@ -4330,14 +4400,14 @@
|
|
|
4330
4400
|
}
|
|
4331
4401
|
},
|
|
4332
4402
|
{
|
|
4333
|
-
"search": "
|
|
4403
|
+
"search": "First export tailwind, in a tailwind.ts file, stylesheet to add it in our component when needed.\n",
|
|
4334
4404
|
"files": {
|
|
4335
|
-
"docs/
|
|
4336
|
-
"title": "
|
|
4405
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4406
|
+
"title": "My first subscriber component",
|
|
4337
4407
|
"hashes": {
|
|
4338
|
-
"
|
|
4408
|
+
"style-with-tailwind-and-ui-components": {
|
|
4339
4409
|
"count": 1,
|
|
4340
|
-
"title": "
|
|
4410
|
+
"title": "Style with tailwind and ui components",
|
|
4341
4411
|
"type": "paragraph"
|
|
4342
4412
|
}
|
|
4343
4413
|
}
|
|
@@ -4345,14 +4415,14 @@
|
|
|
4345
4415
|
}
|
|
4346
4416
|
},
|
|
4347
4417
|
{
|
|
4348
|
-
"search": "
|
|
4418
|
+
"search": "Reactive properties can be filled by its attributes as a simple lit component.\n",
|
|
4349
4419
|
"files": {
|
|
4350
|
-
"docs/
|
|
4351
|
-
"title": "
|
|
4420
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4421
|
+
"title": "My first subscriber component",
|
|
4352
4422
|
"hashes": {
|
|
4353
|
-
"
|
|
4423
|
+
"basic-usage": {
|
|
4354
4424
|
"count": 1,
|
|
4355
|
-
"title": "
|
|
4425
|
+
"title": "Basic usage",
|
|
4356
4426
|
"type": "paragraph"
|
|
4357
4427
|
}
|
|
4358
4428
|
}
|
|
@@ -4360,14 +4430,14 @@
|
|
|
4360
4430
|
}
|
|
4361
4431
|
},
|
|
4362
4432
|
{
|
|
4363
|
-
"search": "
|
|
4433
|
+
"search": "Import Subscriber mixin, and add it around LitElement.\n\n",
|
|
4364
4434
|
"files": {
|
|
4365
|
-
"docs/
|
|
4366
|
-
"title": "
|
|
4435
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4436
|
+
"title": "My first subscriber component",
|
|
4367
4437
|
"hashes": {
|
|
4368
|
-
"
|
|
4438
|
+
"add-subscriber-mixin": {
|
|
4369
4439
|
"count": 1,
|
|
4370
|
-
"title": "
|
|
4440
|
+
"title": "Add Subscriber mixin",
|
|
4371
4441
|
"type": "paragraph"
|
|
4372
4442
|
}
|
|
4373
4443
|
}
|
|
@@ -4375,14 +4445,14 @@
|
|
|
4375
4445
|
}
|
|
4376
4446
|
},
|
|
4377
4447
|
{
|
|
4378
|
-
"search": "
|
|
4448
|
+
"search": "Without a dataProvider attribute, a subscriber set its own dataprovider from first ancestor found, and then reactive properties automatically filled and update from it.\nA fetcher is a simple component which set its fetch result to props of its dataprovider.\n\n",
|
|
4379
4449
|
"files": {
|
|
4380
|
-
"docs/
|
|
4381
|
-
"title": "
|
|
4450
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4451
|
+
"title": "My first subscriber component",
|
|
4382
4452
|
"hashes": {
|
|
4383
|
-
"
|
|
4453
|
+
"autofill-properties-from-a-dataprovider": {
|
|
4384
4454
|
"count": 1,
|
|
4385
|
-
"title": "
|
|
4455
|
+
"title": "Autofill properties from a dataProvider",
|
|
4386
4456
|
"type": "paragraph"
|
|
4387
4457
|
}
|
|
4388
4458
|
}
|
|
@@ -4390,14 +4460,14 @@
|
|
|
4390
4460
|
}
|
|
4391
4461
|
},
|
|
4392
4462
|
{
|
|
4393
|
-
"search": "
|
|
4463
|
+
"search": "A subscriber can subscribe data from anywhere in the DOM, with its dataprovider set as a provider id.\n",
|
|
4394
4464
|
"files": {
|
|
4395
|
-
"docs/
|
|
4396
|
-
"title": "
|
|
4465
|
+
"docs/_getting-started/my-first-subscriber.md": {
|
|
4466
|
+
"title": "My first subscriber component",
|
|
4397
4467
|
"hashes": {
|
|
4398
|
-
"
|
|
4468
|
+
"autofill-properties-from-a-dataprovider": {
|
|
4399
4469
|
"count": 1,
|
|
4400
|
-
"title": "
|
|
4470
|
+
"title": "Autofill properties from a dataProvider",
|
|
4401
4471
|
"type": "paragraph"
|
|
4402
4472
|
}
|
|
4403
4473
|
}
|
|
@@ -4405,24 +4475,44 @@
|
|
|
4405
4475
|
}
|
|
4406
4476
|
},
|
|
4407
4477
|
{
|
|
4408
|
-
"search": "
|
|
4478
|
+
"search": "Sharing data",
|
|
4409
4479
|
"files": {
|
|
4410
|
-
"docs/
|
|
4411
|
-
"title": "
|
|
4480
|
+
"docs/_getting-started/pubsub.md": {
|
|
4481
|
+
"title": "Sharing data",
|
|
4412
4482
|
"hashes": {
|
|
4413
|
-
"
|
|
4483
|
+
"sharing-data": {
|
|
4414
4484
|
"count": 1,
|
|
4415
|
-
"title": "
|
|
4485
|
+
"title": "",
|
|
4486
|
+
"type": "page"
|
|
4487
|
+
}
|
|
4488
|
+
}
|
|
4489
|
+
}
|
|
4490
|
+
}
|
|
4491
|
+
},
|
|
4492
|
+
{
|
|
4493
|
+
"search": "This section describes how we share data between graphical and non graphical components and classes.\n",
|
|
4494
|
+
"files": {
|
|
4495
|
+
"docs/_getting-started/pubsub.md": {
|
|
4496
|
+
"title": "Sharing data",
|
|
4497
|
+
"hashes": {
|
|
4498
|
+
"sharing-data": {
|
|
4499
|
+
"count": 1,
|
|
4500
|
+
"title": "",
|
|
4416
4501
|
"type": "paragraph"
|
|
4417
4502
|
}
|
|
4418
4503
|
}
|
|
4419
|
-
}
|
|
4420
|
-
|
|
4421
|
-
|
|
4504
|
+
}
|
|
4505
|
+
}
|
|
4506
|
+
},
|
|
4507
|
+
{
|
|
4508
|
+
"search": "Especialy, graphical components should not reference each other in order to remain decoupled.\n",
|
|
4509
|
+
"files": {
|
|
4510
|
+
"docs/_getting-started/pubsub.md": {
|
|
4511
|
+
"title": "Sharing data",
|
|
4422
4512
|
"hashes": {
|
|
4423
|
-
"
|
|
4513
|
+
"sharing-data": {
|
|
4424
4514
|
"count": 1,
|
|
4425
|
-
"title": "
|
|
4515
|
+
"title": "",
|
|
4426
4516
|
"type": "paragraph"
|
|
4427
4517
|
}
|
|
4428
4518
|
}
|
|
@@ -4430,14 +4520,14 @@
|
|
|
4430
4520
|
}
|
|
4431
4521
|
},
|
|
4432
4522
|
{
|
|
4433
|
-
"search": "
|
|
4523
|
+
"search": "Thats why we use publish/subscribe paradigm to addresse this issue.\n",
|
|
4434
4524
|
"files": {
|
|
4435
|
-
"docs/
|
|
4436
|
-
"title": "
|
|
4525
|
+
"docs/_getting-started/pubsub.md": {
|
|
4526
|
+
"title": "Sharing data",
|
|
4437
4527
|
"hashes": {
|
|
4438
|
-
"
|
|
4528
|
+
"sharing-data": {
|
|
4439
4529
|
"count": 1,
|
|
4440
|
-
"title": "
|
|
4530
|
+
"title": "",
|
|
4441
4531
|
"type": "paragraph"
|
|
4442
4532
|
}
|
|
4443
4533
|
}
|
|
@@ -4445,14 +4535,14 @@
|
|
|
4445
4535
|
}
|
|
4446
4536
|
},
|
|
4447
4537
|
{
|
|
4448
|
-
"search": "
|
|
4538
|
+
"search": "❇️ The order of data creation and subscription theoretically has no importance.\n",
|
|
4449
4539
|
"files": {
|
|
4450
|
-
"docs/
|
|
4451
|
-
"title": "
|
|
4540
|
+
"docs/_getting-started/pubsub.md": {
|
|
4541
|
+
"title": "Sharing data",
|
|
4452
4542
|
"hashes": {
|
|
4453
|
-
"
|
|
4543
|
+
"principle": {
|
|
4454
4544
|
"count": 1,
|
|
4455
|
-
"title": "
|
|
4545
|
+
"title": "Principle",
|
|
4456
4546
|
"type": "paragraph"
|
|
4457
4547
|
}
|
|
4458
4548
|
}
|
|
@@ -4460,14 +4550,14 @@
|
|
|
4460
4550
|
}
|
|
4461
4551
|
},
|
|
4462
4552
|
{
|
|
4463
|
-
"search": "
|
|
4553
|
+
"search": "Denotes the identifier of a publisher as referenced in the PublisherManager (see below).\nUses the dataProvider attribut in html tags to scop the content with some data.\nsee Subscribers.\n",
|
|
4464
4554
|
"files": {
|
|
4465
|
-
"docs/
|
|
4466
|
-
"title": "
|
|
4555
|
+
"docs/_getting-started/pubsub.md": {
|
|
4556
|
+
"title": "Sharing data",
|
|
4467
4557
|
"hashes": {
|
|
4468
|
-
"
|
|
4558
|
+
"dataprovider": {
|
|
4469
4559
|
"count": 1,
|
|
4470
|
-
"title": "
|
|
4560
|
+
"title": "DataProvider",
|
|
4471
4561
|
"type": "paragraph"
|
|
4472
4562
|
}
|
|
4473
4563
|
}
|
|
@@ -4475,14 +4565,14 @@
|
|
|
4475
4565
|
}
|
|
4476
4566
|
},
|
|
4477
4567
|
{
|
|
4478
|
-
"search": "
|
|
4568
|
+
"search": "The PublisherManager is a utility class to get publishers\n",
|
|
4479
4569
|
"files": {
|
|
4480
|
-
"docs/
|
|
4481
|
-
"title": "
|
|
4570
|
+
"docs/_getting-started/pubsub.md": {
|
|
4571
|
+
"title": "Sharing data",
|
|
4482
4572
|
"hashes": {
|
|
4483
|
-
"
|
|
4573
|
+
"publishermanager": {
|
|
4484
4574
|
"count": 1,
|
|
4485
|
-
"title": "
|
|
4575
|
+
"title": "PublisherManager",
|
|
4486
4576
|
"type": "paragraph"
|
|
4487
4577
|
}
|
|
4488
4578
|
}
|
|
@@ -4490,54 +4580,89 @@
|
|
|
4490
4580
|
}
|
|
4491
4581
|
},
|
|
4492
4582
|
{
|
|
4493
|
-
"search": "
|
|
4583
|
+
"search": "It plays a central role in the components, especially through the "subscriber" mixin.\nAutomatic data communication between components in concorde uses this principle in conjunction with Lit's reactive properties. \nRefer to the documentation for Subscriber.\n",
|
|
4494
4584
|
"files": {
|
|
4495
|
-
"docs/
|
|
4496
|
-
"title": "
|
|
4585
|
+
"docs/_getting-started/pubsub.md": {
|
|
4586
|
+
"title": "Sharing data",
|
|
4497
4587
|
"hashes": {
|
|
4498
|
-
"
|
|
4588
|
+
"publishermanager": {
|
|
4499
4589
|
"count": 1,
|
|
4500
|
-
"title": "
|
|
4590
|
+
"title": "PublisherManager",
|
|
4501
4591
|
"type": "paragraph"
|
|
4502
4592
|
}
|
|
4503
4593
|
}
|
|
4504
|
-
}
|
|
4505
|
-
|
|
4506
|
-
|
|
4594
|
+
}
|
|
4595
|
+
}
|
|
4596
|
+
},
|
|
4597
|
+
{
|
|
4598
|
+
"search": "It is declared on the window object to allow usage in a web page, so the equivalent one-liner would be:\n",
|
|
4599
|
+
"files": {
|
|
4600
|
+
"docs/_getting-started/pubsub.md": {
|
|
4601
|
+
"title": "Sharing data",
|
|
4602
|
+
"hashes": {
|
|
4603
|
+
"publishermanager": {
|
|
4604
|
+
"count": 1,
|
|
4605
|
+
"title": "PublisherManager",
|
|
4606
|
+
"type": "paragraph"
|
|
4607
|
+
}
|
|
4608
|
+
}
|
|
4609
|
+
}
|
|
4610
|
+
}
|
|
4611
|
+
},
|
|
4612
|
+
{
|
|
4613
|
+
"search": "This example can be tested in a console when Concorde is loaded on the page (for example, in a ticketing system).\nIn a component, you will need to perform an import as explained earlier.\n",
|
|
4614
|
+
"files": {
|
|
4615
|
+
"docs/_getting-started/pubsub.md": {
|
|
4616
|
+
"title": "Sharing data",
|
|
4617
|
+
"hashes": {
|
|
4618
|
+
"basic-example": {
|
|
4619
|
+
"count": 1,
|
|
4620
|
+
"title": "Basic Example",
|
|
4621
|
+
"type": "paragraph"
|
|
4622
|
+
}
|
|
4623
|
+
}
|
|
4624
|
+
}
|
|
4625
|
+
}
|
|
4626
|
+
},
|
|
4627
|
+
{
|
|
4628
|
+
"search": "Introduction",
|
|
4629
|
+
"files": {
|
|
4630
|
+
"docs/_getting-started/start.md": {
|
|
4631
|
+
"title": "Introduction",
|
|
4507
4632
|
"hashes": {
|
|
4508
|
-
"
|
|
4633
|
+
"introduction": {
|
|
4509
4634
|
"count": 1,
|
|
4510
|
-
"title": "
|
|
4511
|
-
"type": "
|
|
4635
|
+
"title": "",
|
|
4636
|
+
"type": "page"
|
|
4512
4637
|
}
|
|
4513
4638
|
}
|
|
4514
4639
|
}
|
|
4515
4640
|
}
|
|
4516
4641
|
},
|
|
4517
4642
|
{
|
|
4518
|
-
"search": "
|
|
4643
|
+
"search": "Based on lit.dev, Concorde is a collection of webcomponents made to build shared apps or websites.Develop user interfaces without thinking about the implementation context, where everything is scoped, but preserving graphic consistency by setting the strict minimum of css variables.\n",
|
|
4519
4644
|
"files": {
|
|
4520
|
-
"docs/
|
|
4521
|
-
"title": "
|
|
4645
|
+
"docs/_getting-started/start.md": {
|
|
4646
|
+
"title": "Introduction",
|
|
4522
4647
|
"hashes": {
|
|
4523
|
-
"
|
|
4648
|
+
"what-is-concorde-": {
|
|
4524
4649
|
"count": 1,
|
|
4525
|
-
"title": "",
|
|
4526
|
-
"type": "
|
|
4650
|
+
"title": "What is Concorde ?",
|
|
4651
|
+
"type": "paragraph"
|
|
4527
4652
|
}
|
|
4528
4653
|
}
|
|
4529
4654
|
}
|
|
4530
4655
|
}
|
|
4531
4656
|
},
|
|
4532
4657
|
{
|
|
4533
|
-
"search": "
|
|
4658
|
+
"search": "In 2022, Supersoniks wanted to create a new version of his ticketing app, in production un nearly 100 websites. We needed shared components which could be implemented in mobile apps, modern websites, and also old ones made in php, without bundlers or whatever.Instead of building a new app for each type of project, which would become impossible to maintain, we've decided to create one app, composed by a few webcomponents wich could easily be recomposed on any website.\nWebcomponents appeared to be a the perfect solution to guarantee that compatibility with all past, present and futures environment, and lit seemed to be the best choice to build them.\n",
|
|
4534
4659
|
"files": {
|
|
4535
|
-
"docs/
|
|
4536
|
-
"title": "
|
|
4660
|
+
"docs/_getting-started/start.md": {
|
|
4661
|
+
"title": "Introduction",
|
|
4537
4662
|
"hashes": {
|
|
4538
|
-
"
|
|
4663
|
+
"why-and-use-case": {
|
|
4539
4664
|
"count": 1,
|
|
4540
|
-
"title": "",
|
|
4665
|
+
"title": "Why and use case",
|
|
4541
4666
|
"type": "paragraph"
|
|
4542
4667
|
}
|
|
4543
4668
|
}
|
|
@@ -4545,14 +4670,14 @@
|
|
|
4545
4670
|
}
|
|
4546
4671
|
},
|
|
4547
4672
|
{
|
|
4548
|
-
"search": "
|
|
4673
|
+
"search": "A new project with Vite, Typescript and Tailwind already configured and a simple example of a subscriber component : \n",
|
|
4549
4674
|
"files": {
|
|
4550
|
-
"docs/
|
|
4551
|
-
"title": "
|
|
4675
|
+
"docs/_getting-started/start.md": {
|
|
4676
|
+
"title": "Introduction",
|
|
4552
4677
|
"hashes": {
|
|
4553
|
-
"
|
|
4678
|
+
"start-a-new-project-easily": {
|
|
4554
4679
|
"count": 1,
|
|
4555
|
-
"title": "
|
|
4680
|
+
"title": "Start a new project easily",
|
|
4556
4681
|
"type": "paragraph"
|
|
4557
4682
|
}
|
|
4558
4683
|
}
|
|
@@ -4560,29 +4685,29 @@
|
|
|
4560
4685
|
}
|
|
4561
4686
|
},
|
|
4562
4687
|
{
|
|
4563
|
-
"search": "
|
|
4688
|
+
"search": "Adding styles",
|
|
4564
4689
|
"files": {
|
|
4565
|
-
"docs/
|
|
4566
|
-
"title": "
|
|
4690
|
+
"docs/_getting-started/theming.md": {
|
|
4691
|
+
"title": "Adding styles",
|
|
4567
4692
|
"hashes": {
|
|
4568
|
-
"
|
|
4693
|
+
"adding-styles": {
|
|
4569
4694
|
"count": 1,
|
|
4570
|
-
"title": "
|
|
4571
|
-
"type": "
|
|
4695
|
+
"title": "",
|
|
4696
|
+
"type": "page"
|
|
4572
4697
|
}
|
|
4573
4698
|
}
|
|
4574
4699
|
}
|
|
4575
4700
|
}
|
|
4576
4701
|
},
|
|
4577
4702
|
{
|
|
4578
|
-
"search": "
|
|
4703
|
+
"search": "No style crosses the shadow root of a component, except for inheritable properties (which have the "inherit" property possible) and CSS variables.\nProperties integrated via a "slot" remain stylizable in a conventional way.\n",
|
|
4579
4704
|
"files": {
|
|
4580
|
-
"docs/
|
|
4581
|
-
"title": "
|
|
4705
|
+
"docs/_getting-started/theming.md": {
|
|
4706
|
+
"title": "Adding styles",
|
|
4582
4707
|
"hashes": {
|
|
4583
|
-
"
|
|
4708
|
+
"normal-behavior": {
|
|
4584
4709
|
"count": 1,
|
|
4585
|
-
"title": "
|
|
4710
|
+
"title": "Normal Behavior",
|
|
4586
4711
|
"type": "paragraph"
|
|
4587
4712
|
}
|
|
4588
4713
|
}
|
|
@@ -4590,14 +4715,14 @@
|
|
|
4590
4715
|
}
|
|
4591
4716
|
},
|
|
4592
4717
|
{
|
|
4593
|
-
"search": "
|
|
4718
|
+
"search": "The declaration of reactive properties is useful for selecting a particular configuration that mostly affects a set of properties.\n",
|
|
4594
4719
|
"files": {
|
|
4595
|
-
"docs/
|
|
4596
|
-
"title": "
|
|
4720
|
+
"docs/_getting-started/theming.md": {
|
|
4721
|
+
"title": "Adding styles",
|
|
4597
4722
|
"hashes": {
|
|
4598
|
-
"
|
|
4723
|
+
"choosing-style-presets-via-reactive-properties": {
|
|
4599
4724
|
"count": 1,
|
|
4600
|
-
"title": "
|
|
4725
|
+
"title": "Choosing Style Presets via Reactive Properties:",
|
|
4601
4726
|
"type": "paragraph"
|
|
4602
4727
|
}
|
|
4603
4728
|
}
|
|
@@ -4605,14 +4730,14 @@
|
|
|
4605
4730
|
}
|
|
4606
4731
|
},
|
|
4607
4732
|
{
|
|
4608
|
-
"search": "
|
|
4733
|
+
"search": "For example, a size property (xs, sm, md, xl) will affect margins, font, line heights to align them with the corresponding CSS vars, which can be customized using the methods mentioned earlier if necessary.\n",
|
|
4609
4734
|
"files": {
|
|
4610
|
-
"docs/
|
|
4611
|
-
"title": "
|
|
4735
|
+
"docs/_getting-started/theming.md": {
|
|
4736
|
+
"title": "Adding styles",
|
|
4612
4737
|
"hashes": {
|
|
4613
|
-
"
|
|
4738
|
+
"choosing-style-presets-via-reactive-properties": {
|
|
4614
4739
|
"count": 1,
|
|
4615
|
-
"title": "
|
|
4740
|
+
"title": "Choosing Style Presets via Reactive Properties:",
|
|
4616
4741
|
"type": "paragraph"
|
|
4617
4742
|
}
|
|
4618
4743
|
}
|
|
@@ -4620,14 +4745,14 @@
|
|
|
4620
4745
|
}
|
|
4621
4746
|
},
|
|
4622
4747
|
{
|
|
4623
|
-
"search": "
|
|
4748
|
+
"search": "It is recommended to use the {reflect: true} property for reactive properties that have an associated style on the :host(). For example: :host([type='primary']){...}\n",
|
|
4624
4749
|
"files": {
|
|
4625
|
-
"docs/
|
|
4626
|
-
"title": "
|
|
4750
|
+
"docs/_getting-started/theming.md": {
|
|
4751
|
+
"title": "Adding styles",
|
|
4627
4752
|
"hashes": {
|
|
4628
|
-
"
|
|
4753
|
+
"choosing-style-presets-via-reactive-properties": {
|
|
4629
4754
|
"count": 1,
|
|
4630
|
-
"title": "
|
|
4755
|
+
"title": "Choosing Style Presets via Reactive Properties:",
|
|
4631
4756
|
"type": "paragraph"
|
|
4632
4757
|
}
|
|
4633
4758
|
}
|
|
@@ -4635,14 +4760,14 @@
|
|
|
4635
4760
|
}
|
|
4636
4761
|
},
|
|
4637
4762
|
{
|
|
4638
|
-
"search": "
|
|
4763
|
+
"search": "☢️ Caution: Passing class names via reactive properties / HTML attributes of the component should be avoided as it can quickly lead to difficult-to-manage situations.\n",
|
|
4639
4764
|
"files": {
|
|
4640
|
-
"docs/
|
|
4641
|
-
"title": "
|
|
4765
|
+
"docs/_getting-started/theming.md": {
|
|
4766
|
+
"title": "Adding styles",
|
|
4642
4767
|
"hashes": {
|
|
4643
|
-
"
|
|
4768
|
+
"choosing-style-presets-via-reactive-properties": {
|
|
4644
4769
|
"count": 1,
|
|
4645
|
-
"title": "
|
|
4770
|
+
"title": "Choosing Style Presets via Reactive Properties:",
|
|
4646
4771
|
"type": "paragraph"
|
|
4647
4772
|
}
|
|
4648
4773
|
}
|
|
@@ -4650,14 +4775,14 @@
|
|
|
4650
4775
|
}
|
|
4651
4776
|
},
|
|
4652
4777
|
{
|
|
4653
|
-
"search": "
|
|
4778
|
+
"search": "By default, the display property is inline.\nTherefore, be careful to define it according to the needs, as one might mistakenly expect it to be block as with a regular <div>.\n",
|
|
4654
4779
|
"files": {
|
|
4655
|
-
"docs/
|
|
4656
|
-
"title": "
|
|
4780
|
+
"docs/_getting-started/theming.md": {
|
|
4781
|
+
"title": "Adding styles",
|
|
4657
4782
|
"hashes": {
|
|
4658
|
-
"
|
|
4783
|
+
"css-display-property": {
|
|
4659
4784
|
"count": 1,
|
|
4660
|
-
"title": "
|
|
4785
|
+
"title": "CSS \"display\" Property",
|
|
4661
4786
|
"type": "paragraph"
|
|
4662
4787
|
}
|
|
4663
4788
|
}
|
|
@@ -4665,14 +4790,14 @@
|
|
|
4665
4790
|
}
|
|
4666
4791
|
},
|
|
4667
4792
|
{
|
|
4668
|
-
"search": "
|
|
4793
|
+
"search": "☢️ Caution: Defining the display property as contents may seem attractive at first, but:\n",
|
|
4669
4794
|
"files": {
|
|
4670
|
-
"docs/
|
|
4671
|
-
"title": "
|
|
4795
|
+
"docs/_getting-started/theming.md": {
|
|
4796
|
+
"title": "Adding styles",
|
|
4672
4797
|
"hashes": {
|
|
4673
|
-
"
|
|
4798
|
+
"css-display-property": {
|
|
4674
4799
|
"count": 1,
|
|
4675
|
-
"title": "
|
|
4800
|
+
"title": "CSS \"display\" Property",
|
|
4676
4801
|
"type": "paragraph"
|
|
4677
4802
|
}
|
|
4678
4803
|
}
|
|
@@ -4680,14 +4805,14 @@
|
|
|
4680
4805
|
}
|
|
4681
4806
|
},
|
|
4682
4807
|
{
|
|
4683
|
-
"search": "
|
|
4808
|
+
"search": "tailwind has been integrated into Concorde and is available in scoped components (with Shadow DOM).\nTo use it, you need to import the following:\n",
|
|
4684
4809
|
"files": {
|
|
4685
|
-
"docs/
|
|
4686
|
-
"title": "
|
|
4810
|
+
"docs/_getting-started/theming.md": {
|
|
4811
|
+
"title": "Adding styles",
|
|
4687
4812
|
"hashes": {
|
|
4688
|
-
"
|
|
4813
|
+
"tailwind-functional-classes": {
|
|
4689
4814
|
"count": 1,
|
|
4690
|
-
"title": "
|
|
4815
|
+
"title": "TAILWIND Functional Classes",
|
|
4691
4816
|
"type": "paragraph"
|
|
4692
4817
|
}
|
|
4693
4818
|
}
|
|
@@ -4695,14 +4820,14 @@
|
|
|
4695
4820
|
}
|
|
4696
4821
|
},
|
|
4697
4822
|
{
|
|
4698
|
-
"search": "
|
|
4823
|
+
"search": "Then include the tailwind style in the static styles property of the component:\n",
|
|
4699
4824
|
"files": {
|
|
4700
|
-
"docs/
|
|
4701
|
-
"title": "
|
|
4825
|
+
"docs/_getting-started/theming.md": {
|
|
4826
|
+
"title": "Adding styles",
|
|
4702
4827
|
"hashes": {
|
|
4703
|
-
"
|
|
4828
|
+
"tailwind-functional-classes": {
|
|
4704
4829
|
"count": 1,
|
|
4705
|
-
"title": "
|
|
4830
|
+
"title": "TAILWIND Functional Classes",
|
|
4706
4831
|
"type": "paragraph"
|
|
4707
4832
|
}
|
|
4708
4833
|
}
|
|
@@ -4710,29 +4835,29 @@
|
|
|
4710
4835
|
}
|
|
4711
4836
|
},
|
|
4712
4837
|
{
|
|
4713
|
-
"search": "
|
|
4838
|
+
"search": "Finally, use it in the HTML within the render function:\n",
|
|
4714
4839
|
"files": {
|
|
4715
|
-
"docs/
|
|
4716
|
-
"title": "
|
|
4840
|
+
"docs/_getting-started/theming.md": {
|
|
4841
|
+
"title": "Adding styles",
|
|
4717
4842
|
"hashes": {
|
|
4718
|
-
"
|
|
4843
|
+
"tailwind-functional-classes": {
|
|
4719
4844
|
"count": 1,
|
|
4720
|
-
"title": "",
|
|
4721
|
-
"type": "
|
|
4845
|
+
"title": "TAILWIND Functional Classes",
|
|
4846
|
+
"type": "paragraph"
|
|
4722
4847
|
}
|
|
4723
4848
|
}
|
|
4724
4849
|
}
|
|
4725
4850
|
}
|
|
4726
4851
|
},
|
|
4727
4852
|
{
|
|
4728
|
-
"search": "The
|
|
4853
|
+
"search": "The colors from Concorde's theme are referenced in Tailwind's theme.\n",
|
|
4729
4854
|
"files": {
|
|
4730
|
-
"docs/
|
|
4731
|
-
"title": "
|
|
4855
|
+
"docs/_getting-started/theming.md": {
|
|
4856
|
+
"title": "Adding styles",
|
|
4732
4857
|
"hashes": {
|
|
4733
|
-
"
|
|
4858
|
+
"tailwind-functional-classes": {
|
|
4734
4859
|
"count": 1,
|
|
4735
|
-
"title": "",
|
|
4860
|
+
"title": "TAILWIND Functional Classes",
|
|
4736
4861
|
"type": "paragraph"
|
|
4737
4862
|
}
|
|
4738
4863
|
}
|
|
@@ -4740,14 +4865,14 @@
|
|
|
4740
4865
|
}
|
|
4741
4866
|
},
|
|
4742
4867
|
{
|
|
4743
|
-
"search": "This
|
|
4868
|
+
"search": "This operation is particularly useful when it comes to adding behavior to a simple existing element.\nIt may also become necessary to establish compatibility with a traditional JS library.\n",
|
|
4744
4869
|
"files": {
|
|
4745
|
-
"docs/
|
|
4746
|
-
"title": "
|
|
4870
|
+
"docs/_getting-started/theming.md": {
|
|
4871
|
+
"title": "Adding styles",
|
|
4747
4872
|
"hashes": {
|
|
4748
|
-
"
|
|
4873
|
+
"usefulness": {
|
|
4749
4874
|
"count": 1,
|
|
4750
|
-
"title": "
|
|
4875
|
+
"title": "Usefulness",
|
|
4751
4876
|
"type": "paragraph"
|
|
4752
4877
|
}
|
|
4753
4878
|
}
|
|
@@ -4755,14 +4880,14 @@
|
|
|
4755
4880
|
}
|
|
4756
4881
|
},
|
|
4757
4882
|
{
|
|
4758
|
-
"search": "
|
|
4883
|
+
"search": "For example, with a text input:\n",
|
|
4759
4884
|
"files": {
|
|
4760
|
-
"docs/
|
|
4761
|
-
"title": "
|
|
4885
|
+
"docs/_getting-started/theming.md": {
|
|
4886
|
+
"title": "Adding styles",
|
|
4762
4887
|
"hashes": {
|
|
4763
|
-
"
|
|
4888
|
+
"usefulness": {
|
|
4764
4889
|
"count": 1,
|
|
4765
|
-
"title": "
|
|
4890
|
+
"title": "Usefulness",
|
|
4766
4891
|
"type": "paragraph"
|
|
4767
4892
|
}
|
|
4768
4893
|
}
|
|
@@ -4770,14 +4895,14 @@
|
|
|
4770
4895
|
}
|
|
4771
4896
|
},
|
|
4772
4897
|
{
|
|
4773
|
-
"search": "
|
|
4898
|
+
"search": "If there is no shadow DOM (see the noShadowDom property of Subscriber):\n",
|
|
4774
4899
|
"files": {
|
|
4775
|
-
"docs/
|
|
4776
|
-
"title": "
|
|
4900
|
+
"docs/_getting-started/theming.md": {
|
|
4901
|
+
"title": "Adding styles",
|
|
4777
4902
|
"hashes": {
|
|
4778
|
-
"
|
|
4903
|
+
"consequences": {
|
|
4779
4904
|
"count": 1,
|
|
4780
|
-
"title": "
|
|
4905
|
+
"title": "Consequences",
|
|
4781
4906
|
"type": "paragraph"
|
|
4782
4907
|
}
|
|
4783
4908
|
}
|
|
@@ -4785,14 +4910,14 @@
|
|
|
4785
4910
|
}
|
|
4786
4911
|
},
|
|
4787
4912
|
{
|
|
4788
|
-
"search": "
|
|
4913
|
+
"search": "For example, the components queue, list, and fetch do not have a shadow DOM.\n",
|
|
4789
4914
|
"files": {
|
|
4790
|
-
"docs/
|
|
4791
|
-
"title": "
|
|
4915
|
+
"docs/_getting-started/theming.md": {
|
|
4916
|
+
"title": "Adding styles",
|
|
4792
4917
|
"hashes": {
|
|
4793
|
-
"
|
|
4918
|
+
"consequences": {
|
|
4794
4919
|
"count": 1,
|
|
4795
|
-
"title": "
|
|
4920
|
+
"title": "Consequences",
|
|
4796
4921
|
"type": "paragraph"
|
|
4797
4922
|
}
|
|
4798
4923
|
}
|
|
@@ -4800,14 +4925,14 @@
|
|
|
4800
4925
|
}
|
|
4801
4926
|
},
|
|
4802
4927
|
{
|
|
4803
|
-
"search": "
|
|
4928
|
+
"search": "ℹ️ Note: Specifically in this case, it may be useful to set the display property to contents.\n",
|
|
4804
4929
|
"files": {
|
|
4805
|
-
"docs/
|
|
4806
|
-
"title": "
|
|
4930
|
+
"docs/_getting-started/theming.md": {
|
|
4931
|
+
"title": "Adding styles",
|
|
4807
4932
|
"hashes": {
|
|
4808
|
-
"
|
|
4933
|
+
"consequences": {
|
|
4809
4934
|
"count": 1,
|
|
4810
|
-
"title": "
|
|
4935
|
+
"title": "Consequences",
|
|
4811
4936
|
"type": "paragraph"
|
|
4812
4937
|
}
|
|
4813
4938
|
}
|
|
@@ -4815,12 +4940,12 @@
|
|
|
4815
4940
|
}
|
|
4816
4941
|
},
|
|
4817
4942
|
{
|
|
4818
|
-
"search": "
|
|
4943
|
+
"search": "DataProviderKey",
|
|
4819
4944
|
"files": {
|
|
4820
|
-
"docs/_misc/
|
|
4821
|
-
"title": "
|
|
4945
|
+
"docs/_misc/dataProviderKey.md": {
|
|
4946
|
+
"title": "DataProviderKey",
|
|
4822
4947
|
"hashes": {
|
|
4823
|
-
"
|
|
4948
|
+
"dataproviderkey": {
|
|
4824
4949
|
"count": 1,
|
|
4825
4950
|
"title": "",
|
|
4826
4951
|
"type": "page"
|
|
@@ -4830,12 +4955,12 @@
|
|
|
4830
4955
|
}
|
|
4831
4956
|
},
|
|
4832
4957
|
{
|
|
4833
|
-
"search": "
|
|
4958
|
+
"search": "The DataProviderKey<T> utility provides type-safe navigation through composite data structures. Each property or index access extends the path, and the final key can be retrieved via toString() or the path property.\n",
|
|
4834
4959
|
"files": {
|
|
4835
|
-
"docs/_misc/
|
|
4836
|
-
"title": "
|
|
4960
|
+
"docs/_misc/dataProviderKey.md": {
|
|
4961
|
+
"title": "DataProviderKey",
|
|
4837
4962
|
"hashes": {
|
|
4838
|
-
"
|
|
4963
|
+
"dataproviderkey": {
|
|
4839
4964
|
"count": 1,
|
|
4840
4965
|
"title": "",
|
|
4841
4966
|
"type": "paragraph"
|
|
@@ -4845,29 +4970,29 @@
|
|
|
4845
4970
|
}
|
|
4846
4971
|
},
|
|
4847
4972
|
{
|
|
4848
|
-
"search": "
|
|
4973
|
+
"search": "For a single HTTP path string (no dot-syntax), see Endpoint.\n",
|
|
4849
4974
|
"files": {
|
|
4850
|
-
"docs/_misc/
|
|
4851
|
-
"title": "
|
|
4975
|
+
"docs/_misc/dataProviderKey.md": {
|
|
4976
|
+
"title": "DataProviderKey",
|
|
4852
4977
|
"hashes": {
|
|
4853
|
-
"
|
|
4978
|
+
"dataproviderkey": {
|
|
4854
4979
|
"count": 1,
|
|
4855
4980
|
"title": "",
|
|
4856
|
-
"type": "
|
|
4981
|
+
"type": "paragraph"
|
|
4857
4982
|
}
|
|
4858
4983
|
}
|
|
4859
4984
|
}
|
|
4860
4985
|
}
|
|
4861
4986
|
},
|
|
4862
4987
|
{
|
|
4863
|
-
"search": "
|
|
4988
|
+
"search": "DataProviderKey uses a Proxy to intercept property access and build a cumulative path string. TypeScript infers the nested type at each level, so myKey.items[0] is correctly typed as DataProviderKey<Item> when items is Item[].\n",
|
|
4864
4989
|
"files": {
|
|
4865
|
-
"docs/_misc/
|
|
4866
|
-
"title": "
|
|
4990
|
+
"docs/_misc/dataProviderKey.md": {
|
|
4991
|
+
"title": "DataProviderKey",
|
|
4867
4992
|
"hashes": {
|
|
4868
|
-
"
|
|
4993
|
+
"principle": {
|
|
4869
4994
|
"count": 1,
|
|
4870
|
-
"title": "",
|
|
4995
|
+
"title": "Principle",
|
|
4871
4996
|
"type": "paragraph"
|
|
4872
4997
|
}
|
|
4873
4998
|
}
|
|
@@ -4875,14 +5000,14 @@
|
|
|
4875
5000
|
}
|
|
4876
5001
|
},
|
|
4877
5002
|
{
|
|
4878
|
-
"search": "
|
|
5003
|
+
"search": "Use placeholders ${prop} or {$prop} in the path string. The path is resolved at runtime from the component's properties. The type remains declarative:\n",
|
|
4879
5004
|
"files": {
|
|
4880
|
-
"docs/_misc/
|
|
4881
|
-
"title": "
|
|
5005
|
+
"docs/_misc/dataProviderKey.md": {
|
|
5006
|
+
"title": "DataProviderKey",
|
|
4882
5007
|
"hashes": {
|
|
4883
|
-
"
|
|
5008
|
+
"dynamic-paths": {
|
|
4884
5009
|
"count": 1,
|
|
4885
|
-
"title": "
|
|
5010
|
+
"title": "Dynamic paths",
|
|
4886
5011
|
"type": "paragraph"
|
|
4887
5012
|
}
|
|
4888
5013
|
}
|
|
@@ -4890,14 +5015,14 @@
|
|
|
4890
5015
|
}
|
|
4891
5016
|
},
|
|
4892
5017
|
{
|
|
4893
|
-
"search": "The
|
|
5018
|
+
"search": "The final path is built by concatenating each accessed property with a dot:\n",
|
|
4894
5019
|
"files": {
|
|
4895
|
-
"docs/_misc/
|
|
4896
|
-
"title": "
|
|
5020
|
+
"docs/_misc/dataProviderKey.md": {
|
|
5021
|
+
"title": "DataProviderKey",
|
|
4897
5022
|
"hashes": {
|
|
4898
|
-
"
|
|
5023
|
+
"path-retrieval": {
|
|
4899
5024
|
"count": 1,
|
|
4900
|
-
"title": "
|
|
5025
|
+
"title": "Path retrieval",
|
|
4901
5026
|
"type": "paragraph"
|
|
4902
5027
|
}
|
|
4903
5028
|
}
|
|
@@ -4905,14 +5030,14 @@
|
|
|
4905
5030
|
}
|
|
4906
5031
|
},
|
|
4907
5032
|
{
|
|
4908
|
-
"search": "
|
|
5033
|
+
"search": "Use toString() or path to get the full path string:\n",
|
|
4909
5034
|
"files": {
|
|
4910
|
-
"docs/_misc/
|
|
4911
|
-
"title": "
|
|
5035
|
+
"docs/_misc/dataProviderKey.md": {
|
|
5036
|
+
"title": "DataProviderKey",
|
|
4912
5037
|
"hashes": {
|
|
4913
|
-
"
|
|
5038
|
+
"path-retrieval": {
|
|
4914
5039
|
"count": 1,
|
|
4915
|
-
"title": "
|
|
5040
|
+
"title": "Path retrieval",
|
|
4916
5041
|
"type": "paragraph"
|
|
4917
5042
|
}
|
|
4918
5043
|
}
|
|
@@ -4920,14 +5045,14 @@
|
|
|
4920
5045
|
}
|
|
4921
5046
|
},
|
|
4922
5047
|
{
|
|
4923
|
-
"search": "
|
|
5048
|
+
"search": "Use DataProviderKey with @subscribe (read-only) or @publish (write-only). The decorated property must match the key’s value type:\n",
|
|
4924
5049
|
"files": {
|
|
4925
|
-
"docs/_misc/
|
|
4926
|
-
"title": "
|
|
5050
|
+
"docs/_misc/dataProviderKey.md": {
|
|
5051
|
+
"title": "DataProviderKey",
|
|
4927
5052
|
"hashes": {
|
|
4928
|
-
"
|
|
5053
|
+
"integration-with-subscribe-and-publish": {
|
|
4929
5054
|
"count": 1,
|
|
4930
|
-
"title": "
|
|
5055
|
+
"title": "Integration with @subscribe and @publish",
|
|
4931
5056
|
"type": "paragraph"
|
|
4932
5057
|
}
|
|
4933
5058
|
}
|
|
@@ -4935,14 +5060,14 @@
|
|
|
4935
5060
|
}
|
|
4936
5061
|
},
|
|
4937
5062
|
{
|
|
4938
|
-
"search": "
|
|
5063
|
+
"search": "Both decorators support dynamic paths: "base.${prop}" in the constructor. A wrong property type (e.g. number for DataProviderKey<string>) is a TypeScript error.\n",
|
|
4939
5064
|
"files": {
|
|
4940
|
-
"docs/_misc/
|
|
4941
|
-
"title": "
|
|
5065
|
+
"docs/_misc/dataProviderKey.md": {
|
|
5066
|
+
"title": "DataProviderKey",
|
|
4942
5067
|
"hashes": {
|
|
4943
|
-
"
|
|
5068
|
+
"integration-with-subscribe-and-publish": {
|
|
4944
5069
|
"count": 1,
|
|
4945
|
-
"title": "
|
|
5070
|
+
"title": "Integration with @subscribe and @publish",
|
|
4946
5071
|
"type": "paragraph"
|
|
4947
5072
|
}
|
|
4948
5073
|
}
|
|
@@ -4950,29 +5075,29 @@
|
|
|
4950
5075
|
}
|
|
4951
5076
|
},
|
|
4952
5077
|
{
|
|
4953
|
-
"search": "
|
|
5078
|
+
"search": "Endpoint",
|
|
4954
5079
|
"files": {
|
|
4955
|
-
"docs/_misc/
|
|
4956
|
-
"title": "
|
|
5080
|
+
"docs/_misc/endpoint.md": {
|
|
5081
|
+
"title": "Endpoint",
|
|
4957
5082
|
"hashes": {
|
|
4958
|
-
"
|
|
5083
|
+
"endpoint": {
|
|
4959
5084
|
"count": 1,
|
|
4960
|
-
"title": "
|
|
4961
|
-
"type": "
|
|
5085
|
+
"title": "",
|
|
5086
|
+
"type": "page"
|
|
4962
5087
|
}
|
|
4963
5088
|
}
|
|
4964
5089
|
}
|
|
4965
5090
|
}
|
|
4966
5091
|
},
|
|
4967
5092
|
{
|
|
4968
|
-
"search": "
|
|
5093
|
+
"search": "Endpoint<T, U> describes a single HTTP path (or a path accepted by API.get) and carries the expected response type T. Unlike DataProviderKey, there is no dot-navigation: the path is one string.\n",
|
|
4969
5094
|
"files": {
|
|
4970
|
-
"docs/_misc/
|
|
4971
|
-
"title": "
|
|
5095
|
+
"docs/_misc/endpoint.md": {
|
|
5096
|
+
"title": "Endpoint",
|
|
4972
5097
|
"hashes": {
|
|
4973
|
-
"
|
|
5098
|
+
"endpoint": {
|
|
4974
5099
|
"count": 1,
|
|
4975
|
-
"title": "
|
|
5100
|
+
"title": "",
|
|
4976
5101
|
"type": "paragraph"
|
|
4977
5102
|
}
|
|
4978
5103
|
}
|
|
@@ -4980,14 +5105,14 @@
|
|
|
4980
5105
|
}
|
|
4981
5106
|
},
|
|
4982
5107
|
{
|
|
4983
|
-
"search": "
|
|
5108
|
+
"search": "The optional second generic U (default any) describes host properties used to resolve dynamic segments in the path (${…} / {$…}), for example with the @get decorator.\n",
|
|
4984
5109
|
"files": {
|
|
4985
|
-
"docs/_misc/
|
|
4986
|
-
"title": "
|
|
5110
|
+
"docs/_misc/endpoint.md": {
|
|
5111
|
+
"title": "Endpoint",
|
|
4987
5112
|
"hashes": {
|
|
4988
|
-
"
|
|
5113
|
+
"endpoint": {
|
|
4989
5114
|
"count": 1,
|
|
4990
|
-
"title": "
|
|
5115
|
+
"title": "",
|
|
4991
5116
|
"type": "paragraph"
|
|
4992
5117
|
}
|
|
4993
5118
|
}
|
|
@@ -4995,14 +5120,14 @@
|
|
|
4995
5120
|
}
|
|
4996
5121
|
},
|
|
4997
5122
|
{
|
|
4998
|
-
"search": "
|
|
5123
|
+
"search": "Endpoint.normalizePath trims the string, rejects an empty path, strips leading slashes for paths relative to serviceURL, collapses duplicate slashes, and validates absolute http(s):// URLs.\n",
|
|
4999
5124
|
"files": {
|
|
5000
|
-
"docs/_misc/
|
|
5001
|
-
"title": "
|
|
5125
|
+
"docs/_misc/endpoint.md": {
|
|
5126
|
+
"title": "Endpoint",
|
|
5002
5127
|
"hashes": {
|
|
5003
|
-
"
|
|
5128
|
+
"normalization": {
|
|
5004
5129
|
"count": 1,
|
|
5005
|
-
"title": "
|
|
5130
|
+
"title": "Normalization",
|
|
5006
5131
|
"type": "paragraph"
|
|
5007
5132
|
}
|
|
5008
5133
|
}
|
|
@@ -5010,14 +5135,14 @@
|
|
|
5010
5135
|
}
|
|
5011
5136
|
},
|
|
5012
5137
|
{
|
|
5013
|
-
"search": "
|
|
5138
|
+
"search": "getDataProviderKey() returns a typed publisher key whose path matches the endpoint path (payload typing follows ApiGetResult for this endpoint). Useful when pairing @get with @publish / @subscribe (see @get).\n",
|
|
5014
5139
|
"files": {
|
|
5015
|
-
"docs/_misc/
|
|
5016
|
-
"title": "
|
|
5140
|
+
"docs/_misc/endpoint.md": {
|
|
5141
|
+
"title": "Endpoint",
|
|
5017
5142
|
"hashes": {
|
|
5018
|
-
"
|
|
5143
|
+
"publisher-key-for-payloads": {
|
|
5019
5144
|
"count": 1,
|
|
5020
|
-
"title": "
|
|
5145
|
+
"title": "Publisher key for payloads",
|
|
5021
5146
|
"type": "paragraph"
|
|
5022
5147
|
}
|
|
5023
5148
|
}
|
|
@@ -5025,14 +5150,14 @@
|
|
|
5025
5150
|
}
|
|
5026
5151
|
},
|
|
5027
5152
|
{
|
|
5028
|
-
"search": "
|
|
5153
|
+
"search": "Endpoint.looksLikeDataProviderPath(path) returns true for strings shaped like dataProvider(id)…, which API.get can resolve without HTTP.\n",
|
|
5029
5154
|
"files": {
|
|
5030
|
-
"docs/_misc/
|
|
5031
|
-
"title": "
|
|
5155
|
+
"docs/_misc/endpoint.md": {
|
|
5156
|
+
"title": "Endpoint",
|
|
5032
5157
|
"hashes": {
|
|
5033
|
-
"
|
|
5158
|
+
"data-provider-paths": {
|
|
5034
5159
|
"count": 1,
|
|
5035
|
-
"title": "
|
|
5160
|
+
"title": "Data-provider paths",
|
|
5036
5161
|
"type": "paragraph"
|
|
5037
5162
|
}
|
|
5038
5163
|
}
|
|
@@ -5040,14 +5165,29 @@
|
|
|
5040
5165
|
}
|
|
5041
5166
|
},
|
|
5042
5167
|
{
|
|
5043
|
-
"search": "
|
|
5168
|
+
"search": "Templates Demo",
|
|
5044
5169
|
"files": {
|
|
5045
|
-
"docs/_misc/
|
|
5046
|
-
"title": "
|
|
5170
|
+
"docs/_misc/templates-demo.md": {
|
|
5171
|
+
"title": "Templates Demo",
|
|
5047
5172
|
"hashes": {
|
|
5048
|
-
"
|
|
5173
|
+
"templates-demo": {
|
|
5049
5174
|
"count": 1,
|
|
5050
|
-
"title": "
|
|
5175
|
+
"title": "",
|
|
5176
|
+
"type": "page"
|
|
5177
|
+
}
|
|
5178
|
+
}
|
|
5179
|
+
}
|
|
5180
|
+
}
|
|
5181
|
+
},
|
|
5182
|
+
{
|
|
5183
|
+
"search": "Some test/demos\n",
|
|
5184
|
+
"files": {
|
|
5185
|
+
"docs/_misc/templates-demo.md": {
|
|
5186
|
+
"title": "Templates Demo",
|
|
5187
|
+
"hashes": {
|
|
5188
|
+
"templates-demo": {
|
|
5189
|
+
"count": 1,
|
|
5190
|
+
"title": "",
|
|
5051
5191
|
"type": "paragraph"
|
|
5052
5192
|
}
|
|
5053
5193
|
}
|