@supersoniks/concorde 5.1.1 → 5.1.3
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/.agents/skills/concorde-docs/SKILL.md +153 -0
- package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
- package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
- package/.agents/skills/concorde-docs/templates/guide.md +25 -0
- package/PLAN-DOCS-AGENTS.md +80 -0
- package/README.md +4 -4
- package/ai/README.md +29 -41
- package/ai/skills/concorde/SKILL.md +54 -324
- package/ai/skills/concorde/rules/composition.md +32 -0
- package/ai/skills/concorde/rules/data.md +47 -0
- package/ai/skills/concorde/rules/http.md +25 -0
- package/ai/skills/concorde/rules/lists-forms.md +35 -0
- package/ai/skills/concorde/rules/styling.md +46 -0
- package/ai/skills/concorde/rules/troubleshooting.md +45 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +21 -21
- package/concorde-core.es.js +977 -980
- package/custom-elements-manifest.public.config.mjs +8 -0
- package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
- package/dist/concorde-core.bundle.js +21 -21
- package/dist/concorde-core.es.js +977 -980
- package/dist/docs-mock-api-sw.js +58 -223
- package/dist/docs-mock-api-sw.js.map +4 -4
- package/dist/img/concorde/plane_01.jpg +0 -0
- package/dist/img/concorde/plane_02.jpg +0 -0
- package/dist/img/concorde/plane_03.jpg +0 -0
- package/dist/img/concorde/plane_04.jpg +0 -0
- package/dist/img/concorde/plane_05.jpg +0 -0
- package/dist/img/concorde/plane_06.jpg +0 -0
- package/dist/img/concorde/plane_07.jpg +0 -0
- package/dist/img/concorde/plane_08.jpg +0 -0
- package/dist/img/concorde/plane_09.jpg +0 -0
- package/dist/img/concorde/plane_10.jpg +0 -0
- package/dist/img/concorde/plane_11.jpg +0 -0
- package/dist/img/concorde/plane_12.jpg +0 -0
- package/dist/img/concorde/plane_13.jpg +0 -0
- package/dist/img/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/.htaccess +82 -0
- package/docs/404.html +15 -0
- package/docs/404.md +5 -0
- package/docs/about.html +111 -0
- package/docs/about.md +22 -0
- package/docs/assets/{index-Bb-_LRyY.js → index-6sS76xWj.js} +2625 -3158
- package/docs/assets/index-DkdPbH0F.css +1 -0
- package/docs/core/components/functional/date/date.html +211 -0
- package/docs/core/components/functional/date/date.md +150 -0
- package/docs/core/components/functional/fetch/fetch.html +180 -0
- package/docs/core/components/functional/fetch/fetch.md +108 -0
- package/docs/core/components/functional/if/if.html +65 -0
- package/docs/core/components/functional/if/if.md +34 -0
- package/docs/core/components/functional/jsonata/jsonata.html +110 -0
- package/docs/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/core/components/functional/list/list.html +200 -0
- package/docs/core/components/functional/list/list.md +125 -0
- package/docs/core/components/functional/mix/mix.html +78 -0
- package/docs/core/components/functional/mix/mix.md +46 -0
- package/docs/core/components/functional/queue/queue.html +155 -0
- package/docs/core/components/functional/queue/queue.md +51 -0
- package/docs/core/components/functional/router/router.html +154 -0
- package/docs/core/components/functional/router/router.md +93 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
- package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/core/components/functional/sdui/sdui.html +397 -0
- package/docs/core/components/functional/sdui/sdui.md +307 -0
- package/docs/core/components/functional/states/states.html +141 -0
- package/docs/core/components/functional/states/states.md +112 -0
- package/docs/core/components/functional/submit/submit.html +178 -0
- package/docs/core/components/functional/submit/submit.md +106 -0
- package/docs/core/components/functional/subscriber/subscriber.html +68 -0
- package/docs/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/core/components/functional/translation/translation.html +60 -0
- package/docs/core/components/functional/translation/translation.md +38 -0
- package/docs/core/components/functional/value/value.html +81 -0
- package/docs/core/components/functional/value/value.md +47 -0
- package/docs/core/components/ui/alert/alert.html +201 -0
- package/docs/core/components/ui/alert/alert.md +186 -0
- package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
- package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/core/components/ui/badge/badge.html +197 -0
- package/docs/core/components/ui/badge/badge.md +181 -0
- package/docs/core/components/ui/button/button.html +309 -0
- package/docs/core/components/ui/button/button.md +216 -0
- package/docs/core/components/ui/captcha/captcha.html +80 -0
- package/docs/core/components/ui/captcha/captcha.md +56 -0
- package/docs/core/components/ui/card/card.html +254 -0
- package/docs/core/components/ui/card/card.md +215 -0
- package/docs/core/components/ui/divider/divider.html +144 -0
- package/docs/core/components/ui/divider/divider.md +126 -0
- package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
- package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
- package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
- package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
- package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/core/components/ui/form/input/input.html +235 -0
- package/docs/core/components/ui/form/input/input.md +142 -0
- package/docs/core/components/ui/form/radio/radio.html +144 -0
- package/docs/core/components/ui/form/radio/radio.md +78 -0
- package/docs/core/components/ui/form/select/select.html +178 -0
- package/docs/core/components/ui/form/select/select.md +86 -0
- package/docs/core/components/ui/form/switch/switch.html +146 -0
- package/docs/core/components/ui/form/switch/switch.md +80 -0
- package/docs/core/components/ui/form/textarea/textarea.html +162 -0
- package/docs/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/core/components/ui/group/group.html +113 -0
- package/docs/core/components/ui/group/group.md +77 -0
- package/docs/core/components/ui/icon/icon.html +223 -0
- package/docs/core/components/ui/icon/icon.md +214 -0
- package/docs/core/components/ui/image/image.html +194 -0
- package/docs/core/components/ui/image/image.md +167 -0
- package/docs/core/components/ui/link/link.html +101 -0
- package/docs/core/components/ui/link/link.md +81 -0
- package/docs/core/components/ui/loader/loader.html +114 -0
- package/docs/core/components/ui/loader/loader.md +87 -0
- package/docs/core/components/ui/menu/menu.html +395 -0
- package/docs/core/components/ui/menu/menu.md +370 -0
- package/docs/core/components/ui/modal/modal.html +324 -0
- package/docs/core/components/ui/modal/modal.md +211 -0
- package/docs/core/components/ui/pop/pop.html +250 -0
- package/docs/core/components/ui/pop/pop.md +216 -0
- package/docs/core/components/ui/progress/progress.html +132 -0
- package/docs/core/components/ui/progress/progress.md +109 -0
- package/docs/core/components/ui/table/table.html +333 -0
- package/docs/core/components/ui/table/table.md +267 -0
- package/docs/core/components/ui/theme/theme.html +116 -0
- package/docs/core/components/ui/theme/theme.md +97 -0
- package/docs/core/components/ui/toast/toast.html +185 -0
- package/docs/core/components/ui/toast/toast.md +147 -0
- package/docs/core/components/ui/tooltip/tooltip.html +112 -0
- package/docs/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/custom-elements.json +16559 -0
- package/docs/docs/decorators/ancestor-attribute.html +71 -0
- package/docs/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/docs/decorators/auto-subscribe.html +61 -0
- package/docs/docs/decorators/auto-subscribe.md +40 -0
- package/docs/docs/decorators/bind.html +87 -0
- package/docs/docs/decorators/bind.md +76 -0
- package/docs/docs/decorators/get.html +166 -0
- package/docs/docs/decorators/get.md +160 -0
- package/docs/docs/decorators/handle.html +139 -0
- package/docs/docs/decorators/handle.md +119 -0
- package/docs/docs/decorators/on-assign.html +72 -0
- package/docs/docs/decorators/on-assign.md +63 -0
- package/docs/docs/decorators/patch.html +76 -0
- package/docs/docs/decorators/patch.md +44 -0
- package/docs/docs/decorators/post.html +150 -0
- package/docs/docs/decorators/post.md +134 -0
- package/docs/docs/decorators/publish.html +74 -0
- package/docs/docs/decorators/publish.md +56 -0
- package/docs/docs/decorators/put.html +83 -0
- package/docs/docs/decorators/put.md +51 -0
- package/docs/docs/decorators/subscribe.html +91 -0
- package/docs/docs/decorators/subscribe.md +87 -0
- package/docs/docs/decorators/wait-for-ancestors.html +82 -0
- package/docs/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/docs/directives/sub.html +79 -0
- package/docs/docs/directives/sub.md +75 -0
- package/docs/docs/directives/t.html +91 -0
- package/docs/docs/directives/t.md +73 -0
- package/docs/docs/getting-started/ai-agents.html +130 -0
- package/docs/docs/getting-started/ai-agents.md +50 -0
- package/docs/docs/getting-started/components.html +27 -0
- package/docs/docs/getting-started/create-a-component.html +108 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
- package/docs/docs/getting-started/dataFlow.html +174 -0
- package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +18 -19
- package/docs/docs/getting-started/installation.html +69 -0
- package/docs/docs/getting-started/installation.md +36 -0
- package/docs/docs/getting-started/my-first-component.html +180 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
- package/docs/docs/getting-started/start.html +47 -0
- package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
- package/docs/docs/getting-started/theming.html +334 -0
- package/docs/docs/index.html +99 -0
- package/docs/docs/misc/api-configuration.html +149 -0
- package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
- package/docs/docs/misc/dataProviderKey.html +136 -0
- package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
- package/docs/docs/misc/docs-mock-api.html +155 -0
- package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
- package/docs/docs/misc/dynamic-path.html +181 -0
- package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
- package/docs/docs/misc/endpoint.html +51 -0
- package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
- package/docs/docs/misc/html-integration.html +45 -0
- package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
- package/docs/docs-mock-api-sw.js +58 -223
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/hubs/decorators.html +438 -0
- package/docs/hubs/form-components.html +404 -0
- package/docs/hubs/remote-data.html +367 -0
- package/docs/img/archive/concorde-001-2cv.webp +0 -0
- package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/docs/img/archive/credits.json +28 -0
- package/docs/img/concorde/plane_01.jpg +0 -0
- package/docs/img/concorde/plane_02.jpg +0 -0
- package/docs/img/concorde/plane_03.jpg +0 -0
- package/docs/img/concorde/plane_04.jpg +0 -0
- package/docs/img/concorde/plane_05.jpg +0 -0
- package/docs/img/concorde/plane_06.jpg +0 -0
- package/docs/img/concorde/plane_07.jpg +0 -0
- package/docs/img/concorde/plane_08.jpg +0 -0
- package/docs/img/concorde/plane_09.jpg +0 -0
- package/docs/img/concorde/plane_10.jpg +0 -0
- package/docs/img/concorde/plane_11.jpg +0 -0
- package/docs/img/concorde/plane_12.jpg +0 -0
- package/docs/img/concorde/plane_13.jpg +0 -0
- package/docs/img/og-concorde.jpg +0 -0
- package/docs/index.html +184 -68
- package/docs/index.md +22 -0
- package/docs/llms-full.txt +5779 -0
- package/docs/llms.txt +108 -0
- package/docs/privacy.html +122 -0
- package/docs/privacy.md +32 -0
- package/docs/robots.txt +11 -10
- package/docs/sitemap.xml +243 -0
- package/docs/src/core/components/functional/date/date.md +150 -0
- package/docs/src/core/components/functional/fetch/fetch.md +108 -0
- package/docs/src/core/components/functional/if/if.md +34 -0
- package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
- package/docs/src/core/components/functional/list/list.md +125 -0
- package/docs/src/core/components/functional/mix/mix.md +46 -0
- package/docs/src/core/components/functional/queue/queue.md +51 -0
- package/docs/src/core/components/functional/router/router.md +93 -0
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
- package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
- package/docs/src/core/components/functional/sdui/default-library.json +108 -0
- package/docs/src/core/components/functional/sdui/example.json +32 -0
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
- package/docs/src/core/components/functional/sdui/sdui.md +307 -0
- package/docs/src/core/components/functional/states/states.md +112 -0
- package/docs/src/core/components/functional/submit/submit.md +106 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/translation/translation.md +38 -0
- package/docs/src/core/components/functional/value/value.md +47 -0
- package/docs/src/core/components/ui/alert/alert.md +186 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
- package/docs/src/core/components/ui/badge/badge.md +181 -0
- package/docs/src/core/components/ui/button/button.md +216 -0
- package/docs/src/core/components/ui/captcha/captcha.md +56 -0
- package/docs/src/core/components/ui/card/card.md +215 -0
- package/docs/src/core/components/ui/divider/divider.md +126 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/radio/radio.md +78 -0
- package/docs/src/core/components/ui/form/select/select.md +86 -0
- package/docs/src/core/components/ui/form/switch/switch.md +80 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
- package/docs/src/core/components/ui/group/group.md +77 -0
- package/docs/src/core/components/ui/icon/icon.md +214 -0
- package/docs/src/core/components/ui/icon/icons.json +1 -0
- package/docs/src/core/components/ui/image/image.md +167 -0
- package/docs/src/core/components/ui/link/link.md +81 -0
- package/docs/src/core/components/ui/loader/loader.md +87 -0
- package/docs/src/core/components/ui/menu/menu.md +370 -0
- package/docs/src/core/components/ui/modal/modal.md +211 -0
- package/docs/src/core/components/ui/pop/pop.md +216 -0
- package/docs/src/core/components/ui/progress/progress.md +109 -0
- package/docs/src/core/components/ui/table/table.md +267 -0
- package/docs/src/core/components/ui/theme/theme.md +97 -0
- package/docs/src/core/components/ui/toast/toast.md +147 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
- package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
- package/docs/src/docs/decorators/auto-subscribe.md +40 -0
- package/docs/src/docs/decorators/bind.md +76 -0
- package/docs/src/docs/decorators/get.md +160 -0
- package/docs/src/docs/decorators/handle.md +119 -0
- package/docs/src/docs/decorators/on-assign.md +63 -0
- package/docs/src/docs/decorators/patch.md +44 -0
- package/docs/src/docs/decorators/post.md +134 -0
- package/docs/src/docs/decorators/publish.md +56 -0
- package/docs/src/docs/decorators/put.md +51 -0
- package/docs/src/docs/decorators/subscribe.md +87 -0
- package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/docs/src/docs/directives/sub.md +75 -0
- package/docs/src/docs/directives/t.md +73 -0
- package/docs/src/docs/getting-started/ai-agents.md +50 -0
- package/docs/src/docs/getting-started/components.md +5 -0
- package/docs/src/docs/getting-started/create-a-component.md +136 -0
- package/docs/src/docs/getting-started/dataFlow.md +87 -0
- package/docs/src/docs/getting-started/installation.md +36 -0
- package/docs/src/docs/getting-started/my-first-component.md +227 -0
- package/docs/src/docs/getting-started/start.md +35 -0
- package/docs/src/docs/getting-started/theming.md +253 -0
- package/docs/src/docs/misc/api-configuration.md +79 -0
- package/docs/src/docs/misc/dataProviderKey.md +168 -0
- package/docs/src/docs/misc/docs-mock-api.md +62 -0
- package/docs/src/docs/misc/dynamic-path.md +71 -0
- package/docs/src/docs/misc/endpoint.md +45 -0
- package/docs/src/docs/misc/html-integration.md +14 -0
- package/docs/src/docs/search/docs-search.json +10332 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.json +1359 -0
- package/index.html +157 -5
- package/package.json +8 -4
- package/public/docs-mock-api-sw.js +58 -223
- package/public/docs-mock-api-sw.js.map +4 -4
- package/public/img/concorde/plane_01.jpg +0 -0
- package/public/img/concorde/plane_02.jpg +0 -0
- package/public/img/concorde/plane_03.jpg +0 -0
- package/public/img/concorde/plane_04.jpg +0 -0
- package/public/img/concorde/plane_05.jpg +0 -0
- package/public/img/concorde/plane_06.jpg +0 -0
- package/public/img/concorde/plane_07.jpg +0 -0
- package/public/img/concorde/plane_08.jpg +0 -0
- package/public/img/concorde/plane_09.jpg +0 -0
- package/public/img/concorde/plane_10.jpg +0 -0
- package/public/img/concorde/plane_11.jpg +0 -0
- package/public/img/concorde/plane_12.jpg +0 -0
- package/public/img/concorde/plane_13.jpg +0 -0
- package/public/img/og-concorde.jpg +0 -0
- package/public/robots.txt +11 -10
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +43 -0
- package/scripts/docs-public-url.mjs +56 -0
- package/scripts/docs.htaccess +82 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +233 -118
- package/scripts/generate-crawl-docs.test.mjs +124 -0
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/post-build-docs.js +37 -50
- package/scripts/pre-publish.mjs +2 -1
- package/scripts/site-pages.mjs +212 -0
- package/scripts/site-pages.test.mjs +116 -0
- package/site-pages/about.md +22 -0
- package/site-pages/privacy.md +32 -0
- package/src/core/components/functional/date/date.md +91 -231
- package/src/core/components/functional/fetch/fetch.md +66 -83
- package/src/core/components/functional/if/if.md +28 -3
- package/src/core/components/functional/jsonata/jsonata.md +42 -37
- package/src/core/components/functional/list/list.md +103 -43
- package/src/core/components/functional/mix/mix.md +31 -26
- package/src/core/components/functional/queue/queue.demo.ts +10 -7
- package/src/core/components/functional/queue/queue.md +40 -61
- package/src/core/components/functional/router/router.demo.ts +16 -16
- package/src/core/components/functional/router/router.md +64 -65
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/src/core/components/functional/sdui/example.json +19 -86
- package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/src/core/components/functional/sdui/sdui.md +187 -358
- package/src/core/components/functional/states/states.demo.ts +21 -22
- package/src/core/components/functional/states/states.md +86 -61
- package/src/core/components/functional/states/states.ts +1 -1
- package/src/core/components/functional/submit/submit.md +64 -72
- package/src/core/components/functional/translation/translation.md +38 -0
- package/src/core/components/functional/value/value.md +34 -22
- package/src/core/components/ui/alert/alert.md +48 -58
- package/src/core/components/ui/badge/badge.md +27 -34
- package/src/core/components/ui/button/button.md +139 -106
- package/src/core/components/ui/captcha/captcha.md +17 -32
- package/src/core/components/ui/card/card.md +6 -6
- package/src/core/components/ui/divider/divider.md +8 -11
- package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
- package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
- package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
- package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
- package/src/core/components/ui/form/input/input.md +95 -95
- package/src/core/components/ui/form/radio/radio.md +55 -34
- package/src/core/components/ui/form/select/select.md +60 -45
- package/src/core/components/ui/form/switch/switch.md +57 -34
- package/src/core/components/ui/form/textarea/textarea.md +55 -38
- package/src/core/components/ui/group/group.md +35 -33
- package/src/core/components/ui/icon/icon.md +4 -4
- package/src/core/components/ui/image/image.md +41 -107
- package/src/core/components/ui/link/link.md +6 -6
- package/src/core/components/ui/loader/loader.md +30 -55
- package/src/core/components/ui/menu/menu.md +27 -27
- package/src/core/components/ui/modal/modal.md +72 -96
- package/src/core/components/ui/pop/pop.md +80 -158
- package/src/core/components/ui/progress/progress.md +2 -2
- package/src/core/components/ui/table/table.md +91 -255
- package/src/core/components/ui/theme/theme.md +11 -36
- package/src/core/components/ui/toast/toast.md +48 -117
- package/src/core/components/ui/tooltip/tooltip.md +27 -62
- package/src/core/decorators/subscriber/bind.ts +9 -14
- package/src/core/utils/LocationHandler.spec.ts +80 -0
- package/src/core/utils/LocationHandler.ts +5 -9
- package/src/docs/components/docs-demo-sources.ts +55 -140
- package/src/docs/components/docs-lit-demo.ts +1 -3
- package/src/docs/components/docs-source-link.ts +0 -82
- package/src/docs/decorators/ancestor-attribute.md +59 -0
- package/src/docs/decorators/auto-subscribe.md +40 -0
- package/src/docs/decorators/bind.md +76 -0
- package/src/docs/decorators/get.md +160 -0
- package/src/docs/decorators/handle.md +119 -0
- package/src/docs/decorators/on-assign.md +63 -0
- package/src/docs/decorators/patch.md +44 -0
- package/src/docs/decorators/post.md +134 -0
- package/src/docs/decorators/publish.md +56 -0
- package/src/docs/decorators/put.md +51 -0
- package/src/docs/decorators/subscribe.md +87 -0
- package/src/docs/decorators/wait-for-ancestors.md +76 -0
- package/src/docs/directives/sub.md +75 -0
- package/src/docs/directives/t.md +73 -0
- package/src/docs/docs-location.spec.ts +56 -0
- package/src/docs/docs-location.ts +133 -32
- package/src/docs/docs.ts +1 -2
- package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
- package/src/docs/example/decorators-demo-geo.ts +30 -19
- package/src/docs/example/decorators-demo-post.ts +88 -186
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
- package/src/docs/example/decorators-demo.ts +85 -98
- package/src/docs/example/docs-api-config-demos.ts +19 -20
- package/src/docs/example/docs-flight-demos.ts +147 -0
- package/src/docs/example/docs-jsonata-demos.ts +52 -52
- package/src/docs/example/docs-list-demos.ts +43 -123
- package/src/docs/example/docs-provider-keys.ts +21 -28
- package/src/docs/example/docs-queue-demos.ts +37 -77
- package/src/docs/example/docs-router-demos.ts +20 -25
- package/src/docs/example/docs-submit-demos.ts +48 -48
- package/src/docs/example/docs-toggle-demos.ts +4 -3
- package/src/docs/getting-started/ai-agents.md +50 -0
- package/src/docs/getting-started/components.md +5 -0
- package/src/docs/getting-started/create-a-component.md +136 -0
- package/src/docs/getting-started/dataFlow.md +87 -0
- package/src/docs/getting-started/installation.md +36 -0
- package/src/docs/getting-started/my-first-component.md +227 -0
- package/src/docs/getting-started/start.md +35 -0
- package/src/docs/getting-started/theming.md +253 -0
- package/src/docs/header/header.ts +11 -6
- package/src/docs/home/catalog.ts +1 -1
- package/src/docs/home/home.ts +20 -11
- package/src/docs/layout.ts +12 -13
- package/src/docs/misc/api-configuration.md +79 -0
- package/src/docs/misc/dataProviderKey.md +168 -0
- package/src/docs/misc/docs-mock-api.md +62 -0
- package/src/docs/misc/dynamic-path.md +71 -0
- package/src/docs/misc/endpoint.md +45 -0
- package/src/docs/misc/html-integration.md +14 -0
- package/src/docs/mock-api/api-config-mock.ts +5 -0
- package/src/docs/mock-api/fixtures.ts +0 -278
- package/src/docs/mock-api/flights.ts +89 -0
- package/src/docs/mock-api/router.ts +3 -4
- package/src/docs/mock-api/urls.ts +1 -2
- package/src/docs/navigation/navigation.ts +82 -103
- package/src/docs/navigation/toc.ts +7 -4
- package/src/docs/search/docs-search.json +2804 -5024
- package/src/docs/search/markdown-renderer.ts +31 -8
- package/src/docs/search/page.ts +9 -6
- package/src/docs/search/search.ts +154 -122
- package/src/docs/tailwind/css/docs/content.css +4 -5
- package/src/tsconfig.json +11 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +11 -2
- package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
- package/ai/AGENTS.md +0 -56
- package/ai/cursor/rules/concorde-menu.mdc +0 -15
- package/ai/cursor/rules/concorde-scope.mdc +0 -14
- package/ai/cursor/rules/concorde-theme.mdc +0 -13
- package/ai/cursor/rules/concorde.mdc +0 -66
- package/ai/jetbrains/rules/concorde.md +0 -53
- package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
- package/ai/skills/concorde-imports/SKILL.md +0 -78
- package/ai/skills/concorde-menu/SKILL.md +0 -74
- package/ai/skills/concorde-scope/SKILL.md +0 -70
- package/ai/skills/concorde-theme/SKILL.md +0 -57
- package/docs/assets/index-CD4WyL6o.css +0 -1
- package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
- package/src/docs/_core-concept/overview.md +0 -57
- package/src/docs/_core-concept/subscriber.md +0 -75
- package/src/docs/_decorators/ancestor-attribute.md +0 -128
- package/src/docs/_decorators/auto-subscribe.md +0 -202
- package/src/docs/_decorators/bind.md +0 -167
- package/src/docs/_decorators/get.md +0 -162
- package/src/docs/_decorators/handle.md +0 -175
- package/src/docs/_decorators/on-assign.md +0 -390
- package/src/docs/_decorators/patch.md +0 -70
- package/src/docs/_decorators/post.md +0 -146
- package/src/docs/_decorators/publish.md +0 -55
- package/src/docs/_decorators/put.md +0 -70
- package/src/docs/_decorators/subscribe.md +0 -100
- package/src/docs/_decorators/wait-for-ancestors.md +0 -163
- package/src/docs/_directives/sub.md +0 -91
- package/src/docs/_getting-started/ai-agents.md +0 -76
- package/src/docs/_getting-started/concorde-manual-install.md +0 -133
- package/src/docs/_getting-started/concorde-outside.md +0 -33
- package/src/docs/_getting-started/my-first-subscriber.md +0 -120
- package/src/docs/_getting-started/pubsub.md +0 -37
- package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
- package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
- package/src/docs/example/docs-joke-demos.ts +0 -297
- /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
- /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/docs/decorators/subscribe" data-doc-id="docs/decorators/subscribe">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>@subscribe — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="@subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to w">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, docs/decorators/subscribe, subscribe, @subscribe, decorator, @subscribe(key), at that path. Add , ${prop}, seatIndex, person, null, undefined, dataProvider, key, DataProviderKey">
|
|
9
|
+
<meta name="concorde-doc-id" content="docs/decorators/subscribe">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/docs/decorators/subscribe">
|
|
11
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/docs/decorators/subscribe.md">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/docs/decorators/subscribe">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
16
|
+
</header>
|
|
17
|
+
<main>
|
|
18
|
+
<article>
|
|
19
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde decorator — @subscribe</strong>. @subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to w <span>Doc ID: <code>docs/decorators/subscribe</code>. Keywords: Concorde, supersoniks, docs/decorators/subscribe, subscribe, @subscribe, decorator, @subscribe(key), at that path. Add , ${prop}, seatIndex, person, null, undefined, dataProvider, key, DataProviderKey. URL: <a href="https://concorde.supersoniks.org/docs/decorators/subscribe">https://concorde.supersoniks.org/docs/decorators/subscribe</a>.</span></p>
|
|
20
|
+
<h1 id="subscribe">@subscribe</h1>
|
|
21
|
+
<p><code>@subscribe(key)</code> keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use <a href="/docs/decorators/publish">@publish</a> to write and <a href="/docs/directives/sub">sub()</a> to read inside a template. See <a href="/docs/getting-started/dataFlow">Data flow</a> for the overall model.</p>
|
|
22
|
+
<h2 id="import">Import</h2>
|
|
23
|
+
<pre><code class="language-typescript">import { subscribe } from "@supersoniks/concorde/decorators";
|
|
24
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
25
|
+
|
|
26
|
+
type Cockpit = { altitude: number };
|
|
27
|
+
const cockpitKey = new DataProviderKey&lt;Cockpit&gt;("cockpit");
|
|
28
|
+
|
|
29
|
+
@subscribe(cockpitKey.altitude)
|
|
30
|
+
@state()
|
|
31
|
+
altitude = 0;
|
|
32
|
+
</code></pre>
|
|
33
|
+
<h2 id="static-path">Static path</h2>
|
|
34
|
+
<p>The key is a <a href="/docs/misc/dataProviderKey">DataProviderKey</a>: the property type must match <code>T</code> at that path. Add <code>@state()</code> so Lit re-renders. Until the publisher holds a value, the property keeps its initializer.</p>
|
|
35
|
+
<pre><code class="language-typescript">type Flight = { code: string; gate: string; status: string };
|
|
36
|
+
const flightKey = new DataProviderKey&lt;Flight&gt;("flight");
|
|
37
|
+
|
|
38
|
+
@subscribe(flightKey)
|
|
39
|
+
@state()
|
|
40
|
+
flight: Flight | null = null;
|
|
41
|
+
</code></pre>
|
|
42
|
+
<h2 id="dynamic-path">Dynamic path</h2>
|
|
43
|
+
<p><code>${prop}</code> placeholders resolve from properties of the same component. Declare them in the key's second generic so TypeScript requires them on the host. When <code>seatIndex</code> changes, the path is resolved again and <code>person</code> refreshes; while the placeholder is <code>null</code> or <code>undefined</code>, the subscription is inactive. Resolution rules: <a href="/docs/misc/dynamic-path">Dynamic paths</a>.</p>
|
|
44
|
+
<pre><code class="language-typescript">type OnBoard = { name: string; role: string; seat: string };
|
|
45
|
+
const personKey = new DataProviderKey&lt;OnBoard, { seatIndex: number }&gt;(
|
|
46
|
+
"demoOnBoard.${seatIndex}",
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
@property({ type: Number }) seatIndex = 0;
|
|
50
|
+
|
|
51
|
+
@subscribe(personKey)
|
|
52
|
+
@state()
|
|
53
|
+
person: OnBoard | null = null;
|
|
54
|
+
</code></pre>
|
|
55
|
+
<pre><code><docs-demo-sources for="demo-subscribe-dynamic"></docs-demo-sources>
|
|
56
|
+
<demo-subscribe-dynamic></demo-subscribe-dynamic>
|
|
57
|
+
</code></pre>
|
|
58
|
+
<h2 id="ancestor-scope">Ancestor scope</h2>
|
|
59
|
+
<p>Inside a list row or a <code>dataProvider</code> wrapper, read the path from the closest ancestor with <a href="/docs/decorators/ancestor-attribute">@ancestorAttribute</a>, then use it as the placeholder.</p>
|
|
60
|
+
<pre><code class="language-typescript">const rowKey = new DataProviderKey&lt;OnBoard, { dataProvider: string | null }&gt;(
|
|
61
|
+
"${dataProvider}",
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
@ancestorAttribute("dataProvider")
|
|
65
|
+
dataProvider: string | null = null;
|
|
66
|
+
|
|
67
|
+
@subscribe(rowKey)
|
|
68
|
+
@state()
|
|
69
|
+
person: OnBoard | null = null;
|
|
70
|
+
</code></pre>
|
|
71
|
+
<h2 id="api-reference">API reference</h2>
|
|
72
|
+
<table>
|
|
73
|
+
<thead>
|
|
74
|
+
<tr>
|
|
75
|
+
<th>Argument</th>
|
|
76
|
+
<th>Type</th>
|
|
77
|
+
<th>Description</th>
|
|
78
|
+
</tr>
|
|
79
|
+
</thead>
|
|
80
|
+
<tbody><tr>
|
|
81
|
+
<td><code>key</code></td>
|
|
82
|
+
<td><code>DataProviderKey<T, U></code></td>
|
|
83
|
+
<td>Path to read. <code>U</code> lists the host properties used by <code>${…}</code> placeholders</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</tbody></table>
|
|
86
|
+
<p>The decorated property is typed <code>T</code> (optionally <code>| null</code> or <code>| undefined</code>). The subscription starts when the component connects and stops when it disconnects.</p>
|
|
87
|
+
|
|
88
|
+
</article>
|
|
89
|
+
</main>
|
|
90
|
+
</body>
|
|
91
|
+
</html>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# @subscribe
|
|
2
|
+
|
|
3
|
+
`@subscribe(key)` keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use [@publish](/docs/decorators/publish) to write and [sub()](/docs/directives/sub) to read inside a template. See [Data flow](/docs/getting-started/dataFlow) for the overall model.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
<sonic-code language="typescript">
|
|
8
|
+
<template>
|
|
9
|
+
import { subscribe } from "@supersoniks/concorde/decorators";
|
|
10
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
11
|
+
|
|
12
|
+
type Cockpit = { altitude: number };
|
|
13
|
+
const cockpitKey = new DataProviderKey<Cockpit>("cockpit");
|
|
14
|
+
|
|
15
|
+
@subscribe(cockpitKey.altitude)
|
|
16
|
+
@state()
|
|
17
|
+
altitude = 0;
|
|
18
|
+
</template>
|
|
19
|
+
</sonic-code>
|
|
20
|
+
|
|
21
|
+
## Static path
|
|
22
|
+
|
|
23
|
+
The key is a [DataProviderKey](/docs/misc/dataProviderKey): the property type must match `T` at that path. Add `@state()` so Lit re-renders. Until the publisher holds a value, the property keeps its initializer.
|
|
24
|
+
|
|
25
|
+
<sonic-code language="typescript">
|
|
26
|
+
<template>
|
|
27
|
+
type Flight = { code: string; gate: string; status: string };
|
|
28
|
+
const flightKey = new DataProviderKey<Flight>("flight");
|
|
29
|
+
|
|
30
|
+
@subscribe(flightKey)
|
|
31
|
+
@state()
|
|
32
|
+
flight: Flight | null = null;
|
|
33
|
+
</template>
|
|
34
|
+
</sonic-code>
|
|
35
|
+
|
|
36
|
+
## Dynamic path
|
|
37
|
+
|
|
38
|
+
`${prop}` placeholders resolve from properties of the same component. Declare them in the key's second generic so TypeScript requires them on the host. When `seatIndex` changes, the path is resolved again and `person` refreshes; while the placeholder is `null` or `undefined`, the subscription is inactive. Resolution rules: [Dynamic paths](/docs/misc/dynamic-path).
|
|
39
|
+
|
|
40
|
+
<sonic-code language="typescript">
|
|
41
|
+
<template>
|
|
42
|
+
type OnBoard = { name: string; role: string; seat: string };
|
|
43
|
+
const personKey = new DataProviderKey<OnBoard, { seatIndex: number }>(
|
|
44
|
+
"demoOnBoard.${seatIndex}",
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
@property({ type: Number }) seatIndex = 0;
|
|
48
|
+
|
|
49
|
+
@subscribe(personKey)
|
|
50
|
+
@state()
|
|
51
|
+
person: OnBoard | null = null;
|
|
52
|
+
</template>
|
|
53
|
+
</sonic-code>
|
|
54
|
+
|
|
55
|
+
<sonic-code>
|
|
56
|
+
<template>
|
|
57
|
+
<docs-demo-sources for="demo-subscribe-dynamic"></docs-demo-sources>
|
|
58
|
+
<demo-subscribe-dynamic></demo-subscribe-dynamic>
|
|
59
|
+
</template>
|
|
60
|
+
</sonic-code>
|
|
61
|
+
|
|
62
|
+
## Ancestor scope
|
|
63
|
+
|
|
64
|
+
Inside a list row or a `dataProvider` wrapper, read the path from the closest ancestor with [@ancestorAttribute](/docs/decorators/ancestor-attribute), then use it as the placeholder.
|
|
65
|
+
|
|
66
|
+
<sonic-code language="typescript">
|
|
67
|
+
<template>
|
|
68
|
+
const rowKey = new DataProviderKey<OnBoard, { dataProvider: string | null }>(
|
|
69
|
+
"${dataProvider}",
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
@ancestorAttribute("dataProvider")
|
|
73
|
+
dataProvider: string | null = null;
|
|
74
|
+
|
|
75
|
+
@subscribe(rowKey)
|
|
76
|
+
@state()
|
|
77
|
+
person: OnBoard | null = null;
|
|
78
|
+
</template>
|
|
79
|
+
</sonic-code>
|
|
80
|
+
|
|
81
|
+
## API reference
|
|
82
|
+
|
|
83
|
+
| Argument | Type | Description |
|
|
84
|
+
|----------|------|-------------|
|
|
85
|
+
| `key` | `DataProviderKey<T, U>` | Path to read. `U` lists the host properties used by `${…}` placeholders |
|
|
86
|
+
|
|
87
|
+
The decorated property is typed `T` (optionally `| null` or `| undefined`). The subscription starts when the component connects and stops when it disconnects.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors" data-doc-id="docs/decorators/wait-for-ancestors">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>@awaitConnectedAncestors — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. P">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, docs/decorators/wait-for-ancestors, wait-for-ancestors, @awaitConnectedAncestors, decorator, awaitConnectedAncestors, connectedCallback, dataProvider, @dispatchConnectedEvent, element.matches(), @dispatchConnectedEvent(), sonic-connected, CONNECTED, ...selectors: string[]">
|
|
9
|
+
<meta name="concorde-doc-id" content="docs/decorators/wait-for-ancestors">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors">
|
|
11
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors.md">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
16
|
+
</header>
|
|
17
|
+
<main>
|
|
18
|
+
<article>
|
|
19
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde decorator — @awaitConnectedAncestors</strong>. Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. P <span>Doc ID: <code>docs/decorators/wait-for-ancestors</code>. Keywords: Concorde, supersoniks, docs/decorators/wait-for-ancestors, wait-for-ancestors, @awaitConnectedAncestors, decorator, awaitConnectedAncestors, connectedCallback, dataProvider, @dispatchConnectedEvent, element.matches(), @dispatchConnectedEvent(), sonic-connected, CONNECTED, ...selectors: string[]. URL: <a href="https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors">https://concorde.supersoniks.org/docs/decorators/wait-for-ancestors</a>.</span></p>
|
|
20
|
+
<h1 id="awaitconnectedancestors">@awaitConnectedAncestors</h1>
|
|
21
|
+
<p>Delays a component's <code>connectedCallback</code> until its matching ancestors are defined and connected, so context they set up (a <code>dataProvider</code>, a publisher, a fetched payload) is ready when the child starts. Pair it with <code>@dispatchConnectedEvent</code> on the ancestors, which signals readiness.</p>
|
|
22
|
+
<h2 id="import">Import</h2>
|
|
23
|
+
<pre><code class="language-typescript">import {
|
|
24
|
+
awaitConnectedAncestors,
|
|
25
|
+
dispatchConnectedEvent,
|
|
26
|
+
} from "@supersoniks/concorde/decorators";
|
|
27
|
+
|
|
28
|
+
@customElement("flight-scope")
|
|
29
|
+
@dispatchConnectedEvent()
|
|
30
|
+
export class FlightScope extends LitElement {}
|
|
31
|
+
|
|
32
|
+
@customElement("gate-panel")
|
|
33
|
+
@awaitConnectedAncestors("flight-scope")
|
|
34
|
+
export class GatePanel extends LitElement {}
|
|
35
|
+
</code></pre>
|
|
36
|
+
<h2 id="wait-for-an-ancestor">Wait for an ancestor</h2>
|
|
37
|
+
<p>Arguments are CSS selectors tested with <code>element.matches()</code> on each ancestor, across shadow roots. Here the parent element is not defined yet: the child stays uninitialized until you register it.</p>
|
|
38
|
+
<pre><code><docs-demo-sources for="demo-wait-ancestors-section"></docs-demo-sources>
|
|
39
|
+
<demo-wait-ancestors-section></demo-wait-ancestors-section>
|
|
40
|
+
</code></pre>
|
|
41
|
+
<h2 id="several-ancestors">Several ancestors</h2>
|
|
42
|
+
<p>With several selectors, the child waits for every matching ancestor. Register both to initialize it, in any order.</p>
|
|
43
|
+
<pre><code><docs-demo-sources for="demo-wait-ancestors-multi-section"></docs-demo-sources>
|
|
44
|
+
<demo-wait-ancestors-multi-section></demo-wait-ancestors-multi-section>
|
|
45
|
+
</code></pre>
|
|
46
|
+
<h2 id="ancestor-already-connected">Ancestor already connected</h2>
|
|
47
|
+
<p>When the ancestor is already connected, or no ancestor matches, the child initializes immediately.</p>
|
|
48
|
+
<pre><code><docs-demo-sources for="demo-wait-ancestors-ready-section"></docs-demo-sources>
|
|
49
|
+
<demo-wait-ancestors-ready-section></demo-wait-ancestors-ready-section>
|
|
50
|
+
</code></pre>
|
|
51
|
+
<h2 id="signal-readiness">Signal readiness</h2>
|
|
52
|
+
<p><code>@dispatchConnectedEvent()</code> dispatches a bubbling <code>sonic-connected</code> event (exported as <code>CONNECTED</code>) at the end of the ancestor's <code>connectedCallback</code>. You can listen to it anywhere:</p>
|
|
53
|
+
<pre><code class="language-typescript">import { CONNECTED } from "@supersoniks/concorde/decorators";
|
|
54
|
+
|
|
55
|
+
document.addEventListener(CONNECTED, (e) => console.log("ready:", e.target));
|
|
56
|
+
</code></pre>
|
|
57
|
+
<p>Elements without a hyphen in their tag name count as connected. A custom element ancestor that never dispatches the event releases the child after a <strong>5 second</strong> timeout, so decorate the ancestors you wait for.</p>
|
|
58
|
+
<h2 id="api-reference">API reference</h2>
|
|
59
|
+
<table>
|
|
60
|
+
<thead>
|
|
61
|
+
<tr>
|
|
62
|
+
<th>Decorator</th>
|
|
63
|
+
<th>Argument</th>
|
|
64
|
+
<th>Description</th>
|
|
65
|
+
</tr>
|
|
66
|
+
</thead>
|
|
67
|
+
<tbody><tr>
|
|
68
|
+
<td><code>@awaitConnectedAncestors</code></td>
|
|
69
|
+
<td><code>...selectors: string[]</code></td>
|
|
70
|
+
<td>Class decorator. CSS selectors of the ancestors to wait for; with no selector, the class is left unchanged</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td><code>@dispatchConnectedEvent</code></td>
|
|
74
|
+
<td>none</td>
|
|
75
|
+
<td>Class decorator. Dispatches <code>CONNECTED</code> (<code>"sonic-connected"</code>, bubbles) after <code>connectedCallback</code></td>
|
|
76
|
+
</tr>
|
|
77
|
+
</tbody></table>
|
|
78
|
+
|
|
79
|
+
</article>
|
|
80
|
+
</main>
|
|
81
|
+
</body>
|
|
82
|
+
</html>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# @awaitConnectedAncestors
|
|
2
|
+
|
|
3
|
+
Delays a component's `connectedCallback` until its matching ancestors are defined and connected, so context they set up (a `dataProvider`, a publisher, a fetched payload) is ready when the child starts. Pair it with `@dispatchConnectedEvent` on the ancestors, which signals readiness.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
<sonic-code language="typescript">
|
|
8
|
+
<template>
|
|
9
|
+
import {
|
|
10
|
+
awaitConnectedAncestors,
|
|
11
|
+
dispatchConnectedEvent,
|
|
12
|
+
} from "@supersoniks/concorde/decorators";
|
|
13
|
+
|
|
14
|
+
@customElement("flight-scope")
|
|
15
|
+
@dispatchConnectedEvent()
|
|
16
|
+
export class FlightScope extends LitElement {}
|
|
17
|
+
|
|
18
|
+
@customElement("gate-panel")
|
|
19
|
+
@awaitConnectedAncestors("flight-scope")
|
|
20
|
+
export class GatePanel extends LitElement {}
|
|
21
|
+
</template>
|
|
22
|
+
</sonic-code>
|
|
23
|
+
|
|
24
|
+
## Wait for an ancestor
|
|
25
|
+
|
|
26
|
+
Arguments are CSS selectors tested with `element.matches()` on each ancestor, across shadow roots. Here the parent element is not defined yet: the child stays uninitialized until you register it.
|
|
27
|
+
|
|
28
|
+
<sonic-code>
|
|
29
|
+
<template>
|
|
30
|
+
<docs-demo-sources for="demo-wait-ancestors-section"></docs-demo-sources>
|
|
31
|
+
<demo-wait-ancestors-section></demo-wait-ancestors-section>
|
|
32
|
+
</template>
|
|
33
|
+
</sonic-code>
|
|
34
|
+
|
|
35
|
+
## Several ancestors
|
|
36
|
+
|
|
37
|
+
With several selectors, the child waits for every matching ancestor. Register both to initialize it, in any order.
|
|
38
|
+
|
|
39
|
+
<sonic-code>
|
|
40
|
+
<template>
|
|
41
|
+
<docs-demo-sources for="demo-wait-ancestors-multi-section"></docs-demo-sources>
|
|
42
|
+
<demo-wait-ancestors-multi-section></demo-wait-ancestors-multi-section>
|
|
43
|
+
</template>
|
|
44
|
+
</sonic-code>
|
|
45
|
+
|
|
46
|
+
## Ancestor already connected
|
|
47
|
+
|
|
48
|
+
When the ancestor is already connected, or no ancestor matches, the child initializes immediately.
|
|
49
|
+
|
|
50
|
+
<sonic-code>
|
|
51
|
+
<template>
|
|
52
|
+
<docs-demo-sources for="demo-wait-ancestors-ready-section"></docs-demo-sources>
|
|
53
|
+
<demo-wait-ancestors-ready-section></demo-wait-ancestors-ready-section>
|
|
54
|
+
</template>
|
|
55
|
+
</sonic-code>
|
|
56
|
+
|
|
57
|
+
## Signal readiness
|
|
58
|
+
|
|
59
|
+
`@dispatchConnectedEvent()` dispatches a bubbling `sonic-connected` event (exported as `CONNECTED`) at the end of the ancestor's `connectedCallback`. You can listen to it anywhere:
|
|
60
|
+
|
|
61
|
+
<sonic-code language="typescript">
|
|
62
|
+
<template>
|
|
63
|
+
import { CONNECTED } from "@supersoniks/concorde/decorators";
|
|
64
|
+
|
|
65
|
+
document.addEventListener(CONNECTED, (e) => console.log("ready:", e.target));
|
|
66
|
+
</template>
|
|
67
|
+
</sonic-code>
|
|
68
|
+
|
|
69
|
+
Elements without a hyphen in their tag name count as connected. A custom element ancestor that never dispatches the event releases the child after a **5 second** timeout, so decorate the ancestors you wait for.
|
|
70
|
+
|
|
71
|
+
## API reference
|
|
72
|
+
|
|
73
|
+
| Decorator | Argument | Description |
|
|
74
|
+
|-----------|----------|-------------|
|
|
75
|
+
| `@awaitConnectedAncestors` | `...selectors: string[]` | Class decorator. CSS selectors of the ancestors to wait for; with no selector, the class is left unchanged |
|
|
76
|
+
| `@dispatchConnectedEvent` | none | Class decorator. Dispatches `CONNECTED` (`"sonic-connected"`, bubbles) after `connectedCallback` |
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/docs/directives/sub" data-doc-id="docs/directives/sub">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>sub() — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="sub(path) is a Lit directive that renders the current value of a store path and updates in place on every assignment. Use it inside html templates for read-only display; in a decorator, the same path ">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, docs/directives/sub, sub, sub(), directive, sub(path), html, ${prop}, null, undefined, skipEmptyPlaceholder, get(path), @supersoniks/concorde/utils">
|
|
9
|
+
<meta name="concorde-doc-id" content="docs/directives/sub">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/docs/directives/sub">
|
|
11
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/docs/directives/sub.md">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/docs/directives/sub">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
16
|
+
</header>
|
|
17
|
+
<main>
|
|
18
|
+
<article>
|
|
19
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde directive — sub()</strong>. sub(path) is a Lit directive that renders the current value of a store path and updates in place on every assignment. Use it inside html templates for read-only display; in a decorator, the same path <span>Doc ID: <code>docs/directives/sub</code>. Keywords: Concorde, supersoniks, docs/directives/sub, sub, sub(), directive, sub(path), html, ${prop}, null, undefined, skipEmptyPlaceholder, get(path), @supersoniks/concorde/utils. URL: <a href="https://concorde.supersoniks.org/docs/directives/sub">https://concorde.supersoniks.org/docs/directives/sub</a>.</span></p>
|
|
20
|
+
<h1 id="sub">sub()</h1>
|
|
21
|
+
<p><code>sub(path)</code> is a Lit directive that renders the current value of a store path and updates in place on every assignment. Use it inside <code>html</code> templates for read-only display; in a decorator, the same path goes to <a href="/docs/decorators/subscribe">@subscribe</a>. See <a href="/docs/getting-started/dataFlow">Data flow</a> for the overall model.</p>
|
|
22
|
+
<h2 id="import">Import</h2>
|
|
23
|
+
<pre><code class="language-typescript">import { sub } from "@supersoniks/concorde/directives";
|
|
24
|
+
|
|
25
|
+
render() {
|
|
26
|
+
return html`&lt;p&gt;Altitude: ${sub("cockpit.altitude")} ft&lt;/p&gt;`;
|
|
27
|
+
}
|
|
28
|
+
</code></pre>
|
|
29
|
+
<h2 id="dataproviderkey">DataProviderKey</h2>
|
|
30
|
+
<p>Pass a <a href="/docs/misc/dataProviderKey">DataProviderKey</a> instead of a string to get a typo-safe path. Until the publisher holds a value, nothing is rendered.</p>
|
|
31
|
+
<pre><code class="language-typescript">import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
32
|
+
|
|
33
|
+
const flightKey = new DataProviderKey&lt;{ code: string; gate: string }&gt;("flight");
|
|
34
|
+
|
|
35
|
+
render() {
|
|
36
|
+
return html`&lt;p&gt;${sub(flightKey.code)} · gate ${sub(flightKey.gate)}&lt;/p&gt;`;
|
|
37
|
+
}
|
|
38
|
+
</code></pre>
|
|
39
|
+
<h2 id="dynamic-path">Dynamic path</h2>
|
|
40
|
+
<p><code>${prop}</code> placeholders resolve from properties of the component that renders the template; the directive re-subscribes when they change. While a placeholder is <code>null</code> or <code>undefined</code>, nothing is rendered. Rules: <a href="/docs/misc/dynamic-path">Dynamic paths</a>. <code>skipEmptyPlaceholder</code> is not available on <code>sub()</code>.</p>
|
|
41
|
+
<pre><code class="language-typescript">const personKey = new DataProviderKey&lt;OnBoard, { seatIndex: number }&gt;(
|
|
42
|
+
"demoOnBoard.${seatIndex}",
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
@property({ type: Number }) seatIndex = 0;
|
|
46
|
+
|
|
47
|
+
render() {
|
|
48
|
+
return html`&lt;strong&gt;${sub(personKey.name)}&lt;/strong&gt; · ${sub(personKey.role)}`;
|
|
49
|
+
}
|
|
50
|
+
</code></pre>
|
|
51
|
+
<pre><code><docs-demo-sources for="demo-sub-template"></docs-demo-sources>
|
|
52
|
+
<demo-sub-template></demo-sub-template>
|
|
53
|
+
</code></pre>
|
|
54
|
+
<h2 id="sub-or-get">sub() or get()</h2>
|
|
55
|
+
<p><code>get(path)</code> from <code>@supersoniks/concorde/utils</code> returns a one-time snapshot: in a template it never updates. Use <code>sub()</code> in templates and <code>get</code> / <code>set</code> / <code>dp</code> in imperative code.</p>
|
|
56
|
+
<pre><code class="language-typescript">html`${sub(flightKey.gate)}`; // updates on gate change
|
|
57
|
+
html`${get(flightKey.gate)}`; // frozen at first render
|
|
58
|
+
</code></pre>
|
|
59
|
+
<h2 id="api-reference">API reference</h2>
|
|
60
|
+
<table>
|
|
61
|
+
<thead>
|
|
62
|
+
<tr>
|
|
63
|
+
<th>Argument</th>
|
|
64
|
+
<th>Type</th>
|
|
65
|
+
<th>Description</th>
|
|
66
|
+
</tr>
|
|
67
|
+
</thead>
|
|
68
|
+
<tbody><tr>
|
|
69
|
+
<td><code>path</code></td>
|
|
70
|
+
<td><code>string</code> or <code>DataProviderKey<T, U></code></td>
|
|
71
|
+
<td>Path to read. Placeholders resolve on the template host</td>
|
|
72
|
+
</tr>
|
|
73
|
+
</tbody></table>
|
|
74
|
+
<p>The directive subscribes when its part connects and unsubscribes when it disconnects.</p>
|
|
75
|
+
|
|
76
|
+
</article>
|
|
77
|
+
</main>
|
|
78
|
+
</body>
|
|
79
|
+
</html>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# sub()
|
|
2
|
+
|
|
3
|
+
`sub(path)` is a Lit directive that renders the current value of a store path and updates in place on every assignment. Use it inside `html` templates for read-only display; in a decorator, the same path goes to [@subscribe](/docs/decorators/subscribe). See [Data flow](/docs/getting-started/dataFlow) for the overall model.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
<sonic-code language="typescript">
|
|
8
|
+
<template>
|
|
9
|
+
import { sub } from "@supersoniks/concorde/directives";
|
|
10
|
+
|
|
11
|
+
render() {
|
|
12
|
+
return html`<p>Altitude: ${sub("cockpit.altitude")} ft</p>`;
|
|
13
|
+
}
|
|
14
|
+
</template>
|
|
15
|
+
</sonic-code>
|
|
16
|
+
|
|
17
|
+
## DataProviderKey
|
|
18
|
+
|
|
19
|
+
Pass a [DataProviderKey](/docs/misc/dataProviderKey) instead of a string to get a typo-safe path. Until the publisher holds a value, nothing is rendered.
|
|
20
|
+
|
|
21
|
+
<sonic-code language="typescript">
|
|
22
|
+
<template>
|
|
23
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
24
|
+
|
|
25
|
+
const flightKey = new DataProviderKey<{ code: string; gate: string }>("flight");
|
|
26
|
+
|
|
27
|
+
render() {
|
|
28
|
+
return html`<p>${sub(flightKey.code)} · gate ${sub(flightKey.gate)}</p>`;
|
|
29
|
+
}
|
|
30
|
+
</template>
|
|
31
|
+
</sonic-code>
|
|
32
|
+
|
|
33
|
+
## Dynamic path
|
|
34
|
+
|
|
35
|
+
`${prop}` placeholders resolve from properties of the component that renders the template; the directive re-subscribes when they change. While a placeholder is `null` or `undefined`, nothing is rendered. Rules: [Dynamic paths](/docs/misc/dynamic-path). `skipEmptyPlaceholder` is not available on `sub()`.
|
|
36
|
+
|
|
37
|
+
<sonic-code language="typescript">
|
|
38
|
+
<template>
|
|
39
|
+
const personKey = new DataProviderKey<OnBoard, { seatIndex: number }>(
|
|
40
|
+
"demoOnBoard.${seatIndex}",
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
@property({ type: Number }) seatIndex = 0;
|
|
44
|
+
|
|
45
|
+
render() {
|
|
46
|
+
return html`<strong>${sub(personKey.name)}</strong> · ${sub(personKey.role)}`;
|
|
47
|
+
}
|
|
48
|
+
</template>
|
|
49
|
+
</sonic-code>
|
|
50
|
+
|
|
51
|
+
<sonic-code>
|
|
52
|
+
<template>
|
|
53
|
+
<docs-demo-sources for="demo-sub-template"></docs-demo-sources>
|
|
54
|
+
<demo-sub-template></demo-sub-template>
|
|
55
|
+
</template>
|
|
56
|
+
</sonic-code>
|
|
57
|
+
|
|
58
|
+
## sub() or get()
|
|
59
|
+
|
|
60
|
+
`get(path)` from `@supersoniks/concorde/utils` returns a one-time snapshot: in a template it never updates. Use `sub()` in templates and `get` / `set` / `dp` in imperative code.
|
|
61
|
+
|
|
62
|
+
<sonic-code language="typescript">
|
|
63
|
+
<template>
|
|
64
|
+
html`${sub(flightKey.gate)}`; // updates on gate change
|
|
65
|
+
html`${get(flightKey.gate)}`; // frozen at first render
|
|
66
|
+
</template>
|
|
67
|
+
</sonic-code>
|
|
68
|
+
|
|
69
|
+
## API reference
|
|
70
|
+
|
|
71
|
+
| Argument | Type | Description |
|
|
72
|
+
|----------|------|-------------|
|
|
73
|
+
| `path` | `string` or `DataProviderKey<T, U>` | Path to read. Placeholders resolve on the template host |
|
|
74
|
+
|
|
75
|
+
The directive subscribes when its part connects and unsubscribes when it disconnects.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-doc-url="https://concorde.supersoniks.org/docs/directives/t" data-doc-id="docs/directives/t">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>t() — Concorde by Supersoniks</title>
|
|
7
|
+
<meta name="description" content="Lit directive that renders a translated label by key. Keys are batched into one GET to the endpoint set by the nearest wordingProvider ancestor attribute, and results are cached in localStorage.">
|
|
8
|
+
<meta name="keywords" content="Concorde, supersoniks, docs/directives/t, t, t(), directive, wordingProvider, localStorage, wording, are aliases of , . In plain HTML, use the [, serviceURL, t(key), labels[]">
|
|
9
|
+
<meta name="concorde-doc-id" content="docs/directives/t">
|
|
10
|
+
<link rel="canonical" href="https://concorde.supersoniks.org/docs/directives/t">
|
|
11
|
+
<link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/docs/directives/t.md">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/docs/directives/t">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
|
|
16
|
+
</header>
|
|
17
|
+
<main>
|
|
18
|
+
<article>
|
|
19
|
+
<p class="doc-lead" id="doc-summary"><strong>Concorde directive — t()</strong>. Lit directive that renders a translated label by key. Keys are batched into one GET to the endpoint set by the nearest wordingProvider ancestor attribute, and results are cached in localStorage. <span>Doc ID: <code>docs/directives/t</code>. Keywords: Concorde, supersoniks, docs/directives/t, t, t(), directive, wordingProvider, localStorage, wording, are aliases of , . In plain HTML, use the [, serviceURL, t(key), labels[]. URL: <a href="https://concorde.supersoniks.org/docs/directives/t">https://concorde.supersoniks.org/docs/directives/t</a>.</span></p>
|
|
20
|
+
<h1 id="t">t()</h1>
|
|
21
|
+
<p>Lit directive that renders a translated label by key. Keys are batched into one GET to the endpoint set by the nearest <code>wordingProvider</code> ancestor attribute, and results are cached in <code>localStorage</code>.</p>
|
|
22
|
+
<h2 id="import">Import</h2>
|
|
23
|
+
<pre><code class="language-typescript">import { t } from "@supersoniks/concorde/directives/Wording";
|
|
24
|
+
</code></pre>
|
|
25
|
+
<p><code>wording</code> and <code>w</code> are aliases of <code>t</code>. In plain HTML, use the <a href="/core/components/functional/translation"><code>sonic-t</code></a> element.</p>
|
|
26
|
+
<h2 id="usage">Usage</h2>
|
|
27
|
+
<p>Set <code>serviceURL</code> and <code>wordingProvider</code> on the host component or one of its ancestors, then call <code>t(key)</code> in a template. Attributes on elements <strong>inside</strong> the component's own template are not read. Click the button to bump the version and reload the labels.</p>
|
|
28
|
+
<p><docs-lit-demo for="docs-api-config-wording-demo"></docs-lit-demo></p>
|
|
29
|
+
<h2 id="endpoint-contract">Endpoint contract</h2>
|
|
30
|
+
<p>All keys requested in the same tick are sent in one request, appended to <code>wordingProvider</code> as <code>labels[]</code>:</p>
|
|
31
|
+
<pre><code class="language-shell">GET {serviceURL}/wording/labels?lang=fr&labels[]=greeting&labels[]=farewell
|
|
32
|
+
</code></pre>
|
|
33
|
+
<p>The response is a flat map of key to label:</p>
|
|
34
|
+
<pre><code class="language-json">{ "greeting": "Bonjour", "farewell": "Au revoir" }
|
|
35
|
+
</code></pre>
|
|
36
|
+
<p>Until the label arrives, <code>t()</code> renders an empty string.</p>
|
|
37
|
+
<h2 id="html-labels">HTML labels</h2>
|
|
38
|
+
<p><code>t()</code> escapes the label. Use <code>unsafeWording(key)</code> for labels that contain trusted HTML.</p>
|
|
39
|
+
<pre><code class="language-typescript">import { unsafeWording } from "@supersoniks/concorde/directives/Wording";
|
|
40
|
+
|
|
41
|
+
html`&lt;p&gt;${unsafeWording("terms.notice")}&lt;/p&gt;`;
|
|
42
|
+
</code></pre>
|
|
43
|
+
<h2 id="reloading-labels">Reloading labels</h2>
|
|
44
|
+
<p>Labels are fetched again when:</p>
|
|
45
|
+
<ul>
|
|
46
|
+
<li>the <code>lang</code> attribute of <code><html></code> changes</li>
|
|
47
|
+
<li>the number stored at <code>wordingVersionProvider</code> changes — bump it after publishing new labels to invalidate the <code>localStorage</code> cache</li>
|
|
48
|
+
</ul>
|
|
49
|
+
<h2 id="api-reference">API reference</h2>
|
|
50
|
+
<table>
|
|
51
|
+
<thead>
|
|
52
|
+
<tr>
|
|
53
|
+
<th>Function</th>
|
|
54
|
+
<th>Description</th>
|
|
55
|
+
</tr>
|
|
56
|
+
</thead>
|
|
57
|
+
<tbody><tr>
|
|
58
|
+
<td><code>t(key)</code> · <code>wording(key)</code> · <code>w(key)</code></td>
|
|
59
|
+
<td>Renders the escaped label for <code>key</code></td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td><code>unsafeWording(key)</code></td>
|
|
63
|
+
<td>Renders the label as HTML</td>
|
|
64
|
+
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td><code>isWordingReady(key)</code></td>
|
|
67
|
+
<td><code>true</code> once the label for <code>key</code> is loaded</td>
|
|
68
|
+
</tr>
|
|
69
|
+
</tbody></table>
|
|
70
|
+
<table>
|
|
71
|
+
<thead>
|
|
72
|
+
<tr>
|
|
73
|
+
<th>Ancestor attribute</th>
|
|
74
|
+
<th>Description</th>
|
|
75
|
+
</tr>
|
|
76
|
+
</thead>
|
|
77
|
+
<tbody><tr>
|
|
78
|
+
<td><code>wordingProvider</code></td>
|
|
79
|
+
<td>Endpoint path and query, relative to <code>serviceURL</code></td>
|
|
80
|
+
</tr>
|
|
81
|
+
<tr>
|
|
82
|
+
<td><code>wordingVersionProvider</code></td>
|
|
83
|
+
<td>DataProvider path holding a version number</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</tbody></table>
|
|
86
|
+
<p>Other ancestor attributes (<code>serviceURL</code>, <code>token</code>, …) apply as for any request: see <a href="/docs/misc/api-configuration">API configuration</a>.</p>
|
|
87
|
+
|
|
88
|
+
</article>
|
|
89
|
+
</main>
|
|
90
|
+
</body>
|
|
91
|
+
</html>
|