@supersoniks/concorde 4.7.4 → 4.9.0
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 +30 -16
- package/ai/cursor/rules/concorde.mdc +1 -1
- package/ai/skills/concorde-scope/SKILL.md +2 -2
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +214 -214
- package/concorde-core.es.js +4517 -4133
- package/dist/concorde-core.bundle.js +214 -214
- package/dist/concorde-core.es.js +4517 -4133
- package/dist/docs-mock-api-sw.js +19 -0
- 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 +559 -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 +106 -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-BEgZEIbv.js +11196 -0
- package/docs/docs-mock-api-sw.js +19 -0
- package/docs/docs-mock-api-sw.js.map +2 -2
- package/docs/index.html +1 -1
- package/docs/src/docs/_core-concept/dataFlow.md +9 -3
- package/docs/src/docs/_decorators/bind.md +2 -2
- package/docs/src/docs/_decorators/get.md +13 -4
- package/docs/src/docs/_decorators/handle.md +5 -1
- package/docs/src/docs/_decorators/on-assign.md +2 -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 +1 -1
- package/docs/src/docs/_decorators/put.md +43 -0
- package/docs/src/docs/_decorators/subscribe.md +4 -1
- package/docs/src/docs/_directives/sub.md +1 -1
- package/docs/src/docs/_getting-started/my-first-component.md +1 -1
- package/docs/src/docs/_misc/api-configuration.md +3 -1
- package/docs/src/docs/_misc/dataProviderKey.md +2 -2
- package/docs/src/docs/_misc/dynamic-path.md +71 -0
- package/docs/src/docs/_misc/endpoint.md +5 -3
- package/docs/src/docs/search/docs-search.json +540 -15
- package/docs/src/tsconfig.json +377 -353
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +0 -1
- package/package.json +1084 -356
- package/public/docs-mock-api-sw.js +19 -0
- 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/example/example.ts +3 -3
- package/src/core/components/functional/queue/queue.ts +2 -2
- package/src/core/components/ui/icon/icon.ts +17 -2
- package/src/core/components/ui/menu/menu.ts +12 -3
- package/src/core/components/ui/modal/modal.ts +1 -1
- package/src/core/decorators/Subscriber.ts +1 -0
- package/src/core/decorators/api.post.spec.ts +293 -0
- package/src/core/decorators/api.spec.ts +6 -6
- package/src/core/decorators/api.ts +641 -12
- 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/decorators/subscriber/bind.ts +13 -5
- package/src/core/decorators/subscriber/dynamicPath.spec.ts +53 -0
- package/src/core/decorators/subscriber/dynamicPath.ts +23 -1
- package/src/core/decorators/subscriber/handle.ts +3 -1
- package/src/core/decorators/subscriber/onAssign.ts +10 -2
- package/src/core/decorators/subscriber/publish.ts +12 -2
- 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 +123 -48
- package/src/core/utils/api.ts +82 -13
- package/src/core/utils/dpOptions.spec.ts +56 -0
- package/src/core/utils/endpoint.ts +3 -3
- package/src/css.d.ts +19 -0
- package/src/decorators.ts +17 -1
- package/src/directives.ts +3 -2
- package/src/docs/_core-concept/dataFlow.md +9 -3
- package/src/docs/_decorators/ancestor-attribute.md +56 -8
- package/src/docs/_decorators/bind.md +2 -2
- package/src/docs/_decorators/get.md +13 -4
- package/src/docs/_decorators/handle.md +5 -1
- package/src/docs/_decorators/on-assign.md +2 -0
- package/src/docs/_decorators/patch.md +45 -0
- package/src/docs/_decorators/post.md +93 -0
- package/src/docs/_decorators/publish.md +1 -1
- package/src/docs/_decorators/put.md +43 -0
- package/src/docs/_decorators/subscribe.md +4 -1
- package/src/docs/_directives/sub.md +1 -1
- package/src/docs/_getting-started/my-first-component.md +1 -1
- package/src/docs/_misc/api-configuration.md +3 -1
- package/src/docs/_misc/dataProviderKey.md +2 -2
- package/src/docs/_misc/dynamic-path.md +71 -0
- package/src/docs/_misc/endpoint.md +5 -3
- package/src/docs/components/docs-demo-sources.ts +115 -4
- package/src/docs/components/docs-lit-demo-raw.ts +2 -26
- package/src/docs/components/docs-lit-demo.ts +9 -42
- package/src/docs/components/docs-source-excerpt.ts +53 -0
- package/src/docs/components/docs-source-link.ts +24 -8
- package/src/docs/components/docs-source-raw.ts +34 -0
- package/src/docs/example/decorators-demo-geo.ts +2 -2
- package/src/docs/example/decorators-demo-post.ts +249 -0
- package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +5 -5
- package/src/docs/example/decorators-demo.ts +165 -8
- package/src/docs/example/docs-api-config-demos.ts +5 -5
- package/src/docs/mock-api/router.ts +20 -0
- package/src/docs/navigation/navigation.ts +16 -0
- package/src/docs/search/docs-search.json +602 -17
- package/src/tsconfig.declarations.json +22 -0
- package/src/tsconfig.emit.json +23 -0
- package/src/tsconfig.json +3 -261
- package/src/tsconfig.tsbuildinfo +1 -1
- package/vite.config.mts +1 -1
- package/docs/assets/index-CwtPzTFq.js +0 -7508
|
@@ -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
|
}
|
|
@@ -28,6 +28,24 @@ type PublisherProxyOptions = {
|
|
|
28
28
|
invalidateOnPageShow?: boolean;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
/** Options de `dp()` / `dataProvider()` — même surface que `PublisherManager.get()`. */
|
|
32
|
+
export type DpOptions = PublisherProxyOptions;
|
|
33
|
+
|
|
34
|
+
const DP_OPTION_KEYS = new Set<keyof DpOptions>([
|
|
35
|
+
"localStorageMode",
|
|
36
|
+
"expirationDelayMs",
|
|
37
|
+
"invalidateOnPageShow",
|
|
38
|
+
]);
|
|
39
|
+
|
|
40
|
+
function isDpOptions(value: unknown): value is DpOptions {
|
|
41
|
+
if (value == null || typeof value !== "object" || Array.isArray(value)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return Object.keys(value).some((key) =>
|
|
45
|
+
DP_OPTION_KEYS.has(key as keyof DpOptions),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
31
49
|
function isLeaf(value: any) {
|
|
32
50
|
return Object.prototype.hasOwnProperty.call(value, "__value");
|
|
33
51
|
}
|
|
@@ -463,8 +481,7 @@ export class PublisherProxy<T = any> {
|
|
|
463
481
|
*/
|
|
464
482
|
_cachedGet_?: T;
|
|
465
483
|
get(): T {
|
|
466
|
-
|
|
467
|
-
PublisherManager.modifiedCollectore[0].add(this);
|
|
484
|
+
trackModifiedPublisher(this);
|
|
468
485
|
if (this._cachedGet_ !== undefined) return this._cachedGet_;
|
|
469
486
|
if (Object.prototype.hasOwnProperty.call(this._value_, "__value")) {
|
|
470
487
|
const v = (this._value_ as any).__value;
|
|
@@ -501,6 +518,20 @@ export class PublisherProxy<T = any> {
|
|
|
501
518
|
*
|
|
502
519
|
*/
|
|
503
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
|
+
|
|
504
535
|
export class PublisherManager {
|
|
505
536
|
static buildDate = __BUILD_DATE__;
|
|
506
537
|
static changed = false;
|
|
@@ -523,9 +554,19 @@ export class PublisherManager {
|
|
|
523
554
|
if (PublisherManager.instance != null) throw "Singleton / use getInstance";
|
|
524
555
|
PublisherManager.instance = this;
|
|
525
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
|
+
});
|
|
526
567
|
}
|
|
527
568
|
|
|
528
|
-
invalidateAll() {
|
|
569
|
+
private invalidateAll() {
|
|
529
570
|
this.publishers.forEach((publisher) => {
|
|
530
571
|
if (!publisher._invalidate_on_page_show_) {
|
|
531
572
|
return;
|
|
@@ -599,16 +640,6 @@ export class PublisherManager {
|
|
|
599
640
|
return PublisherManager.instance;
|
|
600
641
|
}
|
|
601
642
|
|
|
602
|
-
static registerInstance(id: string, instance: PublisherManager) {
|
|
603
|
-
if (PublisherManager.instances.has(id)) {
|
|
604
|
-
console.warn(
|
|
605
|
-
"PublisherManager instance already registered with id: ",
|
|
606
|
-
id,
|
|
607
|
-
);
|
|
608
|
-
}
|
|
609
|
-
PublisherManager.instances.set(id, instance);
|
|
610
|
-
}
|
|
611
|
-
|
|
612
643
|
/**
|
|
613
644
|
* shortcut static pour obtenir un publisher vias sont id/adresse sans taper getInstance.
|
|
614
645
|
* Si le publisher n'existe pas, il est créé.
|
|
@@ -620,22 +651,6 @@ export class PublisherManager {
|
|
|
620
651
|
return PublisherManager.getInstance().get(id, options);
|
|
621
652
|
}
|
|
622
653
|
|
|
623
|
-
public static modifiedCollectore: Set<any>[] = [];
|
|
624
|
-
public static collectModifiedPublisher() {
|
|
625
|
-
PublisherManager.modifiedCollectore.unshift(new Set<any>());
|
|
626
|
-
}
|
|
627
|
-
public static getModifiedPublishers() {
|
|
628
|
-
return PublisherManager.modifiedCollectore.shift() as Set<any>;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
/**
|
|
632
|
-
* 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
|
|
633
|
-
*/
|
|
634
|
-
static delete(id: string | null) {
|
|
635
|
-
if (!id) return false;
|
|
636
|
-
return PublisherManager.getInstance().delete(id);
|
|
637
|
-
}
|
|
638
|
-
|
|
639
654
|
/**
|
|
640
655
|
* Obtenir un publisher vias sont id/adresse
|
|
641
656
|
* Si le publisher n'existe pas, il est créé.
|
|
@@ -1041,17 +1056,18 @@ try {
|
|
|
1041
1056
|
|
|
1042
1057
|
export const getObservables = <T = any>(
|
|
1043
1058
|
observable: string,
|
|
1059
|
+
options?: DpOptions,
|
|
1044
1060
|
): Set<DataProvider<T>> => {
|
|
1045
1061
|
if (typeof observable === "function") {
|
|
1046
1062
|
const func = observable as () => any;
|
|
1047
|
-
|
|
1063
|
+
collectModifiedPublisher();
|
|
1048
1064
|
func();
|
|
1049
|
-
return
|
|
1065
|
+
return getModifiedPublishers() as Set<DataProvider<T>>;
|
|
1050
1066
|
}
|
|
1051
1067
|
if (typeof observable === "string") {
|
|
1052
1068
|
const split = observable.split(".");
|
|
1053
1069
|
const dataProvider: string = split.shift() || "";
|
|
1054
|
-
let publisher = PublisherManager.get(dataProvider);
|
|
1070
|
+
let publisher = PublisherManager.get(dataProvider, options);
|
|
1055
1071
|
publisher = Objects.traverse(publisher, split);
|
|
1056
1072
|
const set = new Set<DataProvider<T>>();
|
|
1057
1073
|
set.add(publisher as DataProvider<T>);
|
|
@@ -1068,9 +1084,14 @@ export function get<T>(id: string | DataProviderKey<T>): T {
|
|
|
1068
1084
|
return getObservables<T>(path).values().next().value?.get() as T;
|
|
1069
1085
|
}
|
|
1070
1086
|
|
|
1071
|
-
function deepee<T>(
|
|
1087
|
+
function deepee<T>(
|
|
1088
|
+
id: string | DataProviderKey<T>,
|
|
1089
|
+
_defaultValue?: T,
|
|
1090
|
+
options?: DpOptions,
|
|
1091
|
+
) {
|
|
1072
1092
|
const path = resolveStaticPublisherPath(id);
|
|
1073
|
-
const value = getObservables<T>(path).values().next()
|
|
1093
|
+
const value = getObservables<T>(path, options).values().next()
|
|
1094
|
+
.value as DataProvider<T>;
|
|
1074
1095
|
// if (defaultValue !== undefined && value) {
|
|
1075
1096
|
// const innerValue = value.get();
|
|
1076
1097
|
// if (Objects.isEmpty(innerValue as Record<string, any>)) {
|
|
@@ -1081,19 +1102,79 @@ function deepee<T>(id: string | DataProviderKey<T>, _defaultValue?: T) {
|
|
|
1081
1102
|
return value;
|
|
1082
1103
|
}
|
|
1083
1104
|
|
|
1084
|
-
|
|
1085
|
-
|
|
1105
|
+
type MirrorDpSource = DataProvider<any> | string | DataProviderKey<any>;
|
|
1106
|
+
|
|
1107
|
+
function isDataProvider(value: unknown): value is DataProvider<any> {
|
|
1108
|
+
return (
|
|
1109
|
+
value != null &&
|
|
1110
|
+
typeof value === "object" &&
|
|
1111
|
+
typeof (value as DataProvider<any>).get === "function" &&
|
|
1112
|
+
typeof (value as DataProvider<any>).set === "function" &&
|
|
1113
|
+
typeof (value as DataProvider<any>).onAssign === "function"
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
function resolvePublisherRef(
|
|
1118
|
+
ref: MirrorDpSource,
|
|
1119
|
+
options?: DpOptions,
|
|
1120
|
+
): DataProvider<any> {
|
|
1121
|
+
if (isDataProvider(ref)) return ref;
|
|
1122
|
+
return deepee(ref, undefined, options);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
export function dataProvider<T>(
|
|
1126
|
+
id: DataProviderKey<T>,
|
|
1127
|
+
options: DpOptions,
|
|
1128
|
+
): DataProvider<T>;
|
|
1129
|
+
export function dataProvider<T = any>(id: string, options: DpOptions): DataProvider<T>;
|
|
1130
|
+
export function dataProvider<T>(id: DataProviderKey<T>): DataProvider<T>;
|
|
1131
|
+
export function dataProvider<T = any>(id: string): DataProvider<T>;
|
|
1132
|
+
export function dataProvider<T>(id: DataProviderKey<T>, defaultValue: T): DataProvider<T>;
|
|
1133
|
+
export function dataProvider<T = any>(id: string, defaultValue: T): DataProvider<T>;
|
|
1086
1134
|
export function dataProvider<T>(
|
|
1087
1135
|
id: string | DataProviderKey<T>,
|
|
1088
|
-
|
|
1136
|
+
second?: T | DpOptions,
|
|
1089
1137
|
): DataProvider<T> {
|
|
1090
|
-
return deepee(id,
|
|
1138
|
+
if (isDpOptions(second)) return deepee(id, undefined, second);
|
|
1139
|
+
return deepee(id, second as T | undefined);
|
|
1091
1140
|
}
|
|
1092
1141
|
|
|
1093
|
-
export function dp<T>(id: DataProviderKey<T>,
|
|
1094
|
-
export function dp<T = any>(id: string,
|
|
1095
|
-
export function dp<T>(id:
|
|
1096
|
-
|
|
1142
|
+
export function dp<T>(id: DataProviderKey<T>, options: DpOptions): DataProvider<T>;
|
|
1143
|
+
export function dp<T = any>(id: string, options: DpOptions): DataProvider<T>;
|
|
1144
|
+
export function dp<T>(id: DataProviderKey<T>): DataProvider<T>;
|
|
1145
|
+
export function dp<T = any>(id: string): DataProvider<T>;
|
|
1146
|
+
export function dp<T>(id: DataProviderKey<T>, defaultValue: T): DataProvider<T>;
|
|
1147
|
+
export function dp<T = any>(id: string, defaultValue: T): DataProvider<T>;
|
|
1148
|
+
export function dp<T>(
|
|
1149
|
+
id: string | DataProviderKey<T>,
|
|
1150
|
+
second?: T | DpOptions,
|
|
1151
|
+
): DataProvider<T> {
|
|
1152
|
+
if (isDpOptions(second)) return deepee(id, undefined, second);
|
|
1153
|
+
return deepee(id, second as T | undefined);
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
/**
|
|
1157
|
+
* Alias sémantique pour `PublisherManager.set` : enregistre `aliasKey` sur la même
|
|
1158
|
+
* instance publisher que `source`. Utile pour exposer une clé legacy (`scan`) tout en
|
|
1159
|
+
* stockant l'état sous une racine (`app.scan`) — `dp("scan")` et `appState.scan` partagent
|
|
1160
|
+
* alors la même instance, sans copie à chaque assignation.
|
|
1161
|
+
*/
|
|
1162
|
+
export function mirrorDp<T>(
|
|
1163
|
+
aliasKey: string | DataProviderKey<any>,
|
|
1164
|
+
source: DataProvider<T>,
|
|
1165
|
+
): void;
|
|
1166
|
+
export function mirrorDp(
|
|
1167
|
+
aliasKey: string | DataProviderKey<any>,
|
|
1168
|
+
source: string | DataProviderKey<any>,
|
|
1169
|
+
): void;
|
|
1170
|
+
export function mirrorDp(
|
|
1171
|
+
aliasKey: string | DataProviderKey<any>,
|
|
1172
|
+
source: DataProvider<any> | string | DataProviderKey<any>,
|
|
1173
|
+
): void {
|
|
1174
|
+
PublisherManager.getInstance().set(
|
|
1175
|
+
resolveStaticPublisherPath(aliasKey),
|
|
1176
|
+
resolvePublisherRef(source),
|
|
1177
|
+
);
|
|
1097
1178
|
}
|
|
1098
1179
|
|
|
1099
1180
|
export function set<T>(id: DataProviderKey<T>, value: T): void;
|
|
@@ -1103,9 +1184,3 @@ export function set<T>(id: string | DataProviderKey<T>, value: T): void {
|
|
|
1103
1184
|
getObservables(path).values().next().value?.set(value);
|
|
1104
1185
|
}
|
|
1105
1186
|
|
|
1106
|
-
/**
|
|
1107
|
-
* next back handling data invalidation
|
|
1108
|
-
*/
|
|
1109
|
-
window.addEventListener("pageshow", (e) => {
|
|
1110
|
-
if (e.persisted) PublisherManager.getInstance().invalidateAll();
|
|
1111
|
-
});
|
package/src/core/utils/api.ts
CHANGED
|
@@ -37,8 +37,8 @@ export type APIResponse = {
|
|
|
37
37
|
processed: ResultTypeInterface;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
/** Valeur assignée par `@get
|
|
41
|
-
export type
|
|
40
|
+
/** Valeur assignée par `@get`, `@post`, `@put`, `@patch`. */
|
|
41
|
+
export type ApiResult<T> = {
|
|
42
42
|
request: Request;
|
|
43
43
|
/** Absent / `undefined` pour les chemins `dataProvider(...)` (pas d’appel réseau). */
|
|
44
44
|
response?: Response;
|
|
@@ -46,8 +46,11 @@ export type ApiGetResult<T> = {
|
|
|
46
46
|
result: T;
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
+
/** @deprecated Utiliser `ApiResult`. */
|
|
50
|
+
export type ApiGetResult<T> = ApiResult<T>;
|
|
51
|
+
|
|
49
52
|
/** Extrait le corps typé depuis le résultat traité par `handleResult`. */
|
|
50
|
-
|
|
53
|
+
function extractTypedApiResult<T>(
|
|
51
54
|
processed: ResultTypeInterface | null | undefined,
|
|
52
55
|
): T {
|
|
53
56
|
if (processed == null || typeof processed !== "object") {
|
|
@@ -64,7 +67,7 @@ class API {
|
|
|
64
67
|
/**
|
|
65
68
|
* Ce tableau static permet de ne pas appeler plusieurs fois le même service lors d'appel concurrents en GET.
|
|
66
69
|
*/
|
|
67
|
-
static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
|
|
70
|
+
private static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
|
|
68
71
|
/**
|
|
69
72
|
* L'url de base du service sans endpoint
|
|
70
73
|
*/
|
|
@@ -120,14 +123,14 @@ class API {
|
|
|
120
123
|
/**
|
|
121
124
|
* Tableau static des tokens stokés en memoire vive (comportement à revoir à l'occasion)
|
|
122
125
|
*/
|
|
123
|
-
static tokens = new Map<string | null, string | null | undefined>();
|
|
126
|
+
private static tokens = new Map<string | null, string | null | undefined>();
|
|
124
127
|
|
|
125
128
|
/**
|
|
126
129
|
* Tableau stockant l'ensemble des tokens invalides
|
|
127
130
|
*/
|
|
128
|
-
static invalidTokens: (string | null | undefined)[] = [];
|
|
131
|
+
private static invalidTokens: (string | null | undefined)[] = [];
|
|
129
132
|
|
|
130
|
-
handleInvalidToken(token: string | null | undefined) {
|
|
133
|
+
private handleInvalidToken(token: string | null | undefined) {
|
|
131
134
|
if (!token) return;
|
|
132
135
|
|
|
133
136
|
if (API.invalidTokens.includes(token)) return;
|
|
@@ -139,11 +142,11 @@ class API {
|
|
|
139
142
|
/**
|
|
140
143
|
* Tableau static des tentatives échouées de récupération auto du token
|
|
141
144
|
*/
|
|
142
|
-
static failledTokenUpdates = new Map<string | null, true>();
|
|
145
|
+
private static failledTokenUpdates = new Map<string | null, true>();
|
|
143
146
|
/**
|
|
144
147
|
* Tableau static des flags pour savoir si le premier appel a été fait pour chaque serviceURL
|
|
145
148
|
*/
|
|
146
|
-
static firstCallDoneFlags = new Map<string | null, CallState>();
|
|
149
|
+
private static firstCallDoneFlags = new Map<string | null, CallState>();
|
|
147
150
|
|
|
148
151
|
/**
|
|
149
152
|
* Le endPoint pour obtenir le bearer token qui sera concaténé à l'url du service
|
|
@@ -171,7 +174,7 @@ class API {
|
|
|
171
174
|
this.cache = config.cache || "default";
|
|
172
175
|
this.keepAlive = config.keepAlive || false;
|
|
173
176
|
}
|
|
174
|
-
async handleResult(
|
|
177
|
+
private async handleResult(
|
|
175
178
|
fetchResult: Response,
|
|
176
179
|
lastCall: APICall,
|
|
177
180
|
): Promise<ResultTypeInterface> {
|
|
@@ -228,7 +231,7 @@ class API {
|
|
|
228
231
|
/**
|
|
229
232
|
* Basic auth
|
|
230
233
|
*/
|
|
231
|
-
async auth() {
|
|
234
|
+
private async auth() {
|
|
232
235
|
if (this.token) return;
|
|
233
236
|
if (API.tokens.has(this.serviceURL)) {
|
|
234
237
|
this.token = API.tokens.get(this.serviceURL);
|
|
@@ -359,7 +362,7 @@ class API {
|
|
|
359
362
|
/**
|
|
360
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
|
|
361
364
|
*/
|
|
362
|
-
firstCallDone() {
|
|
365
|
+
private firstCallDone() {
|
|
363
366
|
return new Promise((resolve) => {
|
|
364
367
|
if (!API.firstCallDoneFlags.has(this.serviceURL)) {
|
|
365
368
|
API.firstCallDoneFlags.set(this.serviceURL, "loading");
|
|
@@ -434,7 +437,7 @@ class API {
|
|
|
434
437
|
async getDetailed<T>(
|
|
435
438
|
path: string,
|
|
436
439
|
additionalHeaders?: HeadersInit,
|
|
437
|
-
): Promise<
|
|
440
|
+
): Promise<ApiResult<T> | undefined> {
|
|
438
441
|
const isDataProvider = /dataProvider\((.*?)\)(.*?)$/.test(path);
|
|
439
442
|
|
|
440
443
|
const processed = await this.get<T>(path, additionalHeaders);
|
|
@@ -468,6 +471,72 @@ class API {
|
|
|
468
471
|
};
|
|
469
472
|
}
|
|
470
473
|
|
|
474
|
+
/**
|
|
475
|
+
* S’appuie sur `post()` puis reformate la réponse : `Request` avec body JSON,
|
|
476
|
+
* `Response` via `lastResult`, `result` typé `T`.
|
|
477
|
+
*/
|
|
478
|
+
async sendDetailed<T, B>(
|
|
479
|
+
path: string,
|
|
480
|
+
body: B,
|
|
481
|
+
method: "POST" | "PUT" | "PATCH",
|
|
482
|
+
additionalHeaders?: HeadersInit,
|
|
483
|
+
): Promise<ApiResult<T> | undefined> {
|
|
484
|
+
const processed = await this.send<T, B>(
|
|
485
|
+
path,
|
|
486
|
+
body,
|
|
487
|
+
method,
|
|
488
|
+
additionalHeaders,
|
|
489
|
+
);
|
|
490
|
+
if (processed == null) {
|
|
491
|
+
return undefined;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
const result = extractTypedApiResult<T>(processed as ResultTypeInterface);
|
|
495
|
+
const url = this.computeURL(path);
|
|
496
|
+
const headers = await this.createHeaders({
|
|
497
|
+
Accept: "application/json",
|
|
498
|
+
"Content-Type": "application/json",
|
|
499
|
+
...(additionalHeaders as Record<string, string> | undefined),
|
|
500
|
+
});
|
|
501
|
+
const request = new Request(url, {
|
|
502
|
+
method,
|
|
503
|
+
headers: new Headers(headers as HeadersInit),
|
|
504
|
+
credentials: this.credentials,
|
|
505
|
+
body: JSON.stringify(body),
|
|
506
|
+
keepalive: this.keepAlive,
|
|
507
|
+
});
|
|
508
|
+
|
|
509
|
+
return {
|
|
510
|
+
request,
|
|
511
|
+
response: this.lastResult,
|
|
512
|
+
result,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
async postDetailed<T, B>(
|
|
517
|
+
path: string,
|
|
518
|
+
body: B,
|
|
519
|
+
additionalHeaders?: HeadersInit,
|
|
520
|
+
): Promise<ApiResult<T> | undefined> {
|
|
521
|
+
return this.sendDetailed<T, B>(path, body, "POST", additionalHeaders);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
async putDetailed<T, B>(
|
|
525
|
+
path: string,
|
|
526
|
+
body: B,
|
|
527
|
+
additionalHeaders?: HeadersInit,
|
|
528
|
+
): Promise<ApiResult<T> | undefined> {
|
|
529
|
+
return this.sendDetailed<T, B>(path, body, "PUT", additionalHeaders);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
async patchDetailed<T, B>(
|
|
533
|
+
path: string,
|
|
534
|
+
body: B,
|
|
535
|
+
additionalHeaders?: HeadersInit,
|
|
536
|
+
): Promise<ApiResult<T> | undefined> {
|
|
537
|
+
return this.sendDetailed<T, B>(path, body, "PATCH", additionalHeaders);
|
|
538
|
+
}
|
|
539
|
+
|
|
471
540
|
/**
|
|
472
541
|
* Création du header, avec authentification si besoin
|
|
473
542
|
* ajout du language via le header accept-language qui contient le langue du navigateur
|