@supersoniks/concorde 4.8.0 → 4.9.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/.github/workflows/ci.yml +21 -0
- package/.github-export-ignore +30 -0
- package/.gitlab-ci.yml +13 -0
- package/CONTRIBUTING.md +59 -0
- package/DEV.md +54 -0
- package/LICENSE +21 -0
- package/OPEN_SOURCE_CHECKPOINT.md +133 -0
- package/README.md +29 -15
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +271 -271
- package/concorde-core.es.js +4503 -4389
- package/dist/concorde-core.bundle.js +271 -271
- package/dist/concorde-core.es.js +4503 -4389
- package/dist/docs-mock-api-sw.js +3 -2
- package/dist/docs-mock-api-sw.js.map +2 -2
- package/dist/js/components.js +12 -0
- package/dist/js/components.js.map +1 -0
- package/dist/js/concorde-loaded.js +5 -0
- package/dist/js/concorde-loaded.js.map +1 -0
- package/dist/js/core/_types/endpoint.js +5 -0
- package/dist/js/core/_types/endpoint.js.map +1 -0
- package/dist/js/core/_types/key.js +2 -0
- package/dist/js/core/_types/key.js.map +1 -0
- package/dist/js/core/_types/types.js +3 -0
- package/dist/js/core/_types/types.js.map +1 -0
- package/dist/js/core/components/functional/date/date.js +272 -0
- package/dist/js/core/components/functional/date/date.js.map +1 -0
- package/dist/js/core/components/functional/example/example.js +44 -0
- package/dist/js/core/components/functional/example/example.js.map +1 -0
- package/dist/js/core/components/functional/fetch/fetch.js +79 -0
- package/dist/js/core/components/functional/fetch/fetch.js.map +1 -0
- package/dist/js/core/components/functional/functional.js +17 -0
- package/dist/js/core/components/functional/functional.js.map +1 -0
- package/dist/js/core/components/functional/if/if.js +39 -0
- package/dist/js/core/components/functional/if/if.js.map +1 -0
- package/dist/js/core/components/functional/list/list.js +341 -0
- package/dist/js/core/components/functional/list/list.js.map +1 -0
- package/dist/js/core/components/functional/mix/mix.js +103 -0
- package/dist/js/core/components/functional/mix/mix.js.map +1 -0
- package/dist/js/core/components/functional/queue/queue.js +386 -0
- package/dist/js/core/components/functional/queue/queue.js.map +1 -0
- package/dist/js/core/components/functional/router/redirect.js +54 -0
- package/dist/js/core/components/functional/router/redirect.js.map +1 -0
- package/dist/js/core/components/functional/router/router.js +179 -0
- package/dist/js/core/components/functional/router/router.js.map +1 -0
- package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +216 -0
- package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +1 -0
- package/dist/js/core/components/functional/sdui/default-library.json +108 -0
- package/dist/js/core/components/functional/sdui/sdui-utils.js +64 -0
- package/dist/js/core/components/functional/sdui/sdui-utils.js.map +1 -0
- package/dist/js/core/components/functional/sdui/sdui.js +266 -0
- package/dist/js/core/components/functional/sdui/sdui.js.map +1 -0
- package/dist/js/core/components/functional/sdui/types.js +2 -0
- package/dist/js/core/components/functional/sdui/types.js.map +1 -0
- package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +22 -0
- package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +1 -0
- package/dist/js/core/components/functional/states/states.js +172 -0
- package/dist/js/core/components/functional/states/states.js.map +1 -0
- package/dist/js/core/components/functional/submit/submit.js +284 -0
- package/dist/js/core/components/functional/submit/submit.js.map +1 -0
- package/dist/js/core/components/functional/subscriber/subscriber.js +39 -0
- package/dist/js/core/components/functional/subscriber/subscriber.js.map +1 -0
- package/dist/js/core/components/functional/translation/translation.js +28 -0
- package/dist/js/core/components/functional/translation/translation.js.map +1 -0
- package/dist/js/core/components/functional/value/value.js +28 -0
- package/dist/js/core/components/functional/value/value.js.map +1 -0
- package/dist/js/core/components/ui/_css/scroll.js +25 -0
- package/dist/js/core/components/ui/_css/scroll.js.map +1 -0
- package/dist/js/core/components/ui/_css/shadow.js +22 -0
- package/dist/js/core/components/ui/_css/shadow.js.map +1 -0
- package/dist/js/core/components/ui/_css/size.js +36 -0
- package/dist/js/core/components/ui/_css/size.js.map +1 -0
- package/dist/js/core/components/ui/_css/type.js +92 -0
- package/dist/js/core/components/ui/_css/type.js.map +1 -0
- package/dist/js/core/components/ui/alert/alert.js +213 -0
- package/dist/js/core/components/ui/alert/alert.js.map +1 -0
- package/dist/js/core/components/ui/alert-messages/alert-messages.js +68 -0
- package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -0
- package/dist/js/core/components/ui/badge/badge.js +199 -0
- package/dist/js/core/components/ui/badge/badge.js.map +1 -0
- package/dist/js/core/components/ui/button/button.js +697 -0
- package/dist/js/core/components/ui/button/button.js.map +1 -0
- package/dist/js/core/components/ui/captcha/altchaStyles.js +226 -0
- package/dist/js/core/components/ui/captcha/altchaStyles.js.map +1 -0
- package/dist/js/core/components/ui/captcha/captcha.js +167 -0
- package/dist/js/core/components/ui/captcha/captcha.js.map +1 -0
- package/dist/js/core/components/ui/card/card-footer.js +26 -0
- package/dist/js/core/components/ui/card/card-footer.js.map +1 -0
- package/dist/js/core/components/ui/card/card-header-descripton.js +30 -0
- package/dist/js/core/components/ui/card/card-header-descripton.js.map +1 -0
- package/dist/js/core/components/ui/card/card-header.js +79 -0
- package/dist/js/core/components/ui/card/card-header.js.map +1 -0
- package/dist/js/core/components/ui/card/card-main.js +26 -0
- package/dist/js/core/components/ui/card/card-main.js.map +1 -0
- package/dist/js/core/components/ui/card/card.js +67 -0
- package/dist/js/core/components/ui/card/card.js.map +1 -0
- package/dist/js/core/components/ui/divider/divider.js +200 -0
- package/dist/js/core/components/ui/divider/divider.js.map +1 -0
- package/dist/js/core/components/ui/form/checkbox/checkbox.js +257 -0
- package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -0
- package/dist/js/core/components/ui/form/css/form-control.js +393 -0
- package/dist/js/core/components/ui/form/css/form-control.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/fieldset.js +124 -0
- package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/legend-description.js +38 -0
- package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +1 -0
- package/dist/js/core/components/ui/form/fieldset/legend.js +130 -0
- package/dist/js/core/components/ui/form/fieldset/legend.js.map +1 -0
- package/dist/js/core/components/ui/form/form-actions/form-actions.js +47 -0
- package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +1 -0
- package/dist/js/core/components/ui/form/form-layout/form-layout.js +84 -0
- package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +1 -0
- package/dist/js/core/components/ui/form/input/input.js +316 -0
- package/dist/js/core/components/ui/form/input/input.js.map +1 -0
- package/dist/js/core/components/ui/form/input/password-helper.js +134 -0
- package/dist/js/core/components/ui/form/input/password-helper.js.map +1 -0
- package/dist/js/core/components/ui/form/input/same-value-helper.js +85 -0
- package/dist/js/core/components/ui/form/input/same-value-helper.js.map +1 -0
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +405 -0
- package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -0
- package/dist/js/core/components/ui/form/radio/radio.js +63 -0
- package/dist/js/core/components/ui/form/radio/radio.js.map +1 -0
- package/dist/js/core/components/ui/form/select/select.js +323 -0
- package/dist/js/core/components/ui/form/select/select.js.map +1 -0
- package/dist/js/core/components/ui/form/switch/switch.js +90 -0
- package/dist/js/core/components/ui/form/switch/switch.js.map +1 -0
- package/dist/js/core/components/ui/form/textarea/textarea.js +162 -0
- package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -0
- package/dist/js/core/components/ui/group/group.js +128 -0
- package/dist/js/core/components/ui/group/group.js.map +1 -0
- package/dist/js/core/components/ui/icon/icon.js +129 -0
- package/dist/js/core/components/ui/icon/icon.js.map +1 -0
- package/dist/js/core/components/ui/icon/icons.js +163 -0
- package/dist/js/core/components/ui/icon/icons.js.map +1 -0
- package/dist/js/core/components/ui/icon/icons.json +1 -0
- package/dist/js/core/components/ui/image/image.js +160 -0
- package/dist/js/core/components/ui/image/image.js.map +1 -0
- package/dist/js/core/components/ui/link/link.js +125 -0
- package/dist/js/core/components/ui/link/link.js.map +1 -0
- package/dist/js/core/components/ui/loader/loader.js +106 -0
- package/dist/js/core/components/ui/loader/loader.js.map +1 -0
- package/dist/js/core/components/ui/loader/styles/fixed.js +56 -0
- package/dist/js/core/components/ui/loader/styles/fixed.js.map +1 -0
- package/dist/js/core/components/ui/loader/styles/inline.js +70 -0
- package/dist/js/core/components/ui/loader/styles/inline.js.map +1 -0
- package/dist/js/core/components/ui/menu/menu-item.js +35 -0
- package/dist/js/core/components/ui/menu/menu-item.js.map +1 -0
- package/dist/js/core/components/ui/menu/menu.js +436 -0
- package/dist/js/core/components/ui/menu/menu.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-actions.js +44 -0
- package/dist/js/core/components/ui/modal/modal-actions.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-close.js +56 -0
- package/dist/js/core/components/ui/modal/modal-close.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-content.js +27 -0
- package/dist/js/core/components/ui/modal/modal-content.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-subtitle.js +34 -0
- package/dist/js/core/components/ui/modal/modal-subtitle.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-title.js +35 -0
- package/dist/js/core/components/ui/modal/modal-title.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal-utils.js +32 -0
- package/dist/js/core/components/ui/modal/modal-utils.js.map +1 -0
- package/dist/js/core/components/ui/modal/modal.js +568 -0
- package/dist/js/core/components/ui/modal/modal.js.map +1 -0
- package/dist/js/core/components/ui/pop/pop.js +337 -0
- package/dist/js/core/components/ui/pop/pop.js.map +1 -0
- package/dist/js/core/components/ui/progress/progress.js +164 -0
- package/dist/js/core/components/ui/progress/progress.js.map +1 -0
- package/dist/js/core/components/ui/table/table-caption.js +29 -0
- package/dist/js/core/components/ui/table/table-caption.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tbody.js +41 -0
- package/dist/js/core/components/ui/table/table-tbody.js.map +1 -0
- package/dist/js/core/components/ui/table/table-td.js +69 -0
- package/dist/js/core/components/ui/table/table-td.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tfoot.js +28 -0
- package/dist/js/core/components/ui/table/table-tfoot.js.map +1 -0
- package/dist/js/core/components/ui/table/table-th.js +80 -0
- package/dist/js/core/components/ui/table/table-th.js.map +1 -0
- package/dist/js/core/components/ui/table/table-thead.js +26 -0
- package/dist/js/core/components/ui/table/table-thead.js.map +1 -0
- package/dist/js/core/components/ui/table/table-tr.js +67 -0
- package/dist/js/core/components/ui/table/table-tr.js.map +1 -0
- package/dist/js/core/components/ui/table/table.js +106 -0
- package/dist/js/core/components/ui/table/table.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +74 -0
- package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/dark.js +39 -0
- package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme-collection/light.js +32 -0
- package/dist/js/core/components/ui/theme/theme-collection/light.js.map +1 -0
- package/dist/js/core/components/ui/theme/theme.js +150 -0
- package/dist/js/core/components/ui/theme/theme.js.map +1 -0
- package/dist/js/core/components/ui/toast/message-subscriber.js +41 -0
- package/dist/js/core/components/ui/toast/message-subscriber.js.map +1 -0
- package/dist/js/core/components/ui/toast/toast-item.js +379 -0
- package/dist/js/core/components/ui/toast/toast-item.js.map +1 -0
- package/dist/js/core/components/ui/toast/toast.js +269 -0
- package/dist/js/core/components/ui/toast/toast.js.map +1 -0
- package/dist/js/core/components/ui/toast/types.js +2 -0
- package/dist/js/core/components/ui/toast/types.js.map +1 -0
- package/dist/js/core/components/ui/tooltip/tooltip.js +219 -0
- package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -0
- package/dist/js/core/components/ui/ui.js +41 -0
- package/dist/js/core/components/ui/ui.js.map +1 -0
- package/dist/js/core/core.js +14 -0
- package/dist/js/core/core.js.map +1 -0
- package/dist/js/core/decorators/Subscriber.js +9 -0
- package/dist/js/core/decorators/Subscriber.js.map +1 -0
- package/dist/js/core/decorators/api.js +611 -0
- package/dist/js/core/decorators/api.js.map +1 -0
- package/dist/js/core/decorators/lifecycle.js +67 -0
- package/dist/js/core/decorators/lifecycle.js.map +1 -0
- package/dist/js/core/decorators/subscriber/ancestorAttribute.js +27 -0
- package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -0
- package/dist/js/core/decorators/subscriber/autoFill.js +26 -0
- package/dist/js/core/decorators/subscriber/autoFill.js.map +1 -0
- package/dist/js/core/decorators/subscriber/autoSubscribe.js +46 -0
- package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +1 -0
- package/dist/js/core/decorators/subscriber/bind.js +150 -0
- package/dist/js/core/decorators/subscriber/bind.js.map +1 -0
- package/dist/js/core/decorators/subscriber/common.js +44 -0
- package/dist/js/core/decorators/subscriber/common.js.map +1 -0
- package/dist/js/core/decorators/subscriber/dynamicPath.js +75 -0
- package/dist/js/core/decorators/subscriber/dynamicPath.js.map +1 -0
- package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +138 -0
- package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +1 -0
- package/dist/js/core/decorators/subscriber/handle.js +22 -0
- package/dist/js/core/decorators/subscriber/handle.js.map +1 -0
- package/dist/js/core/decorators/subscriber/onAssign.js +199 -0
- package/dist/js/core/decorators/subscriber/onAssign.js.map +1 -0
- package/dist/js/core/decorators/subscriber/publish.js +108 -0
- package/dist/js/core/decorators/subscriber/publish.js.map +1 -0
- package/dist/js/core/decorators/subscriber/publisherPath.js +16 -0
- package/dist/js/core/decorators/subscriber/publisherPath.js.map +1 -0
- package/dist/js/core/decorators/subscriber/subscribe.js +20 -0
- package/dist/js/core/decorators/subscriber/subscribe.js.map +1 -0
- package/dist/js/core/directives/DataProvider.js +127 -0
- package/dist/js/core/directives/DataProvider.js.map +1 -0
- package/dist/js/core/directives/Wording.js +221 -0
- package/dist/js/core/directives/Wording.js.map +1 -0
- package/dist/js/core/mixins/Fetcher.js +325 -0
- package/dist/js/core/mixins/Fetcher.js.map +1 -0
- package/dist/js/core/mixins/FormCheckable.js +313 -0
- package/dist/js/core/mixins/FormCheckable.js.map +1 -0
- package/dist/js/core/mixins/FormElement.js +304 -0
- package/dist/js/core/mixins/FormElement.js.map +1 -0
- package/dist/js/core/mixins/FormInput.js +82 -0
- package/dist/js/core/mixins/FormInput.js.map +1 -0
- package/dist/js/core/mixins/Subscriber.js +354 -0
- package/dist/js/core/mixins/Subscriber.js.map +1 -0
- package/dist/js/core/mixins/TemplatesContainer.js +70 -0
- package/dist/js/core/mixins/TemplatesContainer.js.map +1 -0
- package/dist/js/core/mixins/mixins.js +7 -0
- package/dist/js/core/mixins/mixins.js.map +1 -0
- package/dist/js/core/utils/AncestorAttributeObserver.js +140 -0
- package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -0
- package/dist/js/core/utils/Arrays.js +141 -0
- package/dist/js/core/utils/Arrays.js.map +1 -0
- package/dist/js/core/utils/DataBindObserver.js +265 -0
- package/dist/js/core/utils/DataBindObserver.js.map +1 -0
- package/dist/js/core/utils/Electron.js +14 -0
- package/dist/js/core/utils/Electron.js.map +1 -0
- package/dist/js/core/utils/Format.js +43 -0
- package/dist/js/core/utils/Format.js.map +1 -0
- package/dist/js/core/utils/HTML.js +248 -0
- package/dist/js/core/utils/HTML.js.map +1 -0
- package/dist/js/core/utils/LocationHandler.js +143 -0
- package/dist/js/core/utils/LocationHandler.js.map +1 -0
- package/dist/js/core/utils/Objects.js +111 -0
- package/dist/js/core/utils/Objects.js.map +1 -0
- package/dist/js/core/utils/PublisherProxy.js +946 -0
- package/dist/js/core/utils/PublisherProxy.js.map +1 -0
- package/dist/js/core/utils/Utils.js +19 -0
- package/dist/js/core/utils/Utils.js.map +1 -0
- package/dist/js/core/utils/aesCrypto.js +98 -0
- package/dist/js/core/utils/aesCrypto.js.map +1 -0
- package/dist/js/core/utils/api.js +574 -0
- package/dist/js/core/utils/api.js.map +1 -0
- package/dist/js/core/utils/dataProviderKey.js +64 -0
- package/dist/js/core/utils/dataProviderKey.js.map +1 -0
- package/dist/js/core/utils/endpoint.js +74 -0
- package/dist/js/core/utils/endpoint.js.map +1 -0
- package/dist/js/core/utils/route.js +149 -0
- package/dist/js/core/utils/route.js.map +1 -0
- package/dist/js/core/utils/url-pattern.js +3 -0
- package/dist/js/core/utils/url-pattern.js.map +1 -0
- package/dist/js/dataprovider.js +2 -0
- package/dist/js/dataprovider.js.map +1 -0
- package/dist/js/decorators.js +39 -0
- package/dist/js/decorators.js.map +1 -0
- package/dist/js/directives.js +30 -0
- package/dist/js/directives.js.map +1 -0
- package/dist/js/index.js +8 -0
- package/dist/js/index.js.map +1 -0
- package/dist/js/mixins.js +23 -0
- package/dist/js/mixins.js.map +1 -0
- package/dist/js/test-utils/TestUtils.js +10 -0
- package/dist/js/test-utils/TestUtils.js.map +1 -0
- package/dist/js/utils.js +41 -0
- package/dist/js/utils.js.map +1 -0
- package/dist/types/components.d.ts +5 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/concorde-loaded.d.ts +2 -0
- package/dist/types/concorde-loaded.d.ts.map +1 -0
- package/dist/types/core/_types/endpoint.d.ts +5 -0
- package/dist/types/core/_types/endpoint.d.ts.map +1 -0
- package/dist/types/core/_types/key.d.ts +2 -0
- package/dist/types/core/_types/key.d.ts.map +1 -0
- package/dist/types/core/_types/types.d.ts +28 -0
- package/dist/types/core/_types/types.d.ts.map +1 -0
- package/dist/types/core/components/functional/date/date.d.ts +52 -0
- package/dist/types/core/components/functional/date/date.d.ts.map +1 -0
- package/dist/types/core/components/functional/example/example.d.ts +15 -0
- package/dist/types/core/components/functional/example/example.d.ts.map +1 -0
- package/dist/types/core/components/functional/fetch/fetch.d.ts +102 -0
- package/dist/types/core/components/functional/fetch/fetch.d.ts.map +1 -0
- package/dist/types/core/components/functional/functional.d.ts +17 -0
- package/dist/types/core/components/functional/functional.d.ts.map +1 -0
- package/dist/types/core/components/functional/if/if.d.ts +13 -0
- package/dist/types/core/components/functional/if/if.d.ts.map +1 -0
- package/dist/types/core/components/functional/list/list.d.ts +149 -0
- package/dist/types/core/components/functional/list/list.d.ts.map +1 -0
- package/dist/types/core/components/functional/mix/mix.d.ts +23 -0
- package/dist/types/core/components/functional/mix/mix.d.ts.map +1 -0
- package/dist/types/core/components/functional/queue/queue.d.ts +79 -0
- package/dist/types/core/components/functional/queue/queue.d.ts.map +1 -0
- package/dist/types/core/components/functional/router/redirect.d.ts +19 -0
- package/dist/types/core/components/functional/router/redirect.d.ts.map +1 -0
- package/dist/types/core/components/functional/router/router.d.ts +46 -0
- package/dist/types/core/components/functional/router/router.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +59 -0
- package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +6 -0
- package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/sdui.d.ts +145 -0
- package/dist/types/core/components/functional/sdui/sdui.d.ts.map +1 -0
- package/dist/types/core/components/functional/sdui/types.d.ts +38 -0
- package/dist/types/core/components/functional/sdui/types.d.ts.map +1 -0
- package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +6 -0
- package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +1 -0
- package/dist/types/core/components/functional/states/states.d.ts +42 -0
- package/dist/types/core/components/functional/states/states.d.ts.map +1 -0
- package/dist/types/core/components/functional/submit/submit.d.ts +37 -0
- package/dist/types/core/components/functional/submit/submit.d.ts.map +1 -0
- package/dist/types/core/components/functional/subscriber/subscriber.d.ts +13 -0
- package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +1 -0
- package/dist/types/core/components/functional/translation/translation.d.ts +7 -0
- package/dist/types/core/components/functional/translation/translation.d.ts.map +1 -0
- package/dist/types/core/components/functional/value/value.d.ts +8 -0
- package/dist/types/core/components/functional/value/value.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/scroll.d.ts +2 -0
- package/dist/types/core/components/ui/_css/scroll.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/shadow.d.ts +3 -0
- package/dist/types/core/components/ui/_css/shadow.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/size.d.ts +3 -0
- package/dist/types/core/components/ui/_css/size.d.ts.map +1 -0
- package/dist/types/core/components/ui/_css/type.d.ts +3 -0
- package/dist/types/core/components/ui/_css/type.d.ts.map +1 -0
- package/dist/types/core/components/ui/alert/alert.d.ts +37 -0
- package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -0
- package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +15 -0
- package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -0
- package/dist/types/core/components/ui/badge/badge.d.ts +27 -0
- package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -0
- package/dist/types/core/components/ui/button/button.d.ts +180 -0
- package/dist/types/core/components/ui/button/button.d.ts.map +1 -0
- package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +2 -0
- package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +1 -0
- package/dist/types/core/components/ui/captcha/captcha.d.ts +30 -0
- package/dist/types/core/components/ui/captcha/captcha.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-footer.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-footer.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-header-descripton.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-header.d.ts +9 -0
- package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card-main.d.ts +6 -0
- package/dist/types/core/components/ui/card/card-main.d.ts.map +1 -0
- package/dist/types/core/components/ui/card/card.d.ts +13 -0
- package/dist/types/core/components/ui/card/card.d.ts.map +1 -0
- package/dist/types/core/components/ui/divider/divider.d.ts +16 -0
- package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +176 -0
- package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/css/form-control.d.ts +5 -0
- package/dist/types/core/components/ui/form/css/form-control.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +24 -0
- package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +6 -0
- package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/fieldset/legend.d.ts +17 -0
- package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +8 -0
- package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +13 -0
- package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/input.d.ts +123 -0
- package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/password-helper.d.ts +26 -0
- package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +17 -0
- package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +155 -0
- package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/radio/radio.d.ts +15 -0
- package/dist/types/core/components/ui/form/radio/radio.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/select/select.d.ts +59 -0
- package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/switch/switch.d.ts +6 -0
- package/dist/types/core/components/ui/form/switch/switch.d.ts.map +1 -0
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts +94 -0
- package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -0
- package/dist/types/core/components/ui/group/group.d.ts +17 -0
- package/dist/types/core/components/ui/group/group.d.ts.map +1 -0
- package/dist/types/core/components/ui/icon/icon.d.ts +28 -0
- package/dist/types/core/components/ui/icon/icon.d.ts.map +1 -0
- package/dist/types/core/components/ui/icon/icons.d.ts +11 -0
- package/dist/types/core/components/ui/icon/icons.d.ts.map +1 -0
- package/dist/types/core/components/ui/image/image.d.ts +16 -0
- package/dist/types/core/components/ui/image/image.d.ts.map +1 -0
- package/dist/types/core/components/ui/link/link.d.ts +30 -0
- package/dist/types/core/components/ui/link/link.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/loader.d.ts +24 -0
- package/dist/types/core/components/ui/loader/loader.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/styles/fixed.d.ts +2 -0
- package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +1 -0
- package/dist/types/core/components/ui/loader/styles/inline.d.ts +2 -0
- package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +1 -0
- package/dist/types/core/components/ui/menu/menu-item.d.ts +6 -0
- package/dist/types/core/components/ui/menu/menu-item.d.ts.map +1 -0
- package/dist/types/core/components/ui/menu/menu.d.ts +52 -0
- package/dist/types/core/components/ui/menu/menu.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-actions.d.ts +9 -0
- package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-close.d.ts +11 -0
- package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-content.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-content.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-title.d.ts +6 -0
- package/dist/types/core/components/ui/modal/modal-title.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal-utils.d.ts +4 -0
- package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +1 -0
- package/dist/types/core/components/ui/modal/modal.d.ts +79 -0
- package/dist/types/core/components/ui/modal/modal.d.ts.map +1 -0
- package/dist/types/core/components/ui/pop/pop.d.ts +42 -0
- package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -0
- package/dist/types/core/components/ui/progress/progress.d.ts +12 -0
- package/dist/types/core/components/ui/progress/progress.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-caption.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-caption.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tbody.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-tbody.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-td.d.ts +13 -0
- package/dist/types/core/components/ui/table/table-td.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tfoot.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-th.d.ts +12 -0
- package/dist/types/core/components/ui/table/table-th.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-thead.d.ts +6 -0
- package/dist/types/core/components/ui/table/table-thead.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table-tr.d.ts +14 -0
- package/dist/types/core/components/ui/table/table-tr.d.ts.map +1 -0
- package/dist/types/core/components/ui/table/table.d.ts +18 -0
- package/dist/types/core/components/ui/table/table.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +2 -0
- package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +1 -0
- package/dist/types/core/components/ui/theme/theme.d.ts +20 -0
- package/dist/types/core/components/ui/theme/theme.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/message-subscriber.d.ts +19 -0
- package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/toast-item.d.ts +41 -0
- package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/toast.d.ts +28 -0
- package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -0
- package/dist/types/core/components/ui/toast/types.d.ts +12 -0
- package/dist/types/core/components/ui/toast/types.d.ts.map +1 -0
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts +21 -0
- package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -0
- package/dist/types/core/components/ui/ui.d.ts +35 -0
- package/dist/types/core/components/ui/ui.d.ts.map +1 -0
- package/dist/types/core/core.d.ts +5 -0
- package/dist/types/core/core.d.ts.map +1 -0
- package/dist/types/core/decorators/Subscriber.d.ts +11 -0
- package/dist/types/core/decorators/Subscriber.d.ts.map +1 -0
- package/dist/types/core/decorators/api.d.ts +119 -0
- package/dist/types/core/decorators/api.d.ts.map +1 -0
- package/dist/types/core/decorators/lifecycle.d.ts +19 -0
- package/dist/types/core/decorators/lifecycle.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +11 -0
- package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/autoFill.d.ts +2 -0
- package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +2 -0
- package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/bind.d.ts +28 -0
- package/dist/types/core/decorators/subscriber/bind.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/common.d.ts +14 -0
- package/dist/types/core/decorators/subscriber/common.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +23 -0
- package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +42 -0
- package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/handle.d.ts +74 -0
- package/dist/types/core/decorators/subscriber/handle.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/onAssign.d.ts +53 -0
- package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/publish.d.ts +23 -0
- package/dist/types/core/decorators/subscriber/publish.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/publisherPath.d.ts +3 -0
- package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +1 -0
- package/dist/types/core/decorators/subscriber/subscribe.d.ts +20 -0
- package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +1 -0
- package/dist/types/core/directives/DataProvider.d.ts +45 -0
- package/dist/types/core/directives/DataProvider.d.ts.map +1 -0
- package/dist/types/core/directives/Wording.d.ts +44 -0
- package/dist/types/core/directives/Wording.d.ts.map +1 -0
- package/dist/types/core/mixins/Fetcher.d.ts +108 -0
- package/dist/types/core/mixins/Fetcher.d.ts.map +1 -0
- package/dist/types/core/mixins/FormCheckable.d.ts +95 -0
- package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -0
- package/dist/types/core/mixins/FormElement.d.ts +37 -0
- package/dist/types/core/mixins/FormElement.d.ts.map +1 -0
- package/dist/types/core/mixins/FormInput.d.ts +79 -0
- package/dist/types/core/mixins/FormInput.d.ts.map +1 -0
- package/dist/types/core/mixins/Subscriber.d.ts +38 -0
- package/dist/types/core/mixins/Subscriber.d.ts.map +1 -0
- package/dist/types/core/mixins/TemplatesContainer.d.ts +14 -0
- package/dist/types/core/mixins/TemplatesContainer.d.ts.map +1 -0
- package/dist/types/core/mixins/mixins.d.ts +7 -0
- package/dist/types/core/mixins/mixins.d.ts.map +1 -0
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts +38 -0
- package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -0
- package/dist/types/core/utils/Arrays.d.ts +98 -0
- package/dist/types/core/utils/Arrays.d.ts.map +1 -0
- package/dist/types/core/utils/DataBindObserver.d.ts +84 -0
- package/dist/types/core/utils/DataBindObserver.d.ts.map +1 -0
- package/dist/types/core/utils/Electron.d.ts +8 -0
- package/dist/types/core/utils/Electron.d.ts.map +1 -0
- package/dist/types/core/utils/Format.d.ts +13 -0
- package/dist/types/core/utils/Format.d.ts.map +1 -0
- package/dist/types/core/utils/HTML.d.ts +64 -0
- package/dist/types/core/utils/HTML.d.ts.map +1 -0
- package/dist/types/core/utils/LocationHandler.d.ts +48 -0
- package/dist/types/core/utils/LocationHandler.d.ts.map +1 -0
- package/dist/types/core/utils/Objects.d.ts +31 -0
- package/dist/types/core/utils/Objects.d.ts.map +1 -0
- package/dist/types/core/utils/PublisherProxy.d.ts +230 -0
- package/dist/types/core/utils/PublisherProxy.d.ts.map +1 -0
- package/dist/types/core/utils/Utils.d.ts +6 -0
- package/dist/types/core/utils/Utils.d.ts.map +1 -0
- package/dist/types/core/utils/aesCrypto.d.ts +53 -0
- package/dist/types/core/utils/aesCrypto.d.ts.map +1 -0
- package/dist/types/core/utils/api.d.ts +173 -0
- package/dist/types/core/utils/api.d.ts.map +1 -0
- package/dist/types/core/utils/dataProviderKey.d.ts +56 -0
- package/dist/types/core/utils/dataProviderKey.d.ts.map +1 -0
- package/dist/types/core/utils/endpoint.d.ts +37 -0
- package/dist/types/core/utils/endpoint.d.ts.map +1 -0
- package/dist/types/core/utils/route.d.ts +41 -0
- package/dist/types/core/utils/route.d.ts.map +1 -0
- package/dist/types/core/utils/url-pattern.d.ts +3 -0
- package/dist/types/core/utils/url-pattern.d.ts.map +1 -0
- package/dist/types/dataprovider.d.ts +2 -0
- package/dist/types/dataprovider.d.ts.map +1 -0
- package/dist/types/decorators.d.ts +28 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/directives.d.ts +21 -0
- package/dist/types/directives.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/mixins.d.ts +204 -0
- package/dist/types/mixins.d.ts.map +1 -0
- package/dist/types/test-utils/TestUtils.d.ts +4 -0
- package/dist/types/test-utils/TestUtils.d.ts.map +1 -0
- package/dist/types/utils.d.ts +17 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/docs/assets/{index-t0-i22oI.css → index-CZLTFws2.css} +1 -1
- package/docs/assets/{index-wyNMyWT9.js → index-nkkwC13U.js} +781 -506
- package/docs/index.html +2 -3
- package/docs/src/core/components/functional/date/date.md +290 -0
- package/docs/src/core/components/functional/fetch/fetch.md +125 -0
- package/docs/src/core/components/functional/if/if.md +9 -0
- package/docs/src/core/components/functional/list/list.md +65 -0
- package/docs/src/core/components/functional/mix/mix.md +41 -0
- package/docs/src/core/components/functional/queue/queue.md +72 -0
- package/docs/src/core/components/functional/router/router.md +94 -0
- package/docs/src/core/components/functional/sdui/default-library.json +108 -0
- package/docs/src/core/components/functional/sdui/example.json +99 -0
- package/docs/src/core/components/functional/sdui/sdui.md +356 -0
- package/docs/src/core/components/functional/states/states.md +87 -0
- package/docs/src/core/components/functional/submit/submit.md +114 -0
- package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
- package/docs/src/core/components/functional/value/value.md +35 -0
- package/docs/src/core/components/ui/alert/alert.md +121 -0
- package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -0
- package/docs/src/core/components/ui/badge/badge.md +127 -0
- package/docs/src/core/components/ui/button/button.md +182 -0
- package/docs/src/core/components/ui/captcha/captcha.md +12 -0
- package/docs/src/core/components/ui/card/card.md +97 -0
- package/docs/src/core/components/ui/divider/divider.md +35 -0
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +129 -0
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +77 -0
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +44 -0
- package/docs/src/core/components/ui/form/input/input.md +142 -0
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +133 -0
- package/docs/src/core/components/ui/form/radio/radio.md +57 -0
- package/docs/src/core/components/ui/form/select/select.md +71 -0
- package/docs/src/core/components/ui/form/switch/switch.md +57 -0
- package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
- package/docs/src/core/components/ui/group/group.md +75 -0
- package/docs/src/core/components/ui/icon/icon.md +125 -0
- package/docs/src/core/components/ui/icon/icons.json +1 -0
- package/docs/src/core/components/ui/image/image.md +107 -0
- package/docs/src/core/components/ui/link/link.md +43 -0
- package/docs/src/core/components/ui/loader/loader.md +55 -0
- package/docs/src/core/components/ui/menu/menu.md +329 -0
- package/docs/src/core/components/ui/modal/modal.md +119 -0
- package/docs/src/core/components/ui/pop/pop.md +96 -0
- package/docs/src/core/components/ui/progress/progress.md +63 -0
- package/docs/src/core/components/ui/table/table.md +455 -0
- package/docs/src/core/components/ui/toast/toast.md +166 -0
- package/docs/src/core/components/ui/tooltip/tooltip.md +82 -0
- package/docs/src/docs/_core-concept/dataFlow.md +79 -0
- package/docs/src/docs/_core-concept/overview.md +57 -0
- package/docs/src/docs/_core-concept/subscriber.md +75 -0
- package/docs/src/docs/_decorators/ancestor-attribute.md +127 -0
- package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
- package/docs/src/docs/_decorators/bind.md +167 -0
- package/docs/src/docs/_decorators/get.md +77 -0
- package/docs/src/docs/_decorators/handle.md +175 -0
- package/docs/src/docs/_decorators/on-assign.md +390 -0
- package/docs/src/docs/_decorators/patch.md +45 -0
- package/docs/src/docs/_decorators/post.md +93 -0
- package/docs/src/docs/_decorators/publish.md +55 -0
- package/docs/src/docs/_decorators/put.md +43 -0
- package/docs/src/docs/_decorators/subscribe.md +100 -0
- package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
- package/docs/src/docs/_directives/sub.md +91 -0
- package/docs/src/docs/_getting-started/ai-agents.md +56 -0
- package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
- package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
- package/docs/src/docs/_getting-started/create-a-component.md +139 -0
- package/docs/src/docs/_getting-started/my-first-component.md +236 -0
- package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
- package/docs/src/docs/_getting-started/pubsub.md +37 -0
- package/docs/src/docs/_getting-started/start.md +47 -0
- package/docs/src/docs/_getting-started/theming.md +91 -0
- package/docs/src/docs/_misc/api-configuration.md +81 -0
- package/docs/src/docs/_misc/dataProviderKey.md +168 -0
- package/docs/src/docs/_misc/docs-mock-api.md +60 -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 +13 -0
- package/docs/src/docs/search/docs-search.json +9117 -0
- package/docs/src/tag-list.json +1 -0
- package/docs/src/tsconfig-model.json +23 -0
- package/docs/src/tsconfig.declarations.json +22 -0
- package/docs/src/tsconfig.emit.json +23 -0
- package/docs/src/tsconfig.json +837 -0
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +0 -1
- package/package.json +1084 -364
- package/public/docs-mock-api-sw.js +3 -2
- package/public/docs-mock-api-sw.js.map +2 -2
- package/scripts/github-export.mjs +150 -0
- package/scripts/post-build.mjs +43 -0
- package/scripts/pre-build.mjs +32 -4
- package/scripts/pre-publish.mjs +2 -0
- package/src/core/components/functional/queue/queue.ts +2 -2
- package/src/core/components/ui/modal/modal.ts +1 -1
- package/src/core/decorators/Subscriber.ts +1 -0
- package/src/core/decorators/api.spec.ts +74 -4
- package/src/core/decorators/api.ts +111 -30
- package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +197 -0
- package/src/core/decorators/subscriber/ancestorAttribute.ts +40 -7
- package/src/core/decorators/subscriber/autoSubscribe.ts +7 -3
- package/src/core/mixins/Fetcher.ts +12 -6
- package/src/core/utils/AncestorAttributeObserver.ts +199 -0
- package/src/core/utils/HTML.ts +3 -11
- package/src/core/utils/PublisherProxy.ts +28 -37
- package/src/core/utils/api.ts +10 -10
- package/src/css.d.ts +19 -0
- package/src/directives.ts +3 -2
- package/src/docs/_decorators/ancestor-attribute.md +56 -8
- package/src/docs/_decorators/get.md +47 -1
- package/src/docs/components/docs-demo-sources.ts +20 -3
- package/src/docs/example/decorators-demo-geo.ts +5 -0
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +72 -31
- package/src/docs/example/decorators-demo.ts +164 -8
- package/src/docs/mock-api/router.ts +3 -1
- package/src/docs/search/docs-search.json +92 -2
- package/src/tsconfig.declarations.json +22 -0
- package/src/tsconfig.emit.json +23 -0
- package/src/tsconfig.json +3 -285
- package/src/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import HTML, { SearchableDomElement } from "./HTML";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Observateur pour `@ancestorAttribute({ dynamic: true })`.
|
|
5
|
+
*
|
|
6
|
+
* Un MutationObserver sur `document` ne voit pas les mutations dans les shadow
|
|
7
|
+
* roots (Lit par défaut). Chaque abonnement observe donc directement les nœuds
|
|
8
|
+
* de sa chaîne d'ancêtres (composant → parent → … → host shadow), comme
|
|
9
|
+
* `watchScopedConfiguration` dans `api.ts`.
|
|
10
|
+
*
|
|
11
|
+
* Après un `childList` (wrapper plus proche, reparenting), la chaîne est
|
|
12
|
+
* recalculée pour écouter les nouveaux ancêtres.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
type SyncOptions = {
|
|
16
|
+
/** En mode dynamique : écrire `null` si l'attribut ancêtre disparaît. */
|
|
17
|
+
assignNull: boolean;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
type Subscription = {
|
|
21
|
+
component: HTMLElement;
|
|
22
|
+
attributeName: string;
|
|
23
|
+
propertyKey: string;
|
|
24
|
+
syncOptions: SyncOptions;
|
|
25
|
+
disconnectObservers: (() => void) | null;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** Chaîne composant → ancêtres, en traversant les shadow roots. */
|
|
29
|
+
function walkAncestorElements(node: Node): Element[] {
|
|
30
|
+
const elements: Element[] = [];
|
|
31
|
+
let current: Node | null = node;
|
|
32
|
+
while (current) {
|
|
33
|
+
if (current instanceof Element) {
|
|
34
|
+
elements.push(current);
|
|
35
|
+
}
|
|
36
|
+
const parent: Node | null =
|
|
37
|
+
current.parentNode || ((current as ShadowRoot).host ?? null);
|
|
38
|
+
current = parent;
|
|
39
|
+
}
|
|
40
|
+
return elements;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Observe attributs + enfants directs de chaque ancêtre.
|
|
45
|
+
* Retourne une fonction de nettoyage (disconnect).
|
|
46
|
+
*/
|
|
47
|
+
function attachAncestorChainObservers(
|
|
48
|
+
subscription: Subscription,
|
|
49
|
+
onMutation: () => void,
|
|
50
|
+
): () => void {
|
|
51
|
+
const observers: MutationObserver[] = [];
|
|
52
|
+
let disconnected = false;
|
|
53
|
+
const attributeFilter = HTML.scopeAttributeNames(subscription.attributeName);
|
|
54
|
+
|
|
55
|
+
const reconnect = () => {
|
|
56
|
+
for (const observer of observers) {
|
|
57
|
+
observer.disconnect();
|
|
58
|
+
}
|
|
59
|
+
observers.length = 0;
|
|
60
|
+
if (disconnected) return;
|
|
61
|
+
|
|
62
|
+
for (const element of walkAncestorElements(subscription.component)) {
|
|
63
|
+
const observer = new MutationObserver((records) => {
|
|
64
|
+
if (disconnected) return;
|
|
65
|
+
if (records.some((record) => record.type === "childList")) {
|
|
66
|
+
reconnect();
|
|
67
|
+
}
|
|
68
|
+
onMutation();
|
|
69
|
+
});
|
|
70
|
+
observer.observe(element, {
|
|
71
|
+
attributes: true,
|
|
72
|
+
attributeFilter,
|
|
73
|
+
childList: true,
|
|
74
|
+
subtree: false,
|
|
75
|
+
});
|
|
76
|
+
observers.push(observer);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
reconnect();
|
|
81
|
+
|
|
82
|
+
return () => {
|
|
83
|
+
disconnected = true;
|
|
84
|
+
for (const observer of observers) {
|
|
85
|
+
observer.disconnect();
|
|
86
|
+
}
|
|
87
|
+
observers.length = 0;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Point unique de synchronisation DOM → propriété du composant.
|
|
93
|
+
* N'assigne que si la valeur change (`Object.is`) pour limiter les re-renders Lit
|
|
94
|
+
* et éviter de reboucler inutilement `observeDynamicProperty` (@bind / @subscribe).
|
|
95
|
+
*/
|
|
96
|
+
export function syncAncestorAttributeValue(
|
|
97
|
+
component: object,
|
|
98
|
+
attributeName: string,
|
|
99
|
+
propertyKey: string,
|
|
100
|
+
options: SyncOptions,
|
|
101
|
+
): void {
|
|
102
|
+
const record = component as Record<string, unknown>;
|
|
103
|
+
const value = HTML.getAncestorAttributeValue(
|
|
104
|
+
component as unknown as SearchableDomElement,
|
|
105
|
+
attributeName,
|
|
106
|
+
);
|
|
107
|
+
if (!options.assignNull && value === null) return;
|
|
108
|
+
if (!Object.is(record[propertyKey], value)) {
|
|
109
|
+
record[propertyKey] = value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export default class AncestorAttributeObserver {
|
|
114
|
+
private static subscriptions = new Set<Subscription>();
|
|
115
|
+
private static pendingRefresh = new Set<Subscription>();
|
|
116
|
+
private static animationFrameId: number | null = null;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Enregistre un composant en mode `{ dynamic: true }`.
|
|
120
|
+
* Le `unsubscribe` retourné doit être appelé au `disconnectedCallback`.
|
|
121
|
+
*/
|
|
122
|
+
static subscribe(
|
|
123
|
+
component: HTMLElement,
|
|
124
|
+
attributeName: string,
|
|
125
|
+
propertyKey: string,
|
|
126
|
+
syncOptions: SyncOptions = { assignNull: true },
|
|
127
|
+
): () => void {
|
|
128
|
+
const subscription: Subscription = {
|
|
129
|
+
component,
|
|
130
|
+
attributeName,
|
|
131
|
+
propertyKey,
|
|
132
|
+
syncOptions,
|
|
133
|
+
disconnectObservers: null,
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
subscription.disconnectObservers = attachAncestorChainObservers(
|
|
137
|
+
subscription,
|
|
138
|
+
() => {
|
|
139
|
+
if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
|
|
140
|
+
AncestorAttributeObserver.pendingRefresh.add(subscription);
|
|
141
|
+
AncestorAttributeObserver.scheduleRefresh();
|
|
142
|
+
},
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
AncestorAttributeObserver.subscriptions.add(subscription);
|
|
146
|
+
|
|
147
|
+
return () => {
|
|
148
|
+
AncestorAttributeObserver.unsubscribe(subscription);
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Coupe les observateurs et retire l'abonnement (pas de fuite après disconnect). */
|
|
153
|
+
private static unsubscribe(subscription: Subscription): void {
|
|
154
|
+
if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
|
|
155
|
+
|
|
156
|
+
subscription.disconnectObservers?.();
|
|
157
|
+
subscription.disconnectObservers = null;
|
|
158
|
+
|
|
159
|
+
AncestorAttributeObserver.subscriptions.delete(subscription);
|
|
160
|
+
AncestorAttributeObserver.pendingRefresh.delete(subscription);
|
|
161
|
+
|
|
162
|
+
if (AncestorAttributeObserver.subscriptions.size === 0) {
|
|
163
|
+
AncestorAttributeObserver.cancelScheduledRefresh();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
private static scheduleRefresh(): void {
|
|
168
|
+
if (AncestorAttributeObserver.pendingRefresh.size === 0) return;
|
|
169
|
+
if (AncestorAttributeObserver.animationFrameId !== null) return;
|
|
170
|
+
AncestorAttributeObserver.animationFrameId = requestAnimationFrame(() => {
|
|
171
|
+
AncestorAttributeObserver.flushRefresh();
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
private static cancelScheduledRefresh(): void {
|
|
176
|
+
if (AncestorAttributeObserver.animationFrameId !== null) {
|
|
177
|
+
cancelAnimationFrame(AncestorAttributeObserver.animationFrameId);
|
|
178
|
+
AncestorAttributeObserver.animationFrameId = null;
|
|
179
|
+
}
|
|
180
|
+
AncestorAttributeObserver.pendingRefresh.clear();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
private static flushRefresh(): void {
|
|
184
|
+
AncestorAttributeObserver.animationFrameId = null;
|
|
185
|
+
const subscriptions = Array.from(AncestorAttributeObserver.pendingRefresh);
|
|
186
|
+
AncestorAttributeObserver.pendingRefresh.clear();
|
|
187
|
+
|
|
188
|
+
for (const subscription of subscriptions) {
|
|
189
|
+
if (!AncestorAttributeObserver.subscriptions.has(subscription)) continue;
|
|
190
|
+
if (!subscription.component.isConnected) continue;
|
|
191
|
+
syncAncestorAttributeValue(
|
|
192
|
+
subscription.component,
|
|
193
|
+
subscription.attributeName,
|
|
194
|
+
subscription.propertyKey,
|
|
195
|
+
subscription.syncOptions,
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
package/src/core/utils/HTML.ts
CHANGED
|
@@ -60,21 +60,15 @@ class HTML {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/** Noms d'attribut DOM à tester (Lit reflect → minuscules, ex. serviceURL → serviceurl). */
|
|
63
|
-
|
|
63
|
+
static scopeAttributeNames(attributeName: string): string[] {
|
|
64
64
|
const lower = attributeName.toLowerCase();
|
|
65
65
|
return lower === attributeName ? [attributeName] : [attributeName, lower];
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
private static
|
|
68
|
+
private static readScopeAttributeOnElement(
|
|
69
69
|
element: HTMLElement,
|
|
70
70
|
attributeName: string,
|
|
71
71
|
): string | null {
|
|
72
|
-
// Lit : la propriété est fiable avant le reflect ; un attribut vide (serviceurl="")
|
|
73
|
-
// ne doit pas masquer la propriété.
|
|
74
|
-
const prop = (element as unknown as Record<string, unknown>)[attributeName];
|
|
75
|
-
if (typeof prop === "string" && prop.length > 0) {
|
|
76
|
-
return prop;
|
|
77
|
-
}
|
|
78
72
|
for (const attrName of HTML.scopeAttributeNames(attributeName)) {
|
|
79
73
|
if (element.hasAttribute(attrName)) {
|
|
80
74
|
const attr = element.getAttribute(attrName);
|
|
@@ -88,8 +82,6 @@ class HTML {
|
|
|
88
82
|
|
|
89
83
|
/**
|
|
90
84
|
* Va de parent en parent en partant de node pour trouver un attribut.
|
|
91
|
-
* Si l'attribut n'est pas encore reflété (ex. Lit `@property({ reflect: true })`
|
|
92
|
-
* au premier `connectedCallback`), lit la propriété homonyme sur l'élément.
|
|
93
85
|
* @param attributeName nom de l'attribut
|
|
94
86
|
* @returns valeur de l'attribut ou null si l'attribut n'est pas trouvé
|
|
95
87
|
*/
|
|
@@ -101,7 +93,7 @@ class HTML {
|
|
|
101
93
|
let current: SearchableDomElement | null = node;
|
|
102
94
|
while (current) {
|
|
103
95
|
if (current instanceof HTMLElement) {
|
|
104
|
-
const value = HTML.
|
|
96
|
+
const value = HTML.readScopeAttributeOnElement(current, attributeName);
|
|
105
97
|
if (value != null && value.length > 0) {
|
|
106
98
|
return value;
|
|
107
99
|
}
|
|
@@ -481,8 +481,7 @@ export class PublisherProxy<T = any> {
|
|
|
481
481
|
*/
|
|
482
482
|
_cachedGet_?: T;
|
|
483
483
|
get(): T {
|
|
484
|
-
|
|
485
|
-
PublisherManager.modifiedCollectore[0].add(this);
|
|
484
|
+
trackModifiedPublisher(this);
|
|
486
485
|
if (this._cachedGet_ !== undefined) return this._cachedGet_;
|
|
487
486
|
if (Object.prototype.hasOwnProperty.call(this._value_, "__value")) {
|
|
488
487
|
const v = (this._value_ as any).__value;
|
|
@@ -519,6 +518,20 @@ export class PublisherProxy<T = any> {
|
|
|
519
518
|
*
|
|
520
519
|
*/
|
|
521
520
|
|
|
521
|
+
const modifiedCollectore: Set<any>[] = [];
|
|
522
|
+
|
|
523
|
+
function trackModifiedPublisher(proxy: any) {
|
|
524
|
+
if (modifiedCollectore.length > 0) modifiedCollectore[0].add(proxy);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export function collectModifiedPublisher() {
|
|
528
|
+
modifiedCollectore.unshift(new Set<any>());
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
export function getModifiedPublishers() {
|
|
532
|
+
return modifiedCollectore.shift() as Set<any>;
|
|
533
|
+
}
|
|
534
|
+
|
|
522
535
|
export class PublisherManager {
|
|
523
536
|
static buildDate = __BUILD_DATE__;
|
|
524
537
|
static changed = false;
|
|
@@ -541,9 +554,19 @@ export class PublisherManager {
|
|
|
541
554
|
if (PublisherManager.instance != null) throw "Singleton / use getInstance";
|
|
542
555
|
PublisherManager.instance = this;
|
|
543
556
|
this.isLocalStrorageReady = this.cleanStorageData() as Promise<boolean>;
|
|
557
|
+
PublisherManager.initPageShowHandler();
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
private static pageShowHandlerInitialized = false;
|
|
561
|
+
private static initPageShowHandler() {
|
|
562
|
+
if (PublisherManager.pageShowHandlerInitialized) return;
|
|
563
|
+
PublisherManager.pageShowHandlerInitialized = true;
|
|
564
|
+
window.addEventListener("pageshow", (e) => {
|
|
565
|
+
if (e.persisted) PublisherManager.getInstance().invalidateAll();
|
|
566
|
+
});
|
|
544
567
|
}
|
|
545
568
|
|
|
546
|
-
invalidateAll() {
|
|
569
|
+
private invalidateAll() {
|
|
547
570
|
this.publishers.forEach((publisher) => {
|
|
548
571
|
if (!publisher._invalidate_on_page_show_) {
|
|
549
572
|
return;
|
|
@@ -617,16 +640,6 @@ export class PublisherManager {
|
|
|
617
640
|
return PublisherManager.instance;
|
|
618
641
|
}
|
|
619
642
|
|
|
620
|
-
static registerInstance(id: string, instance: PublisherManager) {
|
|
621
|
-
if (PublisherManager.instances.has(id)) {
|
|
622
|
-
console.warn(
|
|
623
|
-
"PublisherManager instance already registered with id: ",
|
|
624
|
-
id,
|
|
625
|
-
);
|
|
626
|
-
}
|
|
627
|
-
PublisherManager.instances.set(id, instance);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
643
|
/**
|
|
631
644
|
* shortcut static pour obtenir un publisher vias sont id/adresse sans taper getInstance.
|
|
632
645
|
* Si le publisher n'existe pas, il est créé.
|
|
@@ -638,22 +651,6 @@ export class PublisherManager {
|
|
|
638
651
|
return PublisherManager.getInstance().get(id, options);
|
|
639
652
|
}
|
|
640
653
|
|
|
641
|
-
public static modifiedCollectore: Set<any>[] = [];
|
|
642
|
-
public static collectModifiedPublisher() {
|
|
643
|
-
PublisherManager.modifiedCollectore.unshift(new Set<any>());
|
|
644
|
-
}
|
|
645
|
-
public static getModifiedPublishers() {
|
|
646
|
-
return PublisherManager.modifiedCollectore.shift() as Set<any>;
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
/**
|
|
650
|
-
* shortcut static pour supprimer un publisher de la liste et appel également delete sur le publisher ce qui le supprime, de même que ses sous publishers
|
|
651
|
-
*/
|
|
652
|
-
static delete(id: string | null) {
|
|
653
|
-
if (!id) return false;
|
|
654
|
-
return PublisherManager.getInstance().delete(id);
|
|
655
|
-
}
|
|
656
|
-
|
|
657
654
|
/**
|
|
658
655
|
* Obtenir un publisher vias sont id/adresse
|
|
659
656
|
* Si le publisher n'existe pas, il est créé.
|
|
@@ -1063,9 +1060,9 @@ export const getObservables = <T = any>(
|
|
|
1063
1060
|
): Set<DataProvider<T>> => {
|
|
1064
1061
|
if (typeof observable === "function") {
|
|
1065
1062
|
const func = observable as () => any;
|
|
1066
|
-
|
|
1063
|
+
collectModifiedPublisher();
|
|
1067
1064
|
func();
|
|
1068
|
-
return
|
|
1065
|
+
return getModifiedPublishers() as Set<DataProvider<T>>;
|
|
1069
1066
|
}
|
|
1070
1067
|
if (typeof observable === "string") {
|
|
1071
1068
|
const split = observable.split(".");
|
|
@@ -1187,9 +1184,3 @@ export function set<T>(id: string | DataProviderKey<T>, value: T): void {
|
|
|
1187
1184
|
getObservables(path).values().next().value?.set(value);
|
|
1188
1185
|
}
|
|
1189
1186
|
|
|
1190
|
-
/**
|
|
1191
|
-
* next back handling data invalidation
|
|
1192
|
-
*/
|
|
1193
|
-
window.addEventListener("pageshow", (e) => {
|
|
1194
|
-
if (e.persisted) PublisherManager.getInstance().invalidateAll();
|
|
1195
|
-
});
|
package/src/core/utils/api.ts
CHANGED
|
@@ -50,7 +50,7 @@ export type ApiResult<T> = {
|
|
|
50
50
|
export type ApiGetResult<T> = ApiResult<T>;
|
|
51
51
|
|
|
52
52
|
/** Extrait le corps typé depuis le résultat traité par `handleResult`. */
|
|
53
|
-
|
|
53
|
+
function extractTypedApiResult<T>(
|
|
54
54
|
processed: ResultTypeInterface | null | undefined,
|
|
55
55
|
): T {
|
|
56
56
|
if (processed == null || typeof processed !== "object") {
|
|
@@ -67,7 +67,7 @@ class API {
|
|
|
67
67
|
/**
|
|
68
68
|
* Ce tableau static permet de ne pas appeler plusieurs fois le même service lors d'appel concurrents en GET.
|
|
69
69
|
*/
|
|
70
|
-
static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
|
|
70
|
+
private static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
|
|
71
71
|
/**
|
|
72
72
|
* L'url de base du service sans endpoint
|
|
73
73
|
*/
|
|
@@ -123,14 +123,14 @@ class API {
|
|
|
123
123
|
/**
|
|
124
124
|
* Tableau static des tokens stokés en memoire vive (comportement à revoir à l'occasion)
|
|
125
125
|
*/
|
|
126
|
-
static tokens = new Map<string | null, string | null | undefined>();
|
|
126
|
+
private static tokens = new Map<string | null, string | null | undefined>();
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
129
|
* Tableau stockant l'ensemble des tokens invalides
|
|
130
130
|
*/
|
|
131
|
-
static invalidTokens: (string | null | undefined)[] = [];
|
|
131
|
+
private static invalidTokens: (string | null | undefined)[] = [];
|
|
132
132
|
|
|
133
|
-
handleInvalidToken(token: string | null | undefined) {
|
|
133
|
+
private handleInvalidToken(token: string | null | undefined) {
|
|
134
134
|
if (!token) return;
|
|
135
135
|
|
|
136
136
|
if (API.invalidTokens.includes(token)) return;
|
|
@@ -142,11 +142,11 @@ class API {
|
|
|
142
142
|
/**
|
|
143
143
|
* Tableau static des tentatives échouées de récupération auto du token
|
|
144
144
|
*/
|
|
145
|
-
static failledTokenUpdates = new Map<string | null, true>();
|
|
145
|
+
private static failledTokenUpdates = new Map<string | null, true>();
|
|
146
146
|
/**
|
|
147
147
|
* Tableau static des flags pour savoir si le premier appel a été fait pour chaque serviceURL
|
|
148
148
|
*/
|
|
149
|
-
static firstCallDoneFlags = new Map<string | null, CallState>();
|
|
149
|
+
private static firstCallDoneFlags = new Map<string | null, CallState>();
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
152
|
* Le endPoint pour obtenir le bearer token qui sera concaténé à l'url du service
|
|
@@ -174,7 +174,7 @@ class API {
|
|
|
174
174
|
this.cache = config.cache || "default";
|
|
175
175
|
this.keepAlive = config.keepAlive || false;
|
|
176
176
|
}
|
|
177
|
-
async handleResult(
|
|
177
|
+
private async handleResult(
|
|
178
178
|
fetchResult: Response,
|
|
179
179
|
lastCall: APICall,
|
|
180
180
|
): Promise<ResultTypeInterface> {
|
|
@@ -231,7 +231,7 @@ class API {
|
|
|
231
231
|
/**
|
|
232
232
|
* Basic auth
|
|
233
233
|
*/
|
|
234
|
-
async auth() {
|
|
234
|
+
private async auth() {
|
|
235
235
|
if (this.token) return;
|
|
236
236
|
if (API.tokens.has(this.serviceURL)) {
|
|
237
237
|
this.token = API.tokens.get(this.serviceURL);
|
|
@@ -362,7 +362,7 @@ class API {
|
|
|
362
362
|
/**
|
|
363
363
|
* firstCallDone is a function that returns a promise that is resolved when the first call to the API is done for each serviceURL whatever api instance is used
|
|
364
364
|
*/
|
|
365
|
-
firstCallDone() {
|
|
365
|
+
private firstCallDone() {
|
|
366
366
|
return new Promise((resolve) => {
|
|
367
367
|
if (!API.firstCallDoneFlags.has(this.serviceURL)) {
|
|
368
368
|
API.firstCallDoneFlags.set(this.serviceURL, "loading");
|
package/src/css.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare module "*.css" {
|
|
2
|
+
const css: import("lit").CSSResult;
|
|
3
|
+
export default css;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
declare module "*.css?inline" {
|
|
7
|
+
const css: string;
|
|
8
|
+
export default css;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare module "*.scss" {
|
|
12
|
+
const css: import("lit").CSSResult;
|
|
13
|
+
export default css;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare module "*.scss?inline" {
|
|
17
|
+
const css: string;
|
|
18
|
+
export default css;
|
|
19
|
+
}
|
package/src/directives.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as directives from "@supersoniks/concorde/core/directives/DataProvider";
|
|
2
2
|
import {dp as pubDp, dataProvider as pubDataProvider, get as pubGet, set as pubSet} from "@supersoniks/concorde/core/utils/PublisherProxy";
|
|
3
|
+
import type {DirectiveResult} from "lit/async-directive.js";
|
|
3
4
|
|
|
4
5
|
import {ConcordeWindow} from "./core/_types/types";
|
|
5
6
|
/**
|
|
@@ -10,8 +11,8 @@ export const dp = pubDp;
|
|
|
10
11
|
* @deprecated @see pubDataProvider
|
|
11
12
|
*/
|
|
12
13
|
export const dataProvider = pubDataProvider;
|
|
13
|
-
export const subscribe = directives.subscribe;
|
|
14
|
-
export const sub = directives.sub;
|
|
14
|
+
export const subscribe = directives.subscribe as DirectiveResult;
|
|
15
|
+
export const sub = directives.sub as DirectiveResult;
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* @deprecated @see pubGet
|
|
@@ -18,7 +18,7 @@ import { ancestorAttribute } from "@supersoniks/concorde/decorators";
|
|
|
18
18
|
|
|
19
19
|
### Basic example
|
|
20
20
|
|
|
21
|
-
The component reads `dataProvider` and `testAttribute` from its ancestor wrapper.
|
|
21
|
+
The component reads `dataProvider` and `testAttribute` from its ancestor wrapper. By default (`dynamic: false`), values are read once at connect.
|
|
22
22
|
|
|
23
23
|
<sonic-code language="typescript">
|
|
24
24
|
<template>
|
|
@@ -36,10 +36,8 @@ export class DemoAncestorAttribute extends LitElement {
|
|
|
36
36
|
|
|
37
37
|
render() {
|
|
38
38
|
return html`
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
<p>testAttribute: <strong>${this.testAttribute || "null"}</strong></p>
|
|
42
|
-
</section>
|
|
39
|
+
<p>dataProvider: <strong>${this.dataProvider ?? "null"}</strong></p>
|
|
40
|
+
<p>testAttribute: <strong>${this.testAttribute ?? "null"}</strong></p>
|
|
43
41
|
`;
|
|
44
42
|
}
|
|
45
43
|
}
|
|
@@ -55,7 +53,6 @@ export class DemoAncestorAttribute extends LitElement {
|
|
|
55
53
|
</template>
|
|
56
54
|
</sonic-code>
|
|
57
55
|
|
|
58
|
-
|
|
59
56
|
## Use cases
|
|
60
57
|
|
|
61
58
|
This decorator is particularly useful for:
|
|
@@ -68,9 +65,60 @@ This decorator is particularly useful for:
|
|
|
68
65
|
## Behavior
|
|
69
66
|
|
|
70
67
|
- The search starts from the current element and traverses up the DOM tree
|
|
71
|
-
- If the attribute is not found, the property will be assigned `null`
|
|
72
68
|
- The injection happens automatically at the time of `connectedCallback`
|
|
73
|
-
-
|
|
69
|
+
- By default (`dynamic: false`), the value is read once at connect time and is not updated afterward
|
|
70
|
+
- With `{ dynamic: true }`, the property stays in sync when:
|
|
71
|
+
- an ancestor **changes** the attribute value
|
|
72
|
+
- a **closer** ancestor **gains** the attribute (that value wins)
|
|
73
|
+
- the **nearest** ancestor **loses** the attribute (falls back to the next one up, or `null`)
|
|
74
|
+
- When `dynamic` is enabled, updates also propagate to `@subscribe` / `@bind` paths that depend on the decorated property (e.g. `${dataProvider}`)
|
|
75
|
+
|
|
76
|
+
### Dynamic mode
|
|
77
|
+
|
|
78
|
+
Use `{ dynamic: true }` when the decorated property must follow the DOM. With Lit, add **`@state()`** on the same property so template updates are visible when the observer assigns a new value.
|
|
79
|
+
|
|
80
|
+
The live demo below shows only the resolved attribute value — no store, no reparenting.
|
|
81
|
+
|
|
82
|
+
<sonic-code language="typescript">
|
|
83
|
+
<template>
|
|
84
|
+
@customElement("demo-ancestor-attribute-dynamic")
|
|
85
|
+
export class DemoAncestorAttributeDynamic extends LitElement {
|
|
86
|
+
@ancestorAttribute("dataProvider", { dynamic: true })
|
|
87
|
+
@state()
|
|
88
|
+
dataProvider: string | null = null;
|
|
89
|
+
|
|
90
|
+
render() {
|
|
91
|
+
return html`
|
|
92
|
+
<p>Nearest ancestor: <strong>${this.dataProvider ?? "null"}</strong></p>
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
</template>
|
|
97
|
+
</sonic-code>
|
|
98
|
+
|
|
99
|
+
Try in the demo:
|
|
100
|
+
|
|
101
|
+
- **parent-a** / **parent-b** — change the value on the direct parent
|
|
102
|
+
- **Remove parent attr** — falls back to **outer**
|
|
103
|
+
- **Add closer** — a wrapper with `from-closer` becomes the nearest ancestor
|
|
104
|
+
- **Remove closer** — back to parent or outer
|
|
105
|
+
- **Remove outer attr** — if parent has no attribute either, the child shows `null`
|
|
106
|
+
|
|
107
|
+
<sonic-code>
|
|
108
|
+
<template>
|
|
109
|
+
<docs-demo-sources for="demo-ancestor-attribute-dynamic-section"></docs-demo-sources>
|
|
110
|
+
<demo-ancestor-attribute-dynamic-section></demo-ancestor-attribute-dynamic-section>
|
|
111
|
+
</template>
|
|
112
|
+
</sonic-code>
|
|
113
|
+
|
|
114
|
+
Static mode (default) — read once at connect, no observer:
|
|
115
|
+
|
|
116
|
+
<sonic-code language="typescript">
|
|
117
|
+
<template>
|
|
118
|
+
@ancestorAttribute("dataProvider")
|
|
119
|
+
dataProvider: string | null = null;
|
|
120
|
+
</template>
|
|
121
|
+
</sonic-code>
|
|
74
122
|
|
|
75
123
|
## Notes
|
|
76
124
|
|
|
@@ -13,10 +13,53 @@ Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument.
|
|
|
13
13
|
|
|
14
14
|
`${prop}` on the endpoint or config key is resolved on the host. While a placeholder is `null` or `undefined`, no GET runs. Optional `skipEmptyPlaceholder: true` also blocks `""` (empty string only). Details: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
|
|
15
15
|
|
|
16
|
+
## Options (`GetOptions`)
|
|
17
|
+
|
|
18
|
+
Pass as the **second** argument (scoped config) or **third** (with a configuration key). Same shape as send decorators where applicable:
|
|
19
|
+
|
|
20
|
+
| Option | Description |
|
|
21
|
+
|--------|-------------|
|
|
22
|
+
| `skipEmptyPlaceholder` | Treat `""` as not ready (see [Dynamic path](#docs/_misc/dynamic-path.md/dynamic-path)). |
|
|
23
|
+
| `refetchEveryMs` | Automatic polling interval (ms). `0` or omitted = no polling. |
|
|
24
|
+
| `triggerKey` | `DataProviderKey` — `PublisherManager.get(...).invalidate()` on that publisher re-runs the GET. |
|
|
25
|
+
|
|
26
|
+
### Manual refetch (`triggerKey`)
|
|
27
|
+
|
|
28
|
+
Same pattern as [@post](#docs/_decorators/post.md/post): a publisher acts as a **signal**, independent of the response payload.
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { get, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
32
|
+
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
33
|
+
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
34
|
+
import { dp } from "@supersoniks/concorde/core/utils/PublisherProxy";
|
|
35
|
+
|
|
36
|
+
const geoCommunesEndpoint = new Endpoint<GeoCommuneRow[]>(
|
|
37
|
+
"communes?limit=5&fields=nom,code",
|
|
38
|
+
);
|
|
39
|
+
const geoCommunesRefreshKey = new DataProviderKey<void>(
|
|
40
|
+
"docsDemoGeoCommunesRefresh",
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
@get(geoCommunesEndpoint, apiConfigurationKey, {
|
|
44
|
+
triggerKey: geoCommunesRefreshKey,
|
|
45
|
+
})
|
|
46
|
+
@state()
|
|
47
|
+
payload: ApiResult<GeoCommuneRow[]> | null = null;
|
|
48
|
+
|
|
49
|
+
// Same component or anywhere else:
|
|
50
|
+
dp(geoCommunesRefreshKey).invalidate();
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Prefer `triggerKey` over mutating the API configuration publisher when you only want to **reload the same URL** — no need to touch `serviceURL`, tokens, etc.
|
|
54
|
+
|
|
55
|
+
The docs mock adds an **`X-Fetched-At`** response header on `/docs-mock-api/geo/communes` so live demos can show when the last fetch happened (`response.headers.get("X-Fetched-At")`).
|
|
56
|
+
|
|
16
57
|
## When the GET runs again
|
|
17
58
|
|
|
18
59
|
- A referenced Lit property changes (endpoint path and/or config key contains `${...}`).
|
|
19
60
|
- `set` on the active configuration publisher (`onInternalMutation`).
|
|
61
|
+
- `triggerKey` publisher `invalidate()`.
|
|
62
|
+
- `refetchEveryMs` polling (after each successful fetch).
|
|
20
63
|
|
|
21
64
|
## Import
|
|
22
65
|
|
|
@@ -42,6 +85,8 @@ payload: ApiResult<User> | null = null;
|
|
|
42
85
|
|
|
43
86
|
## Live demos
|
|
44
87
|
|
|
88
|
+
`@get` with **`triggerKey`** — refresh button + `X-Fetched-At` timestamp in the UI:
|
|
89
|
+
|
|
45
90
|
<sonic-code>
|
|
46
91
|
<template>
|
|
47
92
|
<docs-demo-sources for="demo-api-get"></docs-demo-sources>
|
|
@@ -49,12 +94,13 @@ payload: ApiResult<User> | null = null;
|
|
|
49
94
|
</template>
|
|
50
95
|
</sonic-code>
|
|
51
96
|
|
|
52
|
-
Dynamic config and endpoint path (`
|
|
97
|
+
Dynamic config and endpoint path. Manual refetch is triggered **from a separate component** (same `triggerKey` publisher):
|
|
53
98
|
|
|
54
99
|
<sonic-code>
|
|
55
100
|
<template>
|
|
56
101
|
<docs-demo-sources for="demo-api-get-configuration-key"></docs-demo-sources>
|
|
57
102
|
<demo-api-get-configuration-key></demo-api-get-configuration-key>
|
|
103
|
+
<demo-api-get-refresh-remote></demo-api-get-refresh-remote>
|
|
58
104
|
</template>
|
|
59
105
|
</sonic-code>
|
|
60
106
|
|
|
@@ -255,10 +255,15 @@ export const DOCS_DEMO_SOURCE_REGISTRY: Record<string, DocsSource[]> = {
|
|
|
255
255
|
"demo-api-get-configuration-key": [
|
|
256
256
|
{
|
|
257
257
|
path: "src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",
|
|
258
|
-
line:
|
|
258
|
+
line: 147,
|
|
259
259
|
label: "demo-api-get-configuration-key",
|
|
260
260
|
},
|
|
261
|
-
{
|
|
261
|
+
{
|
|
262
|
+
path: "src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",
|
|
263
|
+
line: 239,
|
|
264
|
+
label: "demo-api-get-refresh-remote",
|
|
265
|
+
},
|
|
266
|
+
{ path: "src/docs/example/decorators-demo-geo.ts", label: "geo API + triggerKey" },
|
|
262
267
|
],
|
|
263
268
|
"demo-api-get-publish-subscribe": [
|
|
264
269
|
{
|
|
@@ -329,7 +334,19 @@ export const DOCS_DEMO_SOURCE_REGISTRY: Record<string, DocsSource[]> = {
|
|
|
329
334
|
{ path: "src/docs/example/decorators-demo-init.ts", label: "demo data" },
|
|
330
335
|
],
|
|
331
336
|
"demo-ancestor-attribute": [
|
|
332
|
-
{ path: "src/docs/example/decorators-demo.ts", line:
|
|
337
|
+
{ path: "src/docs/example/decorators-demo.ts", line: 35, label: "demo-ancestor-attribute" },
|
|
338
|
+
],
|
|
339
|
+
"demo-ancestor-attribute-dynamic-section": [
|
|
340
|
+
{
|
|
341
|
+
path: "src/docs/example/decorators-demo.ts",
|
|
342
|
+
line: 60,
|
|
343
|
+
label: "demo-ancestor-attribute-dynamic",
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
path: "src/docs/example/decorators-demo.ts",
|
|
347
|
+
line: 81,
|
|
348
|
+
label: "demo-ancestor-attribute-dynamic-section",
|
|
349
|
+
},
|
|
333
350
|
],
|
|
334
351
|
"demo-on-assign": [
|
|
335
352
|
{ path: "src/docs/example/decorators-demo.ts", line: 43, label: "demo-on-assign" },
|
|
@@ -49,3 +49,8 @@ export const geoCommunesApiGetEndpointDynamic = new Endpoint<GeoCommuneRow[]>(
|
|
|
49
49
|
export const geoCommunesApiGetPublishKey = new DataProviderKey<
|
|
50
50
|
ApiResult<GeoCommuneRow[]>
|
|
51
51
|
>(geoCommunesApiGetEndpoint.path);
|
|
52
|
+
|
|
53
|
+
/** Signal de refetch manuel pour les démos `@get` (voir `triggerKey`). */
|
|
54
|
+
export const docsDemoGeoCommunesRefreshKey = new DataProviderKey<void>(
|
|
55
|
+
"docsDemoGeoCommunesRefresh",
|
|
56
|
+
);
|